[tryton-debian-vcs] tryton-modules-stock-supply branch debian created. 11cf2037eb97a8cafc393e43cb1d1cdbbd199cb3
Mathias Behrle
tryton-debian-vcs at alioth.debian.org
Wed Nov 27 17:12:06 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-supply.git;a=commitdiff;h=11cf2037eb97a8cafc393e43cb1d1cdbbd199cb3
commit 11cf2037eb97a8cafc393e43cb1d1cdbbd199cb3
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Mon Nov 25 20:30:40 2013 +0100
Releasing debian version 3.0.0-1.
diff --git a/debian/changelog b/debian/changelog
index 191dcbb..9b86bca 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,13 @@
+tryton-modules-stock-supply (3.0.0-1) unstable; urgency=low
+
+ * Merging upstream version 3.0.0.
+ * Updating copyright.
+ * Updating to standards version 3.9.5, no changes needed.
+ * Changing to buildsystem pybuild.
+ * Adding python-sql to Depends.
+
+ -- Mathias Behrle <mathiasb at m9s.biz> Mon, 25 Nov 2013 17:55:40 +0100
+
tryton-modules-stock-supply (2.8.1-2) unstable; urgency=low
* Adapting the rules file to work also with git-buildpackage.
commit 06455af0809327dc5cfb7cb1ab4aed02e9de828d
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Mon Nov 25 17:49:47 2013 +0100
Adding python-sql to Depends.
diff --git a/debian/control b/debian/control
index f7f2db7..f3acd4c 100644
--- a/debian/control
+++ b/debian/control
@@ -19,7 +19,8 @@ Depends:
tryton-modules-party (>= ${version:major}),
tryton-modules-product (>= ${version:major}),
tryton-modules-purchase (>= ${version:major}),
- tryton-modules-stock (>= ${version:major}), python-pkg-resources
+ tryton-modules-stock (>= ${version:major}),
+ python-sql, python-pkg-resources
Description: Tryton Application Platform (Stock Supply 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
commit 38b46b31f0f96ef78a2fea3b777e1f0a401a07cc
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 e6de184..f7f2db7 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-supply.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 66970bd7aece960d828e5be0e62f22bc6fa236b5
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 fab15a1..e6de184 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-supply.git
Vcs-Git: git://debian.tryton.org/packages/tryton-modules-stock-supply.git
commit 2c23826b92130ecd5a5ade6c0253c4fec6aa28f3
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Sun Nov 24 17:38:44 2013 +0100
Updating copyright.
diff --git a/debian/copyright b/debian/copyright
index 115c003..4f12b80 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -1,7 +1,8 @@
Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Files: *
-Copyright: 2008-2013 Cédric Krier
+Copyright: 2013 NaN-tic
+ 2008-2013 Cédric Krier
2008-2013 Bertrand Chenal
2008-2013 B2CK SPRL
License: GPL-3+
commit 1c88c0e765ac4fa3e5a3047b2ab3949993ae4225
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Sun Nov 24 17:28:31 2013 +0100
Merging upstream version 3.0.0.
diff --git a/CHANGELOG b/CHANGELOG
index 85acf08..a09c106 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,5 +1,7 @@
-Version 2.8.1 - 2013-06-09
+Version 3.0.0 - 2013-10-21
* Bug fixes (see mercurial logs for details)
+* Add wizard to create internal shipments
+* Add warning for late supplier moves when creating purchase request
Version 2.8.0 - 2013-04-22
* Bug fixes (see mercurial logs for details)
diff --git a/COPYRIGHT b/COPYRIGHT
index 9192c97..14a0f29 100644
--- a/COPYRIGHT
+++ b/COPYRIGHT
@@ -1,3 +1,4 @@
+Copyright (C) 2013 NaN-tic.
Copyright (C) 2008-2013 Cédric Krier.
Copyright (C) 2008-2013 Bertrand Chenal.
Copyright (C) 2008-2013 B2CK SPRL.
diff --git a/INSTALL b/INSTALL
index dea2748..cf3c35d 100644
--- a/INSTALL
+++ b/INSTALL
@@ -5,6 +5,7 @@ Prerequisites
-------------
* Python 2.6 or later (http://www.python.org/)
+ * python-sql (http://code.google.com/p/python-sql/)
* trytond (http://www.tryton.org/)
* trytond_party (http://www.tryton.org/)
* trytond_product (http://www.tryton.org/)
diff --git a/PKG-INFO b/PKG-INFO
index 576a69d..b98dbac 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,12 +1,12 @@
Metadata-Version: 1.1
Name: trytond_stock_supply
-Version: 2.8.1
+Version: 3.0.0
Summary: Tryton module for stock supply
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_supply
====================
@@ -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 bb58ef5..89e6e06 100644
--- a/__init__.py
+++ b/__init__.py
@@ -17,8 +17,10 @@ def register():
CreatePurchaseAskTerm,
CreatePurchaseAskParty,
ShipmentInternal,
+ CreateShipmentInternalStart,
module='stock_supply', type_='model')
Pool.register(
CreatePurchaseRequest,
CreatePurchase,
+ CreateShipmentInternal,
module='stock_supply', type_='wizard')
diff --git a/locale/bg_BG.po b/locale/bg_BG.po
index 6609784..1c684b2 100644
--- a/locale/bg_BG.po
+++ b/locale/bg_BG.po
@@ -2,6 +2,10 @@
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
+msgctxt "error:purchase.request.create:"
+msgid "There are some late supplier moves, are you sure to ignore them?"
+msgstr ""
+
msgctxt "error:purchase.request.create_purchase:"
msgid "Purchase price is missing for product \"%s\"."
msgstr ""
@@ -18,6 +22,10 @@ msgctxt "error:purchase.request:"
msgid "The requested quantity must be greater than 0"
msgstr "Поръчаното количество трябва да е по-голямо от 0"
+msgctxt "error:purchase.request:"
+msgid "You can not delete purchased request."
+msgstr ""
+
msgctxt "error:stock.order_point:"
msgid "Maximal quantity must be bigger than Minimal quantity"
msgstr ""
@@ -232,6 +240,11 @@ msgctxt "field:stock.order_point,write_uid:"
msgid "Write User"
msgstr "Променено от"
+#, fuzzy
+msgctxt "field:stock.shipment.internal.create.start,id:"
+msgid "ID"
+msgstr "ID"
+
msgctxt "model:ir.action,name:act_order_point_form"
msgid "Order Points"
msgstr "Пренареждания"
@@ -248,6 +261,10 @@ msgctxt "model:ir.action,name:act_purchase_request_form"
msgid "Purchase Requests"
msgstr "Заявки за покупка"
+msgctxt "model:ir.action,name:act_shipment_internal_create"
+msgid "Create Internal Shipments"
+msgstr ""
+
msgctxt "model:ir.action,name:wizard_create_purchase"
msgid "Create Purchase"
msgstr "Създаване на покупка"
@@ -283,6 +300,10 @@ msgctxt "model:ir.ui.menu,name:menu_purchase_request_form"
msgid "Purchase Requests"
msgstr "Заявки за покупки"
+msgctxt "model:ir.ui.menu,name:menu_shipment_internal_create"
+msgid "Create Internal Shipments"
+msgstr ""
+
msgctxt "model:purchase.request,name:"
msgid "Purchase Request"
msgstr "Заявка за покупка"
@@ -315,6 +336,10 @@ msgctxt "model:stock.order_point,name:"
msgid "Order Point"
msgstr "Пренареждане"
+msgctxt "model:stock.shipment.internal.create.start,name:"
+msgid "Create Shipment Internal"
+msgstr ""
+
msgctxt "selection:purchase.request,state:"
msgid "Cancel"
msgstr "Отказ"
@@ -387,6 +412,14 @@ msgctxt "view:stock.order_point:"
msgid "Product Info"
msgstr "Информация за продукт"
+msgctxt "view:stock.shipment.internal.create.start:"
+msgid "Create Internal Shipments"
+msgstr ""
+
+msgctxt "view:stock.shipment.internal.create.start:"
+msgid "Create Internal Shipments?"
+msgstr ""
+
msgctxt "wizard_button:purchase.request.create,start,create_:"
msgid "Create"
msgstr "Създаване"
@@ -410,3 +443,13 @@ msgstr "Отказ"
msgctxt "wizard_button:purchase.request.create_purchase,ask_term,start:"
msgid "Continue"
msgstr "Продължаване"
+
+#, fuzzy
+msgctxt "wizard_button:stock.shipment.internal.create,start,create_:"
+msgid "Create"
+msgstr "Създаване"
+
+#, fuzzy
+msgctxt "wizard_button:stock.shipment.internal.create,start,end:"
+msgid "Cancel"
+msgstr "Отказване"
diff --git a/locale/ca_ES.po b/locale/ca_ES.po
index ec1bd45..34f61d1 100644
--- a/locale/ca_ES.po
+++ b/locale/ca_ES.po
@@ -2,6 +2,11 @@
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
+msgctxt "error:purchase.request.create:"
+msgid "There are some late supplier moves, are you sure to ignore them?"
+msgstr ""
+"Hi ha moviments de proveïdor pendents. Esteu segur de voler ignorar-los?"
+
msgctxt "error:purchase.request.create_purchase:"
msgid "Purchase price is missing for product \"%s\"."
msgstr "No es troba el preu de compra del producte \"%s\"."
@@ -18,6 +23,10 @@ msgctxt "error:purchase.request:"
msgid "The requested quantity must be greater than 0"
msgstr "La quantitat sol·licitada ha de ser més gran que 0."
+msgctxt "error:purchase.request:"
+msgid "You can not delete purchased request."
+msgstr "No podeu eliminar una sol·licitud comprada."
+
msgctxt "error:stock.order_point:"
msgid "Maximal quantity must be bigger than Minimal quantity"
msgstr "La quantitat màxima ha de ser major que la mínima"
@@ -232,6 +241,10 @@ msgctxt "field:stock.order_point,write_uid:"
msgid "Write User"
msgstr "Usuari modificació"
+msgctxt "field:stock.shipment.internal.create.start,id:"
+msgid "ID"
+msgstr "ID"
+
msgctxt "model:ir.action,name:act_order_point_form"
msgid "Order Points"
msgstr "Regles d'estoc mínim"
@@ -248,6 +261,10 @@ msgctxt "model:ir.action,name:act_purchase_request_form"
msgid "Purchase Requests"
msgstr "Sol·licituds de compra"
+msgctxt "model:ir.action,name:act_shipment_internal_create"
+msgid "Create Internal Shipments"
+msgstr "Crea albarans interns"
+
msgctxt "model:ir.action,name:wizard_create_purchase"
msgid "Create Purchase"
msgstr "Crear una compra"
@@ -282,6 +299,10 @@ msgctxt "model:ir.ui.menu,name:menu_purchase_request_form"
msgid "Purchase Requests"
msgstr "Sol·licituds de compra"
+msgctxt "model:ir.ui.menu,name:menu_shipment_internal_create"
+msgid "Create Internal Shipments"
+msgstr "Crea albarans interns"
+
msgctxt "model:purchase.request,name:"
msgid "Purchase Request"
msgstr "Sol·licitud de compra"
@@ -314,13 +335,17 @@ msgctxt "model:stock.order_point,name:"
msgid "Order Point"
msgstr "Regla d'estoc mínim"
+msgctxt "model:stock.shipment.internal.create.start,name:"
+msgid "Create Shipment Internal"
+msgstr "Crea albarans interns"
+
msgctxt "selection:purchase.request,origin:"
msgid "Order Point"
msgstr "Regla d'estoc mínim"
msgctxt "selection:purchase.request,state:"
msgid "Cancel"
-msgstr "Cancel·la"
+msgstr "Cancel·lat"
msgctxt "selection:purchase.request,state:"
msgid "Done"
@@ -390,6 +415,14 @@ msgctxt "view:stock.order_point:"
msgid "Product Info"
msgstr "Informació del producte"
+msgctxt "view:stock.shipment.internal.create.start:"
+msgid "Create Internal Shipments"
+msgstr "Crea albarans interns"
+
+msgctxt "view:stock.shipment.internal.create.start:"
+msgid "Create Internal Shipments?"
+msgstr "Crear albarans interns?"
+
msgctxt "wizard_button:purchase.request.create,start,create_:"
msgid "Create"
msgstr "Crea"
@@ -413,3 +446,11 @@ msgstr "Cancel·la"
msgctxt "wizard_button:purchase.request.create_purchase,ask_term,start:"
msgid "Continue"
msgstr "Continuar"
+
+msgctxt "wizard_button:stock.shipment.internal.create,start,create_:"
+msgid "Create"
+msgstr "Crea"
+
+msgctxt "wizard_button:stock.shipment.internal.create,start,end:"
+msgid "Cancel"
+msgstr "Cancel·la"
diff --git a/locale/cs_CZ.po b/locale/cs_CZ.po
index 661f1ba..03af768 100644
--- a/locale/cs_CZ.po
+++ b/locale/cs_CZ.po
@@ -2,6 +2,10 @@
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
+msgctxt "error:purchase.request.create:"
+msgid "There are some late supplier moves, are you sure to ignore them?"
+msgstr ""
+
msgctxt "error:purchase.request.create_purchase:"
msgid "Purchase price is missing for product \"%s\"."
msgstr ""
@@ -18,6 +22,10 @@ msgctxt "error:purchase.request:"
msgid "The requested quantity must be greater than 0"
msgstr ""
+msgctxt "error:purchase.request:"
+msgid "You can not delete purchased request."
+msgstr ""
+
msgctxt "error:stock.order_point:"
msgid "Maximal quantity must be bigger than Minimal quantity"
msgstr ""
@@ -228,6 +236,10 @@ msgctxt "field:stock.order_point,write_uid:"
msgid "Write User"
msgstr ""
+msgctxt "field:stock.shipment.internal.create.start,id:"
+msgid "ID"
+msgstr ""
+
msgctxt "model:ir.action,name:act_order_point_form"
msgid "Order Points"
msgstr ""
@@ -244,6 +256,10 @@ msgctxt "model:ir.action,name:act_purchase_request_form"
msgid "Purchase Requests"
msgstr ""
+msgctxt "model:ir.action,name:act_shipment_internal_create"
+msgid "Create Internal Shipments"
+msgstr ""
+
msgctxt "model:ir.action,name:wizard_create_purchase"
msgid "Create Purchase"
msgstr ""
@@ -278,6 +294,10 @@ msgctxt "model:ir.ui.menu,name:menu_purchase_request_form"
msgid "Purchase Requests"
msgstr ""
+msgctxt "model:ir.ui.menu,name:menu_shipment_internal_create"
+msgid "Create Internal Shipments"
+msgstr ""
+
msgctxt "model:purchase.request,name:"
msgid "Purchase Request"
msgstr ""
@@ -310,6 +330,10 @@ msgctxt "model:stock.order_point,name:"
msgid "Order Point"
msgstr ""
+msgctxt "model:stock.shipment.internal.create.start,name:"
+msgid "Create Shipment Internal"
+msgstr ""
+
msgctxt "selection:purchase.request,state:"
msgid "Cancel"
msgstr ""
@@ -382,6 +406,14 @@ msgctxt "view:stock.order_point:"
msgid "Product Info"
msgstr ""
+msgctxt "view:stock.shipment.internal.create.start:"
+msgid "Create Internal Shipments"
+msgstr ""
+
+msgctxt "view:stock.shipment.internal.create.start:"
+msgid "Create Internal Shipments?"
+msgstr ""
+
msgctxt "wizard_button:purchase.request.create,start,create_:"
msgid "Create"
msgstr ""
@@ -405,3 +437,11 @@ msgstr ""
msgctxt "wizard_button:purchase.request.create_purchase,ask_term,start:"
msgid "Continue"
msgstr ""
+
+msgctxt "wizard_button:stock.shipment.internal.create,start,create_:"
+msgid "Create"
+msgstr ""
+
+msgctxt "wizard_button:stock.shipment.internal.create,start,end:"
+msgid "Cancel"
+msgstr ""
diff --git a/locale/de_DE.po b/locale/de_DE.po
index a90322a..f1b7852 100644
--- a/locale/de_DE.po
+++ b/locale/de_DE.po
@@ -2,6 +2,12 @@
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
+msgctxt "error:purchase.request.create:"
+msgid "There are some late supplier moves, are you sure to ignore them?"
+msgstr ""
+"Es existieren spätere Lieferbewegungen von Lieferanten.\n"
+"Ignorieren und fortfahren?"
+
msgctxt "error:purchase.request.create_purchase:"
msgid "Purchase price is missing for product \"%s\"."
msgstr "Fehlender Einkaufspreis für Artikel \"%s\"."
@@ -18,6 +24,11 @@ msgctxt "error:purchase.request:"
msgid "The requested quantity must be greater than 0"
msgstr "Die angefragte Menge muss größer als 0 sein"
+msgctxt "error:purchase.request:"
+msgid "You can not delete purchased request."
+msgstr ""
+"Für einen Einkauf benutzte Bestellvorschläge können nicht gelöscht werden."
+
msgctxt "error:stock.order_point:"
msgid "Maximal quantity must be bigger than Minimal quantity"
msgstr "Die maximale Anzahl muss größer als die minimale Anzahl sein"
@@ -230,6 +241,10 @@ msgctxt "field:stock.order_point,write_uid:"
msgid "Write User"
msgstr "Letzte Änderung durch"
+msgctxt "field:stock.shipment.internal.create.start,id:"
+msgid "ID"
+msgstr "ID"
+
msgctxt "model:ir.action,name:act_order_point_form"
msgid "Order Points"
msgstr "Bestellpunkte"
@@ -246,6 +261,10 @@ msgctxt "model:ir.action,name:act_purchase_request_form"
msgid "Purchase Requests"
msgstr "Bestellvorschläge"
+msgctxt "model:ir.action,name:act_shipment_internal_create"
+msgid "Create Internal Shipments"
+msgstr "Interne Lieferposten erstellen"
+
msgctxt "model:ir.action,name:wizard_create_purchase"
msgid "Create Purchase"
msgstr "Verkauf erstellen"
@@ -280,6 +299,10 @@ msgctxt "model:ir.ui.menu,name:menu_purchase_request_form"
msgid "Purchase Requests"
msgstr "Bestellvorschläge"
+msgctxt "model:ir.ui.menu,name:menu_shipment_internal_create"
+msgid "Create Internal Shipments"
+msgstr "Interne Lieferposten erstellen"
+
msgctxt "model:purchase.request,name:"
msgid "Purchase Request"
msgstr "Bestellvorschlag"
@@ -312,6 +335,10 @@ msgctxt "model:stock.order_point,name:"
msgid "Order Point"
msgstr "Bestellpunkt"
+msgctxt "model:stock.shipment.internal.create.start,name:"
+msgid "Create Shipment Internal"
+msgstr "Interne Lieferbewegung erstellen"
+
msgctxt "selection:purchase.request,origin:"
msgid "Order Point"
msgstr "Bestellpunkt"
@@ -388,6 +415,14 @@ msgctxt "view:stock.order_point:"
msgid "Product Info"
msgstr "Artikelinfo"
+msgctxt "view:stock.shipment.internal.create.start:"
+msgid "Create Internal Shipments"
+msgstr "Interne Lieferbewegungen erstellen"
+
+msgctxt "view:stock.shipment.internal.create.start:"
+msgid "Create Internal Shipments?"
+msgstr "Interne Lieferposten erstellen?"
+
msgctxt "wizard_button:purchase.request.create,start,create_:"
msgid "Create"
msgstr "Erstellen"
@@ -411,3 +446,11 @@ msgstr "Abbrechen"
msgctxt "wizard_button:purchase.request.create_purchase,ask_term,start:"
msgid "Continue"
msgstr "Fortfahren"
+
+msgctxt "wizard_button:stock.shipment.internal.create,start,create_:"
+msgid "Create"
+msgstr "Erstellen"
+
+msgctxt "wizard_button:stock.shipment.internal.create,start,end:"
+msgid "Cancel"
+msgstr "Abbrechen"
diff --git a/locale/es_AR.po b/locale/es_AR.po
index a68a77b..7a8b0b9 100644
--- a/locale/es_AR.po
+++ b/locale/es_AR.po
@@ -2,6 +2,11 @@
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
+msgctxt "error:purchase.request.create:"
+msgid "There are some late supplier moves, are you sure to ignore them?"
+msgstr ""
+"Hay algunos movimientos de proveedor pendientes. ¿Está seguro de ignorarlos?"
+
msgctxt "error:purchase.request.create_purchase:"
msgid "Purchase price is missing for product \"%s\"."
msgstr "Falta el precio de compra del producto «%s»."
@@ -18,6 +23,10 @@ msgctxt "error:purchase.request:"
msgid "The requested quantity must be greater than 0"
msgstr "La cantidad solicitada debe ser mayor que 0."
+msgctxt "error:purchase.request:"
+msgid "You can not delete purchased request."
+msgstr "No puede eliminar una solicitud comprada."
+
msgctxt "error:stock.order_point:"
msgid "Maximal quantity must be bigger than Minimal quantity"
msgstr "La cantidad máxima debe ser mayor que la mínima"
@@ -232,6 +241,10 @@ msgctxt "field:stock.order_point,write_uid:"
msgid "Write User"
msgstr "Usuario modificación"
+msgctxt "field:stock.shipment.internal.create.start,id:"
+msgid "ID"
+msgstr "ID"
+
msgctxt "model:ir.action,name:act_order_point_form"
msgid "Order Points"
msgstr "Reglas de abastecimiento"
@@ -248,6 +261,10 @@ msgctxt "model:ir.action,name:act_purchase_request_form"
msgid "Purchase Requests"
msgstr "Solicitudes de compra"
+msgctxt "model:ir.action,name:act_shipment_internal_create"
+msgid "Create Internal Shipments"
+msgstr "Crear Remitos internos"
+
msgctxt "model:ir.action,name:wizard_create_purchase"
msgid "Create Purchase"
msgstr "Crear compra"
@@ -268,7 +285,7 @@ msgstr "Generar solicitudes de compra"
msgctxt "model:ir.cron,name:cron_shipment_iternal"
msgid "Generate Internal Shipments"
-msgstr "Generar envíos internos"
+msgstr "Generar Remitos internos"
msgctxt "model:ir.ui.menu,name:menu_order_point_form"
msgid "Order Points"
@@ -282,6 +299,10 @@ msgctxt "model:ir.ui.menu,name:menu_purchase_request_form"
msgid "Purchase Requests"
msgstr "Solicitudes de compra"
+msgctxt "model:ir.ui.menu,name:menu_shipment_internal_create"
+msgid "Create Internal Shipments"
+msgstr "Crear Remitos internos"
+
msgctxt "model:purchase.request,name:"
msgid "Purchase Request"
msgstr "Solicitud de compra"
@@ -308,12 +329,16 @@ msgstr "Programador de solicitud de compra"
msgctxt "model:res.user,name:user_generate_shipment_internal"
msgid "Cron Intenal Shipment"
-msgstr "Programador de envío interno"
+msgstr "Programador de Remito interno"
msgctxt "model:stock.order_point,name:"
msgid "Order Point"
msgstr "Regla de abastecimiento"
+msgctxt "model:stock.shipment.internal.create.start,name:"
+msgid "Create Shipment Internal"
+msgstr "Crear Remito interno"
+
msgctxt "selection:purchase.request,origin:"
msgid "Order Point"
msgstr "Regla de abastecimiento"
@@ -390,6 +415,14 @@ msgctxt "view:stock.order_point:"
msgid "Product Info"
msgstr "Información del producto"
+msgctxt "view:stock.shipment.internal.create.start:"
+msgid "Create Internal Shipments"
+msgstr "Crear Remitos internos"
+
+msgctxt "view:stock.shipment.internal.create.start:"
+msgid "Create Internal Shipments?"
+msgstr "¿Crear Remitos internos?"
+
msgctxt "wizard_button:purchase.request.create,start,create_:"
msgid "Create"
msgstr "Crear"
@@ -413,3 +446,11 @@ msgstr "Cancelar"
msgctxt "wizard_button:purchase.request.create_purchase,ask_term,start:"
msgid "Continue"
msgstr "Continuar"
+
+msgctxt "wizard_button:stock.shipment.internal.create,start,create_:"
+msgid "Create"
+msgstr "Crear"
+
+msgctxt "wizard_button:stock.shipment.internal.create,start,end:"
+msgid "Cancel"
+msgstr "Cancelar"
diff --git a/locale/es_CO.po b/locale/es_CO.po
index 41c0e1c..31c2131 100644
--- a/locale/es_CO.po
+++ b/locale/es_CO.po
@@ -2,13 +2,19 @@
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
+msgctxt "error:purchase.request.create:"
+msgid "There are some late supplier moves, are you sure to ignore them?"
+msgstr ""
+"Hay algunos movimientos de proveedor retrasados, esta seguro que desea "
+"ignorarlos?"
+
msgctxt "error:purchase.request.create_purchase:"
msgid "Purchase price is missing for product \"%s\"."
-msgstr ""
+msgstr "Falta el precio de compra del producto \"%s\"."
msgctxt "error:purchase.request.create_purchase:"
msgid "This price is necessary for creating purchases."
-msgstr ""
+msgstr "Este precio es ncesario para crear compras."
msgctxt "error:purchase.request:"
msgid "Purchase requests are only created by the system."
@@ -18,6 +24,10 @@ msgctxt "error:purchase.request:"
msgid "The requested quantity must be greater than 0"
msgstr "La cantidad solicitada debe ser mayor que 0"
+msgctxt "error:purchase.request:"
+msgid "You can not delete purchased request."
+msgstr "No puede borrar ordenes de compra."
+
msgctxt "error:stock.order_point:"
msgid "Maximal quantity must be bigger than Minimal quantity"
msgstr "La cantidad máxima debe ser mayor que la cantidad mínima"
@@ -49,7 +59,7 @@ msgstr "Cantidad Calculada"
msgctxt "field:purchase.request,computed_uom:"
msgid "Computed UOM"
-msgstr "UOM Calculada"
+msgstr "UdM Calculada"
msgctxt "field:purchase.request,create_date:"
msgid "Create Date"
@@ -101,7 +111,7 @@ msgstr "Estado"
msgctxt "field:purchase.request,stock_level:"
msgid "Stock at Supply Date"
-msgstr "Almacenar al Momento en la fecha de abastecimiento"
+msgstr "Almacenar la Fecha de Abastecimiento"
msgctxt "field:purchase.request,supply_date:"
msgid "Expected Supply Date"
@@ -109,7 +119,7 @@ msgstr "Fecha Esperada de Abastecimiento"
msgctxt "field:purchase.request,uom:"
msgid "UOM"
-msgstr "UDM"
+msgstr "UdM"
msgctxt "field:purchase.request,warehouse:"
msgid "Warehouse"
@@ -181,7 +191,7 @@ msgstr "ID"
msgctxt "field:stock.order_point,location:"
msgid "Location"
-msgstr "Locación"
+msgstr "Bodega"
msgctxt "field:stock.order_point,max_quantity:"
msgid "Maximal Quantity"
@@ -197,7 +207,7 @@ msgstr "Producto"
msgctxt "field:stock.order_point,provisioning_location:"
msgid "Provisioning Location"
-msgstr "Locación de Aprovisionamiento"
+msgstr "Bodega de Aprovisionamiento"
msgctxt "field:stock.order_point,rec_name:"
msgid "Name"
@@ -205,7 +215,7 @@ msgstr "Nombre"
msgctxt "field:stock.order_point,storage_location:"
msgid "Storage Location"
-msgstr "Locación de Almacenamiento"
+msgstr "Bodega de Almacenamiento"
msgctxt "field:stock.order_point,type:"
msgid "Type"
@@ -221,7 +231,7 @@ msgstr "Decimales de Unidad"
msgctxt "field:stock.order_point,warehouse_location:"
msgid "Warehouse Location"
-msgstr "Locación del Depósito"
+msgstr "Bodega de Depósito"
msgctxt "field:stock.order_point,write_date:"
msgid "Write Date"
@@ -231,6 +241,10 @@ msgctxt "field:stock.order_point,write_uid:"
msgid "Write User"
msgstr "Modificado por Usuario"
+msgctxt "field:stock.shipment.internal.create.start,id:"
+msgid "ID"
+msgstr "ID"
+
msgctxt "model:ir.action,name:act_order_point_form"
msgid "Order Points"
msgstr "Puntos de Orden"
@@ -247,17 +261,19 @@ msgctxt "model:ir.action,name:act_purchase_request_form"
msgid "Purchase Requests"
msgstr "Solicitudes de Compra"
+msgctxt "model:ir.action,name:act_shipment_internal_create"
+msgid "Create Internal Shipments"
+msgstr "Crear Envío Interno"
+
msgctxt "model:ir.action,name:wizard_create_purchase"
msgid "Create Purchase"
msgstr "Crear Compra"
-#, fuzzy
msgctxt ""
"model:ir.action.act_window.domain,name:act_purchase_request_form_domain_all"
msgid "All"
msgstr "Todo"
-#, fuzzy
msgctxt ""
"model:ir.action.act_window.domain,name:act_purchase_request_form_domain_draft"
msgid "Draft"
@@ -283,6 +299,10 @@ msgctxt "model:ir.ui.menu,name:menu_purchase_request_form"
msgid "Purchase Requests"
msgstr "Ordenes de Compra"
+msgctxt "model:ir.ui.menu,name:menu_shipment_internal_create"
+msgid "Create Internal Shipments"
+msgstr "Crear Envíos Internos"
+
msgctxt "model:purchase.request,name:"
msgid "Purchase Request"
msgstr "Orden de Compra"
@@ -311,11 +331,14 @@ msgctxt "model:res.user,name:user_generate_shipment_internal"
msgid "Cron Intenal Shipment"
msgstr "Cron Envío Interno"
-#, fuzzy
msgctxt "model:stock.order_point,name:"
msgid "Order Point"
msgstr "Punto de Orden"
+msgctxt "model:stock.shipment.internal.create.start,name:"
+msgid "Create Shipment Internal"
+msgstr "Crear Envío Interno"
+
msgctxt "selection:purchase.request,origin:"
msgid "Order Point"
msgstr "Punto de Orden"
@@ -392,6 +415,14 @@ msgctxt "view:stock.order_point:"
msgid "Product Info"
msgstr "Información de Producto"
+msgctxt "view:stock.shipment.internal.create.start:"
+msgid "Create Internal Shipments"
+msgstr "Crear Envíos Internos"
+
+msgctxt "view:stock.shipment.internal.create.start:"
+msgid "Create Internal Shipments?"
+msgstr "Crear Envíos Internos?"
+
msgctxt "wizard_button:purchase.request.create,start,create_:"
msgid "Create"
msgstr "Crear"
@@ -415,3 +446,11 @@ msgstr "Cancelar"
msgctxt "wizard_button:purchase.request.create_purchase,ask_term,start:"
msgid "Continue"
msgstr "Continuar"
+
+msgctxt "wizard_button:stock.shipment.internal.create,start,create_:"
+msgid "Create"
+msgstr "Crear"
+
+msgctxt "wizard_button:stock.shipment.internal.create,start,end:"
+msgid "Cancel"
+msgstr "Cancelar"
diff --git a/locale/es_ES.po b/locale/es_ES.po
index 6a6758e..0d4fb99 100644
--- a/locale/es_ES.po
+++ b/locale/es_ES.po
@@ -2,6 +2,11 @@
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
+msgctxt "error:purchase.request.create:"
+msgid "There are some late supplier moves, are you sure to ignore them?"
+msgstr ""
+"Hay algunos movimientos de proveedor pendientes. ¿Está seguro de ignorarlos?"
+
msgctxt "error:purchase.request.create_purchase:"
msgid "Purchase price is missing for product \"%s\"."
msgstr "Falta el precio de compra del producto \"%s\"."
@@ -18,6 +23,10 @@ msgctxt "error:purchase.request:"
msgid "The requested quantity must be greater than 0"
msgstr "La cantidad solicitada debe ser más grande que 0."
+msgctxt "error:purchase.request:"
+msgid "You can not delete purchased request."
+msgstr "No puede eliminar una solicitud de compra."
+
msgctxt "error:stock.order_point:"
msgid "Maximal quantity must be bigger than Minimal quantity"
msgstr "La cantidad máxima debe ser mayor que la mínima."
@@ -232,6 +241,10 @@ msgctxt "field:stock.order_point,write_uid:"
msgid "Write User"
msgstr "Usuario modificación"
+msgctxt "field:stock.shipment.internal.create.start,id:"
+msgid "ID"
+msgstr "ID"
+
msgctxt "model:ir.action,name:act_order_point_form"
msgid "Order Points"
msgstr "Reglas de abastecimiento"
@@ -248,6 +261,10 @@ msgctxt "model:ir.action,name:act_purchase_request_form"
msgid "Purchase Requests"
msgstr "Solicitudes de compra"
+msgctxt "model:ir.action,name:act_shipment_internal_create"
+msgid "Create Internal Shipments"
+msgstr "Crear albaranes internos"
+
msgctxt "model:ir.action,name:wizard_create_purchase"
msgid "Create Purchase"
msgstr "Crear compra"
@@ -282,6 +299,10 @@ msgctxt "model:ir.ui.menu,name:menu_purchase_request_form"
msgid "Purchase Requests"
msgstr "Solicitudes de compra"
+msgctxt "model:ir.ui.menu,name:menu_shipment_internal_create"
+msgid "Create Internal Shipments"
+msgstr "Crear albaranes internos"
+
msgctxt "model:purchase.request,name:"
msgid "Purchase Request"
msgstr "Solicitud de compra"
@@ -314,6 +335,10 @@ msgctxt "model:stock.order_point,name:"
msgid "Order Point"
msgstr "Regla de abastecimiento"
+msgctxt "model:stock.shipment.internal.create.start,name:"
+msgid "Create Shipment Internal"
+msgstr "Crear albaranes internos"
+
msgctxt "selection:purchase.request,origin:"
msgid "Order Point"
msgstr "Regla de abastecimiento"
@@ -348,15 +373,15 @@ msgstr "Crear solicitud de compra"
msgctxt "view:purchase.request.create.start:"
msgid "Create Purchase Request?"
-msgstr "Crear solicitudes de compra?"
+msgstr "¿Crear solicitudes de compra?"
msgctxt "view:purchase.request.create_purchase.ask_party:"
msgid "Create Purchase: Missing Supplier"
-msgstr "Crear compra: Sin proveedor"
+msgstr "Crear compra: Falta proveedor"
msgctxt "view:purchase.request.create_purchase.ask_term:"
msgid "Create Purchase: Missing Payment Term"
-msgstr "Crear compra: Sin plazo de pago"
+msgstr "Crear compra: Falta plazo de pago"
msgctxt "view:purchase.request:"
msgid "Product Info"
@@ -390,6 +415,14 @@ msgctxt "view:stock.order_point:"
msgid "Product Info"
msgstr "Información del producto"
+msgctxt "view:stock.shipment.internal.create.start:"
+msgid "Create Internal Shipments"
+msgstr "Crear albaranes internos"
+
+msgctxt "view:stock.shipment.internal.create.start:"
+msgid "Create Internal Shipments?"
+msgstr "¿Crear albaranes internos?"
+
msgctxt "wizard_button:purchase.request.create,start,create_:"
msgid "Create"
msgstr "Crear"
@@ -413,3 +446,11 @@ msgstr "Cancelar"
msgctxt "wizard_button:purchase.request.create_purchase,ask_term,start:"
msgid "Continue"
msgstr "Continuar"
+
+msgctxt "wizard_button:stock.shipment.internal.create,start,create_:"
+msgid "Create"
+msgstr "Crear"
+
+msgctxt "wizard_button:stock.shipment.internal.create,start,end:"
+msgid "Cancel"
+msgstr "Cancelar"
diff --git a/locale/fr_FR.po b/locale/fr_FR.po
index c1f918d..cab1ed1 100644
--- a/locale/fr_FR.po
+++ b/locale/fr_FR.po
@@ -2,6 +2,11 @@
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
+msgctxt "error:purchase.request.create:"
+msgid "There are some late supplier moves, are you sure to ignore them?"
+msgstr ""
+"Il y a des mouvements fournisseurs tardifs, êtes-vous sûr de les ignorer ?"
+
msgctxt "error:purchase.request.create_purchase:"
msgid "Purchase price is missing for product \"%s\"."
msgstr "Le prix d'achat du produit \"%s\" est manquant."
@@ -15,16 +20,12 @@ msgid "Purchase requests are only created by the system."
msgstr "Les demandes d'achat sont uniquement crées par le sytème"
msgctxt "error:purchase.request:"
-msgid "Purchase requests are only created by the system."
-msgstr "Les demandes d'achat sont uniquement crées par le sytème"
-
-msgctxt "error:purchase.request:"
msgid "The requested quantity must be greater than 0"
msgstr "La quantité requise doit être supérieure à zéro"
-msgctxt "error:stock.order_point:"
-msgid "Maximal quantity must be bigger than Minimal quantity"
-msgstr "La Quantité maximale doit être supérieure à la quantité minimale"
+msgctxt "error:purchase.request:"
+msgid "You can not delete purchased request."
+msgstr "Vous ne pouvez pas supprimer des demandes d'achat commandées."
msgctxt "error:stock.order_point:"
msgid "Maximal quantity must be bigger than Minimal quantity"
@@ -37,20 +38,6 @@ msgstr ""
"emplacement"
msgctxt "error:stock.order_point:"
-msgid "Only one order point is allowed for each product-location pair."
-msgstr ""
-"Une seule règle d'approvisionnement est autorisée par paire produit-"
-"emplacement"
-
-msgctxt "error:stock.order_point:"
-msgid ""
-"You can not define two order points on the same product with opposite "
-"locations."
-msgstr ""
-"Vous ne pouvez pas définir deux règles d'approvisionnement sur le même "
-"produit avec des emplacement opposés"
-
-msgctxt "error:stock.order_point:"
msgid ""
"You can not define two order points on the same product with opposite "
"locations."
@@ -254,6 +241,10 @@ msgctxt "field:stock.order_point,write_uid:"
msgid "Write User"
msgstr "Mis à jour par"
+msgctxt "field:stock.shipment.internal.create.start,id:"
+msgid "ID"
+msgstr "ID"
+
msgctxt "model:ir.action,name:act_order_point_form"
msgid "Order Points"
msgstr "Règles d'approvisionnement"
@@ -270,6 +261,10 @@ msgctxt "model:ir.action,name:act_purchase_request_form"
msgid "Purchase Requests"
msgstr "Demandes d'achat"
+msgctxt "model:ir.action,name:act_shipment_internal_create"
+msgid "Create Internal Shipments"
+msgstr "Créer les expéditions internes"
+
msgctxt "model:ir.action,name:wizard_create_purchase"
msgid "Create Purchase"
msgstr "Créer achat"
@@ -304,6 +299,10 @@ msgctxt "model:ir.ui.menu,name:menu_purchase_request_form"
msgid "Purchase Requests"
msgstr "Demandes d'achat"
+msgctxt "model:ir.ui.menu,name:menu_shipment_internal_create"
+msgid "Create Internal Shipments"
+msgstr "Créer les expéditions internes"
+
msgctxt "model:purchase.request,name:"
msgid "Purchase Request"
msgstr "Demande d'achat"
@@ -336,6 +335,10 @@ msgctxt "model:stock.order_point,name:"
msgid "Order Point"
msgstr "Règle d'approvisionnement"
+msgctxt "model:stock.shipment.internal.create.start,name:"
+msgid "Create Shipment Internal"
+msgstr "Créer l'expédition interne"
+
msgctxt "selection:purchase.request,origin:"
msgid "Order Point"
msgstr "Règle d'approvisionnement"
@@ -345,14 +348,6 @@ msgid "Cancel"
msgstr "Annulé"
msgctxt "selection:purchase.request,state:"
-msgid "Cancel"
-msgstr "Annulé"
-
-msgctxt "selection:purchase.request,state:"
-msgid "Done"
-msgstr "Fait"
-
-msgctxt "selection:purchase.request,state:"
msgid "Done"
msgstr "Fait"
@@ -361,14 +356,6 @@ msgid "Draft"
msgstr "Brouillon"
msgctxt "selection:purchase.request,state:"
-msgid "Draft"
-msgstr "Brouillon"
-
-msgctxt "selection:purchase.request,state:"
-msgid "Purchased"
-msgstr "Commandé"
-
-msgctxt "selection:purchase.request,state:"
msgid "Purchased"
msgstr "Commandé"
@@ -377,14 +364,6 @@ msgid "Internal"
msgstr "Interne"
msgctxt "selection:stock.order_point,type:"
-msgid "Internal"
-msgstr "Interne"
-
-msgctxt "selection:stock.order_point,type:"
-msgid "Purchase"
-msgstr "Achat"
-
-msgctxt "selection:stock.order_point,type:"
msgid "Purchase"
msgstr "Achat"
@@ -398,33 +377,17 @@ msgstr "Créer les demandes d'achat ?"
msgctxt "view:purchase.request.create_purchase.ask_party:"
msgid "Create Purchase: Missing Supplier"
-msgstr "Création de la commande: fournisseur absent"
-
-msgctxt "view:purchase.request.create_purchase.ask_party:"
-msgid "Create Purchase: Missing Supplier"
-msgstr "Création de la commande: fournisseur absent"
-
-msgctxt "view:purchase.request.create_purchase.ask_term:"
-msgid "Create Purchase: Missing Payment Term"
-msgstr "Création de la commande: règle d'appro. absente"
+msgstr "Créer la commande: fournisseur absent"
msgctxt "view:purchase.request.create_purchase.ask_term:"
msgid "Create Purchase: Missing Payment Term"
-msgstr "Création de la commande: règle d'appro. absente"
+msgstr "Créer la commande: condition de paiement absente"
msgctxt "view:purchase.request:"
msgid "Product Info"
msgstr "Info produit"
msgctxt "view:purchase.request:"
-msgid "Product Info"
-msgstr "Info produit"
-
-msgctxt "view:purchase.request:"
-msgid "Purchase Request"
-msgstr "Demande d'achat"
-
-msgctxt "view:purchase.request:"
msgid "Purchase Request"
msgstr "Demande d'achat"
@@ -433,21 +396,9 @@ msgid "Purchase Requests"
msgstr "Demandes d'achat"
msgctxt "view:purchase.request:"
-msgid "Purchase Requests"
-msgstr "Demandes d'achat"
-
-msgctxt "view:purchase.request:"
msgid "Supply Info"
msgstr "Information d'approvisionnement"
-msgctxt "view:purchase.request:"
-msgid "Supply Info"
-msgstr "Information d'approvisionnement"
-
-msgctxt "view:stock.order_point:"
-msgid "Order Point"
-msgstr "Règle d'approvisionnement"
-
msgctxt "view:stock.order_point:"
msgid "Order Point"
msgstr "Règle d'approvisionnement"
@@ -457,14 +408,6 @@ msgid "Order Point Type"
msgstr "Type de Règle d'approvisionnement"
msgctxt "view:stock.order_point:"
-msgid "Order Point Type"
-msgstr "Type de Règle d'approvisionnement"
-
-msgctxt "view:stock.order_point:"
-msgid "Order Points"
-msgstr "Règles d'approvisionnements"
-
-msgctxt "view:stock.order_point:"
msgid "Order Points"
msgstr "Règles d'approvisionnements"
@@ -472,9 +415,13 @@ msgctxt "view:stock.order_point:"
msgid "Product Info"
msgstr "Info produit"
-msgctxt "view:stock.order_point:"
-msgid "Product Info"
-msgstr "Info produit"
+msgctxt "view:stock.shipment.internal.create.start:"
+msgid "Create Internal Shipments"
+msgstr "Création les expéditions internes"
+
+msgctxt "view:stock.shipment.internal.create.start:"
+msgid "Create Internal Shipments?"
+msgstr "Créer les expéditions internes ?"
msgctxt "wizard_button:purchase.request.create,start,create_:"
msgid "Create"
@@ -499,3 +446,11 @@ msgstr "Annuler"
msgctxt "wizard_button:purchase.request.create_purchase,ask_term,start:"
msgid "Continue"
msgstr "Continuer"
+
+msgctxt "wizard_button:stock.shipment.internal.create,start,create_:"
+msgid "Create"
+msgstr "Créer"
+
+msgctxt "wizard_button:stock.shipment.internal.create,start,end:"
+msgid "Cancel"
+msgstr "Annuler"
diff --git a/locale/nl_NL.po b/locale/nl_NL.po
index 167e1ef..9cb2df9 100644
--- a/locale/nl_NL.po
+++ b/locale/nl_NL.po
@@ -2,6 +2,10 @@
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
+msgctxt "error:purchase.request.create:"
+msgid "There are some late supplier moves, are you sure to ignore them?"
+msgstr ""
+
msgctxt "error:purchase.request.create_purchase:"
msgid "Purchase price is missing for product \"%s\"."
msgstr ""
@@ -18,6 +22,10 @@ msgctxt "error:purchase.request:"
msgid "The requested quantity must be greater than 0"
msgstr ""
+msgctxt "error:purchase.request:"
+msgid "You can not delete purchased request."
+msgstr ""
+
msgctxt "error:stock.order_point:"
msgid "Maximal quantity must be bigger than Minimal quantity"
msgstr ""
@@ -247,6 +255,10 @@ msgctxt "field:stock.order_point,write_uid:"
msgid "Write User"
msgstr ""
+msgctxt "field:stock.shipment.internal.create.start,id:"
+msgid "ID"
+msgstr ""
+
msgctxt "model:ir.action,name:act_order_point_form"
msgid "Order Points"
msgstr ""
@@ -263,6 +275,10 @@ msgctxt "model:ir.action,name:act_purchase_request_form"
msgid "Purchase Requests"
msgstr ""
+msgctxt "model:ir.action,name:act_shipment_internal_create"
+msgid "Create Internal Shipments"
+msgstr ""
+
msgctxt "model:ir.action,name:wizard_create_purchase"
msgid "Create Purchase"
msgstr ""
@@ -298,6 +314,10 @@ msgctxt "model:ir.ui.menu,name:menu_purchase_request_form"
msgid "Purchase Requests"
msgstr ""
+msgctxt "model:ir.ui.menu,name:menu_shipment_internal_create"
+msgid "Create Internal Shipments"
+msgstr ""
+
msgctxt "model:purchase.request,name:"
msgid "Purchase Request"
msgstr ""
@@ -330,6 +350,10 @@ msgctxt "model:stock.order_point,name:"
msgid "Order Point"
msgstr ""
+msgctxt "model:stock.shipment.internal.create.start,name:"
+msgid "Create Shipment Internal"
+msgstr ""
+
#, fuzzy
msgctxt "selection:purchase.request,state:"
msgid "Cancel"
@@ -405,6 +429,14 @@ msgctxt "view:stock.order_point:"
msgid "Product Info"
msgstr ""
+msgctxt "view:stock.shipment.internal.create.start:"
+msgid "Create Internal Shipments"
+msgstr ""
+
+msgctxt "view:stock.shipment.internal.create.start:"
+msgid "Create Internal Shipments?"
+msgstr ""
+
msgctxt "wizard_button:purchase.request.create,start,create_:"
msgid "Create"
msgstr ""
@@ -431,3 +463,12 @@ msgstr "Annuleren"
msgctxt "wizard_button:purchase.request.create_purchase,ask_term,start:"
msgid "Continue"
msgstr ""
+
+msgctxt "wizard_button:stock.shipment.internal.create,start,create_:"
+msgid "Create"
+msgstr ""
+
+#, fuzzy
+msgctxt "wizard_button:stock.shipment.internal.create,start,end:"
+msgid "Cancel"
+msgstr "Annuleren"
diff --git a/locale/ru_RU.po b/locale/ru_RU.po
index faa656b..873f709 100644
--- a/locale/ru_RU.po
+++ b/locale/ru_RU.po
@@ -2,6 +2,10 @@
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
+msgctxt "error:purchase.request.create:"
+msgid "There are some late supplier moves, are you sure to ignore them?"
+msgstr ""
+
msgctxt "error:purchase.request.create_purchase:"
msgid "Purchase price is missing for product \"%s\"."
msgstr "Цена покупки отсутствует у продукта \"%s\"."
@@ -18,6 +22,10 @@ msgctxt "error:purchase.request:"
msgid "The requested quantity must be greater than 0"
msgstr "Запрашиваемое кол-во должно быть больше 0"
+msgctxt "error:purchase.request:"
+msgid "You can not delete purchased request."
+msgstr ""
+
msgctxt "error:stock.order_point:"
msgid "Maximal quantity must be bigger than Minimal quantity"
msgstr "Максимальное кол-во должно быть больше чем минимальное."
@@ -231,6 +239,11 @@ msgctxt "field:stock.order_point,write_uid:"
msgid "Write User"
msgstr "Изменено пользователем"
+#, fuzzy
+msgctxt "field:stock.shipment.internal.create.start,id:"
+msgid "ID"
+msgstr "ID"
+
msgctxt "model:ir.action,name:act_order_point_form"
msgid "Order Points"
msgstr "Точки заказа"
@@ -247,6 +260,10 @@ msgctxt "model:ir.action,name:act_purchase_request_form"
msgid "Purchase Requests"
msgstr "Запросы на покупку"
+msgctxt "model:ir.action,name:act_shipment_internal_create"
+msgid "Create Internal Shipments"
+msgstr ""
+
msgctxt "model:ir.action,name:wizard_create_purchase"
msgid "Create Purchase"
msgstr "Создать покупку"
@@ -281,6 +298,10 @@ msgctxt "model:ir.ui.menu,name:menu_purchase_request_form"
msgid "Purchase Requests"
msgstr "Запросы на покупку"
+msgctxt "model:ir.ui.menu,name:menu_shipment_internal_create"
+msgid "Create Internal Shipments"
+msgstr ""
+
msgctxt "model:purchase.request,name:"
msgid "Purchase Request"
msgstr "Запрос на покупку"
@@ -313,6 +334,10 @@ msgctxt "model:stock.order_point,name:"
msgid "Order Point"
msgstr "Точка заказа"
+msgctxt "model:stock.shipment.internal.create.start,name:"
+msgid "Create Shipment Internal"
+msgstr ""
+
msgctxt "selection:purchase.request,state:"
msgid "Cancel"
msgstr "Отменить"
@@ -385,6 +410,14 @@ msgctxt "view:stock.order_point:"
msgid "Product Info"
msgstr "Информация о продукте"
+msgctxt "view:stock.shipment.internal.create.start:"
+msgid "Create Internal Shipments"
+msgstr ""
+
+msgctxt "view:stock.shipment.internal.create.start:"
+msgid "Create Internal Shipments?"
+msgstr ""
+
msgctxt "wizard_button:purchase.request.create,start,create_:"
msgid "Create"
msgstr "Создать"
@@ -408,3 +441,13 @@ msgstr "Отменить"
msgctxt "wizard_button:purchase.request.create_purchase,ask_term,start:"
msgid "Continue"
msgstr "Продолжить"
+
+#, fuzzy
+msgctxt "wizard_button:stock.shipment.internal.create,start,create_:"
+msgid "Create"
+msgstr "Создать"
+
+#, fuzzy
+msgctxt "wizard_button:stock.shipment.internal.create,start,end:"
+msgid "Cancel"
+msgstr "Отменить"
diff --git a/locale/es_AR.po b/locale/sl_SI.po
similarity index 66%
copy from locale/es_AR.po
copy to locale/sl_SI.po
index a68a77b..5092d47 100644
--- a/locale/es_AR.po
+++ b/locale/sl_SI.po
@@ -2,63 +2,71 @@
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
+msgctxt "error:purchase.request.create:"
+msgid "There are some late supplier moves, are you sure to ignore them?"
+msgstr ""
+"Obstaja nekaj zapoznelega prometa pri dobavitelju. Ali ste prepričani, da ga"
+" želite prezreti?"
+
msgctxt "error:purchase.request.create_purchase:"
msgid "Purchase price is missing for product \"%s\"."
-msgstr "Falta el precio de compra del producto «%s»."
+msgstr "Pri izdelku \"%s\" manjka nabavna cena."
msgctxt "error:purchase.request.create_purchase:"
msgid "This price is necessary for creating purchases."
-msgstr "Este precio es necesario para crear compras."
+msgstr "Ta cena je potrebna pri izdelavi nabavnih nalogov."
msgctxt "error:purchase.request:"
msgid "Purchase requests are only created by the system."
-msgstr "Las solicitudes de compra solo las crea el sistema."
+msgstr "Nabavni zahtevki so izdelani samo s strani sistema."
msgctxt "error:purchase.request:"
msgid "The requested quantity must be greater than 0"
-msgstr "La cantidad solicitada debe ser mayor que 0."
+msgstr "Zahtevana količina mora biti večja od nič."
+
+msgctxt "error:purchase.request:"
+msgid "You can not delete purchased request."
+msgstr "Nabavnega zahtevka ni možno zbrisati."
msgctxt "error:stock.order_point:"
msgid "Maximal quantity must be bigger than Minimal quantity"
-msgstr "La cantidad máxima debe ser mayor que la mínima"
+msgstr "Največja količina mora biti večja od najmanjše količine."
msgctxt "error:stock.order_point:"
msgid "Only one order point is allowed for each product-location pair."
-msgstr ""
-"Sólo se permite una regla de abastecimiento por cada combinación de "
-"producto-ubicación."
+msgstr "Dovoljena je samo ena točka naročanja za vsak par izdelek - lokacija."
msgctxt "error:stock.order_point:"
msgid ""
"You can not define two order points on the same product with opposite "
"locations."
msgstr ""
-"No puede definir dos reglas de abastecimiento en el mismo producto con "
-"ubicaciones opuestas."
+"Dveh točk naročanja ni možno določiti na istem izdelku z nasprotujočima "
+"lokacijama."
msgctxt "field:product.product,order_points:"
msgid "Order Points"
-msgstr "Reglas de abastecimiento"
+msgstr "Točke naročanja"
msgctxt "field:purchase.request,company:"
msgid "Company"
-msgstr "Empresa"
+msgstr "Podjetje"
msgctxt "field:purchase.request,computed_quantity:"
msgid "Computed Quantity"
-msgstr "Cantidad calculada"
+msgstr "Izračunana količina"
msgctxt "field:purchase.request,computed_uom:"
msgid "Computed UOM"
-msgstr "UdM calculada"
+msgstr "Izračunana ME"
msgctxt "field:purchase.request,create_date:"
msgid "Create Date"
-msgstr "Fecha creación"
+msgstr "Ustvarjeno"
msgctxt "field:purchase.request,create_uid:"
msgid "Create User"
-msgstr "Usuario creación"
+msgstr "Ustvaril"
msgctxt "field:purchase.request,id:"
msgid "ID"
@@ -66,67 +74,67 @@ msgstr "ID"
msgctxt "field:purchase.request,origin:"
msgid "Origin"
-msgstr "Origen"
+msgstr "Poreklo"
msgctxt "field:purchase.request,party:"
msgid "Party"
-msgstr "Entidad"
+msgstr "Stranka"
msgctxt "field:purchase.request,product:"
msgid "Product"
-msgstr "Producto"
+msgstr "Izdelek"
msgctxt "field:purchase.request,purchase:"
msgid "Purchase"
-msgstr "Compra"
+msgstr "Nabavni nalog"
msgctxt "field:purchase.request,purchase_date:"
msgid "Best Purchase Date"
-msgstr "Mejor fecha de compra"
+msgstr "Najugodnejši datum nabave"
msgctxt "field:purchase.request,purchase_line:"
msgid "Purchase Line"
-msgstr "Línea de compra"
+msgstr "Nabavna postavka"
msgctxt "field:purchase.request,quantity:"
msgid "Quantity"
-msgstr "Cantidad"
+msgstr "Količina"
msgctxt "field:purchase.request,rec_name:"
msgid "Name"
-msgstr "Nombre"
+msgstr "Ime"
msgctxt "field:purchase.request,state:"
msgid "State"
-msgstr "Estado"
+msgstr "Stanje"
msgctxt "field:purchase.request,stock_level:"
msgid "Stock at Supply Date"
-msgstr "Existencias a la fecha del suministro"
+msgstr "Zaloga na dan dobave"
msgctxt "field:purchase.request,supply_date:"
msgid "Expected Supply Date"
-msgstr "Fecha estimada de suministro"
+msgstr "Predviden datum dobave"
msgctxt "field:purchase.request,uom:"
msgid "UOM"
-msgstr "UdM"
+msgstr "ME"
msgctxt "field:purchase.request,warehouse:"
msgid "Warehouse"
-msgstr "Almacén"
+msgstr "Skladišče"
msgctxt "field:purchase.request,warehouse_required:"
msgid "Warehouse Required"
-msgstr "Almacén requerido"
+msgstr "Skladišče zahtevano"
msgctxt "field:purchase.request,write_date:"
msgid "Write Date"
-msgstr "Fecha modificación"
+msgstr "Zapisano"
msgctxt "field:purchase.request,write_uid:"
msgid "Write User"
-msgstr "Usuario modificación"
+msgstr "Zapisal"
msgctxt "field:purchase.request.create.start,id:"
msgid "ID"
@@ -134,7 +142,7 @@ msgstr "ID"
msgctxt "field:purchase.request.create_purchase.ask_party,company:"
msgid "Company"
-msgstr "Empresa"
+msgstr "Podjetje"
msgctxt "field:purchase.request.create_purchase.ask_party,id:"
msgid "ID"
@@ -142,15 +150,15 @@ msgstr "ID"
msgctxt "field:purchase.request.create_purchase.ask_party,party:"
msgid "Supplier"
-msgstr "Proveedor"
+msgstr "Dobavitelj"
msgctxt "field:purchase.request.create_purchase.ask_party,product:"
msgid "Product"
-msgstr "Producto"
+msgstr "Izdelek"
msgctxt "field:purchase.request.create_purchase.ask_term,company:"
msgid "Company"
-msgstr "Empresa"
+msgstr "Podjetje"
msgctxt "field:purchase.request.create_purchase.ask_term,id:"
msgid "ID"
@@ -158,23 +166,23 @@ msgstr "ID"
msgctxt "field:purchase.request.create_purchase.ask_term,party:"
msgid "Supplier"
-msgstr "Proveedor"
+msgstr "Dobavitelj"
msgctxt "field:purchase.request.create_purchase.ask_term,payment_term:"
msgid "Payment Term"
-msgstr "Término de pago"
+msgstr "Plačilni rok"
msgctxt "field:stock.order_point,company:"
msgid "Company"
-msgstr "Empresa"
+msgstr "Podjetje"
msgctxt "field:stock.order_point,create_date:"
msgid "Create Date"
-msgstr "Fecha creación"
+msgstr "Ustvarjeno"
msgctxt "field:stock.order_point,create_uid:"
msgid "Create User"
-msgstr "Usuario creación"
+msgstr "Ustvaril"
msgctxt "field:stock.order_point,id:"
msgid "ID"
@@ -182,157 +190,169 @@ msgstr "ID"
msgctxt "field:stock.order_point,location:"
msgid "Location"
-msgstr "Ubicación"
+msgstr "Lokacija"
msgctxt "field:stock.order_point,max_quantity:"
msgid "Maximal Quantity"
-msgstr "Cantidad máxima"
+msgstr "Največja količina"
msgctxt "field:stock.order_point,min_quantity:"
msgid "Minimal Quantity"
-msgstr "Cantidad mínima"
+msgstr "Najmanjša količina"
msgctxt "field:stock.order_point,product:"
msgid "Product"
-msgstr "Producto"
+msgstr "Izdelek"
msgctxt "field:stock.order_point,provisioning_location:"
msgid "Provisioning Location"
-msgstr "Ubicación del aprovisionamiento"
+msgstr "Preskrba"
msgctxt "field:stock.order_point,rec_name:"
msgid "Name"
-msgstr "Nombre"
+msgstr "Ime"
msgctxt "field:stock.order_point,storage_location:"
msgid "Storage Location"
-msgstr "Ubicación del depósito"
+msgstr "Shramba"
msgctxt "field:stock.order_point,type:"
msgid "Type"
-msgstr "Tipo"
+msgstr "Vrsta"
msgctxt "field:stock.order_point,unit:"
msgid "Unit"
-msgstr "Unidad"
+msgstr "enota"
msgctxt "field:stock.order_point,unit_digits:"
msgid "Unit Digits"
-msgstr "Dígitos de unidad"
+msgstr "Decimalke"
msgctxt "field:stock.order_point,warehouse_location:"
msgid "Warehouse Location"
-msgstr "Ubicación del almacén"
+msgstr "Skladišče"
msgctxt "field:stock.order_point,write_date:"
msgid "Write Date"
-msgstr "Fecha modificación"
+msgstr "Zapisano"
msgctxt "field:stock.order_point,write_uid:"
msgid "Write User"
-msgstr "Usuario modificación"
+msgstr "Zapisal"
+
+msgctxt "field:stock.shipment.internal.create.start,id:"
+msgid "ID"
+msgstr "ID"
msgctxt "model:ir.action,name:act_order_point_form"
msgid "Order Points"
-msgstr "Reglas de abastecimiento"
+msgstr "Točke naročanja"
msgctxt "model:ir.action,name:act_purchase_form"
msgid "Purchases"
-msgstr "Compras"
+msgstr "Nabavni nalogi"
msgctxt "model:ir.action,name:act_purchase_request_create"
msgid "Create Purchase Requests"
-msgstr "Crear solicitudes de compra"
+msgstr "Izdelava nabavnih zahtevkov"
msgctxt "model:ir.action,name:act_purchase_request_form"
msgid "Purchase Requests"
-msgstr "Solicitudes de compra"
+msgstr "Nabavni zahtevki"
+
+msgctxt "model:ir.action,name:act_shipment_internal_create"
+msgid "Create Internal Shipments"
+msgstr "Izdelava notranjih odpremnic"
msgctxt "model:ir.action,name:wizard_create_purchase"
msgid "Create Purchase"
-msgstr "Crear compra"
+msgstr "Izdelava nabavnega naloga"
msgctxt ""
"model:ir.action.act_window.domain,name:act_purchase_request_form_domain_all"
msgid "All"
-msgstr "Todo"
+msgstr "Vse"
msgctxt ""
"model:ir.action.act_window.domain,name:act_purchase_request_form_domain_draft"
msgid "Draft"
-msgstr "Borrador"
+msgstr "Osnutki"
msgctxt "model:ir.cron,name:cron_generate_request"
msgid "Generate Purchase Requests"
-msgstr "Generar solicitudes de compra"
+msgstr "Izdelava nabavnih zahtevkov"
msgctxt "model:ir.cron,name:cron_shipment_iternal"
msgid "Generate Internal Shipments"
-msgstr "Generar envíos internos"
+msgstr "Izdelava notranjih odpremnic"
msgctxt "model:ir.ui.menu,name:menu_order_point_form"
msgid "Order Points"
-msgstr "Reglas de abastecimiento"
+msgstr "Točke naročanja"
msgctxt "model:ir.ui.menu,name:menu_purchase_request_create"
msgid "Create Purchase Requests"
-msgstr "Crear solicitudes de compra"
+msgstr "Izdelava nabavnih zahtevkov"
msgctxt "model:ir.ui.menu,name:menu_purchase_request_form"
msgid "Purchase Requests"
-msgstr "Solicitudes de compra"
+msgstr "Nabavni zahtevki"
+
+msgctxt "model:ir.ui.menu,name:menu_shipment_internal_create"
+msgid "Create Internal Shipments"
+msgstr "Izdelava notranjih odpremnic"
msgctxt "model:purchase.request,name:"
msgid "Purchase Request"
-msgstr "Solicitud de compra"
+msgstr "Nabavni zahtevek"
msgctxt "model:purchase.request.create.start,name:"
msgid "Create Purchase Request"
-msgstr "Crear solicitud de compra"
+msgstr "Izdelava nabavnega zahtevka"
msgctxt "model:purchase.request.create_purchase.ask_party,name:"
msgid "Create Purchase Ask Party"
-msgstr "Crear compra - Petición de tercero"
+msgstr "Izdelava nabavnega naloga: Stranka"
msgctxt "model:purchase.request.create_purchase.ask_term,name:"
msgid "Create Purchase Ask Term"
-msgstr "Crear compra - Petición de plazo"
+msgstr "Izdelava nabavnega naloga: Plačilni rok"
msgctxt "model:res.group,name:group_purchase_request"
msgid "Purchase Request"
-msgstr "Solicitud de compra"
+msgstr "Nabava - zahtevki"
msgctxt "model:res.user,name:user_generate_request"
msgid "Cron Purchase Request"
-msgstr "Programador de solicitud de compra"
+msgstr "Razporejevalnik nabavnih zahtevkov"
msgctxt "model:res.user,name:user_generate_shipment_internal"
msgid "Cron Intenal Shipment"
-msgstr "Programador de envío interno"
+msgstr "Razporejevalnik notranjih odpremnic"
msgctxt "model:stock.order_point,name:"
msgid "Order Point"
-msgstr "Regla de abastecimiento"
+msgstr "Točka naročanja"
-msgctxt "selection:purchase.request,origin:"
-msgid "Order Point"
-msgstr "Regla de abastecimiento"
+msgctxt "model:stock.shipment.internal.create.start,name:"
+msgid "Create Shipment Internal"
+msgstr "Izdelava notranje odpremnice"
msgctxt "selection:purchase.request,state:"
msgid "Cancel"
-msgstr "Cancelar"
+msgstr "Preklicano"
msgctxt "selection:purchase.request,state:"
msgid "Done"
-msgstr "Realizada"
+msgstr "Zaključeno"
msgctxt "selection:purchase.request,state:"
msgid "Draft"
-msgstr "Borrador"
+msgstr "Osnutek"
msgctxt "selection:purchase.request,state:"
msgid "Purchased"
-msgstr "Comprado"
+msgstr "Nabavljeno"
msgctxt "selection:stock.order_point,type:"
msgid "Internal"
@@ -340,76 +360,92 @@ msgstr "Interno"
msgctxt "selection:stock.order_point,type:"
msgid "Purchase"
-msgstr "Compra"
+msgstr "Nabavni nalog"
msgctxt "view:purchase.request.create.start:"
msgid "Create Purchase Request"
-msgstr "Crear solicitud de compra"
+msgstr "Izdelava nabavnega zahtevka"
msgctxt "view:purchase.request.create.start:"
msgid "Create Purchase Request?"
-msgstr "¿Crear solicitud de compra?"
+msgstr "Izdelava nabavnega zahtevka?"
msgctxt "view:purchase.request.create_purchase.ask_party:"
msgid "Create Purchase: Missing Supplier"
-msgstr "Crear compra: sin proveedor"
+msgstr "Izdelava nabavnega naloga: Dobavitelj manjka"
msgctxt "view:purchase.request.create_purchase.ask_term:"
msgid "Create Purchase: Missing Payment Term"
-msgstr "Crear compra: sin término de pago"
+msgstr "Izdelava nabavnega naloga: Plačilni rok manjka"
msgctxt "view:purchase.request:"
msgid "Product Info"
-msgstr "Información del producto"
+msgstr "Podatek o izdelku"
msgctxt "view:purchase.request:"
msgid "Purchase Request"
-msgstr "Solicitud de compra"
+msgstr "Nabavni zahtevek"
msgctxt "view:purchase.request:"
msgid "Purchase Requests"
-msgstr "Solicitudes de compra"
+msgstr "Nabavni zahtevki"
msgctxt "view:purchase.request:"
msgid "Supply Info"
-msgstr "Información del suministro"
+msgstr "Podatek o dobavi"
msgctxt "view:stock.order_point:"
msgid "Order Point"
-msgstr "Regla de abastecimiento"
+msgstr "Točka naročanja"
msgctxt "view:stock.order_point:"
msgid "Order Point Type"
-msgstr "Tipo de regla de abastecimiento"
+msgstr "Tip točke naročanja"
msgctxt "view:stock.order_point:"
msgid "Order Points"
-msgstr "Reglas de abastecimiento"
+msgstr "Točke naročanja"
msgctxt "view:stock.order_point:"
msgid "Product Info"
-msgstr "Información del producto"
+msgstr "Podatek o izdelku"
+
+msgctxt "view:stock.shipment.internal.create.start:"
+msgid "Create Internal Shipments"
+msgstr "Izdelava notranjih odpremnic"
+
+msgctxt "view:stock.shipment.internal.create.start:"
+msgid "Create Internal Shipments?"
+msgstr "Izdelava notranjih odpremnic?"
msgctxt "wizard_button:purchase.request.create,start,create_:"
msgid "Create"
-msgstr "Crear"
+msgstr "Ustvari"
msgctxt "wizard_button:purchase.request.create,start,end:"
msgid "Cancel"
-msgstr "Cancelar"
+msgstr "Prekliči"
msgctxt "wizard_button:purchase.request.create_purchase,ask_party,end:"
msgid "Cancel"
-msgstr "Cancelar"
+msgstr "Prekliči"
msgctxt "wizard_button:purchase.request.create_purchase,ask_party,start:"
msgid "Continue"
-msgstr "Continuar"
+msgstr "Naprej"
msgctxt "wizard_button:purchase.request.create_purchase,ask_term,end:"
msgid "Cancel"
-msgstr "Cancelar"
+msgstr "Prekliči"
msgctxt "wizard_button:purchase.request.create_purchase,ask_term,start:"
msgid "Continue"
-msgstr "Continuar"
+msgstr "Naprej"
+
+msgctxt "wizard_button:stock.shipment.internal.create,start,create_:"
+msgid "Create"
+msgstr "Ustvari"
+
+msgctxt "wizard_button:stock.shipment.internal.create,start,end:"
+msgid "Cancel"
+msgstr "Prekliči"
diff --git a/order_point.py b/order_point.py
index 75ff205..360b334 100644
--- a/order_point.py
+++ b/order_point.py
@@ -3,7 +3,7 @@
from trytond.model import ModelView, ModelSQL, fields
from trytond.pyson import If, Equal, Eval, Not, In, Get
from trytond.transaction import Transaction
-from trytond.backend import TableHandler
+from trytond import backend
__all__ = ['OrderPoint']
@@ -63,7 +63,7 @@ class OrderPoint(ModelSQL, ModelView):
company = fields.Many2One('company.company', 'Company', required=True,
domain=[
('id', If(In('company', Eval('context', {})), '=', '!='),
- Get(Eval('context', {}), 'company', 0)),
+ Eval('context', {}).get('company', -1)),
])
unit = fields.Function(fields.Many2One('product.uom', 'Unit'), 'get_unit')
unit_digits = fields.Function(fields.Integer('Unit Digits'),
@@ -87,6 +87,7 @@ class OrderPoint(ModelSQL, ModelView):
@classmethod
def __register__(cls, module_name):
+ TableHandler = backend.get('TableHandler')
cursor = Transaction().cursor
# Migration from 2.2
table = TableHandler(cursor, cls, module_name)
diff --git a/purchase_request.py b/purchase_request.py
index 8f1371e..f6362cc 100644
--- a/purchase_request.py
+++ b/purchase_request.py
@@ -55,7 +55,7 @@ class PurchaseRequest(ModelSQL, ModelView):
company = fields.Many2One('company.company', 'Company', required=True,
readonly=True, domain=[
('id', If(In('company', Eval('context', {})), '=', '!='),
- Get(Eval('context', {}), 'company', 0)),
+ Eval('context', {}).get('company', -1)),
])
origin = fields.Reference('Origin', selection='origin_get', readonly=True,
required=True)
@@ -73,6 +73,8 @@ class PurchaseRequest(ModelSQL, ModelView):
cls._error_messages.update({
'create_request': ('Purchase requests are only created '
'by the system.'),
+ 'delete_purchase_line': ('You can not delete purchased '
+ 'request.'),
})
cls._sql_constraints += [
('check_purchase_request_quantity', 'CHECK(quantity > 0)',
@@ -82,12 +84,14 @@ class PurchaseRequest(ModelSQL, ModelView):
@classmethod
def __register__(cls, module_name):
cursor = Transaction().cursor
+ sql_table = cls.__table__()
super(PurchaseRequest, cls).__register__(module_name)
# Migration from 2.0: empty order point origin is -1 instead of 0
- cursor.execute('UPDATE "%s" '
- 'SET origin = %%s WHERE origin = %%s' % cls._table,
- ('stock.order_point,-1', 'stock.order_point,0'))
+ cursor.execute(*sql_table.update(
+ columns=[sql_table.origin],
+ values=['stock.order_point,-1'],
+ where=sql_table.origin == 'stock.order_point,0'))
def get_rec_name(self, name):
if self.warehouse:
@@ -190,9 +194,9 @@ class PurchaseRequest(ModelSQL, ModelView):
with Transaction().set_context(forecast=True,
stock_date_end=min_date or datetime.date.max):
pbl = Product.products_by_location(warehouse_ids,
- product_ids, with_childs=True, skip_zero=False)
+ product_ids, with_childs=True)
for warehouse_id in warehouse_ids:
- min_date_qties = dict((x, pbl.pop((warehouse_id, x)))
+ min_date_qties = dict((x, pbl.pop((warehouse_id, x), 0))
for x in product_ids)
# Search for shortage between min-max
shortages = cls.get_shortage(warehouse_id, product_ids,
@@ -431,7 +435,7 @@ class PurchaseRequest(ModelSQL, ModelView):
with Transaction().set_context(stock_date_start=current_date,
stock_date_end=current_date):
pbl = Product.products_by_location([location_id],
- product_ids, with_childs=True, skip_zero=False)
+ product_ids, with_childs=True)
for key, qty in pbl.iteritems():
_, product_id = key
current_qties[product_id] += qty
@@ -450,6 +454,12 @@ class PurchaseRequest(ModelSQL, ModelView):
cls.raise_user_error('create_request')
return super(PurchaseRequest, cls).create(vlist)
+ @classmethod
+ def delete(cls, requests):
+ if any(r.purchase_line for r in requests):
+ cls.raise_user_error('delete_purchase_line')
+ super(PurchaseRequest, cls).delete(requests)
+
class CreatePurchaseRequestStart(ModelView):
'Create Purchase Request'
@@ -466,8 +476,28 @@ class CreatePurchaseRequest(Wizard):
])
create_ = StateAction('stock_supply.act_purchase_request_form')
+ @classmethod
+ def __setup__(cls):
+ super(CreatePurchaseRequest, cls).__setup__()
+ cls._error_messages.update({
+ 'late_supplier_moves': ('There are some late supplier moves, '
+ 'are you sure to ignore them?'),
+ })
+
def do_create_(self, action):
- PurchaseRequest = Pool().get('purchase.request')
+ pool = Pool()
+ PurchaseRequest = pool.get('purchase.request')
+ Move = pool.get('stock.move')
+ Date = pool.get('ir.date')
+ today = Date.today()
+ if Move.search([
+ ('from_location.type', '=', 'supplier'),
+ ('to_location.type', '=', 'storage'),
+ ('state', '=', 'draft'),
+ ('planned_date', '<', today),
+ ], order=[]):
+ self.raise_user_warning('%s@%s' % (self.__name__, today),
+ 'late_supplier_moves')
PurchaseRequest.generate_requests()
return action, {}
diff --git a/purchase_request.xml b/purchase_request.xml
index dc836b5..c8b5e8c 100644
--- a/purchase_request.xml
+++ b/purchase_request.xml
@@ -195,5 +195,22 @@ this repository contains the full copyright notices and license terms. -->
<field name="function">generate_requests</field>
</record>
+ <record model="ir.model.access" id="access_purchase_purchase_request">
+ <field name="model" search="[('model', '=', 'purchase.purchase')]"/>
+ <field name="group" ref="group_purchase_request"/>
+ <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_purchase_line_purchase_request">
+ <field name="model" search="[('model', '=', 'purchase.line')]"/>
+ <field name="group" ref="group_purchase_request"/>
+ <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>
+
</data>
</tryton>
diff --git a/setup.py b/setup.py
index 014db6c..d61c602 100644
--- a/setup.py
+++ b/setup.py
@@ -21,7 +21,7 @@ major_version, minor_version, _ = info.get('version', '0.0.1').split('.', 2)
major_version = int(major_version)
minor_version = int(minor_version)
-requires = []
+requires = ['python-sql']
for dep in info.get('depends', []):
if not re.match(r'(ir|res|webdav)(\W|$)', dep):
requires.append('trytond_%s >= %s.%s, < %s.%s' %
@@ -64,6 +64,7 @@ setup(name='trytond_stock_supply',
'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/shipment.py b/shipment.py
index dad1f39..f1cfff7 100644
--- a/shipment.py
+++ b/shipment.py
@@ -1,10 +1,15 @@
#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 sql import Table
+from sql.functions import Overlay, Position
+
from trytond.model import ModelView, ModelSQL
+from trytond.wizard import Wizard, StateView, StateAction, Button
from trytond.transaction import Transaction
from trytond.pool import Pool, PoolMeta
-__all__ = ['ShipmentInternal']
+__all__ = ['ShipmentInternal',
+ 'CreateShipmentInternalStart', 'CreateShipmentInternal']
__metaclass__ = PoolMeta
@@ -14,15 +19,23 @@ class ShipmentInternal(ModelSQL, ModelView):
@classmethod
def __register__(cls, module_name):
cursor = Transaction().cursor
+ model_data = Table('ir_model_data')
+ model = Table('ir_model')
# Migration from 1.2: packing renamed into shipment
- cursor.execute("UPDATE ir_model_data "
- "SET fs_id = REPLACE(fs_id, 'packing', 'shipment') "
- "WHERE fs_id like '%%packing%%' AND module = %s",
- (module_name,))
- cursor.execute("UPDATE ir_model "
- "SET model = REPLACE(model, 'packing', 'shipment') "
- "WHERE model like '%%packing%%' AND module = %s",
- (module_name,))
+ cursor.execute(*model_data.update(
+ columns=[model_data.fs_id],
+ values=[Overlay(model_data.fs_id, 'shipment',
+ Position('packing', model_data.fs_id),
+ len('packing'))],
+ where=model_data.fs_id.like('%packing%')
+ & (model_data.module == module_name)))
+ cursor.execute(*model.update(
+ columns=[model.model],
+ values=[Overlay(model.model, 'shipment',
+ Position('packing', model.model),
+ len('packing'))],
+ where=model.model.like('%packing%')
+ & (model.module == module_name)))
super(ShipmentInternal, cls).__register__(module_name)
@classmethod
@@ -33,7 +46,6 @@ class ShipmentInternal(ModelSQL, ModelView):
"""
pool = Pool()
OrderPoint = pool.get('stock.order_point')
- Uom = pool.get('product.uom')
Product = pool.get('product.product')
Date = pool.get('ir.date')
User = pool.get('res.user')
@@ -50,7 +62,8 @@ class ShipmentInternal(ModelSQL, ModelView):
id2product[op.product.id] = op.product
location_ids.append(op.storage_location.id)
- with Transaction().set_context(stock_date_end=today):
+ # TODO Allow to compute for other future date
+ with Transaction().set_context(forecast=True, stock_date_end=today):
pbl = Product.products_by_location(location_ids,
list(id2product.iterkeys()), with_childs=True)
@@ -64,33 +77,15 @@ class ShipmentInternal(ModelSQL, ModelView):
op.product.id)
moves[key] = op.max_quantity - qty
- # Compare with existing draft shipments
- shipments = cls.search([
- ('state', '=', 'draft'),
- ['OR',
- ('planned_date', '<=', today),
- ('planned_date', '=', None),
- ],
- ])
- for shipment in shipments:
- for move in shipment.moves:
- key = (shipment.from_location.id,
- shipment.to_location.id,
- move.product.id)
- if key not in moves:
- continue
- quantity = Uom.compute_qty(move.uom, move.quantity,
- id2product[move.product.id].default_uom)
- moves[key] = max(0, moves[key] - quantity)
-
# Group moves by {from,to}_location
- shipments = {}
+ to_create = {}
for key, qty in moves.iteritems():
from_location, to_location, product = key
- shipments.setdefault(
+ to_create.setdefault(
(from_location, to_location), []).append((product, qty))
# Create shipments and moves
- for locations, moves in shipments.iteritems():
+ shipments = []
+ for locations, moves in to_create.iteritems():
from_location, to_location = locations
shipment = cls(
from_location=from_location,
@@ -109,3 +104,30 @@ class ShipmentInternal(ModelSQL, ModelView):
company=user_record.company,
))
shipment.save()
+ shipments.append(shipment)
+ cls.wait(shipments)
+ return shipments
+
+
+class CreateShipmentInternalStart(ModelView):
+ 'Create Shipment Internal'
+ __name__ = 'stock.shipment.internal.create.start'
+
+
+class CreateShipmentInternal(Wizard):
+ 'Create Shipment Internal'
+ __name__ = 'stock.shipment.internal.create'
+ start = StateView('stock.shipment.internal.create.start',
+ 'stock_supply.shipment_internal_create_start_view_form', [
+ Button('Cancel', 'end', 'tryton-cancel'),
+ Button('Create', 'create_', 'tryton-ok', default=True),
+ ])
+ create_ = StateAction('stock.act_shipment_internal_form')
+
+ def do_create_(self, action):
+ ShipmentInternal = Pool().get('stock.shipment.internal')
+ ShipmentInternal.generate_internal_shipment()
+ return action, {}
+
+ def transition_create_(self):
+ return 'end'
diff --git a/shipment.xml b/shipment.xml
index e1a1a07..7963904 100644
--- a/shipment.xml
+++ b/shipment.xml
@@ -28,5 +28,23 @@ this repository contains the full copyright notices and license terms. -->
<field name="function">generate_internal_shipment</field>
</record>
+ <record model="ir.action.wizard" id="act_shipment_internal_create">
+ <field name="name">Create Internal Shipments</field>
+ <field name="wiz_name">stock.shipment.internal.create</field>
+ </record>
+ <record model="ir.ui.view"
+ id="shipment_internal_create_start_view_form">
+ <field name="model">stock.shipment.internal.create.start</field>
+ <field name="type">form</field>
+ <field name="name">stock_shipment_internal_create_start_form</field>
+ </record>
+ <menuitem parent="stock.menu_shipment_internal_form" sequence="10"
+ action="act_shipment_internal_create"
+ id="menu_shipment_internal_create"/>
+ <record model="ir.ui.menu-res.group"
+ id="menu_shipment_internal_form_group_purchase_request">
+ <field name="menu" ref="menu_shipment_internal_create"/>
+ <field name="group" ref="stock.group_stock_admin"/>
+ </record>
</data>
</tryton>
diff --git a/tests/__init__.py b/tests/__init__.py
index 19ea390..25b15ed 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_supply import suite
+
+__all__ = ['suite']
diff --git a/tests/test_stock_supply.py b/tests/test_stock_supply.py
index 79809aa..1d78c0a 100644
--- a/tests/test_stock_supply.py
+++ b/tests/test_stock_supply.py
@@ -17,6 +17,7 @@ import trytond.tests.test_tryton
from trytond.tests.test_tryton import POOL, DB_NAME, USER, CONTEXT, test_view,\
test_depends
from trytond.transaction import Transaction
+from trytond.backend.sqlite.database import Database as SQLiteDatabase
DATES = [
# purchase date, delivery time, supply date
@@ -136,6 +137,16 @@ class StockSupplyTestCase(unittest.TestCase):
return product_supplier
+def doctest_dropdb(test):
+ database = SQLiteDatabase().connect()
+ cursor = database.cursor(autocommit=True)
+ try:
+ database.drop(cursor, ':memory:')
+ cursor.commit()
+ finally:
+ cursor.close()
+
+
def suite():
suite = trytond.tests.test_tryton.suite()
from trytond.modules.company.tests import test_company
@@ -148,6 +159,9 @@ def suite():
suite.addTest(test)
suite.addTests(unittest.TestLoader().loadTestsFromTestCase(
StockSupplyTestCase))
+ suite.addTests(doctest.DocFileSuite('scenario_stock_internal_supply.rst',
+ setUp=doctest_dropdb, tearDown=doctest_dropdb, encoding='utf-8',
+ optionflags=doctest.REPORT_ONLY_FIRST_FAILURE))
return suite
if __name__ == '__main__':
diff --git a/tryton.cfg b/tryton.cfg
index 319cde5..19267e0 100644
--- a/tryton.cfg
+++ b/tryton.cfg
@@ -1,5 +1,5 @@
[tryton]
-version=2.8.1
+version=3.0.0
depends:
account
ir
diff --git a/trytond_stock_supply.egg-info/PKG-INFO b/trytond_stock_supply.egg-info/PKG-INFO
index a4855fb..94893db 100644
--- a/trytond_stock_supply.egg-info/PKG-INFO
+++ b/trytond_stock_supply.egg-info/PKG-INFO
@@ -1,12 +1,12 @@
Metadata-Version: 1.1
Name: trytond-stock-supply
-Version: 2.8.1
+Version: 3.0.0
Summary: Tryton module for stock supply
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_supply
====================
@@ -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_supply.egg-info/SOURCES.txt b/trytond_stock_supply.egg-info/SOURCES.txt
index dbd7359..f49268f 100644
--- a/trytond_stock_supply.egg-info/SOURCES.txt
+++ b/trytond_stock_supply.egg-info/SOURCES.txt
@@ -27,6 +27,7 @@ locale/es_ES.po
locale/fr_FR.po
locale/nl_NL.po
locale/ru_RU.po
+locale/sl_SI.po
trytond_stock_supply.egg-info/PKG-INFO
trytond_stock_supply.egg-info/SOURCES.txt
trytond_stock_supply.egg-info/dependency_links.txt
@@ -40,4 +41,5 @@ view/purchase_request_create_purchase_ask_party_form.xml
view/purchase_request_create_purchase_ask_term_form.xml
view/purchase_request_create_start_form.xml
view/purchase_request_form.xml
-view/purchase_request_tree.xml
\ No newline at end of file
+view/purchase_request_tree.xml
+view/stock_shipment_internal_create_start_form.xml
\ No newline at end of file
diff --git a/trytond_stock_supply.egg-info/requires.txt b/trytond_stock_supply.egg-info/requires.txt
index c6176f5..32963a6 100644
--- a/trytond_stock_supply.egg-info/requires.txt
+++ b/trytond_stock_supply.egg-info/requires.txt
@@ -1,6 +1,7 @@
-trytond_account >= 2.8, < 2.9
-trytond_party >= 2.8, < 2.9
-trytond_product >= 2.8, < 2.9
-trytond_purchase >= 2.8, < 2.9
-trytond_stock >= 2.8, < 2.9
-trytond >= 2.8, < 2.9
\ No newline at end of file
+python-sql
+trytond_account >= 3.0, < 3.1
+trytond_party >= 3.0, < 3.1
+trytond_product >= 3.0, < 3.1
+trytond_purchase >= 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/stock_shipment_internal_create_start_form.xml b/view/stock_shipment_internal_create_start_form.xml
new file mode 100644
index 0000000..1b7fc1c
--- /dev/null
+++ b/view/stock_shipment_internal_create_start_form.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. -->
+<form string="Create Internal Shipments" col="2">
+ <image name="tryton-dialog-information" xexpand="0" xfill="0"/>
+ <label string="Create Internal Shipments?" id="create"
+ yalign="0.0" xalign="0.0" xexpand="1"/>
+</form>
commit 87bc9c24a9b98a3f6eef5080dd0642dc10ca3c30
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Tue Aug 6 16:21:15 2013 +0200
Releasing debian version 2.8.1-2.
diff --git a/debian/changelog b/debian/changelog
index c4070c5..191dcbb 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+tryton-modules-stock-supply (2.8.1-2) 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:44 +0200
+
tryton-modules-stock-supply (2.8.1-1) unstable; urgency=low
* Merging upstream version 2.8.1.
commit 44af583efe87683b3c0de71f87e837c751d60824
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 a270e795f57f068173c5bb46b75a34667c9ab478
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Mon Jun 10 14:15:04 2013 +0200
Releasing debian version 2.8.1-1.
diff --git a/debian/changelog b/debian/changelog
index 796b74d..c4070c5 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+tryton-modules-stock-supply (2.8.1-1) unstable; urgency=low
+
+ * Merging upstream version 2.8.1.
+
+ -- Mathias Behrle <mathiasb at m9s.biz> Mon, 10 Jun 2013 13:52:33 +0200
+
tryton-modules-stock-supply (2.8.0-2) unstable; urgency=low
* Adding doc/ to docs file.
commit 5ed952989dda9810c9053e8a28da21b1bf2bdee3
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Mon Jun 10 13:44:18 2013 +0200
Merging upstream version 2.8.1.
diff --git a/CHANGELOG b/CHANGELOG
index 5858974..85acf08 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,6 @@
+Version 2.8.1 - 2013-06-09
+* Bug fixes (see mercurial logs for details)
+
Version 2.8.0 - 2013-04-22
* Bug fixes (see mercurial logs for details)
* find_best_supplier doesn't optimize anymore on the delivery delay
diff --git a/PKG-INFO b/PKG-INFO
index c06220b..576a69d 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: trytond_stock_supply
-Version: 2.8.0
+Version: 2.8.1
Summary: Tryton module for stock supply
Home-page: http://www.tryton.org/
Author: Tryton
diff --git a/shipment.py b/shipment.py
index c21553f..dad1f39 100644
--- a/shipment.py
+++ b/shipment.py
@@ -59,8 +59,8 @@ class ShipmentInternal(ModelSQL, ModelView):
for op in order_points:
qty = pbl.get((op.storage_location.id, op.product.id), 0)
if qty < op.min_quantity:
- key = (op.storage_location.id,
- op.provisioning_location.id,
+ key = (op.provisioning_location.id,
+ op.storage_location.id,
op.product.id)
moves[key] = op.max_quantity - qty
@@ -74,8 +74,8 @@ class ShipmentInternal(ModelSQL, ModelView):
])
for shipment in shipments:
for move in shipment.moves:
- key = (shipment.to_location.id,
- shipment.from_location.id,
+ key = (shipment.from_location.id,
+ shipment.to_location.id,
move.product.id)
if key not in moves:
continue
diff --git a/tryton.cfg b/tryton.cfg
index ca800af..319cde5 100644
--- a/tryton.cfg
+++ b/tryton.cfg
@@ -1,5 +1,5 @@
[tryton]
-version=2.8.0
+version=2.8.1
depends:
account
ir
diff --git a/trytond_stock_supply.egg-info/PKG-INFO b/trytond_stock_supply.egg-info/PKG-INFO
index a962b0f..a4855fb 100644
--- a/trytond_stock_supply.egg-info/PKG-INFO
+++ b/trytond_stock_supply.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: trytond-stock-supply
-Version: 2.8.0
+Version: 2.8.1
Summary: Tryton module for stock supply
Home-page: http://www.tryton.org/
Author: Tryton
commit 9261c53f463ced76d700c5163a291a1dad36c094
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Fri May 31 19:57:37 2013 +0200
Releasing debian version 2.8.0-2.
diff --git a/debian/changelog b/debian/changelog
index 74444b6..796b74d 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,11 @@
+tryton-modules-stock-supply (2.8.0-2) unstable; urgency=low
+
+ * Adding doc/ to docs file.
+ * 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:30 +0200
+
tryton-modules-stock-supply (2.8.0-1) experimental; urgency=low
* Merging upstream version 2.8.0.
commit 63968cc244d453ca64b07c7302e4818ec592bb3c
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 5c31444c6f9ee12dbe2b01efcfb17fea94e2014c
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Wed May 29 17:01:48 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-supply.docs b/debian/docs
similarity index 100%
rename from debian/tryton-modules-stock-supply.docs
rename to debian/docs
commit c69a38eb2a8ecbbc68dfeccb9327a207d8c7ebec
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Tue May 14 18:54:41 2013 +0200
Adding doc/ to docs file.
diff --git a/debian/tryton-modules-stock-supply.docs b/debian/tryton-modules-stock-supply.docs
new file mode 100644
index 0000000..a2e6bd4
--- /dev/null
+++ b/debian/tryton-modules-stock-supply.docs
@@ -0,0 +1 @@
+doc/
commit ecdfeeb8dc41e9afb7c86938906514feca82527c
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 a4ae9fe..74444b6 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+tryton-modules-stock-supply (2.8.0-1) experimental; urgency=low
+
+ * Merging upstream version 2.8.0.
+ * Updating copyright.
+
+ -- Mathias Behrle <mathiasb at m9s.biz> Thu, 02 May 2013 15:21:09 +0200
+
tryton-modules-stock-supply (2.6.0-4) experimental; urgency=low
* Removing Daniel from Uploaders. Thanks for your work! (Closes: #704405).
commit ee8e9b3c6e51dab8512655173ceaac1b9655f0b5
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 3c647d6..115c003 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -1,9 +1,9 @@
Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Files: *
-Copyright: 2008-2012 Cédric Krier
- 2008-2012 Bertrand Chenal
- 2008-2012 B2CK SPRL
+Copyright: 2008-2013 Cédric Krier
+ 2008-2013 Bertrand Chenal
+ 2008-2013 B2CK SPRL
License: GPL-3+
Files: debian/*
commit 26da0bfbea26b68656dabc3227933bb58615ef30
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Thu May 2 00:38:17 2013 +0200
Merging upstream version 2.8.0.
diff --git a/CHANGELOG b/CHANGELOG
index 0a733df..5858974 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,7 @@
+Version 2.8.0 - 2013-04-22
+* Bug fixes (see mercurial logs for details)
+* find_best_supplier doesn't optimize anymore on the delivery delay
+
Version 2.6.0 - 2012-10-22
* Bug fixes (see mercurial logs for details)
* Generate also purchase requests for assets
diff --git a/COPYRIGHT b/COPYRIGHT
index 2057c72..9192c97 100644
--- a/COPYRIGHT
+++ b/COPYRIGHT
@@ -1,6 +1,6 @@
-Copyright (C) 2008-2012 Cédric Krier.
-Copyright (C) 2008-2012 Bertrand Chenal.
-Copyright (C) 2008-2012 B2CK SPRL.
+Copyright (C) 2008-2013 Cédric Krier.
+Copyright (C) 2008-2013 Bertrand Chenal.
+Copyright (C) 2008-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 97a9596..2569955 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 3cf5a31..c06220b 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,12 +1,12 @@
-Metadata-Version: 1.0
+Metadata-Version: 1.1
Name: trytond_stock_supply
-Version: 2.6.0
+Version: 2.8.0
Summary: Tryton module for stock supply
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_supply
====================
@@ -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 0217d67..6609784 100644
--- a/locale/bg_BG.po
+++ b/locale/bg_BG.po
@@ -3,12 +3,12 @@ msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "error:purchase.request.create_purchase:"
-msgid "Purchase price is missing for product: %s (id: %s)!"
-msgstr "Липсва покупната цена за продукт: %s (id: %s)!"
+msgid "Purchase price is missing for product \"%s\"."
+msgstr ""
msgctxt "error:purchase.request.create_purchase:"
-msgid "This price is necessary for creating purchase."
-msgstr "Цената е необходима при създаване на покупка"
+msgid "This price is necessary for creating purchases."
+msgstr ""
msgctxt "error:purchase.request:"
msgid "Purchase requests are only created by the system."
@@ -248,14 +248,21 @@ msgctxt "model:ir.action,name:act_purchase_request_form"
msgid "Purchase Requests"
msgstr "Заявки за покупка"
-msgctxt "model:ir.action,name:act_purchase_request_form_draft"
-msgid "Draft Purchase Requests"
-msgstr "Проект на заявка за покупка"
-
msgctxt "model:ir.action,name:wizard_create_purchase"
msgid "Create Purchase"
msgstr "Създаване на покупка"
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_purchase_request_form_domain_all"
+msgid "All"
+msgstr ""
+
+#, fuzzy
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_purchase_request_form_domain_draft"
+msgid "Draft"
+msgstr "Проект"
+
msgctxt "model:ir.cron,name:cron_generate_request"
msgid "Generate Purchase Requests"
msgstr "Генериране на заявки за покупка"
@@ -276,10 +283,6 @@ msgctxt "model:ir.ui.menu,name:menu_purchase_request_form"
msgid "Purchase Requests"
msgstr "Заявки за покупки"
-msgctxt "model:ir.ui.menu,name:menu_purchase_request_form_draft"
-msgid "Draft Purchase Requests"
-msgstr "Проект на заявки за покупка"
-
msgctxt "model:purchase.request,name:"
msgid "Purchase Request"
msgstr "Заявка за покупка"
diff --git a/locale/ca_ES.po b/locale/ca_ES.po
index 7405001..ec1bd45 100644
--- a/locale/ca_ES.po
+++ b/locale/ca_ES.po
@@ -3,12 +3,12 @@ msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "error:purchase.request.create_purchase:"
-msgid "Purchase price is missing for product: %s (id: %s)!"
-msgstr "Falta el preu de compra per al producte: %s (id: %s)"
+msgid "Purchase price is missing for product \"%s\"."
+msgstr "No es troba el preu de compra del producte \"%s\"."
msgctxt "error:purchase.request.create_purchase:"
-msgid "This price is necessary for creating purchase."
-msgstr "Es necessita aquest preu per crear la compra."
+msgid "This price is necessary for creating purchases."
+msgstr "Aquest preu és necessari per crear compres."
msgctxt "error:purchase.request:"
msgid "Purchase requests are only created by the system."
@@ -33,7 +33,7 @@ msgid ""
"You can not define two order points on the same product with opposite "
"locations."
msgstr ""
-"No pot definir dues regles d'estoc mínim en el mateix producte amb "
+"No podeu definir dues regles d'estoc mínim en el mateix producte amb "
"ubicacions oposades."
msgctxt "field:product.product,order_points:"
@@ -206,7 +206,7 @@ msgstr "Nom"
msgctxt "field:stock.order_point,storage_location:"
msgid "Storage Location"
-msgstr "Ubicació del magatzem"
+msgstr "Ubicació interna"
msgctxt "field:stock.order_point,type:"
msgid "Type"
@@ -242,20 +242,26 @@ msgstr "Compres"
msgctxt "model:ir.action,name:act_purchase_request_create"
msgid "Create Purchase Requests"
-msgstr "Crear Ordres de producció"
+msgstr "Crea sol·licituds de compra"
msgctxt "model:ir.action,name:act_purchase_request_form"
msgid "Purchase Requests"
msgstr "Sol·licituds de compra"
-msgctxt "model:ir.action,name:act_purchase_request_form_draft"
-msgid "Draft Purchase Requests"
-msgstr "Ordres de producció en esborrany"
-
msgctxt "model:ir.action,name:wizard_create_purchase"
msgid "Create Purchase"
msgstr "Crear una compra"
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_purchase_request_form_domain_all"
+msgid "All"
+msgstr "Tots"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_purchase_request_form_domain_draft"
+msgid "Draft"
+msgstr "Esborrany"
+
msgctxt "model:ir.cron,name:cron_generate_request"
msgid "Generate Purchase Requests"
msgstr "Generar peticions de compra"
@@ -270,16 +276,12 @@ msgstr "Regles d'estoc mínim"
msgctxt "model:ir.ui.menu,name:menu_purchase_request_create"
msgid "Create Purchase Requests"
-msgstr "Crear Ordres de producció"
+msgstr "Crea sol·licituds de compra"
msgctxt "model:ir.ui.menu,name:menu_purchase_request_form"
msgid "Purchase Requests"
msgstr "Sol·licituds de compra"
-msgctxt "model:ir.ui.menu,name:menu_purchase_request_form_draft"
-msgid "Draft Purchase Requests"
-msgstr "Ordres de producció en esborrany"
-
msgctxt "model:purchase.request,name:"
msgid "Purchase Request"
msgstr "Sol·licitud de compra"
@@ -373,10 +375,6 @@ msgid "Supply Info"
msgstr "Informació del subministrament"
msgctxt "view:stock.order_point:"
-msgid "Locations"
-msgstr "Ubicacions"
-
-msgctxt "view:stock.order_point:"
msgid "Order Point"
msgstr "Regla d'estoc mínim"
@@ -394,7 +392,7 @@ msgstr "Informació del producte"
msgctxt "wizard_button:purchase.request.create,start,create_:"
msgid "Create"
-msgstr "Crear"
+msgstr "Crea"
msgctxt "wizard_button:purchase.request.create,start,end:"
msgid "Cancel"
diff --git a/locale/cs_CZ.po b/locale/cs_CZ.po
index 345a38d..661f1ba 100644
--- a/locale/cs_CZ.po
+++ b/locale/cs_CZ.po
@@ -3,11 +3,11 @@ msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "error:purchase.request.create_purchase:"
-msgid "Purchase price is missing for product: %s (id: %s)!"
+msgid "Purchase price is missing for product \"%s\"."
msgstr ""
msgctxt "error:purchase.request.create_purchase:"
-msgid "This price is necessary for creating purchase."
+msgid "This price is necessary for creating purchases."
msgstr ""
msgctxt "error:purchase.request:"
@@ -244,14 +244,20 @@ msgctxt "model:ir.action,name:act_purchase_request_form"
msgid "Purchase Requests"
msgstr ""
-msgctxt "model:ir.action,name:act_purchase_request_form_draft"
-msgid "Draft Purchase Requests"
-msgstr ""
-
msgctxt "model:ir.action,name:wizard_create_purchase"
msgid "Create Purchase"
msgstr ""
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_purchase_request_form_domain_all"
+msgid "All"
+msgstr ""
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_purchase_request_form_domain_draft"
+msgid "Draft"
+msgstr ""
+
msgctxt "model:ir.cron,name:cron_generate_request"
msgid "Generate Purchase Requests"
msgstr ""
@@ -272,10 +278,6 @@ msgctxt "model:ir.ui.menu,name:menu_purchase_request_form"
msgid "Purchase Requests"
msgstr ""
-msgctxt "model:ir.ui.menu,name:menu_purchase_request_form_draft"
-msgid "Draft Purchase Requests"
-msgstr ""
-
msgctxt "model:purchase.request,name:"
msgid "Purchase Request"
msgstr ""
diff --git a/locale/de_DE.po b/locale/de_DE.po
index f09fc3f..a90322a 100644
--- a/locale/de_DE.po
+++ b/locale/de_DE.po
@@ -3,12 +3,12 @@ msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "error:purchase.request.create_purchase:"
-msgid "Purchase price is missing for product: %s (id: %s)!"
-msgstr "Fehlender Einkaufspreis für Artikel: %s (id: %s)!"
+msgid "Purchase price is missing for product \"%s\"."
+msgstr "Fehlender Einkaufspreis für Artikel \"%s\"."
msgctxt "error:purchase.request.create_purchase:"
-msgid "This price is necessary for creating purchase."
-msgstr "Dieser Preis wird für die Auftragserstellung benötigt!"
+msgid "This price is necessary for creating purchases."
+msgstr "Dieser Preis wird für die Einkaufserstellung benötigt."
msgctxt "error:purchase.request:"
msgid "Purchase requests are only created by the system."
@@ -32,7 +32,7 @@ msgid ""
"locations."
msgstr ""
"Für einen Artikel können keine verschiedenen Bestellpunkte mit "
-"unterschiedlichen Lagerstandorten erstellt werden!"
+"unterschiedlichen Lagerstandorten erstellt werden."
msgctxt "field:product.product,order_points:"
msgid "Order Points"
@@ -246,13 +246,19 @@ msgctxt "model:ir.action,name:act_purchase_request_form"
msgid "Purchase Requests"
msgstr "Bestellvorschläge"
-msgctxt "model:ir.action,name:act_purchase_request_form_draft"
-msgid "Draft Purchase Requests"
-msgstr "Entwürfe Bestellvorschläge"
-
msgctxt "model:ir.action,name:wizard_create_purchase"
msgid "Create Purchase"
-msgstr "Auftrag erstellen"
+msgstr "Verkauf erstellen"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_purchase_request_form_domain_all"
+msgid "All"
+msgstr "Alle"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_purchase_request_form_domain_draft"
+msgid "Draft"
+msgstr "Entwurf"
msgctxt "model:ir.cron,name:cron_generate_request"
msgid "Generate Purchase Requests"
@@ -274,10 +280,6 @@ msgctxt "model:ir.ui.menu,name:menu_purchase_request_form"
msgid "Purchase Requests"
msgstr "Bestellvorschläge"
-msgctxt "model:ir.ui.menu,name:menu_purchase_request_form_draft"
-msgid "Draft Purchase Requests"
-msgstr "Entwürfe (Bestellvorschläge)"
-
msgctxt "model:purchase.request,name:"
msgid "Purchase Request"
msgstr "Bestellvorschlag"
@@ -328,7 +330,7 @@ msgstr "Entwurf"
msgctxt "selection:purchase.request,state:"
msgid "Purchased"
-msgstr "Auftrag erstellt"
+msgstr "Auftrag erteilt"
msgctxt "selection:stock.order_point,type:"
msgid "Internal"
@@ -347,10 +349,6 @@ msgid "Create Purchase Request?"
msgstr "Bestellvorschlag erstellen?"
msgctxt "view:purchase.request.create_purchase.ask_party:"
-msgid ""
-msgstr ""
-
-msgctxt "view:purchase.request.create_purchase.ask_party:"
msgid "Create Purchase: Missing Supplier"
msgstr "Auftragerstellung: Fehlender Lieferant"
@@ -374,14 +372,6 @@ msgctxt "view:purchase.request:"
msgid "Supply Info"
msgstr "Info"
-msgctxt "view:purchase.request:"
-msgid "supply Info"
-msgstr "Info Lieferant"
-
-msgctxt "view:stock.order_point:"
-msgid "Locations"
-msgstr "Lagerorte"
-
msgctxt "view:stock.order_point:"
msgid "Order Point"
msgstr "Bestellpunkt"
diff --git a/locale/es_AR.po b/locale/es_AR.po
index db0a577..a68a77b 100644
--- a/locale/es_AR.po
+++ b/locale/es_AR.po
@@ -3,12 +3,12 @@ msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "error:purchase.request.create_purchase:"
-msgid "Purchase price is missing for product: %s (id: %s)!"
-msgstr "¡Falta el precio de compra para el producto: %s (id: %s)!"
+msgid "Purchase price is missing for product \"%s\"."
+msgstr "Falta el precio de compra del producto «%s»."
msgctxt "error:purchase.request.create_purchase:"
-msgid "This price is necessary for creating purchase."
-msgstr "Se necesita este precio para crear la compra."
+msgid "This price is necessary for creating purchases."
+msgstr "Este precio es necesario para crear compras."
msgctxt "error:purchase.request:"
msgid "Purchase requests are only created by the system."
@@ -16,7 +16,7 @@ msgstr "Las solicitudes de compra solo las crea el sistema."
msgctxt "error:purchase.request:"
msgid "The requested quantity must be greater than 0"
-msgstr "La cantidad solicitada debe ser mayor que 0"
+msgstr "La cantidad solicitada debe ser mayor que 0."
msgctxt "error:stock.order_point:"
msgid "Maximal quantity must be bigger than Minimal quantity"
@@ -24,19 +24,21 @@ msgstr "La cantidad máxima debe ser mayor que la mínima"
msgctxt "error:stock.order_point:"
msgid "Only one order point is allowed for each product-location pair."
-msgstr "Solo se permite un punto de orden por cada par de producto-ubicación."
+msgstr ""
+"Sólo se permite una regla de abastecimiento por cada combinación de "
+"producto-ubicación."
msgctxt "error:stock.order_point:"
msgid ""
"You can not define two order points on the same product with opposite "
"locations."
msgstr ""
-"No puede definir dos puntos de orden en el mismo producto con ubicaciones "
-"opuestas."
+"No puede definir dos reglas de abastecimiento en el mismo producto con "
+"ubicaciones opuestas."
msgctxt "field:product.product,order_points:"
msgid "Order Points"
-msgstr "Puntos de orden"
+msgstr "Reglas de abastecimiento"
msgctxt "field:purchase.request,company:"
msgid "Company"
@@ -116,7 +118,7 @@ msgstr "Almacén"
msgctxt "field:purchase.request,warehouse_required:"
msgid "Warehouse Required"
-msgstr "Almacén Obligatorio"
+msgstr "Almacén requerido"
msgctxt "field:purchase.request,write_date:"
msgid "Write Date"
@@ -160,7 +162,7 @@ msgstr "Proveedor"
msgctxt "field:purchase.request.create_purchase.ask_term,payment_term:"
msgid "Payment Term"
-msgstr "Plazo de pago"
+msgstr "Término de pago"
msgctxt "field:stock.order_point,company:"
msgid "Company"
@@ -204,7 +206,7 @@ msgstr "Nombre"
msgctxt "field:stock.order_point,storage_location:"
msgid "Storage Location"
-msgstr "Ubicación del almacén"
+msgstr "Ubicación del depósito"
msgctxt "field:stock.order_point,type:"
msgid "Type"
@@ -216,7 +218,7 @@ msgstr "Unidad"
msgctxt "field:stock.order_point,unit_digits:"
msgid "Unit Digits"
-msgstr "Decimales de la unidad"
+msgstr "Dígitos de unidad"
msgctxt "field:stock.order_point,warehouse_location:"
msgid "Warehouse Location"
@@ -232,7 +234,7 @@ msgstr "Usuario modificación"
msgctxt "model:ir.action,name:act_order_point_form"
msgid "Order Points"
-msgstr "Puntos de orden"
+msgstr "Reglas de abastecimiento"
msgctxt "model:ir.action,name:act_purchase_form"
msgid "Purchases"
@@ -246,25 +248,31 @@ msgctxt "model:ir.action,name:act_purchase_request_form"
msgid "Purchase Requests"
msgstr "Solicitudes de compra"
-msgctxt "model:ir.action,name:act_purchase_request_form_draft"
-msgid "Draft Purchase Requests"
-msgstr "Solicitudes de compra en borrador"
-
msgctxt "model:ir.action,name:wizard_create_purchase"
msgid "Create Purchase"
msgstr "Crear compra"
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_purchase_request_form_domain_all"
+msgid "All"
+msgstr "Todo"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_purchase_request_form_domain_draft"
+msgid "Draft"
+msgstr "Borrador"
+
msgctxt "model:ir.cron,name:cron_generate_request"
msgid "Generate Purchase Requests"
-msgstr "Generar Peticiones de compra"
+msgstr "Generar solicitudes de compra"
msgctxt "model:ir.cron,name:cron_shipment_iternal"
msgid "Generate Internal Shipments"
-msgstr "Generar Envíos internos"
+msgstr "Generar envíos internos"
msgctxt "model:ir.ui.menu,name:menu_order_point_form"
msgid "Order Points"
-msgstr "Puntos de orden"
+msgstr "Reglas de abastecimiento"
msgctxt "model:ir.ui.menu,name:menu_purchase_request_create"
msgid "Create Purchase Requests"
@@ -274,10 +282,6 @@ msgctxt "model:ir.ui.menu,name:menu_purchase_request_form"
msgid "Purchase Requests"
msgstr "Solicitudes de compra"
-msgctxt "model:ir.ui.menu,name:menu_purchase_request_form_draft"
-msgid "Draft Purchase Requests"
-msgstr "Solicitudes de compra en borrador"
-
msgctxt "model:purchase.request,name:"
msgid "Purchase Request"
msgstr "Solicitud de compra"
@@ -300,19 +304,19 @@ msgstr "Solicitud de compra"
msgctxt "model:res.user,name:user_generate_request"
msgid "Cron Purchase Request"
-msgstr "Programador de Solicitudes de compra"
+msgstr "Programador de solicitud de compra"
msgctxt "model:res.user,name:user_generate_shipment_internal"
msgid "Cron Intenal Shipment"
-msgstr "Programador de Envío interno"
+msgstr "Programador de envío interno"
msgctxt "model:stock.order_point,name:"
msgid "Order Point"
-msgstr "Punto de orden"
+msgstr "Regla de abastecimiento"
msgctxt "selection:purchase.request,origin:"
msgid "Order Point"
-msgstr "Punto de orden"
+msgstr "Regla de abastecimiento"
msgctxt "selection:purchase.request,state:"
msgid "Cancel"
@@ -320,7 +324,7 @@ msgstr "Cancelar"
msgctxt "selection:purchase.request,state:"
msgid "Done"
-msgstr "Terminada"
+msgstr "Realizada"
msgctxt "selection:purchase.request,state:"
msgid "Draft"
@@ -371,20 +375,16 @@ msgid "Supply Info"
msgstr "Información del suministro"
msgctxt "view:stock.order_point:"
-msgid "Locations"
-msgstr "Ubicaciones"
-
-msgctxt "view:stock.order_point:"
msgid "Order Point"
-msgstr "Punto de orden"
+msgstr "Regla de abastecimiento"
msgctxt "view:stock.order_point:"
msgid "Order Point Type"
-msgstr "Tipo de punto de orden"
+msgstr "Tipo de regla de abastecimiento"
msgctxt "view:stock.order_point:"
msgid "Order Points"
-msgstr "Puntos de orden"
+msgstr "Reglas de abastecimiento"
msgctxt "view:stock.order_point:"
msgid "Product Info"
diff --git a/locale/es_CO.po b/locale/es_CO.po
index 2fa1f34..41c0e1c 100644
--- a/locale/es_CO.po
+++ b/locale/es_CO.po
@@ -3,12 +3,12 @@ msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "error:purchase.request.create_purchase:"
-msgid "Purchase price is missing for product: %s (id: %s)!"
-msgstr "Falta el precio de compra del producto: %s (id: %s)!"
+msgid "Purchase price is missing for product \"%s\"."
+msgstr ""
msgctxt "error:purchase.request.create_purchase:"
-msgid "This price is necessary for creating purchase."
-msgstr "Este precio se necesita para creación de compras."
+msgid "This price is necessary for creating purchases."
+msgstr ""
msgctxt "error:purchase.request:"
msgid "Purchase requests are only created by the system."
@@ -247,14 +247,22 @@ msgctxt "model:ir.action,name:act_purchase_request_form"
msgid "Purchase Requests"
msgstr "Solicitudes de Compra"
-msgctxt "model:ir.action,name:act_purchase_request_form_draft"
-msgid "Draft Purchase Requests"
-msgstr "Orden de Compras en Borrador"
-
msgctxt "model:ir.action,name:wizard_create_purchase"
msgid "Create Purchase"
msgstr "Crear Compra"
+#, fuzzy
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_purchase_request_form_domain_all"
+msgid "All"
+msgstr "Todo"
+
+#, fuzzy
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_purchase_request_form_domain_draft"
+msgid "Draft"
+msgstr "Borrador"
+
msgctxt "model:ir.cron,name:cron_generate_request"
msgid "Generate Purchase Requests"
msgstr "Generar Orden de Compra"
@@ -275,10 +283,6 @@ msgctxt "model:ir.ui.menu,name:menu_purchase_request_form"
msgid "Purchase Requests"
msgstr "Ordenes de Compra"
-msgctxt "model:ir.ui.menu,name:menu_purchase_request_form_draft"
-msgid "Draft Purchase Requests"
-msgstr "Orden de Compra en Borrador"
-
msgctxt "model:purchase.request,name:"
msgid "Purchase Request"
msgstr "Orden de Compra"
@@ -373,10 +377,6 @@ msgid "Supply Info"
msgstr "Información de Proveedor"
msgctxt "view:stock.order_point:"
-msgid "Locations"
-msgstr "Locaciones"
-
-msgctxt "view:stock.order_point:"
msgid "Order Point"
msgstr "Punto de Orden"
diff --git a/locale/es_ES.po b/locale/es_ES.po
index 123e703..6a6758e 100644
--- a/locale/es_ES.po
+++ b/locale/es_ES.po
@@ -3,12 +3,12 @@ msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "error:purchase.request.create_purchase:"
-msgid "Purchase price is missing for product: %s (id: %s)!"
-msgstr "Falta el precio de compra para el producto: %s (id: %s)."
+msgid "Purchase price is missing for product \"%s\"."
+msgstr "Falta el precio de compra del producto \"%s\"."
msgctxt "error:purchase.request.create_purchase:"
-msgid "This price is necessary for creating purchase."
-msgstr "Este precio es necesario para crear la compra."
+msgid "This price is necessary for creating purchases."
+msgstr "Este precio es necesario para crear compras."
msgctxt "error:purchase.request:"
msgid "Purchase requests are only created by the system."
@@ -248,14 +248,20 @@ msgctxt "model:ir.action,name:act_purchase_request_form"
msgid "Purchase Requests"
msgstr "Solicitudes de compra"
-msgctxt "model:ir.action,name:act_purchase_request_form_draft"
-msgid "Draft Purchase Requests"
-msgstr "Solicitudes de compra borrador"
-
msgctxt "model:ir.action,name:wizard_create_purchase"
msgid "Create Purchase"
msgstr "Crear compra"
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_purchase_request_form_domain_all"
+msgid "All"
+msgstr "Todos"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_purchase_request_form_domain_draft"
+msgid "Draft"
+msgstr "Borrador"
+
msgctxt "model:ir.cron,name:cron_generate_request"
msgid "Generate Purchase Requests"
msgstr "Generar solicitudes de compra"
@@ -276,10 +282,6 @@ msgctxt "model:ir.ui.menu,name:menu_purchase_request_form"
msgid "Purchase Requests"
msgstr "Solicitudes de compra"
-msgctxt "model:ir.ui.menu,name:menu_purchase_request_form_draft"
-msgid "Draft Purchase Requests"
-msgstr "Solicitudes compra borrador"
-
msgctxt "model:purchase.request,name:"
msgid "Purchase Request"
msgstr "Solicitud de compra"
@@ -373,10 +375,6 @@ msgid "Supply Info"
msgstr "Información del suministro"
msgctxt "view:stock.order_point:"
-msgid "Locations"
-msgstr "Ubicaciones"
-
-msgctxt "view:stock.order_point:"
msgid "Order Point"
msgstr "Regla de abastecimiento"
diff --git a/locale/fr_FR.po b/locale/fr_FR.po
index 824114a..c1f918d 100644
--- a/locale/fr_FR.po
+++ b/locale/fr_FR.po
@@ -3,20 +3,12 @@ msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "error:purchase.request.create_purchase:"
-msgid "Purchase price is missing for product: %s (id: %s)!"
-msgstr "Le prix d'achat est absent pour le produit : %s (id: %s) !"
+msgid "Purchase price is missing for product \"%s\"."
+msgstr "Le prix d'achat du produit \"%s\" est manquant."
msgctxt "error:purchase.request.create_purchase:"
-msgid "Purchase price is missing for product: %s (id: %s)!"
-msgstr "Le prix d'achat est absent pour le produit : %s (id: %s) !"
-
-msgctxt "error:purchase.request.create_purchase:"
-msgid "This price is necessary for creating purchase."
-msgstr "Ce prix est nécessaire pour créer les achats."
-
-msgctxt "error:purchase.request.create_purchase:"
-msgid "This price is necessary for creating purchase."
-msgstr "Ce prix est nécessaire pour créer les achats."
+msgid "This price is necessary for creating purchases."
+msgstr "Le prix est nécessaire pour créer des achats."
msgctxt "error:purchase.request:"
msgid "Purchase requests are only created by the system."
@@ -278,14 +270,20 @@ msgctxt "model:ir.action,name:act_purchase_request_form"
msgid "Purchase Requests"
msgstr "Demandes d'achat"
-msgctxt "model:ir.action,name:act_purchase_request_form_draft"
-msgid "Draft Purchase Requests"
-msgstr "Demandes d'achat brouillon"
-
msgctxt "model:ir.action,name:wizard_create_purchase"
msgid "Create Purchase"
msgstr "Créer achat"
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_purchase_request_form_domain_all"
+msgid "All"
+msgstr "Toutes"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_purchase_request_form_domain_draft"
+msgid "Draft"
+msgstr "Brouillon"
+
msgctxt "model:ir.cron,name:cron_generate_request"
msgid "Generate Purchase Requests"
msgstr "Générer les demandes d'achat"
@@ -306,10 +304,6 @@ msgctxt "model:ir.ui.menu,name:menu_purchase_request_form"
msgid "Purchase Requests"
msgstr "Demandes d'achat"
-msgctxt "model:ir.ui.menu,name:menu_purchase_request_form_draft"
-msgid "Draft Purchase Requests"
-msgstr "Demandes d'achat brouillon"
-
msgctxt "model:purchase.request,name:"
msgid "Purchase Request"
msgstr "Demande d'achat"
@@ -451,10 +445,6 @@ msgid "Supply Info"
msgstr "Information d'approvisionnement"
msgctxt "view:stock.order_point:"
-msgid "Locations"
-msgstr "Emplacements"
-
-msgctxt "view:stock.order_point:"
msgid "Order Point"
msgstr "Règle d'approvisionnement"
diff --git a/locale/nl_NL.po b/locale/nl_NL.po
index 82666fb..167e1ef 100644
--- a/locale/nl_NL.po
+++ b/locale/nl_NL.po
@@ -3,11 +3,11 @@ msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "error:purchase.request.create_purchase:"
-msgid "Purchase price is missing for product: %s (id: %s)!"
+msgid "Purchase price is missing for product \"%s\"."
msgstr ""
msgctxt "error:purchase.request.create_purchase:"
-msgid "This price is necessary for creating purchase."
+msgid "This price is necessary for creating purchases."
msgstr ""
msgctxt "error:purchase.request:"
@@ -263,14 +263,21 @@ msgctxt "model:ir.action,name:act_purchase_request_form"
msgid "Purchase Requests"
msgstr ""
-msgctxt "model:ir.action,name:act_purchase_request_form_draft"
-msgid "Draft Purchase Requests"
-msgstr ""
-
msgctxt "model:ir.action,name:wizard_create_purchase"
msgid "Create Purchase"
msgstr ""
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_purchase_request_form_domain_all"
+msgid "All"
+msgstr ""
+
+#, fuzzy
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_purchase_request_form_domain_draft"
+msgid "Draft"
+msgstr "Concept"
+
msgctxt "model:ir.cron,name:cron_generate_request"
msgid "Generate Purchase Requests"
msgstr ""
@@ -291,10 +298,6 @@ msgctxt "model:ir.ui.menu,name:menu_purchase_request_form"
msgid "Purchase Requests"
msgstr ""
-msgctxt "model:ir.ui.menu,name:menu_purchase_request_form_draft"
-msgid "Draft Purchase Requests"
-msgstr ""
-
msgctxt "model:purchase.request,name:"
msgid "Purchase Request"
msgstr ""
diff --git a/locale/ru_RU.po b/locale/ru_RU.po
index ca51303..faa656b 100644
--- a/locale/ru_RU.po
+++ b/locale/ru_RU.po
@@ -3,429 +3,408 @@ msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "error:purchase.request.create_purchase:"
-msgid "Purchase price is missing for product: %s (id: %s)!"
-msgstr ""
+msgid "Purchase price is missing for product \"%s\"."
+msgstr "Цена покупки отсутствует у продукта \"%s\"."
msgctxt "error:purchase.request.create_purchase:"
-msgid "This price is necessary for creating purchase."
-msgstr ""
+msgid "This price is necessary for creating purchases."
+msgstr "Цена необходима для создания покупки."
msgctxt "error:purchase.request:"
msgid "Purchase requests are only created by the system."
-msgstr ""
+msgstr "Запросы на покупку создаются системой."
msgctxt "error:purchase.request:"
msgid "The requested quantity must be greater than 0"
-msgstr ""
+msgstr "Запрашиваемое кол-во должно быть больше 0"
msgctxt "error:stock.order_point:"
msgid "Maximal quantity must be bigger than Minimal quantity"
-msgstr ""
+msgstr "Максимальное кол-во должно быть больше чем минимальное."
msgctxt "error:stock.order_point:"
msgid "Only one order point is allowed for each product-location pair."
msgstr ""
+"Возможна только одна точка заказа для каждой пары продукт-местоположение."
msgctxt "error:stock.order_point:"
msgid ""
"You can not define two order points on the same product with opposite "
"locations."
msgstr ""
+"Вы не можете определить две точки заказа для одного продукта с "
+"противоположными местоположениями."
msgctxt "field:product.product,order_points:"
msgid "Order Points"
-msgstr ""
+msgstr "Точки заказа"
-#, fuzzy
msgctxt "field:purchase.request,company:"
msgid "Company"
-msgstr "Учет.орг."
+msgstr "Организация"
msgctxt "field:purchase.request,computed_quantity:"
msgid "Computed Quantity"
-msgstr ""
+msgstr "Расчитанное кол-во"
msgctxt "field:purchase.request,computed_uom:"
msgid "Computed UOM"
-msgstr ""
+msgstr "Расчитанные ед. измерения"
msgctxt "field:purchase.request,create_date:"
msgid "Create Date"
-msgstr ""
+msgstr "Дата создания"
msgctxt "field:purchase.request,create_uid:"
msgid "Create User"
-msgstr ""
+msgstr "Создано пользователем"
msgctxt "field:purchase.request,id:"
msgid "ID"
-msgstr ""
+msgstr "ID"
msgctxt "field:purchase.request,origin:"
msgid "Origin"
-msgstr ""
+msgstr "Первоисточник"
-#, fuzzy
msgctxt "field:purchase.request,party:"
msgid "Party"
-msgstr "Организации"
+msgstr "Контрагент"
-#, fuzzy
msgctxt "field:purchase.request,product:"
msgid "Product"
-msgstr "Товарно материальные ценности (ТМЦ)"
+msgstr "Продукт"
msgctxt "field:purchase.request,purchase:"
msgid "Purchase"
-msgstr ""
+msgstr "Покупки"
msgctxt "field:purchase.request,purchase_date:"
msgid "Best Purchase Date"
-msgstr ""
+msgstr "Наилучшая дата покупки"
msgctxt "field:purchase.request,purchase_line:"
msgid "Purchase Line"
-msgstr ""
+msgstr "Строка покупки"
-#, fuzzy
msgctxt "field:purchase.request,quantity:"
msgid "Quantity"
msgstr "Кол-во"
-#, fuzzy
msgctxt "field:purchase.request,rec_name:"
msgid "Name"
msgstr "Наименование"
-#, fuzzy
msgctxt "field:purchase.request,state:"
msgid "State"
-msgstr "Статус"
+msgstr "Состояние"
msgctxt "field:purchase.request,stock_level:"
msgid "Stock at Supply Date"
-msgstr ""
+msgstr "Склад на дату доставки"
msgctxt "field:purchase.request,supply_date:"
msgid "Expected Supply Date"
-msgstr ""
+msgstr "Ожидаемая дата поставки"
-#, fuzzy
msgctxt "field:purchase.request,uom:"
msgid "UOM"
msgstr "Ед.изм."
-#, fuzzy
msgctxt "field:purchase.request,warehouse:"
msgid "Warehouse"
msgstr "Товарный склад"
msgctxt "field:purchase.request,warehouse_required:"
msgid "Warehouse Required"
-msgstr ""
+msgstr "Склад необходим"
msgctxt "field:purchase.request,write_date:"
msgid "Write Date"
-msgstr ""
+msgstr "Дата изменения"
msgctxt "field:purchase.request,write_uid:"
msgid "Write User"
-msgstr ""
+msgstr "Изменено пользователем"
msgctxt "field:purchase.request.create.start,id:"
msgid "ID"
-msgstr ""
+msgstr "ID"
-#, fuzzy
msgctxt "field:purchase.request.create_purchase.ask_party,company:"
msgid "Company"
-msgstr "Учет.орг."
+msgstr "Организация"
msgctxt "field:purchase.request.create_purchase.ask_party,id:"
msgid "ID"
-msgstr ""
+msgstr "ID"
-#, fuzzy
msgctxt "field:purchase.request.create_purchase.ask_party,party:"
msgid "Supplier"
msgstr "Поставщик"
-#, fuzzy
msgctxt "field:purchase.request.create_purchase.ask_party,product:"
msgid "Product"
-msgstr "Товарно материальные ценности (ТМЦ)"
+msgstr "Продукт"
-#, fuzzy
msgctxt "field:purchase.request.create_purchase.ask_term,company:"
msgid "Company"
-msgstr "Учет.орг."
+msgstr "Организация"
msgctxt "field:purchase.request.create_purchase.ask_term,id:"
msgid "ID"
-msgstr ""
+msgstr "ID"
-#, fuzzy
msgctxt "field:purchase.request.create_purchase.ask_term,party:"
msgid "Supplier"
msgstr "Поставщик"
msgctxt "field:purchase.request.create_purchase.ask_term,payment_term:"
msgid "Payment Term"
-msgstr ""
+msgstr "Правило оплаты"
-#, fuzzy
msgctxt "field:stock.order_point,company:"
msgid "Company"
-msgstr "Учет.орг."
+msgstr "Организация"
msgctxt "field:stock.order_point,create_date:"
msgid "Create Date"
-msgstr ""
+msgstr "Дата создания"
msgctxt "field:stock.order_point,create_uid:"
msgid "Create User"
-msgstr ""
+msgstr "Создано пользователем"
msgctxt "field:stock.order_point,id:"
msgid "ID"
-msgstr ""
+msgstr "ID"
-#, fuzzy
msgctxt "field:stock.order_point,location:"
msgid "Location"
msgstr "Местоположение"
msgctxt "field:stock.order_point,max_quantity:"
msgid "Maximal Quantity"
-msgstr ""
+msgstr "Максимальное кол-во"
msgctxt "field:stock.order_point,min_quantity:"
msgid "Minimal Quantity"
-msgstr ""
+msgstr "Минимальное кол-во"
-#, fuzzy
msgctxt "field:stock.order_point,product:"
msgid "Product"
-msgstr "Товарно материальные ценности (ТМЦ)"
+msgstr "Продукт"
msgctxt "field:stock.order_point,provisioning_location:"
msgid "Provisioning Location"
-msgstr ""
+msgstr "Местоположение резервирования"
-#, fuzzy
msgctxt "field:stock.order_point,rec_name:"
msgid "Name"
msgstr "Наименование"
msgctxt "field:stock.order_point,storage_location:"
msgid "Storage Location"
-msgstr ""
+msgstr "Хранение Местоположение"
-#, fuzzy
msgctxt "field:stock.order_point,type:"
msgid "Type"
msgstr "Тип"
-#, fuzzy
msgctxt "field:stock.order_point,unit:"
msgid "Unit"
-msgstr "Штука"
+msgstr "Единица измерения"
-#, fuzzy
msgctxt "field:stock.order_point,unit_digits:"
msgid "Unit Digits"
-msgstr "Группа цифр"
+msgstr "Кол-во цифр после запятой"
msgctxt "field:stock.order_point,warehouse_location:"
msgid "Warehouse Location"
-msgstr ""
+msgstr "Местополжение на складе"
msgctxt "field:stock.order_point,write_date:"
msgid "Write Date"
-msgstr ""
+msgstr "Дата изменения"
msgctxt "field:stock.order_point,write_uid:"
msgid "Write User"
-msgstr ""
+msgstr "Изменено пользователем"
msgctxt "model:ir.action,name:act_order_point_form"
msgid "Order Points"
-msgstr ""
+msgstr "Точки заказа"
msgctxt "model:ir.action,name:act_purchase_form"
msgid "Purchases"
-msgstr ""
+msgstr "Покупки"
msgctxt "model:ir.action,name:act_purchase_request_create"
msgid "Create Purchase Requests"
-msgstr ""
+msgstr "Создать запросы на покупку"
msgctxt "model:ir.action,name:act_purchase_request_form"
msgid "Purchase Requests"
-msgstr ""
-
-msgctxt "model:ir.action,name:act_purchase_request_form_draft"
-msgid "Draft Purchase Requests"
-msgstr ""
+msgstr "Запросы на покупку"
msgctxt "model:ir.action,name:wizard_create_purchase"
msgid "Create Purchase"
-msgstr ""
+msgstr "Создать покупку"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_purchase_request_form_domain_all"
+msgid "All"
+msgstr "Все"
+
+msgctxt ""
+"model:ir.action.act_window.domain,name:act_purchase_request_form_domain_draft"
+msgid "Draft"
+msgstr "Черновик"
msgctxt "model:ir.cron,name:cron_generate_request"
msgid "Generate Purchase Requests"
-msgstr ""
+msgstr "Создать запросы на покупки."
msgctxt "model:ir.cron,name:cron_shipment_iternal"
msgid "Generate Internal Shipments"
-msgstr ""
+msgstr "Создать внутренние доставки."
msgctxt "model:ir.ui.menu,name:menu_order_point_form"
msgid "Order Points"
-msgstr ""
+msgstr "Точки заказа"
msgctxt "model:ir.ui.menu,name:menu_purchase_request_create"
msgid "Create Purchase Requests"
-msgstr ""
+msgstr "Создать запросы на покупку"
msgctxt "model:ir.ui.menu,name:menu_purchase_request_form"
msgid "Purchase Requests"
-msgstr ""
-
-msgctxt "model:ir.ui.menu,name:menu_purchase_request_form_draft"
-msgid "Draft Purchase Requests"
-msgstr ""
+msgstr "Запросы на покупку"
msgctxt "model:purchase.request,name:"
msgid "Purchase Request"
-msgstr ""
+msgstr "Запрос на покупку"
msgctxt "model:purchase.request.create.start,name:"
msgid "Create Purchase Request"
-msgstr ""
+msgstr "Создать запрос на покупку"
msgctxt "model:purchase.request.create_purchase.ask_party,name:"
msgid "Create Purchase Ask Party"
-msgstr ""
+msgstr "Создать покупку, Запрос контрагента"
msgctxt "model:purchase.request.create_purchase.ask_term,name:"
msgid "Create Purchase Ask Term"
-msgstr ""
+msgstr "Создать покупку, Запрос правила"
msgctxt "model:res.group,name:group_purchase_request"
msgid "Purchase Request"
-msgstr ""
+msgstr "Запрос на покупку"
msgctxt "model:res.user,name:user_generate_request"
msgid "Cron Purchase Request"
-msgstr ""
+msgstr "Запланировать запрос на покупку"
msgctxt "model:res.user,name:user_generate_shipment_internal"
msgid "Cron Intenal Shipment"
-msgstr ""
+msgstr "Запланировать внутреннюю доставку"
msgctxt "model:stock.order_point,name:"
msgid "Order Point"
-msgstr ""
+msgstr "Точка заказа"
-#, fuzzy
msgctxt "selection:purchase.request,state:"
msgid "Cancel"
msgstr "Отменить"
-#, fuzzy
msgctxt "selection:purchase.request,state:"
msgid "Done"
msgstr "Выполнено"
-#, fuzzy
msgctxt "selection:purchase.request,state:"
msgid "Draft"
msgstr "Черновик"
msgctxt "selection:purchase.request,state:"
msgid "Purchased"
-msgstr ""
+msgstr "Купленные"
msgctxt "selection:stock.order_point,type:"
msgid "Internal"
-msgstr ""
+msgstr "Внутренний"
msgctxt "selection:stock.order_point,type:"
msgid "Purchase"
-msgstr ""
+msgstr "Покупки"
msgctxt "view:purchase.request.create.start:"
msgid "Create Purchase Request"
-msgstr ""
+msgstr "Создать запрос на покупку"
msgctxt "view:purchase.request.create.start:"
msgid "Create Purchase Request?"
-msgstr ""
+msgstr "Создать запрос на покупку?"
msgctxt "view:purchase.request.create_purchase.ask_party:"
msgid "Create Purchase: Missing Supplier"
-msgstr ""
+msgstr "Создать покупку: Отсутствует поставщик"
msgctxt "view:purchase.request.create_purchase.ask_term:"
msgid "Create Purchase: Missing Payment Term"
-msgstr ""
+msgstr "Создать покупку: Отсутствует правило оплаты"
msgctxt "view:purchase.request:"
msgid "Product Info"
-msgstr ""
+msgstr "Информация о продукте"
msgctxt "view:purchase.request:"
msgid "Purchase Request"
-msgstr ""
+msgstr "Запрос на покупку"
msgctxt "view:purchase.request:"
msgid "Purchase Requests"
-msgstr ""
+msgstr "Запросы на покупку"
msgctxt "view:purchase.request:"
msgid "Supply Info"
-msgstr ""
+msgstr "Информация о поставке"
msgctxt "view:stock.order_point:"
msgid "Order Point"
-msgstr ""
+msgstr "Точка заказа"
msgctxt "view:stock.order_point:"
msgid "Order Point Type"
-msgstr ""
+msgstr "Типы точек заказа"
msgctxt "view:stock.order_point:"
msgid "Order Points"
-msgstr ""
+msgstr "Точки заказа"
msgctxt "view:stock.order_point:"
msgid "Product Info"
-msgstr ""
+msgstr "Информация о продукте"
msgctxt "wizard_button:purchase.request.create,start,create_:"
msgid "Create"
-msgstr ""
+msgstr "Создать"
-#, fuzzy
msgctxt "wizard_button:purchase.request.create,start,end:"
msgid "Cancel"
msgstr "Отменить"
-#, fuzzy
msgctxt "wizard_button:purchase.request.create_purchase,ask_party,end:"
msgid "Cancel"
msgstr "Отменить"
msgctxt "wizard_button:purchase.request.create_purchase,ask_party,start:"
msgid "Continue"
-msgstr ""
+msgstr "Продолжить"
-#, fuzzy
msgctxt "wizard_button:purchase.request.create_purchase,ask_term,end:"
msgid "Cancel"
msgstr "Отменить"
msgctxt "wizard_button:purchase.request.create_purchase,ask_term,start:"
msgid "Continue"
-msgstr ""
+msgstr "Продолжить"
diff --git a/order_point.py b/order_point.py
index 59c8cf8..75ff205 100644
--- a/order_point.py
+++ b/order_point.py
@@ -72,21 +72,17 @@ class OrderPoint(ModelSQL, ModelView):
@classmethod
def __setup__(cls):
super(OrderPoint, cls).__setup__()
- cls._constraints += [
- ('check_concurrent_internal', 'concurrent_internal_op'),
- ('check_uniqueness', 'unique_op'),
- ]
cls._sql_constraints += [
('check_max_qty_greater_min_qty',
'CHECK(max_quantity >= min_quantity)',
'Maximal quantity must be bigger than Minimal quantity'),
]
cls._error_messages.update({
- 'unique_op': 'Only one order point is allowed '\
- 'for each product-location pair.',
- 'concurrent_internal_op': 'You can not define ' \
- 'two order points on the same product ' \
- 'with opposite locations.',
+ 'unique_op': ('Only one order point is allowed '
+ 'for each product-location pair.'),
+ 'concurrent_internal_op': ('You can not define '
+ 'two order points on the same product '
+ 'with opposite locations.'),
})
@classmethod
@@ -121,6 +117,12 @@ class OrderPoint(ModelSQL, ModelView):
return self.product.default_uom.digits
@classmethod
+ def validate(cls, orderpoints):
+ super(OrderPoint, cls).validate(orderpoints)
+ cls.check_concurrent_internal(orderpoints)
+ cls.check_uniqueness(orderpoints)
+
+ @classmethod
def check_concurrent_internal(cls, orders):
"""
Ensure that there is no 'concurrent' internal order
@@ -132,7 +134,7 @@ class OrderPoint(ModelSQL, ModelView):
('type', '=', 'internal'),
])
if not internals:
- return True
+ return
query = ['OR']
for op in internals:
@@ -142,7 +144,8 @@ class OrderPoint(ModelSQL, ModelView):
('company', '=', op.company.id),
('type', '=', 'internal')]
query.append(arg)
- return not bool(cls.search(query))
+ if cls.search(query):
+ cls.raise_user_error('concurrent_internal_op')
@staticmethod
def _type2field(type=None):
@@ -150,7 +153,7 @@ class OrderPoint(ModelSQL, ModelView):
'purchase': 'warehouse_location',
'internal': 'storage_location',
}
- if type == None:
+ if type is None:
return t2f
else:
return t2f[type]
@@ -172,7 +175,8 @@ class OrderPoint(ModelSQL, ModelView):
('company', '=', op.company.id),
]
query.append(arg)
- return not bool(cls.search(query))
+ if cls.search(query):
+ cls.raise_user_error('unique_op')
def get_rec_name(self, name):
return "%s@%s" % (self.product.name, self.location.name)
diff --git a/order_point.xml b/order_point.xml
index bbad45f..789b328 100644
--- a/order_point.xml
+++ b/order_point.xml
@@ -6,54 +6,12 @@ this repository contains the full copyright notices and license terms. -->
<record model="ir.ui.view" id="order_point_view_form">
<field name="model">stock.order_point</field>
<field name="type">form</field>
- <field name="arch" type="xml">
- <![CDATA[
- <form string="Order Point" cursor="product">
- <separator string="Product Info" colspan="4"
- id="info"/>
- <label name="company"/>
- <field name="company"/>
- <newline/>
- <label name="product"/>
- <field name="product"/>
- <label name="unit"/>
- <field name="unit"/>
- <label name="min_quantity"/>
- <field name="min_quantity"/>
- <label name="max_quantity"/>
- <field name="max_quantity"/>
- <separator string="Order Point Type" colspan="4"
- id="type"/>
- <label name="type"/>
- <field name="type"/>
- <newline/>
- <label name="warehouse_location"/>
- <field name="warehouse_location"/>
- <newline/>
- <label name="storage_location"/>
- <field name="storage_location"/>
- <label name="provisioning_location"/>
- <field name="provisioning_location"/>
- </form>
- ]]>
- </field>
+ <field name="name">order_point_form</field>
</record>
<record model="ir.ui.view" id="order_point_view_tree">
<field name="model">stock.order_point</field>
<field name="type">tree</field>
- <field name="arch" type="xml">
- <![CDATA[
- <tree string="Order Points">
- <field name="product"/>
- <field name="location"/>
- <field name="type"/>
- <field name="company"/>
- <field name="min_quantity"/>
- <field name="max_quantity"/>
- <field name="unit"/>
- </tree>
- ]]>
- </field>
+ <field name="name">order_point_tree</field>
</record>
<record model="ir.action.act_window" id="act_order_point_form">
@@ -94,9 +52,7 @@ this repository contains the full copyright notices and license terms. -->
<field name="global_p" eval="True"/>
</record>
<record model="ir.rule" id="rule_order_point">
- <field name="field" search="[('name', '=', 'company'), ('model.model', '=', 'stock.order_point')]"/>
- <field name="operator">=</field>
- <field name="operand">User/Current Company</field>
+ <field name="domain">[('company', '=', user.company.id if user.company else None)]</field>
<field name="rule_group" ref="rule_group_order_point"/>
</record>
</data>
diff --git a/purchase_request.py b/purchase_request.py
index 7a4ce16..8f1371e 100644
--- a/purchase_request.py
+++ b/purchase_request.py
@@ -16,15 +16,23 @@ __all__ = ['PurchaseRequest',
'CreatePurchaseRequestStart', 'CreatePurchaseRequest',
'CreatePurchaseAskTerm', 'CreatePurchaseAskParty', 'CreatePurchase']
+STATES = {
+ 'readonly': Eval('state') != 'draft',
+ }
+DEPENDS = ['state']
+
class PurchaseRequest(ModelSQL, ModelView):
'Purchase Request'
__name__ = 'purchase.request'
product = fields.Many2One('product.product', 'Product', required=True,
select=True, readonly=True, domain=[('purchasable', '=', True)])
- party = fields.Many2One('party.party', 'Party', select=True)
- quantity = fields.Float('Quantity', required=True)
- uom = fields.Many2One('product.uom', 'UOM', required=True, select=True)
+ party = fields.Many2One('party.party', 'Party', select=True, states=STATES,
+ depends=DEPENDS)
+ quantity = fields.Float('Quantity', required=True, states=STATES,
+ depends=DEPENDS)
+ uom = fields.Many2One('product.uom', 'UOM', required=True, select=True,
+ states=STATES, depends=DEPENDS)
computed_quantity = fields.Float('Computed Quantity', readonly=True)
computed_uom = fields.Many2One('product.uom', 'Computed UOM',
readonly=True)
@@ -63,8 +71,8 @@ class PurchaseRequest(ModelSQL, ModelView):
super(PurchaseRequest, cls).__setup__()
cls._order[0] = ('id', 'DESC')
cls._error_messages.update({
- 'create_request': 'Purchase requests are only created ' \
- 'by the system.',
+ 'create_request': ('Purchase requests are only created '
+ 'by the system.'),
})
cls._sql_constraints += [
('check_purchase_request_quantity', 'CHECK(quantity > 0)',
@@ -129,7 +137,7 @@ class PurchaseRequest(ModelSQL, ModelView):
return res
@classmethod
- def generate_requests(cls):
+ def generate_requests(cls, products=None):
"""
For each product compute the purchase request that must be
create today to meet product outputs.
@@ -157,13 +165,14 @@ class PurchaseRequest(ModelSQL, ModelView):
(order_point.warehouse_location.id, order_point.product.id)
] = order_point
- # fetch goods and assets
- # ordered by ids to speedup reduce_ids in products_by_location
- products = Product.search([
- ('type', 'in', ['goods', 'assets']),
- ('consumable', '=', False),
- ('purchasable', '=', True),
- ], order=[('id', 'ASC')])
+ if products is None:
+ # fetch goods and assets
+ # ordered by ids to speedup reduce_ids in products_by_location
+ products = Product.search([
+ ('type', 'in', ['goods', 'assets']),
+ ('consumable', '=', False),
+ ('purchasable', '=', True),
+ ], order=[('id', 'ASC')])
product_ids = [p.id for p in products]
#aggregate product by minimum supply date
date2products = {}
@@ -192,7 +201,7 @@ class PurchaseRequest(ModelSQL, ModelView):
for product in products[i:i + cursor.IN_MAX]:
shortage_date, product_quantity = shortages[product.id]
- if shortage_date == None or product_quantity == None:
+ if shortage_date is None or product_quantity is None:
continue
order_point = product2ops.get(
(warehouse_id, product.id))
@@ -202,6 +211,14 @@ class PurchaseRequest(ModelSQL, ModelView):
company, order_point)
new_requests.append(request)
+ # delete purchase requests without a purchase line
+ products = set(products)
+ reqs = cls.search([
+ ('purchase_line', '=', None),
+ ('origin', 'like', 'stock.order_point,%'),
+ ])
+ reqs = [r for r in reqs if r.product in products]
+ cls.delete(reqs)
new_requests = cls.compare_requests(new_requests)
cls.create_requests(new_requests)
@@ -220,15 +237,9 @@ class PurchaseRequest(ModelSQL, ModelView):
Compare new_requests with already existing request to avoid
to re-create existing requests.
"""
- # delete purchase request without a purchase line
pool = Pool()
Uom = pool.get('product.uom')
Request = pool.get('purchase.request')
- reqs = Request.search([
- ('purchase_line', '=', None),
- ('origin', 'like', 'stock.order_point,%'),
- ])
- Request.delete(reqs)
requests = Request.search([
('purchase_line.moves', '=', None),
@@ -256,8 +267,8 @@ class PurchaseRequest(ModelSQL, ModelView):
existing_req.setdefault(
(request.product.id, request.warehouse.id),
[]).append({
- 'supply_date': \
- request.supply_date or datetime.date.max,
+ 'supply_date': (
+ request.supply_date or datetime.date.max),
'quantity': quantity,
'uom': uom,
})
@@ -323,21 +334,13 @@ class PurchaseRequest(ModelSQL, ModelView):
Date = Pool().get('ir.date')
supplier = None
- timedelta = datetime.timedelta.max
today = Date.today()
for product_supplier in product.product_suppliers:
supply_date = product_supplier.compute_supply_date(date=today)
- sup_timedelta = date - supply_date
- if not supplier:
+ timedelta = date - supply_date
+ if not supplier and timedelta >= datetime.timedelta(0):
supplier = product_supplier.party
- timedelta = sup_timedelta
- continue
-
- if timedelta < datetime.timedelta(0) \
- and (sup_timedelta >= datetime.timedelta(0) \
- or sup_timedelta > timedelta):
- supplier = product_supplier.party
- timedelta = sup_timedelta
+ break
if supplier:
purchase_date = product_supplier.compute_purchase_date(date)
@@ -440,11 +443,12 @@ class PurchaseRequest(ModelSQL, ModelView):
for x in product_ids)
@classmethod
- def create(cls, vals):
- for field_name in ('product', 'quantity', 'uom', 'company'):
- if not vals.get(field_name):
- cls.raise_user_error('create_request')
- return super(PurchaseRequest, cls).create(vals)
+ def create(cls, vlist):
+ for vals in vlist:
+ for field_name in ('product', 'quantity', 'uom', 'company'):
+ if not vals.get(field_name):
+ cls.raise_user_error('create_request')
+ return super(PurchaseRequest, cls).create(vlist)
class CreatePurchaseRequestStart(ModelView):
@@ -460,7 +464,7 @@ class CreatePurchaseRequest(Wizard):
Button('Cancel', 'end', 'tryton-cancel'),
Button('Create', 'create_', 'tryton-ok', default=True),
])
- create_ = StateAction('stock_supply.act_purchase_request_form_draft')
+ create_ = StateAction('stock_supply.act_purchase_request_form')
def do_create_(self, action):
PurchaseRequest = Pool().get('purchase.request')
@@ -507,10 +511,10 @@ class CreatePurchase(Wizard):
def __setup__(cls):
super(CreatePurchase, cls).__setup__()
cls._error_messages.update({
- 'missing_price': 'Purchase price is missing for product: %s ' \
- '(id: %s)!',
- 'please_update': 'This price is necessary for creating purchase.'
- })
+ 'missing_price': 'Purchase price is missing for product "%s".',
+ 'please_update': ('This price is necessary for creating '
+ 'purchases.'),
+ })
def default_ask_party(self, fields):
Request = Pool().get('purchase.request')
@@ -589,8 +593,8 @@ class CreatePurchase(Wizard):
with Transaction().set_context(
company=self.ask_term.company.id):
Party.write([self.ask_term.party], {
- 'supplier_payment_term': \
- self.ask_term.payment_term.id,
+ 'supplier_payment_term': (
+ self.ask_term.payment_term.id),
})
self.ask_term.payment_term = None
self.ask_term.party = None
@@ -668,8 +672,8 @@ class CreatePurchase(Wizard):
Decimal(1) / 10 ** Line.unit_price.digits[1])
if product_price is None:
- cls.raise_user_error('missing_price', (request.product.name,
- request.product.id), 'please_update')
+ cls.raise_user_error('missing_price', (request.product.rec_name,),
+ 'please_update')
line.unit_price = product_price
taxes = []
diff --git a/purchase_request.xml b/purchase_request.xml
index b8b86f5..dc836b5 100644
--- a/purchase_request.xml
+++ b/purchase_request.xml
@@ -11,63 +11,12 @@ this repository contains the full copyright notices and license terms. -->
<record model="ir.ui.view" id="purchase_request_view_form">
<field name="model">purchase.request</field>
<field name="type">form</field>
- <field name="arch" type="xml">
- <![CDATA[
- <form string="Purchase Request">
- <separator string="Product Info" colspan="4" id="product"/>
- <label name="product"/>
- <field name="product"/>
- <newline/>
- <label name="quantity"/>
- <field name="quantity"/>
- <label name="uom"/>
- <field name="uom"/>
- <label name="computed_quantity"/>
- <field name="computed_quantity"/>
- <label name="computed_uom"/>
- <field name="computed_uom"/>
- <separator string="Supply Info" colspan="4" id="supply"/>
- <label name="party"/>
- <field name="party"/>
- <newline/>
- <label name="warehouse"/>
- <field name="warehouse"/>
- <label name="company"/>
- <field name="company"/>
- <label name="purchase_date"/>
- <field name="purchase_date"/>
- <label name="supply_date"/>
- <field name="supply_date"/>
- <label name="purchase"/>
- <field name="purchase"/>
- <label name="stock_level"/>
- <field name="stock_level"/>
- <label name="origin"/>
- <field name="origin"/>
- <label name="state"/>
- <field name="state"/>
- </form>
- ]]>
- </field>
+ <field name="name">purchase_request_form</field>
</record>
<record model="ir.ui.view" id="purchase_request_view_tree">
<field name="model">purchase.request</field>
<field name="type">tree</field>
- <field name="arch" type="xml">
- <![CDATA[
- <tree string="Purchase Requests">
- <field name="product"/>
- <field name="quantity"/>
- <field name="uom"/>
- <field name="warehouse"/>
- <field name="party"/>
- <field name="purchase_date"/>
- <field name="stock_level"/>
- <field name="company"/>
- <field name="state"/>
- </tree>
- ]]>
- </field>
+ <field name="name">purchase_request_tree</field>
</record>
<record model="ir.action.act_window" id="act_purchase_request_form">
@@ -84,6 +33,20 @@ this repository contains the full copyright notices and license terms. -->
<field name="view" ref="purchase_request_view_form"/>
<field name="act_window" ref="act_purchase_request_form"/>
</record>
+ <record model="ir.action.act_window.domain"
+ id="act_purchase_request_form_domain_draft">
+ <field name="name">Draft</field>
+ <field name="sequence" eval="10"/>
+ <field name="domain">[('purchase_line', '=', None)]</field>
+ <field name="act_window" ref="act_purchase_request_form"/>
+ </record>
+ <record model="ir.action.act_window.domain"
+ id="act_purchase_request_form_domain_all">
+ <field name="name">All</field>
+ <field name="sequence" eval="9999"/>
+ <field name="domain"></field>
+ <field name="act_window" ref="act_purchase_request_form"/>
+ </record>
<record model="ir.ui.menu-res.group" id="menu_purchase_group_purchase_request">
<field name="menu" ref="purchase.menu_purchase"/>
@@ -93,25 +56,6 @@ this repository contains the full copyright notices and license terms. -->
<menuitem parent="purchase.menu_purchase" sequence="20"
action="act_purchase_request_form" id="menu_purchase_request_form"/>
- <record model="ir.action.act_window" id="act_purchase_request_form_draft">
- <field name="name">Draft Purchase Requests</field>
- <field name="res_model">purchase.request</field>
- <field name="domain">[('purchase_line', '=', False)]</field>
- </record>
- <record model="ir.action.act_window.view" id="act_purchase_request_form_draft_view1">
- <field name="sequence" eval="10"/>
- <field name="view" ref="purchase_request_view_tree"/>
- <field name="act_window" ref="act_purchase_request_form_draft"/>
- </record>
- <record model="ir.action.act_window.view" id="act_purchase_request_form_draft_view2">
- <field name="sequence" eval="20"/>
- <field name="view" ref="purchase_request_view_form"/>
- <field name="act_window" ref="act_purchase_request_form_draft"/>
- </record>
-
- <menuitem parent="menu_purchase_request_form" sequence="20"
- action="act_purchase_request_form_draft" id="menu_purchase_request_form_draft"/>
-
<record model="ir.action.wizard" id="act_purchase_request_create">
<field name="name">Create Purchase Requests</field>
<field name="wiz_name">purchase.request.create</field>
@@ -120,16 +64,7 @@ this repository contains the full copyright notices and license terms. -->
<record model="ir.ui.view" id="purchase_request_create_start_view_form">
<field name="model">purchase.request.create.start</field>
<field name="type">form</field>
- <field name="arch" type="xml">
- <![CDATA[
- <form string="Create Purchase Request" col="2">
- <image name="tryton-dialog-information" xexpand="0"
- xfill="0"/>
- <label string="Create Purchase Request?" id="create"
- yalign="0.0" xalign="0.0" xexpand="1"/>
- </form>
- ]]>
- </field>
+ <field name="name">purchase_request_create_start_form</field>
</record>
<menuitem parent="menu_purchase_request_form" sequence="10"
@@ -144,34 +79,12 @@ this repository contains the full copyright notices and license terms. -->
<record model="ir.ui.view" id="purchase_request_create_purchase_ask_term_view_form">
<field name="model">purchase.request.create_purchase.ask_term</field>
<field name="type">form</field>
- <field name="arch" type="xml">
- <![CDATA[
- <form string="Create Purchase: Missing Payment Term" col="2" cursor="payment_term">
- <label name="party"/>
- <field name="party"/>
- <label name="company"/>
- <field name="company"/>
- <label name="payment_term"/>
- <field name="payment_term"/>
- </form>
- ]]>
- </field>
+ <field name="name">purchase_request_create_purchase_ask_term_form</field>
</record>
<record model="ir.ui.view" id="purchase_request_create_purchase_ask_party">
<field name="model">purchase.request.create_purchase.ask_party</field>
<field name="type">form</field>
- <field name="arch" type="xml">
- <![CDATA[
- <form string="Create Purchase: Missing Supplier" col="2" cursor="party">
- <label name="product"/>
- <field name="product"/>
- <label name="company"/>
- <field name="company"/>
- <label name="party"/>
- <field name="party"/>
- </form>
- ]]>
- </field>
+ <field name="name">purchase_request_create_purchase_ask_party_form</field>
</record>
<record model="ir.action.wizard" id="wizard_create_purchase">
<field name="name">Create Purchase</field>
@@ -218,9 +131,7 @@ this repository contains the full copyright notices and license terms. -->
<field name="global_p" eval="True"/>
</record>
<record model="ir.rule" id="rule_purchase_request">
- <field name="field" search="[('name', '=', 'company'), ('model.model', '=', 'purchase.request')]"/>
- <field name="operator">=</field>
- <field name="operand">User/Current Company</field>
+ <field name="domain">[('company', '=', user.company.id if user.company else None)]</field>
<field name="rule_group" ref="rule_group_purchase_request"/>
</record>
diff --git a/setup.py b/setup.py
index 5c457de..014db6c 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))
setup(name='trytond_stock_supply',
version=info.get('version', '0.0.1'),
@@ -36,16 +36,16 @@ setup(name='trytond_stock_supply',
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_supply': '.'},
packages=[
'trytond.modules.stock_supply',
'trytond.modules.stock_supply.tests',
],
package_data={
- 'trytond.modules.stock_supply': info.get('xml', []) \
- + ['tryton.cfg', 'locale/*.po'],
+ 'trytond.modules.stock_supply': (info.get('xml', [])
+ + ['tryton.cfg', 'view/*.xml', 'locale/*.po']),
},
classifiers=[
'Development Status :: 5 - Production/Stable',
@@ -57,6 +57,7 @@ setup(name='trytond_stock_supply',
'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/shipment.py b/shipment.py
index a9d5f7f..c21553f 100644
--- a/shipment.py
+++ b/shipment.py
@@ -15,14 +15,14 @@ class ShipmentInternal(ModelSQL, ModelView):
def __register__(cls, module_name):
cursor = Transaction().cursor
# Migration from 1.2: packing renamed into shipment
- cursor.execute("UPDATE ir_model_data "\
- "SET fs_id = REPLACE(fs_id, 'packing', 'shipment') "\
- "WHERE fs_id like '%%packing%%' AND module = %s",
- (module_name,))
- cursor.execute("UPDATE ir_model "\
- "SET model = REPLACE(model, 'packing', 'shipment') "\
- "WHERE model like '%%packing%%' AND module = %s",
- (module_name,))
+ cursor.execute("UPDATE ir_model_data "
+ "SET fs_id = REPLACE(fs_id, 'packing', 'shipment') "
+ "WHERE fs_id like '%%packing%%' AND module = %s",
+ (module_name,))
+ cursor.execute("UPDATE ir_model "
+ "SET model = REPLACE(model, 'packing', 'shipment') "
+ "WHERE model like '%%packing%%' AND module = %s",
+ (module_name,))
super(ShipmentInternal, cls).__register__(module_name)
@classmethod
diff --git a/tests/test_stock_supply.py b/tests/test_stock_supply.py
index 0dde8fb..79809aa 100644
--- a/tests/test_stock_supply.py
+++ b/tests/test_stock_supply.py
@@ -10,6 +10,7 @@ if os.path.isdir(DIR):
sys.path.insert(0, os.path.dirname(DIR))
import unittest
+import doctest
import datetime
from decimal import Decimal
import trytond.tests.test_tryton
@@ -39,6 +40,7 @@ class StockSupplyTestCase(unittest.TestCase):
self.uom = POOL.get('product.uom')
self.uom_category = POOL.get('product.uom.category')
self.category = POOL.get('product.category')
+ self.template = POOL.get('product.template')
self.product = POOL.get('product.product')
self.company = POOL.get('company.company')
self.party = POOL.get('party.party')
@@ -87,24 +89,27 @@ class StockSupplyTestCase(unittest.TestCase):
:param delivery_time: time in days needed to supply
:return: the id of the Product Supplier
'''
- uom_category = self.uom_category.create({'name': 'Test'})
- uom = self.uom.create({
- 'name': 'Test',
- 'symbol': 'T',
- 'category': uom_category.id,
- 'rate': 1.0,
- 'factor': 1.0,
- })
- category = self.category.create({'name': 'ProdCategoryTest'})
- product = self.product.create({
- 'name': 'ProductTest',
- 'default_uom': uom.id,
- 'category': category.id,
- 'account_category': True,
- 'list_price': Decimal(0),
- 'cost_price': Decimal(0),
- })
- company, = self.company.search([('name', '=', 'B2CK')])
+ uom_category, = self.uom_category.create([{'name': 'Test'}])
+ uom, = self.uom.create([{
+ 'name': 'Test',
+ 'symbol': 'T',
+ 'category': uom_category.id,
+ 'rate': 1.0,
+ 'factor': 1.0,
+ }])
+ category, = self.category.create([{'name': 'ProdCategoryTest'}])
+ template, = self.template.create([{
+ 'name': 'ProductTest',
+ 'default_uom': uom.id,
+ 'category': category.id,
+ 'account_category': True,
+ 'list_price': Decimal(0),
+ 'cost_price': Decimal(0),
+ }])
+ product, = self.product.create([{
+ 'template': template.id,
+ }])
+ company, = self.company.search([('rec_name', '=', 'B2CK')])
self.user.write([self.user(USER)], {
'main_company': company.id,
'company': company.id,
@@ -117,17 +122,17 @@ class StockSupplyTestCase(unittest.TestCase):
('kind', '=', 'payable'),
('company', '=', company.id),
])
- supplier = self.party.create({
- 'name': 'supplier',
- 'account_receivable': receivable.id,
- 'account_payable': payable.id,
- })
- product_supplier = self.product_supplier.create({
- 'product': product.id,
- 'company': company.id,
- 'party': supplier.id,
- 'delivery_time': delivery_time,
- })
+ supplier, = self.party.create([{
+ 'name': 'supplier',
+ 'account_receivable': receivable.id,
+ 'account_payable': payable.id,
+ }])
+ product_supplier, = self.product_supplier.create([{
+ 'product': template.id,
+ 'company': company.id,
+ 'party': supplier.id,
+ 'delivery_time': delivery_time,
+ }])
return product_supplier
@@ -139,7 +144,7 @@ def suite():
suite.addTest(test)
from trytond.modules.account.tests import test_account
for test in test_account.suite():
- if test not in suite:
+ if test not in suite and not isinstance(test, doctest.DocTestCase):
suite.addTest(test)
suite.addTests(unittest.TestLoader().loadTestsFromTestCase(
StockSupplyTestCase))
diff --git a/tryton.cfg b/tryton.cfg
index c016a81..ca800af 100644
--- a/tryton.cfg
+++ b/tryton.cfg
@@ -1,5 +1,5 @@
[tryton]
-version=2.6.0
+version=2.8.0
depends:
account
ir
diff --git a/trytond_stock_supply.egg-info/PKG-INFO b/trytond_stock_supply.egg-info/PKG-INFO
index d525a1b..a962b0f 100644
--- a/trytond_stock_supply.egg-info/PKG-INFO
+++ b/trytond_stock_supply.egg-info/PKG-INFO
@@ -1,12 +1,12 @@
-Metadata-Version: 1.0
+Metadata-Version: 1.1
Name: trytond-stock-supply
-Version: 2.6.0
+Version: 2.8.0
Summary: Tryton module for stock supply
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_supply
====================
@@ -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_supply.egg-info/SOURCES.txt b/trytond_stock_supply.egg-info/SOURCES.txt
index 0e8c059..dbd7359 100644
--- a/trytond_stock_supply.egg-info/SOURCES.txt
+++ b/trytond_stock_supply.egg-info/SOURCES.txt
@@ -33,4 +33,11 @@ trytond_stock_supply.egg-info/dependency_links.txt
trytond_stock_supply.egg-info/entry_points.txt
trytond_stock_supply.egg-info/not-zip-safe
trytond_stock_supply.egg-info/requires.txt
-trytond_stock_supply.egg-info/top_level.txt
\ No newline at end of file
+trytond_stock_supply.egg-info/top_level.txt
+view/order_point_form.xml
+view/order_point_tree.xml
+view/purchase_request_create_purchase_ask_party_form.xml
+view/purchase_request_create_purchase_ask_term_form.xml
+view/purchase_request_create_start_form.xml
+view/purchase_request_form.xml
+view/purchase_request_tree.xml
\ No newline at end of file
diff --git a/trytond_stock_supply.egg-info/requires.txt b/trytond_stock_supply.egg-info/requires.txt
index 8ba04ca..c6176f5 100644
--- a/trytond_stock_supply.egg-info/requires.txt
+++ b/trytond_stock_supply.egg-info/requires.txt
@@ -1,6 +1,6 @@
-trytond_account >= 2.6, < 2.7
-trytond_party >= 2.6, < 2.7
-trytond_product >= 2.6, < 2.7
-trytond_purchase >= 2.6, < 2.7
-trytond_stock >= 2.6, < 2.7
-trytond >= 2.6, < 2.7
\ No newline at end of file
+trytond_account >= 2.8, < 2.9
+trytond_party >= 2.8, < 2.9
+trytond_product >= 2.8, < 2.9
+trytond_purchase >= 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/order_point_form.xml b/view/order_point_form.xml
new file mode 100644
index 0000000..226bcdc
--- /dev/null
+++ b/view/order_point_form.xml
@@ -0,0 +1,28 @@
+<?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="Order Point" cursor="product">
+ <separator string="Product Info" colspan="4" id="info"/>
+ <label name="company"/>
+ <field name="company"/>
+ <newline/>
+ <label name="product"/>
+ <field name="product"/>
+ <label name="unit"/>
+ <field name="unit"/>
+ <label name="min_quantity"/>
+ <field name="min_quantity"/>
+ <label name="max_quantity"/>
+ <field name="max_quantity"/>
+ <separator string="Order Point Type" colspan="4" id="type"/>
+ <label name="type"/>
+ <field name="type"/>
+ <newline/>
+ <label name="warehouse_location"/>
+ <field name="warehouse_location"/>
+ <newline/>
+ <label name="storage_location"/>
+ <field name="storage_location"/>
+ <label name="provisioning_location"/>
+ <field name="provisioning_location"/>
+</form>
diff --git a/view/order_point_tree.xml b/view/order_point_tree.xml
new file mode 100644
index 0000000..1ac529f
--- /dev/null
+++ b/view/order_point_tree.xml
@@ -0,0 +1,12 @@
+<?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="Order Points">
+ <field name="product"/>
+ <field name="location"/>
+ <field name="type"/>
+ <field name="company"/>
+ <field name="min_quantity"/>
+ <field name="max_quantity"/>
+ <field name="unit"/>
+</tree>
diff --git a/view/purchase_request_create_purchase_ask_party_form.xml b/view/purchase_request_create_purchase_ask_party_form.xml
new file mode 100644
index 0000000..abddcf6
--- /dev/null
+++ b/view/purchase_request_create_purchase_ask_party_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. -->
+<form string="Create Purchase: Missing Supplier" col="2" cursor="party">
+ <label name="product"/>
+ <field name="product"/>
+ <label name="company"/>
+ <field name="company"/>
+ <label name="party"/>
+ <field name="party"/>
+</form>
diff --git a/view/purchase_request_create_purchase_ask_term_form.xml b/view/purchase_request_create_purchase_ask_term_form.xml
new file mode 100644
index 0000000..26395cb
--- /dev/null
+++ b/view/purchase_request_create_purchase_ask_term_form.xml
@@ -0,0 +1,13 @@
+<?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="Create Purchase: Missing Payment Term" col="2"
+ cursor="payment_term">
+ <label name="party"/>
+ <field name="party"/>
+ <label name="company"/>
+ <field name="company"/>
+ <label name="payment_term"/>
+ <field name="payment_term"/>
+</form>
+
diff --git a/view/purchase_request_create_start_form.xml b/view/purchase_request_create_start_form.xml
new file mode 100644
index 0000000..9c7d3cc
--- /dev/null
+++ b/view/purchase_request_create_start_form.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. -->
+<form string="Create Purchase Request" col="2">
+ <image name="tryton-dialog-information" xexpand="0" xfill="0"/>
+ <label string="Create Purchase Request?" id="create"
+ yalign="0.0" xalign="0.0" xexpand="1"/>
+</form>
diff --git a/view/purchase_request_form.xml b/view/purchase_request_form.xml
new file mode 100644
index 0000000..8fc7cf7
--- /dev/null
+++ b/view/purchase_request_form.xml
@@ -0,0 +1,37 @@
+<?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="Purchase Request">
+ <separator string="Product Info" colspan="4" id="product"/>
+ <label name="product"/>
+ <field name="product"/>
+ <newline/>
+ <label name="quantity"/>
+ <field name="quantity"/>
+ <label name="uom"/>
+ <field name="uom"/>
+ <label name="computed_quantity"/>
+ <field name="computed_quantity"/>
+ <label name="computed_uom"/>
+ <field name="computed_uom"/>
+ <separator string="Supply Info" colspan="4" id="supply"/>
+ <label name="party"/>
+ <field name="party"/>
+ <newline/>
+ <label name="warehouse"/>
+ <field name="warehouse"/>
+ <label name="company"/>
+ <field name="company"/>
+ <label name="purchase_date"/>
+ <field name="purchase_date"/>
+ <label name="supply_date"/>
+ <field name="supply_date"/>
+ <label name="purchase"/>
+ <field name="purchase"/>
+ <label name="stock_level"/>
+ <field name="stock_level"/>
+ <label name="origin"/>
+ <field name="origin"/>
+ <label name="state"/>
+ <field name="state"/>
+</form>
diff --git a/view/purchase_request_tree.xml b/view/purchase_request_tree.xml
new file mode 100644
index 0000000..87d901d
--- /dev/null
+++ b/view/purchase_request_tree.xml
@@ -0,0 +1,14 @@
+<?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="Purchase Requests">
+ <field name="product"/>
+ <field name="quantity"/>
+ <field name="uom"/>
+ <field name="warehouse"/>
+ <field name="party"/>
+ <field name="purchase_date"/>
+ <field name="stock_level"/>
+ <field name="company"/>
+ <field name="state"/>
+</tree>
commit e5224bf7144f2ce2dd29b55110003caa394b2ac6
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Sat Apr 27 18:44:57 2013 +0200
Releasing debian version 2.6.0-4.
diff --git a/debian/changelog b/debian/changelog
index 34ca780..a4ae9fe 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+tryton-modules-stock-supply (2.6.0-4) experimental; urgency=low
+
+ * Removing Daniel from Uploaders. Thanks for your work! (Closes: #704405).
+ * Improving update of major version in Depends.
+
+ -- Mathias Behrle <mathiasb at m9s.biz> Sat, 27 Apr 2013 15:09:25 +0200
+
tryton-modules-stock-supply (2.6.0-3) experimental; urgency=low
* Updating Vcs-Git to correct address.
commit 6adae44c0373e03a575d33331f6636031d3bf9ec
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 84c5d2f..fab15a1 100644
--- a/debian/control
+++ b/debian/control
@@ -13,10 +13,12 @@ X-Python-Version: >= 2.5
Package: tryton-modules-stock-supply
Architecture: all
Depends:
- ${misc:Depends}, ${python:Depends}, tryton-server (>= 2.6),
- tryton-modules-account (>= 2.6), tryton-modules-party (>= 2.6),
- tryton-modules-product (>= 2.6), tryton-modules-purchase (>= 2.6),
- tryton-modules-stock (>= 2.6), python-pkg-resources
+ ${misc:Depends}, ${python:Depends}, tryton-server (>= ${version:major}),
+ tryton-modules-account (>= ${version:major}),
+ tryton-modules-party (>= ${version:major}),
+ tryton-modules-product (>= ${version:major}),
+ tryton-modules-purchase (>= ${version:major}),
+ tryton-modules-stock (>= ${version:major}), python-pkg-resources
Description: Tryton Application Platform (Stock Supply 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 baf78c75d6a9e47a4ed96d14b21606edbffa9e8c
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Sun Apr 21 23:38:15 2013 +0200
Removing Daniel from Uploaders. Thanks for your work! (Closes: #704405).
diff --git a/debian/control b/debian/control
index 18760b7..84c5d2f 100644
--- a/debian/control
+++ b/debian/control
@@ -2,7 +2,7 @@ Source: tryton-modules-stock-supply
Section: python
Priority: optional
Maintainer: Debian Tryton Maintainers <maintainers at debian.tryton.org>
-Uploaders: Daniel Baumann <daniel at debian.org>, Mathias Behrle <mathiasb at m9s.biz>
+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/
commit 67ad7fb89790f2c9345ff57b9b051912a5dcded3
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Sat Mar 23 15:04:17 2013 +0100
Releasing debian version 2.6.0-3.
diff --git a/debian/changelog b/debian/changelog
index e0ff47d..34ca780 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+tryton-modules-stock-supply (2.6.0-3) experimental; urgency=low
+
+ * Updating Vcs-Git to correct address.
+ * Adding watch file. Thanks to Bart Martens <bartm at debian.org>.
+
+ -- Mathias Behrle <mathiasb at m9s.biz> Sat, 23 Mar 2013 14:01:27 +0100
+
tryton-modules-stock-supply (2.6.0-2) experimental; urgency=low
* Removing obsolete Dm-Upload-Allowed
commit 489f2efbbf4772577b236ae7eb0aeb532fdbafb9
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Sat Mar 23 13:52:33 2013 +0100
Adding watch file. Thanks to Bart Martens <bartm at debian.org>.
diff --git a/debian/watch b/debian/watch
new file mode 100644
index 0000000..0dcadff
--- /dev/null
+++ b/debian/watch
@@ -0,0 +1,2 @@
+version=3
+http://downloads.tryton.org/current/ .*trytond_stock_supply-(\d.*)\.(?:tgz|tbz2|txz|tar\.(?:gz|bz2|xz))
commit e67a6b7b0f88756129b7c89e240060bea3e8b9dd
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Sat Feb 23 20:08:12 2013 +0100
Updating Vcs-Git to correct address.
diff --git a/debian/control b/debian/control
index 4c4c5ec..18760b7 100644
--- a/debian/control
+++ b/debian/control
@@ -7,7 +7,7 @@ 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-supply.git
-Vcs-Git: git://debian.tryton.org/git/packages/tryton-modules-stock-supply.git
+Vcs-Git: git://debian.tryton.org/packages/tryton-modules-stock-supply.git
X-Python-Version: >= 2.5
Package: tryton-modules-stock-supply
commit f2f2db73c6399185c21ccdecbc210aeb654308ca
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Sun Feb 17 13:50:48 2013 +0100
Releasing debian version 2.6.0-2.
diff --git a/debian/changelog b/debian/changelog
index f7f497d..e0ff47d 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,11 @@
+tryton-modules-stock-supply (2.6.0-2) experimental; urgency=low
+
+ * Removing obsolete Dm-Upload-Allowed
+ * Updating to Standards-Version: 3.9.4, no changes needed.
+ * Updating copyright.
+
+ -- Mathias Behrle <mathiasb at m9s.biz> Sat, 16 Feb 2013 21:44:19 +0100
+
tryton-modules-stock-supply (2.6.0-1) experimental; urgency=low
* Merging upstream version 2.6.0.
commit c60d814d517b696405acca6b02b3835ba5709d0a
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Sat Feb 16 21:29:21 2013 +0100
Updating copyright.
diff --git a/debian/copyright b/debian/copyright
index 5e95cf4..3c647d6 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -1,8 +1,7 @@
Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Files: *
-Copyright:
- 2008-2012 Cedric Krier
+Copyright: 2008-2012 Cédric Krier
2008-2012 Bertrand Chenal
2008-2012 B2CK SPRL
License: GPL-3+
@@ -10,7 +9,7 @@ License: GPL-3+
Files: debian/*
Copyright:
2009-2012 Daniel Baumann <daniel at debian.org>
- 2012 Mathias Behrle <mathiasb at m9s.biz>
+ 2012-2013 Mathias Behrle <mathiasb at m9s.biz>
License: GPL-3+
License: GPL-3+
commit b59b2741119591dbad662561b8644cf887ecaf62
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Fri Feb 15 19:28:38 2013 +0100
Updating to Standards-Version: 3.9.4, no changes needed.
diff --git a/debian/control b/debian/control
index f247faf..4c4c5ec 100644
--- a/debian/control
+++ b/debian/control
@@ -4,7 +4,7 @@ Priority: optional
Maintainer: Debian Tryton Maintainers <maintainers at debian.tryton.org>
Uploaders: Daniel Baumann <daniel at debian.org>, Mathias Behrle <mathiasb at m9s.biz>
Build-Depends: debhelper (>= 9), python (>= 2.6.6-3~), python-setuptools
-Standards-Version: 3.9.3
+Standards-Version: 3.9.4
Homepage: http://www.tryton.org/
Vcs-Browser: http://debian.tryton.org/gitweb/?p=packages/tryton-modules-stock-supply.git
Vcs-Git: git://debian.tryton.org/git/packages/tryton-modules-stock-supply.git
commit d4ab62f1b1073fd3dd1ecee7ab1719585265b181
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Wed Feb 13 21:37:13 2013 +0100
Removing obsolete Dm-Upload-Allowed
diff --git a/debian/control b/debian/control
index 311eebd..f247faf 100644
--- a/debian/control
+++ b/debian/control
@@ -3,7 +3,6 @@ Section: python
Priority: optional
Maintainer: Debian Tryton Maintainers <maintainers at debian.tryton.org>
Uploaders: Daniel Baumann <daniel at debian.org>, Mathias Behrle <mathiasb at m9s.biz>
-Dm-Upload-Allowed: yes
Build-Depends: debhelper (>= 9), python (>= 2.6.6-3~), python-setuptools
Standards-Version: 3.9.3
Homepage: http://www.tryton.org/
commit 72ae40fe754ad5c87aab9b092b307f90b266f2ce
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Wed Oct 24 22:02:16 2012 +0200
Releasing debian version 2.6.0-1.
diff --git a/debian/changelog b/debian/changelog
index 62e4cd0..f7f497d 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+tryton-modules-stock-supply (2.6.0-1) experimental; urgency=low
+
+ * Merging upstream version 2.6.0.
+ * Bumping versioned tryton depends to 2.6.
+
+ -- Mathias Behrle <mathiasb at m9s.biz> Wed, 24 Oct 2012 14:25:18 +0200
+
tryton-modules-stock-supply (2.4.1-2) experimental; urgency=low
[ Daniel Baumann ]
commit f2c164c8f430e5844da588f59e225725d54a2933
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Tue Oct 23 19:59:46 2012 +0200
Bumping versioned tryton depends to 2.6.
diff --git a/debian/control b/debian/control
index bd6f7e4..311eebd 100644
--- a/debian/control
+++ b/debian/control
@@ -14,10 +14,10 @@ X-Python-Version: >= 2.5
Package: tryton-modules-stock-supply
Architecture: all
Depends:
- ${misc:Depends}, ${python:Depends}, tryton-server (>= 2.4),
- tryton-modules-account (>= 2.4), tryton-modules-party (>= 2.4),
- tryton-modules-product (>= 2.4), tryton-modules-purchase (>= 2.4),
- tryton-modules-stock (>= 2.4), python-pkg-resources
+ ${misc:Depends}, ${python:Depends}, tryton-server (>= 2.6),
+ tryton-modules-account (>= 2.6), tryton-modules-party (>= 2.6),
+ tryton-modules-product (>= 2.6), tryton-modules-purchase (>= 2.6),
+ tryton-modules-stock (>= 2.6), python-pkg-resources
Description: Tryton Application Platform (Stock Supply 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
commit 1791108b93c9db3d9ed324861becb509b58bf6f0
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Tue Oct 23 19:54:03 2012 +0200
Merging upstream version 2.6.0.
diff --git a/CHANGELOG b/CHANGELOG
index 3fb25d2..0a733df 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,5 +1,6 @@
-Version 2.4.1 - 2012-09-02
+Version 2.6.0 - 2012-10-22
* Bug fixes (see mercurial logs for details)
+* Generate also purchase requests for assets
Version 2.4.0 - 2012-04-24
* Bug fixes (see mercurial logs for details)
diff --git a/MANIFEST.in b/MANIFEST.in
index 32879df..97a9596 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -4,6 +4,7 @@ include TODO
include COPYRIGHT
include CHANGELOG
include LICENSE
+include tryton.cfg
include *.xml
include *.odt
include locale/*.po
diff --git a/PKG-INFO b/PKG-INFO
index 8566e4e..3cf5a31 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,20 +1,48 @@
Metadata-Version: 1.0
Name: trytond_stock_supply
-Version: 2.4.1
-Summary: Supply Management Module with:
- - Order point
- - Purchase Request
-
-With schedulers:
- - to generate purchase requests based on order points
- - to generate internal shipments based on order points
-
+Version: 2.6.0
+Summary: Tryton module for stock supply
Home-page: http://www.tryton.org/
-Author: B2CK
-Author-email: info at b2ck.com
+Author: Tryton
+Author-email: UNKNOWN
License: GPL-3
-Download-URL: http://downloads.tryton.org/2.4/
-Description: UNKNOWN
+Download-URL: http://downloads.tryton.org/2.6/
+Description: trytond_stock_supply
+ ====================
+
+ The stock_supply module of the Tryton application platform.
+
+ Installing
+ ----------
+
+ See INSTALL
+
+ Support
+ -------
+
+ If you encounter any problems with Tryton, please don't hesitate to ask
+ questions on the Tryton bug tracker, mailing list, wiki or IRC channel:
+
+ http://bugs.tryton.org/
+ http://groups.tryton.org/
+ http://wiki.tryton.org/
+ irc://irc.freenode.net/tryton
+
+ License
+ -------
+
+ See LICENSE
+
+ Copyright
+ ---------
+
+ See COPYRIGHT
+
+
+ For more information please visit the Tryton web site:
+
+ http://www.tryton.org/
+
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Plugins
diff --git a/README b/README
index 4c3c6fc..d3bcfb2 100644
--- a/README
+++ b/README
@@ -2,7 +2,6 @@ trytond_stock_supply
====================
The stock_supply module of the Tryton application platform.
-See __tryton__.py
Installing
----------
diff --git a/__init__.py b/__init__.py
index e471762..bb58ef5 100644
--- a/__init__.py
+++ b/__init__.py
@@ -1,6 +1,24 @@
#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 trytond.pool import Pool
from .order_point import *
from .product import *
from .purchase_request import *
from .shipment import *
+
+
+def register():
+ Pool.register(
+ OrderPoint,
+ Product,
+ PurchaseRequest,
+ CreatePurchaseRequestStart,
+ CreatePurchaseAskTerm,
+ CreatePurchaseAskParty,
+ ShipmentInternal,
+ module='stock_supply', type_='model')
+ Pool.register(
+ CreatePurchaseRequest,
+ CreatePurchase,
+ module='stock_supply', type_='wizard')
diff --git a/__tryton__.py b/__tryton__.py
deleted file mode 100644
index cfac736..0000000
--- a/__tryton__.py
+++ /dev/null
@@ -1,107 +0,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.
-{
- 'name': 'Stock Supply Management',
- 'name_bg_BG': 'Управление на доставка на наличност',
- 'name_ca_ES': 'Gestió del proveïment d''estocs',
- 'name_de_DE': 'Lagerverwaltung Bestellwesen',
- 'name_es_AR': 'Gestión de suministro de existencias',
- 'name_es_CO': 'Gestión de pedidos de inventario',
- 'name_es_ES': 'Gestión del abastecimiento de stock',
- 'name_fr_FR': 'Gestion des approvisionnements de stock',
- 'version': '2.4.1',
- 'author': 'B2CK',
- 'email': 'info at b2ck.com',
- 'website': 'http://www.tryton.org/',
- 'description': '''Supply Management Module with:
- - Order point
- - Purchase Request
-
-With schedulers:
- - to generate purchase requests based on order points
- - to generate internal shipments based on order points
-''',
- 'description_bg_BG': '''Модул за управление на доставка на наличност с:
- - Пренареждане
- - Заявка за покупка
-
-С планировщици:
- - за генериране на заявки за покупка въз основа на пренареждания
- - за генериране на вътрешни пратки въз основа на пренареждания
-''',
- 'description_ca_ES': '''Mòdul per la gestió del proveïment d'estocs amb:
- - Estocs mínims
- - Peticions de compra
-
-I planificadors:
- - Per generar peticions de compra basades en estocs mínims
- - Per generar albarans interns basats en estocs mínims
-''',
- 'description_de_DE': '''Modul für das Bestellwesen mit:
- - Bestellpunkten
- - Auftragserstellung
-
-Mit automatischer Auftragserstellung per Zeitplaner:
- - für Bestellungen auf der Basis von Bestellpunkten
- - für interne Lieferposten auf der Basis von Bestellpunkten
-''',
- 'description_es_AR': '''Módulo de gestión de suministros con:
- - Punto de orden
- - Solicitud de compra
-
-Con tareas programadas para:
- - generar solicitudes de compra basados en puntos de orden
- - generar envios internos basados en puntos de orden
-''',
- 'description_es_CO': '''Módulo de Administración de pedidos:
- - Punto de Orden
- - Solicitud de Compras
-
-Con agendadores para:
- - generar solicitudes de compra basados en puntos de orden
- - generar empaques internos basados en puntos de orden
-''',
- 'description_es_ES': '''Módulo para la gestión de abastecimientos con:
- - Reglas de stock mínimo
- - Solicitudes de compra
-
-Con planificadores para:
- - Generar solicitudes de compra basadas en stocks mínimos
- - Generar envíos internos basados en stocks mínimos
-''',
- 'description_fr_FR': '''Module de gestion des approvisionnements avec:
- - Règles d'approvisionnement
- - Demandes d'achat
-
-Et les planificateurs pour générer:
- - des demandes d'achat et
- - des colisages internes
-sur base des règles d'approvisionnement
-''',
- 'depends': [
- 'ir',
- 'res',
- 'product',
- 'stock',
- 'purchase',
- 'party',
- 'account',
- ],
- 'xml': [
- 'order_point.xml',
- 'purchase_request.xml',
- 'shipment.xml',
- ],
- 'translation': [
- 'locale/cs_CZ.po',
- 'locale/bg_BG.po',
- 'locale/ca_ES.po',
- 'locale/de_DE.po',
- 'locale/es_AR.po',
- 'locale/es_CO.po',
- 'locale/es_ES.po',
- 'locale/fr_FR.po',
- 'locale/nl_NL.po',
- 'locale/ru_RU.po',
- ]
-}
diff --git a/locale/bg_BG.po b/locale/bg_BG.po
index b910fd2..0217d67 100644
--- a/locale/bg_BG.po
+++ b/locale/bg_BG.po
@@ -16,7 +16,7 @@ msgstr "Заявките за покупка се създават само от
msgctxt "error:purchase.request:"
msgid "The requested quantity must be greater than 0"
-msgstr ""
+msgstr "Поръчаното количество трябва да е по-голямо от 0"
msgctxt "error:stock.order_point:"
msgid "Maximal quantity must be bigger than Minimal quantity"
@@ -118,7 +118,7 @@ msgstr "Склад"
msgctxt "field:purchase.request,warehouse_required:"
msgid "Warehouse Required"
-msgstr ""
+msgstr "Склада е необходим"
msgctxt "field:purchase.request,write_date:"
msgid "Write Date"
diff --git a/locale/ca_ES.po b/locale/ca_ES.po
index 17d3038..7405001 100644
--- a/locale/ca_ES.po
+++ b/locale/ca_ES.po
@@ -16,7 +16,7 @@ msgstr "Les sol·licituds de compra només les crea el sistema."
msgctxt "error:purchase.request:"
msgid "The requested quantity must be greater than 0"
-msgstr ""
+msgstr "La quantitat sol·licitada ha de ser més gran que 0."
msgctxt "error:stock.order_point:"
msgid "Maximal quantity must be bigger than Minimal quantity"
@@ -54,16 +54,15 @@ msgstr "UdM calculada"
msgctxt "field:purchase.request,create_date:"
msgid "Create Date"
-msgstr ""
+msgstr "Data creació"
-#, fuzzy
msgctxt "field:purchase.request,create_uid:"
msgid "Create User"
-msgstr "Crear usuari"
+msgstr "Usuari creació"
msgctxt "field:purchase.request,id:"
msgid "ID"
-msgstr ""
+msgstr "ID"
msgctxt "field:purchase.request,origin:"
msgid "Origin"
@@ -119,19 +118,19 @@ msgstr "Magatzem"
msgctxt "field:purchase.request,warehouse_required:"
msgid "Warehouse Required"
-msgstr ""
+msgstr "Magatzem requerit"
msgctxt "field:purchase.request,write_date:"
msgid "Write Date"
-msgstr ""
+msgstr "Data modificació"
msgctxt "field:purchase.request,write_uid:"
msgid "Write User"
-msgstr ""
+msgstr "Usuari modificació"
msgctxt "field:purchase.request.create.start,id:"
msgid "ID"
-msgstr ""
+msgstr "ID"
msgctxt "field:purchase.request.create_purchase.ask_party,company:"
msgid "Company"
@@ -139,7 +138,7 @@ msgstr "Empresa"
msgctxt "field:purchase.request.create_purchase.ask_party,id:"
msgid "ID"
-msgstr ""
+msgstr "ID"
msgctxt "field:purchase.request.create_purchase.ask_party,party:"
msgid "Supplier"
@@ -155,7 +154,7 @@ msgstr "Empresa"
msgctxt "field:purchase.request.create_purchase.ask_term,id:"
msgid "ID"
-msgstr ""
+msgstr "ID"
msgctxt "field:purchase.request.create_purchase.ask_term,party:"
msgid "Supplier"
@@ -171,16 +170,15 @@ msgstr "Empresa"
msgctxt "field:stock.order_point,create_date:"
msgid "Create Date"
-msgstr ""
+msgstr "Data creació"
-#, fuzzy
msgctxt "field:stock.order_point,create_uid:"
msgid "Create User"
-msgstr "Crear usuari"
+msgstr "Usuari creació"
msgctxt "field:stock.order_point,id:"
msgid "ID"
-msgstr ""
+msgstr "ID"
msgctxt "field:stock.order_point,location:"
msgid "Location"
@@ -228,11 +226,11 @@ msgstr "Ubicació del magatzem"
msgctxt "field:stock.order_point,write_date:"
msgid "Write Date"
-msgstr ""
+msgstr "Data modificació"
msgctxt "field:stock.order_point,write_uid:"
msgid "Write User"
-msgstr ""
+msgstr "Usuari modificació"
msgctxt "model:ir.action,name:act_order_point_form"
msgid "Order Points"
@@ -244,7 +242,7 @@ msgstr "Compres"
msgctxt "model:ir.action,name:act_purchase_request_create"
msgid "Create Purchase Requests"
-msgstr ""
+msgstr "Crear Ordres de producció"
msgctxt "model:ir.action,name:act_purchase_request_form"
msgid "Purchase Requests"
@@ -252,7 +250,7 @@ msgstr "Sol·licituds de compra"
msgctxt "model:ir.action,name:act_purchase_request_form_draft"
msgid "Draft Purchase Requests"
-msgstr ""
+msgstr "Ordres de producció en esborrany"
msgctxt "model:ir.action,name:wizard_create_purchase"
msgid "Create Purchase"
@@ -272,7 +270,7 @@ msgstr "Regles d'estoc mínim"
msgctxt "model:ir.ui.menu,name:menu_purchase_request_create"
msgid "Create Purchase Requests"
-msgstr ""
+msgstr "Crear Ordres de producció"
msgctxt "model:ir.ui.menu,name:menu_purchase_request_form"
msgid "Purchase Requests"
@@ -280,7 +278,7 @@ msgstr "Sol·licituds de compra"
msgctxt "model:ir.ui.menu,name:menu_purchase_request_form_draft"
msgid "Draft Purchase Requests"
-msgstr ""
+msgstr "Ordres de producció en esborrany"
msgctxt "model:purchase.request,name:"
msgid "Purchase Request"
@@ -288,7 +286,7 @@ msgstr "Sol·licitud de compra"
msgctxt "model:purchase.request.create.start,name:"
msgid "Create Purchase Request"
-msgstr ""
+msgstr "Crear sol·licitud de compra"
msgctxt "model:purchase.request.create_purchase.ask_party,name:"
msgid "Create Purchase Ask Party"
@@ -320,7 +318,7 @@ msgstr "Regla d'estoc mínim"
msgctxt "selection:purchase.request,state:"
msgid "Cancel"
-msgstr "Cancel·lar"
+msgstr "Cancel·la"
msgctxt "selection:purchase.request,state:"
msgid "Done"
@@ -344,11 +342,11 @@ msgstr "Compra"
msgctxt "view:purchase.request.create.start:"
msgid "Create Purchase Request"
-msgstr ""
+msgstr "Crear sol·licituds de compra?"
msgctxt "view:purchase.request.create.start:"
msgid "Create Purchase Request?"
-msgstr ""
+msgstr "Crear sol·licituds de compra?"
msgctxt "view:purchase.request.create_purchase.ask_party:"
msgid "Create Purchase: Missing Supplier"
@@ -386,7 +384,6 @@ msgctxt "view:stock.order_point:"
msgid "Order Point Type"
msgstr "Tipus d'ordre de pagament"
-#, fuzzy
msgctxt "view:stock.order_point:"
msgid "Order Points"
msgstr "Regles d'estoc mínim"
@@ -397,27 +394,24 @@ msgstr "Informació del producte"
msgctxt "wizard_button:purchase.request.create,start,create_:"
msgid "Create"
-msgstr ""
+msgstr "Crear"
-#, fuzzy
msgctxt "wizard_button:purchase.request.create,start,end:"
msgid "Cancel"
-msgstr "Cancel·lar"
+msgstr "Cancel·la"
-#, fuzzy
msgctxt "wizard_button:purchase.request.create_purchase,ask_party,end:"
msgid "Cancel"
-msgstr "Cancel·lar"
+msgstr "Cancel·la"
msgctxt "wizard_button:purchase.request.create_purchase,ask_party,start:"
msgid "Continue"
-msgstr ""
+msgstr "Continuar"
-#, fuzzy
msgctxt "wizard_button:purchase.request.create_purchase,ask_term,end:"
msgid "Cancel"
-msgstr "Cancel·lar"
+msgstr "Cancel·la"
msgctxt "wizard_button:purchase.request.create_purchase,ask_term,start:"
msgid "Continue"
-msgstr ""
+msgstr "Continuar"
diff --git a/locale/es_AR.po b/locale/es_AR.po
index 242b7ed..db0a577 100644
--- a/locale/es_AR.po
+++ b/locale/es_AR.po
@@ -256,11 +256,11 @@ msgstr "Crear compra"
msgctxt "model:ir.cron,name:cron_generate_request"
msgid "Generate Purchase Requests"
-msgstr "Generar peticiones de compra"
+msgstr "Generar Peticiones de compra"
msgctxt "model:ir.cron,name:cron_shipment_iternal"
msgid "Generate Internal Shipments"
-msgstr "Generar envios internos"
+msgstr "Generar Envíos internos"
msgctxt "model:ir.ui.menu,name:menu_order_point_form"
msgid "Order Points"
@@ -300,11 +300,11 @@ msgstr "Solicitud de compra"
msgctxt "model:res.user,name:user_generate_request"
msgid "Cron Purchase Request"
-msgstr "Programador de tareas de solicitudes de compra"
+msgstr "Programador de Solicitudes de compra"
msgctxt "model:res.user,name:user_generate_shipment_internal"
msgid "Cron Intenal Shipment"
-msgstr "Programador de tareas de envio interno"
+msgstr "Programador de Envío interno"
msgctxt "model:stock.order_point,name:"
msgid "Order Point"
diff --git a/locale/es_CO.po b/locale/es_CO.po
index 20f44ba..2fa1f34 100644
--- a/locale/es_CO.po
+++ b/locale/es_CO.po
@@ -4,7 +4,7 @@ msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "error:purchase.request.create_purchase:"
msgid "Purchase price is missing for product: %s (id: %s)!"
-msgstr "El precio de compra falta para el producto: %s (id: %s)!"
+msgstr "Falta el precio de compra del producto: %s (id: %s)!"
msgctxt "error:purchase.request.create_purchase:"
msgid "This price is necessary for creating purchase."
@@ -16,21 +16,24 @@ msgstr "Los requisitos de compras son creados por el sistema únicamente."
msgctxt "error:purchase.request:"
msgid "The requested quantity must be greater than 0"
-msgstr ""
+msgstr "La cantidad solicitada debe ser mayor que 0"
msgctxt "error:stock.order_point:"
msgid "Maximal quantity must be bigger than Minimal quantity"
-msgstr "La cantidad máxima debe ser mayor que la Cantidad Mínima"
+msgstr "La cantidad máxima debe ser mayor que la cantidad mínima"
msgctxt "error:stock.order_point:"
msgid "Only one order point is allowed for each product-location pair."
-msgstr "Solamente se admite un punto de orden para cada par cliente-producto."
+msgstr ""
+"Solamente se permite un punto de orden para cada par producto-locación."
msgctxt "error:stock.order_point:"
msgid ""
"You can not define two order points on the same product with opposite "
"locations."
-msgstr "No puede definir dos puntos de orden con lugares opuestos."
+msgstr ""
+"No puede definir dos puntos de orden del mismo producto con lugares "
+"opuestos."
msgctxt "field:product.product,order_points:"
msgid "Order Points"
@@ -42,24 +45,23 @@ msgstr "Compañía"
msgctxt "field:purchase.request,computed_quantity:"
msgid "Computed Quantity"
-msgstr "Calcule Cantidad"
+msgstr "Cantidad Calculada"
msgctxt "field:purchase.request,computed_uom:"
msgid "Computed UOM"
-msgstr "Calcule UOM"
+msgstr "UOM Calculada"
msgctxt "field:purchase.request,create_date:"
msgid "Create Date"
-msgstr ""
+msgstr "Fecha de Creación"
-#, fuzzy
msgctxt "field:purchase.request,create_uid:"
msgid "Create User"
-msgstr "Crear usuario"
+msgstr "Creado por Usuario"
msgctxt "field:purchase.request,id:"
msgid "ID"
-msgstr ""
+msgstr "ID"
msgctxt "field:purchase.request,origin:"
msgid "Origin"
@@ -115,19 +117,19 @@ msgstr "Depósito"
msgctxt "field:purchase.request,warehouse_required:"
msgid "Warehouse Required"
-msgstr ""
+msgstr "Depósito Requerido"
msgctxt "field:purchase.request,write_date:"
msgid "Write Date"
-msgstr ""
+msgstr "Fecha de Modificación"
msgctxt "field:purchase.request,write_uid:"
msgid "Write User"
-msgstr ""
+msgstr "Modificado por Usuario"
msgctxt "field:purchase.request.create.start,id:"
msgid "ID"
-msgstr ""
+msgstr "ID"
msgctxt "field:purchase.request.create_purchase.ask_party,company:"
msgid "Company"
@@ -135,7 +137,7 @@ msgstr "Compañía"
msgctxt "field:purchase.request.create_purchase.ask_party,id:"
msgid "ID"
-msgstr ""
+msgstr "ID"
msgctxt "field:purchase.request.create_purchase.ask_party,party:"
msgid "Supplier"
@@ -151,7 +153,7 @@ msgstr "Compañía"
msgctxt "field:purchase.request.create_purchase.ask_term,id:"
msgid "ID"
-msgstr ""
+msgstr "ID"
msgctxt "field:purchase.request.create_purchase.ask_term,party:"
msgid "Supplier"
@@ -159,7 +161,7 @@ msgstr "Proveedor"
msgctxt "field:purchase.request.create_purchase.ask_term,payment_term:"
msgid "Payment Term"
-msgstr "Término de Pago"
+msgstr "Forma de Pago"
msgctxt "field:stock.order_point,company:"
msgid "Company"
@@ -167,20 +169,19 @@ msgstr "Compañía"
msgctxt "field:stock.order_point,create_date:"
msgid "Create Date"
-msgstr ""
+msgstr "Fecha de Creación"
-#, fuzzy
msgctxt "field:stock.order_point,create_uid:"
msgid "Create User"
-msgstr "Crear usuario"
+msgstr "Creado por Usuario"
msgctxt "field:stock.order_point,id:"
msgid "ID"
-msgstr ""
+msgstr "ID"
msgctxt "field:stock.order_point,location:"
msgid "Location"
-msgstr "Lugar"
+msgstr "Locación"
msgctxt "field:stock.order_point,max_quantity:"
msgid "Maximal Quantity"
@@ -196,7 +197,7 @@ msgstr "Producto"
msgctxt "field:stock.order_point,provisioning_location:"
msgid "Provisioning Location"
-msgstr "Lugar de Aprovisionamiento"
+msgstr "Locación de Aprovisionamiento"
msgctxt "field:stock.order_point,rec_name:"
msgid "Name"
@@ -204,7 +205,7 @@ msgstr "Nombre"
msgctxt "field:stock.order_point,storage_location:"
msgid "Storage Location"
-msgstr "Lugar de almacenamiento"
+msgstr "Locación de Almacenamiento"
msgctxt "field:stock.order_point,type:"
msgid "Type"
@@ -216,19 +217,19 @@ msgstr "Unidad"
msgctxt "field:stock.order_point,unit_digits:"
msgid "Unit Digits"
-msgstr "Dígitos de Unidad"
+msgstr "Decimales de Unidad"
msgctxt "field:stock.order_point,warehouse_location:"
msgid "Warehouse Location"
-msgstr "Lugar de la bodega"
+msgstr "Locación del Depósito"
msgctxt "field:stock.order_point,write_date:"
msgid "Write Date"
-msgstr ""
+msgstr "Fecha de Modificación"
msgctxt "field:stock.order_point,write_uid:"
msgid "Write User"
-msgstr ""
+msgstr "Modificado por Usuario"
msgctxt "model:ir.action,name:act_order_point_form"
msgid "Order Points"
@@ -240,7 +241,7 @@ msgstr "Compras"
msgctxt "model:ir.action,name:act_purchase_request_create"
msgid "Create Purchase Requests"
-msgstr ""
+msgstr "Crear Ordenes de Compras"
msgctxt "model:ir.action,name:act_purchase_request_form"
msgid "Purchase Requests"
@@ -248,7 +249,7 @@ msgstr "Solicitudes de Compra"
msgctxt "model:ir.action,name:act_purchase_request_form_draft"
msgid "Draft Purchase Requests"
-msgstr "Requisición de Prueba de Compras"
+msgstr "Orden de Compras en Borrador"
msgctxt "model:ir.action,name:wizard_create_purchase"
msgid "Create Purchase"
@@ -256,11 +257,11 @@ msgstr "Crear Compra"
msgctxt "model:ir.cron,name:cron_generate_request"
msgid "Generate Purchase Requests"
-msgstr "Genere Requisito de Compra"
+msgstr "Generar Orden de Compra"
msgctxt "model:ir.cron,name:cron_shipment_iternal"
msgid "Generate Internal Shipments"
-msgstr "Genere Envío Interno"
+msgstr "Generar Envío Interno"
msgctxt "model:ir.ui.menu,name:menu_order_point_form"
msgid "Order Points"
@@ -268,44 +269,45 @@ msgstr "Puntos de Orden"
msgctxt "model:ir.ui.menu,name:menu_purchase_request_create"
msgid "Create Purchase Requests"
-msgstr ""
+msgstr "Crear Ordenes de Compra"
msgctxt "model:ir.ui.menu,name:menu_purchase_request_form"
msgid "Purchase Requests"
-msgstr "Solicitudes de Compra"
+msgstr "Ordenes de Compra"
msgctxt "model:ir.ui.menu,name:menu_purchase_request_form_draft"
msgid "Draft Purchase Requests"
-msgstr "Requisición de Prueba de Compras"
+msgstr "Orden de Compra en Borrador"
msgctxt "model:purchase.request,name:"
msgid "Purchase Request"
-msgstr "Solicitud de Compra"
+msgstr "Orden de Compra"
msgctxt "model:purchase.request.create.start,name:"
msgid "Create Purchase Request"
-msgstr ""
+msgstr "Crear Orden de Compra"
msgctxt "model:purchase.request.create_purchase.ask_party,name:"
msgid "Create Purchase Ask Party"
-msgstr "Crea Pregunta a Tercero de Compra"
+msgstr "Crear Pregunta a Tercero de Compra"
msgctxt "model:purchase.request.create_purchase.ask_term,name:"
msgid "Create Purchase Ask Term"
-msgstr "Crea Pregunta a Tercero de Término"
+msgstr "Crear Pregunta a Tercero de Término"
msgctxt "model:res.group,name:group_purchase_request"
msgid "Purchase Request"
-msgstr "Solicitud de Compra"
+msgstr "Orden de Compra"
msgctxt "model:res.user,name:user_generate_request"
msgid "Cron Purchase Request"
-msgstr "Cron Requisito de Compra"
+msgstr "Cron Orden de Compra"
msgctxt "model:res.user,name:user_generate_shipment_internal"
msgid "Cron Intenal Shipment"
msgstr "Cron Envío Interno"
+#, fuzzy
msgctxt "model:stock.order_point,name:"
msgid "Order Point"
msgstr "Punto de Orden"
@@ -332,7 +334,7 @@ msgstr "Comprado"
msgctxt "selection:stock.order_point,type:"
msgid "Internal"
-msgstr "Intern@"
+msgstr "Interna"
msgctxt "selection:stock.order_point,type:"
msgid "Purchase"
@@ -340,11 +342,11 @@ msgstr "Compra"
msgctxt "view:purchase.request.create.start:"
msgid "Create Purchase Request"
-msgstr ""
+msgstr "Crear Orden de Compra"
msgctxt "view:purchase.request.create.start:"
msgid "Create Purchase Request?"
-msgstr ""
+msgstr "Crear Orden de Compra?"
msgctxt "view:purchase.request.create_purchase.ask_party:"
msgid "Create Purchase: Missing Supplier"
@@ -364,15 +366,15 @@ msgstr "Solicitud de Compra"
msgctxt "view:purchase.request:"
msgid "Purchase Requests"
-msgstr "Solicitudes de Compra"
+msgstr "Ordenes de Compra"
msgctxt "view:purchase.request:"
msgid "Supply Info"
-msgstr "Información de proveedor"
+msgstr "Información de Proveedor"
msgctxt "view:stock.order_point:"
msgid "Locations"
-msgstr "Lugares"
+msgstr "Locaciones"
msgctxt "view:stock.order_point:"
msgid "Order Point"
@@ -382,7 +384,6 @@ msgctxt "view:stock.order_point:"
msgid "Order Point Type"
msgstr "Tipo de Punto de Orden"
-#, fuzzy
msgctxt "view:stock.order_point:"
msgid "Order Points"
msgstr "Puntos de Orden"
@@ -393,27 +394,24 @@ msgstr "Información de Producto"
msgctxt "wizard_button:purchase.request.create,start,create_:"
msgid "Create"
-msgstr ""
+msgstr "Crear"
-#, fuzzy
msgctxt "wizard_button:purchase.request.create,start,end:"
msgid "Cancel"
msgstr "Cancelar"
-#, fuzzy
msgctxt "wizard_button:purchase.request.create_purchase,ask_party,end:"
msgid "Cancel"
msgstr "Cancelar"
msgctxt "wizard_button:purchase.request.create_purchase,ask_party,start:"
msgid "Continue"
-msgstr ""
+msgstr "Continuar"
-#, fuzzy
msgctxt "wizard_button:purchase.request.create_purchase,ask_term,end:"
msgid "Cancel"
msgstr "Cancelar"
msgctxt "wizard_button:purchase.request.create_purchase,ask_term,start:"
msgid "Continue"
-msgstr ""
+msgstr "Continuar"
diff --git a/locale/fr_FR.po b/locale/fr_FR.po
index 9a4c6c9..824114a 100644
--- a/locale/fr_FR.po
+++ b/locale/fr_FR.po
@@ -280,7 +280,7 @@ msgstr "Demandes d'achat"
msgctxt "model:ir.action,name:act_purchase_request_form_draft"
msgid "Draft Purchase Requests"
-msgstr "Demandes d'achat en brouillon"
+msgstr "Demandes d'achat brouillon"
msgctxt "model:ir.action,name:wizard_create_purchase"
msgid "Create Purchase"
@@ -308,7 +308,7 @@ msgstr "Demandes d'achat"
msgctxt "model:ir.ui.menu,name:menu_purchase_request_form_draft"
msgid "Draft Purchase Requests"
-msgstr "Demandes d'achat en brouillon"
+msgstr "Demandes d'achat brouillon"
msgctxt "model:purchase.request,name:"
msgid "Purchase Request"
diff --git a/order_point.py b/order_point.py
index 1140d5d..59c8cf8 100644
--- a/order_point.py
+++ b/order_point.py
@@ -3,19 +3,19 @@
from trytond.model import ModelView, ModelSQL, fields
from trytond.pyson import If, Equal, Eval, Not, In, Get
from trytond.transaction import Transaction
-from trytond.pool import Pool
from trytond.backend import TableHandler
+__all__ = ['OrderPoint']
+
class OrderPoint(ModelSQL, ModelView):
"""
- Order Point: Provide a way to define a supply policy for each
+ Order Point
+ Provide a way to define a supply policy for each
product on each locations. Order points on warehouse are
considered by the supply scheduler to generate purchase requests.
"""
- _name = 'stock.order_point'
- _description = "Order Point"
-
+ __name__ = 'stock.order_point'
product = fields.Many2One('product.product', 'Product', required=True,
select=True,
domain=[
@@ -69,18 +69,19 @@ class OrderPoint(ModelSQL, ModelView):
unit_digits = fields.Function(fields.Integer('Unit Digits'),
'get_unit_digits')
- def __init__(self):
- super(OrderPoint, self).__init__()
- self._constraints += [
+ @classmethod
+ def __setup__(cls):
+ super(OrderPoint, cls).__setup__()
+ cls._constraints += [
('check_concurrent_internal', 'concurrent_internal_op'),
('check_uniqueness', 'unique_op'),
]
- self._sql_constraints += [
+ cls._sql_constraints += [
('check_max_qty_greater_min_qty',
'CHECK(max_quantity >= min_quantity)',
'Maximal quantity must be bigger than Minimal quantity'),
]
- self._error_messages.update({
+ cls._error_messages.update({
'unique_op': 'Only one order point is allowed '\
'for each product-location pair.',
'concurrent_internal_op': 'You can not define ' \
@@ -88,68 +89,63 @@ class OrderPoint(ModelSQL, ModelView):
'with opposite locations.',
})
- def init(self, module_name):
+ @classmethod
+ def __register__(cls, module_name):
cursor = Transaction().cursor
# Migration from 2.2
- table = TableHandler(cursor, self, module_name)
+ table = TableHandler(cursor, cls, module_name)
table.drop_constraint('check_min_max_quantity')
- super(OrderPoint, self).init(module_name)
+ super(OrderPoint, cls).__register__(module_name)
- def default_type(self):
+ @staticmethod
+ def default_type():
return "purchase"
- def on_change_product(self, vals):
- product_obj = Pool().get('product.product')
+ def on_change_product(self):
res = {
'unit': None,
'unit.rec_name': '',
'unit_digits': 2,
- }
- if vals.get('product'):
- product = product_obj.browse(vals['product'])
- res['unit'] = product.default_uom.id
- res['unit.rec_name'] = product.default_uom.rec_name
- res['unit_digits'] = product.default_uom.digits
+ }
+ if self.product:
+ res['unit'] = self.product.default_uom.id
+ res['unit.rec_name'] = self.product.default_uom.rec_name
+ res['unit_digits'] = self.product.default_uom.digits
return res
- def get_unit(self, ids, name):
- res = {}
- for order in self.browse(ids):
- res[order.id] = order.product.default_uom.id
- return res
+ def get_unit(self, name):
+ return self.product.default_uom.id
- def get_unit_digits(self, ids, name):
- res = {}
- for order in self.browse(ids):
- res[order.id] = order.product.default_uom.digits
- return res
+ def get_unit_digits(self, name):
+ return self.product.default_uom.digits
- def check_concurrent_internal(self, ids):
+ @classmethod
+ def check_concurrent_internal(cls, orders):
"""
Ensure that there is no 'concurrent' internal order
points. I.E. no two order point with opposite location for the
same product and same company.
"""
- internal_ids = self.search([
- ('id', 'in', ids),
- ('type', '=', 'internal'),
- ])
- if not internal_ids:
+ internals = cls.search([
+ ('id', 'in', [o.id for o in orders]),
+ ('type', '=', 'internal'),
+ ])
+ if not internals:
return True
query = ['OR']
- for op in self.browse(internal_ids):
+ for op in internals:
arg = ['AND',
('provisioning_location', '=', op.storage_location.id),
('storage_location', '=', op.provisioning_location.id),
('company', '=', op.company.id),
('type', '=', 'internal')]
query.append(arg)
- ids = self.search(query)
- return not bool(ids)
+ return not bool(cls.search(query))
- def _type2field(self, type=None):
+ @staticmethod
+ def _type2field(type=None):
t2f = {
'purchase': 'warehouse_location',
'internal': 'storage_location',
@@ -159,36 +155,30 @@ class OrderPoint(ModelSQL, ModelView):
else:
return t2f[type]
- def check_uniqueness(self, ids):
+ @classmethod
+ def check_uniqueness(cls, orders):
"""
Ensure uniqueness of order points. I.E that there is no several
order point for the same location, the same product and the
same company.
"""
query = ['OR']
- for op in self.browse(ids):
- field = self._type2field(op.type)
+ for op in orders:
+ field = cls._type2field(op.type)
arg = ['AND',
('product', '=', op.product.id),
- (field, '=', op[field].id),
+ (field, '=', getattr(op, field).id),
('id', '!=', op.id),
('company', '=', op.company.id),
]
query.append(arg)
- ids = self.search(query)
- return not bool(ids)
-
- def get_rec_name(self, ids, name):
- if not ids:
- return {}
- if isinstance(ids, (int, long)):
- ids = [ids]
- res = {}
- for op in self.browse(ids):
- res[op.id] = "%s@%s" % (op.product.name, op.location.name)
- return res
+ return not bool(cls.search(query))
+
+ def get_rec_name(self, name):
+ return "%s@%s" % (self.product.name, self.location.name)
- def search_rec_name(self, name, clause):
+ @classmethod
+ def search_rec_name(cls, name, clause):
res = []
names = clause[2].split('@', 1)
res.append(('product.template.name', clause[1], names[0]))
@@ -196,27 +186,22 @@ class OrderPoint(ModelSQL, ModelView):
res.append(('location', clause[1], names[1]))
return res
- def get_location(self, ids, name):
- res = {}
- for op in self.browse(ids):
- if op.type == 'purchase':
- res[op.id] = op.warehouse_location.id
- elif op.type == 'internal':
- res[op.id] = op.storage_location.id
- else:
- res[op.id] = None
- return res
+ def get_location(self, name):
+ if self.type == 'purchase':
+ return self.warehouse_location.id
+ elif self.type == 'internal':
+ return self.storage_location.id
- def search_location(self, name, domain=None):
+ @classmethod
+ def search_location(cls, name, domain=None):
ids = []
- for type, field in self._type2field().iteritems():
+ for type, field in cls._type2field().iteritems():
args = [('type', '=', type)]
for _, operator, operand in domain:
args.append((field, operator, operand))
- ids.extend(self.search(args))
+ ids.extend([o.id for o in cls.search(args)])
return [('id', 'in', ids)]
- def default_company(self):
+ @staticmethod
+ def default_company():
return Transaction().context.get('company')
-
-OrderPoint()
diff --git a/product.py b/product.py
index 7b935b8..f259f0b 100644
--- a/product.py
+++ b/product.py
@@ -1,12 +1,13 @@
#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 trytond.model import ModelView, ModelSQL, fields
+from trytond.model import fields
+from trytond.pool import PoolMeta
+__all__ = ['Product']
+__metaclass__ = PoolMeta
-class Product(ModelSQL, ModelView):
- _name = "product.product"
+class Product:
+ __name__ = "product.product"
order_points = fields.One2Many(
'stock.order_point', 'product', 'Order Points')
-
-Product()
diff --git a/purchase_request.py b/purchase_request.py
index cd7ca91..7a4ce16 100644
--- a/purchase_request.py
+++ b/purchase_request.py
@@ -12,12 +12,14 @@ from trytond.pyson import If, In, Eval, Get
from trytond.transaction import Transaction
from trytond.pool import Pool
+__all__ = ['PurchaseRequest',
+ 'CreatePurchaseRequestStart', 'CreatePurchaseRequest',
+ 'CreatePurchaseAskTerm', 'CreatePurchaseAskParty', 'CreatePurchase']
+
class PurchaseRequest(ModelSQL, ModelView):
'Purchase Request'
- _name = 'purchase.request'
- _description = __doc__
-
+ __name__ = 'purchase.request'
product = fields.Many2One('product.product', 'Product', required=True,
select=True, readonly=True, domain=[('purchasable', '=', True)])
party = fields.Many2One('party.party', 'Party', select=True)
@@ -56,39 +58,37 @@ class PurchaseRequest(ModelSQL, ModelView):
('cancel', 'Cancel'),
], 'State'), 'get_state')
- def __init__(self):
- super(PurchaseRequest, self).__init__()
- self._order[0] = ('id', 'DESC')
- self._error_messages.update({
+ @classmethod
+ def __setup__(cls):
+ super(PurchaseRequest, cls).__setup__()
+ cls._order[0] = ('id', 'DESC')
+ cls._error_messages.update({
'create_request': 'Purchase requests are only created ' \
'by the system.',
})
- self._sql_constraints += [
+ cls._sql_constraints += [
('check_purchase_request_quantity', 'CHECK(quantity > 0)',
'The requested quantity must be greater than 0'),
]
- def init(self, module_name):
+ @classmethod
+ def __register__(cls, module_name):
cursor = Transaction().cursor
- super(PurchaseRequest, self).init(module_name)
+ super(PurchaseRequest, cls).__register__(module_name)
# Migration from 2.0: empty order point origin is -1 instead of 0
cursor.execute('UPDATE "%s" '
- 'SET origin = %%s WHERE origin = %%s' % self._table,
+ 'SET origin = %%s WHERE origin = %%s' % cls._table,
('stock.order_point,-1', 'stock.order_point,0'))
- def get_rec_name(self, ids, name):
- if isinstance(ids, (int, long)):
- ids = [ids]
- res = {}
- for pr in self.browse(ids):
- if pr.warehouse:
- res[pr.id] = "%s@%s" % (pr.product.name, pr.warehouse.name)
- else:
- res[pr.id] = pr.product.name
- return res
+ def get_rec_name(self, name):
+ if self.warehouse:
+ return "%s@%s" % (self.product.name, self.warehouse.name)
+ else:
+ return self.product.name
- def search_rec_name(self, name, clause):
+ @classmethod
+ def search_rec_name(cls, name, clause):
res = []
names = clause[2].split('@', 1)
res.append(('product.template.name', clause[1], names[0]))
@@ -96,85 +96,79 @@ class PurchaseRequest(ModelSQL, ModelView):
res.append(('warehouse', clause[1], names[1]))
return res
- def default_company(self):
+ @staticmethod
+ def default_company():
return Transaction().context.get('company')
- def get_purchase(self, ids, name):
- res = {}
+ def get_purchase(self, name):
+ if self.purchase_line:
+ return self.purchase_line.purchase.id
- requests = self.browse(ids)
- for request in requests:
- if request.purchase_line:
- res[request.id] = request.purchase_line.purchase.id
+ def get_state(self, name):
+ if self.purchase_line:
+ if self.purchase_line.purchase.state == 'cancel':
+ return 'cancel'
+ elif self.purchase_line.purchase.state == 'done':
+ return 'done'
else:
- res[request.id] = None
- return res
+ return 'purchased'
+ return 'draft'
- def get_state(self, ids, name):
- res = {}.fromkeys(ids, 'draft')
- for request in self.browse(ids):
- if request.purchase_line:
- if request.purchase_line.purchase.state == 'cancel':
- res[request.id] = 'cancel'
- elif request.purchase_line.purchase.state == 'done':
- res[request.id] = 'done'
- else:
- res[request.id] = 'purchased'
- return res
+ def get_warehouse_required(self, name):
+ return self.product.type in ('goods', 'assets')
- def get_warehouse_required(self, ids, name):
- requireds = {}
- for request in self.browse(ids):
- requireds[request.id] = request.product.type in ('goods', 'assets')
- return requireds
-
- def origin_get(self):
- model_obj = Pool().get('ir.model')
+ @staticmethod
+ def origin_get():
+ Model = Pool().get('ir.model')
res = []
- model_ids = model_obj.search([
- ('model', '=', 'stock.order_point'),
- ])
- for model in model_obj.browse(model_ids):
+ models = Model.search([
+ ('model', '=', 'stock.order_point'),
+ ])
+ for model in models:
res.append([model.model, model.name])
return res
- def generate_requests(self):
+ @classmethod
+ def generate_requests(cls):
"""
For each product compute the purchase request that must be
create today to meet product outputs.
"""
pool = Pool()
- order_point_obj = pool.get('stock.order_point')
- product_obj = pool.get('product.product')
- location_obj = pool.get('stock.location')
- user_obj = pool.get('res.user')
- company = user_obj.browse(Transaction().user).company
+ OrderPoint = pool.get('stock.order_point')
+ Product = pool.get('product.product')
+ Location = pool.get('stock.location')
+ User = pool.get('res.user')
+ company = User(Transaction().user).company
# fetch warehouses:
- warehouse_ids = location_obj.search([
+ warehouses = Location.search([
('type', '=', 'warehouse'),
])
+ warehouse_ids = [w.id for w in warehouses]
# fetch order points
- order_point_ids = order_point_obj.search([
+ order_points = OrderPoint.search([
('type', '=', 'purchase'),
])
# index them by product
product2ops = {}
- for order_point in order_point_obj.browse(order_point_ids):
+ for order_point in order_points:
product2ops[
(order_point.warehouse_location.id, order_point.product.id)
] = order_point
- # fetch goods
- product_ids = product_obj.search([
- ('type', '=', 'goods'),
+ # fetch goods and assets
+ # ordered by ids to speedup reduce_ids in products_by_location
+ products = Product.search([
+ ('type', 'in', ['goods', 'assets']),
('consumable', '=', False),
('purchasable', '=', True),
- ])
+ ], order=[('id', 'ASC')])
+ product_ids = [p.id for p in products]
#aggregate product by minimum supply date
date2products = {}
- for product in product_obj.browse(product_ids):
- min_date, max_date = self.get_supply_dates(product)
+ for product in products:
+ min_date, max_date = cls.get_supply_dates(product)
date2products.setdefault((min_date, max_date), []).append(product)
# compute requests
@@ -186,13 +180,13 @@ class PurchaseRequest(ModelSQL, ModelView):
product_ids = [p.id for p in products[i:i + cursor.IN_MAX]]
with Transaction().set_context(forecast=True,
stock_date_end=min_date or datetime.date.max):
- pbl = product_obj.products_by_location(warehouse_ids,
+ pbl = Product.products_by_location(warehouse_ids,
product_ids, with_childs=True, skip_zero=False)
for warehouse_id in warehouse_ids:
min_date_qties = dict((x, pbl.pop((warehouse_id, x)))
for x in product_ids)
# Search for shortage between min-max
- shortages = self.get_shortage(warehouse_id, product_ids,
+ shortages = cls.get_shortage(warehouse_id, product_ids,
min_date, max_date, min_date_qties=min_date_qties,
order_points=product2ops)
@@ -203,53 +197,44 @@ class PurchaseRequest(ModelSQL, ModelView):
order_point = product2ops.get(
(warehouse_id, product.id))
# generate request values
- request_val = self.compute_request(product,
+ request = cls.compute_request(product,
warehouse_id, shortage_date, product_quantity,
company, order_point)
- new_requests.append(request_val)
-
- new_requests = self.compare_requests(new_requests)
+ new_requests.append(request)
- self.create_requests(new_requests)
- return {}
+ new_requests = cls.compare_requests(new_requests)
- def create_requests(self, new_requests):
- request_obj = Pool().get('purchase.request')
+ cls.create_requests(new_requests)
+ @classmethod
+ def create_requests(cls, new_requests):
for new_req in new_requests:
- if new_req['supply_date'] == datetime.date.max:
- new_req['supply_date'] = None
- if new_req['quantity'] > 0.0:
- new_req.update({
- 'product': new_req['product'].id,
- 'party': new_req['party'] and new_req['party'].id,
- 'uom': new_req['uom'].id,
- 'computed_uom': new_req['computed_uom'].id,
- 'company': new_req['company'].id
- })
- request_obj.create(new_req)
+ if new_req.supply_date == datetime.date.max:
+ new_req.supply_date = None
+ if new_req.quantity > 0.0:
+ new_req.save()
- def compare_requests(self, new_requests):
+ @classmethod
+ def compare_requests(cls, new_requests):
"""
Compare new_requests with already existing request to avoid
to re-create existing requests.
"""
# delete purchase request without a purchase line
pool = Pool()
- uom_obj = pool.get('product.uom')
- request_obj = pool.get('purchase.request')
- req_ids = request_obj.search([
+ Uom = pool.get('product.uom')
+ Request = pool.get('purchase.request')
+ reqs = Request.search([
('purchase_line', '=', None),
('origin', 'like', 'stock.order_point,%'),
])
- request_obj.delete(req_ids)
+ Request.delete(reqs)
- req_ids = request_obj.search([
+ requests = Request.search([
('purchase_line.moves', '=', None),
('purchase_line.purchase.state', '!=', 'cancel'),
('origin', 'like', 'stock.order_point,%'),
])
- requests = request_obj.browse(req_ids)
# Fetch data from existing requests
existing_req = {}
for request in requests:
@@ -259,7 +244,7 @@ class PurchaseRequest(ModelSQL, ModelView):
request.warehouse.id != pline.purchase.warehouse.id:
continue
# Take smallest amount between request and purchase line
- req_qty = uom_obj.compute_qty(request.uom, request.quantity,
+ req_qty = Uom.compute_qty(request.uom, request.quantity,
pline.unit)
if req_qty < pline.quantity:
quantity = request.quantity
@@ -281,46 +266,40 @@ class PurchaseRequest(ModelSQL, ModelView):
i.sort(lambda r, s: cmp(r['supply_date'], s['supply_date']))
# Update new requests to take existing requests into account
- new_requests.sort(key=operator.itemgetter('supply_date'))
+ new_requests.sort(key=operator.attrgetter('supply_date'))
for new_req in new_requests:
- for old_req in existing_req.get((new_req['product'].id,
- new_req['warehouse']), []):
- if old_req['supply_date'] <= new_req['supply_date']:
- quantity = uom_obj.compute_qty(old_req['uom'],
- old_req['quantity'], new_req['uom'])
- new_req['quantity'] = max(0.0,
- new_req['quantity'] - quantity)
- new_req['computed_quantity'] = new_req['quantity']
- old_req['quantity'] = uom_obj.compute_qty(new_req['uom'],
- max(0.0, quantity - new_req['quantity']),
- old_req['uom'])
+ for old_req in existing_req.get(
+ (new_req.product.id, new_req.warehouse.id), []):
+ if old_req['supply_date'] <= new_req.supply_date:
+ quantity = Uom.compute_qty(old_req['uom'],
+ old_req['quantity'], new_req.uom)
+ new_req.quantity = max(0.0, new_req.quantity - quantity)
+ new_req.computed_quantity = new_req.quantity
+ old_req['quantity'] = Uom.compute_qty(new_req.uom,
+ max(0.0, quantity - new_req.quantity), old_req['uom'])
else:
break
return new_requests
- def get_supply_dates(self, product):
+ @classmethod
+ def get_supply_dates(cls, product):
"""
Return the minimal interval of earliest supply dates for a product.
-
- :param product: a BrowseRecord of the Product
- :return: a tuple with the two dates
"""
- product_supplier_obj = Pool().get('purchase.product_supplier')
- date_obj = Pool().get('ir.date')
+ Date = Pool().get('ir.date')
min_date = None
max_date = None
- today = date_obj.today()
+ today = Date.today()
for product_supplier in product.product_suppliers:
- supply_date = product_supplier_obj.compute_supply_date(
- product_supplier, date=today)
+ supply_date = product_supplier.compute_supply_date(date=today)
# TODO next_day is by default today + 1 but should depends
# on the CRON activity
next_day = today + datetime.timedelta(1)
- next_supply_date = product_supplier_obj.compute_supply_date(
- product_supplier, date=next_day)
+ next_supply_date = product_supplier.compute_supply_date(
+ date=next_day)
if (not min_date) or supply_date < min_date:
min_date = supply_date
if (not max_date):
@@ -336,20 +315,18 @@ class PurchaseRequest(ModelSQL, ModelView):
return (min_date, max_date)
- def find_best_supplier(self, product, date):
+ @classmethod
+ def find_best_supplier(cls, product, date):
'''
Return the best supplier and purchase_date for the product.
'''
- pool = Pool()
- date_obj = pool.get('ir.date')
- product_supplier_obj = pool.get('purchase.product_supplier')
+ Date = Pool().get('ir.date')
supplier = None
timedelta = datetime.timedelta.max
- today = date_obj.today()
+ today = Date.today()
for product_supplier in product.product_suppliers:
- supply_date = product_supplier_obj.compute_supply_date(
- product_supplier, date=today)
+ supply_date = product_supplier.compute_supply_date(date=today)
sup_timedelta = date - supply_date
if not supplier:
supplier = product_supplier.party
@@ -363,13 +340,13 @@ class PurchaseRequest(ModelSQL, ModelView):
timedelta = sup_timedelta
if supplier:
- purchase_date = product_supplier_obj.compute_purchase_date(
- product_supplier, date)
+ purchase_date = product_supplier.compute_purchase_date(date)
else:
purchase_date = today
return supplier, purchase_date
- def compute_request(self, product, location_id, shortage_date,
+ @classmethod
+ def compute_request(cls, product, location_id, shortage_date,
product_quantity, company, order_point=None):
"""
Return the value of the purchase request which will answer to
@@ -378,13 +355,14 @@ class PurchaseRequest(ModelSQL, ModelView):
supplier.
"""
pool = Pool()
- uom_obj = pool.get('product.uom')
+ Uom = pool.get('product.uom')
+ Request = pool.get('purchase.request')
- supplier, purchase_date = self.find_best_supplier(product,
+ supplier, purchase_date = cls.find_best_supplier(product,
shortage_date)
max_quantity = order_point and order_point.max_quantity or 0.0
- quantity = uom_obj.compute_qty(product.default_uom,
+ quantity = Uom.compute_qty(product.default_uom,
max_quantity - product_quantity,
product.purchase_uom or product.default_uom)
@@ -392,21 +370,22 @@ class PurchaseRequest(ModelSQL, ModelView):
origin = 'stock.order_point,%s' % order_point.id
else:
origin = 'stock.order_point,-1'
- return {'product': product,
- 'party': supplier and supplier or None,
- 'quantity': quantity,
- 'uom': product.purchase_uom or product.default_uom,
- 'computed_quantity': quantity,
- 'computed_uom': product.purchase_uom or product.default_uom,
- 'purchase_date': purchase_date,
- 'supply_date': shortage_date,
- 'stock_level': product_quantity,
- 'company': company,
- 'warehouse': location_id,
- 'origin': origin,
- }
-
- def get_shortage(self, location_id, product_ids, min_date, max_date,
+ return Request(product=product,
+ party=supplier and supplier or None,
+ quantity=quantity,
+ uom=product.purchase_uom or product.default_uom,
+ computed_quantity=quantity,
+ computed_uom=product.purchase_uom or product.default_uom,
+ purchase_date=purchase_date,
+ supply_date=shortage_date,
+ stock_level=product_quantity,
+ company=company,
+ warehouse=location_id,
+ origin=origin,
+ )
+
+ @classmethod
+ def get_shortage(cls, location_id, product_ids, min_date, max_date,
min_date_qties, order_points):
"""
Return for each product the first date between min_date and max_date
@@ -419,7 +398,7 @@ class PurchaseRequest(ModelSQL, ModelView):
min_date_qty is the quantities for each products at the min_date.
order_points is a dictionary that links products to order point.
"""
- product_obj = Pool().get('product.product')
+ Product = Pool().get('product.product')
res_dates = {}
res_qties = {}
@@ -448,7 +427,7 @@ class PurchaseRequest(ModelSQL, ModelView):
with Transaction().set_context(stock_date_start=current_date,
stock_date_end=current_date):
- pbl = product_obj.products_by_location([location_id],
+ pbl = Product.products_by_location([location_id],
product_ids, with_childs=True, skip_zero=False)
for key, qty in pbl.iteritems():
_, product_id = key
@@ -460,27 +439,22 @@ class PurchaseRequest(ModelSQL, ModelView):
return dict((x, (res_dates.get(x), res_qties.get(x)))
for x in product_ids)
- def create(self, vals):
+ @classmethod
+ def create(cls, vals):
for field_name in ('product', 'quantity', 'uom', 'company'):
if not vals.get(field_name):
- self.raise_user_error('create_request')
- return super(PurchaseRequest, self).create(vals)
-
-PurchaseRequest()
+ cls.raise_user_error('create_request')
+ return super(PurchaseRequest, cls).create(vals)
class CreatePurchaseRequestStart(ModelView):
'Create Purchase Request'
- _name = 'purchase.request.create.start'
- _description = __doc__
-
-CreatePurchaseRequestStart()
+ __name__ = 'purchase.request.create.start'
class CreatePurchaseRequest(Wizard):
'Create Purchase Request'
- _name = 'purchase.request.create'
-
+ __name__ = 'purchase.request.create'
start = StateView('purchase.request.create.start',
'stock_supply.purchase_request_create_start_view_form', [
Button('Cancel', 'end', 'tryton-cancel'),
@@ -488,44 +462,35 @@ class CreatePurchaseRequest(Wizard):
])
create_ = StateAction('stock_supply.act_purchase_request_form_draft')
- def do_create_(self, session, action):
- purchase_request_obj = Pool().get('purchase.request')
- purchase_request_obj.generate_requests()
+ def do_create_(self, action):
+ PurchaseRequest = Pool().get('purchase.request')
+ PurchaseRequest.generate_requests()
return action, {}
- def transition_create_(self, session):
+ def transition_create_(self):
return 'end'
-CreatePurchaseRequest()
-
class CreatePurchaseAskTerm(ModelView):
'Create Purchase Ask Term'
- _name = 'purchase.request.create_purchase.ask_term'
- _description = __doc__
+ __name__ = 'purchase.request.create_purchase.ask_term'
party = fields.Many2One('party.party', 'Supplier', readonly=True)
company = fields.Many2One('company.company', 'Company', readonly=True)
payment_term = fields.Many2One(
'account.invoice.payment_term', 'Payment Term', required=True)
-CreatePurchaseAskTerm()
-
class CreatePurchaseAskParty(ModelView):
'Create Purchase Ask Party'
- _name = 'purchase.request.create_purchase.ask_party'
- _description = __doc__
+ __name__ = 'purchase.request.create_purchase.ask_party'
product = fields.Many2One('product.product', 'Product', readonly=True)
company = fields.Many2One('company.company', 'Company', readonly=True)
party = fields.Many2One('party.party', 'Supplier', required=True)
-CreatePurchaseAskParty()
-
class CreatePurchase(Wizard):
'Create Purchase'
- _name = 'purchase.request.create_purchase'
-
+ __name__ = 'purchase.request.create_purchase'
start = StateTransition()
ask_party = StateView('purchase.request.create_purchase.ask_party',
'stock_supply.purchase_request_create_purchase_ask_party', [
@@ -538,17 +503,18 @@ class CreatePurchase(Wizard):
Button('Continue', 'start', 'tryton-go-next', default=True),
])
- def __init__(self):
- super(CreatePurchase, self).__init__()
- self._error_messages.update({
+ @classmethod
+ def __setup__(cls):
+ super(CreatePurchase, cls).__setup__()
+ cls._error_messages.update({
'missing_price': 'Purchase price is missing for product: %s ' \
'(id: %s)!',
'please_update': 'This price is necessary for creating purchase.'
})
- def default_ask_party(self, session, fields):
- request_obj = Pool().get('purchase.request')
- requests = request_obj.browse(Transaction().context['active_ids'])
+ def default_ask_party(self, fields):
+ Request = Pool().get('purchase.request')
+ requests = Request.browse(Transaction().context['active_ids'])
for request in requests:
if request.purchase_line:
continue
@@ -562,9 +528,9 @@ class CreatePurchase(Wizard):
'company': request.company.id,
}
- def default_ask_term(self, session, fields):
- request_obj = Pool().get('purchase.request')
- requests = request_obj.browse(Transaction().context['active_ids'])
+ def default_ask_term(self, fields):
+ Request = Pool().get('purchase.request')
+ requests = Request.browse(Transaction().context['active_ids'])
for request in requests:
if (not request.party) or request.purchase_line:
continue
@@ -578,75 +544,68 @@ class CreatePurchase(Wizard):
'company': request.company.id,
}
- def _group_purchase_key(self, requests, request):
+ @staticmethod
+ def _group_purchase_key(requests, request):
'''
The key to group lines by purchases
-
- :param requests: a list of requests
- :param request: the request
-
- :return: a list of key-value as tuples of the purchase
+ A list of key-value as tuples of the purchase
'''
- party_obj = Pool().get('party.party')
-
return (
- ('company', request.company.id),
- ('party', request.party.id),
- ('payment_term', request.party.supplier_payment_term.id),
- ('warehouse', request.warehouse.id),
+ ('company', request.company),
+ ('party', request.party),
+ ('payment_term', request.party.supplier_payment_term),
+ ('warehouse', request.warehouse),
# XXX use function field
- ('currency', request.company.currency.id),
- ('invoice_address', party_obj.address_get(request.party.id,
- type='invoice')),
+ ('currency', request.company.currency),
+ ('invoice_address', request.party.address_get(type='invoice')),
)
- def transition_start(self, session):
+ def transition_start(self):
pool = Pool()
- request_obj = pool.get('purchase.request')
- party_obj = pool.get('party.party')
- purchase_obj = pool.get('purchase.purchase')
- line_obj = pool.get('purchase.line')
- date_obj = pool.get('ir.date')
+ Request = pool.get('purchase.request')
+ Party = pool.get('party.party')
+ Purchase = pool.get('purchase.purchase')
+ Date = pool.get('ir.date')
request_ids = Transaction().context['active_ids']
- if (session.ask_party.product
- and session.ask_party.party
- and session.ask_party.company):
- req_ids = request_obj.search([
+ if (getattr(self.ask_party, 'product', None)
+ and getattr(self.ask_party, 'party', None)
+ and getattr(self.ask_party, 'company', None)):
+ reqs = Request.search([
('id', 'in', request_ids),
('party', '=', None),
])
- if req_ids:
- request_obj.write(req_ids, {
- 'party': session.ask_party.party.id,
+ if reqs:
+ Request.write(reqs, {
+ 'party': self.ask_party.party.id,
})
- session.ask_party.product = None
- session.ask_party.party = None
- session.ask_party.company = None
- elif (session.ask_term.payment_term
- and session.ask_term.party
- and session.ask_term.company):
+ self.ask_party.product = None
+ self.ask_party.party = None
+ self.ask_party.company = None
+ elif (getattr(self.ask_term, 'payment_term', None)
+ and getattr(self.ask_term, 'party', None)
+ and getattr(self.ask_term, 'company', None)):
with Transaction().set_context(
- company=session.ask_term.company.id):
- party_obj.write(session.ask_term.party.id, {
+ company=self.ask_term.company.id):
+ Party.write([self.ask_term.party], {
'supplier_payment_term': \
- session.ask_term.payment_term.id,
+ self.ask_term.payment_term.id,
})
- session.ask_term.payment_term = None
- session.ask_term.party = None
- session.ask_term.company = None
+ self.ask_term.payment_term = None
+ self.ask_term.party = None
+ self.ask_term.company = None
- req_ids = request_obj.search([
+ reqs = Request.search([
('id', 'in', request_ids),
('purchase_line', '=', None),
('party', '=', None),
])
- if req_ids:
+ if reqs:
return 'ask_party'
- today = date_obj.today()
- requests = request_obj.browse(request_ids)
+ today = Date.today()
+ requests = Request.browse(request_ids)
requests = [r for r in requests if not r.purchase_line]
if any(r for r in requests if not r.party.supplier_payment_term):
@@ -666,68 +625,61 @@ class CreatePurchase(Wizard):
purchase_date = today
if purchase_date < today:
purchase_date = today
- values = {
- 'purchase_date': purchase_date,
- }
- values.update(dict(key))
- purchase_id = purchase_obj.create(values)
+ purchase = Purchase(purchase_date=purchase_date)
+ for f, v in key:
+ setattr(purchase, f, v)
+ purchase.save()
for request in grouped_requests:
- values = self.compute_purchase_line(request)
- values['purchase'] = purchase_id
- line_id = line_obj.create(values)
- request_obj.write(request.id, {
- 'purchase_line': line_id,
+ line = self.compute_purchase_line(request)
+ line.purchase = purchase
+ line.save()
+ Request.write([request], {
+ 'purchase_line': line.id,
})
return 'end'
- def _get_tax_rule_pattern(self, request):
+ @staticmethod
+ def _get_tax_rule_pattern(request):
'''
Get tax rule pattern
-
- :param request: the BrowseRecord of the purchase request
- :return: a dictionary to use as pattern for tax rule
'''
- res = {}
- return res
+ return {}
- def compute_purchase_line(self, request):
+ @classmethod
+ def compute_purchase_line(cls, request):
pool = Pool()
- product_obj = pool.get('product.product')
- tax_rule_obj = pool.get('account.tax.rule')
- line_obj = pool.get('purchase.line')
-
- line = {
- 'product': request.product.id,
- 'unit': request.uom.id,
- 'quantity': request.quantity,
- 'description': request.product.name,
- }
+ Product = pool.get('product.product')
+ Line = pool.get('purchase.line')
+
+ line = Line(
+ product=request.product,
+ unit=request.uom,
+ quantity=request.quantity,
+ description=request.product.name,
+ )
# XXX purchase with several lines of the same product
with Transaction().set_context(uom=request.uom.id,
supplier=request.party.id,
currency=request.company.currency.id):
- product_price = product_obj.get_purchase_price(
- [request.product.id], request.quantity)[request.product.id]
+ product_price = Product.get_purchase_price(
+ [request.product], request.quantity)[request.product.id]
product_price = product_price.quantize(
- Decimal(1) / 10 ** line_obj.unit_price.digits[1])
+ Decimal(1) / 10 ** Line.unit_price.digits[1])
if product_price is None:
- self.raise_user_error('missing_price', (request.product.name,
+ cls.raise_user_error('missing_price', (request.product.name,
request.product.id), 'please_update')
- line['unit_price'] = product_price
+ line.unit_price = product_price
taxes = []
for tax in request.product.supplier_taxes_used:
if request.party and request.party.supplier_tax_rule:
- pattern = self._get_tax_rule_pattern(request)
- tax_ids = tax_rule_obj.apply(request.party.supplier_tax_rule,
- tax, pattern)
+ pattern = cls._get_tax_rule_pattern(request)
+ tax_ids = request.party.supplier_tax_rule.apply(tax, pattern)
if tax_ids:
taxes.extend(tax_ids)
continue
taxes.append(tax.id)
- line['taxes'] = [('add', taxes)]
+ line.taxes = taxes
return line
-
-CreatePurchase()
diff --git a/purchase_request.xml b/purchase_request.xml
index 33c2ea2..b8b86f5 100644
--- a/purchase_request.xml
+++ b/purchase_request.xml
@@ -135,6 +135,11 @@ this repository contains the full copyright notices and license terms. -->
<menuitem parent="menu_purchase_request_form" sequence="10"
action="act_purchase_request_create"
id="menu_purchase_request_create"/>
+ <record model="ir.ui.menu-res.group"
+ id="menu_purchase_request_form_group_purchase_request">
+ <field name="menu" ref="menu_purchase_request_create"/>
+ <field name="group" ref="group_purchase_request"/>
+ </record>
<record model="ir.ui.view" id="purchase_request_create_purchase_ask_term_view_form">
<field name="model">purchase.request.create_purchase.ask_term</field>
diff --git a/setup.py b/setup.py
index fde7348..5c457de 100644
--- a/setup.py
+++ b/setup.py
@@ -4,8 +4,19 @@
from setuptools import setup
import re
+import os
+import ConfigParser
-info = eval(open('__tryton__.py').read())
+
+def read(fname):
+ return open(os.path.join(os.path.dirname(__file__), fname)).read()
+
+config = ConfigParser.ConfigParser()
+config.readfp(open('tryton.cfg'))
+info = dict(config.items('tryton'))
+for key in ('depends', 'extras_depend', 'xml'):
+ if key in info:
+ info[key] = info[key].strip().splitlines()
major_version, minor_version, _ = info.get('version', '0.0.1').split('.', 2)
major_version = int(major_version)
minor_version = int(minor_version)
@@ -21,21 +32,21 @@ requires.append('trytond >= %s.%s, < %s.%s' %
setup(name='trytond_stock_supply',
version=info.get('version', '0.0.1'),
- description=info.get('description', ''),
- author=info.get('author', ''),
- author_email=info.get('email', ''),
- url=info.get('website', ''),
+ description='Tryton module for stock supply',
+ 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] + '/',
+ info.get('version', '0.0.1').rsplit('.', 1)[0] + '/',
package_dir={'trytond.modules.stock_supply': '.'},
packages=[
'trytond.modules.stock_supply',
'trytond.modules.stock_supply.tests',
- ],
+ ],
package_data={
'trytond.modules.stock_supply': info.get('xml', []) \
- + info.get('translation', []),
- },
+ + ['tryton.cfg', 'locale/*.po'],
+ },
classifiers=[
'Development Status :: 5 - Production/Stable',
'Environment :: Plugins',
@@ -57,7 +68,7 @@ setup(name='trytond_stock_supply',
'Programming Language :: Python :: 2.6',
'Programming Language :: Python :: 2.7',
'Topic :: Office/Business',
- ],
+ ],
license='GPL-3',
install_requires=requires,
zip_safe=False,
@@ -67,4 +78,4 @@ setup(name='trytond_stock_supply',
""",
test_suite='tests',
test_loader='trytond.test_loader:Loader',
-)
+ )
diff --git a/shipment.py b/shipment.py
index c726e32..a9d5f7f 100644
--- a/shipment.py
+++ b/shipment.py
@@ -2,13 +2,17 @@
#this repository contains the full copyright notices and license terms.
from trytond.model import ModelView, ModelSQL
from trytond.transaction import Transaction
-from trytond.pool import Pool
+from trytond.pool import Pool, PoolMeta
+
+__all__ = ['ShipmentInternal']
+__metaclass__ = PoolMeta
class ShipmentInternal(ModelSQL, ModelView):
- _name = 'stock.shipment.internal'
+ __name__ = 'stock.shipment.internal'
- def init(self, module_name):
+ @classmethod
+ def __register__(cls, module_name):
cursor = Transaction().cursor
# Migration from 1.2: packing renamed into shipment
cursor.execute("UPDATE ir_model_data "\
@@ -19,26 +23,27 @@ class ShipmentInternal(ModelSQL, ModelView):
"SET model = REPLACE(model, 'packing', 'shipment') "\
"WHERE model like '%%packing%%' AND module = %s",
(module_name,))
- super(ShipmentInternal, self).init(module_name)
+ super(ShipmentInternal, cls).__register__(module_name)
- def generate_internal_shipment(self):
+ @classmethod
+ def generate_internal_shipment(cls):
"""
Generate internal shipments to meet order points defined on
non-warehouse location.
"""
pool = Pool()
- order_point_obj = pool.get('stock.order_point')
- uom_obj = pool.get('product.uom')
- product_obj = pool.get('product.product')
- date_obj = pool.get('ir.date')
- user_obj = pool.get('res.user')
- user_record = user_obj.browse(Transaction().user)
- today = date_obj.today()
+ OrderPoint = pool.get('stock.order_point')
+ Uom = pool.get('product.uom')
+ Product = pool.get('product.product')
+ Date = pool.get('ir.date')
+ User = pool.get('res.user')
+ Move = pool.get('stock.move')
+ user_record = User(Transaction().user)
+ today = Date.today()
# fetch quantities on order points
- op_ids = order_point_obj.search([
+ order_points = OrderPoint.search([
('type', '=', 'internal'),
])
- order_points = order_point_obj.browse(op_ids)
id2product = {}
location_ids = []
for op in order_points:
@@ -46,7 +51,7 @@ class ShipmentInternal(ModelSQL, ModelView):
location_ids.append(op.storage_location.id)
with Transaction().set_context(stock_date_end=today):
- pbl = product_obj.products_by_location(location_ids,
+ pbl = Product.products_by_location(location_ids,
list(id2product.iterkeys()), with_childs=True)
# Create a list of move to create
@@ -60,21 +65,21 @@ class ShipmentInternal(ModelSQL, ModelView):
moves[key] = op.max_quantity - qty
# Compare with existing draft shipments
- shipment_ids = self.search([
+ shipments = cls.search([
('state', '=', 'draft'),
['OR',
('planned_date', '<=', today),
('planned_date', '=', None),
],
])
- for shipment in self.browse(shipment_ids):
+ for shipment in shipments:
for move in shipment.moves:
key = (shipment.to_location.id,
shipment.from_location.id,
move.product.id)
if key not in moves:
continue
- quantity = uom_obj.compute_qty(move.uom, move.quantity,
+ quantity = Uom.compute_qty(move.uom, move.quantity,
id2product[move.product.id].default_uom)
moves[key] = max(0, moves[key] - quantity)
@@ -85,27 +90,22 @@ class ShipmentInternal(ModelSQL, ModelView):
shipments.setdefault(
(from_location, to_location), []).append((product, qty))
# Create shipments and moves
- for shipment, moves in shipments.iteritems():
- from_location, to_location = shipment
- values = {
- 'from_location': from_location,
- 'to_location': to_location,
- 'planned_date': today,
- 'moves': [],
- }
+ for locations, moves in shipments.iteritems():
+ from_location, to_location = locations
+ shipment = cls(
+ from_location=from_location,
+ to_location=to_location,
+ planned_date=today,
+ moves=[],
+ )
for move in moves:
product, qty = move
- values['moves'].append(
- ('create',
- {
- 'from_location': from_location,
- 'to_location': to_location,
- 'product': product,
- 'quantity': qty,
- 'uom': id2product[product].default_uom.id,
- 'company': user_record.company.id,
- }
+ shipment.moves.append(Move(
+ from_location=from_location,
+ to_location=to_location,
+ product=product,
+ quantity=qty,
+ uom=id2product[product].default_uom,
+ company=user_record.company,
))
- self.create(values)
-
-ShipmentInternal()
+ shipment.save()
diff --git a/tests/test_stock_supply.py b/tests/test_stock_supply.py
index ce44ec0..0dde8fb 100644
--- a/tests/test_stock_supply.py
+++ b/tests/test_stock_supply.py
@@ -37,7 +37,7 @@ class StockSupplyTestCase(unittest.TestCase):
def setUp(self):
trytond.tests.test_tryton.install_module('stock_supply')
self.uom = POOL.get('product.uom')
- self.uom.category = POOL.get('product.uom.category')
+ self.uom_category = POOL.get('product.uom.category')
self.category = POOL.get('product.category')
self.product = POOL.get('product.product')
self.company = POOL.get('company.company')
@@ -64,10 +64,7 @@ class StockSupplyTestCase(unittest.TestCase):
'''
for purchase_date, delivery_time, supply_date in DATES:
with Transaction().start(DB_NAME, USER, context=CONTEXT):
- product_supplier_id = self.create_product_supplier(
- delivery_time)
- product_supplier = self.product_supplier.browse(
- product_supplier_id)
+ product_supplier = self.create_product_supplier(delivery_time)
date = self.product_supplier.compute_supply_date(
product_supplier, purchase_date)
self.assertEqual(date, supply_date)
@@ -78,10 +75,7 @@ class StockSupplyTestCase(unittest.TestCase):
'''
for purchase_date, delivery_time, supply_date in DATES:
with Transaction().start(DB_NAME, USER, context=CONTEXT):
- product_supplier_id = self.create_product_supplier(
- delivery_time)
- product_supplier = self.product_supplier.browse(
- product_supplier_id)
+ product_supplier = self.create_product_supplier(delivery_time)
date = self.product_supplier.compute_purchase_date(
product_supplier, supply_date)
self.assertEqual(date, purchase_date)
@@ -93,48 +87,48 @@ class StockSupplyTestCase(unittest.TestCase):
:param delivery_time: time in days needed to supply
:return: the id of the Product Supplier
'''
- uom_category_id = self.uom.category.create({'name': 'Test'})
- uom_id = self.uom.create({
+ uom_category = self.uom_category.create({'name': 'Test'})
+ uom = self.uom.create({
'name': 'Test',
'symbol': 'T',
- 'category': uom_category_id,
+ 'category': uom_category.id,
'rate': 1.0,
'factor': 1.0,
})
- category_id = self.category.create({'name': 'ProdCategoryTest'})
- product_id = self.product.create({
+ category = self.category.create({'name': 'ProdCategoryTest'})
+ product = self.product.create({
'name': 'ProductTest',
- 'default_uom': uom_id,
- 'category': category_id,
+ 'default_uom': uom.id,
+ 'category': category.id,
'account_category': True,
'list_price': Decimal(0),
'cost_price': Decimal(0),
})
- company_id, = self.company.search([('name', '=', 'B2CK')])
- self.user.write(USER, {
- 'main_company': company_id,
- 'company': company_id,
+ company, = self.company.search([('name', '=', 'B2CK')])
+ self.user.write([self.user(USER)], {
+ 'main_company': company.id,
+ 'company': company.id,
})
- receivable_id, = self.account.search([
+ receivable, = self.account.search([
('kind', '=', 'receivable'),
- ('company', '=', company_id),
+ ('company', '=', company.id),
])
- payable_id, = self.account.search([
+ payable, = self.account.search([
('kind', '=', 'payable'),
- ('company', '=', company_id),
+ ('company', '=', company.id),
])
- supplier_id = self.party.create({
+ supplier = self.party.create({
'name': 'supplier',
- 'account_receivable': receivable_id,
- 'account_payable': payable_id,
+ 'account_receivable': receivable.id,
+ 'account_payable': payable.id,
})
- product_supplier_id = self.product_supplier.create({
- 'product': product_id,
- 'company': company_id,
- 'party': supplier_id,
+ product_supplier = self.product_supplier.create({
+ 'product': product.id,
+ 'company': company.id,
+ 'party': supplier.id,
'delivery_time': delivery_time,
})
- return product_supplier_id
+ return product_supplier
def suite():
diff --git a/tryton.cfg b/tryton.cfg
new file mode 100644
index 0000000..c016a81
--- /dev/null
+++ b/tryton.cfg
@@ -0,0 +1,14 @@
+[tryton]
+version=2.6.0
+depends:
+ account
+ ir
+ party
+ product
+ purchase
+ res
+ stock
+xml:
+ order_point.xml
+ purchase_request.xml
+ shipment.xml
diff --git a/trytond_stock_supply.egg-info/PKG-INFO b/trytond_stock_supply.egg-info/PKG-INFO
index 805c333..d525a1b 100644
--- a/trytond_stock_supply.egg-info/PKG-INFO
+++ b/trytond_stock_supply.egg-info/PKG-INFO
@@ -1,20 +1,48 @@
Metadata-Version: 1.0
Name: trytond-stock-supply
-Version: 2.4.1
-Summary: Supply Management Module with:
- - Order point
- - Purchase Request
-
-With schedulers:
- - to generate purchase requests based on order points
- - to generate internal shipments based on order points
-
+Version: 2.6.0
+Summary: Tryton module for stock supply
Home-page: http://www.tryton.org/
-Author: B2CK
-Author-email: info at b2ck.com
+Author: Tryton
+Author-email: UNKNOWN
License: GPL-3
-Download-URL: http://downloads.tryton.org/2.4/
-Description: UNKNOWN
+Download-URL: http://downloads.tryton.org/2.6/
+Description: trytond_stock_supply
+ ====================
+
+ The stock_supply module of the Tryton application platform.
+
+ Installing
+ ----------
+
+ See INSTALL
+
+ Support
+ -------
+
+ If you encounter any problems with Tryton, please don't hesitate to ask
+ questions on the Tryton bug tracker, mailing list, wiki or IRC channel:
+
+ http://bugs.tryton.org/
+ http://groups.tryton.org/
+ http://wiki.tryton.org/
+ irc://irc.freenode.net/tryton
+
+ License
+ -------
+
+ See LICENSE
+
+ Copyright
+ ---------
+
+ See COPYRIGHT
+
+
+ For more information please visit the Tryton web site:
+
+ http://www.tryton.org/
+
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Plugins
diff --git a/trytond_stock_supply.egg-info/SOURCES.txt b/trytond_stock_supply.egg-info/SOURCES.txt
index 177f898..0e8c059 100644
--- a/trytond_stock_supply.egg-info/SOURCES.txt
+++ b/trytond_stock_supply.egg-info/SOURCES.txt
@@ -8,8 +8,8 @@ order_point.xml
purchase_request.xml
setup.py
shipment.xml
+tryton.cfg
./__init__.py
-./__tryton__.py
./order_point.py
./product.py
./purchase_request.py
diff --git a/trytond_stock_supply.egg-info/requires.txt b/trytond_stock_supply.egg-info/requires.txt
index aa9da2b..8ba04ca 100644
--- a/trytond_stock_supply.egg-info/requires.txt
+++ b/trytond_stock_supply.egg-info/requires.txt
@@ -1,6 +1,6 @@
-trytond_product >= 2.4, < 2.5
-trytond_stock >= 2.4, < 2.5
-trytond_purchase >= 2.4, < 2.5
-trytond_party >= 2.4, < 2.5
-trytond_account >= 2.4, < 2.5
-trytond >= 2.4, < 2.5
\ No newline at end of file
+trytond_account >= 2.6, < 2.7
+trytond_party >= 2.6, < 2.7
+trytond_product >= 2.6, < 2.7
+trytond_purchase >= 2.6, < 2.7
+trytond_stock >= 2.6, < 2.7
+trytond >= 2.6, < 2.7
\ No newline at end of file
commit 0b9344a97b7dc10e02c6d927527bee268d71b34b
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Tue Sep 18 16:07:26 2012 +0200
Releasing debian version 2.4.1-2.
diff --git a/debian/changelog b/debian/changelog
index 46b200c..62e4cd0 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,17 @@
+tryton-modules-stock-supply (2.4.1-2) experimental; urgency=low
+
+ [ Daniel Baumann ]
+ * Updating maintainers field.
+ * Updating vcs fields.
+ * Correcting copyright file to match format version 1.0.
+ * Switching to xz compression.
+ * Updating to debhelper version 9.
+
+ [ Mathias Behrle ]
+ * Merging branch debian-wheezy-2.2 (Closes: #687752).
+
+ -- Mathias Behrle <mathiasb at m9s.biz> Mon, 17 Sep 2012 16:49:49 +0200
+
tryton-modules-stock-supply (2.4.1-1) experimental; urgency=low
* Merging upstream version 2.4.1.
commit ae1ef71ddd6b106d6687183e95329e8878f38172
Author: Daniel Baumann <daniel at debian.org>
Date: Sat Jun 30 18:02:29 2012 +0200
Updating to debhelper version 9.
diff --git a/debian/compat b/debian/compat
index 45a4fb7..ec63514 100644
--- a/debian/compat
+++ b/debian/compat
@@ -1 +1 @@
-8
+9
diff --git a/debian/control b/debian/control
index 2ebc28b..bd6f7e4 100644
--- a/debian/control
+++ b/debian/control
@@ -4,7 +4,7 @@ Priority: optional
Maintainer: Debian Tryton Maintainers <maintainers at debian.tryton.org>
Uploaders: Daniel Baumann <daniel at debian.org>, Mathias Behrle <mathiasb at m9s.biz>
Dm-Upload-Allowed: yes
-Build-Depends: debhelper (>= 8), python (>= 2.6.6-3~), python-setuptools
+Build-Depends: debhelper (>= 9), python (>= 2.6.6-3~), python-setuptools
Standards-Version: 3.9.3
Homepage: http://www.tryton.org/
Vcs-Browser: http://debian.tryton.org/gitweb/?p=packages/tryton-modules-stock-supply.git
commit 4ea5fb5504fbfbda068e46697516f27f5a3577ce
Author: Daniel Baumann <daniel at debian.org>
Date: Sat Jun 30 17:54:37 2012 +0200
Switching to xz compression.
diff --git a/debian/rules b/debian/rules
index e32b791..1ae0776 100755
--- a/debian/rules
+++ b/debian/rules
@@ -7,3 +7,6 @@ override_dh_auto_clean:
dh_auto_clean
rm -rf *.egg-info
+
+override_dh_builddeb:
+ dh_builddeb -- -Zxz -z9
diff --git a/debian/source/options b/debian/source/options
index d053b65..22a4de9 100644
--- a/debian/source/options
+++ b/debian/source/options
@@ -1,2 +1,2 @@
-compression = gzip
+compression = xz
compression-level = 9
commit 890918635c993525881cc3932725eaf7f4f7e79d
Author: Daniel Baumann <daniel at debian.org>
Date: Sat Jun 30 17:50:25 2012 +0200
Correcting copyright file to match format version 1.0.
diff --git a/debian/copyright b/debian/copyright
index acea21e..5e95cf4 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -2,15 +2,15 @@ Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Files: *
Copyright:
- (C) 2008-2012 Cedric Krier
- (C) 2008-2012 Bertrand Chenal
- (C) 2008-2012 B2CK SPRL
+ 2008-2012 Cedric Krier
+ 2008-2012 Bertrand Chenal
+ 2008-2012 B2CK SPRL
License: GPL-3+
Files: debian/*
Copyright:
- (C) 2009-2012 Daniel Baumann <daniel at debian.org>
- (C) 2012 Mathias Behrle <mathiasb at m9s.biz>
+ 2009-2012 Daniel Baumann <daniel at debian.org>
+ 2012 Mathias Behrle <mathiasb at m9s.biz>
License: GPL-3+
License: GPL-3+
commit 92ef80fa999d26e368e72903c41f9bf1d3bfa33a
Author: Daniel Baumann <daniel at 127011.net>
Date: Sat Jun 30 16:55:04 2012 +0200
Updating vcs fields.
diff --git a/debian/control b/debian/control
index 12e75d3..2ebc28b 100644
--- a/debian/control
+++ b/debian/control
@@ -7,8 +7,8 @@ Dm-Upload-Allowed: yes
Build-Depends: debhelper (>= 8), python (>= 2.6.6-3~), python-setuptools
Standards-Version: 3.9.3
Homepage: http://www.tryton.org/
-Vcs-Browser: http://git.debian-maintainers.org/?p=tryton/tryton-modules-stock-supply.git
-Vcs-Git: git://git.debian-maintainers.org/git/tryton/tryton-modules-stock-supply.git
+Vcs-Browser: http://debian.tryton.org/gitweb/?p=packages/tryton-modules-stock-supply.git
+Vcs-Git: git://debian.tryton.org/git/packages/tryton-modules-stock-supply.git
X-Python-Version: >= 2.5
Package: tryton-modules-stock-supply
commit ef86ab6a779852f28e9199c0ed84990d60aa74f3
Author: Daniel Baumann <daniel at 127011.net>
Date: Sat Jun 30 16:52:31 2012 +0200
Updating maintainers field.
diff --git a/debian/control b/debian/control
index d5728cf..12e75d3 100644
--- a/debian/control
+++ b/debian/control
@@ -1,7 +1,7 @@
Source: tryton-modules-stock-supply
Section: python
Priority: optional
-Maintainer: Debian Tryton Maintainers <tryton at lists.debian-maintainers.org>
+Maintainer: Debian Tryton Maintainers <maintainers at debian.tryton.org>
Uploaders: Daniel Baumann <daniel at debian.org>, Mathias Behrle <mathiasb at m9s.biz>
Dm-Upload-Allowed: yes
Build-Depends: debhelper (>= 8), python (>= 2.6.6-3~), python-setuptools
commit 6b750a660af7bf2f3989c46e708517a6651ac040
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Tue Sep 11 14:27:44 2012 +0200
Releasing debian version 2.4.1-1.
diff --git a/debian/changelog b/debian/changelog
index b48401a..46b200c 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+tryton-modules-stock-supply (2.4.1-1) experimental; urgency=low
+
+ * Merging upstream version 2.4.1.
+
+ -- Mathias Behrle <mathiasb at m9s.biz> Tue, 11 Sep 2012 13:19:53 +0200
+
tryton-modules-stock-supply (2.4.0-1) experimental; urgency=low
* Updating to Standards-Version: 3.9.3, no changes needed.
commit cc0a99b2014b70695f946f9225d9127180a74c24
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Tue Sep 11 13:16:52 2012 +0200
Merging upstream version 2.4.1.
diff --git a/CHANGELOG b/CHANGELOG
index b832be7..3fb25d2 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,6 @@
+Version 2.4.1 - 2012-09-02
+* Bug fixes (see mercurial logs for details)
+
Version 2.4.0 - 2012-04-24
* Bug fixes (see mercurial logs for details)
* Warehouse is not always required
diff --git a/PKG-INFO b/PKG-INFO
index 9d87be9..8566e4e 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
Metadata-Version: 1.0
Name: trytond_stock_supply
-Version: 2.4.0
+Version: 2.4.1
Summary: Supply Management Module with:
- Order point
- Purchase Request
diff --git a/__tryton__.py b/__tryton__.py
index 5d5c069..cfac736 100644
--- a/__tryton__.py
+++ b/__tryton__.py
@@ -9,7 +9,7 @@
'name_es_CO': 'Gestión de pedidos de inventario',
'name_es_ES': 'Gestión del abastecimiento de stock',
'name_fr_FR': 'Gestion des approvisionnements de stock',
- 'version': '2.4.0',
+ 'version': '2.4.1',
'author': 'B2CK',
'email': 'info at b2ck.com',
'website': 'http://www.tryton.org/',
diff --git a/purchase_request.py b/purchase_request.py
index e54cad9..cd7ca91 100644
--- a/purchase_request.py
+++ b/purchase_request.py
@@ -712,7 +712,7 @@ class CreatePurchase(Wizard):
product_price = product_price.quantize(
Decimal(1) / 10 ** line_obj.unit_price.digits[1])
- if not product_price:
+ if product_price is None:
self.raise_user_error('missing_price', (request.product.name,
request.product.id), 'please_update')
line['unit_price'] = product_price
@@ -721,10 +721,10 @@ class CreatePurchase(Wizard):
for tax in request.product.supplier_taxes_used:
if request.party and request.party.supplier_tax_rule:
pattern = self._get_tax_rule_pattern(request)
- tax_id = tax_rule_obj.apply(request.party.supplier_tax_rule,
+ tax_ids = tax_rule_obj.apply(request.party.supplier_tax_rule,
tax, pattern)
- if tax_id:
- taxes.append(tax_id)
+ if tax_ids:
+ taxes.extend(tax_ids)
continue
taxes.append(tax.id)
line['taxes'] = [('add', taxes)]
diff --git a/trytond_stock_supply.egg-info/PKG-INFO b/trytond_stock_supply.egg-info/PKG-INFO
index 7f31e66..805c333 100644
--- a/trytond_stock_supply.egg-info/PKG-INFO
+++ b/trytond_stock_supply.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
Metadata-Version: 1.0
Name: trytond-stock-supply
-Version: 2.4.0
+Version: 2.4.1
Summary: Supply Management Module with:
- Order point
- Purchase Request
commit e18b59f151435f6e0949c58961f34b21a5b5b0a1
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Sat Apr 28 12:44:16 2012 +0200
Releasing debian version 2.4.0-1.
diff --git a/debian/changelog b/debian/changelog
index a02b432..b48401a 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,15 @@
+tryton-modules-stock-supply (2.4.0-1) experimental; urgency=low
+
+ * Updating to Standards-Version: 3.9.3, no changes needed.
+ * Updating year in copyright.
+ * Adding myself to copyright.
+ * Adding Format header for DEP5.
+ * Merging upstream version 2.4.0.
+ * Updating Copyright.
+ * Bumping versioned tryton depends to 2.4.
+
+ -- Mathias Behrle <mathiasb at m9s.biz> Thu, 26 Apr 2012 19:33:23 +0200
+
tryton-modules-stock-supply (2.2.0-1) unstable; urgency=low
* Updating versioned tryton depends to 2.2.
commit 20b9933d43e3b4c7c71395737fbbb40594b46260
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Thu Apr 26 19:11:45 2012 +0200
Bumping versioned tryton depends to 2.4.
diff --git a/debian/control b/debian/control
index b8561d4..d5728cf 100644
--- a/debian/control
+++ b/debian/control
@@ -14,10 +14,10 @@ X-Python-Version: >= 2.5
Package: tryton-modules-stock-supply
Architecture: all
Depends:
- ${misc:Depends}, ${python:Depends}, tryton-server (>= 2.2),
- tryton-modules-account (>= 2.2), tryton-modules-party (>= 2.2),
- tryton-modules-product (>= 2.2), tryton-modules-purchase (>= 2.2),
- tryton-modules-stock (>= 2.2), python-pkg-resources
+ ${misc:Depends}, ${python:Depends}, tryton-server (>= 2.4),
+ tryton-modules-account (>= 2.4), tryton-modules-party (>= 2.4),
+ tryton-modules-product (>= 2.4), tryton-modules-purchase (>= 2.4),
+ tryton-modules-stock (>= 2.4), python-pkg-resources
Description: Tryton Application Platform (Stock Supply 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
commit 1c5ccdb077003eb5bbdde42aa862682716e20dd0
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Wed Apr 25 20:08:13 2012 +0200
Updating Copyright.
diff --git a/debian/copyright b/debian/copyright
index d2ad74d..acea21e 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -2,9 +2,9 @@ Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Files: *
Copyright:
- (C) 2008-2011 Cedric Krier
- (C) 2008-2011 Bertrand Chenal
- (C) 2008-2011 B2CK SPRL
+ (C) 2008-2012 Cedric Krier
+ (C) 2008-2012 Bertrand Chenal
+ (C) 2008-2012 B2CK SPRL
License: GPL-3+
Files: debian/*
commit e28f015a5db6dfb754fa751fbac7d4d701fabf27
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Tue Apr 24 19:31:08 2012 +0200
Merging upstream version 2.4.0.
diff --git a/CHANGELOG b/CHANGELOG
index 4816d83..b832be7 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,9 @@
+Version 2.4.0 - 2012-04-24
+* Bug fixes (see mercurial logs for details)
+* Warehouse is not always required
+* get_shortage works on a list of products
+* Group purchases using a key
+
Version 2.2.0 - 2011-10-25
* Bug fixes (see mercurial logs for details)
* Add wizard to create purchase requests
diff --git a/COPYRIGHT b/COPYRIGHT
index 3d2324b..2057c72 100644
--- a/COPYRIGHT
+++ b/COPYRIGHT
@@ -1,6 +1,6 @@
-Copyright (C) 2008-2011 Cédric Krier.
-Copyright (C) 2008-2011 Bertrand Chenal.
-Copyright (C) 2008-2011 B2CK SPRL.
+Copyright (C) 2008-2012 Cédric Krier.
+Copyright (C) 2008-2012 Bertrand Chenal.
+Copyright (C) 2008-2012 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/INSTALL b/INSTALL
index 4288271..dea2748 100644
--- a/INSTALL
+++ b/INSTALL
@@ -4,7 +4,7 @@ Installing trytond_stock_supply
Prerequisites
-------------
- * Python 2.5 or later (http://www.python.org/)
+ * Python 2.6 or later (http://www.python.org/)
* trytond (http://www.tryton.org/)
* trytond_party (http://www.tryton.org/)
* trytond_product (http://www.tryton.org/)
diff --git a/PKG-INFO b/PKG-INFO
index 2112119..9d87be9 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
Metadata-Version: 1.0
Name: trytond_stock_supply
-Version: 2.2.0
+Version: 2.4.0
Summary: Supply Management Module with:
- Order point
- Purchase Request
@@ -13,7 +13,7 @@ Home-page: http://www.tryton.org/
Author: B2CK
Author-email: info at b2ck.com
License: GPL-3
-Download-URL: http://downloads.tryton.org/2.2/
+Download-URL: http://downloads.tryton.org/2.4/
Description: UNKNOWN
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
diff --git a/__init__.py b/__init__.py
index b76a64a..e471762 100644
--- a/__init__.py
+++ b/__init__.py
@@ -1,6 +1,6 @@
-#This file is part of Tryton. The COPYRIGHT file at the top level of
+#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 order_point import *
-from product import *
-from purchase_request import *
-from shipment import *
+from .order_point import *
+from .product import *
+from .purchase_request import *
+from .shipment import *
diff --git a/__tryton__.py b/__tryton__.py
index be9715a..5d5c069 100644
--- a/__tryton__.py
+++ b/__tryton__.py
@@ -3,11 +3,13 @@
{
'name': 'Stock Supply Management',
'name_bg_BG': 'Управление на доставка на наличност',
+ 'name_ca_ES': 'Gestió del proveïment d''estocs',
'name_de_DE': 'Lagerverwaltung Bestellwesen',
+ 'name_es_AR': 'Gestión de suministro de existencias',
'name_es_CO': 'Gestión de pedidos de inventario',
- 'name_es_ES': 'Gestión de suministro de existencias',
+ 'name_es_ES': 'Gestión del abastecimiento de stock',
'name_fr_FR': 'Gestion des approvisionnements de stock',
- 'version': '2.2.0',
+ 'version': '2.4.0',
'author': 'B2CK',
'email': 'info at b2ck.com',
'website': 'http://www.tryton.org/',
@@ -27,6 +29,14 @@ With schedulers:
- за генериране на заявки за покупка въз основа на пренареждания
- за генериране на вътрешни пратки въз основа на пренареждания
''',
+ 'description_ca_ES': '''Mòdul per la gestió del proveïment d'estocs amb:
+ - Estocs mínims
+ - Peticions de compra
+
+I planificadors:
+ - Per generar peticions de compra basades en estocs mínims
+ - Per generar albarans interns basats en estocs mínims
+''',
'description_de_DE': '''Modul für das Bestellwesen mit:
- Bestellpunkten
- Auftragserstellung
@@ -35,6 +45,14 @@ Mit automatischer Auftragserstellung per Zeitplaner:
- für Bestellungen auf der Basis von Bestellpunkten
- für interne Lieferposten auf der Basis von Bestellpunkten
''',
+ 'description_es_AR': '''Módulo de gestión de suministros con:
+ - Punto de orden
+ - Solicitud de compra
+
+Con tareas programadas para:
+ - generar solicitudes de compra basados en puntos de orden
+ - generar envios internos basados en puntos de orden
+''',
'description_es_CO': '''Módulo de Administración de pedidos:
- Punto de Orden
- Solicitud de Compras
@@ -43,13 +61,13 @@ Con agendadores para:
- generar solicitudes de compra basados en puntos de orden
- generar empaques internos basados en puntos de orden
''',
- 'description_es_ES': '''Módulo de gestión de suministros con:
- - Punto de orden
- - Solicitud de compra
+ 'description_es_ES': '''Módulo para la gestión de abastecimientos con:
+ - Reglas de stock mínimo
+ - Solicitudes de compra
-Con tareas programadas para:
- - generar solicitudes de compra basados en puntos de orden
- - generar envios internos basados en puntos de orden
+Con planificadores para:
+ - Generar solicitudes de compra basadas en stocks mínimos
+ - Generar envíos internos basados en stocks mínimos
''',
'description_fr_FR': '''Module de gestion des approvisionnements avec:
- Règles d'approvisionnement
@@ -77,7 +95,9 @@ sur base des règles d'approvisionnement
'translation': [
'locale/cs_CZ.po',
'locale/bg_BG.po',
+ 'locale/ca_ES.po',
'locale/de_DE.po',
+ 'locale/es_AR.po',
'locale/es_CO.po',
'locale/es_ES.po',
'locale/fr_FR.po',
diff --git a/locale/bg_BG.po b/locale/bg_BG.po
index 8dd2943..b910fd2 100644
--- a/locale/bg_BG.po
+++ b/locale/bg_BG.po
@@ -2,29 +2,33 @@
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
-msgctxt "error:purchase.request.create_purchase:0"
+msgctxt "error:purchase.request.create_purchase:"
msgid "Purchase price is missing for product: %s (id: %s)!"
msgstr "Липсва покупната цена за продукт: %s (id: %s)!"
-msgctxt "error:purchase.request.create_purchase:0"
+msgctxt "error:purchase.request.create_purchase:"
msgid "This price is necessary for creating purchase."
msgstr "Цената е необходима при създаване на покупка"
-msgctxt "error:purchase.request:0"
+msgctxt "error:purchase.request:"
msgid "Purchase requests are only created by the system."
msgstr "Заявките за покупка се създават само от системата"
-msgctxt "error:stock.order_point:0"
+msgctxt "error:purchase.request:"
+msgid "The requested quantity must be greater than 0"
+msgstr ""
+
+msgctxt "error:stock.order_point:"
msgid "Maximal quantity must be bigger than Minimal quantity"
msgstr ""
"Максималното количество трябва да е по-голямо от Минималното количество"
-msgctxt "error:stock.order_point:0"
+msgctxt "error:stock.order_point:"
msgid "Only one order point is allowed for each product-location pair."
msgstr ""
"Разрешено е само едно пренареждане за всяка двойка продукт-местонахождение."
-msgctxt "error:stock.order_point:0"
+msgctxt "error:stock.order_point:"
msgid ""
"You can not define two order points on the same product with opposite "
"locations."
@@ -32,146 +36,202 @@ msgstr ""
"Не може да зададете две пренареждания на един и същи продукт с "
"противоположни местонахождения"
-msgctxt "field:product.product,order_points:0"
+msgctxt "field:product.product,order_points:"
msgid "Order Points"
msgstr "Пренареждания"
-msgctxt "field:purchase.request,company:0"
+msgctxt "field:purchase.request,company:"
msgid "Company"
msgstr "Фирма"
-msgctxt "field:purchase.request,computed_quantity:0"
+msgctxt "field:purchase.request,computed_quantity:"
msgid "Computed Quantity"
msgstr "Изчислено количество"
-msgctxt "field:purchase.request,computed_uom:0"
+msgctxt "field:purchase.request,computed_uom:"
msgid "Computed UOM"
msgstr "Изчислена мер. ед."
-msgctxt "field:purchase.request,origin:0"
+msgctxt "field:purchase.request,create_date:"
+msgid "Create Date"
+msgstr "Създадено на"
+
+msgctxt "field:purchase.request,create_uid:"
+msgid "Create User"
+msgstr "Създадено от"
+
+msgctxt "field:purchase.request,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:purchase.request,origin:"
msgid "Origin"
msgstr "Източник"
-msgctxt "field:purchase.request,party:0"
+msgctxt "field:purchase.request,party:"
msgid "Party"
msgstr "Партньор"
-msgctxt "field:purchase.request,product:0"
+msgctxt "field:purchase.request,product:"
msgid "Product"
msgstr "Продукт"
-msgctxt "field:purchase.request,purchase:0"
+msgctxt "field:purchase.request,purchase:"
msgid "Purchase"
msgstr "Покупка"
-msgctxt "field:purchase.request,purchase_date:0"
+msgctxt "field:purchase.request,purchase_date:"
msgid "Best Purchase Date"
msgstr "Най-добра дата за покупка"
-msgctxt "field:purchase.request,purchase_line:0"
+msgctxt "field:purchase.request,purchase_line:"
msgid "Purchase Line"
msgstr "Ред от покупка"
-msgctxt "field:purchase.request,quantity:0"
+msgctxt "field:purchase.request,quantity:"
msgid "Quantity"
msgstr "Количество"
-msgctxt "field:purchase.request,rec_name:0"
+msgctxt "field:purchase.request,rec_name:"
msgid "Name"
msgstr "Име"
-msgctxt "field:purchase.request,state:0"
+msgctxt "field:purchase.request,state:"
msgid "State"
msgstr "Състояние"
-msgctxt "field:purchase.request,stock_level:0"
+msgctxt "field:purchase.request,stock_level:"
msgid "Stock at Supply Date"
msgstr "Наличност към дата на доставка"
-msgctxt "field:purchase.request,supply_date:0"
+msgctxt "field:purchase.request,supply_date:"
msgid "Expected Supply Date"
msgstr "Очаквана дата на доставка"
-msgctxt "field:purchase.request,uom:0"
+msgctxt "field:purchase.request,uom:"
msgid "UOM"
msgstr "Мер. ед."
-msgctxt "field:purchase.request,warehouse:0"
+msgctxt "field:purchase.request,warehouse:"
msgid "Warehouse"
msgstr "Склад"
-msgctxt "field:purchase.request.create_purchase.ask_party,company:0"
+msgctxt "field:purchase.request,warehouse_required:"
+msgid "Warehouse Required"
+msgstr ""
+
+msgctxt "field:purchase.request,write_date:"
+msgid "Write Date"
+msgstr "Променено на"
+
+msgctxt "field:purchase.request,write_uid:"
+msgid "Write User"
+msgstr "Променено от"
+
+msgctxt "field:purchase.request.create.start,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:purchase.request.create_purchase.ask_party,company:"
msgid "Company"
msgstr "Фирма"
-msgctxt "field:purchase.request.create_purchase.ask_party,party:0"
+msgctxt "field:purchase.request.create_purchase.ask_party,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:purchase.request.create_purchase.ask_party,party:"
msgid "Supplier"
msgstr "Доставчик"
-msgctxt "field:purchase.request.create_purchase.ask_party,product:0"
+msgctxt "field:purchase.request.create_purchase.ask_party,product:"
msgid "Product"
msgstr "Продукт"
-msgctxt "field:purchase.request.create_purchase.ask_term,company:0"
+msgctxt "field:purchase.request.create_purchase.ask_term,company:"
msgid "Company"
msgstr "Фирма"
-msgctxt "field:purchase.request.create_purchase.ask_term,party:0"
+msgctxt "field:purchase.request.create_purchase.ask_term,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:purchase.request.create_purchase.ask_term,party:"
msgid "Supplier"
msgstr "Доставчик"
-msgctxt "field:purchase.request.create_purchase.ask_term,payment_term:0"
+msgctxt "field:purchase.request.create_purchase.ask_term,payment_term:"
msgid "Payment Term"
msgstr "Условие за плащане"
-msgctxt "field:stock.order_point,company:0"
+msgctxt "field:stock.order_point,company:"
msgid "Company"
msgstr "Фирма"
-msgctxt "field:stock.order_point,location:0"
+msgctxt "field:stock.order_point,create_date:"
+msgid "Create Date"
+msgstr "Създадено на"
+
+msgctxt "field:stock.order_point,create_uid:"
+msgid "Create User"
+msgstr "Създадено от"
+
+msgctxt "field:stock.order_point,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:stock.order_point,location:"
msgid "Location"
msgstr "Местоположение"
-msgctxt "field:stock.order_point,max_quantity:0"
+msgctxt "field:stock.order_point,max_quantity:"
msgid "Maximal Quantity"
msgstr "Максимално количество"
-msgctxt "field:stock.order_point,min_quantity:0"
+msgctxt "field:stock.order_point,min_quantity:"
msgid "Minimal Quantity"
msgstr "Минимално количество"
-msgctxt "field:stock.order_point,product:0"
+msgctxt "field:stock.order_point,product:"
msgid "Product"
msgstr "Продукт"
-msgctxt "field:stock.order_point,provisioning_location:0"
+msgctxt "field:stock.order_point,provisioning_location:"
msgid "Provisioning Location"
msgstr "Местонахождение на провизии"
-msgctxt "field:stock.order_point,rec_name:0"
+msgctxt "field:stock.order_point,rec_name:"
msgid "Name"
msgstr "Име"
-msgctxt "field:stock.order_point,storage_location:0"
+msgctxt "field:stock.order_point,storage_location:"
msgid "Storage Location"
msgstr "Местонахождение на съхранение"
-msgctxt "field:stock.order_point,type:0"
+msgctxt "field:stock.order_point,type:"
msgid "Type"
msgstr "Вид"
-msgctxt "field:stock.order_point,unit:0"
+msgctxt "field:stock.order_point,unit:"
msgid "Unit"
msgstr "Единица"
-msgctxt "field:stock.order_point,unit_digits:0"
+msgctxt "field:stock.order_point,unit_digits:"
msgid "Unit Digits"
msgstr "Десетични единици"
-msgctxt "field:stock.order_point,warehouse_location:0"
+msgctxt "field:stock.order_point,warehouse_location:"
msgid "Warehouse Location"
msgstr "Местонахождение на склад"
+msgctxt "field:stock.order_point,write_date:"
+msgid "Write Date"
+msgstr "Променено на"
+
+msgctxt "field:stock.order_point,write_uid:"
+msgid "Write User"
+msgstr "Променено от"
+
msgctxt "model:ir.action,name:act_order_point_form"
msgid "Order Points"
msgstr "Пренареждания"
@@ -180,9 +240,9 @@ msgctxt "model:ir.action,name:act_purchase_form"
msgid "Purchases"
msgstr "Покупки"
-msgctxt "model:ir.action,name:act_purchase_request_create_purchase_request"
+msgctxt "model:ir.action,name:act_purchase_request_create"
msgid "Create Purchase Requests"
-msgstr ""
+msgstr "Създаване на заявки за покупка"
msgctxt "model:ir.action,name:act_purchase_request_form"
msgid "Purchase Requests"
@@ -204,14 +264,14 @@ msgctxt "model:ir.cron,name:cron_shipment_iternal"
msgid "Generate Internal Shipments"
msgstr "Генериране на вътрешна пратка"
-msgctxt "model:ir.ui.menu,name:menu_create_purchase_request"
-msgid "Create Purchase Requests"
-msgstr ""
-
msgctxt "model:ir.ui.menu,name:menu_order_point_form"
msgid "Order Points"
msgstr "Пренареждания"
+msgctxt "model:ir.ui.menu,name:menu_purchase_request_create"
+msgid "Create Purchase Requests"
+msgstr "Създаване на заявки за покупка"
+
msgctxt "model:ir.ui.menu,name:menu_purchase_request_form"
msgid "Purchase Requests"
msgstr "Заявки за покупки"
@@ -220,22 +280,22 @@ msgctxt "model:ir.ui.menu,name:menu_purchase_request_form_draft"
msgid "Draft Purchase Requests"
msgstr "Проект на заявки за покупка"
-msgctxt "model:purchase.request,name:0"
+msgctxt "model:purchase.request,name:"
msgid "Purchase Request"
msgstr "Заявка за покупка"
-msgctxt "model:purchase.request.create_purchase.ask_party,name:0"
+msgctxt "model:purchase.request.create.start,name:"
+msgid "Create Purchase Request"
+msgstr "Създаване на заявка за покупка"
+
+msgctxt "model:purchase.request.create_purchase.ask_party,name:"
msgid "Create Purchase Ask Party"
msgstr "Създаване на покупка - питане на партньор"
-msgctxt "model:purchase.request.create_purchase.ask_term,name:0"
+msgctxt "model:purchase.request.create_purchase.ask_term,name:"
msgid "Create Purchase Ask Term"
msgstr "Запитване за създаване на условие за плащане"
-msgctxt "model:purchase.request.create_purchase_request.init,name:0"
-msgid "Create Purchase Request Init"
-msgstr ""
-
msgctxt "model:res.group,name:group_purchase_request"
msgid "Purchase Request"
msgstr "Заявка за покупка"
@@ -248,104 +308,102 @@ msgctxt "model:res.user,name:user_generate_shipment_internal"
msgid "Cron Intenal Shipment"
msgstr "Планиране на вътрешена пратка"
-msgctxt "model:stock.order_point,name:0"
+msgctxt "model:stock.order_point,name:"
msgid "Order Point"
msgstr "Пренареждане"
-msgctxt "selection:purchase.request,state:0"
+msgctxt "selection:purchase.request,state:"
msgid "Cancel"
msgstr "Отказ"
-msgctxt "selection:purchase.request,state:0"
+msgctxt "selection:purchase.request,state:"
msgid "Done"
msgstr "Приключен"
-msgctxt "selection:purchase.request,state:0"
+msgctxt "selection:purchase.request,state:"
msgid "Draft"
msgstr "Проект"
-msgctxt "selection:purchase.request,state:0"
+msgctxt "selection:purchase.request,state:"
msgid "Purchased"
msgstr "Поръчан"
-msgctxt "selection:stock.order_point,type:0"
+msgctxt "selection:stock.order_point,type:"
msgid "Internal"
msgstr "Вътрешно"
-msgctxt "selection:stock.order_point,type:0"
+msgctxt "selection:stock.order_point,type:"
msgid "Purchase"
msgstr "Покупка"
-msgctxt "view:purchase.request.create_purchase.ask_party:0"
+msgctxt "view:purchase.request.create.start:"
+msgid "Create Purchase Request"
+msgstr "Създаване на заявка за покупка"
+
+msgctxt "view:purchase.request.create.start:"
+msgid "Create Purchase Request?"
+msgstr "Създаване на заявка за покупка?"
+
+msgctxt "view:purchase.request.create_purchase.ask_party:"
msgid "Create Purchase: Missing Supplier"
msgstr "Създаване на покупка; липсва доставчик"
-msgctxt "view:purchase.request.create_purchase.ask_term:0"
+msgctxt "view:purchase.request.create_purchase.ask_term:"
msgid "Create Purchase: Missing Payment Term"
msgstr "Създаване на покупка: Липсва условие за плащане"
-msgctxt "view:purchase.request.create_purchase_request.init:0"
-msgid "Create Purchase Request"
-msgstr ""
-
-msgctxt "view:purchase.request.create_purchase_request.init:0"
-msgid "Create Purchase Request?"
-msgstr ""
-
-msgctxt "view:purchase.request:0"
+msgctxt "view:purchase.request:"
msgid "Product Info"
msgstr "Информация за продукт"
-msgctxt "view:purchase.request:0"
+msgctxt "view:purchase.request:"
msgid "Purchase Request"
msgstr "Заявка за покупка"
-msgctxt "view:purchase.request:0"
+msgctxt "view:purchase.request:"
msgid "Purchase Requests"
msgstr "Заявки за покупка"
-msgctxt "view:purchase.request:0"
+msgctxt "view:purchase.request:"
msgid "Supply Info"
msgstr "Информация за доставчик"
-msgctxt "view:stock.order_point:0"
+msgctxt "view:stock.order_point:"
msgid "Order Point"
msgstr "Пренареждане"
-msgctxt "view:stock.order_point:0"
+msgctxt "view:stock.order_point:"
msgid "Order Point Type"
msgstr "Вид пренареждане"
-msgctxt "view:stock.order_point:0"
+msgctxt "view:stock.order_point:"
msgid "Order Points"
msgstr "Пренареждания"
-msgctxt "view:stock.order_point:0"
+msgctxt "view:stock.order_point:"
msgid "Product Info"
msgstr "Информация за продукт"
-msgctxt "wizard_button:purchase.request.create_purchase,ask_user_party,end:0"
+msgctxt "wizard_button:purchase.request.create,start,create_:"
+msgid "Create"
+msgstr "Създаване"
+
+msgctxt "wizard_button:purchase.request.create,start,end:"
msgid "Cancel"
msgstr "Отказ"
-msgctxt "wizard_button:purchase.request.create_purchase,ask_user_party,init:0"
-msgid "Continue"
-msgstr "Продължаване"
-
-msgctxt "wizard_button:purchase.request.create_purchase,ask_user_term,end:0"
+msgctxt "wizard_button:purchase.request.create_purchase,ask_party,end:"
msgid "Cancel"
msgstr "Отказ"
-msgctxt "wizard_button:purchase.request.create_purchase,ask_user_term,init:0"
+msgctxt "wizard_button:purchase.request.create_purchase,ask_party,start:"
msgid "Continue"
msgstr "Продължаване"
-#, fuzzy
-msgctxt "wizard_button:purchase.request.create_purchase_request,init,create:0"
-msgid "Create"
-msgstr "Създаване"
-
-#, fuzzy
-msgctxt "wizard_button:purchase.request.create_purchase_request,init,end:0"
+msgctxt "wizard_button:purchase.request.create_purchase,ask_term,end:"
msgid "Cancel"
msgstr "Отказ"
+
+msgctxt "wizard_button:purchase.request.create_purchase,ask_term,start:"
+msgid "Continue"
+msgstr "Продължаване"
diff --git a/locale/ca_ES.po b/locale/ca_ES.po
new file mode 100644
index 0000000..17d3038
--- /dev/null
+++ b/locale/ca_ES.po
@@ -0,0 +1,423 @@
+#
+msgid ""
+msgstr "Content-Type: text/plain; charset=utf-8\n"
+
+msgctxt "error:purchase.request.create_purchase:"
+msgid "Purchase price is missing for product: %s (id: %s)!"
+msgstr "Falta el preu de compra per al producte: %s (id: %s)"
+
+msgctxt "error:purchase.request.create_purchase:"
+msgid "This price is necessary for creating purchase."
+msgstr "Es necessita aquest preu per crear la compra."
+
+msgctxt "error:purchase.request:"
+msgid "Purchase requests are only created by the system."
+msgstr "Les sol·licituds de compra només les crea el sistema."
+
+msgctxt "error:purchase.request:"
+msgid "The requested quantity must be greater than 0"
+msgstr ""
+
+msgctxt "error:stock.order_point:"
+msgid "Maximal quantity must be bigger than Minimal quantity"
+msgstr "La quantitat màxima ha de ser major que la mínima"
+
+msgctxt "error:stock.order_point:"
+msgid "Only one order point is allowed for each product-location pair."
+msgstr ""
+"Només es permet una regla d'estoc mínim per cada parell de producte-"
+"ubicació."
+
+msgctxt "error:stock.order_point:"
+msgid ""
+"You can not define two order points on the same product with opposite "
+"locations."
+msgstr ""
+"No pot definir dues regles d'estoc mínim en el mateix producte amb "
+"ubicacions oposades."
+
+msgctxt "field:product.product,order_points:"
+msgid "Order Points"
+msgstr "Regles d'estoc mínim"
+
+msgctxt "field:purchase.request,company:"
+msgid "Company"
+msgstr "Empresa"
+
+msgctxt "field:purchase.request,computed_quantity:"
+msgid "Computed Quantity"
+msgstr "Quantitat calculada"
+
+msgctxt "field:purchase.request,computed_uom:"
+msgid "Computed UOM"
+msgstr "UdM calculada"
+
+msgctxt "field:purchase.request,create_date:"
+msgid "Create Date"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:purchase.request,create_uid:"
+msgid "Create User"
+msgstr "Crear usuari"
+
+msgctxt "field:purchase.request,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:purchase.request,origin:"
+msgid "Origin"
+msgstr "Origen"
+
+msgctxt "field:purchase.request,party:"
+msgid "Party"
+msgstr "Tercer"
+
+msgctxt "field:purchase.request,product:"
+msgid "Product"
+msgstr "Producte"
+
+msgctxt "field:purchase.request,purchase:"
+msgid "Purchase"
+msgstr "Compra"
+
+msgctxt "field:purchase.request,purchase_date:"
+msgid "Best Purchase Date"
+msgstr "Millor data de compra"
+
+msgctxt "field:purchase.request,purchase_line:"
+msgid "Purchase Line"
+msgstr "Línia de compra"
+
+msgctxt "field:purchase.request,quantity:"
+msgid "Quantity"
+msgstr "Quantitat"
+
+msgctxt "field:purchase.request,rec_name:"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:purchase.request,state:"
+msgid "State"
+msgstr "Estat"
+
+msgctxt "field:purchase.request,stock_level:"
+msgid "Stock at Supply Date"
+msgstr "Existències a la data del subministrament"
+
+msgctxt "field:purchase.request,supply_date:"
+msgid "Expected Supply Date"
+msgstr "Data estimada de subministrament"
+
+msgctxt "field:purchase.request,uom:"
+msgid "UOM"
+msgstr "UdM"
+
+msgctxt "field:purchase.request,warehouse:"
+msgid "Warehouse"
+msgstr "Magatzem"
+
+msgctxt "field:purchase.request,warehouse_required:"
+msgid "Warehouse Required"
+msgstr ""
+
+msgctxt "field:purchase.request,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:purchase.request,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "field:purchase.request.create.start,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:purchase.request.create_purchase.ask_party,company:"
+msgid "Company"
+msgstr "Empresa"
+
+msgctxt "field:purchase.request.create_purchase.ask_party,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:purchase.request.create_purchase.ask_party,party:"
+msgid "Supplier"
+msgstr "Proveïdor"
+
+msgctxt "field:purchase.request.create_purchase.ask_party,product:"
+msgid "Product"
+msgstr "Producte"
+
+msgctxt "field:purchase.request.create_purchase.ask_term,company:"
+msgid "Company"
+msgstr "Empresa"
+
+msgctxt "field:purchase.request.create_purchase.ask_term,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:purchase.request.create_purchase.ask_term,party:"
+msgid "Supplier"
+msgstr "Proveïdor"
+
+msgctxt "field:purchase.request.create_purchase.ask_term,payment_term:"
+msgid "Payment Term"
+msgstr "Termini de pagament"
+
+msgctxt "field:stock.order_point,company:"
+msgid "Company"
+msgstr "Empresa"
+
+msgctxt "field:stock.order_point,create_date:"
+msgid "Create Date"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:stock.order_point,create_uid:"
+msgid "Create User"
+msgstr "Crear usuari"
+
+msgctxt "field:stock.order_point,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:stock.order_point,location:"
+msgid "Location"
+msgstr "Ubicació"
+
+msgctxt "field:stock.order_point,max_quantity:"
+msgid "Maximal Quantity"
+msgstr "Quantitat màxima"
+
+msgctxt "field:stock.order_point,min_quantity:"
+msgid "Minimal Quantity"
+msgstr "Quantitat mínima"
+
+msgctxt "field:stock.order_point,product:"
+msgid "Product"
+msgstr "Producte"
+
+msgctxt "field:stock.order_point,provisioning_location:"
+msgid "Provisioning Location"
+msgstr "Ubicació de l'aprovisionament"
+
+msgctxt "field:stock.order_point,rec_name:"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:stock.order_point,storage_location:"
+msgid "Storage Location"
+msgstr "Ubicació del magatzem"
+
+msgctxt "field:stock.order_point,type:"
+msgid "Type"
+msgstr "Tipus"
+
+msgctxt "field:stock.order_point,unit:"
+msgid "Unit"
+msgstr "Unitat"
+
+msgctxt "field:stock.order_point,unit_digits:"
+msgid "Unit Digits"
+msgstr "Decimals de la unitat"
+
+msgctxt "field:stock.order_point,warehouse_location:"
+msgid "Warehouse Location"
+msgstr "Ubicació del magatzem"
+
+msgctxt "field:stock.order_point,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:stock.order_point,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_order_point_form"
+msgid "Order Points"
+msgstr "Regles d'estoc mínim"
+
+msgctxt "model:ir.action,name:act_purchase_form"
+msgid "Purchases"
+msgstr "Compres"
+
+msgctxt "model:ir.action,name:act_purchase_request_create"
+msgid "Create Purchase Requests"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_purchase_request_form"
+msgid "Purchase Requests"
+msgstr "Sol·licituds de compra"
+
+msgctxt "model:ir.action,name:act_purchase_request_form_draft"
+msgid "Draft Purchase Requests"
+msgstr ""
+
+msgctxt "model:ir.action,name:wizard_create_purchase"
+msgid "Create Purchase"
+msgstr "Crear una compra"
+
+msgctxt "model:ir.cron,name:cron_generate_request"
+msgid "Generate Purchase Requests"
+msgstr "Generar peticions de compra"
+
+msgctxt "model:ir.cron,name:cron_shipment_iternal"
+msgid "Generate Internal Shipments"
+msgstr "Generar enviaments interns"
+
+msgctxt "model:ir.ui.menu,name:menu_order_point_form"
+msgid "Order Points"
+msgstr "Regles d'estoc mínim"
+
+msgctxt "model:ir.ui.menu,name:menu_purchase_request_create"
+msgid "Create Purchase Requests"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_purchase_request_form"
+msgid "Purchase Requests"
+msgstr "Sol·licituds de compra"
+
+msgctxt "model:ir.ui.menu,name:menu_purchase_request_form_draft"
+msgid "Draft Purchase Requests"
+msgstr ""
+
+msgctxt "model:purchase.request,name:"
+msgid "Purchase Request"
+msgstr "Sol·licitud de compra"
+
+msgctxt "model:purchase.request.create.start,name:"
+msgid "Create Purchase Request"
+msgstr ""
+
+msgctxt "model:purchase.request.create_purchase.ask_party,name:"
+msgid "Create Purchase Ask Party"
+msgstr "Crear una compra - Petició de tercer"
+
+msgctxt "model:purchase.request.create_purchase.ask_term,name:"
+msgid "Create Purchase Ask Term"
+msgstr "Crear una compra - Petició de termini"
+
+msgctxt "model:res.group,name:group_purchase_request"
+msgid "Purchase Request"
+msgstr "Sol·licitud de compra"
+
+msgctxt "model:res.user,name:user_generate_request"
+msgid "Cron Purchase Request"
+msgstr "Programador de tasques de sol·licituds de compra"
+
+msgctxt "model:res.user,name:user_generate_shipment_internal"
+msgid "Cron Intenal Shipment"
+msgstr "Programador de tasques d'enviament intern"
+
+msgctxt "model:stock.order_point,name:"
+msgid "Order Point"
+msgstr "Regla d'estoc mínim"
+
+msgctxt "selection:purchase.request,origin:"
+msgid "Order Point"
+msgstr "Regla d'estoc mínim"
+
+msgctxt "selection:purchase.request,state:"
+msgid "Cancel"
+msgstr "Cancel·lar"
+
+msgctxt "selection:purchase.request,state:"
+msgid "Done"
+msgstr "Acabada"
+
+msgctxt "selection:purchase.request,state:"
+msgid "Draft"
+msgstr "Esborrany"
+
+msgctxt "selection:purchase.request,state:"
+msgid "Purchased"
+msgstr "Comprat"
+
+msgctxt "selection:stock.order_point,type:"
+msgid "Internal"
+msgstr "Intern"
+
+msgctxt "selection:stock.order_point,type:"
+msgid "Purchase"
+msgstr "Compra"
+
+msgctxt "view:purchase.request.create.start:"
+msgid "Create Purchase Request"
+msgstr ""
+
+msgctxt "view:purchase.request.create.start:"
+msgid "Create Purchase Request?"
+msgstr ""
+
+msgctxt "view:purchase.request.create_purchase.ask_party:"
+msgid "Create Purchase: Missing Supplier"
+msgstr "Crear una compra: falta el proveïdor"
+
+msgctxt "view:purchase.request.create_purchase.ask_term:"
+msgid "Create Purchase: Missing Payment Term"
+msgstr "Crear una compra: falta el termini de pagament"
+
+msgctxt "view:purchase.request:"
+msgid "Product Info"
+msgstr "Informació del producte"
+
+msgctxt "view:purchase.request:"
+msgid "Purchase Request"
+msgstr "Sol·licitud de compra"
+
+msgctxt "view:purchase.request:"
+msgid "Purchase Requests"
+msgstr "Sol·licituds de compra"
+
+msgctxt "view:purchase.request:"
+msgid "Supply Info"
+msgstr "Informació del subministrament"
+
+msgctxt "view:stock.order_point:"
+msgid "Locations"
+msgstr "Ubicacions"
+
+msgctxt "view:stock.order_point:"
+msgid "Order Point"
+msgstr "Regla d'estoc mínim"
+
+msgctxt "view:stock.order_point:"
+msgid "Order Point Type"
+msgstr "Tipus d'ordre de pagament"
+
+#, fuzzy
+msgctxt "view:stock.order_point:"
+msgid "Order Points"
+msgstr "Regles d'estoc mínim"
+
+msgctxt "view:stock.order_point:"
+msgid "Product Info"
+msgstr "Informació del producte"
+
+msgctxt "wizard_button:purchase.request.create,start,create_:"
+msgid "Create"
+msgstr ""
+
+#, fuzzy
+msgctxt "wizard_button:purchase.request.create,start,end:"
+msgid "Cancel"
+msgstr "Cancel·lar"
+
+#, fuzzy
+msgctxt "wizard_button:purchase.request.create_purchase,ask_party,end:"
+msgid "Cancel"
+msgstr "Cancel·lar"
+
+msgctxt "wizard_button:purchase.request.create_purchase,ask_party,start:"
+msgid "Continue"
+msgstr ""
+
+#, fuzzy
+msgctxt "wizard_button:purchase.request.create_purchase,ask_term,end:"
+msgid "Cancel"
+msgstr "Cancel·lar"
+
+msgctxt "wizard_button:purchase.request.create_purchase,ask_term,start:"
+msgid "Continue"
+msgstr ""
diff --git a/locale/cs_CZ.po b/locale/cs_CZ.po
index ee59dee..345a38d 100644
--- a/locale/cs_CZ.po
+++ b/locale/cs_CZ.po
@@ -2,172 +2,232 @@
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
-msgctxt "error:purchase.request.create_purchase:0"
+msgctxt "error:purchase.request.create_purchase:"
msgid "Purchase price is missing for product: %s (id: %s)!"
msgstr ""
-msgctxt "error:purchase.request.create_purchase:0"
+msgctxt "error:purchase.request.create_purchase:"
msgid "This price is necessary for creating purchase."
msgstr ""
-msgctxt "error:purchase.request:0"
+msgctxt "error:purchase.request:"
msgid "Purchase requests are only created by the system."
msgstr ""
-msgctxt "error:stock.order_point:0"
+msgctxt "error:purchase.request:"
+msgid "The requested quantity must be greater than 0"
+msgstr ""
+
+msgctxt "error:stock.order_point:"
msgid "Maximal quantity must be bigger than Minimal quantity"
msgstr ""
-msgctxt "error:stock.order_point:0"
+msgctxt "error:stock.order_point:"
msgid "Only one order point is allowed for each product-location pair."
msgstr ""
-msgctxt "error:stock.order_point:0"
+msgctxt "error:stock.order_point:"
msgid ""
"You can not define two order points on the same product with opposite "
"locations."
msgstr ""
-msgctxt "field:product.product,order_points:0"
+msgctxt "field:product.product,order_points:"
msgid "Order Points"
msgstr ""
-msgctxt "field:purchase.request,company:0"
+msgctxt "field:purchase.request,company:"
msgid "Company"
msgstr ""
-msgctxt "field:purchase.request,computed_quantity:0"
+msgctxt "field:purchase.request,computed_quantity:"
msgid "Computed Quantity"
msgstr ""
-msgctxt "field:purchase.request,computed_uom:0"
+msgctxt "field:purchase.request,computed_uom:"
msgid "Computed UOM"
msgstr ""
-msgctxt "field:purchase.request,origin:0"
+msgctxt "field:purchase.request,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:purchase.request,create_uid:"
+msgid "Create User"
+msgstr ""
+
+msgctxt "field:purchase.request,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:purchase.request,origin:"
msgid "Origin"
msgstr ""
-msgctxt "field:purchase.request,party:0"
+msgctxt "field:purchase.request,party:"
msgid "Party"
msgstr ""
-msgctxt "field:purchase.request,product:0"
+msgctxt "field:purchase.request,product:"
msgid "Product"
msgstr ""
-msgctxt "field:purchase.request,purchase:0"
+msgctxt "field:purchase.request,purchase:"
msgid "Purchase"
msgstr ""
-msgctxt "field:purchase.request,purchase_date:0"
+msgctxt "field:purchase.request,purchase_date:"
msgid "Best Purchase Date"
msgstr ""
-msgctxt "field:purchase.request,purchase_line:0"
+msgctxt "field:purchase.request,purchase_line:"
msgid "Purchase Line"
msgstr ""
-msgctxt "field:purchase.request,quantity:0"
+msgctxt "field:purchase.request,quantity:"
msgid "Quantity"
msgstr ""
-msgctxt "field:purchase.request,rec_name:0"
+msgctxt "field:purchase.request,rec_name:"
msgid "Name"
msgstr ""
-msgctxt "field:purchase.request,state:0"
+msgctxt "field:purchase.request,state:"
msgid "State"
msgstr ""
-msgctxt "field:purchase.request,stock_level:0"
+msgctxt "field:purchase.request,stock_level:"
msgid "Stock at Supply Date"
msgstr ""
-msgctxt "field:purchase.request,supply_date:0"
+msgctxt "field:purchase.request,supply_date:"
msgid "Expected Supply Date"
msgstr ""
-msgctxt "field:purchase.request,uom:0"
+msgctxt "field:purchase.request,uom:"
msgid "UOM"
msgstr ""
-msgctxt "field:purchase.request,warehouse:0"
+msgctxt "field:purchase.request,warehouse:"
msgid "Warehouse"
msgstr ""
-msgctxt "field:purchase.request.create_purchase.ask_party,company:0"
+msgctxt "field:purchase.request,warehouse_required:"
+msgid "Warehouse Required"
+msgstr ""
+
+msgctxt "field:purchase.request,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:purchase.request,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "field:purchase.request.create.start,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:purchase.request.create_purchase.ask_party,company:"
msgid "Company"
msgstr ""
-msgctxt "field:purchase.request.create_purchase.ask_party,party:0"
+msgctxt "field:purchase.request.create_purchase.ask_party,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:purchase.request.create_purchase.ask_party,party:"
msgid "Supplier"
msgstr ""
-msgctxt "field:purchase.request.create_purchase.ask_party,product:0"
+msgctxt "field:purchase.request.create_purchase.ask_party,product:"
msgid "Product"
msgstr ""
-msgctxt "field:purchase.request.create_purchase.ask_term,company:0"
+msgctxt "field:purchase.request.create_purchase.ask_term,company:"
msgid "Company"
msgstr ""
-msgctxt "field:purchase.request.create_purchase.ask_term,party:0"
+msgctxt "field:purchase.request.create_purchase.ask_term,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:purchase.request.create_purchase.ask_term,party:"
msgid "Supplier"
msgstr ""
-msgctxt "field:purchase.request.create_purchase.ask_term,payment_term:0"
+msgctxt "field:purchase.request.create_purchase.ask_term,payment_term:"
msgid "Payment Term"
msgstr ""
-msgctxt "field:stock.order_point,company:0"
+msgctxt "field:stock.order_point,company:"
msgid "Company"
msgstr ""
-msgctxt "field:stock.order_point,location:0"
+msgctxt "field:stock.order_point,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:stock.order_point,create_uid:"
+msgid "Create User"
+msgstr ""
+
+msgctxt "field:stock.order_point,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:stock.order_point,location:"
msgid "Location"
msgstr ""
-msgctxt "field:stock.order_point,max_quantity:0"
+msgctxt "field:stock.order_point,max_quantity:"
msgid "Maximal Quantity"
msgstr ""
-msgctxt "field:stock.order_point,min_quantity:0"
+msgctxt "field:stock.order_point,min_quantity:"
msgid "Minimal Quantity"
msgstr ""
-msgctxt "field:stock.order_point,product:0"
+msgctxt "field:stock.order_point,product:"
msgid "Product"
msgstr ""
-msgctxt "field:stock.order_point,provisioning_location:0"
+msgctxt "field:stock.order_point,provisioning_location:"
msgid "Provisioning Location"
msgstr ""
-msgctxt "field:stock.order_point,rec_name:0"
+msgctxt "field:stock.order_point,rec_name:"
msgid "Name"
msgstr ""
-msgctxt "field:stock.order_point,storage_location:0"
+msgctxt "field:stock.order_point,storage_location:"
msgid "Storage Location"
msgstr ""
-msgctxt "field:stock.order_point,type:0"
+msgctxt "field:stock.order_point,type:"
msgid "Type"
msgstr ""
-msgctxt "field:stock.order_point,unit:0"
+msgctxt "field:stock.order_point,unit:"
msgid "Unit"
msgstr ""
-msgctxt "field:stock.order_point,unit_digits:0"
+msgctxt "field:stock.order_point,unit_digits:"
msgid "Unit Digits"
msgstr ""
-msgctxt "field:stock.order_point,warehouse_location:0"
+msgctxt "field:stock.order_point,warehouse_location:"
msgid "Warehouse Location"
msgstr ""
+msgctxt "field:stock.order_point,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:stock.order_point,write_uid:"
+msgid "Write User"
+msgstr ""
+
msgctxt "model:ir.action,name:act_order_point_form"
msgid "Order Points"
msgstr ""
@@ -176,7 +236,7 @@ msgctxt "model:ir.action,name:act_purchase_form"
msgid "Purchases"
msgstr ""
-msgctxt "model:ir.action,name:act_purchase_request_create_purchase_request"
+msgctxt "model:ir.action,name:act_purchase_request_create"
msgid "Create Purchase Requests"
msgstr ""
@@ -200,14 +260,14 @@ msgctxt "model:ir.cron,name:cron_shipment_iternal"
msgid "Generate Internal Shipments"
msgstr ""
-msgctxt "model:ir.ui.menu,name:menu_create_purchase_request"
-msgid "Create Purchase Requests"
-msgstr ""
-
msgctxt "model:ir.ui.menu,name:menu_order_point_form"
msgid "Order Points"
msgstr ""
+msgctxt "model:ir.ui.menu,name:menu_purchase_request_create"
+msgid "Create Purchase Requests"
+msgstr ""
+
msgctxt "model:ir.ui.menu,name:menu_purchase_request_form"
msgid "Purchase Requests"
msgstr ""
@@ -216,20 +276,20 @@ msgctxt "model:ir.ui.menu,name:menu_purchase_request_form_draft"
msgid "Draft Purchase Requests"
msgstr ""
-msgctxt "model:purchase.request,name:0"
+msgctxt "model:purchase.request,name:"
msgid "Purchase Request"
msgstr ""
-msgctxt "model:purchase.request.create_purchase.ask_party,name:0"
-msgid "Create Purchase Ask Party"
+msgctxt "model:purchase.request.create.start,name:"
+msgid "Create Purchase Request"
msgstr ""
-msgctxt "model:purchase.request.create_purchase.ask_term,name:0"
-msgid "Create Purchase Ask Term"
+msgctxt "model:purchase.request.create_purchase.ask_party,name:"
+msgid "Create Purchase Ask Party"
msgstr ""
-msgctxt "model:purchase.request.create_purchase_request.init,name:0"
-msgid "Create Purchase Request Init"
+msgctxt "model:purchase.request.create_purchase.ask_term,name:"
+msgid "Create Purchase Ask Term"
msgstr ""
msgctxt "model:res.group,name:group_purchase_request"
@@ -244,102 +304,102 @@ msgctxt "model:res.user,name:user_generate_shipment_internal"
msgid "Cron Intenal Shipment"
msgstr ""
-msgctxt "model:stock.order_point,name:0"
+msgctxt "model:stock.order_point,name:"
msgid "Order Point"
msgstr ""
-msgctxt "selection:purchase.request,state:0"
+msgctxt "selection:purchase.request,state:"
msgid "Cancel"
msgstr ""
-msgctxt "selection:purchase.request,state:0"
+msgctxt "selection:purchase.request,state:"
msgid "Done"
msgstr ""
-msgctxt "selection:purchase.request,state:0"
+msgctxt "selection:purchase.request,state:"
msgid "Draft"
msgstr ""
-msgctxt "selection:purchase.request,state:0"
+msgctxt "selection:purchase.request,state:"
msgid "Purchased"
msgstr ""
-msgctxt "selection:stock.order_point,type:0"
+msgctxt "selection:stock.order_point,type:"
msgid "Internal"
msgstr ""
-msgctxt "selection:stock.order_point,type:0"
+msgctxt "selection:stock.order_point,type:"
msgid "Purchase"
msgstr ""
-msgctxt "view:purchase.request.create_purchase.ask_party:0"
-msgid "Create Purchase: Missing Supplier"
+msgctxt "view:purchase.request.create.start:"
+msgid "Create Purchase Request"
msgstr ""
-msgctxt "view:purchase.request.create_purchase.ask_term:0"
-msgid "Create Purchase: Missing Payment Term"
+msgctxt "view:purchase.request.create.start:"
+msgid "Create Purchase Request?"
msgstr ""
-msgctxt "view:purchase.request.create_purchase_request.init:0"
-msgid "Create Purchase Request"
+msgctxt "view:purchase.request.create_purchase.ask_party:"
+msgid "Create Purchase: Missing Supplier"
msgstr ""
-msgctxt "view:purchase.request.create_purchase_request.init:0"
-msgid "Create Purchase Request?"
+msgctxt "view:purchase.request.create_purchase.ask_term:"
+msgid "Create Purchase: Missing Payment Term"
msgstr ""
-msgctxt "view:purchase.request:0"
+msgctxt "view:purchase.request:"
msgid "Product Info"
msgstr ""
-msgctxt "view:purchase.request:0"
+msgctxt "view:purchase.request:"
msgid "Purchase Request"
msgstr ""
-msgctxt "view:purchase.request:0"
+msgctxt "view:purchase.request:"
msgid "Purchase Requests"
msgstr ""
-msgctxt "view:purchase.request:0"
+msgctxt "view:purchase.request:"
msgid "Supply Info"
msgstr ""
-msgctxt "view:stock.order_point:0"
+msgctxt "view:stock.order_point:"
msgid "Order Point"
msgstr ""
-msgctxt "view:stock.order_point:0"
+msgctxt "view:stock.order_point:"
msgid "Order Point Type"
msgstr ""
-msgctxt "view:stock.order_point:0"
+msgctxt "view:stock.order_point:"
msgid "Order Points"
msgstr ""
-msgctxt "view:stock.order_point:0"
+msgctxt "view:stock.order_point:"
msgid "Product Info"
msgstr ""
-msgctxt "wizard_button:purchase.request.create_purchase,ask_user_party,end:0"
-msgid "Cancel"
+msgctxt "wizard_button:purchase.request.create,start,create_:"
+msgid "Create"
msgstr ""
-msgctxt "wizard_button:purchase.request.create_purchase,ask_user_party,init:0"
-msgid "Continue"
+msgctxt "wizard_button:purchase.request.create,start,end:"
+msgid "Cancel"
msgstr ""
-msgctxt "wizard_button:purchase.request.create_purchase,ask_user_term,end:0"
+msgctxt "wizard_button:purchase.request.create_purchase,ask_party,end:"
msgid "Cancel"
msgstr ""
-msgctxt "wizard_button:purchase.request.create_purchase,ask_user_term,init:0"
+msgctxt "wizard_button:purchase.request.create_purchase,ask_party,start:"
msgid "Continue"
msgstr ""
-msgctxt "wizard_button:purchase.request.create_purchase_request,init,create:0"
-msgid "Create"
+msgctxt "wizard_button:purchase.request.create_purchase,ask_term,end:"
+msgid "Cancel"
msgstr ""
-msgctxt "wizard_button:purchase.request.create_purchase_request,init,end:0"
-msgid "Cancel"
+msgctxt "wizard_button:purchase.request.create_purchase,ask_term,start:"
+msgid "Continue"
msgstr ""
diff --git a/locale/de_DE.po b/locale/de_DE.po
index e450b60..f09fc3f 100644
--- a/locale/de_DE.po
+++ b/locale/de_DE.po
@@ -2,27 +2,31 @@
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
-msgctxt "error:purchase.request.create_purchase:0"
+msgctxt "error:purchase.request.create_purchase:"
msgid "Purchase price is missing for product: %s (id: %s)!"
msgstr "Fehlender Einkaufspreis für Artikel: %s (id: %s)!"
-msgctxt "error:purchase.request.create_purchase:0"
+msgctxt "error:purchase.request.create_purchase:"
msgid "This price is necessary for creating purchase."
msgstr "Dieser Preis wird für die Auftragserstellung benötigt!"
-msgctxt "error:purchase.request:0"
+msgctxt "error:purchase.request:"
msgid "Purchase requests are only created by the system."
msgstr "Bestellvorschläge werden nur durch das System generiert!"
-msgctxt "error:stock.order_point:0"
+msgctxt "error:purchase.request:"
+msgid "The requested quantity must be greater than 0"
+msgstr "Die angefragte Menge muss größer als 0 sein"
+
+msgctxt "error:stock.order_point:"
msgid "Maximal quantity must be bigger than Minimal quantity"
msgstr "Die maximale Anzahl muss größer als die minimale Anzahl sein"
-msgctxt "error:stock.order_point:0"
+msgctxt "error:stock.order_point:"
msgid "Only one order point is allowed for each product-location pair."
msgstr "Es ist nur ein Bestellpunkt für jede Paarung Artikel-Lagerort erlaubt"
-msgctxt "error:stock.order_point:0"
+msgctxt "error:stock.order_point:"
msgid ""
"You can not define two order points on the same product with opposite "
"locations."
@@ -30,146 +34,202 @@ msgstr ""
"Für einen Artikel können keine verschiedenen Bestellpunkte mit "
"unterschiedlichen Lagerstandorten erstellt werden!"
-msgctxt "field:product.product,order_points:0"
+msgctxt "field:product.product,order_points:"
msgid "Order Points"
msgstr "Bestellpunkte"
-msgctxt "field:purchase.request,company:0"
+msgctxt "field:purchase.request,company:"
msgid "Company"
msgstr "Unternehmen"
-msgctxt "field:purchase.request,computed_quantity:0"
+msgctxt "field:purchase.request,computed_quantity:"
msgid "Computed Quantity"
msgstr "Berechnete Anzahl"
-msgctxt "field:purchase.request,computed_uom:0"
+msgctxt "field:purchase.request,computed_uom:"
msgid "Computed UOM"
msgstr "Berechnete Maßeinheit"
-msgctxt "field:purchase.request,origin:0"
+msgctxt "field:purchase.request,create_date:"
+msgid "Create Date"
+msgstr "Erstellungsdatum"
+
+msgctxt "field:purchase.request,create_uid:"
+msgid "Create User"
+msgstr "Erstellt durch"
+
+msgctxt "field:purchase.request,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:purchase.request,origin:"
msgid "Origin"
msgstr "Herkunft"
-msgctxt "field:purchase.request,party:0"
+msgctxt "field:purchase.request,party:"
msgid "Party"
msgstr "Partei"
-msgctxt "field:purchase.request,product:0"
+msgctxt "field:purchase.request,product:"
msgid "Product"
msgstr "Artikel"
-msgctxt "field:purchase.request,purchase:0"
+msgctxt "field:purchase.request,purchase:"
msgid "Purchase"
msgstr "Bestellvorschlag"
-msgctxt "field:purchase.request,purchase_date:0"
+msgctxt "field:purchase.request,purchase_date:"
msgid "Best Purchase Date"
msgstr "Bestes Einkaufsdatum"
-msgctxt "field:purchase.request,purchase_line:0"
+msgctxt "field:purchase.request,purchase_line:"
msgid "Purchase Line"
msgstr "Position Bestellvorschlag"
-msgctxt "field:purchase.request,quantity:0"
+msgctxt "field:purchase.request,quantity:"
msgid "Quantity"
msgstr "Anzahl"
-msgctxt "field:purchase.request,rec_name:0"
+msgctxt "field:purchase.request,rec_name:"
msgid "Name"
msgstr "Name"
-msgctxt "field:purchase.request,state:0"
+msgctxt "field:purchase.request,state:"
msgid "State"
msgstr "Status"
-msgctxt "field:purchase.request,stock_level:0"
+msgctxt "field:purchase.request,stock_level:"
msgid "Stock at Supply Date"
msgstr "Lagerbestand am Lieferdatum"
-msgctxt "field:purchase.request,supply_date:0"
+msgctxt "field:purchase.request,supply_date:"
msgid "Expected Supply Date"
msgstr "Voraussichtliches Lieferdatum"
-msgctxt "field:purchase.request,uom:0"
+msgctxt "field:purchase.request,uom:"
msgid "UOM"
msgstr "Maßeinheit"
-msgctxt "field:purchase.request,warehouse:0"
+msgctxt "field:purchase.request,warehouse:"
msgid "Warehouse"
msgstr "Warenlager"
-msgctxt "field:purchase.request.create_purchase.ask_party,company:0"
+msgctxt "field:purchase.request,warehouse_required:"
+msgid "Warehouse Required"
+msgstr "Warenlager erforderlich"
+
+msgctxt "field:purchase.request,write_date:"
+msgid "Write Date"
+msgstr "Zuletzt geändert"
+
+msgctxt "field:purchase.request,write_uid:"
+msgid "Write User"
+msgstr "Letzte Änderung durch"
+
+msgctxt "field:purchase.request.create.start,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:purchase.request.create_purchase.ask_party,company:"
msgid "Company"
msgstr "Unternehmen"
-msgctxt "field:purchase.request.create_purchase.ask_party,party:0"
+msgctxt "field:purchase.request.create_purchase.ask_party,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:purchase.request.create_purchase.ask_party,party:"
msgid "Supplier"
msgstr "Lieferant"
-msgctxt "field:purchase.request.create_purchase.ask_party,product:0"
+msgctxt "field:purchase.request.create_purchase.ask_party,product:"
msgid "Product"
msgstr "Artikel"
-msgctxt "field:purchase.request.create_purchase.ask_term,company:0"
+msgctxt "field:purchase.request.create_purchase.ask_term,company:"
msgid "Company"
msgstr "Unternehmen"
-msgctxt "field:purchase.request.create_purchase.ask_term,party:0"
+msgctxt "field:purchase.request.create_purchase.ask_term,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:purchase.request.create_purchase.ask_term,party:"
msgid "Supplier"
msgstr "Lieferant"
-msgctxt "field:purchase.request.create_purchase.ask_term,payment_term:0"
+msgctxt "field:purchase.request.create_purchase.ask_term,payment_term:"
msgid "Payment Term"
msgstr "Zahlungsbedingung"
-msgctxt "field:stock.order_point,company:0"
+msgctxt "field:stock.order_point,company:"
msgid "Company"
msgstr "Unternehmen"
-msgctxt "field:stock.order_point,location:0"
+msgctxt "field:stock.order_point,create_date:"
+msgid "Create Date"
+msgstr "Erstellungsdatum"
+
+msgctxt "field:stock.order_point,create_uid:"
+msgid "Create User"
+msgstr "Erstellt durch"
+
+msgctxt "field:stock.order_point,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:stock.order_point,location:"
msgid "Location"
msgstr "Lagerort"
-msgctxt "field:stock.order_point,max_quantity:0"
+msgctxt "field:stock.order_point,max_quantity:"
msgid "Maximal Quantity"
msgstr "Maximale Anzahl"
-msgctxt "field:stock.order_point,min_quantity:0"
+msgctxt "field:stock.order_point,min_quantity:"
msgid "Minimal Quantity"
msgstr "Minimale Anzahl"
-msgctxt "field:stock.order_point,product:0"
+msgctxt "field:stock.order_point,product:"
msgid "Product"
msgstr "Artikel"
-msgctxt "field:stock.order_point,provisioning_location:0"
+msgctxt "field:stock.order_point,provisioning_location:"
msgid "Provisioning Location"
msgstr "Bereitstellungsort"
-msgctxt "field:stock.order_point,rec_name:0"
+msgctxt "field:stock.order_point,rec_name:"
msgid "Name"
msgstr "Name"
-msgctxt "field:stock.order_point,storage_location:0"
+msgctxt "field:stock.order_point,storage_location:"
msgid "Storage Location"
msgstr "Lagerort"
-msgctxt "field:stock.order_point,type:0"
+msgctxt "field:stock.order_point,type:"
msgid "Type"
msgstr "Typ"
-msgctxt "field:stock.order_point,unit:0"
+msgctxt "field:stock.order_point,unit:"
msgid "Unit"
msgstr "Einheit"
-msgctxt "field:stock.order_point,unit_digits:0"
+msgctxt "field:stock.order_point,unit_digits:"
msgid "Unit Digits"
msgstr "Anzahl Stellen"
-msgctxt "field:stock.order_point,warehouse_location:0"
+msgctxt "field:stock.order_point,warehouse_location:"
msgid "Warehouse Location"
msgstr "Warenlager"
+msgctxt "field:stock.order_point,write_date:"
+msgid "Write Date"
+msgstr "Zuletzt geändert"
+
+msgctxt "field:stock.order_point,write_uid:"
+msgid "Write User"
+msgstr "Letzte Änderung durch"
+
msgctxt "model:ir.action,name:act_order_point_form"
msgid "Order Points"
msgstr "Bestellpunkte"
@@ -178,7 +238,7 @@ msgctxt "model:ir.action,name:act_purchase_form"
msgid "Purchases"
msgstr "Einkäufe"
-msgctxt "model:ir.action,name:act_purchase_request_create_purchase_request"
+msgctxt "model:ir.action,name:act_purchase_request_create"
msgid "Create Purchase Requests"
msgstr "Bestellvorschläge erstellen"
@@ -202,14 +262,14 @@ msgctxt "model:ir.cron,name:cron_shipment_iternal"
msgid "Generate Internal Shipments"
msgstr "Erstellung von Internen Lieferposten"
-msgctxt "model:ir.ui.menu,name:menu_create_purchase_request"
-msgid "Create Purchase Requests"
-msgstr "Bestellvorschläge erstellen"
-
msgctxt "model:ir.ui.menu,name:menu_order_point_form"
msgid "Order Points"
msgstr "Bestellpunkte"
+msgctxt "model:ir.ui.menu,name:menu_purchase_request_create"
+msgid "Create Purchase Requests"
+msgstr "Bestellvorschläge erstellen"
+
msgctxt "model:ir.ui.menu,name:menu_purchase_request_form"
msgid "Purchase Requests"
msgstr "Bestellvorschläge"
@@ -218,22 +278,22 @@ msgctxt "model:ir.ui.menu,name:menu_purchase_request_form_draft"
msgid "Draft Purchase Requests"
msgstr "Entwürfe (Bestellvorschläge)"
-msgctxt "model:purchase.request,name:0"
+msgctxt "model:purchase.request,name:"
msgid "Purchase Request"
msgstr "Bestellvorschlag"
-msgctxt "model:purchase.request.create_purchase.ask_party,name:0"
+msgctxt "model:purchase.request.create.start,name:"
+msgid "Create Purchase Request"
+msgstr "Bestellvorschlag erstellen"
+
+msgctxt "model:purchase.request.create_purchase.ask_party,name:"
msgid "Create Purchase Ask Party"
msgstr "Verkauf Nachfrage Partei"
-msgctxt "model:purchase.request.create_purchase.ask_term,name:0"
+msgctxt "model:purchase.request.create_purchase.ask_term,name:"
msgid "Create Purchase Ask Term"
msgstr "Verkauf Nachfrage Zahlungsbedingung"
-msgctxt "model:purchase.request.create_purchase_request.init,name:0"
-msgid "Create Purchase Request Init"
-msgstr "Bestellvorschläge erstellen Init"
-
msgctxt "model:res.group,name:group_purchase_request"
msgid "Purchase Request"
msgstr "Bestellvorschlag"
@@ -246,118 +306,118 @@ msgctxt "model:res.user,name:user_generate_shipment_internal"
msgid "Cron Intenal Shipment"
msgstr "Zeitplaner Interne Lieferposten"
-msgctxt "model:stock.order_point,name:0"
+msgctxt "model:stock.order_point,name:"
msgid "Order Point"
msgstr "Bestellpunkt"
-msgctxt "selection:purchase.request,origin:0"
+msgctxt "selection:purchase.request,origin:"
msgid "Order Point"
msgstr "Bestellpunkt"
-msgctxt "selection:purchase.request,state:0"
+msgctxt "selection:purchase.request,state:"
msgid "Cancel"
msgstr "Annulliert"
-msgctxt "selection:purchase.request,state:0"
+msgctxt "selection:purchase.request,state:"
msgid "Done"
msgstr "Erledigt"
-msgctxt "selection:purchase.request,state:0"
+msgctxt "selection:purchase.request,state:"
msgid "Draft"
msgstr "Entwurf"
-msgctxt "selection:purchase.request,state:0"
+msgctxt "selection:purchase.request,state:"
msgid "Purchased"
msgstr "Auftrag erstellt"
-msgctxt "selection:stock.order_point,type:0"
+msgctxt "selection:stock.order_point,type:"
msgid "Internal"
msgstr "Intern"
-msgctxt "selection:stock.order_point,type:0"
+msgctxt "selection:stock.order_point,type:"
msgid "Purchase"
msgstr "Bestellvorschlag"
-msgctxt "view:purchase.request.create_purchase.ask_party:0"
+msgctxt "view:purchase.request.create.start:"
+msgid "Create Purchase Request"
+msgstr "Bestellvorschlag erstellen"
+
+msgctxt "view:purchase.request.create.start:"
+msgid "Create Purchase Request?"
+msgstr "Bestellvorschlag erstellen?"
+
+msgctxt "view:purchase.request.create_purchase.ask_party:"
msgid ""
msgstr ""
-msgctxt "view:purchase.request.create_purchase.ask_party:0"
+msgctxt "view:purchase.request.create_purchase.ask_party:"
msgid "Create Purchase: Missing Supplier"
msgstr "Auftragerstellung: Fehlender Lieferant"
-msgctxt "view:purchase.request.create_purchase.ask_term:0"
+msgctxt "view:purchase.request.create_purchase.ask_term:"
msgid "Create Purchase: Missing Payment Term"
msgstr "Auftragerstellung: Fehlende Zahlungsbedingung"
-msgctxt "view:purchase.request.create_purchase_request.init:0"
-msgid "Create Purchase Request"
-msgstr "Bestellvorschlag erstellen"
-
-msgctxt "view:purchase.request.create_purchase_request.init:0"
-msgid "Create Purchase Request?"
-msgstr "Bestellvorschlag erstellen?"
-
-msgctxt "view:purchase.request:0"
+msgctxt "view:purchase.request:"
msgid "Product Info"
msgstr "Info Artikel"
-msgctxt "view:purchase.request:0"
+msgctxt "view:purchase.request:"
msgid "Purchase Request"
msgstr "Bestellvorschlag"
-msgctxt "view:purchase.request:0"
+msgctxt "view:purchase.request:"
msgid "Purchase Requests"
msgstr "Bestellvorschläge"
-msgctxt "view:purchase.request:0"
+msgctxt "view:purchase.request:"
msgid "Supply Info"
msgstr "Info"
-msgctxt "view:purchase.request:0"
+msgctxt "view:purchase.request:"
msgid "supply Info"
msgstr "Info Lieferant"
-msgctxt "view:stock.order_point:0"
+msgctxt "view:stock.order_point:"
msgid "Locations"
msgstr "Lagerorte"
-msgctxt "view:stock.order_point:0"
+msgctxt "view:stock.order_point:"
msgid "Order Point"
msgstr "Bestellpunkt"
-msgctxt "view:stock.order_point:0"
+msgctxt "view:stock.order_point:"
msgid "Order Point Type"
msgstr "Typ Bestellpunkt"
-msgctxt "view:stock.order_point:0"
+msgctxt "view:stock.order_point:"
msgid "Order Points"
msgstr "Bestellpunkte"
-msgctxt "view:stock.order_point:0"
+msgctxt "view:stock.order_point:"
msgid "Product Info"
msgstr "Artikelinfo"
-msgctxt "wizard_button:purchase.request.create_purchase,ask_user_party,end:0"
+msgctxt "wizard_button:purchase.request.create,start,create_:"
+msgid "Create"
+msgstr "Erstellen"
+
+msgctxt "wizard_button:purchase.request.create,start,end:"
msgid "Cancel"
msgstr "Abbrechen"
-msgctxt "wizard_button:purchase.request.create_purchase,ask_user_party,init:0"
-msgid "Continue"
-msgstr "Fortfahren"
-
-msgctxt "wizard_button:purchase.request.create_purchase,ask_user_term,end:0"
+msgctxt "wizard_button:purchase.request.create_purchase,ask_party,end:"
msgid "Cancel"
msgstr "Abbrechen"
-msgctxt "wizard_button:purchase.request.create_purchase,ask_user_term,init:0"
+msgctxt "wizard_button:purchase.request.create_purchase,ask_party,start:"
msgid "Continue"
msgstr "Fortfahren"
-msgctxt "wizard_button:purchase.request.create_purchase_request,init,create:0"
-msgid "Create"
-msgstr "Erstellen"
-
-msgctxt "wizard_button:purchase.request.create_purchase_request,init,end:0"
+msgctxt "wizard_button:purchase.request.create_purchase,ask_term,end:"
msgid "Cancel"
msgstr "Abbrechen"
+
+msgctxt "wizard_button:purchase.request.create_purchase,ask_term,start:"
+msgid "Continue"
+msgstr "Fortfahren"
diff --git a/locale/es_ES.po b/locale/es_AR.po
similarity index 52%
copy from locale/es_ES.po
copy to locale/es_AR.po
index c693af8..242b7ed 100644
--- a/locale/es_ES.po
+++ b/locale/es_AR.po
@@ -2,27 +2,31 @@
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
-msgctxt "error:purchase.request.create_purchase:0"
+msgctxt "error:purchase.request.create_purchase:"
msgid "Purchase price is missing for product: %s (id: %s)!"
-msgstr "Falta el precio de compra para el producto: %s (id: %s)"
+msgstr "¡Falta el precio de compra para el producto: %s (id: %s)!"
-msgctxt "error:purchase.request.create_purchase:0"
+msgctxt "error:purchase.request.create_purchase:"
msgid "This price is necessary for creating purchase."
msgstr "Se necesita este precio para crear la compra."
-msgctxt "error:purchase.request:0"
+msgctxt "error:purchase.request:"
msgid "Purchase requests are only created by the system."
msgstr "Las solicitudes de compra solo las crea el sistema."
-msgctxt "error:stock.order_point:0"
+msgctxt "error:purchase.request:"
+msgid "The requested quantity must be greater than 0"
+msgstr "La cantidad solicitada debe ser mayor que 0"
+
+msgctxt "error:stock.order_point:"
msgid "Maximal quantity must be bigger than Minimal quantity"
msgstr "La cantidad máxima debe ser mayor que la mínima"
-msgctxt "error:stock.order_point:0"
+msgctxt "error:stock.order_point:"
msgid "Only one order point is allowed for each product-location pair."
msgstr "Solo se permite un punto de orden por cada par de producto-ubicación."
-msgctxt "error:stock.order_point:0"
+msgctxt "error:stock.order_point:"
msgid ""
"You can not define two order points on the same product with opposite "
"locations."
@@ -30,146 +34,202 @@ msgstr ""
"No puede definir dos puntos de orden en el mismo producto con ubicaciones "
"opuestas."
-msgctxt "field:product.product,order_points:0"
+msgctxt "field:product.product,order_points:"
msgid "Order Points"
msgstr "Puntos de orden"
-msgctxt "field:purchase.request,company:0"
+msgctxt "field:purchase.request,company:"
msgid "Company"
msgstr "Empresa"
-msgctxt "field:purchase.request,computed_quantity:0"
+msgctxt "field:purchase.request,computed_quantity:"
msgid "Computed Quantity"
msgstr "Cantidad calculada"
-msgctxt "field:purchase.request,computed_uom:0"
+msgctxt "field:purchase.request,computed_uom:"
msgid "Computed UOM"
msgstr "UdM calculada"
-msgctxt "field:purchase.request,origin:0"
+msgctxt "field:purchase.request,create_date:"
+msgid "Create Date"
+msgstr "Fecha creación"
+
+msgctxt "field:purchase.request,create_uid:"
+msgid "Create User"
+msgstr "Usuario creación"
+
+msgctxt "field:purchase.request,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:purchase.request,origin:"
msgid "Origin"
msgstr "Origen"
-msgctxt "field:purchase.request,party:0"
+msgctxt "field:purchase.request,party:"
msgid "Party"
-msgstr "Tercero"
+msgstr "Entidad"
-msgctxt "field:purchase.request,product:0"
+msgctxt "field:purchase.request,product:"
msgid "Product"
msgstr "Producto"
-msgctxt "field:purchase.request,purchase:0"
+msgctxt "field:purchase.request,purchase:"
msgid "Purchase"
msgstr "Compra"
-msgctxt "field:purchase.request,purchase_date:0"
+msgctxt "field:purchase.request,purchase_date:"
msgid "Best Purchase Date"
msgstr "Mejor fecha de compra"
-msgctxt "field:purchase.request,purchase_line:0"
+msgctxt "field:purchase.request,purchase_line:"
msgid "Purchase Line"
msgstr "Línea de compra"
-msgctxt "field:purchase.request,quantity:0"
+msgctxt "field:purchase.request,quantity:"
msgid "Quantity"
msgstr "Cantidad"
-msgctxt "field:purchase.request,rec_name:0"
+msgctxt "field:purchase.request,rec_name:"
msgid "Name"
msgstr "Nombre"
-msgctxt "field:purchase.request,state:0"
+msgctxt "field:purchase.request,state:"
msgid "State"
msgstr "Estado"
-msgctxt "field:purchase.request,stock_level:0"
+msgctxt "field:purchase.request,stock_level:"
msgid "Stock at Supply Date"
msgstr "Existencias a la fecha del suministro"
-msgctxt "field:purchase.request,supply_date:0"
+msgctxt "field:purchase.request,supply_date:"
msgid "Expected Supply Date"
msgstr "Fecha estimada de suministro"
-msgctxt "field:purchase.request,uom:0"
+msgctxt "field:purchase.request,uom:"
msgid "UOM"
msgstr "UdM"
-msgctxt "field:purchase.request,warehouse:0"
+msgctxt "field:purchase.request,warehouse:"
msgid "Warehouse"
msgstr "Almacén"
-msgctxt "field:purchase.request.create_purchase.ask_party,company:0"
+msgctxt "field:purchase.request,warehouse_required:"
+msgid "Warehouse Required"
+msgstr "Almacén Obligatorio"
+
+msgctxt "field:purchase.request,write_date:"
+msgid "Write Date"
+msgstr "Fecha modificación"
+
+msgctxt "field:purchase.request,write_uid:"
+msgid "Write User"
+msgstr "Usuario modificación"
+
+msgctxt "field:purchase.request.create.start,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:purchase.request.create_purchase.ask_party,company:"
msgid "Company"
msgstr "Empresa"
-msgctxt "field:purchase.request.create_purchase.ask_party,party:0"
+msgctxt "field:purchase.request.create_purchase.ask_party,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:purchase.request.create_purchase.ask_party,party:"
msgid "Supplier"
msgstr "Proveedor"
-msgctxt "field:purchase.request.create_purchase.ask_party,product:0"
+msgctxt "field:purchase.request.create_purchase.ask_party,product:"
msgid "Product"
msgstr "Producto"
-msgctxt "field:purchase.request.create_purchase.ask_term,company:0"
+msgctxt "field:purchase.request.create_purchase.ask_term,company:"
msgid "Company"
msgstr "Empresa"
-msgctxt "field:purchase.request.create_purchase.ask_term,party:0"
+msgctxt "field:purchase.request.create_purchase.ask_term,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:purchase.request.create_purchase.ask_term,party:"
msgid "Supplier"
msgstr "Proveedor"
-msgctxt "field:purchase.request.create_purchase.ask_term,payment_term:0"
+msgctxt "field:purchase.request.create_purchase.ask_term,payment_term:"
msgid "Payment Term"
msgstr "Plazo de pago"
-msgctxt "field:stock.order_point,company:0"
+msgctxt "field:stock.order_point,company:"
msgid "Company"
msgstr "Empresa"
-msgctxt "field:stock.order_point,location:0"
+msgctxt "field:stock.order_point,create_date:"
+msgid "Create Date"
+msgstr "Fecha creación"
+
+msgctxt "field:stock.order_point,create_uid:"
+msgid "Create User"
+msgstr "Usuario creación"
+
+msgctxt "field:stock.order_point,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:stock.order_point,location:"
msgid "Location"
msgstr "Ubicación"
-msgctxt "field:stock.order_point,max_quantity:0"
+msgctxt "field:stock.order_point,max_quantity:"
msgid "Maximal Quantity"
msgstr "Cantidad máxima"
-msgctxt "field:stock.order_point,min_quantity:0"
+msgctxt "field:stock.order_point,min_quantity:"
msgid "Minimal Quantity"
msgstr "Cantidad mínima"
-msgctxt "field:stock.order_point,product:0"
+msgctxt "field:stock.order_point,product:"
msgid "Product"
msgstr "Producto"
-msgctxt "field:stock.order_point,provisioning_location:0"
+msgctxt "field:stock.order_point,provisioning_location:"
msgid "Provisioning Location"
msgstr "Ubicación del aprovisionamiento"
-msgctxt "field:stock.order_point,rec_name:0"
+msgctxt "field:stock.order_point,rec_name:"
msgid "Name"
msgstr "Nombre"
-msgctxt "field:stock.order_point,storage_location:0"
+msgctxt "field:stock.order_point,storage_location:"
msgid "Storage Location"
msgstr "Ubicación del almacén"
-msgctxt "field:stock.order_point,type:0"
+msgctxt "field:stock.order_point,type:"
msgid "Type"
msgstr "Tipo"
-msgctxt "field:stock.order_point,unit:0"
+msgctxt "field:stock.order_point,unit:"
msgid "Unit"
msgstr "Unidad"
-msgctxt "field:stock.order_point,unit_digits:0"
+msgctxt "field:stock.order_point,unit_digits:"
msgid "Unit Digits"
msgstr "Decimales de la unidad"
-msgctxt "field:stock.order_point,warehouse_location:0"
+msgctxt "field:stock.order_point,warehouse_location:"
msgid "Warehouse Location"
msgstr "Ubicación del almacén"
+msgctxt "field:stock.order_point,write_date:"
+msgid "Write Date"
+msgstr "Fecha modificación"
+
+msgctxt "field:stock.order_point,write_uid:"
+msgid "Write User"
+msgstr "Usuario modificación"
+
msgctxt "model:ir.action,name:act_order_point_form"
msgid "Order Points"
msgstr "Puntos de orden"
@@ -178,9 +238,9 @@ msgctxt "model:ir.action,name:act_purchase_form"
msgid "Purchases"
msgstr "Compras"
-msgctxt "model:ir.action,name:act_purchase_request_create_purchase_request"
+msgctxt "model:ir.action,name:act_purchase_request_create"
msgid "Create Purchase Requests"
-msgstr ""
+msgstr "Crear solicitudes de compra"
msgctxt "model:ir.action,name:act_purchase_request_form"
msgid "Purchase Requests"
@@ -188,7 +248,7 @@ msgstr "Solicitudes de compra"
msgctxt "model:ir.action,name:act_purchase_request_form_draft"
msgid "Draft Purchase Requests"
-msgstr ""
+msgstr "Solicitudes de compra en borrador"
msgctxt "model:ir.action,name:wizard_create_purchase"
msgid "Create Purchase"
@@ -202,38 +262,38 @@ msgctxt "model:ir.cron,name:cron_shipment_iternal"
msgid "Generate Internal Shipments"
msgstr "Generar envios internos"
-msgctxt "model:ir.ui.menu,name:menu_create_purchase_request"
-msgid "Create Purchase Requests"
-msgstr ""
-
msgctxt "model:ir.ui.menu,name:menu_order_point_form"
msgid "Order Points"
msgstr "Puntos de orden"
+msgctxt "model:ir.ui.menu,name:menu_purchase_request_create"
+msgid "Create Purchase Requests"
+msgstr "Crear solicitudes de compra"
+
msgctxt "model:ir.ui.menu,name:menu_purchase_request_form"
msgid "Purchase Requests"
msgstr "Solicitudes de compra"
msgctxt "model:ir.ui.menu,name:menu_purchase_request_form_draft"
msgid "Draft Purchase Requests"
-msgstr ""
+msgstr "Solicitudes de compra en borrador"
-msgctxt "model:purchase.request,name:0"
+msgctxt "model:purchase.request,name:"
msgid "Purchase Request"
msgstr "Solicitud de compra"
-msgctxt "model:purchase.request.create_purchase.ask_party,name:0"
+msgctxt "model:purchase.request.create.start,name:"
+msgid "Create Purchase Request"
+msgstr "Crear solicitud de compra"
+
+msgctxt "model:purchase.request.create_purchase.ask_party,name:"
msgid "Create Purchase Ask Party"
msgstr "Crear compra - Petición de tercero"
-msgctxt "model:purchase.request.create_purchase.ask_term,name:0"
+msgctxt "model:purchase.request.create_purchase.ask_term,name:"
msgid "Create Purchase Ask Term"
msgstr "Crear compra - Petición de plazo"
-msgctxt "model:purchase.request.create_purchase_request.init,name:0"
-msgid "Create Purchase Request Init"
-msgstr ""
-
msgctxt "model:res.group,name:group_purchase_request"
msgid "Purchase Request"
msgstr "Solicitud de compra"
@@ -246,113 +306,110 @@ msgctxt "model:res.user,name:user_generate_shipment_internal"
msgid "Cron Intenal Shipment"
msgstr "Programador de tareas de envio interno"
-msgctxt "model:stock.order_point,name:0"
+msgctxt "model:stock.order_point,name:"
msgid "Order Point"
msgstr "Punto de orden"
-msgctxt "selection:purchase.request,origin:0"
+msgctxt "selection:purchase.request,origin:"
msgid "Order Point"
msgstr "Punto de orden"
-msgctxt "selection:purchase.request,state:0"
+msgctxt "selection:purchase.request,state:"
msgid "Cancel"
msgstr "Cancelar"
-msgctxt "selection:purchase.request,state:0"
+msgctxt "selection:purchase.request,state:"
msgid "Done"
msgstr "Terminada"
-msgctxt "selection:purchase.request,state:0"
+msgctxt "selection:purchase.request,state:"
msgid "Draft"
msgstr "Borrador"
-msgctxt "selection:purchase.request,state:0"
+msgctxt "selection:purchase.request,state:"
msgid "Purchased"
msgstr "Comprado"
-msgctxt "selection:stock.order_point,type:0"
+msgctxt "selection:stock.order_point,type:"
msgid "Internal"
msgstr "Interno"
-msgctxt "selection:stock.order_point,type:0"
+msgctxt "selection:stock.order_point,type:"
msgid "Purchase"
msgstr "Compra"
-msgctxt "view:purchase.request.create_purchase.ask_party:0"
+msgctxt "view:purchase.request.create.start:"
+msgid "Create Purchase Request"
+msgstr "Crear solicitud de compra"
+
+msgctxt "view:purchase.request.create.start:"
+msgid "Create Purchase Request?"
+msgstr "¿Crear solicitud de compra?"
+
+msgctxt "view:purchase.request.create_purchase.ask_party:"
msgid "Create Purchase: Missing Supplier"
msgstr "Crear compra: sin proveedor"
-msgctxt "view:purchase.request.create_purchase.ask_term:0"
+msgctxt "view:purchase.request.create_purchase.ask_term:"
msgid "Create Purchase: Missing Payment Term"
msgstr "Crear compra: sin término de pago"
-msgctxt "view:purchase.request.create_purchase_request.init:0"
-msgid "Create Purchase Request"
-msgstr ""
-
-msgctxt "view:purchase.request.create_purchase_request.init:0"
-msgid "Create Purchase Request?"
-msgstr ""
-
-msgctxt "view:purchase.request:0"
+msgctxt "view:purchase.request:"
msgid "Product Info"
msgstr "Información del producto"
-msgctxt "view:purchase.request:0"
+msgctxt "view:purchase.request:"
msgid "Purchase Request"
msgstr "Solicitud de compra"
-msgctxt "view:purchase.request:0"
+msgctxt "view:purchase.request:"
msgid "Purchase Requests"
msgstr "Solicitudes de compra"
-msgctxt "view:purchase.request:0"
+msgctxt "view:purchase.request:"
msgid "Supply Info"
msgstr "Información del suministro"
-msgctxt "view:stock.order_point:0"
+msgctxt "view:stock.order_point:"
msgid "Locations"
msgstr "Ubicaciones"
-msgctxt "view:stock.order_point:0"
+msgctxt "view:stock.order_point:"
msgid "Order Point"
msgstr "Punto de orden"
-msgctxt "view:stock.order_point:0"
+msgctxt "view:stock.order_point:"
msgid "Order Point Type"
msgstr "Tipo de punto de orden"
-#, fuzzy
-msgctxt "view:stock.order_point:0"
+msgctxt "view:stock.order_point:"
msgid "Order Points"
msgstr "Puntos de orden"
-msgctxt "view:stock.order_point:0"
+msgctxt "view:stock.order_point:"
msgid "Product Info"
msgstr "Información del producto"
-msgctxt "wizard_button:purchase.request.create_purchase,ask_user_party,end:0"
+msgctxt "wizard_button:purchase.request.create,start,create_:"
+msgid "Create"
+msgstr "Crear"
+
+msgctxt "wizard_button:purchase.request.create,start,end:"
msgid "Cancel"
msgstr "Cancelar"
-msgctxt "wizard_button:purchase.request.create_purchase,ask_user_party,init:0"
-msgid "Continue"
-msgstr "Continuar"
-
-msgctxt "wizard_button:purchase.request.create_purchase,ask_user_term,end:0"
+msgctxt "wizard_button:purchase.request.create_purchase,ask_party,end:"
msgid "Cancel"
msgstr "Cancelar"
-msgctxt "wizard_button:purchase.request.create_purchase,ask_user_term,init:0"
+msgctxt "wizard_button:purchase.request.create_purchase,ask_party,start:"
msgid "Continue"
msgstr "Continuar"
-#, fuzzy
-msgctxt "wizard_button:purchase.request.create_purchase_request,init,create:0"
-msgid "Create"
-msgstr "Crear"
-
-#, fuzzy
-msgctxt "wizard_button:purchase.request.create_purchase_request,init,end:0"
+msgctxt "wizard_button:purchase.request.create_purchase,ask_term,end:"
msgid "Cancel"
msgstr "Cancelar"
+
+msgctxt "wizard_button:purchase.request.create_purchase,ask_term,start:"
+msgid "Continue"
+msgstr "Continuar"
diff --git a/locale/es_CO.po b/locale/es_CO.po
index ba10ff5..20f44ba 100644
--- a/locale/es_CO.po
+++ b/locale/es_CO.po
@@ -2,172 +2,234 @@
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
-msgctxt "error:purchase.request.create_purchase:0"
+msgctxt "error:purchase.request.create_purchase:"
msgid "Purchase price is missing for product: %s (id: %s)!"
msgstr "El precio de compra falta para el producto: %s (id: %s)!"
-msgctxt "error:purchase.request.create_purchase:0"
+msgctxt "error:purchase.request.create_purchase:"
msgid "This price is necessary for creating purchase."
msgstr "Este precio se necesita para creación de compras."
-msgctxt "error:purchase.request:0"
+msgctxt "error:purchase.request:"
msgid "Purchase requests are only created by the system."
msgstr "Los requisitos de compras son creados por el sistema únicamente."
-msgctxt "error:stock.order_point:0"
+msgctxt "error:purchase.request:"
+msgid "The requested quantity must be greater than 0"
+msgstr ""
+
+msgctxt "error:stock.order_point:"
msgid "Maximal quantity must be bigger than Minimal quantity"
msgstr "La cantidad máxima debe ser mayor que la Cantidad Mínima"
-msgctxt "error:stock.order_point:0"
+msgctxt "error:stock.order_point:"
msgid "Only one order point is allowed for each product-location pair."
msgstr "Solamente se admite un punto de orden para cada par cliente-producto."
-msgctxt "error:stock.order_point:0"
+msgctxt "error:stock.order_point:"
msgid ""
"You can not define two order points on the same product with opposite "
"locations."
msgstr "No puede definir dos puntos de orden con lugares opuestos."
-msgctxt "field:product.product,order_points:0"
+msgctxt "field:product.product,order_points:"
msgid "Order Points"
msgstr "Puntos de Orden"
-msgctxt "field:purchase.request,company:0"
+msgctxt "field:purchase.request,company:"
msgid "Company"
msgstr "Compañía"
-msgctxt "field:purchase.request,computed_quantity:0"
+msgctxt "field:purchase.request,computed_quantity:"
msgid "Computed Quantity"
msgstr "Calcule Cantidad"
-msgctxt "field:purchase.request,computed_uom:0"
+msgctxt "field:purchase.request,computed_uom:"
msgid "Computed UOM"
msgstr "Calcule UOM"
-msgctxt "field:purchase.request,origin:0"
+msgctxt "field:purchase.request,create_date:"
+msgid "Create Date"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:purchase.request,create_uid:"
+msgid "Create User"
+msgstr "Crear usuario"
+
+msgctxt "field:purchase.request,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:purchase.request,origin:"
msgid "Origin"
msgstr "Origen"
-msgctxt "field:purchase.request,party:0"
+msgctxt "field:purchase.request,party:"
msgid "Party"
msgstr "Tercero"
-msgctxt "field:purchase.request,product:0"
+msgctxt "field:purchase.request,product:"
msgid "Product"
msgstr "Producto"
-msgctxt "field:purchase.request,purchase:0"
+msgctxt "field:purchase.request,purchase:"
msgid "Purchase"
msgstr "Compra"
-msgctxt "field:purchase.request,purchase_date:0"
+msgctxt "field:purchase.request,purchase_date:"
msgid "Best Purchase Date"
msgstr "Mejor Fecha de Compra"
-msgctxt "field:purchase.request,purchase_line:0"
+msgctxt "field:purchase.request,purchase_line:"
msgid "Purchase Line"
msgstr "Línea de Compra"
-msgctxt "field:purchase.request,quantity:0"
+msgctxt "field:purchase.request,quantity:"
msgid "Quantity"
msgstr "Cantidad"
-msgctxt "field:purchase.request,rec_name:0"
+msgctxt "field:purchase.request,rec_name:"
msgid "Name"
msgstr "Nombre"
-msgctxt "field:purchase.request,state:0"
+msgctxt "field:purchase.request,state:"
msgid "State"
msgstr "Estado"
-msgctxt "field:purchase.request,stock_level:0"
+msgctxt "field:purchase.request,stock_level:"
msgid "Stock at Supply Date"
msgstr "Almacenar al Momento en la fecha de abastecimiento"
-msgctxt "field:purchase.request,supply_date:0"
+msgctxt "field:purchase.request,supply_date:"
msgid "Expected Supply Date"
msgstr "Fecha Esperada de Abastecimiento"
-msgctxt "field:purchase.request,uom:0"
+msgctxt "field:purchase.request,uom:"
msgid "UOM"
msgstr "UDM"
-msgctxt "field:purchase.request,warehouse:0"
+msgctxt "field:purchase.request,warehouse:"
msgid "Warehouse"
msgstr "Depósito"
-msgctxt "field:purchase.request.create_purchase.ask_party,company:0"
+msgctxt "field:purchase.request,warehouse_required:"
+msgid "Warehouse Required"
+msgstr ""
+
+msgctxt "field:purchase.request,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:purchase.request,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "field:purchase.request.create.start,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:purchase.request.create_purchase.ask_party,company:"
msgid "Company"
msgstr "Compañía"
-msgctxt "field:purchase.request.create_purchase.ask_party,party:0"
+msgctxt "field:purchase.request.create_purchase.ask_party,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:purchase.request.create_purchase.ask_party,party:"
msgid "Supplier"
msgstr "Proveedor"
-msgctxt "field:purchase.request.create_purchase.ask_party,product:0"
+msgctxt "field:purchase.request.create_purchase.ask_party,product:"
msgid "Product"
msgstr "Producto"
-msgctxt "field:purchase.request.create_purchase.ask_term,company:0"
+msgctxt "field:purchase.request.create_purchase.ask_term,company:"
msgid "Company"
msgstr "Compañía"
-msgctxt "field:purchase.request.create_purchase.ask_term,party:0"
+msgctxt "field:purchase.request.create_purchase.ask_term,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:purchase.request.create_purchase.ask_term,party:"
msgid "Supplier"
msgstr "Proveedor"
-msgctxt "field:purchase.request.create_purchase.ask_term,payment_term:0"
+msgctxt "field:purchase.request.create_purchase.ask_term,payment_term:"
msgid "Payment Term"
msgstr "Término de Pago"
-msgctxt "field:stock.order_point,company:0"
+msgctxt "field:stock.order_point,company:"
msgid "Company"
msgstr "Compañía"
-msgctxt "field:stock.order_point,location:0"
+msgctxt "field:stock.order_point,create_date:"
+msgid "Create Date"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:stock.order_point,create_uid:"
+msgid "Create User"
+msgstr "Crear usuario"
+
+msgctxt "field:stock.order_point,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:stock.order_point,location:"
msgid "Location"
msgstr "Lugar"
-msgctxt "field:stock.order_point,max_quantity:0"
+msgctxt "field:stock.order_point,max_quantity:"
msgid "Maximal Quantity"
msgstr "Cantidad Máxima"
-msgctxt "field:stock.order_point,min_quantity:0"
+msgctxt "field:stock.order_point,min_quantity:"
msgid "Minimal Quantity"
msgstr "Cantidad Mínima"
-msgctxt "field:stock.order_point,product:0"
+msgctxt "field:stock.order_point,product:"
msgid "Product"
msgstr "Producto"
-msgctxt "field:stock.order_point,provisioning_location:0"
+msgctxt "field:stock.order_point,provisioning_location:"
msgid "Provisioning Location"
msgstr "Lugar de Aprovisionamiento"
-msgctxt "field:stock.order_point,rec_name:0"
+msgctxt "field:stock.order_point,rec_name:"
msgid "Name"
msgstr "Nombre"
-msgctxt "field:stock.order_point,storage_location:0"
+msgctxt "field:stock.order_point,storage_location:"
msgid "Storage Location"
msgstr "Lugar de almacenamiento"
-msgctxt "field:stock.order_point,type:0"
+msgctxt "field:stock.order_point,type:"
msgid "Type"
msgstr "Tipo"
-msgctxt "field:stock.order_point,unit:0"
+msgctxt "field:stock.order_point,unit:"
msgid "Unit"
msgstr "Unidad"
-msgctxt "field:stock.order_point,unit_digits:0"
+msgctxt "field:stock.order_point,unit_digits:"
msgid "Unit Digits"
msgstr "Dígitos de Unidad"
-msgctxt "field:stock.order_point,warehouse_location:0"
+msgctxt "field:stock.order_point,warehouse_location:"
msgid "Warehouse Location"
msgstr "Lugar de la bodega"
+msgctxt "field:stock.order_point,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:stock.order_point,write_uid:"
+msgid "Write User"
+msgstr ""
+
msgctxt "model:ir.action,name:act_order_point_form"
msgid "Order Points"
msgstr "Puntos de Orden"
@@ -176,7 +238,7 @@ msgctxt "model:ir.action,name:act_purchase_form"
msgid "Purchases"
msgstr "Compras"
-msgctxt "model:ir.action,name:act_purchase_request_create_purchase_request"
+msgctxt "model:ir.action,name:act_purchase_request_create"
msgid "Create Purchase Requests"
msgstr ""
@@ -200,14 +262,14 @@ msgctxt "model:ir.cron,name:cron_shipment_iternal"
msgid "Generate Internal Shipments"
msgstr "Genere Envío Interno"
-msgctxt "model:ir.ui.menu,name:menu_create_purchase_request"
-msgid "Create Purchase Requests"
-msgstr ""
-
msgctxt "model:ir.ui.menu,name:menu_order_point_form"
msgid "Order Points"
msgstr "Puntos de Orden"
+msgctxt "model:ir.ui.menu,name:menu_purchase_request_create"
+msgid "Create Purchase Requests"
+msgstr ""
+
msgctxt "model:ir.ui.menu,name:menu_purchase_request_form"
msgid "Purchase Requests"
msgstr "Solicitudes de Compra"
@@ -216,22 +278,22 @@ msgctxt "model:ir.ui.menu,name:menu_purchase_request_form_draft"
msgid "Draft Purchase Requests"
msgstr "Requisición de Prueba de Compras"
-msgctxt "model:purchase.request,name:0"
+msgctxt "model:purchase.request,name:"
msgid "Purchase Request"
msgstr "Solicitud de Compra"
-msgctxt "model:purchase.request.create_purchase.ask_party,name:0"
+msgctxt "model:purchase.request.create.start,name:"
+msgid "Create Purchase Request"
+msgstr ""
+
+msgctxt "model:purchase.request.create_purchase.ask_party,name:"
msgid "Create Purchase Ask Party"
msgstr "Crea Pregunta a Tercero de Compra"
-msgctxt "model:purchase.request.create_purchase.ask_term,name:0"
+msgctxt "model:purchase.request.create_purchase.ask_term,name:"
msgid "Create Purchase Ask Term"
msgstr "Crea Pregunta a Tercero de Término"
-msgctxt "model:purchase.request.create_purchase_request.init,name:0"
-msgid "Create Purchase Request Init"
-msgstr ""
-
msgctxt "model:res.group,name:group_purchase_request"
msgid "Purchase Request"
msgstr "Solicitud de Compra"
@@ -244,113 +306,114 @@ msgctxt "model:res.user,name:user_generate_shipment_internal"
msgid "Cron Intenal Shipment"
msgstr "Cron Envío Interno"
-msgctxt "model:stock.order_point,name:0"
+msgctxt "model:stock.order_point,name:"
msgid "Order Point"
msgstr "Punto de Orden"
-msgctxt "selection:purchase.request,origin:0"
+msgctxt "selection:purchase.request,origin:"
msgid "Order Point"
msgstr "Punto de Orden"
-msgctxt "selection:purchase.request,state:0"
+msgctxt "selection:purchase.request,state:"
msgid "Cancel"
msgstr "Cancelar"
-msgctxt "selection:purchase.request,state:0"
+msgctxt "selection:purchase.request,state:"
msgid "Done"
msgstr "Hecho"
-msgctxt "selection:purchase.request,state:0"
+msgctxt "selection:purchase.request,state:"
msgid "Draft"
msgstr "Borrador"
-msgctxt "selection:purchase.request,state:0"
+msgctxt "selection:purchase.request,state:"
msgid "Purchased"
msgstr "Comprado"
-msgctxt "selection:stock.order_point,type:0"
+msgctxt "selection:stock.order_point,type:"
msgid "Internal"
msgstr "Intern@"
-msgctxt "selection:stock.order_point,type:0"
+msgctxt "selection:stock.order_point,type:"
msgid "Purchase"
msgstr "Compra"
-msgctxt "view:purchase.request.create_purchase.ask_party:0"
-msgid "Create Purchase: Missing Supplier"
-msgstr "Crear Compra: Sin Proveedor"
-
-msgctxt "view:purchase.request.create_purchase.ask_term:0"
-msgid "Create Purchase: Missing Payment Term"
-msgstr "Crear Compra: Sin Término de Pago"
-
-msgctxt "view:purchase.request.create_purchase_request.init:0"
+msgctxt "view:purchase.request.create.start:"
msgid "Create Purchase Request"
msgstr ""
-msgctxt "view:purchase.request.create_purchase_request.init:0"
+msgctxt "view:purchase.request.create.start:"
msgid "Create Purchase Request?"
msgstr ""
-msgctxt "view:purchase.request:0"
+msgctxt "view:purchase.request.create_purchase.ask_party:"
+msgid "Create Purchase: Missing Supplier"
+msgstr "Crear Compra: Sin Proveedor"
+
+msgctxt "view:purchase.request.create_purchase.ask_term:"
+msgid "Create Purchase: Missing Payment Term"
+msgstr "Crear Compra: Sin Término de Pago"
+
+msgctxt "view:purchase.request:"
msgid "Product Info"
msgstr "Información de Producto"
-msgctxt "view:purchase.request:0"
+msgctxt "view:purchase.request:"
msgid "Purchase Request"
msgstr "Solicitud de Compra"
-msgctxt "view:purchase.request:0"
+msgctxt "view:purchase.request:"
msgid "Purchase Requests"
msgstr "Solicitudes de Compra"
-msgctxt "view:purchase.request:0"
+msgctxt "view:purchase.request:"
msgid "Supply Info"
msgstr "Información de proveedor"
-msgctxt "view:stock.order_point:0"
+msgctxt "view:stock.order_point:"
msgid "Locations"
msgstr "Lugares"
-msgctxt "view:stock.order_point:0"
+msgctxt "view:stock.order_point:"
msgid "Order Point"
msgstr "Punto de Orden"
-msgctxt "view:stock.order_point:0"
+msgctxt "view:stock.order_point:"
msgid "Order Point Type"
msgstr "Tipo de Punto de Orden"
#, fuzzy
-msgctxt "view:stock.order_point:0"
+msgctxt "view:stock.order_point:"
msgid "Order Points"
msgstr "Puntos de Orden"
-msgctxt "view:stock.order_point:0"
+msgctxt "view:stock.order_point:"
msgid "Product Info"
msgstr "Información de Producto"
-msgctxt "wizard_button:purchase.request.create_purchase,ask_user_party,end:0"
+msgctxt "wizard_button:purchase.request.create,start,create_:"
+msgid "Create"
+msgstr ""
+
+#, fuzzy
+msgctxt "wizard_button:purchase.request.create,start,end:"
msgid "Cancel"
msgstr "Cancelar"
-msgctxt "wizard_button:purchase.request.create_purchase,ask_user_party,init:0"
-msgid "Continue"
-msgstr "Continuar"
-
-msgctxt "wizard_button:purchase.request.create_purchase,ask_user_term,end:0"
+#, fuzzy
+msgctxt "wizard_button:purchase.request.create_purchase,ask_party,end:"
msgid "Cancel"
msgstr "Cancelar"
-msgctxt "wizard_button:purchase.request.create_purchase,ask_user_term,init:0"
+msgctxt "wizard_button:purchase.request.create_purchase,ask_party,start:"
msgid "Continue"
-msgstr "Continuar"
-
-#, fuzzy
-msgctxt "wizard_button:purchase.request.create_purchase_request,init,create:0"
-msgid "Create"
-msgstr "Crear"
+msgstr ""
#, fuzzy
-msgctxt "wizard_button:purchase.request.create_purchase_request,init,end:0"
+msgctxt "wizard_button:purchase.request.create_purchase,ask_term,end:"
msgid "Cancel"
msgstr "Cancelar"
+
+msgctxt "wizard_button:purchase.request.create_purchase,ask_term,start:"
+msgid "Continue"
+msgstr ""
diff --git a/locale/es_ES.po b/locale/es_ES.po
index c693af8..123e703 100644
--- a/locale/es_ES.po
+++ b/locale/es_ES.po
@@ -2,185 +2,247 @@
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
-msgctxt "error:purchase.request.create_purchase:0"
+msgctxt "error:purchase.request.create_purchase:"
msgid "Purchase price is missing for product: %s (id: %s)!"
-msgstr "Falta el precio de compra para el producto: %s (id: %s)"
+msgstr "Falta el precio de compra para el producto: %s (id: %s)."
-msgctxt "error:purchase.request.create_purchase:0"
+msgctxt "error:purchase.request.create_purchase:"
msgid "This price is necessary for creating purchase."
-msgstr "Se necesita este precio para crear la compra."
+msgstr "Este precio es necesario para crear la compra."
-msgctxt "error:purchase.request:0"
+msgctxt "error:purchase.request:"
msgid "Purchase requests are only created by the system."
-msgstr "Las solicitudes de compra solo las crea el sistema."
+msgstr "Las solicitudes de compra sólo las crea el sistema."
-msgctxt "error:stock.order_point:0"
+msgctxt "error:purchase.request:"
+msgid "The requested quantity must be greater than 0"
+msgstr "La cantidad solicitada debe ser más grande que 0."
+
+msgctxt "error:stock.order_point:"
msgid "Maximal quantity must be bigger than Minimal quantity"
-msgstr "La cantidad máxima debe ser mayor que la mínima"
+msgstr "La cantidad máxima debe ser mayor que la mínima."
-msgctxt "error:stock.order_point:0"
+msgctxt "error:stock.order_point:"
msgid "Only one order point is allowed for each product-location pair."
-msgstr "Solo se permite un punto de orden por cada par de producto-ubicación."
+msgstr ""
+"Sólo se permite una regla de abastecimiento por cada combinación de "
+"producto-ubicación."
-msgctxt "error:stock.order_point:0"
+msgctxt "error:stock.order_point:"
msgid ""
"You can not define two order points on the same product with opposite "
"locations."
msgstr ""
-"No puede definir dos puntos de orden en el mismo producto con ubicaciones "
-"opuestas."
+"No puede definir dos reglas de abastecimiento en el mismo producto con "
+"ubicaciones opuestas."
-msgctxt "field:product.product,order_points:0"
+msgctxt "field:product.product,order_points:"
msgid "Order Points"
-msgstr "Puntos de orden"
+msgstr "Reglas de abastecimiento"
-msgctxt "field:purchase.request,company:0"
+msgctxt "field:purchase.request,company:"
msgid "Company"
msgstr "Empresa"
-msgctxt "field:purchase.request,computed_quantity:0"
+msgctxt "field:purchase.request,computed_quantity:"
msgid "Computed Quantity"
msgstr "Cantidad calculada"
-msgctxt "field:purchase.request,computed_uom:0"
+msgctxt "field:purchase.request,computed_uom:"
msgid "Computed UOM"
msgstr "UdM calculada"
-msgctxt "field:purchase.request,origin:0"
+msgctxt "field:purchase.request,create_date:"
+msgid "Create Date"
+msgstr "Fecha creación"
+
+msgctxt "field:purchase.request,create_uid:"
+msgid "Create User"
+msgstr "Usuario creación"
+
+msgctxt "field:purchase.request,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:purchase.request,origin:"
msgid "Origin"
msgstr "Origen"
-msgctxt "field:purchase.request,party:0"
+msgctxt "field:purchase.request,party:"
msgid "Party"
msgstr "Tercero"
-msgctxt "field:purchase.request,product:0"
+msgctxt "field:purchase.request,product:"
msgid "Product"
msgstr "Producto"
-msgctxt "field:purchase.request,purchase:0"
+msgctxt "field:purchase.request,purchase:"
msgid "Purchase"
msgstr "Compra"
-msgctxt "field:purchase.request,purchase_date:0"
+msgctxt "field:purchase.request,purchase_date:"
msgid "Best Purchase Date"
msgstr "Mejor fecha de compra"
-msgctxt "field:purchase.request,purchase_line:0"
+msgctxt "field:purchase.request,purchase_line:"
msgid "Purchase Line"
msgstr "Línea de compra"
-msgctxt "field:purchase.request,quantity:0"
+msgctxt "field:purchase.request,quantity:"
msgid "Quantity"
msgstr "Cantidad"
-msgctxt "field:purchase.request,rec_name:0"
+msgctxt "field:purchase.request,rec_name:"
msgid "Name"
msgstr "Nombre"
-msgctxt "field:purchase.request,state:0"
+msgctxt "field:purchase.request,state:"
msgid "State"
msgstr "Estado"
-msgctxt "field:purchase.request,stock_level:0"
+msgctxt "field:purchase.request,stock_level:"
msgid "Stock at Supply Date"
-msgstr "Existencias a la fecha del suministro"
+msgstr "Stock a la fecha del suministro"
-msgctxt "field:purchase.request,supply_date:0"
+msgctxt "field:purchase.request,supply_date:"
msgid "Expected Supply Date"
msgstr "Fecha estimada de suministro"
-msgctxt "field:purchase.request,uom:0"
+msgctxt "field:purchase.request,uom:"
msgid "UOM"
msgstr "UdM"
-msgctxt "field:purchase.request,warehouse:0"
+msgctxt "field:purchase.request,warehouse:"
msgid "Warehouse"
msgstr "Almacén"
-msgctxt "field:purchase.request.create_purchase.ask_party,company:0"
+msgctxt "field:purchase.request,warehouse_required:"
+msgid "Warehouse Required"
+msgstr "Almacén requerido"
+
+msgctxt "field:purchase.request,write_date:"
+msgid "Write Date"
+msgstr "Fecha modificación"
+
+msgctxt "field:purchase.request,write_uid:"
+msgid "Write User"
+msgstr "Usuario modificación"
+
+msgctxt "field:purchase.request.create.start,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:purchase.request.create_purchase.ask_party,company:"
msgid "Company"
msgstr "Empresa"
-msgctxt "field:purchase.request.create_purchase.ask_party,party:0"
+msgctxt "field:purchase.request.create_purchase.ask_party,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:purchase.request.create_purchase.ask_party,party:"
msgid "Supplier"
msgstr "Proveedor"
-msgctxt "field:purchase.request.create_purchase.ask_party,product:0"
+msgctxt "field:purchase.request.create_purchase.ask_party,product:"
msgid "Product"
msgstr "Producto"
-msgctxt "field:purchase.request.create_purchase.ask_term,company:0"
+msgctxt "field:purchase.request.create_purchase.ask_term,company:"
msgid "Company"
msgstr "Empresa"
-msgctxt "field:purchase.request.create_purchase.ask_term,party:0"
+msgctxt "field:purchase.request.create_purchase.ask_term,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:purchase.request.create_purchase.ask_term,party:"
msgid "Supplier"
msgstr "Proveedor"
-msgctxt "field:purchase.request.create_purchase.ask_term,payment_term:0"
+msgctxt "field:purchase.request.create_purchase.ask_term,payment_term:"
msgid "Payment Term"
msgstr "Plazo de pago"
-msgctxt "field:stock.order_point,company:0"
+msgctxt "field:stock.order_point,company:"
msgid "Company"
msgstr "Empresa"
-msgctxt "field:stock.order_point,location:0"
+msgctxt "field:stock.order_point,create_date:"
+msgid "Create Date"
+msgstr "Fecha creación"
+
+msgctxt "field:stock.order_point,create_uid:"
+msgid "Create User"
+msgstr "Usuario creación"
+
+msgctxt "field:stock.order_point,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:stock.order_point,location:"
msgid "Location"
msgstr "Ubicación"
-msgctxt "field:stock.order_point,max_quantity:0"
+msgctxt "field:stock.order_point,max_quantity:"
msgid "Maximal Quantity"
msgstr "Cantidad máxima"
-msgctxt "field:stock.order_point,min_quantity:0"
+msgctxt "field:stock.order_point,min_quantity:"
msgid "Minimal Quantity"
msgstr "Cantidad mínima"
-msgctxt "field:stock.order_point,product:0"
+msgctxt "field:stock.order_point,product:"
msgid "Product"
msgstr "Producto"
-msgctxt "field:stock.order_point,provisioning_location:0"
+msgctxt "field:stock.order_point,provisioning_location:"
msgid "Provisioning Location"
-msgstr "Ubicación del aprovisionamiento"
+msgstr "Ubicación del abastecimiento"
-msgctxt "field:stock.order_point,rec_name:0"
+msgctxt "field:stock.order_point,rec_name:"
msgid "Name"
msgstr "Nombre"
-msgctxt "field:stock.order_point,storage_location:0"
+msgctxt "field:stock.order_point,storage_location:"
msgid "Storage Location"
-msgstr "Ubicación del almacén"
+msgstr "Ubicación interna"
-msgctxt "field:stock.order_point,type:0"
+msgctxt "field:stock.order_point,type:"
msgid "Type"
msgstr "Tipo"
-msgctxt "field:stock.order_point,unit:0"
+msgctxt "field:stock.order_point,unit:"
msgid "Unit"
msgstr "Unidad"
-msgctxt "field:stock.order_point,unit_digits:0"
+msgctxt "field:stock.order_point,unit_digits:"
msgid "Unit Digits"
msgstr "Decimales de la unidad"
-msgctxt "field:stock.order_point,warehouse_location:0"
+msgctxt "field:stock.order_point,warehouse_location:"
msgid "Warehouse Location"
msgstr "Ubicación del almacén"
+msgctxt "field:stock.order_point,write_date:"
+msgid "Write Date"
+msgstr "Fecha modificación"
+
+msgctxt "field:stock.order_point,write_uid:"
+msgid "Write User"
+msgstr "Usuario modificación"
+
msgctxt "model:ir.action,name:act_order_point_form"
msgid "Order Points"
-msgstr "Puntos de orden"
+msgstr "Reglas de abastecimiento"
msgctxt "model:ir.action,name:act_purchase_form"
msgid "Purchases"
msgstr "Compras"
-msgctxt "model:ir.action,name:act_purchase_request_create_purchase_request"
+msgctxt "model:ir.action,name:act_purchase_request_create"
msgid "Create Purchase Requests"
-msgstr ""
+msgstr "Crear solicitudes de compra"
msgctxt "model:ir.action,name:act_purchase_request_form"
msgid "Purchase Requests"
@@ -188,7 +250,7 @@ msgstr "Solicitudes de compra"
msgctxt "model:ir.action,name:act_purchase_request_form_draft"
msgid "Draft Purchase Requests"
-msgstr ""
+msgstr "Solicitudes de compra borrador"
msgctxt "model:ir.action,name:wizard_create_purchase"
msgid "Create Purchase"
@@ -196,19 +258,19 @@ msgstr "Crear compra"
msgctxt "model:ir.cron,name:cron_generate_request"
msgid "Generate Purchase Requests"
-msgstr "Generar peticiones de compra"
+msgstr "Generar solicitudes de compra"
msgctxt "model:ir.cron,name:cron_shipment_iternal"
msgid "Generate Internal Shipments"
-msgstr "Generar envios internos"
-
-msgctxt "model:ir.ui.menu,name:menu_create_purchase_request"
-msgid "Create Purchase Requests"
-msgstr ""
+msgstr "Generar envíos internos"
msgctxt "model:ir.ui.menu,name:menu_order_point_form"
msgid "Order Points"
-msgstr "Puntos de orden"
+msgstr "Reglas de abastecimiento"
+
+msgctxt "model:ir.ui.menu,name:menu_purchase_request_create"
+msgid "Create Purchase Requests"
+msgstr "Crear solicitudes de compra"
msgctxt "model:ir.ui.menu,name:menu_purchase_request_form"
msgid "Purchase Requests"
@@ -216,143 +278,140 @@ msgstr "Solicitudes de compra"
msgctxt "model:ir.ui.menu,name:menu_purchase_request_form_draft"
msgid "Draft Purchase Requests"
-msgstr ""
+msgstr "Solicitudes compra borrador"
-msgctxt "model:purchase.request,name:0"
+msgctxt "model:purchase.request,name:"
msgid "Purchase Request"
msgstr "Solicitud de compra"
-msgctxt "model:purchase.request.create_purchase.ask_party,name:0"
+msgctxt "model:purchase.request.create.start,name:"
+msgid "Create Purchase Request"
+msgstr "Crear solicitud de compra"
+
+msgctxt "model:purchase.request.create_purchase.ask_party,name:"
msgid "Create Purchase Ask Party"
msgstr "Crear compra - Petición de tercero"
-msgctxt "model:purchase.request.create_purchase.ask_term,name:0"
+msgctxt "model:purchase.request.create_purchase.ask_term,name:"
msgid "Create Purchase Ask Term"
msgstr "Crear compra - Petición de plazo"
-msgctxt "model:purchase.request.create_purchase_request.init,name:0"
-msgid "Create Purchase Request Init"
-msgstr ""
-
msgctxt "model:res.group,name:group_purchase_request"
msgid "Purchase Request"
msgstr "Solicitud de compra"
msgctxt "model:res.user,name:user_generate_request"
msgid "Cron Purchase Request"
-msgstr "Programador de tareas de solicitudes de compra"
+msgstr "Planificador solicitud de compra"
msgctxt "model:res.user,name:user_generate_shipment_internal"
msgid "Cron Intenal Shipment"
-msgstr "Programador de tareas de envio interno"
+msgstr "Planificador de envío interno"
-msgctxt "model:stock.order_point,name:0"
+msgctxt "model:stock.order_point,name:"
msgid "Order Point"
-msgstr "Punto de orden"
+msgstr "Regla de abastecimiento"
-msgctxt "selection:purchase.request,origin:0"
+msgctxt "selection:purchase.request,origin:"
msgid "Order Point"
-msgstr "Punto de orden"
+msgstr "Regla de abastecimiento"
-msgctxt "selection:purchase.request,state:0"
+msgctxt "selection:purchase.request,state:"
msgid "Cancel"
msgstr "Cancelar"
-msgctxt "selection:purchase.request,state:0"
+msgctxt "selection:purchase.request,state:"
msgid "Done"
-msgstr "Terminada"
+msgstr "Realizada"
-msgctxt "selection:purchase.request,state:0"
+msgctxt "selection:purchase.request,state:"
msgid "Draft"
msgstr "Borrador"
-msgctxt "selection:purchase.request,state:0"
+msgctxt "selection:purchase.request,state:"
msgid "Purchased"
msgstr "Comprado"
-msgctxt "selection:stock.order_point,type:0"
+msgctxt "selection:stock.order_point,type:"
msgid "Internal"
msgstr "Interno"
-msgctxt "selection:stock.order_point,type:0"
+msgctxt "selection:stock.order_point,type:"
msgid "Purchase"
msgstr "Compra"
-msgctxt "view:purchase.request.create_purchase.ask_party:0"
-msgid "Create Purchase: Missing Supplier"
-msgstr "Crear compra: sin proveedor"
-
-msgctxt "view:purchase.request.create_purchase.ask_term:0"
-msgid "Create Purchase: Missing Payment Term"
-msgstr "Crear compra: sin término de pago"
-
-msgctxt "view:purchase.request.create_purchase_request.init:0"
+msgctxt "view:purchase.request.create.start:"
msgid "Create Purchase Request"
-msgstr ""
+msgstr "Crear solicitud de compra"
-msgctxt "view:purchase.request.create_purchase_request.init:0"
+msgctxt "view:purchase.request.create.start:"
msgid "Create Purchase Request?"
-msgstr ""
+msgstr "Crear solicitudes de compra?"
+
+msgctxt "view:purchase.request.create_purchase.ask_party:"
+msgid "Create Purchase: Missing Supplier"
+msgstr "Crear compra: Sin proveedor"
+
+msgctxt "view:purchase.request.create_purchase.ask_term:"
+msgid "Create Purchase: Missing Payment Term"
+msgstr "Crear compra: Sin plazo de pago"
-msgctxt "view:purchase.request:0"
+msgctxt "view:purchase.request:"
msgid "Product Info"
msgstr "Información del producto"
-msgctxt "view:purchase.request:0"
+msgctxt "view:purchase.request:"
msgid "Purchase Request"
msgstr "Solicitud de compra"
-msgctxt "view:purchase.request:0"
+msgctxt "view:purchase.request:"
msgid "Purchase Requests"
msgstr "Solicitudes de compra"
-msgctxt "view:purchase.request:0"
+msgctxt "view:purchase.request:"
msgid "Supply Info"
msgstr "Información del suministro"
-msgctxt "view:stock.order_point:0"
+msgctxt "view:stock.order_point:"
msgid "Locations"
msgstr "Ubicaciones"
-msgctxt "view:stock.order_point:0"
+msgctxt "view:stock.order_point:"
msgid "Order Point"
-msgstr "Punto de orden"
+msgstr "Regla de abastecimiento"
-msgctxt "view:stock.order_point:0"
+msgctxt "view:stock.order_point:"
msgid "Order Point Type"
-msgstr "Tipo de punto de orden"
+msgstr "Tipo de regla de abastecimiento"
-#, fuzzy
-msgctxt "view:stock.order_point:0"
+msgctxt "view:stock.order_point:"
msgid "Order Points"
-msgstr "Puntos de orden"
+msgstr "Reglas de abastecimiento"
-msgctxt "view:stock.order_point:0"
+msgctxt "view:stock.order_point:"
msgid "Product Info"
msgstr "Información del producto"
-msgctxt "wizard_button:purchase.request.create_purchase,ask_user_party,end:0"
+msgctxt "wizard_button:purchase.request.create,start,create_:"
+msgid "Create"
+msgstr "Crear"
+
+msgctxt "wizard_button:purchase.request.create,start,end:"
msgid "Cancel"
msgstr "Cancelar"
-msgctxt "wizard_button:purchase.request.create_purchase,ask_user_party,init:0"
-msgid "Continue"
-msgstr "Continuar"
-
-msgctxt "wizard_button:purchase.request.create_purchase,ask_user_term,end:0"
+msgctxt "wizard_button:purchase.request.create_purchase,ask_party,end:"
msgid "Cancel"
msgstr "Cancelar"
-msgctxt "wizard_button:purchase.request.create_purchase,ask_user_term,init:0"
+msgctxt "wizard_button:purchase.request.create_purchase,ask_party,start:"
msgid "Continue"
msgstr "Continuar"
-#, fuzzy
-msgctxt "wizard_button:purchase.request.create_purchase_request,init,create:0"
-msgid "Create"
-msgstr "Crear"
-
-#, fuzzy
-msgctxt "wizard_button:purchase.request.create_purchase_request,init,end:0"
+msgctxt "wizard_button:purchase.request.create_purchase,ask_term,end:"
msgid "Cancel"
msgstr "Cancelar"
+
+msgctxt "wizard_button:purchase.request.create_purchase,ask_term,start:"
+msgid "Continue"
+msgstr "Continuar"
diff --git a/locale/fr_FR.po b/locale/fr_FR.po
index 192ef58..9a4c6c9 100644
--- a/locale/fr_FR.po
+++ b/locale/fr_FR.po
@@ -2,29 +2,55 @@
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
-msgctxt "error:purchase.request.create_purchase:0"
+msgctxt "error:purchase.request.create_purchase:"
msgid "Purchase price is missing for product: %s (id: %s)!"
msgstr "Le prix d'achat est absent pour le produit : %s (id: %s) !"
-msgctxt "error:purchase.request.create_purchase:0"
+msgctxt "error:purchase.request.create_purchase:"
+msgid "Purchase price is missing for product: %s (id: %s)!"
+msgstr "Le prix d'achat est absent pour le produit : %s (id: %s) !"
+
+msgctxt "error:purchase.request.create_purchase:"
+msgid "This price is necessary for creating purchase."
+msgstr "Ce prix est nécessaire pour créer les achats."
+
+msgctxt "error:purchase.request.create_purchase:"
msgid "This price is necessary for creating purchase."
msgstr "Ce prix est nécessaire pour créer les achats."
-msgctxt "error:purchase.request:0"
+msgctxt "error:purchase.request:"
msgid "Purchase requests are only created by the system."
msgstr "Les demandes d'achat sont uniquement crées par le sytème"
-msgctxt "error:stock.order_point:0"
+msgctxt "error:purchase.request:"
+msgid "Purchase requests are only created by the system."
+msgstr "Les demandes d'achat sont uniquement crées par le sytème"
+
+msgctxt "error:purchase.request:"
+msgid "The requested quantity must be greater than 0"
+msgstr "La quantité requise doit être supérieure à zéro"
+
+msgctxt "error:stock.order_point:"
msgid "Maximal quantity must be bigger than Minimal quantity"
msgstr "La Quantité maximale doit être supérieure à la quantité minimale"
-msgctxt "error:stock.order_point:0"
+msgctxt "error:stock.order_point:"
+msgid "Maximal quantity must be bigger than Minimal quantity"
+msgstr "La Quantité maximale doit être supérieure à la quantité minimale"
+
+msgctxt "error:stock.order_point:"
+msgid "Only one order point is allowed for each product-location pair."
+msgstr ""
+"Une seule règle d'approvisionnement est autorisée par paire produit-"
+"emplacement"
+
+msgctxt "error:stock.order_point:"
msgid "Only one order point is allowed for each product-location pair."
msgstr ""
"Une seule règle d'approvisionnement est autorisée par paire produit-"
"emplacement"
-msgctxt "error:stock.order_point:0"
+msgctxt "error:stock.order_point:"
msgid ""
"You can not define two order points on the same product with opposite "
"locations."
@@ -32,146 +58,210 @@ msgstr ""
"Vous ne pouvez pas définir deux règles d'approvisionnement sur le même "
"produit avec des emplacement opposés"
-msgctxt "field:product.product,order_points:0"
+msgctxt "error:stock.order_point:"
+msgid ""
+"You can not define two order points on the same product with opposite "
+"locations."
+msgstr ""
+"Vous ne pouvez pas définir deux règles d'approvisionnement sur le même "
+"produit avec des emplacement opposés"
+
+msgctxt "field:product.product,order_points:"
msgid "Order Points"
msgstr "Règles d'approvisionnements"
-msgctxt "field:purchase.request,company:0"
+msgctxt "field:purchase.request,company:"
msgid "Company"
msgstr "Société"
-msgctxt "field:purchase.request,computed_quantity:0"
+msgctxt "field:purchase.request,computed_quantity:"
msgid "Computed Quantity"
msgstr "Quantité calculée"
-msgctxt "field:purchase.request,computed_uom:0"
+msgctxt "field:purchase.request,computed_uom:"
msgid "Computed UOM"
msgstr "UDM calculée"
-msgctxt "field:purchase.request,origin:0"
+msgctxt "field:purchase.request,create_date:"
+msgid "Create Date"
+msgstr "Date de création"
+
+msgctxt "field:purchase.request,create_uid:"
+msgid "Create User"
+msgstr "Créé par"
+
+msgctxt "field:purchase.request,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:purchase.request,origin:"
msgid "Origin"
msgstr "Origine"
-msgctxt "field:purchase.request,party:0"
+msgctxt "field:purchase.request,party:"
msgid "Party"
msgstr "Tiers"
-msgctxt "field:purchase.request,product:0"
+msgctxt "field:purchase.request,product:"
msgid "Product"
msgstr "Produit"
-msgctxt "field:purchase.request,purchase:0"
+msgctxt "field:purchase.request,purchase:"
msgid "Purchase"
msgstr "Achat"
-msgctxt "field:purchase.request,purchase_date:0"
+msgctxt "field:purchase.request,purchase_date:"
msgid "Best Purchase Date"
msgstr "Meilleur date d'achat"
-msgctxt "field:purchase.request,purchase_line:0"
+msgctxt "field:purchase.request,purchase_line:"
msgid "Purchase Line"
msgstr "Ligne d'achat"
-msgctxt "field:purchase.request,quantity:0"
+msgctxt "field:purchase.request,quantity:"
msgid "Quantity"
msgstr "Quantité"
-msgctxt "field:purchase.request,rec_name:0"
+msgctxt "field:purchase.request,rec_name:"
msgid "Name"
msgstr "Nom"
-msgctxt "field:purchase.request,state:0"
+msgctxt "field:purchase.request,state:"
msgid "State"
msgstr "État"
-msgctxt "field:purchase.request,stock_level:0"
+msgctxt "field:purchase.request,stock_level:"
msgid "Stock at Supply Date"
msgstr "Stock à la date de livraison"
-msgctxt "field:purchase.request,supply_date:0"
+msgctxt "field:purchase.request,supply_date:"
msgid "Expected Supply Date"
msgstr "Date de livraison attendue"
-msgctxt "field:purchase.request,uom:0"
+msgctxt "field:purchase.request,uom:"
msgid "UOM"
msgstr "UDM"
-msgctxt "field:purchase.request,warehouse:0"
+msgctxt "field:purchase.request,warehouse:"
msgid "Warehouse"
msgstr "Entrepôt"
-msgctxt "field:purchase.request.create_purchase.ask_party,company:0"
+msgctxt "field:purchase.request,warehouse_required:"
+msgid "Warehouse Required"
+msgstr "Entrepôt requis"
+
+msgctxt "field:purchase.request,write_date:"
+msgid "Write Date"
+msgstr "Date de mise à jour"
+
+msgctxt "field:purchase.request,write_uid:"
+msgid "Write User"
+msgstr "Mis à jour par"
+
+msgctxt "field:purchase.request.create.start,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:purchase.request.create_purchase.ask_party,company:"
msgid "Company"
msgstr "Société"
-msgctxt "field:purchase.request.create_purchase.ask_party,party:0"
+msgctxt "field:purchase.request.create_purchase.ask_party,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:purchase.request.create_purchase.ask_party,party:"
msgid "Supplier"
msgstr "Fournisseur"
-msgctxt "field:purchase.request.create_purchase.ask_party,product:0"
+msgctxt "field:purchase.request.create_purchase.ask_party,product:"
msgid "Product"
msgstr "Produit"
-msgctxt "field:purchase.request.create_purchase.ask_term,company:0"
+msgctxt "field:purchase.request.create_purchase.ask_term,company:"
msgid "Company"
msgstr "Société"
-msgctxt "field:purchase.request.create_purchase.ask_term,party:0"
+msgctxt "field:purchase.request.create_purchase.ask_term,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:purchase.request.create_purchase.ask_term,party:"
msgid "Supplier"
msgstr "Fournisseur"
-msgctxt "field:purchase.request.create_purchase.ask_term,payment_term:0"
+msgctxt "field:purchase.request.create_purchase.ask_term,payment_term:"
msgid "Payment Term"
msgstr "Condition de paiement"
-msgctxt "field:stock.order_point,company:0"
+msgctxt "field:stock.order_point,company:"
msgid "Company"
msgstr "Société"
-msgctxt "field:stock.order_point,location:0"
+msgctxt "field:stock.order_point,create_date:"
+msgid "Create Date"
+msgstr "Date de création"
+
+msgctxt "field:stock.order_point,create_uid:"
+msgid "Create User"
+msgstr "Créé par"
+
+msgctxt "field:stock.order_point,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:stock.order_point,location:"
msgid "Location"
msgstr "Emplacement"
-msgctxt "field:stock.order_point,max_quantity:0"
+msgctxt "field:stock.order_point,max_quantity:"
msgid "Maximal Quantity"
msgstr "Quantité maximale"
-msgctxt "field:stock.order_point,min_quantity:0"
+msgctxt "field:stock.order_point,min_quantity:"
msgid "Minimal Quantity"
msgstr "Quantité minimale"
-msgctxt "field:stock.order_point,product:0"
+msgctxt "field:stock.order_point,product:"
msgid "Product"
msgstr "Produit"
-msgctxt "field:stock.order_point,provisioning_location:0"
+msgctxt "field:stock.order_point,provisioning_location:"
msgid "Provisioning Location"
msgstr "Emplacement d'appro."
-msgctxt "field:stock.order_point,rec_name:0"
+msgctxt "field:stock.order_point,rec_name:"
msgid "Name"
msgstr "Nom"
-msgctxt "field:stock.order_point,storage_location:0"
+msgctxt "field:stock.order_point,storage_location:"
msgid "Storage Location"
msgstr "Emplacement de stockage"
-msgctxt "field:stock.order_point,type:0"
+msgctxt "field:stock.order_point,type:"
msgid "Type"
msgstr "Type"
-msgctxt "field:stock.order_point,unit:0"
+msgctxt "field:stock.order_point,unit:"
msgid "Unit"
msgstr "Unité"
-msgctxt "field:stock.order_point,unit_digits:0"
+msgctxt "field:stock.order_point,unit_digits:"
msgid "Unit Digits"
msgstr "Décimales de l'unité"
-msgctxt "field:stock.order_point,warehouse_location:0"
+msgctxt "field:stock.order_point,warehouse_location:"
msgid "Warehouse Location"
msgstr "Entrepôt"
+msgctxt "field:stock.order_point,write_date:"
+msgid "Write Date"
+msgstr "Date de mise à jour"
+
+msgctxt "field:stock.order_point,write_uid:"
+msgid "Write User"
+msgstr "Mis à jour par"
+
msgctxt "model:ir.action,name:act_order_point_form"
msgid "Order Points"
msgstr "Règles d'approvisionnement"
@@ -180,7 +270,7 @@ msgctxt "model:ir.action,name:act_purchase_form"
msgid "Purchases"
msgstr "Achats"
-msgctxt "model:ir.action,name:act_purchase_request_create_purchase_request"
+msgctxt "model:ir.action,name:act_purchase_request_create"
msgid "Create Purchase Requests"
msgstr "Créer les demandes d'achat"
@@ -204,14 +294,14 @@ msgctxt "model:ir.cron,name:cron_shipment_iternal"
msgid "Generate Internal Shipments"
msgstr "Générer les expéditions internes"
-msgctxt "model:ir.ui.menu,name:menu_create_purchase_request"
-msgid "Create Purchase Requests"
-msgstr "Créer les demandes d'achat"
-
msgctxt "model:ir.ui.menu,name:menu_order_point_form"
msgid "Order Points"
msgstr "Règles d'approvisionnement"
+msgctxt "model:ir.ui.menu,name:menu_purchase_request_create"
+msgid "Create Purchase Requests"
+msgstr "Créer les demandes d'achat"
+
msgctxt "model:ir.ui.menu,name:menu_purchase_request_form"
msgid "Purchase Requests"
msgstr "Demandes d'achat"
@@ -220,22 +310,22 @@ msgctxt "model:ir.ui.menu,name:menu_purchase_request_form_draft"
msgid "Draft Purchase Requests"
msgstr "Demandes d'achat en brouillon"
-msgctxt "model:purchase.request,name:0"
+msgctxt "model:purchase.request,name:"
msgid "Purchase Request"
msgstr "Demande d'achat"
-msgctxt "model:purchase.request.create_purchase.ask_party,name:0"
+msgctxt "model:purchase.request.create.start,name:"
+msgid "Create Purchase Request"
+msgstr "Créer les demandes d'achat"
+
+msgctxt "model:purchase.request.create_purchase.ask_party,name:"
msgid "Create Purchase Ask Party"
msgstr "Créer l'achat - Demande de tiers"
-msgctxt "model:purchase.request.create_purchase.ask_term,name:0"
+msgctxt "model:purchase.request.create_purchase.ask_term,name:"
msgid "Create Purchase Ask Term"
msgstr "Créer l'achat - Demande de condition de paiment"
-msgctxt "model:purchase.request.create_purchase_request.init,name:0"
-msgid "Create Purchase Request Init"
-msgstr "Créer les demandes d'achat - Init"
-
msgctxt "model:res.group,name:group_purchase_request"
msgid "Purchase Request"
msgstr "Demande d'achat"
@@ -248,110 +338,174 @@ msgctxt "model:res.user,name:user_generate_shipment_internal"
msgid "Cron Intenal Shipment"
msgstr "Cron expédition interne"
-msgctxt "model:stock.order_point,name:0"
+msgctxt "model:stock.order_point,name:"
msgid "Order Point"
msgstr "Règle d'approvisionnement"
-msgctxt "selection:purchase.request,origin:0"
+msgctxt "selection:purchase.request,origin:"
msgid "Order Point"
msgstr "Règle d'approvisionnement"
-msgctxt "selection:purchase.request,state:0"
+msgctxt "selection:purchase.request,state:"
+msgid "Cancel"
+msgstr "Annulé"
+
+msgctxt "selection:purchase.request,state:"
msgid "Cancel"
msgstr "Annulé"
-msgctxt "selection:purchase.request,state:0"
+msgctxt "selection:purchase.request,state:"
msgid "Done"
msgstr "Fait"
-msgctxt "selection:purchase.request,state:0"
+msgctxt "selection:purchase.request,state:"
+msgid "Done"
+msgstr "Fait"
+
+msgctxt "selection:purchase.request,state:"
msgid "Draft"
msgstr "Brouillon"
-msgctxt "selection:purchase.request,state:0"
+msgctxt "selection:purchase.request,state:"
+msgid "Draft"
+msgstr "Brouillon"
+
+msgctxt "selection:purchase.request,state:"
msgid "Purchased"
msgstr "Commandé"
-msgctxt "selection:stock.order_point,type:0"
+msgctxt "selection:purchase.request,state:"
+msgid "Purchased"
+msgstr "Commandé"
+
+msgctxt "selection:stock.order_point,type:"
+msgid "Internal"
+msgstr "Interne"
+
+msgctxt "selection:stock.order_point,type:"
msgid "Internal"
msgstr "Interne"
-msgctxt "selection:stock.order_point,type:0"
+msgctxt "selection:stock.order_point,type:"
+msgid "Purchase"
+msgstr "Achat"
+
+msgctxt "selection:stock.order_point,type:"
msgid "Purchase"
msgstr "Achat"
-msgctxt "view:purchase.request.create_purchase.ask_party:0"
+msgctxt "view:purchase.request.create.start:"
+msgid "Create Purchase Request"
+msgstr "Créer les demandes d'achat"
+
+msgctxt "view:purchase.request.create.start:"
+msgid "Create Purchase Request?"
+msgstr "Créer les demandes d'achat ?"
+
+msgctxt "view:purchase.request.create_purchase.ask_party:"
msgid "Create Purchase: Missing Supplier"
msgstr "Création de la commande: fournisseur absent"
-msgctxt "view:purchase.request.create_purchase.ask_term:0"
+msgctxt "view:purchase.request.create_purchase.ask_party:"
+msgid "Create Purchase: Missing Supplier"
+msgstr "Création de la commande: fournisseur absent"
+
+msgctxt "view:purchase.request.create_purchase.ask_term:"
msgid "Create Purchase: Missing Payment Term"
msgstr "Création de la commande: règle d'appro. absente"
-msgctxt "view:purchase.request.create_purchase_request.init:0"
-msgid "Create Purchase Request"
-msgstr "Créer les demandes d'achat"
+msgctxt "view:purchase.request.create_purchase.ask_term:"
+msgid "Create Purchase: Missing Payment Term"
+msgstr "Création de la commande: règle d'appro. absente"
-msgctxt "view:purchase.request.create_purchase_request.init:0"
-msgid "Create Purchase Request?"
-msgstr "Créer les demandes d'achat ?"
+msgctxt "view:purchase.request:"
+msgid "Product Info"
+msgstr "Info produit"
-msgctxt "view:purchase.request:0"
+msgctxt "view:purchase.request:"
msgid "Product Info"
msgstr "Info produit"
-msgctxt "view:purchase.request:0"
+msgctxt "view:purchase.request:"
msgid "Purchase Request"
msgstr "Demande d'achat"
-msgctxt "view:purchase.request:0"
+msgctxt "view:purchase.request:"
+msgid "Purchase Request"
+msgstr "Demande d'achat"
+
+msgctxt "view:purchase.request:"
+msgid "Purchase Requests"
+msgstr "Demandes d'achat"
+
+msgctxt "view:purchase.request:"
msgid "Purchase Requests"
msgstr "Demandes d'achat"
-msgctxt "view:purchase.request:0"
+msgctxt "view:purchase.request:"
+msgid "Supply Info"
+msgstr "Information d'approvisionnement"
+
+msgctxt "view:purchase.request:"
msgid "Supply Info"
msgstr "Information d'approvisionnement"
-msgctxt "view:stock.order_point:0"
+msgctxt "view:stock.order_point:"
msgid "Locations"
msgstr "Emplacements"
-msgctxt "view:stock.order_point:0"
+msgctxt "view:stock.order_point:"
+msgid "Order Point"
+msgstr "Règle d'approvisionnement"
+
+msgctxt "view:stock.order_point:"
msgid "Order Point"
msgstr "Règle d'approvisionnement"
-msgctxt "view:stock.order_point:0"
+msgctxt "view:stock.order_point:"
msgid "Order Point Type"
msgstr "Type de Règle d'approvisionnement"
-msgctxt "view:stock.order_point:0"
+msgctxt "view:stock.order_point:"
+msgid "Order Point Type"
+msgstr "Type de Règle d'approvisionnement"
+
+msgctxt "view:stock.order_point:"
msgid "Order Points"
msgstr "Règles d'approvisionnements"
-msgctxt "view:stock.order_point:0"
+msgctxt "view:stock.order_point:"
+msgid "Order Points"
+msgstr "Règles d'approvisionnements"
+
+msgctxt "view:stock.order_point:"
msgid "Product Info"
msgstr "Info produit"
-msgctxt "wizard_button:purchase.request.create_purchase,ask_user_party,end:0"
+msgctxt "view:stock.order_point:"
+msgid "Product Info"
+msgstr "Info produit"
+
+msgctxt "wizard_button:purchase.request.create,start,create_:"
+msgid "Create"
+msgstr "Créer"
+
+msgctxt "wizard_button:purchase.request.create,start,end:"
msgid "Cancel"
msgstr "Annuler"
-msgctxt "wizard_button:purchase.request.create_purchase,ask_user_party,init:0"
-msgid "Continue"
-msgstr "Continuer"
-
-msgctxt "wizard_button:purchase.request.create_purchase,ask_user_term,end:0"
+msgctxt "wizard_button:purchase.request.create_purchase,ask_party,end:"
msgid "Cancel"
msgstr "Annuler"
-msgctxt "wizard_button:purchase.request.create_purchase,ask_user_term,init:0"
+msgctxt "wizard_button:purchase.request.create_purchase,ask_party,start:"
msgid "Continue"
msgstr "Continuer"
-msgctxt "wizard_button:purchase.request.create_purchase_request,init,create:0"
-msgid "Create"
-msgstr "Créer"
-
-msgctxt "wizard_button:purchase.request.create_purchase_request,init,end:0"
+msgctxt "wizard_button:purchase.request.create_purchase,ask_term,end:"
msgid "Cancel"
msgstr "Annuler"
+
+msgctxt "wizard_button:purchase.request.create_purchase,ask_term,start:"
+msgid "Continue"
+msgstr "Continuer"
diff --git a/locale/nl_NL.po b/locale/nl_NL.po
index 9303255..82666fb 100644
--- a/locale/nl_NL.po
+++ b/locale/nl_NL.po
@@ -2,191 +2,251 @@
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
-msgctxt "error:purchase.request.create_purchase:0"
+msgctxt "error:purchase.request.create_purchase:"
msgid "Purchase price is missing for product: %s (id: %s)!"
msgstr ""
-msgctxt "error:purchase.request.create_purchase:0"
+msgctxt "error:purchase.request.create_purchase:"
msgid "This price is necessary for creating purchase."
msgstr ""
-msgctxt "error:purchase.request:0"
+msgctxt "error:purchase.request:"
msgid "Purchase requests are only created by the system."
msgstr ""
-msgctxt "error:stock.order_point:0"
+msgctxt "error:purchase.request:"
+msgid "The requested quantity must be greater than 0"
+msgstr ""
+
+msgctxt "error:stock.order_point:"
msgid "Maximal quantity must be bigger than Minimal quantity"
msgstr ""
-msgctxt "error:stock.order_point:0"
+msgctxt "error:stock.order_point:"
msgid "Only one order point is allowed for each product-location pair."
msgstr ""
-msgctxt "error:stock.order_point:0"
+msgctxt "error:stock.order_point:"
msgid ""
"You can not define two order points on the same product with opposite "
"locations."
msgstr ""
-msgctxt "field:product.product,order_points:0"
+msgctxt "field:product.product,order_points:"
msgid "Order Points"
msgstr ""
#, fuzzy
-msgctxt "field:purchase.request,company:0"
+msgctxt "field:purchase.request,company:"
msgid "Company"
msgstr "Bedrijf"
-msgctxt "field:purchase.request,computed_quantity:0"
+msgctxt "field:purchase.request,computed_quantity:"
msgid "Computed Quantity"
msgstr ""
-msgctxt "field:purchase.request,computed_uom:0"
+msgctxt "field:purchase.request,computed_uom:"
msgid "Computed UOM"
msgstr ""
-msgctxt "field:purchase.request,origin:0"
+msgctxt "field:purchase.request,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:purchase.request,create_uid:"
+msgid "Create User"
+msgstr ""
+
+msgctxt "field:purchase.request,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:purchase.request,origin:"
msgid "Origin"
msgstr ""
#, fuzzy
-msgctxt "field:purchase.request,party:0"
+msgctxt "field:purchase.request,party:"
msgid "Party"
msgstr "Relaties"
#, fuzzy
-msgctxt "field:purchase.request,product:0"
+msgctxt "field:purchase.request,product:"
msgid "Product"
msgstr "Producten"
-msgctxt "field:purchase.request,purchase:0"
+msgctxt "field:purchase.request,purchase:"
msgid "Purchase"
msgstr ""
-msgctxt "field:purchase.request,purchase_date:0"
+msgctxt "field:purchase.request,purchase_date:"
msgid "Best Purchase Date"
msgstr ""
-msgctxt "field:purchase.request,purchase_line:0"
+msgctxt "field:purchase.request,purchase_line:"
msgid "Purchase Line"
msgstr ""
#, fuzzy
-msgctxt "field:purchase.request,quantity:0"
+msgctxt "field:purchase.request,quantity:"
msgid "Quantity"
msgstr "Hoeveelheid"
#, fuzzy
-msgctxt "field:purchase.request,rec_name:0"
+msgctxt "field:purchase.request,rec_name:"
msgid "Name"
msgstr "Naam bijlage"
#, fuzzy
-msgctxt "field:purchase.request,state:0"
+msgctxt "field:purchase.request,state:"
msgid "State"
msgstr "Status"
-msgctxt "field:purchase.request,stock_level:0"
+msgctxt "field:purchase.request,stock_level:"
msgid "Stock at Supply Date"
msgstr ""
-msgctxt "field:purchase.request,supply_date:0"
+msgctxt "field:purchase.request,supply_date:"
msgid "Expected Supply Date"
msgstr ""
-msgctxt "field:purchase.request,uom:0"
+msgctxt "field:purchase.request,uom:"
msgid "UOM"
msgstr ""
#, fuzzy
-msgctxt "field:purchase.request,warehouse:0"
+msgctxt "field:purchase.request,warehouse:"
msgid "Warehouse"
msgstr "Magazijn"
+msgctxt "field:purchase.request,warehouse_required:"
+msgid "Warehouse Required"
+msgstr ""
+
+msgctxt "field:purchase.request,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:purchase.request,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "field:purchase.request.create.start,id:"
+msgid "ID"
+msgstr ""
+
#, fuzzy
-msgctxt "field:purchase.request.create_purchase.ask_party,company:0"
+msgctxt "field:purchase.request.create_purchase.ask_party,company:"
msgid "Company"
msgstr "Bedrijf"
+msgctxt "field:purchase.request.create_purchase.ask_party,id:"
+msgid "ID"
+msgstr ""
+
#, fuzzy
-msgctxt "field:purchase.request.create_purchase.ask_party,party:0"
+msgctxt "field:purchase.request.create_purchase.ask_party,party:"
msgid "Supplier"
msgstr "Leverancier"
#, fuzzy
-msgctxt "field:purchase.request.create_purchase.ask_party,product:0"
+msgctxt "field:purchase.request.create_purchase.ask_party,product:"
msgid "Product"
msgstr "Producten"
#, fuzzy
-msgctxt "field:purchase.request.create_purchase.ask_term,company:0"
+msgctxt "field:purchase.request.create_purchase.ask_term,company:"
msgid "Company"
msgstr "Bedrijf"
+msgctxt "field:purchase.request.create_purchase.ask_term,id:"
+msgid "ID"
+msgstr ""
+
#, fuzzy
-msgctxt "field:purchase.request.create_purchase.ask_term,party:0"
+msgctxt "field:purchase.request.create_purchase.ask_term,party:"
msgid "Supplier"
msgstr "Leverancier"
#, fuzzy
-msgctxt "field:purchase.request.create_purchase.ask_term,payment_term:0"
+msgctxt "field:purchase.request.create_purchase.ask_term,payment_term:"
msgid "Payment Term"
msgstr "Betalingstermijn"
#, fuzzy
-msgctxt "field:stock.order_point,company:0"
+msgctxt "field:stock.order_point,company:"
msgid "Company"
msgstr "Bedrijf"
-msgctxt "field:stock.order_point,location:0"
+msgctxt "field:stock.order_point,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:stock.order_point,create_uid:"
+msgid "Create User"
+msgstr ""
+
+msgctxt "field:stock.order_point,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:stock.order_point,location:"
msgid "Location"
msgstr ""
-msgctxt "field:stock.order_point,max_quantity:0"
+msgctxt "field:stock.order_point,max_quantity:"
msgid "Maximal Quantity"
msgstr ""
-msgctxt "field:stock.order_point,min_quantity:0"
+msgctxt "field:stock.order_point,min_quantity:"
msgid "Minimal Quantity"
msgstr ""
#, fuzzy
-msgctxt "field:stock.order_point,product:0"
+msgctxt "field:stock.order_point,product:"
msgid "Product"
msgstr "Producten"
-msgctxt "field:stock.order_point,provisioning_location:0"
+msgctxt "field:stock.order_point,provisioning_location:"
msgid "Provisioning Location"
msgstr ""
#, fuzzy
-msgctxt "field:stock.order_point,rec_name:0"
+msgctxt "field:stock.order_point,rec_name:"
msgid "Name"
msgstr "Naam bijlage"
-msgctxt "field:stock.order_point,storage_location:0"
+msgctxt "field:stock.order_point,storage_location:"
msgid "Storage Location"
msgstr ""
#, fuzzy
-msgctxt "field:stock.order_point,type:0"
+msgctxt "field:stock.order_point,type:"
msgid "Type"
msgstr "Type"
#, fuzzy
-msgctxt "field:stock.order_point,unit:0"
+msgctxt "field:stock.order_point,unit:"
msgid "Unit"
msgstr "Eenheid"
#, fuzzy
-msgctxt "field:stock.order_point,unit_digits:0"
+msgctxt "field:stock.order_point,unit_digits:"
msgid "Unit Digits"
msgstr "Decimalen eenheid"
-msgctxt "field:stock.order_point,warehouse_location:0"
+msgctxt "field:stock.order_point,warehouse_location:"
msgid "Warehouse Location"
msgstr ""
+msgctxt "field:stock.order_point,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:stock.order_point,write_uid:"
+msgid "Write User"
+msgstr ""
+
msgctxt "model:ir.action,name:act_order_point_form"
msgid "Order Points"
msgstr ""
@@ -195,7 +255,7 @@ msgctxt "model:ir.action,name:act_purchase_form"
msgid "Purchases"
msgstr ""
-msgctxt "model:ir.action,name:act_purchase_request_create_purchase_request"
+msgctxt "model:ir.action,name:act_purchase_request_create"
msgid "Create Purchase Requests"
msgstr ""
@@ -219,14 +279,14 @@ msgctxt "model:ir.cron,name:cron_shipment_iternal"
msgid "Generate Internal Shipments"
msgstr ""
-msgctxt "model:ir.ui.menu,name:menu_create_purchase_request"
-msgid "Create Purchase Requests"
-msgstr ""
-
msgctxt "model:ir.ui.menu,name:menu_order_point_form"
msgid "Order Points"
msgstr ""
+msgctxt "model:ir.ui.menu,name:menu_purchase_request_create"
+msgid "Create Purchase Requests"
+msgstr ""
+
msgctxt "model:ir.ui.menu,name:menu_purchase_request_form"
msgid "Purchase Requests"
msgstr ""
@@ -235,20 +295,20 @@ msgctxt "model:ir.ui.menu,name:menu_purchase_request_form_draft"
msgid "Draft Purchase Requests"
msgstr ""
-msgctxt "model:purchase.request,name:0"
+msgctxt "model:purchase.request,name:"
msgid "Purchase Request"
msgstr ""
-msgctxt "model:purchase.request.create_purchase.ask_party,name:0"
-msgid "Create Purchase Ask Party"
+msgctxt "model:purchase.request.create.start,name:"
+msgid "Create Purchase Request"
msgstr ""
-msgctxt "model:purchase.request.create_purchase.ask_term,name:0"
-msgid "Create Purchase Ask Term"
+msgctxt "model:purchase.request.create_purchase.ask_party,name:"
+msgid "Create Purchase Ask Party"
msgstr ""
-msgctxt "model:purchase.request.create_purchase_request.init,name:0"
-msgid "Create Purchase Request Init"
+msgctxt "model:purchase.request.create_purchase.ask_term,name:"
+msgid "Create Purchase Ask Term"
msgstr ""
msgctxt "model:res.group,name:group_purchase_request"
@@ -263,109 +323,108 @@ msgctxt "model:res.user,name:user_generate_shipment_internal"
msgid "Cron Intenal Shipment"
msgstr ""
-msgctxt "model:stock.order_point,name:0"
+msgctxt "model:stock.order_point,name:"
msgid "Order Point"
msgstr ""
#, fuzzy
-msgctxt "selection:purchase.request,state:0"
+msgctxt "selection:purchase.request,state:"
msgid "Cancel"
msgstr "Annuleren"
#, fuzzy
-msgctxt "selection:purchase.request,state:0"
+msgctxt "selection:purchase.request,state:"
msgid "Done"
msgstr "Klaar"
#, fuzzy
-msgctxt "selection:purchase.request,state:0"
+msgctxt "selection:purchase.request,state:"
msgid "Draft"
msgstr "Concept"
-msgctxt "selection:purchase.request,state:0"
+msgctxt "selection:purchase.request,state:"
msgid "Purchased"
msgstr ""
-msgctxt "selection:stock.order_point,type:0"
+msgctxt "selection:stock.order_point,type:"
msgid "Internal"
msgstr ""
-msgctxt "selection:stock.order_point,type:0"
+msgctxt "selection:stock.order_point,type:"
msgid "Purchase"
msgstr ""
-msgctxt "view:purchase.request.create_purchase.ask_party:0"
-msgid "Create Purchase: Missing Supplier"
+msgctxt "view:purchase.request.create.start:"
+msgid "Create Purchase Request"
msgstr ""
-msgctxt "view:purchase.request.create_purchase.ask_term:0"
-msgid "Create Purchase: Missing Payment Term"
+msgctxt "view:purchase.request.create.start:"
+msgid "Create Purchase Request?"
msgstr ""
-msgctxt "view:purchase.request.create_purchase_request.init:0"
-msgid "Create Purchase Request"
+msgctxt "view:purchase.request.create_purchase.ask_party:"
+msgid "Create Purchase: Missing Supplier"
msgstr ""
-msgctxt "view:purchase.request.create_purchase_request.init:0"
-msgid "Create Purchase Request?"
+msgctxt "view:purchase.request.create_purchase.ask_term:"
+msgid "Create Purchase: Missing Payment Term"
msgstr ""
-msgctxt "view:purchase.request:0"
+msgctxt "view:purchase.request:"
msgid "Product Info"
msgstr ""
-msgctxt "view:purchase.request:0"
+msgctxt "view:purchase.request:"
msgid "Purchase Request"
msgstr ""
-msgctxt "view:purchase.request:0"
+msgctxt "view:purchase.request:"
msgid "Purchase Requests"
msgstr ""
-msgctxt "view:purchase.request:0"
+msgctxt "view:purchase.request:"
msgid "Supply Info"
msgstr ""
-msgctxt "view:stock.order_point:0"
+msgctxt "view:stock.order_point:"
msgid "Order Point"
msgstr ""
-msgctxt "view:stock.order_point:0"
+msgctxt "view:stock.order_point:"
msgid "Order Point Type"
msgstr ""
-msgctxt "view:stock.order_point:0"
+msgctxt "view:stock.order_point:"
msgid "Order Points"
msgstr ""
-msgctxt "view:stock.order_point:0"
+msgctxt "view:stock.order_point:"
msgid "Product Info"
msgstr ""
+msgctxt "wizard_button:purchase.request.create,start,create_:"
+msgid "Create"
+msgstr ""
+
#, fuzzy
-msgctxt "wizard_button:purchase.request.create_purchase,ask_user_party,end:0"
+msgctxt "wizard_button:purchase.request.create,start,end:"
msgid "Cancel"
msgstr "Annuleren"
-msgctxt "wizard_button:purchase.request.create_purchase,ask_user_party,init:0"
-msgid "Continue"
-msgstr ""
-
#, fuzzy
-msgctxt "wizard_button:purchase.request.create_purchase,ask_user_term,end:0"
+msgctxt "wizard_button:purchase.request.create_purchase,ask_party,end:"
msgid "Cancel"
msgstr "Annuleren"
-msgctxt "wizard_button:purchase.request.create_purchase,ask_user_term,init:0"
+msgctxt "wizard_button:purchase.request.create_purchase,ask_party,start:"
msgid "Continue"
msgstr ""
#, fuzzy
-msgctxt "wizard_button:purchase.request.create_purchase_request,init,create:0"
-msgid "Create"
-msgstr "Aanmaken"
-
-#, fuzzy
-msgctxt "wizard_button:purchase.request.create_purchase_request,init,end:0"
+msgctxt "wizard_button:purchase.request.create_purchase,ask_term,end:"
msgid "Cancel"
msgstr "Annuleren"
+
+msgctxt "wizard_button:purchase.request.create_purchase,ask_term,start:"
+msgid "Continue"
+msgstr ""
diff --git a/locale/ru_RU.po b/locale/ru_RU.po
index a441169..ca51303 100644
--- a/locale/ru_RU.po
+++ b/locale/ru_RU.po
@@ -2,192 +2,252 @@
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
-msgctxt "error:purchase.request.create_purchase:0"
+msgctxt "error:purchase.request.create_purchase:"
msgid "Purchase price is missing for product: %s (id: %s)!"
msgstr ""
-msgctxt "error:purchase.request.create_purchase:0"
+msgctxt "error:purchase.request.create_purchase:"
msgid "This price is necessary for creating purchase."
msgstr ""
-msgctxt "error:purchase.request:0"
+msgctxt "error:purchase.request:"
msgid "Purchase requests are only created by the system."
msgstr ""
-msgctxt "error:stock.order_point:0"
+msgctxt "error:purchase.request:"
+msgid "The requested quantity must be greater than 0"
+msgstr ""
+
+msgctxt "error:stock.order_point:"
msgid "Maximal quantity must be bigger than Minimal quantity"
msgstr ""
-msgctxt "error:stock.order_point:0"
+msgctxt "error:stock.order_point:"
msgid "Only one order point is allowed for each product-location pair."
msgstr ""
-msgctxt "error:stock.order_point:0"
+msgctxt "error:stock.order_point:"
msgid ""
"You can not define two order points on the same product with opposite "
"locations."
msgstr ""
-msgctxt "field:product.product,order_points:0"
+msgctxt "field:product.product,order_points:"
msgid "Order Points"
msgstr ""
#, fuzzy
-msgctxt "field:purchase.request,company:0"
+msgctxt "field:purchase.request,company:"
msgid "Company"
msgstr "Учет.орг."
-msgctxt "field:purchase.request,computed_quantity:0"
+msgctxt "field:purchase.request,computed_quantity:"
msgid "Computed Quantity"
msgstr ""
-msgctxt "field:purchase.request,computed_uom:0"
+msgctxt "field:purchase.request,computed_uom:"
msgid "Computed UOM"
msgstr ""
-msgctxt "field:purchase.request,origin:0"
+msgctxt "field:purchase.request,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:purchase.request,create_uid:"
+msgid "Create User"
+msgstr ""
+
+msgctxt "field:purchase.request,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:purchase.request,origin:"
msgid "Origin"
msgstr ""
#, fuzzy
-msgctxt "field:purchase.request,party:0"
+msgctxt "field:purchase.request,party:"
msgid "Party"
msgstr "Организации"
#, fuzzy
-msgctxt "field:purchase.request,product:0"
+msgctxt "field:purchase.request,product:"
msgid "Product"
msgstr "Товарно материальные ценности (ТМЦ)"
-msgctxt "field:purchase.request,purchase:0"
+msgctxt "field:purchase.request,purchase:"
msgid "Purchase"
msgstr ""
-msgctxt "field:purchase.request,purchase_date:0"
+msgctxt "field:purchase.request,purchase_date:"
msgid "Best Purchase Date"
msgstr ""
-msgctxt "field:purchase.request,purchase_line:0"
+msgctxt "field:purchase.request,purchase_line:"
msgid "Purchase Line"
msgstr ""
#, fuzzy
-msgctxt "field:purchase.request,quantity:0"
+msgctxt "field:purchase.request,quantity:"
msgid "Quantity"
msgstr "Кол-во"
#, fuzzy
-msgctxt "field:purchase.request,rec_name:0"
+msgctxt "field:purchase.request,rec_name:"
msgid "Name"
msgstr "Наименование"
#, fuzzy
-msgctxt "field:purchase.request,state:0"
+msgctxt "field:purchase.request,state:"
msgid "State"
msgstr "Статус"
-msgctxt "field:purchase.request,stock_level:0"
+msgctxt "field:purchase.request,stock_level:"
msgid "Stock at Supply Date"
msgstr ""
-msgctxt "field:purchase.request,supply_date:0"
+msgctxt "field:purchase.request,supply_date:"
msgid "Expected Supply Date"
msgstr ""
#, fuzzy
-msgctxt "field:purchase.request,uom:0"
+msgctxt "field:purchase.request,uom:"
msgid "UOM"
msgstr "Ед.изм."
#, fuzzy
-msgctxt "field:purchase.request,warehouse:0"
+msgctxt "field:purchase.request,warehouse:"
msgid "Warehouse"
msgstr "Товарный склад"
+msgctxt "field:purchase.request,warehouse_required:"
+msgid "Warehouse Required"
+msgstr ""
+
+msgctxt "field:purchase.request,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:purchase.request,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "field:purchase.request.create.start,id:"
+msgid "ID"
+msgstr ""
+
#, fuzzy
-msgctxt "field:purchase.request.create_purchase.ask_party,company:0"
+msgctxt "field:purchase.request.create_purchase.ask_party,company:"
msgid "Company"
msgstr "Учет.орг."
+msgctxt "field:purchase.request.create_purchase.ask_party,id:"
+msgid "ID"
+msgstr ""
+
#, fuzzy
-msgctxt "field:purchase.request.create_purchase.ask_party,party:0"
+msgctxt "field:purchase.request.create_purchase.ask_party,party:"
msgid "Supplier"
msgstr "Поставщик"
#, fuzzy
-msgctxt "field:purchase.request.create_purchase.ask_party,product:0"
+msgctxt "field:purchase.request.create_purchase.ask_party,product:"
msgid "Product"
msgstr "Товарно материальные ценности (ТМЦ)"
#, fuzzy
-msgctxt "field:purchase.request.create_purchase.ask_term,company:0"
+msgctxt "field:purchase.request.create_purchase.ask_term,company:"
msgid "Company"
msgstr "Учет.орг."
+msgctxt "field:purchase.request.create_purchase.ask_term,id:"
+msgid "ID"
+msgstr ""
+
#, fuzzy
-msgctxt "field:purchase.request.create_purchase.ask_term,party:0"
+msgctxt "field:purchase.request.create_purchase.ask_term,party:"
msgid "Supplier"
msgstr "Поставщик"
-msgctxt "field:purchase.request.create_purchase.ask_term,payment_term:0"
+msgctxt "field:purchase.request.create_purchase.ask_term,payment_term:"
msgid "Payment Term"
msgstr ""
#, fuzzy
-msgctxt "field:stock.order_point,company:0"
+msgctxt "field:stock.order_point,company:"
msgid "Company"
msgstr "Учет.орг."
+msgctxt "field:stock.order_point,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:stock.order_point,create_uid:"
+msgid "Create User"
+msgstr ""
+
+msgctxt "field:stock.order_point,id:"
+msgid "ID"
+msgstr ""
+
#, fuzzy
-msgctxt "field:stock.order_point,location:0"
+msgctxt "field:stock.order_point,location:"
msgid "Location"
msgstr "Местоположение"
-msgctxt "field:stock.order_point,max_quantity:0"
+msgctxt "field:stock.order_point,max_quantity:"
msgid "Maximal Quantity"
msgstr ""
-msgctxt "field:stock.order_point,min_quantity:0"
+msgctxt "field:stock.order_point,min_quantity:"
msgid "Minimal Quantity"
msgstr ""
#, fuzzy
-msgctxt "field:stock.order_point,product:0"
+msgctxt "field:stock.order_point,product:"
msgid "Product"
msgstr "Товарно материальные ценности (ТМЦ)"
-msgctxt "field:stock.order_point,provisioning_location:0"
+msgctxt "field:stock.order_point,provisioning_location:"
msgid "Provisioning Location"
msgstr ""
#, fuzzy
-msgctxt "field:stock.order_point,rec_name:0"
+msgctxt "field:stock.order_point,rec_name:"
msgid "Name"
msgstr "Наименование"
-msgctxt "field:stock.order_point,storage_location:0"
+msgctxt "field:stock.order_point,storage_location:"
msgid "Storage Location"
msgstr ""
#, fuzzy
-msgctxt "field:stock.order_point,type:0"
+msgctxt "field:stock.order_point,type:"
msgid "Type"
msgstr "Тип"
#, fuzzy
-msgctxt "field:stock.order_point,unit:0"
+msgctxt "field:stock.order_point,unit:"
msgid "Unit"
msgstr "Штука"
#, fuzzy
-msgctxt "field:stock.order_point,unit_digits:0"
+msgctxt "field:stock.order_point,unit_digits:"
msgid "Unit Digits"
msgstr "Группа цифр"
-msgctxt "field:stock.order_point,warehouse_location:0"
+msgctxt "field:stock.order_point,warehouse_location:"
msgid "Warehouse Location"
msgstr ""
+msgctxt "field:stock.order_point,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:stock.order_point,write_uid:"
+msgid "Write User"
+msgstr ""
+
msgctxt "model:ir.action,name:act_order_point_form"
msgid "Order Points"
msgstr ""
@@ -196,7 +256,7 @@ msgctxt "model:ir.action,name:act_purchase_form"
msgid "Purchases"
msgstr ""
-msgctxt "model:ir.action,name:act_purchase_request_create_purchase_request"
+msgctxt "model:ir.action,name:act_purchase_request_create"
msgid "Create Purchase Requests"
msgstr ""
@@ -220,14 +280,14 @@ msgctxt "model:ir.cron,name:cron_shipment_iternal"
msgid "Generate Internal Shipments"
msgstr ""
-msgctxt "model:ir.ui.menu,name:menu_create_purchase_request"
-msgid "Create Purchase Requests"
-msgstr ""
-
msgctxt "model:ir.ui.menu,name:menu_order_point_form"
msgid "Order Points"
msgstr ""
+msgctxt "model:ir.ui.menu,name:menu_purchase_request_create"
+msgid "Create Purchase Requests"
+msgstr ""
+
msgctxt "model:ir.ui.menu,name:menu_purchase_request_form"
msgid "Purchase Requests"
msgstr ""
@@ -236,20 +296,20 @@ msgctxt "model:ir.ui.menu,name:menu_purchase_request_form_draft"
msgid "Draft Purchase Requests"
msgstr ""
-msgctxt "model:purchase.request,name:0"
+msgctxt "model:purchase.request,name:"
msgid "Purchase Request"
msgstr ""
-msgctxt "model:purchase.request.create_purchase.ask_party,name:0"
-msgid "Create Purchase Ask Party"
+msgctxt "model:purchase.request.create.start,name:"
+msgid "Create Purchase Request"
msgstr ""
-msgctxt "model:purchase.request.create_purchase.ask_term,name:0"
-msgid "Create Purchase Ask Term"
+msgctxt "model:purchase.request.create_purchase.ask_party,name:"
+msgid "Create Purchase Ask Party"
msgstr ""
-msgctxt "model:purchase.request.create_purchase_request.init,name:0"
-msgid "Create Purchase Request Init"
+msgctxt "model:purchase.request.create_purchase.ask_term,name:"
+msgid "Create Purchase Ask Term"
msgstr ""
msgctxt "model:res.group,name:group_purchase_request"
@@ -264,108 +324,108 @@ msgctxt "model:res.user,name:user_generate_shipment_internal"
msgid "Cron Intenal Shipment"
msgstr ""
-msgctxt "model:stock.order_point,name:0"
+msgctxt "model:stock.order_point,name:"
msgid "Order Point"
msgstr ""
#, fuzzy
-msgctxt "selection:purchase.request,state:0"
+msgctxt "selection:purchase.request,state:"
msgid "Cancel"
msgstr "Отменить"
#, fuzzy
-msgctxt "selection:purchase.request,state:0"
+msgctxt "selection:purchase.request,state:"
msgid "Done"
msgstr "Выполнено"
#, fuzzy
-msgctxt "selection:purchase.request,state:0"
+msgctxt "selection:purchase.request,state:"
msgid "Draft"
msgstr "Черновик"
-msgctxt "selection:purchase.request,state:0"
+msgctxt "selection:purchase.request,state:"
msgid "Purchased"
msgstr ""
-msgctxt "selection:stock.order_point,type:0"
+msgctxt "selection:stock.order_point,type:"
msgid "Internal"
msgstr ""
-msgctxt "selection:stock.order_point,type:0"
+msgctxt "selection:stock.order_point,type:"
msgid "Purchase"
msgstr ""
-msgctxt "view:purchase.request.create_purchase.ask_party:0"
-msgid "Create Purchase: Missing Supplier"
+msgctxt "view:purchase.request.create.start:"
+msgid "Create Purchase Request"
msgstr ""
-msgctxt "view:purchase.request.create_purchase.ask_term:0"
-msgid "Create Purchase: Missing Payment Term"
+msgctxt "view:purchase.request.create.start:"
+msgid "Create Purchase Request?"
msgstr ""
-msgctxt "view:purchase.request.create_purchase_request.init:0"
-msgid "Create Purchase Request"
+msgctxt "view:purchase.request.create_purchase.ask_party:"
+msgid "Create Purchase: Missing Supplier"
msgstr ""
-msgctxt "view:purchase.request.create_purchase_request.init:0"
-msgid "Create Purchase Request?"
+msgctxt "view:purchase.request.create_purchase.ask_term:"
+msgid "Create Purchase: Missing Payment Term"
msgstr ""
-msgctxt "view:purchase.request:0"
+msgctxt "view:purchase.request:"
msgid "Product Info"
msgstr ""
-msgctxt "view:purchase.request:0"
+msgctxt "view:purchase.request:"
msgid "Purchase Request"
msgstr ""
-msgctxt "view:purchase.request:0"
+msgctxt "view:purchase.request:"
msgid "Purchase Requests"
msgstr ""
-msgctxt "view:purchase.request:0"
+msgctxt "view:purchase.request:"
msgid "Supply Info"
msgstr ""
-msgctxt "view:stock.order_point:0"
+msgctxt "view:stock.order_point:"
msgid "Order Point"
msgstr ""
-msgctxt "view:stock.order_point:0"
+msgctxt "view:stock.order_point:"
msgid "Order Point Type"
msgstr ""
-msgctxt "view:stock.order_point:0"
+msgctxt "view:stock.order_point:"
msgid "Order Points"
msgstr ""
-msgctxt "view:stock.order_point:0"
+msgctxt "view:stock.order_point:"
msgid "Product Info"
msgstr ""
+msgctxt "wizard_button:purchase.request.create,start,create_:"
+msgid "Create"
+msgstr ""
+
#, fuzzy
-msgctxt "wizard_button:purchase.request.create_purchase,ask_user_party,end:0"
+msgctxt "wizard_button:purchase.request.create,start,end:"
msgid "Cancel"
msgstr "Отменить"
-msgctxt "wizard_button:purchase.request.create_purchase,ask_user_party,init:0"
-msgid "Continue"
-msgstr ""
-
#, fuzzy
-msgctxt "wizard_button:purchase.request.create_purchase,ask_user_term,end:0"
+msgctxt "wizard_button:purchase.request.create_purchase,ask_party,end:"
msgid "Cancel"
msgstr "Отменить"
-msgctxt "wizard_button:purchase.request.create_purchase,ask_user_term,init:0"
+msgctxt "wizard_button:purchase.request.create_purchase,ask_party,start:"
msgid "Continue"
msgstr ""
-msgctxt "wizard_button:purchase.request.create_purchase_request,init,create:0"
-msgid "Create"
-msgstr ""
-
#, fuzzy
-msgctxt "wizard_button:purchase.request.create_purchase_request,init,end:0"
+msgctxt "wizard_button:purchase.request.create_purchase,ask_term,end:"
msgid "Cancel"
msgstr "Отменить"
+
+msgctxt "wizard_button:purchase.request.create_purchase,ask_term,start:"
+msgid "Continue"
+msgstr ""
diff --git a/order_point.py b/order_point.py
index 4e50523..1140d5d 100644
--- a/order_point.py
+++ b/order_point.py
@@ -1,10 +1,10 @@
#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 trytond.model import ModelView, ModelSQL, fields
-from trytond.wizard import Wizard
from trytond.pyson import If, Equal, Eval, Not, In, Get
from trytond.transaction import Transaction
from trytond.pool import Pool
+from trytond.backend import TableHandler
class OrderPoint(ModelSQL, ModelView):
@@ -17,16 +17,17 @@ class OrderPoint(ModelSQL, ModelView):
_description = "Order Point"
product = fields.Many2One('product.product', 'Product', required=True,
- select=1,
+ select=True,
domain=[
- ('type', '=', 'stockable'),
+ ('type', '=', 'goods'),
+ ('consumable', '=', False),
('purchasable', 'in', If(Equal(Eval('type'), 'purchase'),
[True], [True, False])),
],
depends=['type'],
on_change=['product'])
warehouse_location = fields.Many2One('stock.location',
- 'Warehouse Location', select=1,
+ 'Warehouse Location', select=True,
domain=[('type', '=', 'warehouse')],
states={
'invisible': Not(Equal(Eval('type'), 'purchase')),
@@ -34,7 +35,7 @@ class OrderPoint(ModelSQL, ModelView):
},
depends=['type'])
storage_location = fields.Many2One('stock.location', 'Storage Location',
- select=1,
+ select=True,
domain=[('type', '=', 'storage')],
states={
'invisible': Not(Equal(Eval('type'), 'internal')),
@@ -54,7 +55,7 @@ class OrderPoint(ModelSQL, ModelView):
type = fields.Selection(
[('internal', 'Internal'),
('purchase', 'Purchase')],
- 'Type', select=1, required=True)
+ 'Type', select=True, required=True)
min_quantity = fields.Float('Minimal Quantity', required=True,
digits=(16, Eval('unit_digits', 2)), depends=['unit_digits'])
max_quantity = fields.Float('Maximal Quantity', required=True,
@@ -75,15 +76,25 @@ class OrderPoint(ModelSQL, ModelView):
('check_uniqueness', 'unique_op'),
]
self._sql_constraints += [
- ('check_min_max_quantity',
- 'CHECK( max_quantity is null or min_quantity is null or max_quantity >= min_quantity )',
- 'Maximal quantity must be bigger than Minimal quantity'),
+ ('check_max_qty_greater_min_qty',
+ 'CHECK(max_quantity >= min_quantity)',
+ 'Maximal quantity must be bigger than Minimal quantity'),
]
- self._error_messages.update(
- {'unique_op': 'Only one order point is allowed '\
- 'for each product-location pair.',
- 'concurrent_internal_op': 'You can not define two order points '\
- 'on the same product with opposite locations.',})
+ self._error_messages.update({
+ 'unique_op': 'Only one order point is allowed '\
+ 'for each product-location pair.',
+ 'concurrent_internal_op': 'You can not define ' \
+ 'two order points on the same product ' \
+ 'with opposite locations.',
+ })
+
+ def init(self, module_name):
+ cursor = Transaction().cursor
+ # Migration from 2.2
+ table = TableHandler(cursor, self, module_name)
+ table.drop_constraint('check_min_max_quantity')
+
+ super(OrderPoint, self).init(module_name)
def default_type(self):
return "purchase"
@@ -91,7 +102,7 @@ class OrderPoint(ModelSQL, ModelView):
def on_change_product(self, vals):
product_obj = Pool().get('product.product')
res = {
- 'unit': False,
+ 'unit': None,
'unit.rec_name': '',
'unit_digits': 2,
}
@@ -121,7 +132,7 @@ class OrderPoint(ModelSQL, ModelView):
same product and same company.
"""
internal_ids = self.search([
- ('id', 'in', ids),
+ ('id', 'in', ids),
('type', '=', 'internal'),
])
if not internal_ids:
@@ -139,8 +150,10 @@ class OrderPoint(ModelSQL, ModelView):
return not bool(ids)
def _type2field(self, type=None):
- t2f = {'purchase': 'warehouse_location',
- 'internal': 'storage_location',}
+ t2f = {
+ 'purchase': 'warehouse_location',
+ 'internal': 'storage_location',
+ }
if type == None:
return t2f
else:
@@ -156,10 +169,11 @@ class OrderPoint(ModelSQL, ModelView):
for op in self.browse(ids):
field = self._type2field(op.type)
arg = ['AND',
- ('product', '=', op.product.id),
- (field, '=', op[field].id),
- ('id', '!=', op.id),
- ('company', '=', op.company.id),]
+ ('product', '=', op.product.id),
+ (field, '=', op[field].id),
+ ('id', '!=', op.id),
+ ('company', '=', op.company.id),
+ ]
query.append(arg)
ids = self.search(query)
return not bool(ids)
@@ -183,7 +197,6 @@ class OrderPoint(ModelSQL, ModelView):
return res
def get_location(self, ids, name):
- location_obj = Pool().get('stock.location')
res = {}
for op in self.browse(ids):
if op.type == 'purchase':
@@ -191,7 +204,7 @@ class OrderPoint(ModelSQL, ModelView):
elif op.type == 'internal':
res[op.id] = op.storage_location.id
else:
- res[op.id] = False
+ res[op.id] = None
return res
def search_location(self, name, domain=None):
@@ -204,6 +217,6 @@ class OrderPoint(ModelSQL, ModelView):
return [('id', 'in', ids)]
def default_company(self):
- return Transaction().context.get('company') or False
+ return Transaction().context.get('company')
OrderPoint()
diff --git a/purchase_request.py b/purchase_request.py
index b141387..e54cad9 100644
--- a/purchase_request.py
+++ b/purchase_request.py
@@ -2,8 +2,12 @@
#this repository contains the full copyright notices and license terms.
import datetime
import operator
+from itertools import groupby
+from functools import partial
+from decimal import Decimal
from trytond.model import ModelView, ModelSQL, fields
-from trytond.wizard import Wizard
+from trytond.wizard import Wizard, StateView, StateAction, StateTransition, \
+ Button
from trytond.pyson import If, In, Eval, Get
from trytond.transaction import Transaction
from trytond.pool import Pool
@@ -14,22 +18,28 @@ class PurchaseRequest(ModelSQL, ModelView):
_name = 'purchase.request'
_description = __doc__
- product = fields.Many2One(
- 'product.product', 'Product', required=True, select=1, readonly=True,
- domain=[('purchasable', '=', True)])
- party = fields.Many2One('party.party', 'Party', select=1)
+ product = fields.Many2One('product.product', 'Product', required=True,
+ select=True, readonly=True, domain=[('purchasable', '=', True)])
+ party = fields.Many2One('party.party', 'Party', select=True)
quantity = fields.Float('Quantity', required=True)
- uom = fields.Many2One('product.uom', 'UOM', required=True, select=1)
+ uom = fields.Many2One('product.uom', 'UOM', required=True, select=True)
computed_quantity = fields.Float('Computed Quantity', readonly=True)
- computed_uom = fields.Many2One('product.uom', 'Computed UOM', readonly=True)
+ computed_uom = fields.Many2One('product.uom', 'Computed UOM',
+ readonly=True)
purchase_date = fields.Date('Best Purchase Date', readonly=True)
supply_date = fields.Date('Expected Supply Date', readonly=True)
- stock_level = fields.Float('Stock at Supply Date', readonly=True)
+ stock_level = fields.Float('Stock at Supply Date', readonly=True)
warehouse = fields.Many2One(
- 'stock.location', "Warehouse", required=True,
- domain=[('type', '=', 'warehouse')], readonly=True)
- purchase_line = fields.Many2One(
- 'purchase.line', 'Purchase Line',readonly=True)
+ 'stock.location', "Warehouse",
+ states={
+ 'required': Eval('warehouse_required', False),
+ },
+ domain=[('type', '=', 'warehouse')], depends=['warehouse_required'],
+ readonly=True)
+ warehouse_required = fields.Function(fields.Boolean('Warehouse Required'),
+ 'get_warehouse_required')
+ purchase_line = fields.Many2One('purchase.line', 'Purchase Line',
+ readonly=True)
purchase = fields.Function(fields.Many2One('purchase.purchase',
'Purchase'), 'get_purchase')
company = fields.Many2One('company.company', 'Company', required=True,
@@ -50,8 +60,13 @@ class PurchaseRequest(ModelSQL, ModelView):
super(PurchaseRequest, self).__init__()
self._order[0] = ('id', 'DESC')
self._error_messages.update({
- 'create_request': 'Purchase requests are only created by the system.',
- })
+ 'create_request': 'Purchase requests are only created ' \
+ 'by the system.',
+ })
+ self._sql_constraints += [
+ ('check_purchase_request_quantity', 'CHECK(quantity > 0)',
+ 'The requested quantity must be greater than 0'),
+ ]
def init(self, module_name):
cursor = Transaction().cursor
@@ -67,7 +82,10 @@ class PurchaseRequest(ModelSQL, ModelView):
ids = [ids]
res = {}
for pr in self.browse(ids):
- res[pr.id] = "%s@%s" % (pr.product.name, pr.warehouse.name)
+ if pr.warehouse:
+ res[pr.id] = "%s@%s" % (pr.product.name, pr.warehouse.name)
+ else:
+ res[pr.id] = pr.product.name
return res
def search_rec_name(self, name, clause):
@@ -79,7 +97,7 @@ class PurchaseRequest(ModelSQL, ModelView):
return res
def default_company(self):
- return Transaction().context.get('company') or False
+ return Transaction().context.get('company')
def get_purchase(self, ids, name):
res = {}
@@ -89,7 +107,7 @@ class PurchaseRequest(ModelSQL, ModelView):
if request.purchase_line:
res[request.id] = request.purchase_line.purchase.id
else:
- res[request.id] = False
+ res[request.id] = None
return res
def get_state(self, ids, name):
@@ -104,6 +122,12 @@ class PurchaseRequest(ModelSQL, ModelView):
res[request.id] = 'purchased'
return res
+ def get_warehouse_required(self, ids, name):
+ requireds = {}
+ for request in self.browse(ids):
+ requireds[request.id] = request.product.type in ('goods', 'assets')
+ return requireds
+
def origin_get(self):
model_obj = Pool().get('ir.model')
res = []
@@ -121,7 +145,6 @@ class PurchaseRequest(ModelSQL, ModelView):
"""
pool = Pool()
order_point_obj = pool.get('stock.order_point')
- purchase_request_obj = pool.get('purchase.request')
product_obj = pool.get('product.product')
location_obj = pool.get('stock.location')
user_obj = pool.get('res.user')
@@ -129,8 +152,8 @@ class PurchaseRequest(ModelSQL, ModelView):
# fetch warehouses:
warehouse_ids = location_obj.search([
- ('type','=','warehouse'),
- ])
+ ('type', '=', 'warehouse'),
+ ])
# fetch order points
order_point_ids = order_point_obj.search([
('type', '=', 'purchase'),
@@ -142,40 +165,48 @@ class PurchaseRequest(ModelSQL, ModelView):
(order_point.warehouse_location.id, order_point.product.id)
] = order_point
- # fetch stockable products
+ # fetch goods
product_ids = product_obj.search([
- ('type', '=', 'stockable'),
- ('purchasable', '=', True),
- ])
+ ('type', '=', 'goods'),
+ ('consumable', '=', False),
+ ('purchasable', '=', True),
+ ])
#aggregate product by minimum supply date
date2products = {}
for product in product_obj.browse(product_ids):
min_date, max_date = self.get_supply_dates(product)
- date2products.setdefault(min_date, []).append((product, max_date))
+ date2products.setdefault((min_date, max_date), []).append(product)
# compute requests
new_requests = []
- for min_date in date2products:
- product_ids = [x[0].id for x in date2products[min_date]]
- with Transaction().set_context(forecast=True,
- stock_date_end=min_date or datetime.date.max):
- pbl = product_obj.products_by_location(warehouse_ids,
- product_ids, with_childs=True, skip_zero=False)
- for product, max_date in date2products[min_date]:
+ cursor = Transaction().cursor
+ for dates, products in date2products.iteritems():
+ min_date, max_date = dates
+ for i in range(0, len(products), cursor.IN_MAX):
+ product_ids = [p.id for p in products[i:i + cursor.IN_MAX]]
+ with Transaction().set_context(forecast=True,
+ stock_date_end=min_date or datetime.date.max):
+ pbl = product_obj.products_by_location(warehouse_ids,
+ product_ids, with_childs=True, skip_zero=False)
for warehouse_id in warehouse_ids:
- qty = pbl.pop((warehouse_id, product.id))
- order_point = product2ops.get((warehouse_id, product.id))
+ min_date_qties = dict((x, pbl.pop((warehouse_id, x)))
+ for x in product_ids)
# Search for shortage between min-max
- shortage_date, product_quantity = self.get_shortage(
- warehouse_id, product.id, min_date, max_date,
- min_date_qty=qty, order_point=order_point)
-
- if shortage_date == None or product_quantity == None:
- continue
- # generate request values
- request_val = self.compute_request(product, warehouse_id,
- shortage_date, product_quantity, company, order_point)
- new_requests.append(request_val)
+ shortages = self.get_shortage(warehouse_id, product_ids,
+ min_date, max_date, min_date_qties=min_date_qties,
+ order_points=product2ops)
+
+ for product in products[i:i + cursor.IN_MAX]:
+ shortage_date, product_quantity = shortages[product.id]
+ if shortage_date == None or product_quantity == None:
+ continue
+ order_point = product2ops.get(
+ (warehouse_id, product.id))
+ # generate request values
+ request_val = self.compute_request(product,
+ warehouse_id, shortage_date, product_quantity,
+ company, order_point)
+ new_requests.append(request_val)
new_requests = self.compare_requests(new_requests)
@@ -189,12 +220,13 @@ class PurchaseRequest(ModelSQL, ModelView):
if new_req['supply_date'] == datetime.date.max:
new_req['supply_date'] = None
if new_req['quantity'] > 0.0:
- new_req.update({'product': new_req['product'].id,
- 'party': new_req['party'] and new_req['party'].id,
- 'uom': new_req['uom'].id,
- 'computed_uom': new_req['computed_uom'].id,
- 'company': new_req['company'].id
- })
+ new_req.update({
+ 'product': new_req['product'].id,
+ 'party': new_req['party'] and new_req['party'].id,
+ 'uom': new_req['uom'].id,
+ 'computed_uom': new_req['computed_uom'].id,
+ 'company': new_req['company'].id
+ })
request_obj.create(new_req)
def compare_requests(self, new_requests):
@@ -206,15 +238,14 @@ class PurchaseRequest(ModelSQL, ModelView):
pool = Pool()
uom_obj = pool.get('product.uom')
request_obj = pool.get('purchase.request')
- product_supplier_obj = pool.get('purchase.product_supplier')
req_ids = request_obj.search([
- ('purchase_line', '=', False),
+ ('purchase_line', '=', None),
('origin', 'like', 'stock.order_point,%'),
])
request_obj.delete(req_ids)
req_ids = request_obj.search([
- ('purchase_line.moves', '=', False),
+ ('purchase_line.moves', '=', None),
('purchase_line.purchase.state', '!=', 'cancel'),
('origin', 'like', 'stock.order_point,%'),
])
@@ -239,13 +270,15 @@ class PurchaseRequest(ModelSQL, ModelView):
existing_req.setdefault(
(request.product.id, request.warehouse.id),
- []).append({'supply_date': request.supply_date or datetime.date.max,
- 'quantity': quantity,
- 'uom': uom}
- )
+ []).append({
+ 'supply_date': \
+ request.supply_date or datetime.date.max,
+ 'quantity': quantity,
+ 'uom': uom,
+ })
for i in existing_req.itervalues():
- i.sort(lambda r,s: cmp(r['supply_date'],s['supply_date']))
+ i.sort(lambda r, s: cmp(r['supply_date'], s['supply_date']))
# Update new requests to take existing requests into account
new_requests.sort(key=operator.itemgetter('supply_date'))
@@ -255,7 +288,8 @@ class PurchaseRequest(ModelSQL, ModelView):
if old_req['supply_date'] <= new_req['supply_date']:
quantity = uom_obj.compute_qty(old_req['uom'],
old_req['quantity'], new_req['uom'])
- new_req['quantity'] = max(0.0, new_req['quantity'] - quantity)
+ new_req['quantity'] = max(0.0,
+ new_req['quantity'] - quantity)
new_req['computed_quantity'] = new_req['quantity']
old_req['quantity'] = uom_obj.compute_qty(new_req['uom'],
max(0.0, quantity - new_req['quantity']),
@@ -280,8 +314,13 @@ class PurchaseRequest(ModelSQL, ModelView):
today = date_obj.today()
for product_supplier in product.product_suppliers:
- supply_date, next_supply_date = product_supplier_obj.\
- compute_supply_date(product_supplier, date=today)
+ supply_date = product_supplier_obj.compute_supply_date(
+ product_supplier, date=today)
+ # TODO next_day is by default today + 1 but should depends
+ # on the CRON activity
+ next_day = today + datetime.timedelta(1)
+ next_supply_date = product_supplier_obj.compute_supply_date(
+ product_supplier, date=next_day)
if (not min_date) or supply_date < min_date:
min_date = supply_date
if (not max_date):
@@ -310,7 +349,7 @@ class PurchaseRequest(ModelSQL, ModelView):
today = date_obj.today()
for product_supplier in product.product_suppliers:
supply_date = product_supplier_obj.compute_supply_date(
- product_supplier, date=today)[0]
+ product_supplier, date=today)
sup_timedelta = date - supply_date
if not supplier:
supplier = product_supplier.party
@@ -350,7 +389,7 @@ class PurchaseRequest(ModelSQL, ModelView):
product.purchase_uom or product.default_uom)
if order_point:
- origin = 'stock.order_point,%s'%order_point.id
+ origin = 'stock.order_point,%s' % order_point.id
else:
origin = 'stock.order_point,-1'
return {'product': product,
@@ -367,54 +406,62 @@ class PurchaseRequest(ModelSQL, ModelView):
'origin': origin,
}
- def get_shortage(self, location_id, product_id, min_date,
- max_date, min_date_qty, order_point=None):
+ def get_shortage(self, location_id, product_ids, min_date, max_date,
+ min_date_qties, order_points):
"""
- Return between min_date and max_date the first date where the
- stock quantity is less than the minimal quantity and
- the smallest stock quantity in the interval
- or None if there is no date where stock quantity is less than
- the minimal quantity
- The minimal quantity comes from the order_point or is zero
-
- :param location_id: the stock location id
- :param produc_id: the product id
- :param min_date: the minimal date
- :param max_date: the maximal date
- :param min_date_qty: the stock quantity at the minimal date
- :param order_point: a BrowseRecord of the Order Point
- :return: a tuple with the date and the quantity
+ Return for each product the first date between min_date and max_date
+ where the stock quantity is less than the minimal quantity and the
+ smallest stock quantity in the interval or None if there is no date
+ where stock quantity is less than the minimal quantity.
+
+ The minimal quantity comes from the order point or is zero.
+
+ min_date_qty is the quantities for each products at the min_date.
+ order_points is a dictionary that links products to order point.
"""
product_obj = Pool().get('product.product')
- res_date = None
- res_qty = None
+ res_dates = {}
+ res_qties = {}
- min_quantity = order_point and order_point.min_quantity or 0.0
+ min_quantities = {}
+ for product_id in product_ids:
+ order_point = order_points.get((location_id, product_id))
+ if order_point:
+ min_quantities[product_id] = order_point.min_quantity
+ else:
+ min_quantities[product_id] = 0.0
current_date = min_date
- current_qty = min_date_qty
+ current_qties = min_date_qties.copy()
while (current_date < max_date) or (current_date == min_date):
- if current_qty < min_quantity:
- if not res_date:
- res_date = current_date
- if (not res_qty) or (current_qty < res_qty):
- res_qty = current_qty
+ for product_id in product_ids:
+ current_qty = current_qties[product_id]
+ min_quantity = min_quantities[product_id]
+ res_qty = res_qties.get(product_id)
+ res_date = res_dates.get(product_id)
+ if current_qty < min_quantity:
+ if not res_date:
+ res_dates[product_id] = current_date
+ if (not res_qty) or (current_qty < res_qty):
+ res_qties[product_id] = current_qty
with Transaction().set_context(stock_date_start=current_date,
stock_date_end=current_date):
- res = product_obj.products_by_location([location_id],
- [product_id], with_childs=True, skip_zero=False)
- for qty in res.itervalues():
- current_qty += qty
+ pbl = product_obj.products_by_location([location_id],
+ product_ids, with_childs=True, skip_zero=False)
+ for key, qty in pbl.iteritems():
+ _, product_id = key
+ current_qties[product_id] += qty
if current_date == datetime.date.max:
break
current_date += datetime.timedelta(1)
- return (res_date, res_qty)
+ return dict((x, (res_dates.get(x), res_qties.get(x)))
+ for x in product_ids)
def create(self, vals):
- for field_name in ('product', 'quantity', 'uom', 'warehouse', 'company'):
+ for field_name in ('product', 'quantity', 'uom', 'company'):
if not vals.get(field_name):
self.raise_user_error('create_request')
return super(PurchaseRequest, self).create(vals)
@@ -422,51 +469,32 @@ class PurchaseRequest(ModelSQL, ModelView):
PurchaseRequest()
-class CreatePurchaseRequestInit(ModelView):
- 'Create Purchase Request Init'
- _name = 'purchase.request.create_purchase_request.init'
+class CreatePurchaseRequestStart(ModelView):
+ 'Create Purchase Request'
+ _name = 'purchase.request.create.start'
_description = __doc__
-CreatePurchaseRequestInit()
+CreatePurchaseRequestStart()
class CreatePurchaseRequest(Wizard):
'Create Purchase Request'
- _name = 'purchase.request.create_purchase_request'
-
- states = {
- 'init': {
- 'result': {
- 'type': 'form',
- 'object': 'purchase.request.create_purchase_request.init',
- 'state': [
- ('end', 'Cancel', 'tryton-cancel'),
- ('create', 'Create', 'tryton-ok', True),
- ],
- },
- },
- 'create': {
- 'actions': ['_create_purchase_request'],
- 'result': {
- 'type': 'action',
- 'action': '_open',
- 'state': 'end',
- },
- },
- }
+ _name = 'purchase.request.create'
- def _create_purchase_request(self, data):
+ start = StateView('purchase.request.create.start',
+ 'stock_supply.purchase_request_create_start_view_form', [
+ Button('Cancel', 'end', 'tryton-cancel'),
+ Button('Create', 'create_', 'tryton-ok', default=True),
+ ])
+ create_ = StateAction('stock_supply.act_purchase_request_form_draft')
+
+ def do_create_(self, session, action):
purchase_request_obj = Pool().get('purchase.request')
purchase_request_obj.generate_requests()
- return {}
+ return action, {}
- def _open(self, data):
- pool = Pool()
- model_data_obj = pool.get('ir.model.data')
- act_window_obj = pool.get('ir.action.act_window')
- act_window_id = model_data_obj.get_id('stock_supply',
- 'act_purchase_request_form_draft')
- return act_window_obj.read(act_window_id)
+ def transition_create_(self, session):
+ return 'end'
CreatePurchaseRequest()
@@ -482,6 +510,7 @@ class CreatePurchaseAskTerm(ModelView):
CreatePurchaseAskTerm()
+
class CreatePurchaseAskParty(ModelView):
'Create Purchase Ask Party'
_name = 'purchase.request.create_purchase.ask_party'
@@ -492,165 +521,163 @@ class CreatePurchaseAskParty(ModelView):
CreatePurchaseAskParty()
+
class CreatePurchase(Wizard):
'Create Purchase'
_name = 'purchase.request.create_purchase'
- states = {
-
- 'init': {
- 'result': {
- 'type': 'choice',
- 'next_state': '_create_purchase',
- },
- },
-
-
- 'ask_user_party': {
- 'actions': ['_set_default_party'],
- 'result': {
- 'type': 'form',
- 'object': 'purchase.request.create_purchase.ask_party',
- 'state': [
- ('end', 'Cancel', 'tryton-cancel'),
- ('init', 'Continue', 'tryton-go-next', True),
- ],
- },
- },
-
- 'ask_user_term': {
- 'actions': ['_set_default_term'],
- 'result': {
- 'type': 'form',
- 'object': 'purchase.request.create_purchase.ask_term',
- 'state': [
- ('end', 'Cancel', 'tryton-cancel'),
- ('init', 'Continue', 'tryton-go-next', True),
- ],
- },
- },
-
- }
+ start = StateTransition()
+ ask_party = StateView('purchase.request.create_purchase.ask_party',
+ 'stock_supply.purchase_request_create_purchase_ask_party', [
+ Button('Cancel', 'end', 'tryton-cancel'),
+ Button('Continue', 'start', 'tryton-go-next', default=True),
+ ])
+ ask_term = StateView('purchase.request.create_purchase.ask_term',
+ 'stock_supply.purchase_request_create_purchase_ask_term_view_form', [
+ Button('Cancel', 'end', 'tryton-cancel'),
+ Button('Continue', 'start', 'tryton-go-next', default=True),
+ ])
def __init__(self):
super(CreatePurchase, self).__init__()
self._error_messages.update({
- 'missing_price': 'Purchase price is missing for product: %s (id: %s)!',
+ 'missing_price': 'Purchase price is missing for product: %s ' \
+ '(id: %s)!',
'please_update': 'This price is necessary for creating purchase.'
})
- def _set_default_party(self, data):
-
+ def default_ask_party(self, session, fields):
request_obj = Pool().get('purchase.request')
- requests = request_obj.browse(data['ids'])
+ requests = request_obj.browse(Transaction().context['active_ids'])
for request in requests:
if request.purchase_line:
continue
if not request.party:
- return {'product': request.product.id,'company': request.company.id}
-
- return {'product': request.product.id,'company': request.company.id}
-
- def _set_default_term(self, data):
+ return {
+ 'product': request.product.id,
+ 'company': request.company.id,
+ }
+ return {
+ 'product': request.product.id,
+ 'company': request.company.id,
+ }
+ def default_ask_term(self, session, fields):
request_obj = Pool().get('purchase.request')
- requests = request_obj.browse(data['ids'])
+ requests = request_obj.browse(Transaction().context['active_ids'])
for request in requests:
if (not request.party) or request.purchase_line:
continue
if not request.party.supplier_payment_term:
- return {'party': request.party.id,'company': request.company.id}
+ return {
+ 'party': request.party.id,
+ 'company': request.company.id,
+ }
+ return {
+ 'party': request.party.id,
+ 'company': request.company.id,
+ }
- return {'party': request.party.id,'company': request.company.id}
+ def _group_purchase_key(self, requests, request):
+ '''
+ The key to group lines by purchases
- def _create_purchase(self, data):
+ :param requests: a list of requests
+ :param request: the request
+
+ :return: a list of key-value as tuples of the purchase
+ '''
+ party_obj = Pool().get('party.party')
+
+ return (
+ ('company', request.company.id),
+ ('party', request.party.id),
+ ('payment_term', request.party.supplier_payment_term.id),
+ ('warehouse', request.warehouse.id),
+ # XXX use function field
+ ('currency', request.company.currency.id),
+ ('invoice_address', party_obj.address_get(request.party.id,
+ type='invoice')),
+ )
+
+ def transition_start(self, session):
pool = Pool()
request_obj = pool.get('purchase.request')
party_obj = pool.get('party.party')
purchase_obj = pool.get('purchase.purchase')
- product_obj = pool.get('product.product')
line_obj = pool.get('purchase.line')
date_obj = pool.get('ir.date')
- form = data['form']
- if form.get('product') and form.get('party') and \
- form.get('company'):
+ request_ids = Transaction().context['active_ids']
+
+ if (session.ask_party.product
+ and session.ask_party.party
+ and session.ask_party.company):
req_ids = request_obj.search([
- ('id', 'in', data['ids']),
- ('party', '=', False),
- ])
+ ('id', 'in', request_ids),
+ ('party', '=', None),
+ ])
if req_ids:
- request_obj.write(req_ids, {'party': form['party']})
-
- elif form.get('payment_term') and form.get('party') and \
- form.get('company'):
- with Transaction().set_context(company=form['company']):
- party_obj.write(form['party'],{
- 'supplier_payment_term': form['payment_term']
- })
+ request_obj.write(req_ids, {
+ 'party': session.ask_party.party.id,
+ })
+ session.ask_party.product = None
+ session.ask_party.party = None
+ session.ask_party.company = None
+ elif (session.ask_term.payment_term
+ and session.ask_term.party
+ and session.ask_term.company):
+ with Transaction().set_context(
+ company=session.ask_term.company.id):
+ party_obj.write(session.ask_term.party.id, {
+ 'supplier_payment_term': \
+ session.ask_term.payment_term.id,
+ })
+ session.ask_term.payment_term = None
+ session.ask_term.party = None
+ session.ask_term.company = None
req_ids = request_obj.search([
- ('id', 'in', data['ids']),
- ('purchase_line', '=', False),
- ('party', '=', False),
- ])
+ ('id', 'in', request_ids),
+ ('purchase_line', '=', None),
+ ('party', '=', None),
+ ])
if req_ids:
- return 'ask_user_party'
+ return 'ask_party'
today = date_obj.today()
- requests = request_obj.browse(data['ids'])
- purchases = {}
- # collect data
- for request in requests:
- if request.purchase_line:
- continue
-
- if not request.party.supplier_payment_term:
- return 'ask_user_term'
-
- key = (request.party.id, request.company.id, request.warehouse.id)
- if key not in purchases:
- if request.purchase_date and request.purchase_date >= today:
- purchase_date = request.purchase_date
- else:
+ requests = request_obj.browse(request_ids)
+
+ requests = [r for r in requests if not r.purchase_line]
+ if any(r for r in requests if not r.party.supplier_payment_term):
+ return 'ask_term'
+
+ keyfunc = partial(self._group_purchase_key, requests)
+ requests = sorted(requests, key=keyfunc)
+
+ with Transaction().set_user(0, set_context=True):
+ for key, grouped_requests in groupby(requests, key=keyfunc):
+ grouped_requests = list(grouped_requests)
+ try:
+ purchase_date = min(r.purchase_date
+ for r in grouped_requests
+ if r.purchase_date)
+ except ValueError:
purchase_date = today
- purchase = {
- 'company': request.company.id,
- 'party': request.party.id,
+ if purchase_date < today:
+ purchase_date = today
+ values = {
'purchase_date': purchase_date,
- 'payment_term': request.party.supplier_payment_term.id,
- 'warehouse': request.warehouse.id,
- 'currency': request.company.currency.id,
- 'invoice_address': party_obj.address_get(request.party.id,
- type='invoice'),
- 'lines': [],
}
-
- purchases[key] = purchase
- else:
- purchase = purchases[key]
-
- line = self.compute_purchase_line(request)
- purchase['lines'].append(line)
- if request.purchase_date:
- if purchase.get('purchase_date'):
- purchase['purchase_date'] = min(purchase['purchase_date'],
- request.purchase_date)
- else:
- purchase['purchase_date'] = request.purchase_date
-
- # Create all
- for purchase in purchases.itervalues():
- lines = purchase.pop('lines')
- with Transaction().set_user(0, set_context=True):
- purchase_id = purchase_obj.create(purchase)
- for line in lines:
- request_id = line.pop('request')
- line['purchase'] = purchase_id
- with Transaction().set_user(0):
- line_id = line_obj.create(line)
- request_obj.write(request_id, {'purchase_line': line_id})
-
+ values.update(dict(key))
+ purchase_id = purchase_obj.create(values)
+ for request in grouped_requests:
+ values = self.compute_purchase_line(request)
+ values['purchase'] = purchase_id
+ line_id = line_obj.create(values)
+ request_obj.write(request.id, {
+ 'purchase_line': line_id,
+ })
return 'end'
def _get_tax_rule_pattern(self, request):
@@ -665,15 +692,14 @@ class CreatePurchase(Wizard):
def compute_purchase_line(self, request):
pool = Pool()
- party_obj = pool.get('party.party')
product_obj = pool.get('product.product')
tax_rule_obj = pool.get('account.tax.rule')
+ line_obj = pool.get('purchase.line')
line = {
'product': request.product.id,
'unit': request.uom.id,
'quantity': request.quantity,
- 'request': request.id,
'description': request.product.name,
}
@@ -683,6 +709,8 @@ class CreatePurchase(Wizard):
currency=request.company.currency.id):
product_price = product_obj.get_purchase_price(
[request.product.id], request.quantity)[request.product.id]
+ product_price = product_price.quantize(
+ Decimal(1) / 10 ** line_obj.unit_price.digits[1])
if not product_price:
self.raise_user_error('missing_price', (request.product.name,
@@ -693,7 +721,7 @@ class CreatePurchase(Wizard):
for tax in request.product.supplier_taxes_used:
if request.party and request.party.supplier_tax_rule:
pattern = self._get_tax_rule_pattern(request)
- tax_id = tax_rule_obj.apply(request.party.supplier_tax_rule,
+ tax_id = tax_rule_obj.apply(request.party.supplier_tax_rule,
tax, pattern)
if tax_id:
taxes.append(tax_id)
diff --git a/purchase_request.xml b/purchase_request.xml
index 1ee5768..33c2ea2 100644
--- a/purchase_request.xml
+++ b/purchase_request.xml
@@ -112,13 +112,13 @@ this repository contains the full copyright notices and license terms. -->
<menuitem parent="menu_purchase_request_form" sequence="20"
action="act_purchase_request_form_draft" id="menu_purchase_request_form_draft"/>
- <record model="ir.action.wizard" id="act_purchase_request_create_purchase_request">
+ <record model="ir.action.wizard" id="act_purchase_request_create">
<field name="name">Create Purchase Requests</field>
- <field name="wiz_name">purchase.request.create_purchase_request</field>
+ <field name="wiz_name">purchase.request.create</field>
</record>
- <record model="ir.ui.view" id="create_purchase_request_init_view_form">
- <field name="model">purchase.request.create_purchase_request.init</field>
+ <record model="ir.ui.view" id="purchase_request_create_start_view_form">
+ <field name="model">purchase.request.create.start</field>
<field name="type">form</field>
<field name="arch" type="xml">
<![CDATA[
@@ -133,10 +133,10 @@ this repository contains the full copyright notices and license terms. -->
</record>
<menuitem parent="menu_purchase_request_form" sequence="10"
- action="act_purchase_request_create_purchase_request"
- id="menu_create_purchase_request"/>
+ action="act_purchase_request_create"
+ id="menu_purchase_request_create"/>
- <record model="ir.ui.view" id="purchase_request_create_purchase_ask_view_form">
+ <record model="ir.ui.view" id="purchase_request_create_purchase_ask_term_view_form">
<field name="model">purchase.request.create_purchase.ask_term</field>
<field name="type">form</field>
<field name="arch" type="xml">
diff --git a/setup.py b/setup.py
index ae31a93..fde7348 100644
--- a/setup.py
+++ b/setup.py
@@ -12,7 +12,7 @@ minor_version = int(minor_version)
requires = []
for dep in info.get('depends', []):
- if not re.match(r'(ir|res|workflow|webdav)(\W|$)', dep):
+ 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))
diff --git a/shipment.py b/shipment.py
index 89a73ee..c726e32 100644
--- a/shipment.py
+++ b/shipment.py
@@ -46,8 +46,8 @@ class ShipmentInternal(ModelSQL, ModelView):
location_ids.append(op.storage_location.id)
with Transaction().set_context(stock_date_end=today):
- pbl = product_obj.products_by_location(location_ids,
- list(id2product.iterkeys()), with_childs=True)
+ pbl = product_obj.products_by_location(location_ids,
+ list(id2product.iterkeys()), with_childs=True)
# Create a list of move to create
moves = {}
@@ -61,11 +61,12 @@ class ShipmentInternal(ModelSQL, ModelView):
# Compare with existing draft shipments
shipment_ids = self.search([
- ('state', '=', 'draft'), ['OR',
- ('planned_date', '<=', today),
- ('planned_date', '=', False),
- ],
- ])
+ ('state', '=', 'draft'),
+ ['OR',
+ ('planned_date', '<=', today),
+ ('planned_date', '=', None),
+ ],
+ ])
for shipment in self.browse(shipment_ids):
for move in shipment.moves:
key = (shipment.to_location.id,
@@ -73,16 +74,16 @@ class ShipmentInternal(ModelSQL, ModelView):
move.product.id)
if key not in moves:
continue
- quantity = uom_obj.compute_qty( move.uom, move.quantity,
+ quantity = uom_obj.compute_qty(move.uom, move.quantity,
id2product[move.product.id].default_uom)
moves[key] = max(0, moves[key] - quantity)
# Group moves by {from,to}_location
shipments = {}
- for key,qty in moves.iteritems():
+ for key, qty in moves.iteritems():
from_location, to_location, product = key
shipments.setdefault(
- (from_location, to_location),[]).append((product, qty))
+ (from_location, to_location), []).append((product, qty))
# Create shipments and moves
for shipment, moves in shipments.iteritems():
from_location, to_location = shipment
@@ -96,13 +97,15 @@ class ShipmentInternal(ModelSQL, ModelView):
product, qty = move
values['moves'].append(
('create',
- {'from_location': from_location,
- 'to_location': to_location,
- 'product': product,
- 'quantity': qty,
- 'uom': id2product[product].default_uom.id,
- 'company': user_record.company.id,}
- ))
+ {
+ 'from_location': from_location,
+ 'to_location': to_location,
+ 'product': product,
+ 'quantity': qty,
+ 'uom': id2product[product].default_uom.id,
+ 'company': user_record.company.id,
+ }
+ ))
self.create(values)
ShipmentInternal()
diff --git a/tests/__init__.py b/tests/__init__.py
index 53c66b5..19ea390 100644
--- a/tests/__init__.py
+++ b/tests/__init__.py
@@ -1,4 +1,4 @@
#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 test_stock_supply import suite
+from .test_stock_supply import suite
diff --git a/tests/test_stock_supply.py b/tests/test_stock_supply.py
index 139bd73..ce44ec0 100644
--- a/tests/test_stock_supply.py
+++ b/tests/test_stock_supply.py
@@ -2,15 +2,31 @@
#This file is part of Tryton. The COPYRIGHT file at the top level of
#this repository contains the full copyright notices and license terms.
-import sys, os
+import sys
+import os
DIR = os.path.abspath(os.path.normpath(os.path.join(__file__,
'..', '..', '..', '..', '..', 'trytond')))
if os.path.isdir(DIR):
sys.path.insert(0, os.path.dirname(DIR))
import unittest
+import datetime
+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.transaction import Transaction
+
+DATES = [
+ # purchase date, delivery time, supply date
+ (datetime.date(2011, 11, 21), 10, datetime.date(2011, 12, 1)),
+ (datetime.date(2011, 11, 21), 9, datetime.date(2011, 11, 30)),
+ (datetime.date(2011, 11, 21), 8, datetime.date(2011, 11, 29)),
+ (datetime.date(2011, 11, 21), 7, datetime.date(2011, 11, 28)),
+ (datetime.date(2011, 11, 21), 6, datetime.date(2011, 11, 27)),
+ (datetime.date(2011, 11, 21), 5, datetime.date(2011, 11, 26)),
+ (datetime.date(2011, 11, 21), 4, datetime.date(2011, 11, 25)),
+ ]
class StockSupplyTestCase(unittest.TestCase):
@@ -20,6 +36,15 @@ class StockSupplyTestCase(unittest.TestCase):
def setUp(self):
trytond.tests.test_tryton.install_module('stock_supply')
+ self.uom = POOL.get('product.uom')
+ self.uom.category = POOL.get('product.uom.category')
+ self.category = POOL.get('product.category')
+ self.product = POOL.get('product.product')
+ self.company = POOL.get('company.company')
+ self.party = POOL.get('party.party')
+ self.account = POOL.get('account.account')
+ self.product_supplier = POOL.get('purchase.product_supplier')
+ self.user = POOL.get('res.user')
def test0005views(self):
'''
@@ -33,8 +58,95 @@ class StockSupplyTestCase(unittest.TestCase):
'''
test_depends()
+ def test0010compute_supply_date(self):
+ '''
+ Test compute_supply_date.
+ '''
+ for purchase_date, delivery_time, supply_date in DATES:
+ with Transaction().start(DB_NAME, USER, context=CONTEXT):
+ product_supplier_id = self.create_product_supplier(
+ delivery_time)
+ product_supplier = self.product_supplier.browse(
+ product_supplier_id)
+ date = self.product_supplier.compute_supply_date(
+ product_supplier, purchase_date)
+ self.assertEqual(date, supply_date)
+
+ def test0020compute_purchase_date(self):
+ '''
+ Test compute_purchase_date.
+ '''
+ for purchase_date, delivery_time, supply_date in DATES:
+ with Transaction().start(DB_NAME, USER, context=CONTEXT):
+ product_supplier_id = self.create_product_supplier(
+ delivery_time)
+ product_supplier = self.product_supplier.browse(
+ product_supplier_id)
+ date = self.product_supplier.compute_purchase_date(
+ product_supplier, supply_date)
+ self.assertEqual(date, purchase_date)
+
+ def create_product_supplier(self, delivery_time):
+ '''
+ Create a Product with a Product Supplier
+
+ :param delivery_time: time in days needed to supply
+ :return: the id of the Product Supplier
+ '''
+ uom_category_id = self.uom.category.create({'name': 'Test'})
+ uom_id = self.uom.create({
+ 'name': 'Test',
+ 'symbol': 'T',
+ 'category': uom_category_id,
+ 'rate': 1.0,
+ 'factor': 1.0,
+ })
+ category_id = self.category.create({'name': 'ProdCategoryTest'})
+ product_id = self.product.create({
+ 'name': 'ProductTest',
+ 'default_uom': uom_id,
+ 'category': category_id,
+ 'account_category': True,
+ 'list_price': Decimal(0),
+ 'cost_price': Decimal(0),
+ })
+ company_id, = self.company.search([('name', '=', 'B2CK')])
+ self.user.write(USER, {
+ 'main_company': company_id,
+ 'company': company_id,
+ })
+ receivable_id, = self.account.search([
+ ('kind', '=', 'receivable'),
+ ('company', '=', company_id),
+ ])
+ payable_id, = self.account.search([
+ ('kind', '=', 'payable'),
+ ('company', '=', company_id),
+ ])
+ supplier_id = self.party.create({
+ 'name': 'supplier',
+ 'account_receivable': receivable_id,
+ 'account_payable': payable_id,
+ })
+ product_supplier_id = self.product_supplier.create({
+ 'product': product_id,
+ 'company': company_id,
+ 'party': supplier_id,
+ 'delivery_time': delivery_time,
+ })
+ return product_supplier_id
+
+
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)
+ from trytond.modules.account.tests import test_account
+ for test in test_account.suite():
+ if test not in suite:
+ suite.addTest(test)
suite.addTests(unittest.TestLoader().loadTestsFromTestCase(
StockSupplyTestCase))
return suite
diff --git a/trytond_stock_supply.egg-info/PKG-INFO b/trytond_stock_supply.egg-info/PKG-INFO
index b7f072a..7f31e66 100644
--- a/trytond_stock_supply.egg-info/PKG-INFO
+++ b/trytond_stock_supply.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
Metadata-Version: 1.0
Name: trytond-stock-supply
-Version: 2.2.0
+Version: 2.4.0
Summary: Supply Management Module with:
- Order point
- Purchase Request
@@ -13,7 +13,7 @@ Home-page: http://www.tryton.org/
Author: B2CK
Author-email: info at b2ck.com
License: GPL-3
-Download-URL: http://downloads.tryton.org/2.2/
+Download-URL: http://downloads.tryton.org/2.4/
Description: UNKNOWN
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
diff --git a/trytond_stock_supply.egg-info/SOURCES.txt b/trytond_stock_supply.egg-info/SOURCES.txt
index 8010040..177f898 100644
--- a/trytond_stock_supply.egg-info/SOURCES.txt
+++ b/trytond_stock_supply.egg-info/SOURCES.txt
@@ -18,8 +18,10 @@ shipment.xml
./tests/test_stock_supply.py
doc/index.rst
locale/bg_BG.po
+locale/ca_ES.po
locale/cs_CZ.po
locale/de_DE.po
+locale/es_AR.po
locale/es_CO.po
locale/es_ES.po
locale/fr_FR.po
diff --git a/trytond_stock_supply.egg-info/requires.txt b/trytond_stock_supply.egg-info/requires.txt
index 2d1aea0..aa9da2b 100644
--- a/trytond_stock_supply.egg-info/requires.txt
+++ b/trytond_stock_supply.egg-info/requires.txt
@@ -1,6 +1,6 @@
-trytond_product >= 2.2, < 2.3
-trytond_stock >= 2.2, < 2.3
-trytond_purchase >= 2.2, < 2.3
-trytond_party >= 2.2, < 2.3
-trytond_account >= 2.2, < 2.3
-trytond >= 2.2, < 2.3
\ No newline at end of file
+trytond_product >= 2.4, < 2.5
+trytond_stock >= 2.4, < 2.5
+trytond_purchase >= 2.4, < 2.5
+trytond_party >= 2.4, < 2.5
+trytond_account >= 2.4, < 2.5
+trytond >= 2.4, < 2.5
\ No newline at end of file
commit 1c3f291d2e94c9ff373395e9389a38dc5e46a801
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Sun Mar 25 15:28:18 2012 +0200
Adding Format header for DEP5.
diff --git a/debian/copyright b/debian/copyright
index 290eff7..d2ad74d 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -1,3 +1,5 @@
+Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+
Files: *
Copyright:
(C) 2008-2011 Cedric Krier
commit 4d94b05f4cf5e73e9674ac694c7a6f0dbda370a5
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Fri Feb 24 14:09:12 2012 +0100
Adding myself to copyright.
diff --git a/debian/copyright b/debian/copyright
index ddd8e8e..290eff7 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -6,7 +6,9 @@ Copyright:
License: GPL-3+
Files: debian/*
-Copyright: (C) 2009-2012 Daniel Baumann <daniel at debian.org>
+Copyright:
+ (C) 2009-2012 Daniel Baumann <daniel at debian.org>
+ (C) 2012 Mathias Behrle <mathiasb at m9s.biz>
License: GPL-3+
License: GPL-3+
commit e08d3f1bd43f7e8c84642e9b9ed3e7372400b889
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Fri Feb 24 14:01:04 2012 +0100
Updating year in copyright.
diff --git a/debian/copyright b/debian/copyright
index 753c790..ddd8e8e 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -6,7 +6,7 @@ Copyright:
License: GPL-3+
Files: debian/*
-Copyright: (C) 2009-2011 Daniel Baumann <daniel at debian.org>
+Copyright: (C) 2009-2012 Daniel Baumann <daniel at debian.org>
License: GPL-3+
License: GPL-3+
commit 6e0298620919738d66f36559bb13191f05aeade1
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Fri Feb 24 13:47:02 2012 +0100
Updating to Standards-Version: 3.9.3, no changes needed.
diff --git a/debian/control b/debian/control
index 6fdcdaf..b8561d4 100644
--- a/debian/control
+++ b/debian/control
@@ -5,7 +5,7 @@ Maintainer: Debian Tryton Maintainers <tryton at lists.debian-maintainers.org>
Uploaders: Daniel Baumann <daniel at debian.org>, Mathias Behrle <mathiasb at m9s.biz>
Dm-Upload-Allowed: yes
Build-Depends: debhelper (>= 8), python (>= 2.6.6-3~), python-setuptools
-Standards-Version: 3.9.2
+Standards-Version: 3.9.3
Homepage: http://www.tryton.org/
Vcs-Browser: http://git.debian-maintainers.org/?p=tryton/tryton-modules-stock-supply.git
Vcs-Git: git://git.debian-maintainers.org/git/tryton/tryton-modules-stock-supply.git
commit 7531a9bede3267eb49399c78d7d363939db6e05d
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Wed Jan 25 12:32:52 2012 +0100
Releasing debian version 2.2.0-1.
diff --git a/debian/changelog b/debian/changelog
index 1a5fb83..a02b432 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+tryton-modules-stock-supply (2.2.0-1) unstable; urgency=low
+
+ * Updating versioned tryton depends to 2.2.
+ * Merging upstream version 2.2.0.
+
+ -- Mathias Behrle <mathiasb at m9s.biz> Wed, 25 Jan 2012 12:25:57 +0100
+
tryton-modules-stock-supply (2.0.1-1) unstable; urgency=low
* Merging upstream version 2.0.1.
commit d6090f44ef492b01f6cb51b7a5bf2aafc22f156a
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Tue Nov 1 15:19:31 2011 +0100
Updating versioned tryton depends to 2.2.
diff --git a/debian/control b/debian/control
index 3dbf1c4..6fdcdaf 100644
--- a/debian/control
+++ b/debian/control
@@ -14,10 +14,10 @@ X-Python-Version: >= 2.5
Package: tryton-modules-stock-supply
Architecture: all
Depends:
- ${misc:Depends}, ${python:Depends}, tryton-server (>= 2.0),
- tryton-modules-account (>= 2.0), tryton-modules-party (>= 2.0),
- tryton-modules-product (>= 2.0), tryton-modules-purchase (>= 2.0),
- tryton-modules-stock (>= 2.0), python-pkg-resources
+ ${misc:Depends}, ${python:Depends}, tryton-server (>= 2.2),
+ tryton-modules-account (>= 2.2), tryton-modules-party (>= 2.2),
+ tryton-modules-product (>= 2.2), tryton-modules-purchase (>= 2.2),
+ tryton-modules-stock (>= 2.2), python-pkg-resources
Description: Tryton Application Platform (Stock Supply 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
commit 0772d318cc8b13baa0ee81adcd2ba6894085727c
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Mon Oct 31 16:21:31 2011 +0100
Merging upstream version 2.2.0.
diff --git a/CHANGELOG b/CHANGELOG
index f6b8709..4816d83 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,5 +1,6 @@
-Version 2.0.1 - 2011-10-01
+Version 2.2.0 - 2011-10-25
* Bug fixes (see mercurial logs for details)
+* Add wizard to create purchase requests
Version 2.0.0 - 2011-04-27
* Bug fixes (see mercurial logs for details)
diff --git a/MANIFEST.in b/MANIFEST.in
index dcb2afa..32879df 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -6,5 +6,5 @@ include CHANGELOG
include LICENSE
include *.xml
include *.odt
-include *.csv
+include locale/*.po
include doc/*
diff --git a/PKG-INFO b/PKG-INFO
index 4ba2e54..2112119 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
Metadata-Version: 1.0
Name: trytond_stock_supply
-Version: 2.0.1
+Version: 2.2.0
Summary: Supply Management Module with:
- Order point
- Purchase Request
@@ -13,23 +13,26 @@ Home-page: http://www.tryton.org/
Author: B2CK
Author-email: info at b2ck.com
License: GPL-3
-Download-URL: http://downloads.tryton.org/2.0/
+Download-URL: http://downloads.tryton.org/2.2/
Description: UNKNOWN
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Plugins
+Classifier: Framework :: Tryton
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Financial and Insurance Industry
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 :: Czech
+Classifier: Natural Language :: Dutch
Classifier: Natural Language :: English
Classifier: Natural Language :: French
Classifier: Natural Language :: German
+Classifier: Natural Language :: Russian
Classifier: Natural Language :: Spanish
Classifier: Operating System :: OS Independent
-Classifier: Programming Language :: Python :: 2.5
Classifier: Programming Language :: Python :: 2.6
Classifier: Programming Language :: Python :: 2.7
Classifier: Topic :: Office/Business
diff --git a/__tryton__.py b/__tryton__.py
index a0c1dca..be9715a 100644
--- a/__tryton__.py
+++ b/__tryton__.py
@@ -7,7 +7,7 @@
'name_es_CO': 'Gestión de pedidos de inventario',
'name_es_ES': 'Gestión de suministro de existencias',
'name_fr_FR': 'Gestion des approvisionnements de stock',
- 'version': '2.0.1',
+ 'version': '2.2.0',
'author': 'B2CK',
'email': 'info at b2ck.com',
'website': 'http://www.tryton.org/',
@@ -75,10 +75,13 @@ sur base des règles d'approvisionnement
'shipment.xml',
],
'translation': [
- 'bg_BG.csv',
- 'de_DE.csv',
- 'es_CO.csv',
- 'es_ES.csv',
- 'fr_FR.csv',
+ 'locale/cs_CZ.po',
+ 'locale/bg_BG.po',
+ 'locale/de_DE.po',
+ 'locale/es_CO.po',
+ 'locale/es_ES.po',
+ 'locale/fr_FR.po',
+ 'locale/nl_NL.po',
+ 'locale/ru_RU.po',
]
}
diff --git a/bg_BG.csv b/bg_BG.csv
deleted file mode 100644
index ee10b17..0000000
--- a/bg_BG.csv
+++ /dev/null
@@ -1,81 +0,0 @@
-type,name,res_id,src,value,fuzzy
-error,purchase.request,0,Purchase requests are only created by the system.,Заявките за покупка се създават само от системата,0
-error,purchase.request.create_purchase,0,Purchase price is missing for product: %s (id: %s)!,Липсва покупната цена за продукт: %s (id: %s)!,0
-error,purchase.request.create_purchase,0,This price is necessary for creating purchase.,Цената е необходима при създаване на покупка,0
-error,stock.order_point,0,Maximal quantity must be bigger than Minimal quantity,Максималното количество трябва да е по-голямо от Минималното количество,0
-error,stock.order_point,0,Only one order point is allowed for each product-location pair.,Разрешено е само едно пренареждане за всяка двойка продукт-местонахождение.,0
-error,stock.order_point,0,You can not define two order points on the same product with opposite locations.,Не може да зададете две пренареждания на един и същи продукт с противоположни местонахождения,0
-field,"product.product,order_points",0,Order Points,Пренареждания,0
-field,"purchase.request,company",0,Company,Фирма,0
-field,"purchase.request,computed_quantity",0,Computed Quantity,Изчислено количество,0
-field,"purchase.request,computed_uom",0,Computed UOM,Изчислена мер. ед.,0
-field,"purchase.request,origin",0,Origin,Източник,0
-field,"purchase.request,party",0,Party,Партньор,0
-field,"purchase.request,product",0,Product,Продукт,0
-field,"purchase.request,purchase",0,Purchase,Покупка,0
-field,"purchase.request,purchase_date",0,Best Purchase Date,Най-добра дата за покупка,0
-field,"purchase.request,purchase_line",0,Purchase Line,Ред от покупка,0
-field,"purchase.request,quantity",0,Quantity,Количество,0
-field,"purchase.request,rec_name",0,Name,Име,0
-field,"purchase.request,state",0,State,Състояние,0
-field,"purchase.request,stock_level",0,Stock at Supply Date,Наличност към дата на доставка,0
-field,"purchase.request,supply_date",0,Expected Supply Date,Очаквана дата на доставка,0
-field,"purchase.request,uom",0,UOM,Мер. ед.,0
-field,"purchase.request,warehouse",0,Warehouse,Склад,0
-field,"purchase.request.create_purchase.ask_party,company",0,Company,Фирма,0
-field,"purchase.request.create_purchase.ask_party,party",0,Supplier,Доставчик,0
-field,"purchase.request.create_purchase.ask_party,product",0,Product,Продукт,0
-field,"purchase.request.create_purchase.ask_term,company",0,Company,Фирма,0
-field,"purchase.request.create_purchase.ask_term,party",0,Supplier,Доставчик,0
-field,"purchase.request.create_purchase.ask_term,payment_term",0,Payment Term,Условие за плащане,0
-field,"stock.order_point,company",0,Company,Фирма,0
-field,"stock.order_point,location",0,Location,Местоположение,0
-field,"stock.order_point,max_quantity",0,Maximal Quantity,Максимално количество,0
-field,"stock.order_point,min_quantity",0,Minimal Quantity,Минимално количество,0
-field,"stock.order_point,product",0,Product,Продукт,0
-field,"stock.order_point,provisioning_location",0,Provisioning Location,Местонахождение на провизии,0
-field,"stock.order_point,rec_name",0,Name,Име,0
-field,"stock.order_point,storage_location",0,Storage Location,Местонахождение на съхранение,0
-field,"stock.order_point,type",0,Type,Вид,0
-field,"stock.order_point,unit",0,Unit,Единица,0
-field,"stock.order_point,unit_digits",0,Unit Digits,Десетични единици,0
-field,"stock.order_point,warehouse_location",0,Warehouse Location,Местонахождение на склад,0
-model,"ir.action,name",act_order_point_form,Order Points,Пренареждания,0
-model,"ir.action,name",act_order_point_form2,Order Points,Пренареждания,0
-model,"ir.action,name",act_purchase_form,Purchases,Покупки,0
-model,"ir.action,name",act_purchase_request_form,Purchase Requests,Заявки за покупка,0
-model,"ir.action,name",act_purchase_request_form_draft,Draft Purchase Requests,Проект на заявка за покупка,0
-model,"ir.action,name",wizard_create_purchase,Create Purchase,Създаване на покупка,0
-model,"ir.cron,name",cron_generate_request,Generate Purchase Requests,Генериране на заявки за покупка,0
-model,"ir.cron,name",cron_shipment_iternal,Generate Internal Shipments,Генериране на вътрешна пратка,0
-model,"ir.ui.menu,name",menu_order_point_form,Order Points,Пренареждания,0
-model,"ir.ui.menu,name",menu_order_point_form_new,New Order Point,Ново пренареждане,0
-model,"ir.ui.menu,name",menu_purchase_request_form,Purchase Requests,Заявки за покупки,0
-model,"ir.ui.menu,name",menu_purchase_request_form_draft,Draft Purchase Requests,Проект на заявки за покупка,0
-model,"purchase.request,name",0,Purchase Request,Заявка за покупка,0
-model,"purchase.request.create_purchase.ask_party,name",0,Create Purchase Ask Party,Създаване на покупка - питане на партньор,0
-model,"purchase.request.create_purchase.ask_term,name",0,Create Purchase Ask Term,Запитване за създаване на условие за плащане,0
-model,"res.group,name",group_purchase_request,Purchase Request,Заявка за покупка,0
-model,"res.user,name",user_generate_request,Cron Purchase Request,Планиране на заявка за покупка,0
-model,"res.user,name",user_generate_shipment_internal,Cron Intenal Shipment,Планиране на вътрешена пратка,0
-model,"stock.order_point,name",0,Order Point,Пренареждане,0
-selection,"purchase.request,state",0,Cancel,Отказ,0
-selection,"purchase.request,state",0,Done,Приключен,0
-selection,"purchase.request,state",0,Draft,Проект,0
-selection,"purchase.request,state",0,Purchased,Поръчан,0
-selection,"stock.order_point,type",0,Internal,Вътрешно,0
-selection,"stock.order_point,type",0,Purchase,Покупка,0
-view,purchase.request,0,Product Info,Информация за продукт,0
-view,purchase.request,0,Purchase Request,Заявка за покупка,0
-view,purchase.request,0,Purchase Requests,Заявки за покупка,0
-view,purchase.request,0,Supply Info,Информация за доставчик,0
-view,purchase.request.create_purchase.ask_party,0,Create Purchase: Missing Supplier,Създаване на покупка; липсва доставчик,0
-view,purchase.request.create_purchase.ask_term,0,Create Purchase: Missing Payment Term,Създаване на покупка: Липсва условие за плащане,0
-view,stock.order_point,0,Order Point,Пренареждане,0
-view,stock.order_point,0,Order Point Type,Вид пренареждане,0
-view,stock.order_point,0,Order Points,Пренареждания,0
-view,stock.order_point,0,Product Info,Информация за продукт,0
-wizard_button,"purchase.request.create_purchase,ask_user_party,end",0,Cancel,Отказ,0
-wizard_button,"purchase.request.create_purchase,ask_user_party,init",0,Continue,Продължаване,0
-wizard_button,"purchase.request.create_purchase,ask_user_term,end",0,Cancel,Отказ,0
-wizard_button,"purchase.request.create_purchase,ask_user_term,init",0,Continue,Продължаване,0
diff --git a/de_DE.csv b/de_DE.csv
deleted file mode 100644
index 77f5d27..0000000
--- a/de_DE.csv
+++ /dev/null
@@ -1,85 +0,0 @@
-type,name,res_id,src,value,fuzzy
-error,purchase.request,0,Purchase requests are only created by the system.,Bestellvorschläge werden nur durch das System generiert!,0
-error,purchase.request.create_purchase,0,Purchase price is missing for product: %s (id: %s)!,Fehlender Einkaufspreis für Artikel: %s (id: %s)!,0
-error,purchase.request.create_purchase,0,This price is necessary for creating purchase.,Dieser Preis wird für die Auftragserstellung benötigt!,0
-error,stock.order_point,0,Maximal quantity must be bigger than Minimal quantity,Die maximale Anzahl muss größer als die minimale Anzahl sein,0
-error,stock.order_point,0,Only one order point is allowed for each product-location pair.,Es ist nur ein Bestellpunkt für jede Paarung Artikel-Lagerort erlaubt,0
-error,stock.order_point,0,You can not define two order points on the same product with opposite locations.,Für einen Artikel können keine verschiedenen Bestellpunkte mit unterschiedlichen Lagerstandorten erstellt werden!,0
-field,"product.product,order_points",0,Order Points,Bestellpunkte,0
-field,"purchase.request,company",0,Company,Unternehmen,0
-field,"purchase.request,computed_quantity",0,Computed Quantity,Berechnete Anzahl,0
-field,"purchase.request,computed_uom",0,Computed UOM,Berechnete Maßeinheit,0
-field,"purchase.request,origin",0,Origin,Herkunft,0
-field,"purchase.request,party",0,Party,Partei,0
-field,"purchase.request,product",0,Product,Artikel,0
-field,"purchase.request,purchase",0,Purchase,Bestellvorschlag,0
-field,"purchase.request,purchase_date",0,Best Purchase Date,Bestes Einkaufsdatum,0
-field,"purchase.request,purchase_line",0,Purchase Line,Position Bestellvorschlag,0
-field,"purchase.request,quantity",0,Quantity,Anzahl,0
-field,"purchase.request,rec_name",0,Name,Name,0
-field,"purchase.request,state",0,State,Status,0
-field,"purchase.request,stock_level",0,Stock at Supply Date,Lagerbestand am Lieferdatum,0
-field,"purchase.request,supply_date",0,Expected Supply Date,Voraussichtliches Lieferdatum,0
-field,"purchase.request,uom",0,UOM,Maßeinheit,0
-field,"purchase.request,warehouse",0,Warehouse,Warenlager,0
-field,"purchase.request.create_purchase.ask_party,company",0,Company,Unternehmen,0
-field,"purchase.request.create_purchase.ask_party,party",0,Supplier,Lieferant,0
-field,"purchase.request.create_purchase.ask_party,product",0,Product,Artikel,0
-field,"purchase.request.create_purchase.ask_term,company",0,Company,Unternehmen,0
-field,"purchase.request.create_purchase.ask_term,party",0,Supplier,Lieferant,0
-field,"purchase.request.create_purchase.ask_term,payment_term",0,Payment Term,Zahlungsbedingung,0
-field,"stock.order_point,company",0,Company,Unternehmen,0
-field,"stock.order_point,location",0,Location,Lagerort,0
-field,"stock.order_point,max_quantity",0,Maximal Quantity,Maximale Anzahl,0
-field,"stock.order_point,min_quantity",0,Minimal Quantity,Minimale Anzahl,0
-field,"stock.order_point,product",0,Product,Artikel,0
-field,"stock.order_point,provisioning_location",0,Provisioning Location,Bereitstellungsort,0
-field,"stock.order_point,rec_name",0,Name,Name,0
-field,"stock.order_point,storage_location",0,Storage Location,Lagerort,0
-field,"stock.order_point,type",0,Type,Typ,0
-field,"stock.order_point,unit",0,Unit,Einheit,0
-field,"stock.order_point,unit_digits",0,Unit Digits,Anzahl Stellen,0
-field,"stock.order_point,warehouse_location",0,Warehouse Location,Warenlager,0
-model,"ir.action,name",act_order_point_form,Order Points,Bestellpunkte,0
-model,"ir.action,name",act_order_point_form2,Order Points,Bestellpunkte,0
-model,"ir.action,name",act_purchase_form,Purchases,Einkäufe,0
-model,"ir.action,name",act_purchase_request_form,Purchase Requests,Bestellvorschläge,0
-model,"ir.action,name",act_purchase_request_form_draft,Draft Purchase Requests,Entwürfe Bestellvorschläge,0
-model,"ir.action,name",wizard_create_purchase,Create Purchase,Auftrag erstellen,0
-model,"ir.cron,name",cron_generate_request,Generate Purchase Requests,Erstellung von Bestellvorschlägen,0
-model,"ir.cron,name",cron_shipment_iternal,Generate Internal Shipments,Erstellung von Internen Lieferposten,0
-model,"ir.ui.menu,name",menu_order_point_form,Order Points,Bestellpunkte,0
-model,"ir.ui.menu,name",menu_order_point_form_new,New Order Point,Neuer Bestellpunkt,0
-model,"ir.ui.menu,name",menu_purchase_request_form,Purchase Requests,Bestellvorschläge,0
-model,"ir.ui.menu,name",menu_purchase_request_form_draft,Draft Purchase Requests,Entwürfe (Bestellvorschläge),0
-model,"purchase.request,name",0,Purchase Request,Bestellvorschlag,0
-model,"purchase.request.create_purchase.ask_party,name",0,Create Purchase Ask Party,Verkauf Nachfrage Partei,0
-model,"purchase.request.create_purchase.ask_term,name",0,Create Purchase Ask Term,Verkauf Nachfrage Zahlungsbedingung,0
-model,"res.group,name",group_purchase_request,Purchase Request,Bestellvorschlag,0
-model,"res.user,name",user_generate_request,Cron Purchase Request,Zeitplaner Bestellvorschläge,0
-model,"res.user,name",user_generate_shipment_internal,Cron Intenal Shipment,Zeitplaner Interne Lieferposten,0
-model,"stock.order_point,name",0,Order Point,Bestellpunkt,0
-selection,"purchase.request,origin",0,Order Point,Bestellpunkt,0
-selection,"purchase.request,state",0,Cancel,Annulliert,0
-selection,"purchase.request,state",0,Done,Erledigt,0
-selection,"purchase.request,state",0,Draft,Entwurf,0
-selection,"purchase.request,state",0,Purchased,Auftrag erstellt,0
-selection,"stock.order_point,type",0,Internal,Intern,0
-selection,"stock.order_point,type",0,Purchase,Bestellvorschlag,0
-view,purchase.request,0,Product Info,Info Artikel,0
-view,purchase.request,0,Purchase Request,Bestellvorschlag,0
-view,purchase.request,0,Purchase Requests,Bestellvorschläge,0
-view,purchase.request,0,Supply Info,Info,0
-view,purchase.request,0,supply Info,Info Lieferant,0
-view,purchase.request.create_purchase.ask_party,0,,,0
-view,purchase.request.create_purchase.ask_party,0,Create Purchase: Missing Supplier,Auftragerstellung: Fehlender Lieferant,0
-view,purchase.request.create_purchase.ask_term,0,Create Purchase: Missing Payment Term,Auftragerstellung: Fehlende Zahlungsbedingung,0
-view,stock.order_point,0,Locations,Lagerorte,0
-view,stock.order_point,0,Order Point,Bestellpunkt,0
-view,stock.order_point,0,Order Point Type,Typ Bestellpunkt,0
-view,stock.order_point,0,Order Points,Bestellpunkte,0
-view,stock.order_point,0,Product Info,Artikelinfo,0
-wizard_button,"purchase.request.create_purchase,ask_user_party,end",0,Cancel,Abbrechen,0
-wizard_button,"purchase.request.create_purchase,ask_user_party,init",0,Continue,Fortfahren,0
-wizard_button,"purchase.request.create_purchase,ask_user_term,end",0,Cancel,Abbrechen,0
-wizard_button,"purchase.request.create_purchase,ask_user_term,init",0,Continue,Fortfahren,0
diff --git a/es_CO.csv b/es_CO.csv
deleted file mode 100644
index f10a57c..0000000
--- a/es_CO.csv
+++ /dev/null
@@ -1,83 +0,0 @@
-type,name,res_id,src,value,fuzzy
-error,purchase.request,0,Purchase requests are only created by the system.,Los requisitos de compras son creados por el sistema únicamente.,0
-error,purchase.request.create_purchase,0,Purchase price is missing for product: %s (id: %s)!,El precio de compra falta para el producto: %s (id: %s)!,0
-error,purchase.request.create_purchase,0,This price is necessary for creating purchase.,Este precio se necesita para creación de compras.,0
-error,stock.order_point,0,Maximal quantity must be bigger than Minimal quantity,La cantidad máxima debe ser mayor que la Cantidad Mínima,0
-error,stock.order_point,0,Only one order point is allowed for each product-location pair.,Solamente se admite un punto de orden para cada par cliente-producto.,0
-error,stock.order_point,0,You can not define two order points on the same product with opposite locations.,No puede definir dos puntos de orden con lugares opuestos.,0
-field,"product.product,order_points",0,Order Points,Puntos de Orden,0
-field,"purchase.request,company",0,Company,Compañía,0
-field,"purchase.request,computed_quantity",0,Computed Quantity,Calcule Cantidad,0
-field,"purchase.request,computed_uom",0,Computed UOM,Calcule UOM,0
-field,"purchase.request.create_purchase.ask_party,company",0,Company,Compañía,0
-field,"purchase.request.create_purchase.ask_party,party",0,Supplier,Proveedor,0
-field,"purchase.request.create_purchase.ask_party,product",0,Product,Producto,0
-field,"purchase.request.create_purchase.ask_term,company",0,Company,Compañía,0
-field,"purchase.request.create_purchase.ask_term,party",0,Supplier,Proveedor,0
-field,"purchase.request.create_purchase.ask_term,payment_term",0,Payment Term,Término de Pago,0
-field,"purchase.request,origin",0,Origin,Origen,0
-field,"purchase.request,party",0,Party,Tercero,0
-field,"purchase.request,product",0,Product,Producto,0
-field,"purchase.request,purchase",0,Purchase,Compra,0
-field,"purchase.request,purchase_date",0,Best Purchase Date,Mejor Fecha de Compra,0
-field,"purchase.request,purchase_line",0,Purchase Line,Línea de Compra,0
-field,"purchase.request,quantity",0,Quantity,Cantidad,0
-field,"purchase.request,rec_name",0,Name,Nombre,0
-field,"purchase.request,state",0,State,Estado,0
-field,"purchase.request,stock_level",0,Stock at Supply Date,Almacenar al Momento en la fecha de abastecimiento,0
-field,"purchase.request,supply_date",0,Expected Supply Date,Fecha Esperada de Abastecimiento,0
-field,"purchase.request,uom",0,UOM,UDM,0
-field,"purchase.request,warehouse",0,Warehouse,Depósito,0
-field,"stock.order_point,company",0,Company,Compañía,0
-field,"stock.order_point,location",0,Location,Lugar,0
-field,"stock.order_point,max_quantity",0,Maximal Quantity,Cantidad Máxima,0
-field,"stock.order_point,min_quantity",0,Minimal Quantity,Cantidad Mínima,0
-field,"stock.order_point,product",0,Product,Producto,0
-field,"stock.order_point,provisioning_location",0,Provisioning Location,Lugar de Aprovisionamiento,0
-field,"stock.order_point,rec_name",0,Name,Nombre,0
-field,"stock.order_point,storage_location",0,Storage Location,Lugar de almacenamiento,0
-field,"stock.order_point,type",0,Type,Tipo,0
-field,"stock.order_point,unit",0,Unit,Unidad,0
-field,"stock.order_point,unit_digits",0,Unit Digits,Dígitos de Unidad,0
-field,"stock.order_point,warehouse_location",0,Warehouse Location,Lugar de la bodega,0
-model,"ir.action,name",wizard_create_purchase,Create Purchase,Crear Compra,0
-model,"ir.action,name",act_purchase_request_form_draft,Draft Purchase Requests,Requisición de Prueba de Compras,0
-model,"ir.action,name",act_order_point_form,Order Points,Puntos de Orden,0
-model,"ir.action,name",act_order_point_form2,Order Points,Puntos de Orden,1
-model,"ir.action,name",act_purchase_request_form,Purchase Requests,Solicitudes de Compra,0
-model,"ir.action,name",act_purchase_form,Purchases,Compras,0
-model,"ir.cron,name",cron_shipment_iternal,Generate Internal Shipments,Genere Envío Interno,0
-model,"ir.cron,name",cron_generate_request,Generate Purchase Requests,Genere Requisito de Compra,0
-model,"ir.ui.menu,name",menu_purchase_request_form_draft,Draft Purchase Requests,Requisición de Prueba de Compras,0
-model,"ir.ui.menu,name",menu_order_point_form_new,New Order Point,Nuevo Punto de Orden,0
-model,"ir.ui.menu,name",menu_order_point_form,Order Points,Puntos de Orden,0
-model,"ir.ui.menu,name",menu_purchase_request_form,Purchase Requests,Solicitudes de Compra,0
-model,"purchase.request.create_purchase.ask_party,name",0,Create Purchase Ask Party,Crea Pregunta a Tercero de Compra,0
-model,"purchase.request.create_purchase.ask_term,name",0,Create Purchase Ask Term,Crea Pregunta a Tercero de Término,0
-model,"purchase.request,name",0,Purchase Request,Solicitud de Compra,0
-model,"res.group,name",group_purchase_request,Purchase Request,Solicitud de Compra,0
-model,"res.user,name",user_generate_shipment_internal,Cron Intenal Shipment,Cron Envío Interno,0
-model,"res.user,name",user_generate_request,Cron Purchase Request,Cron Requisito de Compra,0
-model,"stock.order_point,name",0,Order Point,Punto de Orden,0
-selection,"purchase.request,origin",0,Order Point,Punto de Orden,0
-selection,"purchase.request,state",0,Cancel,Cancelar,0
-selection,"purchase.request,state",0,Done,Hecho,0
-selection,"purchase.request,state",0,Draft,Borrador,0
-selection,"purchase.request,state",0,Purchased,Comprado,0
-selection,"stock.order_point,type",0,Internal,Intern@,0
-selection,"stock.order_point,type",0,Purchase,Compra,0
-view,purchase.request,0,Product Info,Información de Producto,0
-view,purchase.request,0,Purchase Request,Solicitud de Compra,0
-view,purchase.request,0,Purchase Requests,Solicitudes de Compra,0
-view,purchase.request,0,Supply Info,Información de proveedor,0
-view,purchase.request.create_purchase.ask_party,0,Create Purchase: Missing Supplier,Crear Compra: Sin Proveedor,0
-view,purchase.request.create_purchase.ask_term,0,Create Purchase: Missing Payment Term,Crear Compra: Sin Término de Pago,0
-view,stock.order_point,0,Locations,Lugares,0
-view,stock.order_point,0,Order Point,Punto de Orden,0
-view,stock.order_point,0,Order Points,Puntos de Orden,1
-view,stock.order_point,0,Order Point Type,Tipo de Punto de Orden,0
-view,stock.order_point,0,Product Info,Información de Producto,0
-wizard_button,"purchase.request.create_purchase,ask_user_party,end",0,Cancel,Cancelar,0
-wizard_button,"purchase.request.create_purchase,ask_user_party,init",0,Continue,Continuar,0
-wizard_button,"purchase.request.create_purchase,ask_user_term,end",0,Cancel,Cancelar,0
-wizard_button,"purchase.request.create_purchase,ask_user_term,init",0,Continue,Continuar,0
diff --git a/es_ES.csv b/es_ES.csv
deleted file mode 100644
index 5d25037..0000000
--- a/es_ES.csv
+++ /dev/null
@@ -1,78 +0,0 @@
-type,name,res_id,src,value,fuzzy
-error,purchase.request,0,Purchase requests are only created by the system.,Las solicitudes de compra solo las crea el sistema.,0
-error,purchase.request.create_purchase,0,Purchase price is missing for product: %s (id: %s)!,Falta el precio de compra para el producto: %s (id: %s),0
-error,purchase.request.create_purchase,0,This price is necessary for creating purchase.,Se necesita este precio para crear la compra.,0
-error,stock.order_point,0,Maximal quantity must be bigger than Minimal quantity,La cantidad máxima debe ser mayor que la mínima,0
-error,stock.order_point,0,Only one order point is allowed for each product-location pair.,Solo se permite un punto de orden por cada par de producto-ubicación.,0
-error,stock.order_point,0,You can not define two order points on the same product with opposite locations.,No puede definir dos puntos de orden en el mismo producto con ubicaciones opuestas.,0
-field,"product.product,order_points",0,Order Points,Puntos de orden,0
-field,"purchase.request,company",0,Company,Empresa,0
-field,"purchase.request,computed_quantity",0,Computed Quantity,Cantidad calculada,0
-field,"purchase.request,computed_uom",0,Computed UOM,UdM calculada,0
-field,"purchase.request.create_purchase.ask_party,company",0,Company,Empresa,0
-field,"purchase.request.create_purchase.ask_party,party",0,Supplier,Proveedor,0
-field,"purchase.request.create_purchase.ask_party,product",0,Product,Producto,0
-field,"purchase.request.create_purchase.ask_term,company",0,Company,Empresa,0
-field,"purchase.request.create_purchase.ask_term,party",0,Supplier,Proveedor,0
-field,"purchase.request.create_purchase.ask_term,payment_term",0,Payment Term,Plazo de pago,0
-field,"purchase.request,origin",0,Origin,Origen,0
-field,"purchase.request,party",0,Party,Tercero,0
-field,"purchase.request,product",0,Product,Producto,0
-field,"purchase.request,purchase",0,Purchase,Compra,0
-field,"purchase.request,purchase_date",0,Best Purchase Date,Mejor fecha de compra,0
-field,"purchase.request,purchase_line",0,Purchase Line,Línea de compra,0
-field,"purchase.request,quantity",0,Quantity,Cantidad,0
-field,"purchase.request,rec_name",0,Name,Nombre,0
-field,"purchase.request,state",0,State,Estado,0
-field,"purchase.request,stock_level",0,Stock at Supply Date,Existencias a la fecha del suministro,0
-field,"purchase.request,supply_date",0,Expected Supply Date,Fecha estimada de suministro,0
-field,"purchase.request,uom",0,UOM,UdM,0
-field,"purchase.request,warehouse",0,Warehouse,Almacén,0
-field,"stock.order_point,company",0,Company,Empresa,0
-field,"stock.order_point,location",0,Location,Ubicación,0
-field,"stock.order_point,max_quantity",0,Maximal Quantity,Cantidad máxima,0
-field,"stock.order_point,min_quantity",0,Minimal Quantity,Cantidad mínima,0
-field,"stock.order_point,product",0,Product,Producto,0
-field,"stock.order_point,provisioning_location",0,Provisioning Location,Ubicación del aprovisionamiento,0
-field,"stock.order_point,rec_name",0,Name,Nombre,0
-field,"stock.order_point,storage_location",0,Storage Location,Ubicación del almacén,0
-field,"stock.order_point,type",0,Type,Tipo,0
-field,"stock.order_point,unit",0,Unit,Unidad,0
-field,"stock.order_point,unit_digits",0,Unit Digits,Decimales de la unidad,0
-field,"stock.order_point,warehouse_location",0,Warehouse Location,Ubicación del almacén,0
-model,"ir.action,name",wizard_create_purchase,Create Purchase,Crear compra,0
-model,"ir.action,name",act_order_point_form,Order Points,Puntos de orden,0
-model,"ir.action,name",act_purchase_request_form,Purchase Requests,Solicitudes de compra,0
-model,"ir.action,name",act_purchase_form,Purchases,Compras,0
-model,"ir.cron,name",cron_shipment_iternal,Generate Internal Shipments,Generar envios internos,0
-model,"ir.cron,name",cron_generate_request,Generate Purchase Requests,Generar peticiones de compra,0
-model,"ir.ui.menu,name",menu_order_point_form,Order Points,Puntos de orden,0
-model,"ir.ui.menu,name",menu_purchase_request_form,Purchase Requests,Solicitudes de compra,0
-model,"purchase.request.create_purchase.ask_party,name",0,Create Purchase Ask Party,Crear compra - Petición de tercero,0
-model,"purchase.request.create_purchase.ask_term,name",0,Create Purchase Ask Term,Crear compra - Petición de plazo,0
-model,"purchase.request,name",0,Purchase Request,Solicitud de compra,0
-model,"res.group,name",group_purchase_request,Purchase Request,Solicitud de compra,0
-model,"res.user,name",user_generate_shipment_internal,Cron Intenal Shipment,Programador de tareas de envio interno,0
-model,"res.user,name",user_generate_request,Cron Purchase Request,Programador de tareas de solicitudes de compra,0
-model,"stock.order_point,name",0,Order Point,Punto de orden,0
-selection,"purchase.request,origin",0,Order Point,Punto de orden,0
-selection,"purchase.request,state",0,Cancel,Cancelar,0
-selection,"purchase.request,state",0,Done,Terminada,0
-selection,"purchase.request,state",0,Draft,Borrador,0
-selection,"purchase.request,state",0,Purchased,Comprado,0
-selection,"stock.order_point,type",0,Internal,Interno,0
-selection,"stock.order_point,type",0,Purchase,Compra,0
-view,purchase.request,0,Product Info,Información del producto,0
-view,purchase.request,0,Purchase Request,Solicitud de compra,0
-view,purchase.request,0,Purchase Requests,Solicitudes de compra,0
-view,purchase.request,0,Supply Info,Información del suministro,0
-view,purchase.request.create_purchase.ask_party,0,Create Purchase: Missing Supplier,Crear compra: sin proveedor,0
-view,purchase.request.create_purchase.ask_term,0,Create Purchase: Missing Payment Term,Crear compra: sin término de pago,0
-view,stock.order_point,0,Locations,Ubicaciones,0
-view,stock.order_point,0,Order Point,Punto de orden,0
-view,stock.order_point,0,Order Point Type,Tipo de punto de orden,0
-view,stock.order_point,0,Product Info,Información del producto,0
-wizard_button,"purchase.request.create_purchase,ask_user_party,end",0,Cancel,Cancelar,0
-wizard_button,"purchase.request.create_purchase,ask_user_party,init",0,Continue,Continuar,0
-wizard_button,"purchase.request.create_purchase,ask_user_term,end",0,Cancel,Cancelar,0
-wizard_button,"purchase.request.create_purchase,ask_user_term,init",0,Continue,Continuar,0
diff --git a/fr_FR.csv b/fr_FR.csv
deleted file mode 100644
index f6a736b..0000000
--- a/fr_FR.csv
+++ /dev/null
@@ -1,83 +0,0 @@
-type,name,res_id,src,value,fuzzy
-error,purchase.request,0,Purchase requests are only created by the system.,Les demandes d'achat sont uniquement crées par le sytème,0
-error,purchase.request.create_purchase,0,Purchase price is missing for product: %s (id: %s)!,Le prix d'achat est absent pour le produit : %s (id: %s) !,0
-error,purchase.request.create_purchase,0,This price is necessary for creating purchase.,Ce prix est nécessaire pour créer les achats.,0
-error,stock.order_point,0,Maximal quantity must be bigger than Minimal quantity,La Quantité maximale doit être supérieure à la quantité minimale,0
-error,stock.order_point,0,Only one order point is allowed for each product-location pair.,Une seule règle d'approvisionnement est autorisée par paire produit-emplacement,0
-error,stock.order_point,0,You can not define two order points on the same product with opposite locations.,Vous ne pouvez pas définir deux règles d'approvisionnement sur le même produit avec des emplacement opposés,0
-field,"product.product,order_points",0,Order Points,Règles d'approvisionnements,0
-field,"purchase.request,company",0,Company,Société,0
-field,"purchase.request,computed_quantity",0,Computed Quantity,Quantité calculée,0
-field,"purchase.request,computed_uom",0,Computed UOM,UDM calculée,0
-field,"purchase.request,origin",0,Origin,Origine,0
-field,"purchase.request,party",0,Party,Tiers,0
-field,"purchase.request,product",0,Product,Produit,0
-field,"purchase.request,purchase",0,Purchase,Achat,0
-field,"purchase.request,purchase_date",0,Best Purchase Date,Meilleur date d'achat,0
-field,"purchase.request,purchase_line",0,Purchase Line,Ligne d'achat,0
-field,"purchase.request,quantity",0,Quantity,Quantité,0
-field,"purchase.request,rec_name",0,Name,Nom,0
-field,"purchase.request,state",0,State,État,0
-field,"purchase.request,stock_level",0,Stock at Supply Date,Stock à la date de livraison,0
-field,"purchase.request,supply_date",0,Expected Supply Date,Date de livraison attendue,0
-field,"purchase.request,uom",0,UOM,UDM,0
-field,"purchase.request,warehouse",0,Warehouse,Entrepôt,0
-field,"purchase.request.create_purchase.ask_party,company",0,Company,Société,0
-field,"purchase.request.create_purchase.ask_party,party",0,Supplier,Fournisseur,0
-field,"purchase.request.create_purchase.ask_party,product",0,Product,Produit,0
-field,"purchase.request.create_purchase.ask_term,company",0,Company,Société,0
-field,"purchase.request.create_purchase.ask_term,party",0,Supplier,Fournisseur,0
-field,"purchase.request.create_purchase.ask_term,payment_term",0,Payment Term,Condition de paiement,0
-field,"stock.order_point,company",0,Company,Société,0
-field,"stock.order_point,location",0,Location,Emplacement,0
-field,"stock.order_point,max_quantity",0,Maximal Quantity,Quantité maximale,0
-field,"stock.order_point,min_quantity",0,Minimal Quantity,Quantité minimale,0
-field,"stock.order_point,product",0,Product,Produit,0
-field,"stock.order_point,provisioning_location",0,Provisioning Location,Emplacement d'appro.,0
-field,"stock.order_point,rec_name",0,Name,Nom,0
-field,"stock.order_point,storage_location",0,Storage Location,Emplacement de stockage,0
-field,"stock.order_point,type",0,Type,Type,0
-field,"stock.order_point,unit",0,Unit,Unité,0
-field,"stock.order_point,unit_digits",0,Unit Digits,Décimales de l'unité,0
-field,"stock.order_point,warehouse_location",0,Warehouse Location,Entrepôt,0
-model,"ir.action,name",act_order_point_form,Order Points,Règles d'approvisionnement,0
-model,"ir.action,name",act_order_point_form2,Order Points,Règles d'approvisionnements,0
-model,"ir.action,name",act_purchase_form,Purchases,Achats,0
-model,"ir.action,name",act_purchase_request_form,Purchase Requests,Demandes d'achat,0
-model,"ir.action,name",act_purchase_request_form_draft,Draft Purchase Requests,Demandes d'achat en brouillon,0
-model,"ir.action,name",wizard_create_purchase,Create Purchase,Créer achat,0
-model,"ir.cron,name",cron_generate_request,Generate Purchase Requests,Générer les demandes d'achat,0
-model,"ir.cron,name",cron_shipment_iternal,Generate Internal Shipments,Générer les expéditions internes,0
-model,"ir.ui.menu,name",menu_order_point_form,Order Points,Règles d'approvisionnement,0
-model,"ir.ui.menu,name",menu_order_point_form_new,New Order Point,nouvelle règle d'approvisionnement,0
-model,"ir.ui.menu,name",menu_purchase_request_form,Purchase Requests,Demandes d'achat,0
-model,"ir.ui.menu,name",menu_purchase_request_form_draft,Draft Purchase Requests,Demandes d'achat en brouillon,0
-model,"purchase.request,name",0,Purchase Request,Demande d'achat,0
-model,"purchase.request.create_purchase.ask_party,name",0,Create Purchase Ask Party,Créer l'achat - Demande de tiers,0
-model,"purchase.request.create_purchase.ask_term,name",0,Create Purchase Ask Term,Créer l'achat - Demande de condition de paiment,0
-model,"res.group,name",group_purchase_request,Purchase Request,Demande d'achat,0
-model,"res.user,name",user_generate_request,Cron Purchase Request,Cron Demande d'achat,0
-model,"res.user,name",user_generate_shipment_internal,Cron Intenal Shipment,Cron expédition interne,0
-model,"stock.order_point,name",0,Order Point,Règle d'approvisionnement,0
-selection,"purchase.request,origin",0,Order Point,Règle d'approvisionnement,0
-selection,"purchase.request,state",0,Cancel,Annulé,0
-selection,"purchase.request,state",0,Done,Fait,0
-selection,"purchase.request,state",0,Draft,Brouillon,0
-selection,"purchase.request,state",0,Purchased,Commandé,0
-selection,"stock.order_point,type",0,Internal,Interne,0
-selection,"stock.order_point,type",0,Purchase,Achat,0
-view,purchase.request,0,Product Info,Info produit,0
-view,purchase.request,0,Purchase Request,Demande d'achat,0
-view,purchase.request,0,Purchase Requests,Demandes d'achat,0
-view,purchase.request,0,Supply Info,Information d'approvisionnement,0
-view,purchase.request.create_purchase.ask_party,0,Create Purchase: Missing Supplier,Création de la commande: fournisseur absent,0
-view,purchase.request.create_purchase.ask_term,0,Create Purchase: Missing Payment Term,Création de la commande: règle d'appro. absente,0
-view,stock.order_point,0,Locations,Emplacements,0
-view,stock.order_point,0,Order Point,Règle d'approvisionnement,0
-view,stock.order_point,0,Order Point Type,Type de Règle d'approvisionnement,0
-view,stock.order_point,0,Order Points,Règles d'approvisionnements,0
-view,stock.order_point,0,Product Info,Info produit,0
-wizard_button,"purchase.request.create_purchase,ask_user_party,end",0,Cancel,Annuler,0
-wizard_button,"purchase.request.create_purchase,ask_user_party,init",0,Continue,Continuer,0
-wizard_button,"purchase.request.create_purchase,ask_user_term,end",0,Cancel,Annuler,0
-wizard_button,"purchase.request.create_purchase,ask_user_term,init",0,Continue,Continuer,0
diff --git a/locale/bg_BG.po b/locale/bg_BG.po
new file mode 100644
index 0000000..8dd2943
--- /dev/null
+++ b/locale/bg_BG.po
@@ -0,0 +1,351 @@
+#
+msgid ""
+msgstr "Content-Type: text/plain; charset=utf-8\n"
+
+msgctxt "error:purchase.request.create_purchase:0"
+msgid "Purchase price is missing for product: %s (id: %s)!"
+msgstr "Липсва покупната цена за продукт: %s (id: %s)!"
+
+msgctxt "error:purchase.request.create_purchase:0"
+msgid "This price is necessary for creating purchase."
+msgstr "Цената е необходима при създаване на покупка"
+
+msgctxt "error:purchase.request:0"
+msgid "Purchase requests are only created by the system."
+msgstr "Заявките за покупка се създават само от системата"
+
+msgctxt "error:stock.order_point:0"
+msgid "Maximal quantity must be bigger than Minimal quantity"
+msgstr ""
+"Максималното количество трябва да е по-голямо от Минималното количество"
+
+msgctxt "error:stock.order_point:0"
+msgid "Only one order point is allowed for each product-location pair."
+msgstr ""
+"Разрешено е само едно пренареждане за всяка двойка продукт-местонахождение."
+
+msgctxt "error:stock.order_point:0"
+msgid ""
+"You can not define two order points on the same product with opposite "
+"locations."
+msgstr ""
+"Не може да зададете две пренареждания на един и същи продукт с "
+"противоположни местонахождения"
+
+msgctxt "field:product.product,order_points:0"
+msgid "Order Points"
+msgstr "Пренареждания"
+
+msgctxt "field:purchase.request,company:0"
+msgid "Company"
+msgstr "Фирма"
+
+msgctxt "field:purchase.request,computed_quantity:0"
+msgid "Computed Quantity"
+msgstr "Изчислено количество"
+
+msgctxt "field:purchase.request,computed_uom:0"
+msgid "Computed UOM"
+msgstr "Изчислена мер. ед."
+
+msgctxt "field:purchase.request,origin:0"
+msgid "Origin"
+msgstr "Източник"
+
+msgctxt "field:purchase.request,party:0"
+msgid "Party"
+msgstr "Партньор"
+
+msgctxt "field:purchase.request,product:0"
+msgid "Product"
+msgstr "Продукт"
+
+msgctxt "field:purchase.request,purchase:0"
+msgid "Purchase"
+msgstr "Покупка"
+
+msgctxt "field:purchase.request,purchase_date:0"
+msgid "Best Purchase Date"
+msgstr "Най-добра дата за покупка"
+
+msgctxt "field:purchase.request,purchase_line:0"
+msgid "Purchase Line"
+msgstr "Ред от покупка"
+
+msgctxt "field:purchase.request,quantity:0"
+msgid "Quantity"
+msgstr "Количество"
+
+msgctxt "field:purchase.request,rec_name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:purchase.request,state:0"
+msgid "State"
+msgstr "Състояние"
+
+msgctxt "field:purchase.request,stock_level:0"
+msgid "Stock at Supply Date"
+msgstr "Наличност към дата на доставка"
+
+msgctxt "field:purchase.request,supply_date:0"
+msgid "Expected Supply Date"
+msgstr "Очаквана дата на доставка"
+
+msgctxt "field:purchase.request,uom:0"
+msgid "UOM"
+msgstr "Мер. ед."
+
+msgctxt "field:purchase.request,warehouse:0"
+msgid "Warehouse"
+msgstr "Склад"
+
+msgctxt "field:purchase.request.create_purchase.ask_party,company:0"
+msgid "Company"
+msgstr "Фирма"
+
+msgctxt "field:purchase.request.create_purchase.ask_party,party:0"
+msgid "Supplier"
+msgstr "Доставчик"
+
+msgctxt "field:purchase.request.create_purchase.ask_party,product:0"
+msgid "Product"
+msgstr "Продукт"
+
+msgctxt "field:purchase.request.create_purchase.ask_term,company:0"
+msgid "Company"
+msgstr "Фирма"
+
+msgctxt "field:purchase.request.create_purchase.ask_term,party:0"
+msgid "Supplier"
+msgstr "Доставчик"
+
+msgctxt "field:purchase.request.create_purchase.ask_term,payment_term:0"
+msgid "Payment Term"
+msgstr "Условие за плащане"
+
+msgctxt "field:stock.order_point,company:0"
+msgid "Company"
+msgstr "Фирма"
+
+msgctxt "field:stock.order_point,location:0"
+msgid "Location"
+msgstr "Местоположение"
+
+msgctxt "field:stock.order_point,max_quantity:0"
+msgid "Maximal Quantity"
+msgstr "Максимално количество"
+
+msgctxt "field:stock.order_point,min_quantity:0"
+msgid "Minimal Quantity"
+msgstr "Минимално количество"
+
+msgctxt "field:stock.order_point,product:0"
+msgid "Product"
+msgstr "Продукт"
+
+msgctxt "field:stock.order_point,provisioning_location:0"
+msgid "Provisioning Location"
+msgstr "Местонахождение на провизии"
+
+msgctxt "field:stock.order_point,rec_name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:stock.order_point,storage_location:0"
+msgid "Storage Location"
+msgstr "Местонахождение на съхранение"
+
+msgctxt "field:stock.order_point,type:0"
+msgid "Type"
+msgstr "Вид"
+
+msgctxt "field:stock.order_point,unit:0"
+msgid "Unit"
+msgstr "Единица"
+
+msgctxt "field:stock.order_point,unit_digits:0"
+msgid "Unit Digits"
+msgstr "Десетични единици"
+
+msgctxt "field:stock.order_point,warehouse_location:0"
+msgid "Warehouse Location"
+msgstr "Местонахождение на склад"
+
+msgctxt "model:ir.action,name:act_order_point_form"
+msgid "Order Points"
+msgstr "Пренареждания"
+
+msgctxt "model:ir.action,name:act_purchase_form"
+msgid "Purchases"
+msgstr "Покупки"
+
+msgctxt "model:ir.action,name:act_purchase_request_create_purchase_request"
+msgid "Create Purchase Requests"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_purchase_request_form"
+msgid "Purchase Requests"
+msgstr "Заявки за покупка"
+
+msgctxt "model:ir.action,name:act_purchase_request_form_draft"
+msgid "Draft Purchase Requests"
+msgstr "Проект на заявка за покупка"
+
+msgctxt "model:ir.action,name:wizard_create_purchase"
+msgid "Create Purchase"
+msgstr "Създаване на покупка"
+
+msgctxt "model:ir.cron,name:cron_generate_request"
+msgid "Generate Purchase Requests"
+msgstr "Генериране на заявки за покупка"
+
+msgctxt "model:ir.cron,name:cron_shipment_iternal"
+msgid "Generate Internal Shipments"
+msgstr "Генериране на вътрешна пратка"
+
+msgctxt "model:ir.ui.menu,name:menu_create_purchase_request"
+msgid "Create Purchase Requests"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_order_point_form"
+msgid "Order Points"
+msgstr "Пренареждания"
+
+msgctxt "model:ir.ui.menu,name:menu_purchase_request_form"
+msgid "Purchase Requests"
+msgstr "Заявки за покупки"
+
+msgctxt "model:ir.ui.menu,name:menu_purchase_request_form_draft"
+msgid "Draft Purchase Requests"
+msgstr "Проект на заявки за покупка"
+
+msgctxt "model:purchase.request,name:0"
+msgid "Purchase Request"
+msgstr "Заявка за покупка"
+
+msgctxt "model:purchase.request.create_purchase.ask_party,name:0"
+msgid "Create Purchase Ask Party"
+msgstr "Създаване на покупка - питане на партньор"
+
+msgctxt "model:purchase.request.create_purchase.ask_term,name:0"
+msgid "Create Purchase Ask Term"
+msgstr "Запитване за създаване на условие за плащане"
+
+msgctxt "model:purchase.request.create_purchase_request.init,name:0"
+msgid "Create Purchase Request Init"
+msgstr ""
+
+msgctxt "model:res.group,name:group_purchase_request"
+msgid "Purchase Request"
+msgstr "Заявка за покупка"
+
+msgctxt "model:res.user,name:user_generate_request"
+msgid "Cron Purchase Request"
+msgstr "Планиране на заявка за покупка"
+
+msgctxt "model:res.user,name:user_generate_shipment_internal"
+msgid "Cron Intenal Shipment"
+msgstr "Планиране на вътрешена пратка"
+
+msgctxt "model:stock.order_point,name:0"
+msgid "Order Point"
+msgstr "Пренареждане"
+
+msgctxt "selection:purchase.request,state:0"
+msgid "Cancel"
+msgstr "Отказ"
+
+msgctxt "selection:purchase.request,state:0"
+msgid "Done"
+msgstr "Приключен"
+
+msgctxt "selection:purchase.request,state:0"
+msgid "Draft"
+msgstr "Проект"
+
+msgctxt "selection:purchase.request,state:0"
+msgid "Purchased"
+msgstr "Поръчан"
+
+msgctxt "selection:stock.order_point,type:0"
+msgid "Internal"
+msgstr "Вътрешно"
+
+msgctxt "selection:stock.order_point,type:0"
+msgid "Purchase"
+msgstr "Покупка"
+
+msgctxt "view:purchase.request.create_purchase.ask_party:0"
+msgid "Create Purchase: Missing Supplier"
+msgstr "Създаване на покупка; липсва доставчик"
+
+msgctxt "view:purchase.request.create_purchase.ask_term:0"
+msgid "Create Purchase: Missing Payment Term"
+msgstr "Създаване на покупка: Липсва условие за плащане"
+
+msgctxt "view:purchase.request.create_purchase_request.init:0"
+msgid "Create Purchase Request"
+msgstr ""
+
+msgctxt "view:purchase.request.create_purchase_request.init:0"
+msgid "Create Purchase Request?"
+msgstr ""
+
+msgctxt "view:purchase.request:0"
+msgid "Product Info"
+msgstr "Информация за продукт"
+
+msgctxt "view:purchase.request:0"
+msgid "Purchase Request"
+msgstr "Заявка за покупка"
+
+msgctxt "view:purchase.request:0"
+msgid "Purchase Requests"
+msgstr "Заявки за покупка"
+
+msgctxt "view:purchase.request:0"
+msgid "Supply Info"
+msgstr "Информация за доставчик"
+
+msgctxt "view:stock.order_point:0"
+msgid "Order Point"
+msgstr "Пренареждане"
+
+msgctxt "view:stock.order_point:0"
+msgid "Order Point Type"
+msgstr "Вид пренареждане"
+
+msgctxt "view:stock.order_point:0"
+msgid "Order Points"
+msgstr "Пренареждания"
+
+msgctxt "view:stock.order_point:0"
+msgid "Product Info"
+msgstr "Информация за продукт"
+
+msgctxt "wizard_button:purchase.request.create_purchase,ask_user_party,end:0"
+msgid "Cancel"
+msgstr "Отказ"
+
+msgctxt "wizard_button:purchase.request.create_purchase,ask_user_party,init:0"
+msgid "Continue"
+msgstr "Продължаване"
+
+msgctxt "wizard_button:purchase.request.create_purchase,ask_user_term,end:0"
+msgid "Cancel"
+msgstr "Отказ"
+
+msgctxt "wizard_button:purchase.request.create_purchase,ask_user_term,init:0"
+msgid "Continue"
+msgstr "Продължаване"
+
+#, fuzzy
+msgctxt "wizard_button:purchase.request.create_purchase_request,init,create:0"
+msgid "Create"
+msgstr "Създаване"
+
+#, fuzzy
+msgctxt "wizard_button:purchase.request.create_purchase_request,init,end:0"
+msgid "Cancel"
+msgstr "Отказ"
diff --git a/locale/cs_CZ.po b/locale/cs_CZ.po
new file mode 100644
index 0000000..ee59dee
--- /dev/null
+++ b/locale/cs_CZ.po
@@ -0,0 +1,345 @@
+#
+msgid ""
+msgstr "Content-Type: text/plain; charset=utf-8\n"
+
+msgctxt "error:purchase.request.create_purchase:0"
+msgid "Purchase price is missing for product: %s (id: %s)!"
+msgstr ""
+
+msgctxt "error:purchase.request.create_purchase:0"
+msgid "This price is necessary for creating purchase."
+msgstr ""
+
+msgctxt "error:purchase.request:0"
+msgid "Purchase requests are only created by the system."
+msgstr ""
+
+msgctxt "error:stock.order_point:0"
+msgid "Maximal quantity must be bigger than Minimal quantity"
+msgstr ""
+
+msgctxt "error:stock.order_point:0"
+msgid "Only one order point is allowed for each product-location pair."
+msgstr ""
+
+msgctxt "error:stock.order_point:0"
+msgid ""
+"You can not define two order points on the same product with opposite "
+"locations."
+msgstr ""
+
+msgctxt "field:product.product,order_points:0"
+msgid "Order Points"
+msgstr ""
+
+msgctxt "field:purchase.request,company:0"
+msgid "Company"
+msgstr ""
+
+msgctxt "field:purchase.request,computed_quantity:0"
+msgid "Computed Quantity"
+msgstr ""
+
+msgctxt "field:purchase.request,computed_uom:0"
+msgid "Computed UOM"
+msgstr ""
+
+msgctxt "field:purchase.request,origin:0"
+msgid "Origin"
+msgstr ""
+
+msgctxt "field:purchase.request,party:0"
+msgid "Party"
+msgstr ""
+
+msgctxt "field:purchase.request,product:0"
+msgid "Product"
+msgstr ""
+
+msgctxt "field:purchase.request,purchase:0"
+msgid "Purchase"
+msgstr ""
+
+msgctxt "field:purchase.request,purchase_date:0"
+msgid "Best Purchase Date"
+msgstr ""
+
+msgctxt "field:purchase.request,purchase_line:0"
+msgid "Purchase Line"
+msgstr ""
+
+msgctxt "field:purchase.request,quantity:0"
+msgid "Quantity"
+msgstr ""
+
+msgctxt "field:purchase.request,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:purchase.request,state:0"
+msgid "State"
+msgstr ""
+
+msgctxt "field:purchase.request,stock_level:0"
+msgid "Stock at Supply Date"
+msgstr ""
+
+msgctxt "field:purchase.request,supply_date:0"
+msgid "Expected Supply Date"
+msgstr ""
+
+msgctxt "field:purchase.request,uom:0"
+msgid "UOM"
+msgstr ""
+
+msgctxt "field:purchase.request,warehouse:0"
+msgid "Warehouse"
+msgstr ""
+
+msgctxt "field:purchase.request.create_purchase.ask_party,company:0"
+msgid "Company"
+msgstr ""
+
+msgctxt "field:purchase.request.create_purchase.ask_party,party:0"
+msgid "Supplier"
+msgstr ""
+
+msgctxt "field:purchase.request.create_purchase.ask_party,product:0"
+msgid "Product"
+msgstr ""
+
+msgctxt "field:purchase.request.create_purchase.ask_term,company:0"
+msgid "Company"
+msgstr ""
+
+msgctxt "field:purchase.request.create_purchase.ask_term,party:0"
+msgid "Supplier"
+msgstr ""
+
+msgctxt "field:purchase.request.create_purchase.ask_term,payment_term:0"
+msgid "Payment Term"
+msgstr ""
+
+msgctxt "field:stock.order_point,company:0"
+msgid "Company"
+msgstr ""
+
+msgctxt "field:stock.order_point,location:0"
+msgid "Location"
+msgstr ""
+
+msgctxt "field:stock.order_point,max_quantity:0"
+msgid "Maximal Quantity"
+msgstr ""
+
+msgctxt "field:stock.order_point,min_quantity:0"
+msgid "Minimal Quantity"
+msgstr ""
+
+msgctxt "field:stock.order_point,product:0"
+msgid "Product"
+msgstr ""
+
+msgctxt "field:stock.order_point,provisioning_location:0"
+msgid "Provisioning Location"
+msgstr ""
+
+msgctxt "field:stock.order_point,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:stock.order_point,storage_location:0"
+msgid "Storage Location"
+msgstr ""
+
+msgctxt "field:stock.order_point,type:0"
+msgid "Type"
+msgstr ""
+
+msgctxt "field:stock.order_point,unit:0"
+msgid "Unit"
+msgstr ""
+
+msgctxt "field:stock.order_point,unit_digits:0"
+msgid "Unit Digits"
+msgstr ""
+
+msgctxt "field:stock.order_point,warehouse_location:0"
+msgid "Warehouse Location"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_order_point_form"
+msgid "Order Points"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_purchase_form"
+msgid "Purchases"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_purchase_request_create_purchase_request"
+msgid "Create Purchase Requests"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_purchase_request_form"
+msgid "Purchase Requests"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_purchase_request_form_draft"
+msgid "Draft Purchase Requests"
+msgstr ""
+
+msgctxt "model:ir.action,name:wizard_create_purchase"
+msgid "Create Purchase"
+msgstr ""
+
+msgctxt "model:ir.cron,name:cron_generate_request"
+msgid "Generate Purchase Requests"
+msgstr ""
+
+msgctxt "model:ir.cron,name:cron_shipment_iternal"
+msgid "Generate Internal Shipments"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_create_purchase_request"
+msgid "Create Purchase Requests"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_order_point_form"
+msgid "Order Points"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_purchase_request_form"
+msgid "Purchase Requests"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_purchase_request_form_draft"
+msgid "Draft Purchase Requests"
+msgstr ""
+
+msgctxt "model:purchase.request,name:0"
+msgid "Purchase Request"
+msgstr ""
+
+msgctxt "model:purchase.request.create_purchase.ask_party,name:0"
+msgid "Create Purchase Ask Party"
+msgstr ""
+
+msgctxt "model:purchase.request.create_purchase.ask_term,name:0"
+msgid "Create Purchase Ask Term"
+msgstr ""
+
+msgctxt "model:purchase.request.create_purchase_request.init,name:0"
+msgid "Create Purchase Request Init"
+msgstr ""
+
+msgctxt "model:res.group,name:group_purchase_request"
+msgid "Purchase Request"
+msgstr ""
+
+msgctxt "model:res.user,name:user_generate_request"
+msgid "Cron Purchase Request"
+msgstr ""
+
+msgctxt "model:res.user,name:user_generate_shipment_internal"
+msgid "Cron Intenal Shipment"
+msgstr ""
+
+msgctxt "model:stock.order_point,name:0"
+msgid "Order Point"
+msgstr ""
+
+msgctxt "selection:purchase.request,state:0"
+msgid "Cancel"
+msgstr ""
+
+msgctxt "selection:purchase.request,state:0"
+msgid "Done"
+msgstr ""
+
+msgctxt "selection:purchase.request,state:0"
+msgid "Draft"
+msgstr ""
+
+msgctxt "selection:purchase.request,state:0"
+msgid "Purchased"
+msgstr ""
+
+msgctxt "selection:stock.order_point,type:0"
+msgid "Internal"
+msgstr ""
+
+msgctxt "selection:stock.order_point,type:0"
+msgid "Purchase"
+msgstr ""
+
+msgctxt "view:purchase.request.create_purchase.ask_party:0"
+msgid "Create Purchase: Missing Supplier"
+msgstr ""
+
+msgctxt "view:purchase.request.create_purchase.ask_term:0"
+msgid "Create Purchase: Missing Payment Term"
+msgstr ""
+
+msgctxt "view:purchase.request.create_purchase_request.init:0"
+msgid "Create Purchase Request"
+msgstr ""
+
+msgctxt "view:purchase.request.create_purchase_request.init:0"
+msgid "Create Purchase Request?"
+msgstr ""
+
+msgctxt "view:purchase.request:0"
+msgid "Product Info"
+msgstr ""
+
+msgctxt "view:purchase.request:0"
+msgid "Purchase Request"
+msgstr ""
+
+msgctxt "view:purchase.request:0"
+msgid "Purchase Requests"
+msgstr ""
+
+msgctxt "view:purchase.request:0"
+msgid "Supply Info"
+msgstr ""
+
+msgctxt "view:stock.order_point:0"
+msgid "Order Point"
+msgstr ""
+
+msgctxt "view:stock.order_point:0"
+msgid "Order Point Type"
+msgstr ""
+
+msgctxt "view:stock.order_point:0"
+msgid "Order Points"
+msgstr ""
+
+msgctxt "view:stock.order_point:0"
+msgid "Product Info"
+msgstr ""
+
+msgctxt "wizard_button:purchase.request.create_purchase,ask_user_party,end:0"
+msgid "Cancel"
+msgstr ""
+
+msgctxt "wizard_button:purchase.request.create_purchase,ask_user_party,init:0"
+msgid "Continue"
+msgstr ""
+
+msgctxt "wizard_button:purchase.request.create_purchase,ask_user_term,end:0"
+msgid "Cancel"
+msgstr ""
+
+msgctxt "wizard_button:purchase.request.create_purchase,ask_user_term,init:0"
+msgid "Continue"
+msgstr ""
+
+msgctxt "wizard_button:purchase.request.create_purchase_request,init,create:0"
+msgid "Create"
+msgstr ""
+
+msgctxt "wizard_button:purchase.request.create_purchase_request,init,end:0"
+msgid "Cancel"
+msgstr ""
diff --git a/locale/de_DE.po b/locale/de_DE.po
new file mode 100644
index 0000000..e450b60
--- /dev/null
+++ b/locale/de_DE.po
@@ -0,0 +1,363 @@
+#
+msgid ""
+msgstr "Content-Type: text/plain; charset=utf-8\n"
+
+msgctxt "error:purchase.request.create_purchase:0"
+msgid "Purchase price is missing for product: %s (id: %s)!"
+msgstr "Fehlender Einkaufspreis für Artikel: %s (id: %s)!"
+
+msgctxt "error:purchase.request.create_purchase:0"
+msgid "This price is necessary for creating purchase."
+msgstr "Dieser Preis wird für die Auftragserstellung benötigt!"
+
+msgctxt "error:purchase.request:0"
+msgid "Purchase requests are only created by the system."
+msgstr "Bestellvorschläge werden nur durch das System generiert!"
+
+msgctxt "error:stock.order_point:0"
+msgid "Maximal quantity must be bigger than Minimal quantity"
+msgstr "Die maximale Anzahl muss größer als die minimale Anzahl sein"
+
+msgctxt "error:stock.order_point:0"
+msgid "Only one order point is allowed for each product-location pair."
+msgstr "Es ist nur ein Bestellpunkt für jede Paarung Artikel-Lagerort erlaubt"
+
+msgctxt "error:stock.order_point:0"
+msgid ""
+"You can not define two order points on the same product with opposite "
+"locations."
+msgstr ""
+"Für einen Artikel können keine verschiedenen Bestellpunkte mit "
+"unterschiedlichen Lagerstandorten erstellt werden!"
+
+msgctxt "field:product.product,order_points:0"
+msgid "Order Points"
+msgstr "Bestellpunkte"
+
+msgctxt "field:purchase.request,company:0"
+msgid "Company"
+msgstr "Unternehmen"
+
+msgctxt "field:purchase.request,computed_quantity:0"
+msgid "Computed Quantity"
+msgstr "Berechnete Anzahl"
+
+msgctxt "field:purchase.request,computed_uom:0"
+msgid "Computed UOM"
+msgstr "Berechnete Maßeinheit"
+
+msgctxt "field:purchase.request,origin:0"
+msgid "Origin"
+msgstr "Herkunft"
+
+msgctxt "field:purchase.request,party:0"
+msgid "Party"
+msgstr "Partei"
+
+msgctxt "field:purchase.request,product:0"
+msgid "Product"
+msgstr "Artikel"
+
+msgctxt "field:purchase.request,purchase:0"
+msgid "Purchase"
+msgstr "Bestellvorschlag"
+
+msgctxt "field:purchase.request,purchase_date:0"
+msgid "Best Purchase Date"
+msgstr "Bestes Einkaufsdatum"
+
+msgctxt "field:purchase.request,purchase_line:0"
+msgid "Purchase Line"
+msgstr "Position Bestellvorschlag"
+
+msgctxt "field:purchase.request,quantity:0"
+msgid "Quantity"
+msgstr "Anzahl"
+
+msgctxt "field:purchase.request,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:purchase.request,state:0"
+msgid "State"
+msgstr "Status"
+
+msgctxt "field:purchase.request,stock_level:0"
+msgid "Stock at Supply Date"
+msgstr "Lagerbestand am Lieferdatum"
+
+msgctxt "field:purchase.request,supply_date:0"
+msgid "Expected Supply Date"
+msgstr "Voraussichtliches Lieferdatum"
+
+msgctxt "field:purchase.request,uom:0"
+msgid "UOM"
+msgstr "Maßeinheit"
+
+msgctxt "field:purchase.request,warehouse:0"
+msgid "Warehouse"
+msgstr "Warenlager"
+
+msgctxt "field:purchase.request.create_purchase.ask_party,company:0"
+msgid "Company"
+msgstr "Unternehmen"
+
+msgctxt "field:purchase.request.create_purchase.ask_party,party:0"
+msgid "Supplier"
+msgstr "Lieferant"
+
+msgctxt "field:purchase.request.create_purchase.ask_party,product:0"
+msgid "Product"
+msgstr "Artikel"
+
+msgctxt "field:purchase.request.create_purchase.ask_term,company:0"
+msgid "Company"
+msgstr "Unternehmen"
+
+msgctxt "field:purchase.request.create_purchase.ask_term,party:0"
+msgid "Supplier"
+msgstr "Lieferant"
+
+msgctxt "field:purchase.request.create_purchase.ask_term,payment_term:0"
+msgid "Payment Term"
+msgstr "Zahlungsbedingung"
+
+msgctxt "field:stock.order_point,company:0"
+msgid "Company"
+msgstr "Unternehmen"
+
+msgctxt "field:stock.order_point,location:0"
+msgid "Location"
+msgstr "Lagerort"
+
+msgctxt "field:stock.order_point,max_quantity:0"
+msgid "Maximal Quantity"
+msgstr "Maximale Anzahl"
+
+msgctxt "field:stock.order_point,min_quantity:0"
+msgid "Minimal Quantity"
+msgstr "Minimale Anzahl"
+
+msgctxt "field:stock.order_point,product:0"
+msgid "Product"
+msgstr "Artikel"
+
+msgctxt "field:stock.order_point,provisioning_location:0"
+msgid "Provisioning Location"
+msgstr "Bereitstellungsort"
+
+msgctxt "field:stock.order_point,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:stock.order_point,storage_location:0"
+msgid "Storage Location"
+msgstr "Lagerort"
+
+msgctxt "field:stock.order_point,type:0"
+msgid "Type"
+msgstr "Typ"
+
+msgctxt "field:stock.order_point,unit:0"
+msgid "Unit"
+msgstr "Einheit"
+
+msgctxt "field:stock.order_point,unit_digits:0"
+msgid "Unit Digits"
+msgstr "Anzahl Stellen"
+
+msgctxt "field:stock.order_point,warehouse_location:0"
+msgid "Warehouse Location"
+msgstr "Warenlager"
+
+msgctxt "model:ir.action,name:act_order_point_form"
+msgid "Order Points"
+msgstr "Bestellpunkte"
+
+msgctxt "model:ir.action,name:act_purchase_form"
+msgid "Purchases"
+msgstr "Einkäufe"
+
+msgctxt "model:ir.action,name:act_purchase_request_create_purchase_request"
+msgid "Create Purchase Requests"
+msgstr "Bestellvorschläge erstellen"
+
+msgctxt "model:ir.action,name:act_purchase_request_form"
+msgid "Purchase Requests"
+msgstr "Bestellvorschläge"
+
+msgctxt "model:ir.action,name:act_purchase_request_form_draft"
+msgid "Draft Purchase Requests"
+msgstr "Entwürfe Bestellvorschläge"
+
+msgctxt "model:ir.action,name:wizard_create_purchase"
+msgid "Create Purchase"
+msgstr "Auftrag erstellen"
+
+msgctxt "model:ir.cron,name:cron_generate_request"
+msgid "Generate Purchase Requests"
+msgstr "Erstellung von Bestellvorschlägen"
+
+msgctxt "model:ir.cron,name:cron_shipment_iternal"
+msgid "Generate Internal Shipments"
+msgstr "Erstellung von Internen Lieferposten"
+
+msgctxt "model:ir.ui.menu,name:menu_create_purchase_request"
+msgid "Create Purchase Requests"
+msgstr "Bestellvorschläge erstellen"
+
+msgctxt "model:ir.ui.menu,name:menu_order_point_form"
+msgid "Order Points"
+msgstr "Bestellpunkte"
+
+msgctxt "model:ir.ui.menu,name:menu_purchase_request_form"
+msgid "Purchase Requests"
+msgstr "Bestellvorschläge"
+
+msgctxt "model:ir.ui.menu,name:menu_purchase_request_form_draft"
+msgid "Draft Purchase Requests"
+msgstr "Entwürfe (Bestellvorschläge)"
+
+msgctxt "model:purchase.request,name:0"
+msgid "Purchase Request"
+msgstr "Bestellvorschlag"
+
+msgctxt "model:purchase.request.create_purchase.ask_party,name:0"
+msgid "Create Purchase Ask Party"
+msgstr "Verkauf Nachfrage Partei"
+
+msgctxt "model:purchase.request.create_purchase.ask_term,name:0"
+msgid "Create Purchase Ask Term"
+msgstr "Verkauf Nachfrage Zahlungsbedingung"
+
+msgctxt "model:purchase.request.create_purchase_request.init,name:0"
+msgid "Create Purchase Request Init"
+msgstr "Bestellvorschläge erstellen Init"
+
+msgctxt "model:res.group,name:group_purchase_request"
+msgid "Purchase Request"
+msgstr "Bestellvorschlag"
+
+msgctxt "model:res.user,name:user_generate_request"
+msgid "Cron Purchase Request"
+msgstr "Zeitplaner Bestellvorschläge"
+
+msgctxt "model:res.user,name:user_generate_shipment_internal"
+msgid "Cron Intenal Shipment"
+msgstr "Zeitplaner Interne Lieferposten"
+
+msgctxt "model:stock.order_point,name:0"
+msgid "Order Point"
+msgstr "Bestellpunkt"
+
+msgctxt "selection:purchase.request,origin:0"
+msgid "Order Point"
+msgstr "Bestellpunkt"
+
+msgctxt "selection:purchase.request,state:0"
+msgid "Cancel"
+msgstr "Annulliert"
+
+msgctxt "selection:purchase.request,state:0"
+msgid "Done"
+msgstr "Erledigt"
+
+msgctxt "selection:purchase.request,state:0"
+msgid "Draft"
+msgstr "Entwurf"
+
+msgctxt "selection:purchase.request,state:0"
+msgid "Purchased"
+msgstr "Auftrag erstellt"
+
+msgctxt "selection:stock.order_point,type:0"
+msgid "Internal"
+msgstr "Intern"
+
+msgctxt "selection:stock.order_point,type:0"
+msgid "Purchase"
+msgstr "Bestellvorschlag"
+
+msgctxt "view:purchase.request.create_purchase.ask_party:0"
+msgid ""
+msgstr ""
+
+msgctxt "view:purchase.request.create_purchase.ask_party:0"
+msgid "Create Purchase: Missing Supplier"
+msgstr "Auftragerstellung: Fehlender Lieferant"
+
+msgctxt "view:purchase.request.create_purchase.ask_term:0"
+msgid "Create Purchase: Missing Payment Term"
+msgstr "Auftragerstellung: Fehlende Zahlungsbedingung"
+
+msgctxt "view:purchase.request.create_purchase_request.init:0"
+msgid "Create Purchase Request"
+msgstr "Bestellvorschlag erstellen"
+
+msgctxt "view:purchase.request.create_purchase_request.init:0"
+msgid "Create Purchase Request?"
+msgstr "Bestellvorschlag erstellen?"
+
+msgctxt "view:purchase.request:0"
+msgid "Product Info"
+msgstr "Info Artikel"
+
+msgctxt "view:purchase.request:0"
+msgid "Purchase Request"
+msgstr "Bestellvorschlag"
+
+msgctxt "view:purchase.request:0"
+msgid "Purchase Requests"
+msgstr "Bestellvorschläge"
+
+msgctxt "view:purchase.request:0"
+msgid "Supply Info"
+msgstr "Info"
+
+msgctxt "view:purchase.request:0"
+msgid "supply Info"
+msgstr "Info Lieferant"
+
+msgctxt "view:stock.order_point:0"
+msgid "Locations"
+msgstr "Lagerorte"
+
+msgctxt "view:stock.order_point:0"
+msgid "Order Point"
+msgstr "Bestellpunkt"
+
+msgctxt "view:stock.order_point:0"
+msgid "Order Point Type"
+msgstr "Typ Bestellpunkt"
+
+msgctxt "view:stock.order_point:0"
+msgid "Order Points"
+msgstr "Bestellpunkte"
+
+msgctxt "view:stock.order_point:0"
+msgid "Product Info"
+msgstr "Artikelinfo"
+
+msgctxt "wizard_button:purchase.request.create_purchase,ask_user_party,end:0"
+msgid "Cancel"
+msgstr "Abbrechen"
+
+msgctxt "wizard_button:purchase.request.create_purchase,ask_user_party,init:0"
+msgid "Continue"
+msgstr "Fortfahren"
+
+msgctxt "wizard_button:purchase.request.create_purchase,ask_user_term,end:0"
+msgid "Cancel"
+msgstr "Abbrechen"
+
+msgctxt "wizard_button:purchase.request.create_purchase,ask_user_term,init:0"
+msgid "Continue"
+msgstr "Fortfahren"
+
+msgctxt "wizard_button:purchase.request.create_purchase_request,init,create:0"
+msgid "Create"
+msgstr "Erstellen"
+
+msgctxt "wizard_button:purchase.request.create_purchase_request,init,end:0"
+msgid "Cancel"
+msgstr "Abbrechen"
diff --git a/locale/es_CO.po b/locale/es_CO.po
new file mode 100644
index 0000000..ba10ff5
--- /dev/null
+++ b/locale/es_CO.po
@@ -0,0 +1,356 @@
+#
+msgid ""
+msgstr "Content-Type: text/plain; charset=utf-8\n"
+
+msgctxt "error:purchase.request.create_purchase:0"
+msgid "Purchase price is missing for product: %s (id: %s)!"
+msgstr "El precio de compra falta para el producto: %s (id: %s)!"
+
+msgctxt "error:purchase.request.create_purchase:0"
+msgid "This price is necessary for creating purchase."
+msgstr "Este precio se necesita para creación de compras."
+
+msgctxt "error:purchase.request:0"
+msgid "Purchase requests are only created by the system."
+msgstr "Los requisitos de compras son creados por el sistema únicamente."
+
+msgctxt "error:stock.order_point:0"
+msgid "Maximal quantity must be bigger than Minimal quantity"
+msgstr "La cantidad máxima debe ser mayor que la Cantidad Mínima"
+
+msgctxt "error:stock.order_point:0"
+msgid "Only one order point is allowed for each product-location pair."
+msgstr "Solamente se admite un punto de orden para cada par cliente-producto."
+
+msgctxt "error:stock.order_point:0"
+msgid ""
+"You can not define two order points on the same product with opposite "
+"locations."
+msgstr "No puede definir dos puntos de orden con lugares opuestos."
+
+msgctxt "field:product.product,order_points:0"
+msgid "Order Points"
+msgstr "Puntos de Orden"
+
+msgctxt "field:purchase.request,company:0"
+msgid "Company"
+msgstr "Compañía"
+
+msgctxt "field:purchase.request,computed_quantity:0"
+msgid "Computed Quantity"
+msgstr "Calcule Cantidad"
+
+msgctxt "field:purchase.request,computed_uom:0"
+msgid "Computed UOM"
+msgstr "Calcule UOM"
+
+msgctxt "field:purchase.request,origin:0"
+msgid "Origin"
+msgstr "Origen"
+
+msgctxt "field:purchase.request,party:0"
+msgid "Party"
+msgstr "Tercero"
+
+msgctxt "field:purchase.request,product:0"
+msgid "Product"
+msgstr "Producto"
+
+msgctxt "field:purchase.request,purchase:0"
+msgid "Purchase"
+msgstr "Compra"
+
+msgctxt "field:purchase.request,purchase_date:0"
+msgid "Best Purchase Date"
+msgstr "Mejor Fecha de Compra"
+
+msgctxt "field:purchase.request,purchase_line:0"
+msgid "Purchase Line"
+msgstr "Línea de Compra"
+
+msgctxt "field:purchase.request,quantity:0"
+msgid "Quantity"
+msgstr "Cantidad"
+
+msgctxt "field:purchase.request,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:purchase.request,state:0"
+msgid "State"
+msgstr "Estado"
+
+msgctxt "field:purchase.request,stock_level:0"
+msgid "Stock at Supply Date"
+msgstr "Almacenar al Momento en la fecha de abastecimiento"
+
+msgctxt "field:purchase.request,supply_date:0"
+msgid "Expected Supply Date"
+msgstr "Fecha Esperada de Abastecimiento"
+
+msgctxt "field:purchase.request,uom:0"
+msgid "UOM"
+msgstr "UDM"
+
+msgctxt "field:purchase.request,warehouse:0"
+msgid "Warehouse"
+msgstr "Depósito"
+
+msgctxt "field:purchase.request.create_purchase.ask_party,company:0"
+msgid "Company"
+msgstr "Compañía"
+
+msgctxt "field:purchase.request.create_purchase.ask_party,party:0"
+msgid "Supplier"
+msgstr "Proveedor"
+
+msgctxt "field:purchase.request.create_purchase.ask_party,product:0"
+msgid "Product"
+msgstr "Producto"
+
+msgctxt "field:purchase.request.create_purchase.ask_term,company:0"
+msgid "Company"
+msgstr "Compañía"
+
+msgctxt "field:purchase.request.create_purchase.ask_term,party:0"
+msgid "Supplier"
+msgstr "Proveedor"
+
+msgctxt "field:purchase.request.create_purchase.ask_term,payment_term:0"
+msgid "Payment Term"
+msgstr "Término de Pago"
+
+msgctxt "field:stock.order_point,company:0"
+msgid "Company"
+msgstr "Compañía"
+
+msgctxt "field:stock.order_point,location:0"
+msgid "Location"
+msgstr "Lugar"
+
+msgctxt "field:stock.order_point,max_quantity:0"
+msgid "Maximal Quantity"
+msgstr "Cantidad Máxima"
+
+msgctxt "field:stock.order_point,min_quantity:0"
+msgid "Minimal Quantity"
+msgstr "Cantidad Mínima"
+
+msgctxt "field:stock.order_point,product:0"
+msgid "Product"
+msgstr "Producto"
+
+msgctxt "field:stock.order_point,provisioning_location:0"
+msgid "Provisioning Location"
+msgstr "Lugar de Aprovisionamiento"
+
+msgctxt "field:stock.order_point,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:stock.order_point,storage_location:0"
+msgid "Storage Location"
+msgstr "Lugar de almacenamiento"
+
+msgctxt "field:stock.order_point,type:0"
+msgid "Type"
+msgstr "Tipo"
+
+msgctxt "field:stock.order_point,unit:0"
+msgid "Unit"
+msgstr "Unidad"
+
+msgctxt "field:stock.order_point,unit_digits:0"
+msgid "Unit Digits"
+msgstr "Dígitos de Unidad"
+
+msgctxt "field:stock.order_point,warehouse_location:0"
+msgid "Warehouse Location"
+msgstr "Lugar de la bodega"
+
+msgctxt "model:ir.action,name:act_order_point_form"
+msgid "Order Points"
+msgstr "Puntos de Orden"
+
+msgctxt "model:ir.action,name:act_purchase_form"
+msgid "Purchases"
+msgstr "Compras"
+
+msgctxt "model:ir.action,name:act_purchase_request_create_purchase_request"
+msgid "Create Purchase Requests"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_purchase_request_form"
+msgid "Purchase Requests"
+msgstr "Solicitudes de Compra"
+
+msgctxt "model:ir.action,name:act_purchase_request_form_draft"
+msgid "Draft Purchase Requests"
+msgstr "Requisición de Prueba de Compras"
+
+msgctxt "model:ir.action,name:wizard_create_purchase"
+msgid "Create Purchase"
+msgstr "Crear Compra"
+
+msgctxt "model:ir.cron,name:cron_generate_request"
+msgid "Generate Purchase Requests"
+msgstr "Genere Requisito de Compra"
+
+msgctxt "model:ir.cron,name:cron_shipment_iternal"
+msgid "Generate Internal Shipments"
+msgstr "Genere Envío Interno"
+
+msgctxt "model:ir.ui.menu,name:menu_create_purchase_request"
+msgid "Create Purchase Requests"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_order_point_form"
+msgid "Order Points"
+msgstr "Puntos de Orden"
+
+msgctxt "model:ir.ui.menu,name:menu_purchase_request_form"
+msgid "Purchase Requests"
+msgstr "Solicitudes de Compra"
+
+msgctxt "model:ir.ui.menu,name:menu_purchase_request_form_draft"
+msgid "Draft Purchase Requests"
+msgstr "Requisición de Prueba de Compras"
+
+msgctxt "model:purchase.request,name:0"
+msgid "Purchase Request"
+msgstr "Solicitud de Compra"
+
+msgctxt "model:purchase.request.create_purchase.ask_party,name:0"
+msgid "Create Purchase Ask Party"
+msgstr "Crea Pregunta a Tercero de Compra"
+
+msgctxt "model:purchase.request.create_purchase.ask_term,name:0"
+msgid "Create Purchase Ask Term"
+msgstr "Crea Pregunta a Tercero de Término"
+
+msgctxt "model:purchase.request.create_purchase_request.init,name:0"
+msgid "Create Purchase Request Init"
+msgstr ""
+
+msgctxt "model:res.group,name:group_purchase_request"
+msgid "Purchase Request"
+msgstr "Solicitud de Compra"
+
+msgctxt "model:res.user,name:user_generate_request"
+msgid "Cron Purchase Request"
+msgstr "Cron Requisito de Compra"
+
+msgctxt "model:res.user,name:user_generate_shipment_internal"
+msgid "Cron Intenal Shipment"
+msgstr "Cron Envío Interno"
+
+msgctxt "model:stock.order_point,name:0"
+msgid "Order Point"
+msgstr "Punto de Orden"
+
+msgctxt "selection:purchase.request,origin:0"
+msgid "Order Point"
+msgstr "Punto de Orden"
+
+msgctxt "selection:purchase.request,state:0"
+msgid "Cancel"
+msgstr "Cancelar"
+
+msgctxt "selection:purchase.request,state:0"
+msgid "Done"
+msgstr "Hecho"
+
+msgctxt "selection:purchase.request,state:0"
+msgid "Draft"
+msgstr "Borrador"
+
+msgctxt "selection:purchase.request,state:0"
+msgid "Purchased"
+msgstr "Comprado"
+
+msgctxt "selection:stock.order_point,type:0"
+msgid "Internal"
+msgstr "Intern@"
+
+msgctxt "selection:stock.order_point,type:0"
+msgid "Purchase"
+msgstr "Compra"
+
+msgctxt "view:purchase.request.create_purchase.ask_party:0"
+msgid "Create Purchase: Missing Supplier"
+msgstr "Crear Compra: Sin Proveedor"
+
+msgctxt "view:purchase.request.create_purchase.ask_term:0"
+msgid "Create Purchase: Missing Payment Term"
+msgstr "Crear Compra: Sin Término de Pago"
+
+msgctxt "view:purchase.request.create_purchase_request.init:0"
+msgid "Create Purchase Request"
+msgstr ""
+
+msgctxt "view:purchase.request.create_purchase_request.init:0"
+msgid "Create Purchase Request?"
+msgstr ""
+
+msgctxt "view:purchase.request:0"
+msgid "Product Info"
+msgstr "Información de Producto"
+
+msgctxt "view:purchase.request:0"
+msgid "Purchase Request"
+msgstr "Solicitud de Compra"
+
+msgctxt "view:purchase.request:0"
+msgid "Purchase Requests"
+msgstr "Solicitudes de Compra"
+
+msgctxt "view:purchase.request:0"
+msgid "Supply Info"
+msgstr "Información de proveedor"
+
+msgctxt "view:stock.order_point:0"
+msgid "Locations"
+msgstr "Lugares"
+
+msgctxt "view:stock.order_point:0"
+msgid "Order Point"
+msgstr "Punto de Orden"
+
+msgctxt "view:stock.order_point:0"
+msgid "Order Point Type"
+msgstr "Tipo de Punto de Orden"
+
+#, fuzzy
+msgctxt "view:stock.order_point:0"
+msgid "Order Points"
+msgstr "Puntos de Orden"
+
+msgctxt "view:stock.order_point:0"
+msgid "Product Info"
+msgstr "Información de Producto"
+
+msgctxt "wizard_button:purchase.request.create_purchase,ask_user_party,end:0"
+msgid "Cancel"
+msgstr "Cancelar"
+
+msgctxt "wizard_button:purchase.request.create_purchase,ask_user_party,init:0"
+msgid "Continue"
+msgstr "Continuar"
+
+msgctxt "wizard_button:purchase.request.create_purchase,ask_user_term,end:0"
+msgid "Cancel"
+msgstr "Cancelar"
+
+msgctxt "wizard_button:purchase.request.create_purchase,ask_user_term,init:0"
+msgid "Continue"
+msgstr "Continuar"
+
+#, fuzzy
+msgctxt "wizard_button:purchase.request.create_purchase_request,init,create:0"
+msgid "Create"
+msgstr "Crear"
+
+#, fuzzy
+msgctxt "wizard_button:purchase.request.create_purchase_request,init,end:0"
+msgid "Cancel"
+msgstr "Cancelar"
diff --git a/locale/es_ES.po b/locale/es_ES.po
new file mode 100644
index 0000000..c693af8
--- /dev/null
+++ b/locale/es_ES.po
@@ -0,0 +1,358 @@
+#
+msgid ""
+msgstr "Content-Type: text/plain; charset=utf-8\n"
+
+msgctxt "error:purchase.request.create_purchase:0"
+msgid "Purchase price is missing for product: %s (id: %s)!"
+msgstr "Falta el precio de compra para el producto: %s (id: %s)"
+
+msgctxt "error:purchase.request.create_purchase:0"
+msgid "This price is necessary for creating purchase."
+msgstr "Se necesita este precio para crear la compra."
+
+msgctxt "error:purchase.request:0"
+msgid "Purchase requests are only created by the system."
+msgstr "Las solicitudes de compra solo las crea el sistema."
+
+msgctxt "error:stock.order_point:0"
+msgid "Maximal quantity must be bigger than Minimal quantity"
+msgstr "La cantidad máxima debe ser mayor que la mínima"
+
+msgctxt "error:stock.order_point:0"
+msgid "Only one order point is allowed for each product-location pair."
+msgstr "Solo se permite un punto de orden por cada par de producto-ubicación."
+
+msgctxt "error:stock.order_point:0"
+msgid ""
+"You can not define two order points on the same product with opposite "
+"locations."
+msgstr ""
+"No puede definir dos puntos de orden en el mismo producto con ubicaciones "
+"opuestas."
+
+msgctxt "field:product.product,order_points:0"
+msgid "Order Points"
+msgstr "Puntos de orden"
+
+msgctxt "field:purchase.request,company:0"
+msgid "Company"
+msgstr "Empresa"
+
+msgctxt "field:purchase.request,computed_quantity:0"
+msgid "Computed Quantity"
+msgstr "Cantidad calculada"
+
+msgctxt "field:purchase.request,computed_uom:0"
+msgid "Computed UOM"
+msgstr "UdM calculada"
+
+msgctxt "field:purchase.request,origin:0"
+msgid "Origin"
+msgstr "Origen"
+
+msgctxt "field:purchase.request,party:0"
+msgid "Party"
+msgstr "Tercero"
+
+msgctxt "field:purchase.request,product:0"
+msgid "Product"
+msgstr "Producto"
+
+msgctxt "field:purchase.request,purchase:0"
+msgid "Purchase"
+msgstr "Compra"
+
+msgctxt "field:purchase.request,purchase_date:0"
+msgid "Best Purchase Date"
+msgstr "Mejor fecha de compra"
+
+msgctxt "field:purchase.request,purchase_line:0"
+msgid "Purchase Line"
+msgstr "Línea de compra"
+
+msgctxt "field:purchase.request,quantity:0"
+msgid "Quantity"
+msgstr "Cantidad"
+
+msgctxt "field:purchase.request,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:purchase.request,state:0"
+msgid "State"
+msgstr "Estado"
+
+msgctxt "field:purchase.request,stock_level:0"
+msgid "Stock at Supply Date"
+msgstr "Existencias a la fecha del suministro"
+
+msgctxt "field:purchase.request,supply_date:0"
+msgid "Expected Supply Date"
+msgstr "Fecha estimada de suministro"
+
+msgctxt "field:purchase.request,uom:0"
+msgid "UOM"
+msgstr "UdM"
+
+msgctxt "field:purchase.request,warehouse:0"
+msgid "Warehouse"
+msgstr "Almacén"
+
+msgctxt "field:purchase.request.create_purchase.ask_party,company:0"
+msgid "Company"
+msgstr "Empresa"
+
+msgctxt "field:purchase.request.create_purchase.ask_party,party:0"
+msgid "Supplier"
+msgstr "Proveedor"
+
+msgctxt "field:purchase.request.create_purchase.ask_party,product:0"
+msgid "Product"
+msgstr "Producto"
+
+msgctxt "field:purchase.request.create_purchase.ask_term,company:0"
+msgid "Company"
+msgstr "Empresa"
+
+msgctxt "field:purchase.request.create_purchase.ask_term,party:0"
+msgid "Supplier"
+msgstr "Proveedor"
+
+msgctxt "field:purchase.request.create_purchase.ask_term,payment_term:0"
+msgid "Payment Term"
+msgstr "Plazo de pago"
+
+msgctxt "field:stock.order_point,company:0"
+msgid "Company"
+msgstr "Empresa"
+
+msgctxt "field:stock.order_point,location:0"
+msgid "Location"
+msgstr "Ubicación"
+
+msgctxt "field:stock.order_point,max_quantity:0"
+msgid "Maximal Quantity"
+msgstr "Cantidad máxima"
+
+msgctxt "field:stock.order_point,min_quantity:0"
+msgid "Minimal Quantity"
+msgstr "Cantidad mínima"
+
+msgctxt "field:stock.order_point,product:0"
+msgid "Product"
+msgstr "Producto"
+
+msgctxt "field:stock.order_point,provisioning_location:0"
+msgid "Provisioning Location"
+msgstr "Ubicación del aprovisionamiento"
+
+msgctxt "field:stock.order_point,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:stock.order_point,storage_location:0"
+msgid "Storage Location"
+msgstr "Ubicación del almacén"
+
+msgctxt "field:stock.order_point,type:0"
+msgid "Type"
+msgstr "Tipo"
+
+msgctxt "field:stock.order_point,unit:0"
+msgid "Unit"
+msgstr "Unidad"
+
+msgctxt "field:stock.order_point,unit_digits:0"
+msgid "Unit Digits"
+msgstr "Decimales de la unidad"
+
+msgctxt "field:stock.order_point,warehouse_location:0"
+msgid "Warehouse Location"
+msgstr "Ubicación del almacén"
+
+msgctxt "model:ir.action,name:act_order_point_form"
+msgid "Order Points"
+msgstr "Puntos de orden"
+
+msgctxt "model:ir.action,name:act_purchase_form"
+msgid "Purchases"
+msgstr "Compras"
+
+msgctxt "model:ir.action,name:act_purchase_request_create_purchase_request"
+msgid "Create Purchase Requests"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_purchase_request_form"
+msgid "Purchase Requests"
+msgstr "Solicitudes de compra"
+
+msgctxt "model:ir.action,name:act_purchase_request_form_draft"
+msgid "Draft Purchase Requests"
+msgstr ""
+
+msgctxt "model:ir.action,name:wizard_create_purchase"
+msgid "Create Purchase"
+msgstr "Crear compra"
+
+msgctxt "model:ir.cron,name:cron_generate_request"
+msgid "Generate Purchase Requests"
+msgstr "Generar peticiones de compra"
+
+msgctxt "model:ir.cron,name:cron_shipment_iternal"
+msgid "Generate Internal Shipments"
+msgstr "Generar envios internos"
+
+msgctxt "model:ir.ui.menu,name:menu_create_purchase_request"
+msgid "Create Purchase Requests"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_order_point_form"
+msgid "Order Points"
+msgstr "Puntos de orden"
+
+msgctxt "model:ir.ui.menu,name:menu_purchase_request_form"
+msgid "Purchase Requests"
+msgstr "Solicitudes de compra"
+
+msgctxt "model:ir.ui.menu,name:menu_purchase_request_form_draft"
+msgid "Draft Purchase Requests"
+msgstr ""
+
+msgctxt "model:purchase.request,name:0"
+msgid "Purchase Request"
+msgstr "Solicitud de compra"
+
+msgctxt "model:purchase.request.create_purchase.ask_party,name:0"
+msgid "Create Purchase Ask Party"
+msgstr "Crear compra - Petición de tercero"
+
+msgctxt "model:purchase.request.create_purchase.ask_term,name:0"
+msgid "Create Purchase Ask Term"
+msgstr "Crear compra - Petición de plazo"
+
+msgctxt "model:purchase.request.create_purchase_request.init,name:0"
+msgid "Create Purchase Request Init"
+msgstr ""
+
+msgctxt "model:res.group,name:group_purchase_request"
+msgid "Purchase Request"
+msgstr "Solicitud de compra"
+
+msgctxt "model:res.user,name:user_generate_request"
+msgid "Cron Purchase Request"
+msgstr "Programador de tareas de solicitudes de compra"
+
+msgctxt "model:res.user,name:user_generate_shipment_internal"
+msgid "Cron Intenal Shipment"
+msgstr "Programador de tareas de envio interno"
+
+msgctxt "model:stock.order_point,name:0"
+msgid "Order Point"
+msgstr "Punto de orden"
+
+msgctxt "selection:purchase.request,origin:0"
+msgid "Order Point"
+msgstr "Punto de orden"
+
+msgctxt "selection:purchase.request,state:0"
+msgid "Cancel"
+msgstr "Cancelar"
+
+msgctxt "selection:purchase.request,state:0"
+msgid "Done"
+msgstr "Terminada"
+
+msgctxt "selection:purchase.request,state:0"
+msgid "Draft"
+msgstr "Borrador"
+
+msgctxt "selection:purchase.request,state:0"
+msgid "Purchased"
+msgstr "Comprado"
+
+msgctxt "selection:stock.order_point,type:0"
+msgid "Internal"
+msgstr "Interno"
+
+msgctxt "selection:stock.order_point,type:0"
+msgid "Purchase"
+msgstr "Compra"
+
+msgctxt "view:purchase.request.create_purchase.ask_party:0"
+msgid "Create Purchase: Missing Supplier"
+msgstr "Crear compra: sin proveedor"
+
+msgctxt "view:purchase.request.create_purchase.ask_term:0"
+msgid "Create Purchase: Missing Payment Term"
+msgstr "Crear compra: sin término de pago"
+
+msgctxt "view:purchase.request.create_purchase_request.init:0"
+msgid "Create Purchase Request"
+msgstr ""
+
+msgctxt "view:purchase.request.create_purchase_request.init:0"
+msgid "Create Purchase Request?"
+msgstr ""
+
+msgctxt "view:purchase.request:0"
+msgid "Product Info"
+msgstr "Información del producto"
+
+msgctxt "view:purchase.request:0"
+msgid "Purchase Request"
+msgstr "Solicitud de compra"
+
+msgctxt "view:purchase.request:0"
+msgid "Purchase Requests"
+msgstr "Solicitudes de compra"
+
+msgctxt "view:purchase.request:0"
+msgid "Supply Info"
+msgstr "Información del suministro"
+
+msgctxt "view:stock.order_point:0"
+msgid "Locations"
+msgstr "Ubicaciones"
+
+msgctxt "view:stock.order_point:0"
+msgid "Order Point"
+msgstr "Punto de orden"
+
+msgctxt "view:stock.order_point:0"
+msgid "Order Point Type"
+msgstr "Tipo de punto de orden"
+
+#, fuzzy
+msgctxt "view:stock.order_point:0"
+msgid "Order Points"
+msgstr "Puntos de orden"
+
+msgctxt "view:stock.order_point:0"
+msgid "Product Info"
+msgstr "Información del producto"
+
+msgctxt "wizard_button:purchase.request.create_purchase,ask_user_party,end:0"
+msgid "Cancel"
+msgstr "Cancelar"
+
+msgctxt "wizard_button:purchase.request.create_purchase,ask_user_party,init:0"
+msgid "Continue"
+msgstr "Continuar"
+
+msgctxt "wizard_button:purchase.request.create_purchase,ask_user_term,end:0"
+msgid "Cancel"
+msgstr "Cancelar"
+
+msgctxt "wizard_button:purchase.request.create_purchase,ask_user_term,init:0"
+msgid "Continue"
+msgstr "Continuar"
+
+#, fuzzy
+msgctxt "wizard_button:purchase.request.create_purchase_request,init,create:0"
+msgid "Create"
+msgstr "Crear"
+
+#, fuzzy
+msgctxt "wizard_button:purchase.request.create_purchase_request,init,end:0"
+msgid "Cancel"
+msgstr "Cancelar"
diff --git a/locale/fr_FR.po b/locale/fr_FR.po
new file mode 100644
index 0000000..192ef58
--- /dev/null
+++ b/locale/fr_FR.po
@@ -0,0 +1,357 @@
+#
+msgid ""
+msgstr "Content-Type: text/plain; charset=utf-8\n"
+
+msgctxt "error:purchase.request.create_purchase:0"
+msgid "Purchase price is missing for product: %s (id: %s)!"
+msgstr "Le prix d'achat est absent pour le produit : %s (id: %s) !"
+
+msgctxt "error:purchase.request.create_purchase:0"
+msgid "This price is necessary for creating purchase."
+msgstr "Ce prix est nécessaire pour créer les achats."
+
+msgctxt "error:purchase.request:0"
+msgid "Purchase requests are only created by the system."
+msgstr "Les demandes d'achat sont uniquement crées par le sytème"
+
+msgctxt "error:stock.order_point:0"
+msgid "Maximal quantity must be bigger than Minimal quantity"
+msgstr "La Quantité maximale doit être supérieure à la quantité minimale"
+
+msgctxt "error:stock.order_point:0"
+msgid "Only one order point is allowed for each product-location pair."
+msgstr ""
+"Une seule règle d'approvisionnement est autorisée par paire produit-"
+"emplacement"
+
+msgctxt "error:stock.order_point:0"
+msgid ""
+"You can not define two order points on the same product with opposite "
+"locations."
+msgstr ""
+"Vous ne pouvez pas définir deux règles d'approvisionnement sur le même "
+"produit avec des emplacement opposés"
+
+msgctxt "field:product.product,order_points:0"
+msgid "Order Points"
+msgstr "Règles d'approvisionnements"
+
+msgctxt "field:purchase.request,company:0"
+msgid "Company"
+msgstr "Société"
+
+msgctxt "field:purchase.request,computed_quantity:0"
+msgid "Computed Quantity"
+msgstr "Quantité calculée"
+
+msgctxt "field:purchase.request,computed_uom:0"
+msgid "Computed UOM"
+msgstr "UDM calculée"
+
+msgctxt "field:purchase.request,origin:0"
+msgid "Origin"
+msgstr "Origine"
+
+msgctxt "field:purchase.request,party:0"
+msgid "Party"
+msgstr "Tiers"
+
+msgctxt "field:purchase.request,product:0"
+msgid "Product"
+msgstr "Produit"
+
+msgctxt "field:purchase.request,purchase:0"
+msgid "Purchase"
+msgstr "Achat"
+
+msgctxt "field:purchase.request,purchase_date:0"
+msgid "Best Purchase Date"
+msgstr "Meilleur date d'achat"
+
+msgctxt "field:purchase.request,purchase_line:0"
+msgid "Purchase Line"
+msgstr "Ligne d'achat"
+
+msgctxt "field:purchase.request,quantity:0"
+msgid "Quantity"
+msgstr "Quantité"
+
+msgctxt "field:purchase.request,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:purchase.request,state:0"
+msgid "State"
+msgstr "État"
+
+msgctxt "field:purchase.request,stock_level:0"
+msgid "Stock at Supply Date"
+msgstr "Stock à la date de livraison"
+
+msgctxt "field:purchase.request,supply_date:0"
+msgid "Expected Supply Date"
+msgstr "Date de livraison attendue"
+
+msgctxt "field:purchase.request,uom:0"
+msgid "UOM"
+msgstr "UDM"
+
+msgctxt "field:purchase.request,warehouse:0"
+msgid "Warehouse"
+msgstr "Entrepôt"
+
+msgctxt "field:purchase.request.create_purchase.ask_party,company:0"
+msgid "Company"
+msgstr "Société"
+
+msgctxt "field:purchase.request.create_purchase.ask_party,party:0"
+msgid "Supplier"
+msgstr "Fournisseur"
+
+msgctxt "field:purchase.request.create_purchase.ask_party,product:0"
+msgid "Product"
+msgstr "Produit"
+
+msgctxt "field:purchase.request.create_purchase.ask_term,company:0"
+msgid "Company"
+msgstr "Société"
+
+msgctxt "field:purchase.request.create_purchase.ask_term,party:0"
+msgid "Supplier"
+msgstr "Fournisseur"
+
+msgctxt "field:purchase.request.create_purchase.ask_term,payment_term:0"
+msgid "Payment Term"
+msgstr "Condition de paiement"
+
+msgctxt "field:stock.order_point,company:0"
+msgid "Company"
+msgstr "Société"
+
+msgctxt "field:stock.order_point,location:0"
+msgid "Location"
+msgstr "Emplacement"
+
+msgctxt "field:stock.order_point,max_quantity:0"
+msgid "Maximal Quantity"
+msgstr "Quantité maximale"
+
+msgctxt "field:stock.order_point,min_quantity:0"
+msgid "Minimal Quantity"
+msgstr "Quantité minimale"
+
+msgctxt "field:stock.order_point,product:0"
+msgid "Product"
+msgstr "Produit"
+
+msgctxt "field:stock.order_point,provisioning_location:0"
+msgid "Provisioning Location"
+msgstr "Emplacement d'appro."
+
+msgctxt "field:stock.order_point,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:stock.order_point,storage_location:0"
+msgid "Storage Location"
+msgstr "Emplacement de stockage"
+
+msgctxt "field:stock.order_point,type:0"
+msgid "Type"
+msgstr "Type"
+
+msgctxt "field:stock.order_point,unit:0"
+msgid "Unit"
+msgstr "Unité"
+
+msgctxt "field:stock.order_point,unit_digits:0"
+msgid "Unit Digits"
+msgstr "Décimales de l'unité"
+
+msgctxt "field:stock.order_point,warehouse_location:0"
+msgid "Warehouse Location"
+msgstr "Entrepôt"
+
+msgctxt "model:ir.action,name:act_order_point_form"
+msgid "Order Points"
+msgstr "Règles d'approvisionnement"
+
+msgctxt "model:ir.action,name:act_purchase_form"
+msgid "Purchases"
+msgstr "Achats"
+
+msgctxt "model:ir.action,name:act_purchase_request_create_purchase_request"
+msgid "Create Purchase Requests"
+msgstr "Créer les demandes d'achat"
+
+msgctxt "model:ir.action,name:act_purchase_request_form"
+msgid "Purchase Requests"
+msgstr "Demandes d'achat"
+
+msgctxt "model:ir.action,name:act_purchase_request_form_draft"
+msgid "Draft Purchase Requests"
+msgstr "Demandes d'achat en brouillon"
+
+msgctxt "model:ir.action,name:wizard_create_purchase"
+msgid "Create Purchase"
+msgstr "Créer achat"
+
+msgctxt "model:ir.cron,name:cron_generate_request"
+msgid "Generate Purchase Requests"
+msgstr "Générer les demandes d'achat"
+
+msgctxt "model:ir.cron,name:cron_shipment_iternal"
+msgid "Generate Internal Shipments"
+msgstr "Générer les expéditions internes"
+
+msgctxt "model:ir.ui.menu,name:menu_create_purchase_request"
+msgid "Create Purchase Requests"
+msgstr "Créer les demandes d'achat"
+
+msgctxt "model:ir.ui.menu,name:menu_order_point_form"
+msgid "Order Points"
+msgstr "Règles d'approvisionnement"
+
+msgctxt "model:ir.ui.menu,name:menu_purchase_request_form"
+msgid "Purchase Requests"
+msgstr "Demandes d'achat"
+
+msgctxt "model:ir.ui.menu,name:menu_purchase_request_form_draft"
+msgid "Draft Purchase Requests"
+msgstr "Demandes d'achat en brouillon"
+
+msgctxt "model:purchase.request,name:0"
+msgid "Purchase Request"
+msgstr "Demande d'achat"
+
+msgctxt "model:purchase.request.create_purchase.ask_party,name:0"
+msgid "Create Purchase Ask Party"
+msgstr "Créer l'achat - Demande de tiers"
+
+msgctxt "model:purchase.request.create_purchase.ask_term,name:0"
+msgid "Create Purchase Ask Term"
+msgstr "Créer l'achat - Demande de condition de paiment"
+
+msgctxt "model:purchase.request.create_purchase_request.init,name:0"
+msgid "Create Purchase Request Init"
+msgstr "Créer les demandes d'achat - Init"
+
+msgctxt "model:res.group,name:group_purchase_request"
+msgid "Purchase Request"
+msgstr "Demande d'achat"
+
+msgctxt "model:res.user,name:user_generate_request"
+msgid "Cron Purchase Request"
+msgstr "Cron Demande d'achat"
+
+msgctxt "model:res.user,name:user_generate_shipment_internal"
+msgid "Cron Intenal Shipment"
+msgstr "Cron expédition interne"
+
+msgctxt "model:stock.order_point,name:0"
+msgid "Order Point"
+msgstr "Règle d'approvisionnement"
+
+msgctxt "selection:purchase.request,origin:0"
+msgid "Order Point"
+msgstr "Règle d'approvisionnement"
+
+msgctxt "selection:purchase.request,state:0"
+msgid "Cancel"
+msgstr "Annulé"
+
+msgctxt "selection:purchase.request,state:0"
+msgid "Done"
+msgstr "Fait"
+
+msgctxt "selection:purchase.request,state:0"
+msgid "Draft"
+msgstr "Brouillon"
+
+msgctxt "selection:purchase.request,state:0"
+msgid "Purchased"
+msgstr "Commandé"
+
+msgctxt "selection:stock.order_point,type:0"
+msgid "Internal"
+msgstr "Interne"
+
+msgctxt "selection:stock.order_point,type:0"
+msgid "Purchase"
+msgstr "Achat"
+
+msgctxt "view:purchase.request.create_purchase.ask_party:0"
+msgid "Create Purchase: Missing Supplier"
+msgstr "Création de la commande: fournisseur absent"
+
+msgctxt "view:purchase.request.create_purchase.ask_term:0"
+msgid "Create Purchase: Missing Payment Term"
+msgstr "Création de la commande: règle d'appro. absente"
+
+msgctxt "view:purchase.request.create_purchase_request.init:0"
+msgid "Create Purchase Request"
+msgstr "Créer les demandes d'achat"
+
+msgctxt "view:purchase.request.create_purchase_request.init:0"
+msgid "Create Purchase Request?"
+msgstr "Créer les demandes d'achat ?"
+
+msgctxt "view:purchase.request:0"
+msgid "Product Info"
+msgstr "Info produit"
+
+msgctxt "view:purchase.request:0"
+msgid "Purchase Request"
+msgstr "Demande d'achat"
+
+msgctxt "view:purchase.request:0"
+msgid "Purchase Requests"
+msgstr "Demandes d'achat"
+
+msgctxt "view:purchase.request:0"
+msgid "Supply Info"
+msgstr "Information d'approvisionnement"
+
+msgctxt "view:stock.order_point:0"
+msgid "Locations"
+msgstr "Emplacements"
+
+msgctxt "view:stock.order_point:0"
+msgid "Order Point"
+msgstr "Règle d'approvisionnement"
+
+msgctxt "view:stock.order_point:0"
+msgid "Order Point Type"
+msgstr "Type de Règle d'approvisionnement"
+
+msgctxt "view:stock.order_point:0"
+msgid "Order Points"
+msgstr "Règles d'approvisionnements"
+
+msgctxt "view:stock.order_point:0"
+msgid "Product Info"
+msgstr "Info produit"
+
+msgctxt "wizard_button:purchase.request.create_purchase,ask_user_party,end:0"
+msgid "Cancel"
+msgstr "Annuler"
+
+msgctxt "wizard_button:purchase.request.create_purchase,ask_user_party,init:0"
+msgid "Continue"
+msgstr "Continuer"
+
+msgctxt "wizard_button:purchase.request.create_purchase,ask_user_term,end:0"
+msgid "Cancel"
+msgstr "Annuler"
+
+msgctxt "wizard_button:purchase.request.create_purchase,ask_user_term,init:0"
+msgid "Continue"
+msgstr "Continuer"
+
+msgctxt "wizard_button:purchase.request.create_purchase_request,init,create:0"
+msgid "Create"
+msgstr "Créer"
+
+msgctxt "wizard_button:purchase.request.create_purchase_request,init,end:0"
+msgid "Cancel"
+msgstr "Annuler"
diff --git a/locale/nl_NL.po b/locale/nl_NL.po
new file mode 100644
index 0000000..9303255
--- /dev/null
+++ b/locale/nl_NL.po
@@ -0,0 +1,371 @@
+#
+msgid ""
+msgstr "Content-Type: text/plain; charset=utf-8\n"
+
+msgctxt "error:purchase.request.create_purchase:0"
+msgid "Purchase price is missing for product: %s (id: %s)!"
+msgstr ""
+
+msgctxt "error:purchase.request.create_purchase:0"
+msgid "This price is necessary for creating purchase."
+msgstr ""
+
+msgctxt "error:purchase.request:0"
+msgid "Purchase requests are only created by the system."
+msgstr ""
+
+msgctxt "error:stock.order_point:0"
+msgid "Maximal quantity must be bigger than Minimal quantity"
+msgstr ""
+
+msgctxt "error:stock.order_point:0"
+msgid "Only one order point is allowed for each product-location pair."
+msgstr ""
+
+msgctxt "error:stock.order_point:0"
+msgid ""
+"You can not define two order points on the same product with opposite "
+"locations."
+msgstr ""
+
+msgctxt "field:product.product,order_points:0"
+msgid "Order Points"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:purchase.request,company:0"
+msgid "Company"
+msgstr "Bedrijf"
+
+msgctxt "field:purchase.request,computed_quantity:0"
+msgid "Computed Quantity"
+msgstr ""
+
+msgctxt "field:purchase.request,computed_uom:0"
+msgid "Computed UOM"
+msgstr ""
+
+msgctxt "field:purchase.request,origin:0"
+msgid "Origin"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:purchase.request,party:0"
+msgid "Party"
+msgstr "Relaties"
+
+#, fuzzy
+msgctxt "field:purchase.request,product:0"
+msgid "Product"
+msgstr "Producten"
+
+msgctxt "field:purchase.request,purchase:0"
+msgid "Purchase"
+msgstr ""
+
+msgctxt "field:purchase.request,purchase_date:0"
+msgid "Best Purchase Date"
+msgstr ""
+
+msgctxt "field:purchase.request,purchase_line:0"
+msgid "Purchase Line"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:purchase.request,quantity:0"
+msgid "Quantity"
+msgstr "Hoeveelheid"
+
+#, fuzzy
+msgctxt "field:purchase.request,rec_name:0"
+msgid "Name"
+msgstr "Naam bijlage"
+
+#, fuzzy
+msgctxt "field:purchase.request,state:0"
+msgid "State"
+msgstr "Status"
+
+msgctxt "field:purchase.request,stock_level:0"
+msgid "Stock at Supply Date"
+msgstr ""
+
+msgctxt "field:purchase.request,supply_date:0"
+msgid "Expected Supply Date"
+msgstr ""
+
+msgctxt "field:purchase.request,uom:0"
+msgid "UOM"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:purchase.request,warehouse:0"
+msgid "Warehouse"
+msgstr "Magazijn"
+
+#, fuzzy
+msgctxt "field:purchase.request.create_purchase.ask_party,company:0"
+msgid "Company"
+msgstr "Bedrijf"
+
+#, fuzzy
+msgctxt "field:purchase.request.create_purchase.ask_party,party:0"
+msgid "Supplier"
+msgstr "Leverancier"
+
+#, fuzzy
+msgctxt "field:purchase.request.create_purchase.ask_party,product:0"
+msgid "Product"
+msgstr "Producten"
+
+#, fuzzy
+msgctxt "field:purchase.request.create_purchase.ask_term,company:0"
+msgid "Company"
+msgstr "Bedrijf"
+
+#, fuzzy
+msgctxt "field:purchase.request.create_purchase.ask_term,party:0"
+msgid "Supplier"
+msgstr "Leverancier"
+
+#, fuzzy
+msgctxt "field:purchase.request.create_purchase.ask_term,payment_term:0"
+msgid "Payment Term"
+msgstr "Betalingstermijn"
+
+#, fuzzy
+msgctxt "field:stock.order_point,company:0"
+msgid "Company"
+msgstr "Bedrijf"
+
+msgctxt "field:stock.order_point,location:0"
+msgid "Location"
+msgstr ""
+
+msgctxt "field:stock.order_point,max_quantity:0"
+msgid "Maximal Quantity"
+msgstr ""
+
+msgctxt "field:stock.order_point,min_quantity:0"
+msgid "Minimal Quantity"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:stock.order_point,product:0"
+msgid "Product"
+msgstr "Producten"
+
+msgctxt "field:stock.order_point,provisioning_location:0"
+msgid "Provisioning Location"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:stock.order_point,rec_name:0"
+msgid "Name"
+msgstr "Naam bijlage"
+
+msgctxt "field:stock.order_point,storage_location:0"
+msgid "Storage Location"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:stock.order_point,type:0"
+msgid "Type"
+msgstr "Type"
+
+#, fuzzy
+msgctxt "field:stock.order_point,unit:0"
+msgid "Unit"
+msgstr "Eenheid"
+
+#, fuzzy
+msgctxt "field:stock.order_point,unit_digits:0"
+msgid "Unit Digits"
+msgstr "Decimalen eenheid"
+
+msgctxt "field:stock.order_point,warehouse_location:0"
+msgid "Warehouse Location"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_order_point_form"
+msgid "Order Points"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_purchase_form"
+msgid "Purchases"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_purchase_request_create_purchase_request"
+msgid "Create Purchase Requests"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_purchase_request_form"
+msgid "Purchase Requests"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_purchase_request_form_draft"
+msgid "Draft Purchase Requests"
+msgstr ""
+
+msgctxt "model:ir.action,name:wizard_create_purchase"
+msgid "Create Purchase"
+msgstr ""
+
+msgctxt "model:ir.cron,name:cron_generate_request"
+msgid "Generate Purchase Requests"
+msgstr ""
+
+msgctxt "model:ir.cron,name:cron_shipment_iternal"
+msgid "Generate Internal Shipments"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_create_purchase_request"
+msgid "Create Purchase Requests"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_order_point_form"
+msgid "Order Points"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_purchase_request_form"
+msgid "Purchase Requests"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_purchase_request_form_draft"
+msgid "Draft Purchase Requests"
+msgstr ""
+
+msgctxt "model:purchase.request,name:0"
+msgid "Purchase Request"
+msgstr ""
+
+msgctxt "model:purchase.request.create_purchase.ask_party,name:0"
+msgid "Create Purchase Ask Party"
+msgstr ""
+
+msgctxt "model:purchase.request.create_purchase.ask_term,name:0"
+msgid "Create Purchase Ask Term"
+msgstr ""
+
+msgctxt "model:purchase.request.create_purchase_request.init,name:0"
+msgid "Create Purchase Request Init"
+msgstr ""
+
+msgctxt "model:res.group,name:group_purchase_request"
+msgid "Purchase Request"
+msgstr ""
+
+msgctxt "model:res.user,name:user_generate_request"
+msgid "Cron Purchase Request"
+msgstr ""
+
+msgctxt "model:res.user,name:user_generate_shipment_internal"
+msgid "Cron Intenal Shipment"
+msgstr ""
+
+msgctxt "model:stock.order_point,name:0"
+msgid "Order Point"
+msgstr ""
+
+#, fuzzy
+msgctxt "selection:purchase.request,state:0"
+msgid "Cancel"
+msgstr "Annuleren"
+
+#, fuzzy
+msgctxt "selection:purchase.request,state:0"
+msgid "Done"
+msgstr "Klaar"
+
+#, fuzzy
+msgctxt "selection:purchase.request,state:0"
+msgid "Draft"
+msgstr "Concept"
+
+msgctxt "selection:purchase.request,state:0"
+msgid "Purchased"
+msgstr ""
+
+msgctxt "selection:stock.order_point,type:0"
+msgid "Internal"
+msgstr ""
+
+msgctxt "selection:stock.order_point,type:0"
+msgid "Purchase"
+msgstr ""
+
+msgctxt "view:purchase.request.create_purchase.ask_party:0"
+msgid "Create Purchase: Missing Supplier"
+msgstr ""
+
+msgctxt "view:purchase.request.create_purchase.ask_term:0"
+msgid "Create Purchase: Missing Payment Term"
+msgstr ""
+
+msgctxt "view:purchase.request.create_purchase_request.init:0"
+msgid "Create Purchase Request"
+msgstr ""
+
+msgctxt "view:purchase.request.create_purchase_request.init:0"
+msgid "Create Purchase Request?"
+msgstr ""
+
+msgctxt "view:purchase.request:0"
+msgid "Product Info"
+msgstr ""
+
+msgctxt "view:purchase.request:0"
+msgid "Purchase Request"
+msgstr ""
+
+msgctxt "view:purchase.request:0"
+msgid "Purchase Requests"
+msgstr ""
+
+msgctxt "view:purchase.request:0"
+msgid "Supply Info"
+msgstr ""
+
+msgctxt "view:stock.order_point:0"
+msgid "Order Point"
+msgstr ""
+
+msgctxt "view:stock.order_point:0"
+msgid "Order Point Type"
+msgstr ""
+
+msgctxt "view:stock.order_point:0"
+msgid "Order Points"
+msgstr ""
+
+msgctxt "view:stock.order_point:0"
+msgid "Product Info"
+msgstr ""
+
+#, fuzzy
+msgctxt "wizard_button:purchase.request.create_purchase,ask_user_party,end:0"
+msgid "Cancel"
+msgstr "Annuleren"
+
+msgctxt "wizard_button:purchase.request.create_purchase,ask_user_party,init:0"
+msgid "Continue"
+msgstr ""
+
+#, fuzzy
+msgctxt "wizard_button:purchase.request.create_purchase,ask_user_term,end:0"
+msgid "Cancel"
+msgstr "Annuleren"
+
+msgctxt "wizard_button:purchase.request.create_purchase,ask_user_term,init:0"
+msgid "Continue"
+msgstr ""
+
+#, fuzzy
+msgctxt "wizard_button:purchase.request.create_purchase_request,init,create:0"
+msgid "Create"
+msgstr "Aanmaken"
+
+#, fuzzy
+msgctxt "wizard_button:purchase.request.create_purchase_request,init,end:0"
+msgid "Cancel"
+msgstr "Annuleren"
diff --git a/locale/ru_RU.po b/locale/ru_RU.po
new file mode 100644
index 0000000..a441169
--- /dev/null
+++ b/locale/ru_RU.po
@@ -0,0 +1,371 @@
+#
+msgid ""
+msgstr "Content-Type: text/plain; charset=utf-8\n"
+
+msgctxt "error:purchase.request.create_purchase:0"
+msgid "Purchase price is missing for product: %s (id: %s)!"
+msgstr ""
+
+msgctxt "error:purchase.request.create_purchase:0"
+msgid "This price is necessary for creating purchase."
+msgstr ""
+
+msgctxt "error:purchase.request:0"
+msgid "Purchase requests are only created by the system."
+msgstr ""
+
+msgctxt "error:stock.order_point:0"
+msgid "Maximal quantity must be bigger than Minimal quantity"
+msgstr ""
+
+msgctxt "error:stock.order_point:0"
+msgid "Only one order point is allowed for each product-location pair."
+msgstr ""
+
+msgctxt "error:stock.order_point:0"
+msgid ""
+"You can not define two order points on the same product with opposite "
+"locations."
+msgstr ""
+
+msgctxt "field:product.product,order_points:0"
+msgid "Order Points"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:purchase.request,company:0"
+msgid "Company"
+msgstr "Учет.орг."
+
+msgctxt "field:purchase.request,computed_quantity:0"
+msgid "Computed Quantity"
+msgstr ""
+
+msgctxt "field:purchase.request,computed_uom:0"
+msgid "Computed UOM"
+msgstr ""
+
+msgctxt "field:purchase.request,origin:0"
+msgid "Origin"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:purchase.request,party:0"
+msgid "Party"
+msgstr "Организации"
+
+#, fuzzy
+msgctxt "field:purchase.request,product:0"
+msgid "Product"
+msgstr "Товарно материальные ценности (ТМЦ)"
+
+msgctxt "field:purchase.request,purchase:0"
+msgid "Purchase"
+msgstr ""
+
+msgctxt "field:purchase.request,purchase_date:0"
+msgid "Best Purchase Date"
+msgstr ""
+
+msgctxt "field:purchase.request,purchase_line:0"
+msgid "Purchase Line"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:purchase.request,quantity:0"
+msgid "Quantity"
+msgstr "Кол-во"
+
+#, fuzzy
+msgctxt "field:purchase.request,rec_name:0"
+msgid "Name"
+msgstr "Наименование"
+
+#, fuzzy
+msgctxt "field:purchase.request,state:0"
+msgid "State"
+msgstr "Статус"
+
+msgctxt "field:purchase.request,stock_level:0"
+msgid "Stock at Supply Date"
+msgstr ""
+
+msgctxt "field:purchase.request,supply_date:0"
+msgid "Expected Supply Date"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:purchase.request,uom:0"
+msgid "UOM"
+msgstr "Ед.изм."
+
+#, fuzzy
+msgctxt "field:purchase.request,warehouse:0"
+msgid "Warehouse"
+msgstr "Товарный склад"
+
+#, fuzzy
+msgctxt "field:purchase.request.create_purchase.ask_party,company:0"
+msgid "Company"
+msgstr "Учет.орг."
+
+#, fuzzy
+msgctxt "field:purchase.request.create_purchase.ask_party,party:0"
+msgid "Supplier"
+msgstr "Поставщик"
+
+#, fuzzy
+msgctxt "field:purchase.request.create_purchase.ask_party,product:0"
+msgid "Product"
+msgstr "Товарно материальные ценности (ТМЦ)"
+
+#, fuzzy
+msgctxt "field:purchase.request.create_purchase.ask_term,company:0"
+msgid "Company"
+msgstr "Учет.орг."
+
+#, fuzzy
+msgctxt "field:purchase.request.create_purchase.ask_term,party:0"
+msgid "Supplier"
+msgstr "Поставщик"
+
+msgctxt "field:purchase.request.create_purchase.ask_term,payment_term:0"
+msgid "Payment Term"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:stock.order_point,company:0"
+msgid "Company"
+msgstr "Учет.орг."
+
+#, fuzzy
+msgctxt "field:stock.order_point,location:0"
+msgid "Location"
+msgstr "Местоположение"
+
+msgctxt "field:stock.order_point,max_quantity:0"
+msgid "Maximal Quantity"
+msgstr ""
+
+msgctxt "field:stock.order_point,min_quantity:0"
+msgid "Minimal Quantity"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:stock.order_point,product:0"
+msgid "Product"
+msgstr "Товарно материальные ценности (ТМЦ)"
+
+msgctxt "field:stock.order_point,provisioning_location:0"
+msgid "Provisioning Location"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:stock.order_point,rec_name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:stock.order_point,storage_location:0"
+msgid "Storage Location"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:stock.order_point,type:0"
+msgid "Type"
+msgstr "Тип"
+
+#, fuzzy
+msgctxt "field:stock.order_point,unit:0"
+msgid "Unit"
+msgstr "Штука"
+
+#, fuzzy
+msgctxt "field:stock.order_point,unit_digits:0"
+msgid "Unit Digits"
+msgstr "Группа цифр"
+
+msgctxt "field:stock.order_point,warehouse_location:0"
+msgid "Warehouse Location"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_order_point_form"
+msgid "Order Points"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_purchase_form"
+msgid "Purchases"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_purchase_request_create_purchase_request"
+msgid "Create Purchase Requests"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_purchase_request_form"
+msgid "Purchase Requests"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_purchase_request_form_draft"
+msgid "Draft Purchase Requests"
+msgstr ""
+
+msgctxt "model:ir.action,name:wizard_create_purchase"
+msgid "Create Purchase"
+msgstr ""
+
+msgctxt "model:ir.cron,name:cron_generate_request"
+msgid "Generate Purchase Requests"
+msgstr ""
+
+msgctxt "model:ir.cron,name:cron_shipment_iternal"
+msgid "Generate Internal Shipments"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_create_purchase_request"
+msgid "Create Purchase Requests"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_order_point_form"
+msgid "Order Points"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_purchase_request_form"
+msgid "Purchase Requests"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_purchase_request_form_draft"
+msgid "Draft Purchase Requests"
+msgstr ""
+
+msgctxt "model:purchase.request,name:0"
+msgid "Purchase Request"
+msgstr ""
+
+msgctxt "model:purchase.request.create_purchase.ask_party,name:0"
+msgid "Create Purchase Ask Party"
+msgstr ""
+
+msgctxt "model:purchase.request.create_purchase.ask_term,name:0"
+msgid "Create Purchase Ask Term"
+msgstr ""
+
+msgctxt "model:purchase.request.create_purchase_request.init,name:0"
+msgid "Create Purchase Request Init"
+msgstr ""
+
+msgctxt "model:res.group,name:group_purchase_request"
+msgid "Purchase Request"
+msgstr ""
+
+msgctxt "model:res.user,name:user_generate_request"
+msgid "Cron Purchase Request"
+msgstr ""
+
+msgctxt "model:res.user,name:user_generate_shipment_internal"
+msgid "Cron Intenal Shipment"
+msgstr ""
+
+msgctxt "model:stock.order_point,name:0"
+msgid "Order Point"
+msgstr ""
+
+#, fuzzy
+msgctxt "selection:purchase.request,state:0"
+msgid "Cancel"
+msgstr "Отменить"
+
+#, fuzzy
+msgctxt "selection:purchase.request,state:0"
+msgid "Done"
+msgstr "Выполнено"
+
+#, fuzzy
+msgctxt "selection:purchase.request,state:0"
+msgid "Draft"
+msgstr "Черновик"
+
+msgctxt "selection:purchase.request,state:0"
+msgid "Purchased"
+msgstr ""
+
+msgctxt "selection:stock.order_point,type:0"
+msgid "Internal"
+msgstr ""
+
+msgctxt "selection:stock.order_point,type:0"
+msgid "Purchase"
+msgstr ""
+
+msgctxt "view:purchase.request.create_purchase.ask_party:0"
+msgid "Create Purchase: Missing Supplier"
+msgstr ""
+
+msgctxt "view:purchase.request.create_purchase.ask_term:0"
+msgid "Create Purchase: Missing Payment Term"
+msgstr ""
+
+msgctxt "view:purchase.request.create_purchase_request.init:0"
+msgid "Create Purchase Request"
+msgstr ""
+
+msgctxt "view:purchase.request.create_purchase_request.init:0"
+msgid "Create Purchase Request?"
+msgstr ""
+
+msgctxt "view:purchase.request:0"
+msgid "Product Info"
+msgstr ""
+
+msgctxt "view:purchase.request:0"
+msgid "Purchase Request"
+msgstr ""
+
+msgctxt "view:purchase.request:0"
+msgid "Purchase Requests"
+msgstr ""
+
+msgctxt "view:purchase.request:0"
+msgid "Supply Info"
+msgstr ""
+
+msgctxt "view:stock.order_point:0"
+msgid "Order Point"
+msgstr ""
+
+msgctxt "view:stock.order_point:0"
+msgid "Order Point Type"
+msgstr ""
+
+msgctxt "view:stock.order_point:0"
+msgid "Order Points"
+msgstr ""
+
+msgctxt "view:stock.order_point:0"
+msgid "Product Info"
+msgstr ""
+
+#, fuzzy
+msgctxt "wizard_button:purchase.request.create_purchase,ask_user_party,end:0"
+msgid "Cancel"
+msgstr "Отменить"
+
+msgctxt "wizard_button:purchase.request.create_purchase,ask_user_party,init:0"
+msgid "Continue"
+msgstr ""
+
+#, fuzzy
+msgctxt "wizard_button:purchase.request.create_purchase,ask_user_term,end:0"
+msgid "Cancel"
+msgstr "Отменить"
+
+msgctxt "wizard_button:purchase.request.create_purchase,ask_user_term,init:0"
+msgid "Continue"
+msgstr ""
+
+msgctxt "wizard_button:purchase.request.create_purchase_request,init,create:0"
+msgid "Create"
+msgstr ""
+
+#, fuzzy
+msgctxt "wizard_button:purchase.request.create_purchase_request,init,end:0"
+msgid "Cancel"
+msgstr "Отменить"
diff --git a/order_point.py b/order_point.py
index 3d301cf..4e50523 100644
--- a/order_point.py
+++ b/order_point.py
@@ -4,6 +4,7 @@ from trytond.model import ModelView, ModelSQL, fields
from trytond.wizard import Wizard
from trytond.pyson import If, Equal, Eval, Not, In, Get
from trytond.transaction import Transaction
+from trytond.pool import Pool
class OrderPoint(ModelSQL, ModelView):
@@ -15,28 +16,31 @@ class OrderPoint(ModelSQL, ModelView):
_name = 'stock.order_point'
_description = "Order Point"
- product = fields.Many2One(
- 'product.product', 'Product', required=True, select=1,
+ product = fields.Many2One('product.product', 'Product', required=True,
+ select=1,
domain=[
('type', '=', 'stockable'),
('purchasable', 'in', If(Equal(Eval('type'), 'purchase'),
- [True], [True, False])),
- ],
+ [True], [True, False])),
+ ],
+ depends=['type'],
on_change=['product'])
- warehouse_location = fields.Many2One(
- 'stock.location', 'Warehouse Location', select=1,
+ warehouse_location = fields.Many2One('stock.location',
+ 'Warehouse Location', select=1,
domain=[('type', '=', 'warehouse')],
states={
'invisible': Not(Equal(Eval('type'), 'purchase')),
'required': Equal(Eval('type'), 'purchase'),
- })
- storage_location = fields.Many2One(
- 'stock.location', 'Storage Location', select=1,
+ },
+ depends=['type'])
+ storage_location = fields.Many2One('stock.location', 'Storage Location',
+ select=1,
domain=[('type', '=', 'storage')],
states={
'invisible': Not(Equal(Eval('type'), 'internal')),
'required': Equal(Eval('type'), 'internal'),
- })
+ },
+ depends=['type'])
location = fields.Function(fields.Many2One('stock.location', 'Location'),
'get_location', searcher='search_location')
provisioning_location = fields.Many2One(
@@ -45,7 +49,8 @@ class OrderPoint(ModelSQL, ModelView):
states={
'invisible': Not(Equal(Eval('type'), 'internal')),
'required': Equal(Eval('type'), 'internal'),
- })
+ },
+ depends=['type'])
type = fields.Selection(
[('internal', 'Internal'),
('purchase', 'Purchase')],
@@ -84,7 +89,7 @@ class OrderPoint(ModelSQL, ModelView):
return "purchase"
def on_change_product(self, vals):
- product_obj = self.pool.get('product.product')
+ product_obj = Pool().get('product.product')
res = {
'unit': False,
'unit.rec_name': '',
@@ -178,7 +183,7 @@ class OrderPoint(ModelSQL, ModelView):
return res
def get_location(self, ids, name):
- location_obj = self.pool.get('stock.location')
+ location_obj = Pool().get('stock.location')
res = {}
for op in self.browse(ids):
if op.type == 'purchase':
diff --git a/order_point.xml b/order_point.xml
index d9e062e..bbad45f 100644
--- a/order_point.xml
+++ b/order_point.xml
@@ -44,12 +44,12 @@ this repository contains the full copyright notices and license terms. -->
<field name="arch" type="xml">
<![CDATA[
<tree string="Order Points">
- <field name="product" select="1"/>
- <field name="location" select="1"/>
- <field name="type" select="1"/>
+ <field name="product"/>
+ <field name="location"/>
+ <field name="type"/>
<field name="company"/>
- <field name="min_quantity" select="2"/>
- <field name="max_quantity" select="2"/>
+ <field name="min_quantity"/>
+ <field name="max_quantity"/>
<field name="unit"/>
</tree>
]]>
@@ -73,24 +73,6 @@ this repository contains the full copyright notices and license terms. -->
<menuitem parent="stock.menu_stock" sequence="60"
action="act_order_point_form" id="menu_order_point_form"/>
- <record model="ir.action.act_window" id="act_order_point_form2">
- <field name="name">Order Points</field>
- <field name="res_model">stock.order_point</field>
- </record>
- <record model="ir.action.act_window.view" id="act_order_point_form2_view1">
- <field name="sequence" eval="10"/>
- <field name="view" ref="order_point_view_form"/>
- <field name="act_window" ref="act_order_point_form2"/>
- </record>
- <record model="ir.action.act_window.view" id="act_order_point_form2_view2">
- <field name="sequence" eval="20"/>
- <field name="view" ref="order_point_view_tree"/>
- <field name="act_window" ref="act_order_point_form2"/>
- </record>
- <menuitem name="New Order Point" parent="menu_order_point_form"
- action="act_order_point_form2" id="menu_order_point_form_new"
- sequence="10"/>
-
<record model="ir.model.access" id="access_order_point">
<field name="model" search="[('model', '=', 'stock.order_point')]"/>
<field name="perm_read" eval="True"/>
diff --git a/purchase_request.py b/purchase_request.py
index 4030d4e..b141387 100644
--- a/purchase_request.py
+++ b/purchase_request.py
@@ -1,11 +1,12 @@
#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 __future__ import with_statement
import datetime
+import operator
from trytond.model import ModelView, ModelSQL, fields
from trytond.wizard import Wizard
from trytond.pyson import If, In, Eval, Get
from trytond.transaction import Transaction
+from trytond.pool import Pool
class PurchaseRequest(ModelSQL, ModelView):
@@ -52,6 +53,15 @@ class PurchaseRequest(ModelSQL, ModelView):
'create_request': 'Purchase requests are only created by the system.',
})
+ def init(self, module_name):
+ cursor = Transaction().cursor
+ super(PurchaseRequest, self).init(module_name)
+
+ # Migration from 2.0: empty order point origin is -1 instead of 0
+ cursor.execute('UPDATE "%s" '
+ 'SET origin = %%s WHERE origin = %%s' % self._table,
+ ('stock.order_point,-1', 'stock.order_point,0'))
+
def get_rec_name(self, ids, name):
if isinstance(ids, (int, long)):
ids = [ids]
@@ -95,7 +105,7 @@ class PurchaseRequest(ModelSQL, ModelView):
return res
def origin_get(self):
- model_obj = self.pool.get('ir.model')
+ model_obj = Pool().get('ir.model')
res = []
model_ids = model_obj.search([
('model', '=', 'stock.order_point'),
@@ -109,11 +119,12 @@ class PurchaseRequest(ModelSQL, ModelView):
For each product compute the purchase request that must be
create today to meet product outputs.
"""
- order_point_obj = self.pool.get('stock.order_point')
- purchase_request_obj = self.pool.get('purchase.request')
- product_obj = self.pool.get('product.product')
- location_obj = self.pool.get('stock.location')
- user_obj = self.pool.get('res.user')
+ pool = Pool()
+ order_point_obj = pool.get('stock.order_point')
+ purchase_request_obj = pool.get('purchase.request')
+ product_obj = pool.get('product.product')
+ location_obj = pool.get('stock.location')
+ user_obj = pool.get('res.user')
company = user_obj.browse(Transaction().user).company
# fetch warehouses:
@@ -172,7 +183,7 @@ class PurchaseRequest(ModelSQL, ModelView):
return {}
def create_requests(self, new_requests):
- request_obj = self.pool.get('purchase.request')
+ request_obj = Pool().get('purchase.request')
for new_req in new_requests:
if new_req['supply_date'] == datetime.date.max:
@@ -192,9 +203,10 @@ class PurchaseRequest(ModelSQL, ModelView):
to re-create existing requests.
"""
# delete purchase request without a purchase line
- uom_obj = self.pool.get('product.uom')
- request_obj = self.pool.get('purchase.request')
- product_supplier_obj = self.pool.get('purchase.product_supplier')
+ pool = Pool()
+ uom_obj = pool.get('product.uom')
+ request_obj = pool.get('purchase.request')
+ product_supplier_obj = pool.get('purchase.product_supplier')
req_ids = request_obj.search([
('purchase_line', '=', False),
('origin', 'like', 'stock.order_point,%'),
@@ -236,7 +248,7 @@ class PurchaseRequest(ModelSQL, ModelView):
i.sort(lambda r,s: cmp(r['supply_date'],s['supply_date']))
# Update new requests to take existing requests into account
- new_requests.sort(lambda r,s: cmp(r['supply_date'],s['supply_date']))
+ new_requests.sort(key=operator.itemgetter('supply_date'))
for new_req in new_requests:
for old_req in existing_req.get((new_req['product'].id,
new_req['warehouse']), []):
@@ -260,8 +272,8 @@ class PurchaseRequest(ModelSQL, ModelView):
:param product: a BrowseRecord of the Product
:return: a tuple with the two dates
"""
- product_supplier_obj = self.pool.get('purchase.product_supplier')
- date_obj = self.pool.get('ir.date')
+ product_supplier_obj = Pool().get('purchase.product_supplier')
+ date_obj = Pool().get('ir.date')
min_date = None
max_date = None
@@ -285,26 +297,21 @@ class PurchaseRequest(ModelSQL, ModelView):
return (min_date, max_date)
- def compute_request(self, product, location_id, shortage_date,
- product_quantity, company, order_point=None):
- """
- Return the value of the purchase request which will answer to
- the needed quantity at the given date. I.e: the latest
- purchase date, the expected supply date and the prefered
- supplier.
- """
- uom_obj = self.pool.get('product.uom')
- product_supplier_obj = self.pool.get('purchase.product_supplier')
- date_obj = self.pool.get('ir.date')
+ def find_best_supplier(self, product, date):
+ '''
+ Return the best supplier and purchase_date for the product.
+ '''
+ pool = Pool()
+ date_obj = pool.get('ir.date')
+ product_supplier_obj = pool.get('purchase.product_supplier')
supplier = None
timedelta = datetime.timedelta.max
today = date_obj.today()
- max_quantity = order_point and order_point.max_quantity or 0.0
for product_supplier in product.product_suppliers:
supply_date = product_supplier_obj.compute_supply_date(
product_supplier, date=today)[0]
- sup_timedelta = shortage_date - supply_date
+ sup_timedelta = date - supply_date
if not supplier:
supplier = product_supplier.party
timedelta = sup_timedelta
@@ -318,10 +325,26 @@ class PurchaseRequest(ModelSQL, ModelView):
if supplier:
purchase_date = product_supplier_obj.compute_purchase_date(
- product_supplier, shortage_date)
+ product_supplier, date)
else:
purchase_date = today
+ return supplier, purchase_date
+
+ def compute_request(self, product, location_id, shortage_date,
+ product_quantity, company, order_point=None):
+ """
+ Return the value of the purchase request which will answer to
+ the needed quantity at the given date. I.e: the latest
+ purchase date, the expected supply date and the prefered
+ supplier.
+ """
+ pool = Pool()
+ uom_obj = pool.get('product.uom')
+
+ supplier, purchase_date = self.find_best_supplier(product,
+ shortage_date)
+ max_quantity = order_point and order_point.max_quantity or 0.0
quantity = uom_obj.compute_qty(product.default_uom,
max_quantity - product_quantity,
product.purchase_uom or product.default_uom)
@@ -329,7 +352,7 @@ class PurchaseRequest(ModelSQL, ModelView):
if order_point:
origin = 'stock.order_point,%s'%order_point.id
else:
- origin = 'stock.order_point,0'
+ origin = 'stock.order_point,-1'
return {'product': product,
'party': supplier and supplier or None,
'quantity': quantity,
@@ -362,7 +385,7 @@ class PurchaseRequest(ModelSQL, ModelView):
:param order_point: a BrowseRecord of the Order Point
:return: a tuple with the date and the quantity
"""
- product_obj = self.pool.get('product.product')
+ product_obj = Pool().get('product.product')
res_date = None
res_qty = None
@@ -399,6 +422,55 @@ class PurchaseRequest(ModelSQL, ModelView):
PurchaseRequest()
+class CreatePurchaseRequestInit(ModelView):
+ 'Create Purchase Request Init'
+ _name = 'purchase.request.create_purchase_request.init'
+ _description = __doc__
+
+CreatePurchaseRequestInit()
+
+
+class CreatePurchaseRequest(Wizard):
+ 'Create Purchase Request'
+ _name = 'purchase.request.create_purchase_request'
+
+ states = {
+ 'init': {
+ 'result': {
+ 'type': 'form',
+ 'object': 'purchase.request.create_purchase_request.init',
+ 'state': [
+ ('end', 'Cancel', 'tryton-cancel'),
+ ('create', 'Create', 'tryton-ok', True),
+ ],
+ },
+ },
+ 'create': {
+ 'actions': ['_create_purchase_request'],
+ 'result': {
+ 'type': 'action',
+ 'action': '_open',
+ 'state': 'end',
+ },
+ },
+ }
+
+ def _create_purchase_request(self, data):
+ purchase_request_obj = Pool().get('purchase.request')
+ purchase_request_obj.generate_requests()
+ return {}
+
+ def _open(self, data):
+ pool = Pool()
+ model_data_obj = pool.get('ir.model.data')
+ act_window_obj = pool.get('ir.action.act_window')
+ act_window_id = model_data_obj.get_id('stock_supply',
+ 'act_purchase_request_form_draft')
+ return act_window_obj.read(act_window_id)
+
+CreatePurchaseRequest()
+
+
class CreatePurchaseAskTerm(ModelView):
'Create Purchase Ask Term'
_name = 'purchase.request.create_purchase.ask_term'
@@ -469,7 +541,7 @@ class CreatePurchase(Wizard):
def _set_default_party(self, data):
- request_obj = self.pool.get('purchase.request')
+ request_obj = Pool().get('purchase.request')
requests = request_obj.browse(data['ids'])
for request in requests:
if request.purchase_line:
@@ -481,7 +553,7 @@ class CreatePurchase(Wizard):
def _set_default_term(self, data):
- request_obj = self.pool.get('purchase.request')
+ request_obj = Pool().get('purchase.request')
requests = request_obj.browse(data['ids'])
for request in requests:
if (not request.party) or request.purchase_line:
@@ -492,12 +564,13 @@ class CreatePurchase(Wizard):
return {'party': request.party.id,'company': request.company.id}
def _create_purchase(self, data):
- request_obj = self.pool.get('purchase.request')
- party_obj = self.pool.get('party.party')
- purchase_obj = self.pool.get('purchase.purchase')
- product_obj = self.pool.get('product.product')
- line_obj = self.pool.get('purchase.line')
- date_obj = self.pool.get('ir.date')
+ pool = Pool()
+ request_obj = pool.get('purchase.request')
+ party_obj = pool.get('party.party')
+ purchase_obj = pool.get('purchase.purchase')
+ product_obj = pool.get('product.product')
+ line_obj = pool.get('purchase.line')
+ date_obj = pool.get('ir.date')
form = data['form']
if form.get('product') and form.get('party') and \
@@ -591,9 +664,10 @@ class CreatePurchase(Wizard):
return res
def compute_purchase_line(self, request):
- party_obj = self.pool.get('party.party')
- product_obj = self.pool.get('product.product')
- tax_rule_obj = self.pool.get('account.tax.rule')
+ pool = Pool()
+ party_obj = pool.get('party.party')
+ product_obj = pool.get('product.product')
+ tax_rule_obj = pool.get('account.tax.rule')
line = {
'product': request.product.id,
diff --git a/purchase_request.xml b/purchase_request.xml
index c378169..1ee5768 100644
--- a/purchase_request.xml
+++ b/purchase_request.xml
@@ -56,14 +56,14 @@ this repository contains the full copyright notices and license terms. -->
<field name="arch" type="xml">
<![CDATA[
<tree string="Purchase Requests">
- <field name="product" select="1"/>
- <field name="quantity" select="2"/>
- <field name="uom" select="2"/>
- <field name="warehouse" select="1"/>
- <field name="party" select="1"/>
- <field name="purchase_date" select="2"/>
+ <field name="product"/>
+ <field name="quantity"/>
+ <field name="uom"/>
+ <field name="warehouse"/>
+ <field name="party"/>
+ <field name="purchase_date"/>
<field name="stock_level"/>
- <field name="company" select="2"/>
+ <field name="company"/>
<field name="state"/>
</tree>
]]>
@@ -85,6 +85,11 @@ this repository contains the full copyright notices and license terms. -->
<field name="act_window" ref="act_purchase_request_form"/>
</record>
+ <record model="ir.ui.menu-res.group" id="menu_purchase_group_purchase_request">
+ <field name="menu" ref="purchase.menu_purchase"/>
+ <field name="group" ref="group_purchase_request"/>
+ </record>
+
<menuitem parent="purchase.menu_purchase" sequence="20"
action="act_purchase_request_form" id="menu_purchase_request_form"/>
@@ -104,9 +109,33 @@ this repository contains the full copyright notices and license terms. -->
<field name="act_window" ref="act_purchase_request_form_draft"/>
</record>
- <menuitem parent="menu_purchase_request_form" sequence="10"
+ <menuitem parent="menu_purchase_request_form" sequence="20"
action="act_purchase_request_form_draft" id="menu_purchase_request_form_draft"/>
+ <record model="ir.action.wizard" id="act_purchase_request_create_purchase_request">
+ <field name="name">Create Purchase Requests</field>
+ <field name="wiz_name">purchase.request.create_purchase_request</field>
+ </record>
+
+ <record model="ir.ui.view" id="create_purchase_request_init_view_form">
+ <field name="model">purchase.request.create_purchase_request.init</field>
+ <field name="type">form</field>
+ <field name="arch" type="xml">
+ <![CDATA[
+ <form string="Create Purchase Request" col="2">
+ <image name="tryton-dialog-information" xexpand="0"
+ xfill="0"/>
+ <label string="Create Purchase Request?" id="create"
+ yalign="0.0" xalign="0.0" xexpand="1"/>
+ </form>
+ ]]>
+ </field>
+ </record>
+
+ <menuitem parent="menu_purchase_request_form" sequence="10"
+ action="act_purchase_request_create_purchase_request"
+ id="menu_create_purchase_request"/>
+
<record model="ir.ui.view" id="purchase_request_create_purchase_ask_view_form">
<field name="model">purchase.request.create_purchase.ask_term</field>
<field name="type">form</field>
@@ -143,11 +172,16 @@ this repository contains the full copyright notices and license terms. -->
<field name="name">Create Purchase</field>
<field name="wiz_name">purchase.request.create_purchase</field>
<field name="model">purchase.request</field>
- <field name="groups" eval="[('add', ref('group_purchase_request'))]"/>
</record>
+ <record model="ir.action-res.group"
+ id="wizard_create_purchase_group_purchase_request">
+ <field name="action" ref="wizard_create_purchase"/>
+ <field name="group" ref="group_purchase_request"/>
+ </record>
+
<record model="ir.action.keyword" id="create_purchase_keyword">
<field name="keyword">form_action</field>
- <field name="model">purchase.request,0</field>
+ <field name="model">purchase.request,-1</field>
<field name="action" ref="wizard_create_purchase"/>
</record>
@@ -169,7 +203,7 @@ this repository contains the full copyright notices and license terms. -->
<record model="ir.action.keyword"
id="act_open_purchase_keyword1">
<field name="keyword">form_relate</field>
- <field name="model">purchase.request,0</field>
+ <field name="model">purchase.request,-1</field>
<field name="action" ref="act_purchase_form"/>
</record>
@@ -187,6 +221,14 @@ this repository contains the full copyright notices and license terms. -->
<record model="ir.model.access" id="access_purchase_request">
<field name="model" search="[('model', '=', 'purchase.request')]"/>
+ <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_purchase_request_sale">
+ <field name="model" search="[('model', '=', 'purchase.request')]"/>
+ <field name="group" ref="purchase.group_purchase"/>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="False"/>
<field name="perm_create" eval="False"/>
@@ -201,18 +243,27 @@ this repository contains the full copyright notices and license terms. -->
<field name="perm_delete" eval="True"/>
</record>
- <record model="res.user" id="res.user_admin">
- <field name="groups" eval="[('add', ref('group_purchase_request'))]"/>
+ <record model="res.user-res.group"
+ id="user_admin_group_purchase_request">
+ <field name="user" ref="res.user_admin"/>
+ <field name="group" ref="group_purchase_request"/>
</record>
- <record model="res.user" id="res.user_trigger">
- <field name="groups" eval="[('add', ref('group_purchase_request'))]"/>
+ <record model="res.user-res.group"
+ id="user_trigger_group_purchase_request">
+ <field name="user" ref="res.user_trigger"/>
+ <field name="group" ref="group_purchase_request"/>
</record>
<record model="res.user" id="user_generate_request">
<field name="login">user_cron_purchase_request</field>
<field name="name">Cron Purchase Request</field>
- <field name="groups" eval="[('add', ref('group_purchase_request'))]"/>
<field name="signature"></field>
+ <field name="active" eval="False"/>
+ </record>
+ <record model="res.user-res.group"
+ id="user_generate_request_group_purchase_request">
+ <field name="user" ref="user_generate_request"/>
+ <field name="group" ref="group_purchase_request"/>
</record>
<record model="ir.cron" id="cron_generate_request">
@@ -222,11 +273,10 @@ this repository contains the full copyright notices and license terms. -->
<field name="active" eval="True"/>
<field name="interval_number">1</field>
<field name="interval_type">days</field>
- <field name="numbercall">-1</field>
- <field name="doall" eval="False"/>
+ <field name="number_calls">-1</field>
+ <field name="repeat_missed" eval="False"/>
<field name="model">purchase.request</field>
<field name="function">generate_requests</field>
- <field name="priority">5</field>
</record>
</data>
diff --git a/setup.py b/setup.py
index ddc3c8f..ae31a93 100644
--- a/setup.py
+++ b/setup.py
@@ -39,18 +39,21 @@ setup(name='trytond_stock_supply',
classifiers=[
'Development Status :: 5 - Production/Stable',
'Environment :: Plugins',
+ 'Framework :: Tryton',
'Intended Audience :: Developers',
'Intended Audience :: Financial and Insurance Industry',
'Intended Audience :: Legal Industry',
'Intended Audience :: Manufacturing',
'License :: OSI Approved :: GNU General Public License (GPL)',
'Natural Language :: Bulgarian',
+ 'Natural Language :: Czech',
+ 'Natural Language :: Dutch',
'Natural Language :: English',
'Natural Language :: French',
'Natural Language :: German',
+ 'Natural Language :: Russian',
'Natural Language :: Spanish',
'Operating System :: OS Independent',
- 'Programming Language :: Python :: 2.5',
'Programming Language :: Python :: 2.6',
'Programming Language :: Python :: 2.7',
'Topic :: Office/Business',
diff --git a/shipment.py b/shipment.py
index 6e73bc3..89a73ee 100644
--- a/shipment.py
+++ b/shipment.py
@@ -1,8 +1,8 @@
#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 __future__ import with_statement
from trytond.model import ModelView, ModelSQL
from trytond.transaction import Transaction
+from trytond.pool import Pool
class ShipmentInternal(ModelSQL, ModelView):
@@ -26,11 +26,12 @@ class ShipmentInternal(ModelSQL, ModelView):
Generate internal shipments to meet order points defined on
non-warehouse location.
"""
- order_point_obj = self.pool.get('stock.order_point')
- uom_obj = self.pool.get('product.uom')
- product_obj = self.pool.get('product.product')
- date_obj = self.pool.get('ir.date')
- user_obj = self.pool.get('res.user')
+ pool = Pool()
+ order_point_obj = pool.get('stock.order_point')
+ uom_obj = pool.get('product.uom')
+ product_obj = pool.get('product.product')
+ date_obj = pool.get('ir.date')
+ user_obj = pool.get('res.user')
user_record = user_obj.browse(Transaction().user)
today = date_obj.today()
# fetch quantities on order points
diff --git a/shipment.xml b/shipment.xml
index c0f395a..e1a1a07 100644
--- a/shipment.xml
+++ b/shipment.xml
@@ -6,8 +6,13 @@ this repository contains the full copyright notices and license terms. -->
<record model="res.user" id="user_generate_shipment_internal">
<field name="login">user_cron_internal_shipment</field>
<field name="name">Cron Intenal Shipment</field>
- <field name="groups" eval="[('add', ref('stock.group_stock'))]"/>
<field name="signature"></field>
+ <field name="active" eval="False"/>
+ </record>
+ <record model="res.user-res.group"
+ id="user_generate_shipment_internal_group_stock">
+ <field name="user" ref="user_generate_shipment_internal"/>
+ <field name="group" ref="stock.group_stock"/>
</record>
<record model="ir.cron" id="cron_shipment_iternal">
@@ -17,11 +22,10 @@ this repository contains the full copyright notices and license terms. -->
<field name="active" eval="True"/>
<field name="interval_number">1</field>
<field name="interval_type">days</field>
- <field name="numbercall">-1</field>
- <field name="doall" eval="False"/>
+ <field name="number_calls">-1</field>
+ <field name="repeat_missed" eval="False"/>
<field name="model">stock.shipment.internal</field>
<field name="function">generate_internal_shipment</field>
- <field name="priority">5</field>
</record>
</data>
diff --git a/tests/test_stock_supply.py b/tests/test_stock_supply.py
index 271fc18..139bd73 100644
--- a/tests/test_stock_supply.py
+++ b/tests/test_stock_supply.py
@@ -10,7 +10,7 @@ if os.path.isdir(DIR):
import unittest
import trytond.tests.test_tryton
-from trytond.tests.test_tryton import test_view
+from trytond.tests.test_tryton import test_view, test_depends
class StockSupplyTestCase(unittest.TestCase):
@@ -27,6 +27,12 @@ class StockSupplyTestCase(unittest.TestCase):
'''
test_view('stock_supply')
+ def test0006depends(self):
+ '''
+ Test depends.
+ '''
+ test_depends()
+
def suite():
suite = trytond.tests.test_tryton.suite()
suite.addTests(unittest.TestLoader().loadTestsFromTestCase(
diff --git a/trytond_stock_supply.egg-info/PKG-INFO b/trytond_stock_supply.egg-info/PKG-INFO
index 68e1761..b7f072a 100644
--- a/trytond_stock_supply.egg-info/PKG-INFO
+++ b/trytond_stock_supply.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
Metadata-Version: 1.0
Name: trytond-stock-supply
-Version: 2.0.1
+Version: 2.2.0
Summary: Supply Management Module with:
- Order point
- Purchase Request
@@ -13,23 +13,26 @@ Home-page: http://www.tryton.org/
Author: B2CK
Author-email: info at b2ck.com
License: GPL-3
-Download-URL: http://downloads.tryton.org/2.0/
+Download-URL: http://downloads.tryton.org/2.2/
Description: UNKNOWN
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Plugins
+Classifier: Framework :: Tryton
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Financial and Insurance Industry
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 :: Czech
+Classifier: Natural Language :: Dutch
Classifier: Natural Language :: English
Classifier: Natural Language :: French
Classifier: Natural Language :: German
+Classifier: Natural Language :: Russian
Classifier: Natural Language :: Spanish
Classifier: Operating System :: OS Independent
-Classifier: Programming Language :: Python :: 2.5
Classifier: Programming Language :: Python :: 2.6
Classifier: Programming Language :: Python :: 2.7
Classifier: Topic :: Office/Business
diff --git a/trytond_stock_supply.egg-info/SOURCES.txt b/trytond_stock_supply.egg-info/SOURCES.txt
index fb30c83..8010040 100644
--- a/trytond_stock_supply.egg-info/SOURCES.txt
+++ b/trytond_stock_supply.egg-info/SOURCES.txt
@@ -4,11 +4,6 @@ INSTALL
LICENSE
MANIFEST.in
README
-bg_BG.csv
-de_DE.csv
-es_CO.csv
-es_ES.csv
-fr_FR.csv
order_point.xml
purchase_request.xml
setup.py
@@ -22,6 +17,14 @@ shipment.xml
./tests/__init__.py
./tests/test_stock_supply.py
doc/index.rst
+locale/bg_BG.po
+locale/cs_CZ.po
+locale/de_DE.po
+locale/es_CO.po
+locale/es_ES.po
+locale/fr_FR.po
+locale/nl_NL.po
+locale/ru_RU.po
trytond_stock_supply.egg-info/PKG-INFO
trytond_stock_supply.egg-info/SOURCES.txt
trytond_stock_supply.egg-info/dependency_links.txt
diff --git a/trytond_stock_supply.egg-info/requires.txt b/trytond_stock_supply.egg-info/requires.txt
index 0a1a795..2d1aea0 100644
--- a/trytond_stock_supply.egg-info/requires.txt
+++ b/trytond_stock_supply.egg-info/requires.txt
@@ -1,6 +1,6 @@
-trytond_product >= 2.0, < 2.1
-trytond_stock >= 2.0, < 2.1
-trytond_purchase >= 2.0, < 2.1
-trytond_party >= 2.0, < 2.1
-trytond_account >= 2.0, < 2.1
-trytond >= 2.0, < 2.1
\ No newline at end of file
+trytond_product >= 2.2, < 2.3
+trytond_stock >= 2.2, < 2.3
+trytond_purchase >= 2.2, < 2.3
+trytond_party >= 2.2, < 2.3
+trytond_account >= 2.2, < 2.3
+trytond >= 2.2, < 2.3
\ No newline at end of file
commit 9006d20461b17f1481195f032ccdfc890de1b7fa
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Mon Oct 3 15:05:46 2011 +0200
Releasing debian version 2.0.1-1.
diff --git a/debian/changelog b/debian/changelog
index 0d1eb97..1a5fb83 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+tryton-modules-stock-supply (2.0.1-1) unstable; urgency=low
+
+ * Merging upstream version 2.0.1.
+ * Removing deprecated XB-Python-Version for dh_python2.
+
+ -- Mathias Behrle <mathiasb at m9s.biz> Mon, 03 Oct 2011 14:54:23 +0200
+
tryton-modules-stock-supply (2.0.0-2) unstable; urgency=low
[ Daniel Baumann ]
commit 546ca419ddd206ef783fe1e228536f4de79f0875
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Mon Oct 3 14:16:03 2011 +0200
Merging upstream version 2.0.1.
diff --git a/CHANGELOG b/CHANGELOG
index f74f0b3..f6b8709 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,6 @@
+Version 2.0.1 - 2011-10-01
+* Bug fixes (see mercurial logs for details)
+
Version 2.0.0 - 2011-04-27
* Bug fixes (see mercurial logs for details)
diff --git a/PKG-INFO b/PKG-INFO
index bb3a455..4ba2e54 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
Metadata-Version: 1.0
Name: trytond_stock_supply
-Version: 2.0.0
+Version: 2.0.1
Summary: Supply Management Module with:
- Order point
- Purchase Request
diff --git a/__tryton__.py b/__tryton__.py
index f253b6b..a0c1dca 100644
--- a/__tryton__.py
+++ b/__tryton__.py
@@ -7,7 +7,7 @@
'name_es_CO': 'Gestión de pedidos de inventario',
'name_es_ES': 'Gestión de suministro de existencias',
'name_fr_FR': 'Gestion des approvisionnements de stock',
- 'version': '2.0.0',
+ 'version': '2.0.1',
'author': 'B2CK',
'email': 'info at b2ck.com',
'website': 'http://www.tryton.org/',
diff --git a/purchase_request.py b/purchase_request.py
index 16295d3..4030d4e 100644
--- a/purchase_request.py
+++ b/purchase_request.py
@@ -147,8 +147,7 @@ class PurchaseRequest(ModelSQL, ModelView):
for min_date in date2products:
product_ids = [x[0].id for x in date2products[min_date]]
with Transaction().set_context(forecast=True,
- stock_date_end=min_date or datetime.date.max,
- stock_skip_warehouse=True):
+ stock_date_end=min_date or datetime.date.max):
pbl = product_obj.products_by_location(warehouse_ids,
product_ids, with_childs=True, skip_zero=False)
for product, max_date in date2products[min_date]:
diff --git a/trytond_stock_supply.egg-info/PKG-INFO b/trytond_stock_supply.egg-info/PKG-INFO
index 44d2f9a..68e1761 100644
--- a/trytond_stock_supply.egg-info/PKG-INFO
+++ b/trytond_stock_supply.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
Metadata-Version: 1.0
Name: trytond-stock-supply
-Version: 2.0.0
+Version: 2.0.1
Summary: Supply Management Module with:
- Order point
- Purchase Request
commit 8d5ed13f132a1ad3a4dd8a7502c210230974e582
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Fri Jul 22 12:27:01 2011 +0200
Removing deprecated XB-Python-Version for dh_python2.
diff --git a/debian/control b/debian/control
index 8be91b4..3dbf1c4 100644
--- a/debian/control
+++ b/debian/control
@@ -18,7 +18,6 @@ Depends:
tryton-modules-account (>= 2.0), tryton-modules-party (>= 2.0),
tryton-modules-product (>= 2.0), tryton-modules-purchase (>= 2.0),
tryton-modules-stock (>= 2.0), python-pkg-resources
-XB-Python-Version: ${python:Versions}
Description: Tryton Application Platform (Stock Supply 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
commit 49fe575417c2581f6d9a5954e6bf42279cc2bad0
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Thu Jul 14 01:25:23 2011 +0200
Releasing debian version 2.0.0-2.
diff --git a/debian/changelog b/debian/changelog
index daa7df7..0d1eb97 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,17 @@
+tryton-modules-stock-supply (2.0.0-2) unstable; urgency=low
+
+ [ Daniel Baumann ]
+ * Removing for new source package version obsoleted README.source file.
+ * Adding options for source package.
+ * Compacting copyright file.
+ * Not wrapping uploaders field, it does not exceed 80 chars.
+
+ [ Mathias Behrle ]
+ * Moving from deprecated python-support to dh_python2, thanks to
+ Charlie Smotherman <cjsmo at cableone.net> (Closes: #632781).
+
+ -- Mathias Behrle <mathiasb at m9s.biz> Thu, 14 Jul 2011 01:25:03 +0200
+
tryton-modules-stock-supply (2.0.0-1) unstable; urgency=low
* Updating to standards version 3.9.2.
commit 018ef57cc2b6e9016e7463255587840bcb9cc15a
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Wed Jul 13 18:59:00 2011 +0200
Moving from deprecated python-support to dh_python2, thanks to Charlie Smotherman <cjsmo at cableone.net> (Closes: #632781).
diff --git a/debian/control b/debian/control
index 1d49160..8be91b4 100644
--- a/debian/control
+++ b/debian/control
@@ -4,11 +4,12 @@ Priority: optional
Maintainer: Debian Tryton Maintainers <tryton at lists.debian-maintainers.org>
Uploaders: Daniel Baumann <daniel at debian.org>, Mathias Behrle <mathiasb at m9s.biz>
Dm-Upload-Allowed: yes
-Build-Depends: debhelper (>= 8), python, python-setuptools, python-support
+Build-Depends: debhelper (>= 8), python (>= 2.6.6-3~), python-setuptools
Standards-Version: 3.9.2
Homepage: http://www.tryton.org/
Vcs-Browser: http://git.debian-maintainers.org/?p=tryton/tryton-modules-stock-supply.git
Vcs-Git: git://git.debian-maintainers.org/git/tryton/tryton-modules-stock-supply.git
+X-Python-Version: >= 2.5
Package: tryton-modules-stock-supply
Architecture: all
diff --git a/debian/pycompat b/debian/pycompat
deleted file mode 100644
index 0cfbf08..0000000
--- a/debian/pycompat
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/debian/pyversions b/debian/pyversions
deleted file mode 100644
index b3dc41e..0000000
--- a/debian/pyversions
+++ /dev/null
@@ -1 +0,0 @@
-2.5-
diff --git a/debian/rules b/debian/rules
index 000210b..e32b791 100755
--- a/debian/rules
+++ b/debian/rules
@@ -1,4 +1,9 @@
#!/usr/bin/make -f
%:
- dh ${@}
+ dh ${@} --with python2
+
+override_dh_auto_clean:
+ dh_auto_clean
+
+ rm -rf *.egg-info
commit 320bed699932027a7640636c68f4dbcf2e55da0c
Author: Daniel Baumann <daniel at debian.org>
Date: Sun Jul 10 16:01:11 2011 +0200
Not wrapping uploaders field, it does not exceed 80 chars.
diff --git a/debian/control b/debian/control
index cb4248a..1d49160 100644
--- a/debian/control
+++ b/debian/control
@@ -2,9 +2,7 @@ Source: tryton-modules-stock-supply
Section: python
Priority: optional
Maintainer: Debian Tryton Maintainers <tryton at lists.debian-maintainers.org>
-Uploaders:
- Daniel Baumann <daniel at debian.org>,
- Mathias Behrle <mathiasb at m9s.biz>
+Uploaders: Daniel Baumann <daniel at debian.org>, Mathias Behrle <mathiasb at m9s.biz>
Dm-Upload-Allowed: yes
Build-Depends: debhelper (>= 8), python, python-setuptools, python-support
Standards-Version: 3.9.2
commit 868ab6afb6313bcd680e4dc7a0f701dd7b8cb804
Author: Daniel Baumann <daniel at debian.org>
Date: Sun Jul 10 15:54:40 2011 +0200
Compacting copyright file.
diff --git a/debian/copyright b/debian/copyright
index 8d14400..753c790 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -1,33 +1,15 @@
-Upstream-Contact: Tryton project <tryton at googlegroups.com>
-Upstream-Homepage: http://downloads.tryton.org/
-Maintainer-Contact: Debian Tryton Maintainers <tryton at lists.debian-maintainers.org>
-Maintainer-Homepage: http://tryton.debian-maintainers.org/
-
Files: *
Copyright:
(C) 2008-2011 Cedric Krier
(C) 2008-2011 Bertrand Chenal
(C) 2008-2011 B2CK SPRL
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/>.
- .
- On Debian systems, the complete text of the GNU General Public License
- can be found in /usr/share/common-licenses/GPL-3 file.
Files: debian/*
Copyright: (C) 2009-2011 Daniel Baumann <daniel at debian.org>
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
@@ -41,5 +23,5 @@ License: GPL-3+
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
.
- On Debian systems, the complete text of the GNU General Public License
+ The complete text of the GNU General Public License
can be found in /usr/share/common-licenses/GPL-3 file.
commit e577d311d075513173ca6ee0cc8084b7c9ed5ba9
Author: Daniel Baumann <daniel at debian.org>
Date: Sun Jul 10 15:38:55 2011 +0200
Adding options for source package.
diff --git a/debian/source/options b/debian/source/options
new file mode 100644
index 0000000..d053b65
--- /dev/null
+++ b/debian/source/options
@@ -0,0 +1,2 @@
+compression = gzip
+compression-level = 9
commit 79307096752ca41f5e1ec584227aa7b228ba6015
Author: Daniel Baumann <daniel at debian.org>
Date: Sun Jul 10 15:38:03 2011 +0200
Removing for new source package version obsoleted README.source file.
diff --git a/debian/README.source b/debian/README.source
deleted file mode 100644
index 18b6b24..0000000
--- a/debian/README.source
+++ /dev/null
@@ -1,37 +0,0 @@
-Package Repositories
---------------------
-
-Backports for the current stable debian distribution as well as snapshots of
-unreleased versions may be available in repositories listed on the maintainers
-homepage. The current URL of the maintainer homepage can be seen in
-debian/copyright.
-
-
-Source Access
--------------
-
-You can obtain the sources of this package with:
-
- $ apt-get source ${PACKAGE}
-
-whereas '${PACKAGE}' has to be replaced with the actual name of the package.
-
-This package is maintained with the Git version control system. The current git
-source tree can be obtained with:
-
- $ git clone ${GIT_URI}
-
-whereas '${GIT_URI}' has to be replaced with the actual URI for the Git
-repository. The current Git URI can be seen in debian/control in the extracted
-package sources.
-
-More information about Git can be found in the git-core package.
-
-This package may use the Quilt patch system to manage all modifications to the
-upstream source. Changes, if any, are stored in the source package as diffs in
-debian/diff and are applied during the build. Current modifications can be
-applied to the source tree with:
-
- $ QUILT_PATCHES=debian/patches quilt push -a
-
-More information about Quilt can be found in the quilt package.
commit 897ce139d77232f5ad301b07ed379328d6ab7903
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Tue May 24 21:40:08 2011 +0200
Releasing debian version 2.0.0-1.
diff --git a/debian/changelog b/debian/changelog
index 7a3f220..daa7df7 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,12 @@
+tryton-modules-stock-supply (2.0.0-1) unstable; urgency=low
+
+ * Updating to standards version 3.9.2.
+ * Merging upstream version 2.0.0.
+ * Updating Copyright.
+ * Updating versioned tryton depends to 2.0.
+
+ -- Mathias Behrle <mathiasb at m9s.biz> Tue, 24 May 2011 21:37:06 +0200
+
tryton-modules-stock-supply (1.8.0-2) unstable; urgency=low
* Changing my email address.
commit 6c0229a8e5b27d260d517cfbd379019b5117f280
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Tue May 24 21:21:34 2011 +0200
Updating versioned tryton depends to 2.0.
diff --git a/debian/control b/debian/control
index 98e1ad2..cb4248a 100644
--- a/debian/control
+++ b/debian/control
@@ -15,10 +15,10 @@ Vcs-Git: git://git.debian-maintainers.org/git/tryton/tryton-modules-stock-supply
Package: tryton-modules-stock-supply
Architecture: all
Depends:
- ${misc:Depends}, ${python:Depends}, tryton-server (>= 1.8),
- tryton-modules-account (>= 1.8), tryton-modules-party (>= 1.8),
- tryton-modules-product (>= 1.8), tryton-modules-purchase (>= 1.8),
- tryton-modules-stock (>= 1.8), python-pkg-resources
+ ${misc:Depends}, ${python:Depends}, tryton-server (>= 2.0),
+ tryton-modules-account (>= 2.0), tryton-modules-party (>= 2.0),
+ tryton-modules-product (>= 2.0), tryton-modules-purchase (>= 2.0),
+ tryton-modules-stock (>= 2.0), python-pkg-resources
XB-Python-Version: ${python:Versions}
Description: Tryton Application Platform (Stock Supply Module)
Tryton is a high-level general purpose application platform written in Python
commit 174c9dc21b70b44bad29a201604ce975480d1397
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Tue May 24 20:40:04 2011 +0200
Updating Copyright.
diff --git a/debian/copyright b/debian/copyright
index 96ed7b4..8d14400 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -5,9 +5,9 @@ Maintainer-Homepage: http://tryton.debian-maintainers.org/
Files: *
Copyright:
- (C) 2008-2010 Cedric Krier
- (C) 2008-2010 Bertrand Chenal
- (C) 2008-2010 B2CK SPRL
+ (C) 2008-2011 Cedric Krier
+ (C) 2008-2011 Bertrand Chenal
+ (C) 2008-2011 B2CK SPRL
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
commit 0f3fd621d27c7e952c971a06536e56d46be9dd03
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Tue May 24 19:13:19 2011 +0200
Merging upstream version 2.0.0.
diff --git a/CHANGELOG b/CHANGELOG
index 29d9fb1..f74f0b3 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,6 @@
+Version 2.0.0 - 2011-04-27
+* Bug fixes (see mercurial logs for details)
+
Version 1.8.0 - 2010-11-01
* Bug fixes (see mercurial logs for details)
diff --git a/COPYRIGHT b/COPYRIGHT
index cca7db9..3d2324b 100644
--- a/COPYRIGHT
+++ b/COPYRIGHT
@@ -1,6 +1,6 @@
-Copyright (C) 2008-2010 Cédric Krier.
-Copyright (C) 2008-2010 Bertrand Chenal.
-Copyright (C) 2008-2010 B2CK SPRL.
+Copyright (C) 2008-2011 Cédric Krier.
+Copyright (C) 2008-2011 Bertrand Chenal.
+Copyright (C) 2008-2011 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/PKG-INFO b/PKG-INFO
index a785e9a..bb3a455 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
Metadata-Version: 1.0
Name: trytond_stock_supply
-Version: 1.8.0
+Version: 2.0.0
Summary: Supply Management Module with:
- Order point
- Purchase Request
@@ -13,7 +13,7 @@ Home-page: http://www.tryton.org/
Author: B2CK
Author-email: info at b2ck.com
License: GPL-3
-Download-URL: http://downloads.tryton.org/1.8/
+Download-URL: http://downloads.tryton.org/2.0/
Description: UNKNOWN
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
@@ -23,10 +23,13 @@ Classifier: Intended Audience :: Financial and Insurance Industry
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 :: English
Classifier: Natural Language :: French
Classifier: Natural Language :: German
Classifier: Natural Language :: Spanish
Classifier: Operating System :: OS Independent
-Classifier: Programming Language :: Python
+Classifier: Programming Language :: Python :: 2.5
+Classifier: Programming Language :: Python :: 2.6
+Classifier: Programming Language :: Python :: 2.7
Classifier: Topic :: Office/Business
diff --git a/__tryton__.py b/__tryton__.py
index 7061baf..f253b6b 100644
--- a/__tryton__.py
+++ b/__tryton__.py
@@ -2,11 +2,12 @@
#this repository contains the full copyright notices and license terms.
{
'name': 'Stock Supply Management',
+ 'name_bg_BG': 'Управление на доставка на наличност',
'name_de_DE': 'Lagerverwaltung Bestellwesen',
'name_es_CO': 'Gestión de pedidos de inventario',
'name_es_ES': 'Gestión de suministro de existencias',
'name_fr_FR': 'Gestion des approvisionnements de stock',
- 'version': '1.8.0',
+ 'version': '2.0.0',
'author': 'B2CK',
'email': 'info at b2ck.com',
'website': 'http://www.tryton.org/',
@@ -18,6 +19,14 @@ With schedulers:
- to generate purchase requests based on order points
- to generate internal shipments based on order points
''',
+ 'description_bg_BG': '''Модул за управление на доставка на наличност с:
+ - Пренареждане
+ - Заявка за покупка
+
+С планировщици:
+ - за генериране на заявки за покупка въз основа на пренареждания
+ - за генериране на вътрешни пратки въз основа на пренареждания
+''',
'description_de_DE': '''Modul für das Bestellwesen mit:
- Bestellpunkten
- Auftragserstellung
@@ -66,6 +75,7 @@ sur base des règles d'approvisionnement
'shipment.xml',
],
'translation': [
+ 'bg_BG.csv',
'de_DE.csv',
'es_CO.csv',
'es_ES.csv',
diff --git a/bg_BG.csv b/bg_BG.csv
new file mode 100644
index 0000000..ee10b17
--- /dev/null
+++ b/bg_BG.csv
@@ -0,0 +1,81 @@
+type,name,res_id,src,value,fuzzy
+error,purchase.request,0,Purchase requests are only created by the system.,Заявките за покупка се създават само от системата,0
+error,purchase.request.create_purchase,0,Purchase price is missing for product: %s (id: %s)!,Липсва покупната цена за продукт: %s (id: %s)!,0
+error,purchase.request.create_purchase,0,This price is necessary for creating purchase.,Цената е необходима при създаване на покупка,0
+error,stock.order_point,0,Maximal quantity must be bigger than Minimal quantity,Максималното количество трябва да е по-голямо от Минималното количество,0
+error,stock.order_point,0,Only one order point is allowed for each product-location pair.,Разрешено е само едно пренареждане за всяка двойка продукт-местонахождение.,0
+error,stock.order_point,0,You can not define two order points on the same product with opposite locations.,Не може да зададете две пренареждания на един и същи продукт с противоположни местонахождения,0
+field,"product.product,order_points",0,Order Points,Пренареждания,0
+field,"purchase.request,company",0,Company,Фирма,0
+field,"purchase.request,computed_quantity",0,Computed Quantity,Изчислено количество,0
+field,"purchase.request,computed_uom",0,Computed UOM,Изчислена мер. ед.,0
+field,"purchase.request,origin",0,Origin,Източник,0
+field,"purchase.request,party",0,Party,Партньор,0
+field,"purchase.request,product",0,Product,Продукт,0
+field,"purchase.request,purchase",0,Purchase,Покупка,0
+field,"purchase.request,purchase_date",0,Best Purchase Date,Най-добра дата за покупка,0
+field,"purchase.request,purchase_line",0,Purchase Line,Ред от покупка,0
+field,"purchase.request,quantity",0,Quantity,Количество,0
+field,"purchase.request,rec_name",0,Name,Име,0
+field,"purchase.request,state",0,State,Състояние,0
+field,"purchase.request,stock_level",0,Stock at Supply Date,Наличност към дата на доставка,0
+field,"purchase.request,supply_date",0,Expected Supply Date,Очаквана дата на доставка,0
+field,"purchase.request,uom",0,UOM,Мер. ед.,0
+field,"purchase.request,warehouse",0,Warehouse,Склад,0
+field,"purchase.request.create_purchase.ask_party,company",0,Company,Фирма,0
+field,"purchase.request.create_purchase.ask_party,party",0,Supplier,Доставчик,0
+field,"purchase.request.create_purchase.ask_party,product",0,Product,Продукт,0
+field,"purchase.request.create_purchase.ask_term,company",0,Company,Фирма,0
+field,"purchase.request.create_purchase.ask_term,party",0,Supplier,Доставчик,0
+field,"purchase.request.create_purchase.ask_term,payment_term",0,Payment Term,Условие за плащане,0
+field,"stock.order_point,company",0,Company,Фирма,0
+field,"stock.order_point,location",0,Location,Местоположение,0
+field,"stock.order_point,max_quantity",0,Maximal Quantity,Максимално количество,0
+field,"stock.order_point,min_quantity",0,Minimal Quantity,Минимално количество,0
+field,"stock.order_point,product",0,Product,Продукт,0
+field,"stock.order_point,provisioning_location",0,Provisioning Location,Местонахождение на провизии,0
+field,"stock.order_point,rec_name",0,Name,Име,0
+field,"stock.order_point,storage_location",0,Storage Location,Местонахождение на съхранение,0
+field,"stock.order_point,type",0,Type,Вид,0
+field,"stock.order_point,unit",0,Unit,Единица,0
+field,"stock.order_point,unit_digits",0,Unit Digits,Десетични единици,0
+field,"stock.order_point,warehouse_location",0,Warehouse Location,Местонахождение на склад,0
+model,"ir.action,name",act_order_point_form,Order Points,Пренареждания,0
+model,"ir.action,name",act_order_point_form2,Order Points,Пренареждания,0
+model,"ir.action,name",act_purchase_form,Purchases,Покупки,0
+model,"ir.action,name",act_purchase_request_form,Purchase Requests,Заявки за покупка,0
+model,"ir.action,name",act_purchase_request_form_draft,Draft Purchase Requests,Проект на заявка за покупка,0
+model,"ir.action,name",wizard_create_purchase,Create Purchase,Създаване на покупка,0
+model,"ir.cron,name",cron_generate_request,Generate Purchase Requests,Генериране на заявки за покупка,0
+model,"ir.cron,name",cron_shipment_iternal,Generate Internal Shipments,Генериране на вътрешна пратка,0
+model,"ir.ui.menu,name",menu_order_point_form,Order Points,Пренареждания,0
+model,"ir.ui.menu,name",menu_order_point_form_new,New Order Point,Ново пренареждане,0
+model,"ir.ui.menu,name",menu_purchase_request_form,Purchase Requests,Заявки за покупки,0
+model,"ir.ui.menu,name",menu_purchase_request_form_draft,Draft Purchase Requests,Проект на заявки за покупка,0
+model,"purchase.request,name",0,Purchase Request,Заявка за покупка,0
+model,"purchase.request.create_purchase.ask_party,name",0,Create Purchase Ask Party,Създаване на покупка - питане на партньор,0
+model,"purchase.request.create_purchase.ask_term,name",0,Create Purchase Ask Term,Запитване за създаване на условие за плащане,0
+model,"res.group,name",group_purchase_request,Purchase Request,Заявка за покупка,0
+model,"res.user,name",user_generate_request,Cron Purchase Request,Планиране на заявка за покупка,0
+model,"res.user,name",user_generate_shipment_internal,Cron Intenal Shipment,Планиране на вътрешена пратка,0
+model,"stock.order_point,name",0,Order Point,Пренареждане,0
+selection,"purchase.request,state",0,Cancel,Отказ,0
+selection,"purchase.request,state",0,Done,Приключен,0
+selection,"purchase.request,state",0,Draft,Проект,0
+selection,"purchase.request,state",0,Purchased,Поръчан,0
+selection,"stock.order_point,type",0,Internal,Вътрешно,0
+selection,"stock.order_point,type",0,Purchase,Покупка,0
+view,purchase.request,0,Product Info,Информация за продукт,0
+view,purchase.request,0,Purchase Request,Заявка за покупка,0
+view,purchase.request,0,Purchase Requests,Заявки за покупка,0
+view,purchase.request,0,Supply Info,Информация за доставчик,0
+view,purchase.request.create_purchase.ask_party,0,Create Purchase: Missing Supplier,Създаване на покупка; липсва доставчик,0
+view,purchase.request.create_purchase.ask_term,0,Create Purchase: Missing Payment Term,Създаване на покупка: Липсва условие за плащане,0
+view,stock.order_point,0,Order Point,Пренареждане,0
+view,stock.order_point,0,Order Point Type,Вид пренареждане,0
+view,stock.order_point,0,Order Points,Пренареждания,0
+view,stock.order_point,0,Product Info,Информация за продукт,0
+wizard_button,"purchase.request.create_purchase,ask_user_party,end",0,Cancel,Отказ,0
+wizard_button,"purchase.request.create_purchase,ask_user_party,init",0,Continue,Продължаване,0
+wizard_button,"purchase.request.create_purchase,ask_user_term,end",0,Cancel,Отказ,0
+wizard_button,"purchase.request.create_purchase,ask_user_term,init",0,Continue,Продължаване,0
diff --git a/de_DE.csv b/de_DE.csv
index 486fcf5..77f5d27 100644
--- a/de_DE.csv
+++ b/de_DE.csv
@@ -44,7 +44,7 @@ model,"ir.action,name",act_order_point_form,Order Points,Bestellpunkte,0
model,"ir.action,name",act_order_point_form2,Order Points,Bestellpunkte,0
model,"ir.action,name",act_purchase_form,Purchases,Einkäufe,0
model,"ir.action,name",act_purchase_request_form,Purchase Requests,Bestellvorschläge,0
-model,"ir.action,name",act_purchase_request_form_draft,Draft Purchase Requests,Entwürfe (Bestellvorschläge),0
+model,"ir.action,name",act_purchase_request_form_draft,Draft Purchase Requests,Entwürfe Bestellvorschläge,0
model,"ir.action,name",wizard_create_purchase,Create Purchase,Auftrag erstellen,0
model,"ir.cron,name",cron_generate_request,Generate Purchase Requests,Erstellung von Bestellvorschlägen,0
model,"ir.cron,name",cron_shipment_iternal,Generate Internal Shipments,Erstellung von Internen Lieferposten,0
diff --git a/order_point.xml b/order_point.xml
index d3d062e..d9e062e 100644
--- a/order_point.xml
+++ b/order_point.xml
@@ -59,7 +59,6 @@ this repository contains the full copyright notices and license terms. -->
<record model="ir.action.act_window" id="act_order_point_form">
<field name="name">Order Points</field>
<field name="res_model">stock.order_point</field>
- <field name="view_type">form</field>
</record>
<record model="ir.action.act_window.view" id="act_order_point_form_view1">
<field name="sequence" eval="10"/>
@@ -77,7 +76,6 @@ this repository contains the full copyright notices and license terms. -->
<record model="ir.action.act_window" id="act_order_point_form2">
<field name="name">Order Points</field>
<field name="res_model">stock.order_point</field>
- <field name="view_type">form</field>
</record>
<record model="ir.action.act_window.view" id="act_order_point_form2_view1">
<field name="sequence" eval="10"/>
diff --git a/purchase_request.py b/purchase_request.py
index bc295fa..16295d3 100644
--- a/purchase_request.py
+++ b/purchase_request.py
@@ -570,7 +570,7 @@ class CreatePurchase(Wizard):
# Create all
for purchase in purchases.itervalues():
lines = purchase.pop('lines')
- with Transaction().set_user(0, with_context=True):
+ with Transaction().set_user(0, set_context=True):
purchase_id = purchase_obj.create(purchase)
for line in lines:
request_id = line.pop('request')
diff --git a/purchase_request.xml b/purchase_request.xml
index 4a32103..c378169 100644
--- a/purchase_request.xml
+++ b/purchase_request.xml
@@ -73,7 +73,6 @@ this repository contains the full copyright notices and license terms. -->
<record model="ir.action.act_window" id="act_purchase_request_form">
<field name="name">Purchase Requests</field>
<field name="res_model">purchase.request</field>
- <field name="view_type">form</field>
</record>
<record model="ir.action.act_window.view" id="act_purchase_request_form_view1">
<field name="sequence" eval="10"/>
@@ -92,7 +91,6 @@ this repository contains the full copyright notices and license terms. -->
<record model="ir.action.act_window" id="act_purchase_request_form_draft">
<field name="name">Draft Purchase Requests</field>
<field name="res_model">purchase.request</field>
- <field name="view_type">form</field>
<field name="domain">[('purchase_line', '=', False)]</field>
</record>
<record model="ir.action.act_window.view" id="act_purchase_request_form_draft_view1">
@@ -156,7 +154,6 @@ this repository contains the full copyright notices and license terms. -->
<record model="ir.action.act_window" id="act_purchase_form">
<field name="name">Purchases</field>
<field name="res_model">purchase.purchase</field>
- <field name="view_type">form</field>
<field name="domain">[("id", "=", Eval('purchase'))]</field>
</record>
<record model="ir.action.act_window.view" id="act_purchase_form_view1">
diff --git a/setup.py b/setup.py
index a5103df..ddc3c8f 100644
--- a/setup.py
+++ b/setup.py
@@ -44,12 +44,15 @@ setup(name='trytond_stock_supply',
'Intended Audience :: Legal Industry',
'Intended Audience :: Manufacturing',
'License :: OSI Approved :: GNU General Public License (GPL)',
+ 'Natural Language :: Bulgarian',
'Natural Language :: English',
'Natural Language :: French',
'Natural Language :: German',
'Natural Language :: Spanish',
'Operating System :: OS Independent',
- 'Programming Language :: Python',
+ 'Programming Language :: Python :: 2.5',
+ 'Programming Language :: Python :: 2.6',
+ 'Programming Language :: Python :: 2.7',
'Topic :: Office/Business',
],
license='GPL-3',
diff --git a/trytond_stock_supply.egg-info/PKG-INFO b/trytond_stock_supply.egg-info/PKG-INFO
index 5cec89a..44d2f9a 100644
--- a/trytond_stock_supply.egg-info/PKG-INFO
+++ b/trytond_stock_supply.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
Metadata-Version: 1.0
Name: trytond-stock-supply
-Version: 1.8.0
+Version: 2.0.0
Summary: Supply Management Module with:
- Order point
- Purchase Request
@@ -13,7 +13,7 @@ Home-page: http://www.tryton.org/
Author: B2CK
Author-email: info at b2ck.com
License: GPL-3
-Download-URL: http://downloads.tryton.org/1.8/
+Download-URL: http://downloads.tryton.org/2.0/
Description: UNKNOWN
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
@@ -23,10 +23,13 @@ Classifier: Intended Audience :: Financial and Insurance Industry
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 :: English
Classifier: Natural Language :: French
Classifier: Natural Language :: German
Classifier: Natural Language :: Spanish
Classifier: Operating System :: OS Independent
-Classifier: Programming Language :: Python
+Classifier: Programming Language :: Python :: 2.5
+Classifier: Programming Language :: Python :: 2.6
+Classifier: Programming Language :: Python :: 2.7
Classifier: Topic :: Office/Business
diff --git a/trytond_stock_supply.egg-info/SOURCES.txt b/trytond_stock_supply.egg-info/SOURCES.txt
index 47a40fe..fb30c83 100644
--- a/trytond_stock_supply.egg-info/SOURCES.txt
+++ b/trytond_stock_supply.egg-info/SOURCES.txt
@@ -4,6 +4,7 @@ INSTALL
LICENSE
MANIFEST.in
README
+bg_BG.csv
de_DE.csv
es_CO.csv
es_ES.csv
diff --git a/trytond_stock_supply.egg-info/requires.txt b/trytond_stock_supply.egg-info/requires.txt
index 6322d11..0a1a795 100644
--- a/trytond_stock_supply.egg-info/requires.txt
+++ b/trytond_stock_supply.egg-info/requires.txt
@@ -1,6 +1,6 @@
-trytond_product >= 1.8, < 1.9
-trytond_stock >= 1.8, < 1.9
-trytond_purchase >= 1.8, < 1.9
-trytond_party >= 1.8, < 1.9
-trytond_account >= 1.8, < 1.9
-trytond >= 1.8, < 1.9
\ No newline at end of file
+trytond_product >= 2.0, < 2.1
+trytond_stock >= 2.0, < 2.1
+trytond_purchase >= 2.0, < 2.1
+trytond_party >= 2.0, < 2.1
+trytond_account >= 2.0, < 2.1
+trytond >= 2.0, < 2.1
\ No newline at end of file
commit 3c82fc2679a8d6e517079dcb73a42484f9ea85d6
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Tue Apr 26 21:08:55 2011 +0200
Updating to standards version 3.9.2.
diff --git a/debian/control b/debian/control
index dfb817d..98e1ad2 100644
--- a/debian/control
+++ b/debian/control
@@ -7,7 +7,7 @@ Uploaders:
Mathias Behrle <mathiasb at m9s.biz>
Dm-Upload-Allowed: yes
Build-Depends: debhelper (>= 8), python, python-setuptools, python-support
-Standards-Version: 3.9.1
+Standards-Version: 3.9.2
Homepage: http://www.tryton.org/
Vcs-Browser: http://git.debian-maintainers.org/?p=tryton/tryton-modules-stock-supply.git
Vcs-Git: git://git.debian-maintainers.org/git/tryton/tryton-modules-stock-supply.git
commit e1875305adfb3b837700d8d13917a6e916d6ab8c
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Tue Feb 15 13:18:36 2011 +0100
Releasing debian version 1.8.0-2.
diff --git a/debian/changelog b/debian/changelog
index b31a296..7a3f220 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,11 @@
+tryton-modules-stock-supply (1.8.0-2) unstable; urgency=low
+
+ * Changing my email address.
+ * Setting minimal Python version to 2.5.
+ * Updating Copyright.
+
+ -- Mathias Behrle <mathiasb at m9s.biz> Tue, 15 Feb 2011 13:18:23 +0100
+
tryton-modules-stock-supply (1.8.0-1) experimental; urgency=low
* Updating standards version to 3.9.0.
commit 0b6570d57413c9d92b93a9f7343871a4d79da1ff
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Tue Feb 15 12:38:46 2011 +0100
Updating Copyright.
diff --git a/debian/copyright b/debian/copyright
index a775c9c..96ed7b4 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -26,7 +26,7 @@ License: GPL-3+
can be found in /usr/share/common-licenses/GPL-3 file.
Files: debian/*
-Copyright: (C) 2009-2010 Daniel Baumann <daniel at debian.org>
+Copyright: (C) 2009-2011 Daniel Baumann <daniel at debian.org>
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
commit 848423a14e981e8d77cfe8ec65eb5e62a83ddd27
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Sat Jan 15 17:27:21 2011 +0100
Setting minimal Python version to 2.5.
diff --git a/debian/pyversions b/debian/pyversions
index 8b253bc..b3dc41e 100644
--- a/debian/pyversions
+++ b/debian/pyversions
@@ -1 +1 @@
-2.4-
+2.5-
commit 6ff59f16d071555642724f8aba6ece82d23162bb
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Sat Nov 20 11:48:58 2010 +0100
Changing my email address.
diff --git a/debian/control b/debian/control
index b155e51..dfb817d 100644
--- a/debian/control
+++ b/debian/control
@@ -4,7 +4,7 @@ Priority: optional
Maintainer: Debian Tryton Maintainers <tryton at lists.debian-maintainers.org>
Uploaders:
Daniel Baumann <daniel at debian.org>,
- Mathias Behrle <mathiasb at mbsolutions.selfip.biz>
+ Mathias Behrle <mathiasb at m9s.biz>
Dm-Upload-Allowed: yes
Build-Depends: debhelper (>= 8), python, python-setuptools, python-support
Standards-Version: 3.9.1
commit bf878a6858361dae59efc5e714fec75f3871d2b1
Author: Daniel Baumann <daniel at debian.org>
Date: Fri Nov 12 13:33:30 2010 +0100
Releasing debian version 1.8.0-1.
diff --git a/debian/changelog b/debian/changelog
index 2746934..b31a296 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,14 @@
+tryton-modules-stock-supply (1.8.0-1) experimental; urgency=low
+
+ * Updating standards version to 3.9.0.
+ * Updating to debhelper version 8.
+ * Updating to standards version 3.9.1.
+ * Switching to source format 3.0 (quilt).
+ * Merging upstream version 1.8.0.
+ * Updating versioned tryton depends to 1.8.
+
+ -- Daniel Baumann <daniel at debian.org> Fri, 12 Nov 2010 13:33:27 +0100
+
tryton-modules-stock-supply (1.6.0-1) unstable; urgency=low
[ Daniel Baumann ]
commit 8ccc4997a5fcaedbf59922819cfc6cb2bae89d32
Author: Daniel Baumann <daniel at debian.org>
Date: Thu Nov 4 20:16:01 2010 +0100
Updating versioned tryton depends to 1.8.
diff --git a/debian/control b/debian/control
index b0dcadc..b155e51 100644
--- a/debian/control
+++ b/debian/control
@@ -15,10 +15,10 @@ Vcs-Git: git://git.debian-maintainers.org/git/tryton/tryton-modules-stock-supply
Package: tryton-modules-stock-supply
Architecture: all
Depends:
- ${misc:Depends}, ${python:Depends}, tryton-server (>= 1.6),
- tryton-modules-account (>= 1.6), tryton-modules-party (>= 1.6),
- tryton-modules-product (>= 1.6), tryton-modules-purchase (>= 1.6),
- tryton-modules-stock (>= 1.6), python-pkg-resources
+ ${misc:Depends}, ${python:Depends}, tryton-server (>= 1.8),
+ tryton-modules-account (>= 1.8), tryton-modules-party (>= 1.8),
+ tryton-modules-product (>= 1.8), tryton-modules-purchase (>= 1.8),
+ tryton-modules-stock (>= 1.8), python-pkg-resources
XB-Python-Version: ${python:Versions}
Description: Tryton Application Platform (Stock Supply Module)
Tryton is a high-level general purpose application platform written in Python
commit 09616a8c15d333772170f376e702b478ae1ae367
Author: Daniel Baumann <daniel at debian.org>
Date: Thu Nov 4 20:13:26 2010 +0100
Merging upstream version 1.8.0.
diff --git a/CHANGELOG b/CHANGELOG
index e36b38a..29d9fb1 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,6 @@
+Version 1.8.0 - 2010-11-01
+* Bug fixes (see mercurial logs for details)
+
Version 1.6.0 - 2010-05-13
* Bug fixes (see mercurial logs for details)
diff --git a/INSTALL b/INSTALL
index 1134d9d..4288271 100644
--- a/INSTALL
+++ b/INSTALL
@@ -4,7 +4,7 @@ Installing trytond_stock_supply
Prerequisites
-------------
- * Python 2.4 or later (http://www.python.org/)
+ * Python 2.5 or later (http://www.python.org/)
* trytond (http://www.tryton.org/)
* trytond_party (http://www.tryton.org/)
* trytond_product (http://www.tryton.org/)
diff --git a/PKG-INFO b/PKG-INFO
index 4ef91c6..a785e9a 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
Metadata-Version: 1.0
Name: trytond_stock_supply
-Version: 1.6.0
+Version: 1.8.0
Summary: Supply Management Module with:
- Order point
- Purchase Request
@@ -13,7 +13,7 @@ Home-page: http://www.tryton.org/
Author: B2CK
Author-email: info at b2ck.com
License: GPL-3
-Download-URL: http://downloads.tryton.org/1.6/
+Download-URL: http://downloads.tryton.org/1.8/
Description: UNKNOWN
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
diff --git a/__tryton__.py b/__tryton__.py
index c4d1e25..7061baf 100644
--- a/__tryton__.py
+++ b/__tryton__.py
@@ -6,7 +6,7 @@
'name_es_CO': 'Gestión de pedidos de inventario',
'name_es_ES': 'Gestión de suministro de existencias',
'name_fr_FR': 'Gestion des approvisionnements de stock',
- 'version': '1.6.0',
+ 'version': '1.8.0',
'author': 'B2CK',
'email': 'info at b2ck.com',
'website': 'http://www.tryton.org/',
diff --git a/de_DE.csv b/de_DE.csv
index be73142..486fcf5 100644
--- a/de_DE.csv
+++ b/de_DE.csv
@@ -9,12 +9,6 @@ field,"product.product,order_points",0,Order Points,Bestellpunkte,0
field,"purchase.request,company",0,Company,Unternehmen,0
field,"purchase.request,computed_quantity",0,Computed Quantity,Berechnete Anzahl,0
field,"purchase.request,computed_uom",0,Computed UOM,Berechnete Maßeinheit,0
-field,"purchase.request.create_purchase.ask_party,company",0,Company,Unternehmen,0
-field,"purchase.request.create_purchase.ask_party,party",0,Supplier,Lieferant,0
-field,"purchase.request.create_purchase.ask_party,product",0,Product,Artikel,0
-field,"purchase.request.create_purchase.ask_term,company",0,Company,Unternehmen,0
-field,"purchase.request.create_purchase.ask_term,party",0,Supplier,Lieferant,0
-field,"purchase.request.create_purchase.ask_term,payment_term",0,Payment Term,Zahlungsbedingung,0
field,"purchase.request,origin",0,Origin,Herkunft,0
field,"purchase.request,party",0,Party,Partei,0
field,"purchase.request,product",0,Product,Artikel,0
@@ -28,6 +22,12 @@ field,"purchase.request,stock_level",0,Stock at Supply Date,Lagerbestand am Lief
field,"purchase.request,supply_date",0,Expected Supply Date,Voraussichtliches Lieferdatum,0
field,"purchase.request,uom",0,UOM,Maßeinheit,0
field,"purchase.request,warehouse",0,Warehouse,Warenlager,0
+field,"purchase.request.create_purchase.ask_party,company",0,Company,Unternehmen,0
+field,"purchase.request.create_purchase.ask_party,party",0,Supplier,Lieferant,0
+field,"purchase.request.create_purchase.ask_party,product",0,Product,Artikel,0
+field,"purchase.request.create_purchase.ask_term,company",0,Company,Unternehmen,0
+field,"purchase.request.create_purchase.ask_term,party",0,Supplier,Lieferant,0
+field,"purchase.request.create_purchase.ask_term,payment_term",0,Payment Term,Zahlungsbedingung,0
field,"stock.order_point,company",0,Company,Unternehmen,0
field,"stock.order_point,location",0,Location,Lagerort,0
field,"stock.order_point,max_quantity",0,Maximal Quantity,Maximale Anzahl,0
@@ -40,24 +40,24 @@ field,"stock.order_point,type",0,Type,Typ,0
field,"stock.order_point,unit",0,Unit,Einheit,0
field,"stock.order_point,unit_digits",0,Unit Digits,Anzahl Stellen,0
field,"stock.order_point,warehouse_location",0,Warehouse Location,Warenlager,0
-model,"ir.action,name",wizard_create_purchase,Create Purchase,Auftrag erstellen,0
-model,"ir.action,name",act_purchase_request_form_draft,Draft Purchase Requests,Entwürfe (Bestellvorschläge),0
model,"ir.action,name",act_order_point_form,Order Points,Bestellpunkte,0
model,"ir.action,name",act_order_point_form2,Order Points,Bestellpunkte,0
-model,"ir.action,name",act_purchase_request_form,Purchase Requests,Bestellvorschläge,0
model,"ir.action,name",act_purchase_form,Purchases,Einkäufe,0
-model,"ir.cron,name",cron_shipment_iternal,Generate Internal Shipments,Erstellung von Internen Lieferposten,0
+model,"ir.action,name",act_purchase_request_form,Purchase Requests,Bestellvorschläge,0
+model,"ir.action,name",act_purchase_request_form_draft,Draft Purchase Requests,Entwürfe (Bestellvorschläge),0
+model,"ir.action,name",wizard_create_purchase,Create Purchase,Auftrag erstellen,0
model,"ir.cron,name",cron_generate_request,Generate Purchase Requests,Erstellung von Bestellvorschlägen,0
-model,"ir.ui.menu,name",menu_purchase_request_form_draft,Draft Purchase Requests,Entwürfe (Bestellvorschläge),0
-model,"ir.ui.menu,name",menu_order_point_form_new,New Order Point,Neuer Bestellpunkt,0
+model,"ir.cron,name",cron_shipment_iternal,Generate Internal Shipments,Erstellung von Internen Lieferposten,0
model,"ir.ui.menu,name",menu_order_point_form,Order Points,Bestellpunkte,0
+model,"ir.ui.menu,name",menu_order_point_form_new,New Order Point,Neuer Bestellpunkt,0
model,"ir.ui.menu,name",menu_purchase_request_form,Purchase Requests,Bestellvorschläge,0
+model,"ir.ui.menu,name",menu_purchase_request_form_draft,Draft Purchase Requests,Entwürfe (Bestellvorschläge),0
+model,"purchase.request,name",0,Purchase Request,Bestellvorschlag,0
model,"purchase.request.create_purchase.ask_party,name",0,Create Purchase Ask Party,Verkauf Nachfrage Partei,0
model,"purchase.request.create_purchase.ask_term,name",0,Create Purchase Ask Term,Verkauf Nachfrage Zahlungsbedingung,0
-model,"purchase.request,name",0,Purchase Request,Bestellvorschlag,0
model,"res.group,name",group_purchase_request,Purchase Request,Bestellvorschlag,0
-model,"res.user,name",user_generate_shipment_internal,Cron Intenal Shipment,Zeitplaner Interne Lieferposten,0
model,"res.user,name",user_generate_request,Cron Purchase Request,Zeitplaner Bestellvorschläge,0
+model,"res.user,name",user_generate_shipment_internal,Cron Intenal Shipment,Zeitplaner Interne Lieferposten,0
model,"stock.order_point,name",0,Order Point,Bestellpunkt,0
selection,"purchase.request,origin",0,Order Point,Bestellpunkt,0
selection,"purchase.request,state",0,Cancel,Annulliert,0
@@ -69,15 +69,15 @@ selection,"stock.order_point,type",0,Purchase,Bestellvorschlag,0
view,purchase.request,0,Product Info,Info Artikel,0
view,purchase.request,0,Purchase Request,Bestellvorschlag,0
view,purchase.request,0,Purchase Requests,Bestellvorschläge,0
-view,purchase.request,0,supply Info,Info Lieferant,0
view,purchase.request,0,Supply Info,Info,0
+view,purchase.request,0,supply Info,Info Lieferant,0
view,purchase.request.create_purchase.ask_party,0,,,0
view,purchase.request.create_purchase.ask_party,0,Create Purchase: Missing Supplier,Auftragerstellung: Fehlender Lieferant,0
view,purchase.request.create_purchase.ask_term,0,Create Purchase: Missing Payment Term,Auftragerstellung: Fehlende Zahlungsbedingung,0
view,stock.order_point,0,Locations,Lagerorte,0
view,stock.order_point,0,Order Point,Bestellpunkt,0
-view,stock.order_point,0,Order Points,Bestellpunkte,0
view,stock.order_point,0,Order Point Type,Typ Bestellpunkt,0
+view,stock.order_point,0,Order Points,Bestellpunkte,0
view,stock.order_point,0,Product Info,Artikelinfo,0
wizard_button,"purchase.request.create_purchase,ask_user_party,end",0,Cancel,Abbrechen,0
wizard_button,"purchase.request.create_purchase,ask_user_party,init",0,Continue,Fortfahren,0
diff --git a/fr_FR.csv b/fr_FR.csv
index ec6e3be..f6a736b 100644
--- a/fr_FR.csv
+++ b/fr_FR.csv
@@ -9,12 +9,6 @@ field,"product.product,order_points",0,Order Points,Règles d'approvisionnements
field,"purchase.request,company",0,Company,Société,0
field,"purchase.request,computed_quantity",0,Computed Quantity,Quantité calculée,0
field,"purchase.request,computed_uom",0,Computed UOM,UDM calculée,0
-field,"purchase.request.create_purchase.ask_party,company",0,Company,Société,0
-field,"purchase.request.create_purchase.ask_party,party",0,Supplier,Fournisseur,0
-field,"purchase.request.create_purchase.ask_party,product",0,Product,Produit,0
-field,"purchase.request.create_purchase.ask_term,company",0,Company,Société,0
-field,"purchase.request.create_purchase.ask_term,party",0,Supplier,Fournisseur,0
-field,"purchase.request.create_purchase.ask_term,payment_term",0,Payment Term,Condition de paiement,0
field,"purchase.request,origin",0,Origin,Origine,0
field,"purchase.request,party",0,Party,Tiers,0
field,"purchase.request,product",0,Product,Produit,0
@@ -28,6 +22,12 @@ field,"purchase.request,stock_level",0,Stock at Supply Date,Stock à la date de
field,"purchase.request,supply_date",0,Expected Supply Date,Date de livraison attendue,0
field,"purchase.request,uom",0,UOM,UDM,0
field,"purchase.request,warehouse",0,Warehouse,Entrepôt,0
+field,"purchase.request.create_purchase.ask_party,company",0,Company,Société,0
+field,"purchase.request.create_purchase.ask_party,party",0,Supplier,Fournisseur,0
+field,"purchase.request.create_purchase.ask_party,product",0,Product,Produit,0
+field,"purchase.request.create_purchase.ask_term,company",0,Company,Société,0
+field,"purchase.request.create_purchase.ask_term,party",0,Supplier,Fournisseur,0
+field,"purchase.request.create_purchase.ask_term,payment_term",0,Payment Term,Condition de paiement,0
field,"stock.order_point,company",0,Company,Société,0
field,"stock.order_point,location",0,Location,Emplacement,0
field,"stock.order_point,max_quantity",0,Maximal Quantity,Quantité maximale,0
@@ -40,24 +40,24 @@ field,"stock.order_point,type",0,Type,Type,0
field,"stock.order_point,unit",0,Unit,Unité,0
field,"stock.order_point,unit_digits",0,Unit Digits,Décimales de l'unité,0
field,"stock.order_point,warehouse_location",0,Warehouse Location,Entrepôt,0
-model,"ir.action,name",wizard_create_purchase,Create Purchase,Créer achat,0
-model,"ir.action,name",act_purchase_request_form_draft,Draft Purchase Requests,Demandes d'achat en brouillon,0
model,"ir.action,name",act_order_point_form,Order Points,Règles d'approvisionnement,0
model,"ir.action,name",act_order_point_form2,Order Points,Règles d'approvisionnements,0
-model,"ir.action,name",act_purchase_request_form,Purchase Requests,Demandes d'achat,0
model,"ir.action,name",act_purchase_form,Purchases,Achats,0
-model,"ir.cron,name",cron_shipment_iternal,Generate Internal Shipments,Générer les expéditions internes,0
+model,"ir.action,name",act_purchase_request_form,Purchase Requests,Demandes d'achat,0
+model,"ir.action,name",act_purchase_request_form_draft,Draft Purchase Requests,Demandes d'achat en brouillon,0
+model,"ir.action,name",wizard_create_purchase,Create Purchase,Créer achat,0
model,"ir.cron,name",cron_generate_request,Generate Purchase Requests,Générer les demandes d'achat,0
-model,"ir.ui.menu,name",menu_purchase_request_form_draft,Draft Purchase Requests,Demandes d'achat en brouillon,0
-model,"ir.ui.menu,name",menu_order_point_form_new,New Order Point,nouvelle règle d'approvisionnement,0
+model,"ir.cron,name",cron_shipment_iternal,Generate Internal Shipments,Générer les expéditions internes,0
model,"ir.ui.menu,name",menu_order_point_form,Order Points,Règles d'approvisionnement,0
+model,"ir.ui.menu,name",menu_order_point_form_new,New Order Point,nouvelle règle d'approvisionnement,0
model,"ir.ui.menu,name",menu_purchase_request_form,Purchase Requests,Demandes d'achat,0
+model,"ir.ui.menu,name",menu_purchase_request_form_draft,Draft Purchase Requests,Demandes d'achat en brouillon,0
+model,"purchase.request,name",0,Purchase Request,Demande d'achat,0
model,"purchase.request.create_purchase.ask_party,name",0,Create Purchase Ask Party,Créer l'achat - Demande de tiers,0
model,"purchase.request.create_purchase.ask_term,name",0,Create Purchase Ask Term,Créer l'achat - Demande de condition de paiment,0
-model,"purchase.request,name",0,Purchase Request,Demande d'achat,0
model,"res.group,name",group_purchase_request,Purchase Request,Demande d'achat,0
-model,"res.user,name",user_generate_shipment_internal,Cron Intenal Shipment,Cron expédition interne,0
model,"res.user,name",user_generate_request,Cron Purchase Request,Cron Demande d'achat,0
+model,"res.user,name",user_generate_shipment_internal,Cron Intenal Shipment,Cron expédition interne,0
model,"stock.order_point,name",0,Order Point,Règle d'approvisionnement,0
selection,"purchase.request,origin",0,Order Point,Règle d'approvisionnement,0
selection,"purchase.request,state",0,Cancel,Annulé,0
@@ -74,8 +74,8 @@ view,purchase.request.create_purchase.ask_party,0,Create Purchase: Missing Suppl
view,purchase.request.create_purchase.ask_term,0,Create Purchase: Missing Payment Term,Création de la commande: règle d'appro. absente,0
view,stock.order_point,0,Locations,Emplacements,0
view,stock.order_point,0,Order Point,Règle d'approvisionnement,0
-view,stock.order_point,0,Order Points,Règles d'approvisionnements,0
view,stock.order_point,0,Order Point Type,Type de Règle d'approvisionnement,0
+view,stock.order_point,0,Order Points,Règles d'approvisionnements,0
view,stock.order_point,0,Product Info,Info produit,0
wizard_button,"purchase.request.create_purchase,ask_user_party,end",0,Cancel,Annuler,0
wizard_button,"purchase.request.create_purchase,ask_user_party,init",0,Continue,Continuer,0
diff --git a/order_point.py b/order_point.py
index a6f531f..3d301cf 100644
--- a/order_point.py
+++ b/order_point.py
@@ -3,6 +3,7 @@
from trytond.model import ModelView, ModelSQL, fields
from trytond.wizard import Wizard
from trytond.pyson import If, Equal, Eval, Not, In, Get
+from trytond.transaction import Transaction
class OrderPoint(ModelSQL, ModelView):
@@ -79,10 +80,10 @@ class OrderPoint(ModelSQL, ModelView):
'concurrent_internal_op': 'You can not define two order points '\
'on the same product with opposite locations.',})
- def default_type(self, cursor, user, context=None):
+ def default_type(self):
return "purchase"
- def on_change_product(self, cursor, user, vals, context=None):
+ def on_change_product(self, vals):
product_obj = self.pool.get('product.product')
res = {
'unit': False,
@@ -90,45 +91,46 @@ class OrderPoint(ModelSQL, ModelView):
'unit_digits': 2,
}
if vals.get('product'):
- product = product_obj.browse(cursor, user, vals['product'],
- context=context)
+ product = product_obj.browse(vals['product'])
res['unit'] = product.default_uom.id
res['unit.rec_name'] = product.default_uom.rec_name
res['unit_digits'] = product.default_uom.digits
return res
- def get_unit(self, cursor, user, ids, name, context=None):
+ def get_unit(self, ids, name):
res = {}
- for order in self.browse(cursor, user, ids, context=context):
+ for order in self.browse(ids):
res[order.id] = order.product.default_uom.id
return res
- def get_unit_digits(self, cursor, user, ids, name, context=None):
+ def get_unit_digits(self, ids, name):
res = {}
- for order in self.browse(cursor, user, ids, context=context):
+ for order in self.browse(ids):
res[order.id] = order.product.default_uom.digits
return res
- def check_concurrent_internal(self, cursor, user, ids):
+ def check_concurrent_internal(self, ids):
"""
Ensure that there is no 'concurrent' internal order
points. I.E. no two order point with opposite location for the
same product and same company.
"""
- internal_ids = self.search(
- cursor, user, [('id', 'in', ids), ('type', '=', 'internal')])
+ internal_ids = self.search([
+ ('id', 'in', ids),
+ ('type', '=', 'internal'),
+ ])
if not internal_ids:
return True
query = ['OR']
- for op in self.browse(cursor, user, internal_ids):
+ for op in self.browse(internal_ids):
arg = ['AND',
('provisioning_location', '=', op.storage_location.id),
('storage_location', '=', op.provisioning_location.id),
('company', '=', op.company.id),
('type', '=', 'internal')]
query.append(arg)
- ids = self.search(cursor, user, query)
+ ids = self.search(query)
return not bool(ids)
def _type2field(self, type=None):
@@ -139,14 +141,14 @@ class OrderPoint(ModelSQL, ModelView):
else:
return t2f[type]
- def check_uniqueness(self, cursor, user, ids):
+ def check_uniqueness(self, ids):
"""
Ensure uniqueness of order points. I.E that there is no several
order point for the same location, the same product and the
same company.
"""
query = ['OR']
- for op in self.browse(cursor, user, ids):
+ for op in self.browse(ids):
field = self._type2field(op.type)
arg = ['AND',
('product', '=', op.product.id),
@@ -154,20 +156,20 @@ class OrderPoint(ModelSQL, ModelView):
('id', '!=', op.id),
('company', '=', op.company.id),]
query.append(arg)
- ids = self.search(cursor, user, query)
+ ids = self.search(query)
return not bool(ids)
- def get_rec_name(self, cursor, user, ids, name, context=None):
+ def get_rec_name(self, ids, name):
if not ids:
return {}
if isinstance(ids, (int, long)):
ids = [ids]
res = {}
- for op in self.browse(cursor, user, ids, context=context):
+ for op in self.browse(ids):
res[op.id] = "%s@%s" % (op.product.name, op.location.name)
return res
- def search_rec_name(self, cursor, user, name, clause, context=None):
+ def search_rec_name(self, name, clause):
res = []
names = clause[2].split('@', 1)
res.append(('product.template.name', clause[1], names[0]))
@@ -175,10 +177,10 @@ class OrderPoint(ModelSQL, ModelView):
res.append(('location', clause[1], names[1]))
return res
- def get_location(self, cursor, user, ids, name, context=None):
+ def get_location(self, ids, name):
location_obj = self.pool.get('stock.location')
res = {}
- for op in self.browse(cursor, user, ids, context=context):
+ for op in self.browse(ids):
if op.type == 'purchase':
res[op.id] = op.warehouse_location.id
elif op.type == 'internal':
@@ -187,20 +189,16 @@ class OrderPoint(ModelSQL, ModelView):
res[op.id] = False
return res
- def search_location(self, cursor, user, name, domain=None, context=None):
+ def search_location(self, name, domain=None):
ids = []
for type, field in self._type2field().iteritems():
args = [('type', '=', type)]
for _, operator, operand in domain:
args.append((field, operator, operand))
- ids.extend(self.search(cursor, user, args, context=context))
+ ids.extend(self.search(args))
return [('id', 'in', ids)]
- def default_company(self, cursor, user, context=None):
- if context is None:
- context = {}
- if context.get('company'):
- return context['company']
- return False
+ def default_company(self):
+ return Transaction().context.get('company') or False
OrderPoint()
diff --git a/purchase_request.py b/purchase_request.py
index 8dd0577..bc295fa 100644
--- a/purchase_request.py
+++ b/purchase_request.py
@@ -1,9 +1,11 @@
#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 __future__ import with_statement
+import datetime
from trytond.model import ModelView, ModelSQL, fields
from trytond.wizard import Wizard
from trytond.pyson import If, In, Eval, Get
-import datetime
+from trytond.transaction import Transaction
class PurchaseRequest(ModelSQL, ModelView):
@@ -50,15 +52,15 @@ class PurchaseRequest(ModelSQL, ModelView):
'create_request': 'Purchase requests are only created by the system.',
})
- def get_rec_name(self, cursor, user, ids, name, context=None):
+ def get_rec_name(self, ids, name):
if isinstance(ids, (int, long)):
ids = [ids]
res = {}
- for pr in self.browse(cursor, user, ids, context=context):
+ for pr in self.browse(ids):
res[pr.id] = "%s@%s" % (pr.product.name, pr.warehouse.name)
return res
- def search_rec_name(self, cursor, user, name, clause, context=None):
+ def search_rec_name(self, name, clause):
res = []
names = clause[2].split('@', 1)
res.append(('product.template.name', clause[1], names[0]))
@@ -66,17 +68,13 @@ class PurchaseRequest(ModelSQL, ModelView):
res.append(('warehouse', clause[1], names[1]))
return res
- def default_company(self, cursor, user, context=None):
- if context is None:
- context = {}
- if context.get('company'):
- return context['company']
- return False
+ def default_company(self):
+ return Transaction().context.get('company') or False
- def get_purchase(self, cursor, user, ids, name, context=None):
+ def get_purchase(self, ids, name):
res = {}
- requests = self.browse(cursor, user, ids, context=context)
+ requests = self.browse(ids)
for request in requests:
if request.purchase_line:
res[request.id] = request.purchase_line.purchase.id
@@ -84,9 +82,9 @@ class PurchaseRequest(ModelSQL, ModelView):
res[request.id] = False
return res
- def get_state(self, cursor, user, ids, name, context=None):
+ def get_state(self, ids, name):
res = {}.fromkeys(ids, 'draft')
- for request in self.browse(cursor, user, ids, context=context):
+ for request in self.browse(ids):
if request.purchase_line:
if request.purchase_line.purchase.state == 'cancel':
res[request.id] = 'cancel'
@@ -96,18 +94,17 @@ class PurchaseRequest(ModelSQL, ModelView):
res[request.id] = 'purchased'
return res
- def origin_get(self, cursor, user, context=None):
+ def origin_get(self):
model_obj = self.pool.get('ir.model')
res = []
- model_ids = model_obj.search(cursor, user, [
+ model_ids = model_obj.search([
('model', '=', 'stock.order_point'),
- ], context=context)
- for model in model_obj.browse(cursor, user, model_ids,
- context=context):
+ ])
+ for model in model_obj.browse(model_ids):
res.append([model.model, model.name])
return res
- def generate_requests(self, cursor, user, context=None):
+ def generate_requests(self):
"""
For each product compute the purchase request that must be
create today to meet product outputs.
@@ -117,72 +114,65 @@ class PurchaseRequest(ModelSQL, ModelView):
product_obj = self.pool.get('product.product')
location_obj = self.pool.get('stock.location')
user_obj = self.pool.get('res.user')
- company = user_obj.browse(cursor, user, user, context=context).company
+ company = user_obj.browse(Transaction().user).company
# fetch warehouses:
- warehouse_ids = location_obj.search(
- cursor, user, [('type','=','warehouse')], context=context)
+ warehouse_ids = location_obj.search([
+ ('type','=','warehouse'),
+ ])
# fetch order points
- order_point_ids = order_point_obj.search(
- cursor, user, [('type', '=', 'purchase')], context=context)
+ order_point_ids = order_point_obj.search([
+ ('type', '=', 'purchase'),
+ ])
# index them by product
product2ops = {}
- for order_point in order_point_obj.browse(
- cursor, user, order_point_ids, context=context):
+ for order_point in order_point_obj.browse(order_point_ids):
product2ops[
(order_point.warehouse_location.id, order_point.product.id)
] = order_point
# fetch stockable products
- product_ids = product_obj.search(
- cursor, user,
- [('type', '=', 'stockable'), ('purchasable', '=', True)],
- context=context)
+ product_ids = product_obj.search([
+ ('type', '=', 'stockable'),
+ ('purchasable', '=', True),
+ ])
#aggregate product by minimum supply date
date2products = {}
- for product in product_obj.browse(cursor, user, product_ids,
- context=context):
- min_date, max_date = self.get_supply_dates(
- cursor, user, product, context=context)
+ for product in product_obj.browse(product_ids):
+ min_date, max_date = self.get_supply_dates(product)
date2products.setdefault(min_date, []).append((product, max_date))
# compute requests
- local_context = context and context.copy() or {}
- local_context['forecast'] = True
new_requests = []
for min_date in date2products:
product_ids = [x[0].id for x in date2products[min_date]]
- local_context.update(
- {'stock_date_end': min_date or datetime.date.max,
- 'stock_skip_warehouse': True})
- pbl = product_obj.products_by_location(
- cursor, user, warehouse_ids, product_ids, with_childs=True,
- skip_zero=False, context=local_context)
+ with Transaction().set_context(forecast=True,
+ stock_date_end=min_date or datetime.date.max,
+ stock_skip_warehouse=True):
+ pbl = product_obj.products_by_location(warehouse_ids,
+ product_ids, with_childs=True, skip_zero=False)
for product, max_date in date2products[min_date]:
for warehouse_id in warehouse_ids:
qty = pbl.pop((warehouse_id, product.id))
order_point = product2ops.get((warehouse_id, product.id))
# Search for shortage between min-max
shortage_date, product_quantity = self.get_shortage(
- cursor, user, warehouse_id, product.id, min_date,
- max_date, min_date_qty=qty, order_point=order_point,
- context=context)
+ warehouse_id, product.id, min_date, max_date,
+ min_date_qty=qty, order_point=order_point)
if shortage_date == None or product_quantity == None:
continue
# generate request values
- request_val = self.compute_request(
- cursor, user, product, warehouse_id, shortage_date,
- product_quantity, company, order_point, context=context)
+ request_val = self.compute_request(product, warehouse_id,
+ shortage_date, product_quantity, company, order_point)
new_requests.append(request_val)
- new_requests = self.compare_requests(
- cursor, user, new_requests, context=context)
+ new_requests = self.compare_requests(new_requests)
- self.create_requests(cursor, user, new_requests, context=context)
+ self.create_requests(new_requests)
return {}
- def create_requests(self, cursor, user, new_requests, context=None):
+ def create_requests(self, new_requests):
request_obj = self.pool.get('purchase.request')
for new_req in new_requests:
@@ -195,9 +185,9 @@ class PurchaseRequest(ModelSQL, ModelView):
'computed_uom': new_req['computed_uom'].id,
'company': new_req['company'].id
})
- request_obj.create(cursor, user, new_req, context=context)
+ request_obj.create(new_req)
- def compare_requests(self, cursor, user, new_requests, context=None):
+ def compare_requests(self, new_requests):
"""
Compare new_requests with already existing request to avoid
to re-create existing requests.
@@ -206,20 +196,18 @@ class PurchaseRequest(ModelSQL, ModelView):
uom_obj = self.pool.get('product.uom')
request_obj = self.pool.get('purchase.request')
product_supplier_obj = self.pool.get('purchase.product_supplier')
- req_ids = request_obj.search(cursor, user, [
+ req_ids = request_obj.search([
('purchase_line', '=', False),
('origin', 'like', 'stock.order_point,%'),
- ], context=context)
- request_obj.delete(cursor, user, req_ids, context=context)
-
- req_ids = request_obj.search(
- cursor, user,
- [('purchase_line.moves', '=', False),
- ('purchase_line.purchase.state', '!=', 'cancel'),
- ('origin', 'like', 'stock.order_point,%')],
- context=context
- )
- requests = request_obj.browse(cursor, user, req_ids, context=context)
+ ])
+ request_obj.delete(req_ids)
+
+ req_ids = request_obj.search([
+ ('purchase_line.moves', '=', False),
+ ('purchase_line.purchase.state', '!=', 'cancel'),
+ ('origin', 'like', 'stock.order_point,%'),
+ ])
+ requests = request_obj.browse(req_ids)
# Fetch data from existing requests
existing_req = {}
for request in requests:
@@ -229,9 +217,8 @@ class PurchaseRequest(ModelSQL, ModelView):
request.warehouse.id != pline.purchase.warehouse.id:
continue
# Take smallest amount between request and purchase line
- req_qty = uom_obj.compute_qty(
- cursor, user, request.uom, request.quantity,
- pline.unit, context=context)
+ req_qty = uom_obj.compute_qty(request.uom, request.quantity,
+ pline.unit)
if req_qty < pline.quantity:
quantity = request.quantity
uom = request.uom
@@ -255,28 +242,23 @@ class PurchaseRequest(ModelSQL, ModelView):
for old_req in existing_req.get((new_req['product'].id,
new_req['warehouse']), []):
if old_req['supply_date'] <= new_req['supply_date']:
- quantity = uom_obj.compute_qty(
- cursor, user, old_req['uom'], old_req['quantity'],
- new_req['uom'], context=context)
+ quantity = uom_obj.compute_qty(old_req['uom'],
+ old_req['quantity'], new_req['uom'])
new_req['quantity'] = max(0.0, new_req['quantity'] - quantity)
new_req['computed_quantity'] = new_req['quantity']
- old_req['quantity'] = uom_obj.compute_qty(
- cursor, user, new_req['uom'],
+ old_req['quantity'] = uom_obj.compute_qty(new_req['uom'],
max(0.0, quantity - new_req['quantity']),
- old_req['uom'], context=context)
+ old_req['uom'])
else:
break
return new_requests
- def get_supply_dates(self, cursor, user, product, context=None):
+ def get_supply_dates(self, product):
"""
Return the minimal interval of earliest supply dates for a product.
- :param cursor: the database cursor
- :param user: the user id
:param product: a BrowseRecord of the Product
- :param context: the context
:return: a tuple with the two dates
"""
product_supplier_obj = self.pool.get('purchase.product_supplier')
@@ -284,12 +266,11 @@ class PurchaseRequest(ModelSQL, ModelView):
min_date = None
max_date = None
- today = date_obj.today(cursor, user, context=context)
+ today = date_obj.today()
for product_supplier in product.product_suppliers:
supply_date, next_supply_date = product_supplier_obj.\
- compute_supply_date(cursor, user, product_supplier,
- date=today, context=context)
+ compute_supply_date(product_supplier, date=today)
if (not min_date) or supply_date < min_date:
min_date = supply_date
if (not max_date):
@@ -305,9 +286,8 @@ class PurchaseRequest(ModelSQL, ModelView):
return (min_date, max_date)
- def compute_request(self, cursor, user, product, location_id, shortage_date,
- product_quantity, company, order_point=None,
- context=None):
+ def compute_request(self, product, location_id, shortage_date,
+ product_quantity, company, order_point=None):
"""
Return the value of the purchase request which will answer to
the needed quantity at the given date. I.e: the latest
@@ -320,11 +300,11 @@ class PurchaseRequest(ModelSQL, ModelView):
supplier = None
timedelta = datetime.timedelta.max
- today = date_obj.today(cursor, user, context=context)
+ today = date_obj.today()
max_quantity = order_point and order_point.max_quantity or 0.0
for product_supplier in product.product_suppliers:
- supply_date = product_supplier_obj.compute_supply_date(cursor, user,
- product_supplier, date=today, context=context)[0]
+ supply_date = product_supplier_obj.compute_supply_date(
+ product_supplier, date=today)[0]
sup_timedelta = shortage_date - supply_date
if not supplier:
supplier = product_supplier.party
@@ -338,15 +318,14 @@ class PurchaseRequest(ModelSQL, ModelView):
timedelta = sup_timedelta
if supplier:
- purchase_date = product_supplier_obj.compute_purchase_date(cursor,
- user, product_supplier, shortage_date, context=context)
+ purchase_date = product_supplier_obj.compute_purchase_date(
+ product_supplier, shortage_date)
else:
purchase_date = today
- quantity = uom_obj.compute_qty(cursor, user, product.default_uom,
+ quantity = uom_obj.compute_qty(product.default_uom,
max_quantity - product_quantity,
- product.purchase_uom or product.default_uom,
- context=context)
+ product.purchase_uom or product.default_uom)
if order_point:
origin = 'stock.order_point,%s'%order_point.id
@@ -366,8 +345,8 @@ class PurchaseRequest(ModelSQL, ModelView):
'origin': origin,
}
- def get_shortage(self, cursor, user, location_id, product_id, min_date,
- max_date, min_date_qty, order_point=None, context=None):
+ def get_shortage(self, location_id, product_id, min_date,
+ max_date, min_date_qty, order_point=None):
"""
Return between min_date and max_date the first date where the
stock quantity is less than the minimal quantity and
@@ -376,15 +355,12 @@ class PurchaseRequest(ModelSQL, ModelView):
the minimal quantity
The minimal quantity comes from the order_point or is zero
- :param cursor: the database cursor
- :param user: the user id
:param location_id: the stock location id
:param produc_id: the product id
:param min_date: the minimal date
:param max_date: the maximal date
:param min_date_qty: the stock quantity at the minimal date
:param order_point: a BrowseRecord of the Order Point
- :param context: the context
:return: a tuple with the date and the quantity
"""
product_obj = self.pool.get('product.product')
@@ -403,13 +379,10 @@ class PurchaseRequest(ModelSQL, ModelView):
if (not res_qty) or (current_qty < res_qty):
res_qty = current_qty
- local_context = context and context.copy() or {}
- local_context['stock_date_start'] = current_date
- local_context['stock_date_end'] = current_date
- res = product_obj.products_by_location(
- cursor, user, [location_id],
- [product_id], with_childs=True, skip_zero=False,
- context=context)
+ with Transaction().set_context(stock_date_start=current_date,
+ stock_date_end=current_date):
+ res = product_obj.products_by_location([location_id],
+ [product_id], with_childs=True, skip_zero=False)
for qty in res.itervalues():
current_qty += qty
if current_date == datetime.date.max:
@@ -418,12 +391,11 @@ class PurchaseRequest(ModelSQL, ModelView):
return (res_date, res_qty)
- def create(self, cursor, user, vals, context=None):
+ def create(self, vals):
for field_name in ('product', 'quantity', 'uom', 'warehouse', 'company'):
if not vals.get(field_name):
- self.raise_user_error(cursor, 'create_request', context=context)
- return super(PurchaseRequest, self).create(
- cursor, user, vals, context=context)
+ self.raise_user_error('create_request')
+ return super(PurchaseRequest, self).create(vals)
PurchaseRequest()
@@ -496,10 +468,10 @@ class CreatePurchase(Wizard):
'please_update': 'This price is necessary for creating purchase.'
})
- def _set_default_party(self, cursor, user, data, context=None):
+ def _set_default_party(self, data):
request_obj = self.pool.get('purchase.request')
- requests = request_obj.browse(cursor, user, data['ids'], context=context)
+ requests = request_obj.browse(data['ids'])
for request in requests:
if request.purchase_line:
continue
@@ -508,10 +480,10 @@ class CreatePurchase(Wizard):
return {'product': request.product.id,'company': request.company.id}
- def _set_default_term(self, cursor, user, data, context=None):
+ def _set_default_term(self, data):
request_obj = self.pool.get('purchase.request')
- requests = request_obj.browse(cursor, user, data['ids'], context=context)
+ requests = request_obj.browse(data['ids'])
for request in requests:
if (not request.party) or request.purchase_line:
continue
@@ -520,7 +492,7 @@ class CreatePurchase(Wizard):
return {'party': request.party.id,'company': request.company.id}
- def _create_purchase(self, cursor, user, data, context=None):
+ def _create_purchase(self, data):
request_obj = self.pool.get('purchase.request')
party_obj = self.pool.get('party.party')
purchase_obj = self.pool.get('purchase.purchase')
@@ -528,39 +500,33 @@ class CreatePurchase(Wizard):
line_obj = self.pool.get('purchase.line')
date_obj = self.pool.get('ir.date')
- if context is None:
- context = {}
-
form = data['form']
if form.get('product') and form.get('party') and \
form.get('company'):
- req_ids = request_obj.search(
- cursor, user, [('id', 'in', data['ids']), ('party', '=', False)],
- context=context)
+ req_ids = request_obj.search([
+ ('id', 'in', data['ids']),
+ ('party', '=', False),
+ ])
if req_ids:
- request_obj.write(
- cursor, user, req_ids, {'party': form['party']},
- context=context)
+ request_obj.write(req_ids, {'party': form['party']})
elif form.get('payment_term') and form.get('party') and \
form.get('company'):
- local_context = context and context.copy() or {}
- local_context['company'] = form['company']
- party_obj.write(
- cursor, user, form['party'],
- {'supplier_payment_term': form['payment_term']}, context=local_context)
-
-
- req_ids = request_obj.search(
- cursor, user, [('id', 'in', data['ids']),
- ('purchase_line', '=', False),
- ('party', '=', False)],
- context=context)
+ with Transaction().set_context(company=form['company']):
+ party_obj.write(form['party'],{
+ 'supplier_payment_term': form['payment_term']
+ })
+
+ req_ids = request_obj.search([
+ ('id', 'in', data['ids']),
+ ('purchase_line', '=', False),
+ ('party', '=', False),
+ ])
if req_ids:
return 'ask_user_party'
- today = date_obj.today(cursor, user, context=context)
- requests = request_obj.browse(cursor, user, data['ids'], context=context)
+ today = date_obj.today()
+ requests = request_obj.browse(data['ids'])
purchases = {}
# collect data
for request in requests:
@@ -583,8 +549,8 @@ class CreatePurchase(Wizard):
'payment_term': request.party.supplier_payment_term.id,
'warehouse': request.warehouse.id,
'currency': request.company.currency.id,
- 'invoice_address': party_obj.address_get(
- cursor, user, request.party.id, type='invoice', context=context),
+ 'invoice_address': party_obj.address_get(request.party.id,
+ type='invoice'),
'lines': [],
}
@@ -592,8 +558,7 @@ class CreatePurchase(Wizard):
else:
purchase = purchases[key]
- line = self.compute_purchase_line(
- cursor, user, request, context=context)
+ line = self.compute_purchase_line(request)
purchase['lines'].append(line)
if request.purchase_date:
if purchase.get('purchase_date'):
@@ -603,35 +568,30 @@ class CreatePurchase(Wizard):
purchase['purchase_date'] = request.purchase_date
# Create all
- ctx = context.copy()
- ctx['user'] = user
for purchase in purchases.itervalues():
lines = purchase.pop('lines')
- purchase_id = purchase_obj.create(cursor, 0, purchase, context=ctx)
+ with Transaction().set_user(0, with_context=True):
+ purchase_id = purchase_obj.create(purchase)
for line in lines:
request_id = line.pop('request')
line['purchase'] = purchase_id
- line_id = line_obj.create(cursor, 0, line, context=ctx)
- request_obj.write(
- cursor, user, request_id, {'purchase_line': line_id},
- context=context)
+ with Transaction().set_user(0):
+ line_id = line_obj.create(line)
+ request_obj.write(request_id, {'purchase_line': line_id})
return 'end'
- def _get_tax_rule_pattern(self, cursor, user, request, context=None):
+ def _get_tax_rule_pattern(self, request):
'''
Get tax rule pattern
- :param cursor: the database cursor
- :param user: the user id
:param request: the BrowseRecord of the purchase request
- :param context: the context
:return: a dictionary to use as pattern for tax rule
'''
res = {}
return res
- def compute_purchase_line(self, cursor, user, request, context=None):
+ def compute_purchase_line(self, request):
party_obj = self.pool.get('party.party')
product_obj = self.pool.get('product.product')
tax_rule_obj = self.pool.get('account.tax.rule')
@@ -643,32 +603,25 @@ class CreatePurchase(Wizard):
'request': request.id,
'description': request.product.name,
}
- local_context = context.copy()
- local_context['uom'] = request.uom.id
- local_context['supplier'] = request.party.id
- local_context['currency'] = request.company.currency.id
# XXX purchase with several lines of the same product
- product_price = product_obj.get_purchase_price(
- cursor, user, [request.product.id], request.quantity,
- context=local_context)[request.product.id]
+ with Transaction().set_context(uom=request.uom.id,
+ supplier=request.party.id,
+ currency=request.company.currency.id):
+ product_price = product_obj.get_purchase_price(
+ [request.product.id], request.quantity)[request.product.id]
if not product_price:
- self.raise_user_error(
- cursor, 'missing_price',
- (request.product.name, request.product.id),
- 'please_update',
- context=context)
+ self.raise_user_error('missing_price', (request.product.name,
+ request.product.id), 'please_update')
line['unit_price'] = product_price
taxes = []
for tax in request.product.supplier_taxes_used:
if request.party and request.party.supplier_tax_rule:
- pattern = self._get_tax_rule_pattern(cursor, user, request,
- context=context)
- tax_id = tax_rule_obj.apply(cursor, user,
- request.party.supplier_tax_rule, tax, pattern,
- context=context)
+ pattern = self._get_tax_rule_pattern(request)
+ tax_id = tax_rule_obj.apply(request.party.supplier_tax_rule,
+ tax, pattern)
if tax_id:
taxes.append(tax_id)
continue
diff --git a/purchase_request.xml b/purchase_request.xml
index 7b967cb..4a32103 100644
--- a/purchase_request.xml
+++ b/purchase_request.xml
@@ -207,6 +207,9 @@ this repository contains the full copyright notices and license terms. -->
<record model="res.user" id="res.user_admin">
<field name="groups" eval="[('add', ref('group_purchase_request'))]"/>
</record>
+ <record model="res.user" id="res.user_trigger">
+ <field name="groups" eval="[('add', ref('group_purchase_request'))]"/>
+ </record>
<record model="res.user" id="user_generate_request">
<field name="login">user_cron_purchase_request</field>
diff --git a/shipment.py b/shipment.py
index 423b210..6e73bc3 100644
--- a/shipment.py
+++ b/shipment.py
@@ -1,12 +1,15 @@
#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 __future__ import with_statement
from trytond.model import ModelView, ModelSQL
+from trytond.transaction import Transaction
class ShipmentInternal(ModelSQL, ModelView):
_name = 'stock.shipment.internal'
- def init(self, cursor, module_name):
+ def init(self, module_name):
+ cursor = Transaction().cursor
# Migration from 1.2: packing renamed into shipment
cursor.execute("UPDATE ir_model_data "\
"SET fs_id = REPLACE(fs_id, 'packing', 'shipment') "\
@@ -16,9 +19,9 @@ class ShipmentInternal(ModelSQL, ModelView):
"SET model = REPLACE(model, 'packing', 'shipment') "\
"WHERE model like '%%packing%%' AND module = %s",
(module_name,))
- super(ShipmentInternal, self).init(cursor, module_name)
+ super(ShipmentInternal, self).init(module_name)
- def generate_internal_shipment(self, cursor, user, context=None):
+ def generate_internal_shipment(self):
"""
Generate internal shipments to meet order points defined on
non-warehouse location.
@@ -28,24 +31,22 @@ class ShipmentInternal(ModelSQL, ModelView):
product_obj = self.pool.get('product.product')
date_obj = self.pool.get('ir.date')
user_obj = self.pool.get('res.user')
- user_record = user_obj.browse(cursor, user, user, context=context)
- today = date_obj.today(cursor, user, context=context)
+ user_record = user_obj.browse(Transaction().user)
+ today = date_obj.today()
# fetch quantities on order points
- op_ids = order_point_obj.search(
- cursor, user, [('type', '=', 'internal')], context=context)
- order_points = order_point_obj.browse(
- cursor, user, op_ids, context=context)
+ op_ids = order_point_obj.search([
+ ('type', '=', 'internal'),
+ ])
+ order_points = order_point_obj.browse(op_ids)
id2product = {}
location_ids = []
for op in order_points:
id2product[op.product.id] = op.product
location_ids.append(op.storage_location.id)
- local_ctx = context or {}
- local_ctx['stock_date_end'] = today
- pbl = product_obj.products_by_location(
- cursor, user, location_ids, list(id2product.iterkeys()), with_childs=True,
- context=local_ctx)
+ with Transaction().set_context(stock_date_end=today):
+ pbl = product_obj.products_by_location(location_ids,
+ list(id2product.iterkeys()), with_childs=True)
# Create a list of move to create
moves = {}
@@ -58,22 +59,21 @@ class ShipmentInternal(ModelSQL, ModelView):
moves[key] = op.max_quantity - qty
# Compare with existing draft shipments
- shipment_ids = self.search(
- cursor, user,
- [('state', '=', 'draft'),
- ['OR', ('planned_date', '<=', today),
- ('planned_date', '=', False)]],
- context=context)
- for shipment in self.browse(cursor, user, shipment_ids, context=context):
+ shipment_ids = self.search([
+ ('state', '=', 'draft'), ['OR',
+ ('planned_date', '<=', today),
+ ('planned_date', '=', False),
+ ],
+ ])
+ for shipment in self.browse(shipment_ids):
for move in shipment.moves:
key = (shipment.to_location.id,
shipment.from_location.id,
move.product.id)
if key not in moves:
continue
- quantity = uom_obj.compute_qty(
- cursor, user, move.uom, move.quantity,
- id2product[move.product.id].default_uom, context=context)
+ quantity = uom_obj.compute_qty( move.uom, move.quantity,
+ id2product[move.product.id].default_uom)
moves[key] = max(0, moves[key] - quantity)
# Group moves by {from,to}_location
@@ -102,6 +102,6 @@ class ShipmentInternal(ModelSQL, ModelView):
'uom': id2product[product].default_uom.id,
'company': user_record.company.id,}
))
- self.create(cursor, user, values, context=context)
+ self.create(values)
ShipmentInternal()
diff --git a/tests/test_stock_supply.py b/tests/test_stock_supply.py
index 3c3e7cc..271fc18 100644
--- a/tests/test_stock_supply.py
+++ b/tests/test_stock_supply.py
@@ -25,7 +25,7 @@ class StockSupplyTestCase(unittest.TestCase):
'''
Test views.
'''
- self.assertRaises(Exception, test_view('stock_supply'))
+ test_view('stock_supply')
def suite():
suite = trytond.tests.test_tryton.suite()
diff --git a/trytond_stock_supply.egg-info/PKG-INFO b/trytond_stock_supply.egg-info/PKG-INFO
index 714ba26..5cec89a 100644
--- a/trytond_stock_supply.egg-info/PKG-INFO
+++ b/trytond_stock_supply.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
Metadata-Version: 1.0
Name: trytond-stock-supply
-Version: 1.6.0
+Version: 1.8.0
Summary: Supply Management Module with:
- Order point
- Purchase Request
@@ -13,7 +13,7 @@ Home-page: http://www.tryton.org/
Author: B2CK
Author-email: info at b2ck.com
License: GPL-3
-Download-URL: http://downloads.tryton.org/1.6/
+Download-URL: http://downloads.tryton.org/1.8/
Description: UNKNOWN
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
diff --git a/trytond_stock_supply.egg-info/requires.txt b/trytond_stock_supply.egg-info/requires.txt
index 36bd0a1..6322d11 100644
--- a/trytond_stock_supply.egg-info/requires.txt
+++ b/trytond_stock_supply.egg-info/requires.txt
@@ -1,6 +1,6 @@
-trytond_product >= 1.6, < 1.7
-trytond_stock >= 1.6, < 1.7
-trytond_purchase >= 1.6, < 1.7
-trytond_party >= 1.6, < 1.7
-trytond_account >= 1.6, < 1.7
-trytond >= 1.6, < 1.7
\ No newline at end of file
+trytond_product >= 1.8, < 1.9
+trytond_stock >= 1.8, < 1.9
+trytond_purchase >= 1.8, < 1.9
+trytond_party >= 1.8, < 1.9
+trytond_account >= 1.8, < 1.9
+trytond >= 1.8, < 1.9
\ No newline at end of file
commit 1200317036a4f2c8251d799c10567b658f16e37d
Author: Daniel Baumann <daniel at debian.org>
Date: Tue Nov 2 14:27:34 2010 +0100
Switching to source format 3.0 (quilt).
diff --git a/debian/source/format b/debian/source/format
index d3827e7..163aaf8 100644
--- a/debian/source/format
+++ b/debian/source/format
@@ -1 +1 @@
-1.0
+3.0 (quilt)
commit f389cab6954105edc76dd7ca5a61c928d46801e7
Author: Daniel Baumann <daniel at debian.org>
Date: Thu Sep 30 01:05:33 2010 +0200
Updating to standards version 3.9.1.
diff --git a/debian/control b/debian/control
index 85c04c0..b0dcadc 100644
--- a/debian/control
+++ b/debian/control
@@ -7,7 +7,7 @@ Uploaders:
Mathias Behrle <mathiasb at mbsolutions.selfip.biz>
Dm-Upload-Allowed: yes
Build-Depends: debhelper (>= 8), python, python-setuptools, python-support
-Standards-Version: 3.9.0
+Standards-Version: 3.9.1
Homepage: http://www.tryton.org/
Vcs-Browser: http://git.debian-maintainers.org/?p=tryton/tryton-modules-stock-supply.git
Vcs-Git: git://git.debian-maintainers.org/git/tryton/tryton-modules-stock-supply.git
commit 549070d09a8b535f3b3fae77b5f85f25e7aed571
Author: Daniel Baumann <daniel at debian.org>
Date: Thu Sep 30 01:04:05 2010 +0200
Updating to debhelper version 8.
diff --git a/debian/compat b/debian/compat
index 7f8f011..45a4fb7 100644
--- a/debian/compat
+++ b/debian/compat
@@ -1 +1 @@
-7
+8
diff --git a/debian/control b/debian/control
index 6dd1bbd..85c04c0 100644
--- a/debian/control
+++ b/debian/control
@@ -6,7 +6,7 @@ Uploaders:
Daniel Baumann <daniel at debian.org>,
Mathias Behrle <mathiasb at mbsolutions.selfip.biz>
Dm-Upload-Allowed: yes
-Build-Depends: debhelper (>= 7), python, python-setuptools, python-support
+Build-Depends: debhelper (>= 8), python, python-setuptools, python-support
Standards-Version: 3.9.0
Homepage: http://www.tryton.org/
Vcs-Browser: http://git.debian-maintainers.org/?p=tryton/tryton-modules-stock-supply.git
commit 3902dbaca44ec0cac4178ae7dedd6d9b5b8bc4cb
Author: Daniel Baumann <daniel at debian.org>
Date: Mon Jun 28 20:35:31 2010 +0200
Updating standards version to 3.9.0.
diff --git a/debian/control b/debian/control
index bfabae8..6dd1bbd 100644
--- a/debian/control
+++ b/debian/control
@@ -7,7 +7,7 @@ Uploaders:
Mathias Behrle <mathiasb at mbsolutions.selfip.biz>
Dm-Upload-Allowed: yes
Build-Depends: debhelper (>= 7), python, python-setuptools, python-support
-Standards-Version: 3.8.4
+Standards-Version: 3.9.0
Homepage: http://www.tryton.org/
Vcs-Browser: http://git.debian-maintainers.org/?p=tryton/tryton-modules-stock-supply.git
Vcs-Git: git://git.debian-maintainers.org/git/tryton/tryton-modules-stock-supply.git
commit f13ab8366a7f30781664beb53da01f90752545da
Author: Mathias Behrle <mathiasb at mbsolutions.selfip.biz>
Date: Thu May 13 21:24:55 2010 +0200
Releasing debian version 1.6.0-1.
diff --git a/debian/changelog b/debian/changelog
index e38ad17..2746934 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,15 @@
+tryton-modules-stock-supply (1.6.0-1) unstable; urgency=low
+
+ [ Daniel Baumann ]
+ * Adding Dm-Upload-Allowed in control in preparation for Mathias.
+
+ [ Mathias Behrle ]
+ * Merging upstream version 1.6.0.
+ * Updating copyright.
+ * Updating depends.
+
+ -- Mathias Behrle <mathiasb at mbsolutions.selfip.biz> Thu, 13 May 2010 21:24:37 +0200
+
tryton-modules-stock-supply (1.4.1-2) unstable; urgency=low
* Updating year in copyright file.
commit 6a904bbd7f3e16bf4bd23bf067f4688d82102ea6
Author: Mathias Behrle <mathiasb at mbsolutions.selfip.biz>
Date: Thu May 13 21:24:25 2010 +0200
Updating depends.
diff --git a/debian/control b/debian/control
index e8aedb6..bfabae8 100644
--- a/debian/control
+++ b/debian/control
@@ -15,10 +15,10 @@ Vcs-Git: git://git.debian-maintainers.org/git/tryton/tryton-modules-stock-supply
Package: tryton-modules-stock-supply
Architecture: all
Depends:
- ${misc:Depends}, ${python:Depends}, tryton-server (>= 1.4),
- tryton-modules-party (>= 1.4), tryton-modules-product (>= 1.4),
- tryton-modules-purchase (>= 1.4), tryton-modules-stock (>= 1.4),
- python-pkg-resources
+ ${misc:Depends}, ${python:Depends}, tryton-server (>= 1.6),
+ tryton-modules-account (>= 1.6), tryton-modules-party (>= 1.6),
+ tryton-modules-product (>= 1.6), tryton-modules-purchase (>= 1.6),
+ tryton-modules-stock (>= 1.6), python-pkg-resources
XB-Python-Version: ${python:Versions}
Description: Tryton Application Platform (Stock Supply Module)
Tryton is a high-level general purpose application platform written in Python
commit bdc452a8c4d1f1a7a122d4a25b0dcec0e03d578d
Author: Mathias Behrle <mathiasb at mbsolutions.selfip.biz>
Date: Thu May 13 21:24:22 2010 +0200
Updating copyright.
diff --git a/debian/copyright b/debian/copyright
index fc543a0..a775c9c 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -5,9 +5,9 @@ Maintainer-Homepage: http://tryton.debian-maintainers.org/
Files: *
Copyright:
- (C) 2008-2009 Cedric Krier
- (C) 2008-2009 Bertrand Chenal
- (C) 2008-2009 B2CK SPRL
+ (C) 2008-2010 Cedric Krier
+ (C) 2008-2010 Bertrand Chenal
+ (C) 2008-2010 B2CK SPRL
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
commit d2c4f908257dbaf7fd10e8d68b4415a85289b529
Author: Mathias Behrle <mathiasb at mbsolutions.selfip.biz>
Date: Thu May 13 20:41:48 2010 +0200
Merging upstream version 1.6.0.
diff --git a/CHANGELOG b/CHANGELOG
index 426ce1e..e36b38a 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,5 +1,5 @@
-Version 1.4.1 - 2009-11-24
-* Some bug fixes (see mercurial logs for details)
+Version 1.6.0 - 2010-05-13
+* Bug fixes (see mercurial logs for details)
Version 1.4.0 - 2009-10-19
* Bug fixes (see mercurial logs for details)
diff --git a/COPYRIGHT b/COPYRIGHT
index 4451df9..cca7db9 100644
--- a/COPYRIGHT
+++ b/COPYRIGHT
@@ -1,6 +1,6 @@
-Copyright (C) 2008-2009 Cédric Krier.
-Copyright (C) 2008-2009 Bertrand Chenal.
-Copyright (C) 2008-2009 B2CK SPRL.
+Copyright (C) 2008-2010 Cédric Krier.
+Copyright (C) 2008-2010 Bertrand Chenal.
+Copyright (C) 2008-2010 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 8b45b8a..dcb2afa 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -8,4 +8,3 @@ include *.xml
include *.odt
include *.csv
include doc/*
-include tests/*
diff --git a/PKG-INFO b/PKG-INFO
index 7b6216f..4ef91c6 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
Metadata-Version: 1.0
Name: trytond_stock_supply
-Version: 1.4.1
+Version: 1.6.0
Summary: Supply Management Module with:
- Order point
- Purchase Request
@@ -13,7 +13,7 @@ Home-page: http://www.tryton.org/
Author: B2CK
Author-email: info at b2ck.com
License: GPL-3
-Download-URL: http://downloads.tryton.org/1.4/
+Download-URL: http://downloads.tryton.org/1.6/
Description: UNKNOWN
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
diff --git a/__tryton__.py b/__tryton__.py
index 53667b2..c4d1e25 100644
--- a/__tryton__.py
+++ b/__tryton__.py
@@ -6,7 +6,7 @@
'name_es_CO': 'Gestión de pedidos de inventario',
'name_es_ES': 'Gestión de suministro de existencias',
'name_fr_FR': 'Gestion des approvisionnements de stock',
- 'version': '1.4.1',
+ 'version': '1.6.0',
'author': 'B2CK',
'email': 'info at b2ck.com',
'website': 'http://www.tryton.org/',
diff --git a/de_DE.csv b/de_DE.csv
index 7f19afb..be73142 100644
--- a/de_DE.csv
+++ b/de_DE.csv
@@ -41,22 +41,26 @@ field,"stock.order_point,unit",0,Unit,Einheit,0
field,"stock.order_point,unit_digits",0,Unit Digits,Anzahl Stellen,0
field,"stock.order_point,warehouse_location",0,Warehouse Location,Warenlager,0
model,"ir.action,name",wizard_create_purchase,Create Purchase,Auftrag erstellen,0
+model,"ir.action,name",act_purchase_request_form_draft,Draft Purchase Requests,Entwürfe (Bestellvorschläge),0
model,"ir.action,name",act_order_point_form,Order Points,Bestellpunkte,0
+model,"ir.action,name",act_order_point_form2,Order Points,Bestellpunkte,0
model,"ir.action,name",act_purchase_request_form,Purchase Requests,Bestellvorschläge,0
model,"ir.action,name",act_purchase_form,Purchases,Einkäufe,0
model,"ir.cron,name",cron_shipment_iternal,Generate Internal Shipments,Erstellung von Internen Lieferposten,0
model,"ir.cron,name",cron_generate_request,Generate Purchase Requests,Erstellung von Bestellvorschlägen,0
+model,"ir.ui.menu,name",menu_purchase_request_form_draft,Draft Purchase Requests,Entwürfe (Bestellvorschläge),0
+model,"ir.ui.menu,name",menu_order_point_form_new,New Order Point,Neuer Bestellpunkt,0
model,"ir.ui.menu,name",menu_order_point_form,Order Points,Bestellpunkte,0
model,"ir.ui.menu,name",menu_purchase_request_form,Purchase Requests,Bestellvorschläge,0
model,"purchase.request.create_purchase.ask_party,name",0,Create Purchase Ask Party,Verkauf Nachfrage Partei,0
model,"purchase.request.create_purchase.ask_term,name",0,Create Purchase Ask Term,Verkauf Nachfrage Zahlungsbedingung,0
model,"purchase.request,name",0,Purchase Request,Bestellvorschlag,0
model,"res.group,name",group_purchase_request,Purchase Request,Bestellvorschlag,0
-model,"res.user,name",user_generate_shipment_internal,Cron Intenal Shipment,Cron Interne Lieferposten,0
-model,"res.user,name",user_generate_request,Cron Purchase Request,Cron Bestellvorschlag,0
+model,"res.user,name",user_generate_shipment_internal,Cron Intenal Shipment,Zeitplaner Interne Lieferposten,0
+model,"res.user,name",user_generate_request,Cron Purchase Request,Zeitplaner Bestellvorschläge,0
model,"stock.order_point,name",0,Order Point,Bestellpunkt,0
selection,"purchase.request,origin",0,Order Point,Bestellpunkt,0
-selection,"purchase.request,state",0,Cancel,Abgebrochen,0
+selection,"purchase.request,state",0,Cancel,Annulliert,0
selection,"purchase.request,state",0,Done,Erledigt,0
selection,"purchase.request,state",0,Draft,Entwurf,0
selection,"purchase.request,state",0,Purchased,Auftrag erstellt,0
@@ -72,6 +76,7 @@ view,purchase.request.create_purchase.ask_party,0,Create Purchase: Missing Suppl
view,purchase.request.create_purchase.ask_term,0,Create Purchase: Missing Payment Term,Auftragerstellung: Fehlende Zahlungsbedingung,0
view,stock.order_point,0,Locations,Lagerorte,0
view,stock.order_point,0,Order Point,Bestellpunkt,0
+view,stock.order_point,0,Order Points,Bestellpunkte,0
view,stock.order_point,0,Order Point Type,Typ Bestellpunkt,0
view,stock.order_point,0,Product Info,Artikelinfo,0
wizard_button,"purchase.request.create_purchase,ask_user_party,end",0,Cancel,Abbrechen,0
diff --git a/es_CO.csv b/es_CO.csv
index c58d7db..f10a57c 100644
--- a/es_CO.csv
+++ b/es_CO.csv
@@ -41,11 +41,15 @@ field,"stock.order_point,unit",0,Unit,Unidad,0
field,"stock.order_point,unit_digits",0,Unit Digits,Dígitos de Unidad,0
field,"stock.order_point,warehouse_location",0,Warehouse Location,Lugar de la bodega,0
model,"ir.action,name",wizard_create_purchase,Create Purchase,Crear Compra,0
+model,"ir.action,name",act_purchase_request_form_draft,Draft Purchase Requests,Requisición de Prueba de Compras,0
model,"ir.action,name",act_order_point_form,Order Points,Puntos de Orden,0
+model,"ir.action,name",act_order_point_form2,Order Points,Puntos de Orden,1
model,"ir.action,name",act_purchase_request_form,Purchase Requests,Solicitudes de Compra,0
model,"ir.action,name",act_purchase_form,Purchases,Compras,0
model,"ir.cron,name",cron_shipment_iternal,Generate Internal Shipments,Genere Envío Interno,0
model,"ir.cron,name",cron_generate_request,Generate Purchase Requests,Genere Requisito de Compra,0
+model,"ir.ui.menu,name",menu_purchase_request_form_draft,Draft Purchase Requests,Requisición de Prueba de Compras,0
+model,"ir.ui.menu,name",menu_order_point_form_new,New Order Point,Nuevo Punto de Orden,0
model,"ir.ui.menu,name",menu_order_point_form,Order Points,Puntos de Orden,0
model,"ir.ui.menu,name",menu_purchase_request_form,Purchase Requests,Solicitudes de Compra,0
model,"purchase.request.create_purchase.ask_party,name",0,Create Purchase Ask Party,Crea Pregunta a Tercero de Compra,0
@@ -70,6 +74,7 @@ view,purchase.request.create_purchase.ask_party,0,Create Purchase: Missing Suppl
view,purchase.request.create_purchase.ask_term,0,Create Purchase: Missing Payment Term,Crear Compra: Sin Término de Pago,0
view,stock.order_point,0,Locations,Lugares,0
view,stock.order_point,0,Order Point,Punto de Orden,0
+view,stock.order_point,0,Order Points,Puntos de Orden,1
view,stock.order_point,0,Order Point Type,Tipo de Punto de Orden,0
view,stock.order_point,0,Product Info,Información de Producto,0
wizard_button,"purchase.request.create_purchase,ask_user_party,end",0,Cancel,Cancelar,0
diff --git a/fr_FR.csv b/fr_FR.csv
index cf44561..ec6e3be 100644
--- a/fr_FR.csv
+++ b/fr_FR.csv
@@ -41,11 +41,15 @@ field,"stock.order_point,unit",0,Unit,Unité,0
field,"stock.order_point,unit_digits",0,Unit Digits,Décimales de l'unité,0
field,"stock.order_point,warehouse_location",0,Warehouse Location,Entrepôt,0
model,"ir.action,name",wizard_create_purchase,Create Purchase,Créer achat,0
+model,"ir.action,name",act_purchase_request_form_draft,Draft Purchase Requests,Demandes d'achat en brouillon,0
model,"ir.action,name",act_order_point_form,Order Points,Règles d'approvisionnement,0
+model,"ir.action,name",act_order_point_form2,Order Points,Règles d'approvisionnements,0
model,"ir.action,name",act_purchase_request_form,Purchase Requests,Demandes d'achat,0
model,"ir.action,name",act_purchase_form,Purchases,Achats,0
model,"ir.cron,name",cron_shipment_iternal,Generate Internal Shipments,Générer les expéditions internes,0
model,"ir.cron,name",cron_generate_request,Generate Purchase Requests,Générer les demandes d'achat,0
+model,"ir.ui.menu,name",menu_purchase_request_form_draft,Draft Purchase Requests,Demandes d'achat en brouillon,0
+model,"ir.ui.menu,name",menu_order_point_form_new,New Order Point,nouvelle règle d'approvisionnement,0
model,"ir.ui.menu,name",menu_order_point_form,Order Points,Règles d'approvisionnement,0
model,"ir.ui.menu,name",menu_purchase_request_form,Purchase Requests,Demandes d'achat,0
model,"purchase.request.create_purchase.ask_party,name",0,Create Purchase Ask Party,Créer l'achat - Demande de tiers,0
@@ -70,6 +74,7 @@ view,purchase.request.create_purchase.ask_party,0,Create Purchase: Missing Suppl
view,purchase.request.create_purchase.ask_term,0,Create Purchase: Missing Payment Term,Création de la commande: règle d'appro. absente,0
view,stock.order_point,0,Locations,Emplacements,0
view,stock.order_point,0,Order Point,Règle d'approvisionnement,0
+view,stock.order_point,0,Order Points,Règles d'approvisionnements,0
view,stock.order_point,0,Order Point Type,Type de Règle d'approvisionnement,0
view,stock.order_point,0,Product Info,Info produit,0
wizard_button,"purchase.request.create_purchase,ask_user_party,end",0,Cancel,Annuler,0
diff --git a/order_point.py b/order_point.py
index 4af056b..a6f531f 100644
--- a/order_point.py
+++ b/order_point.py
@@ -2,6 +2,7 @@
#this repository contains the full copyright notices and license terms.
from trytond.model import ModelView, ModelSQL, fields
from trytond.wizard import Wizard
+from trytond.pyson import If, Equal, Eval, Not, In, Get
class OrderPoint(ModelSQL, ModelView):
@@ -15,42 +16,51 @@ class OrderPoint(ModelSQL, ModelView):
product = fields.Many2One(
'product.product', 'Product', required=True, select=1,
- domain=[('type', '=', 'stockable'), "('purchasable', 'in', " \
- "type == 'purchase' and [True] or [True, False])"],
+ domain=[
+ ('type', '=', 'stockable'),
+ ('purchasable', 'in', If(Equal(Eval('type'), 'purchase'),
+ [True], [True, False])),
+ ],
on_change=['product'])
warehouse_location = fields.Many2One(
'stock.location', 'Warehouse Location', select=1,
domain=[('type', '=', 'warehouse')],
- states={'invisible': "type != 'purchase'",
- 'required': "type == 'purchase'"},)
+ states={
+ 'invisible': Not(Equal(Eval('type'), 'purchase')),
+ 'required': Equal(Eval('type'), 'purchase'),
+ })
storage_location = fields.Many2One(
'stock.location', 'Storage Location', select=1,
domain=[('type', '=', 'storage')],
- states={'invisible': "type != 'internal'",
- 'required': "type == 'internal'"},)
- location = fields.Function(
- 'get_location', type='many2one', relation='stock.location',
- fnct_search='search_location', string='Location')
+ states={
+ 'invisible': Not(Equal(Eval('type'), 'internal')),
+ 'required': Equal(Eval('type'), 'internal'),
+ })
+ location = fields.Function(fields.Many2One('stock.location', 'Location'),
+ 'get_location', searcher='search_location')
provisioning_location = fields.Many2One(
'stock.location', 'Provisioning Location',
domain=[('type', '=', 'storage')],
- states={'invisible': "type != 'internal'",
- 'required': "type == 'internal'"},)
+ states={
+ 'invisible': Not(Equal(Eval('type'), 'internal')),
+ 'required': Equal(Eval('type'), 'internal'),
+ })
type = fields.Selection(
[('internal', 'Internal'),
('purchase', 'Purchase')],
'Type', select=1, required=True)
min_quantity = fields.Float('Minimal Quantity', required=True,
- digits="(16, unit_digits)", depends=['unit_digits'])
+ digits=(16, Eval('unit_digits', 2)), depends=['unit_digits'])
max_quantity = fields.Float('Maximal Quantity', required=True,
- digits="(16, unit_digits)", depends=['unit_digits'])
+ digits=(16, Eval('unit_digits', 2)), depends=['unit_digits'])
company = fields.Many2One('company.company', 'Company', required=True,
- domain=["('id', 'company' in context and '=' or '!=', " \
- "context.get('company', 0))"])
- unit = fields.Function('get_unit', type='many2one', relation='product.uom',
- string='Unit')
- unit_digits = fields.Function('get_unit_digits', type='integer',
- string='Unit Digits')
+ domain=[
+ ('id', If(In('company', Eval('context', {})), '=', '!='),
+ Get(Eval('context', {}), 'company', 0)),
+ ])
+ unit = fields.Function(fields.Many2One('product.uom', 'Unit'), 'get_unit')
+ unit_digits = fields.Function(fields.Integer('Unit Digits'),
+ 'get_unit_digits')
def __init__(self):
super(OrderPoint, self).__init__()
@@ -72,7 +82,7 @@ class OrderPoint(ModelSQL, ModelView):
def default_type(self, cursor, user, context=None):
return "purchase"
- def on_change_product(self, cursor, user, ids, vals, context=None):
+ def on_change_product(self, cursor, user, vals, context=None):
product_obj = self.pool.get('product.product')
res = {
'unit': False,
@@ -87,13 +97,13 @@ class OrderPoint(ModelSQL, ModelView):
res['unit_digits'] = product.default_uom.digits
return res
- def get_unit(self, cursor, user, ids, name, arg, context=None):
+ def get_unit(self, cursor, user, ids, name, context=None):
res = {}
for order in self.browse(cursor, user, ids, context=context):
res[order.id] = order.product.default_uom.id
return res
- def get_unit_digits(self, cursor, user, ids, name, arg, context=None):
+ def get_unit_digits(self, cursor, user, ids, name, context=None):
res = {}
for order in self.browse(cursor, user, ids, context=context):
res[order.id] = order.product.default_uom.digits
@@ -147,7 +157,7 @@ class OrderPoint(ModelSQL, ModelView):
ids = self.search(cursor, user, query)
return not bool(ids)
- def get_rec_name(self, cursor, user, ids, name, arg, context=None):
+ def get_rec_name(self, cursor, user, ids, name, context=None):
if not ids:
return {}
if isinstance(ids, (int, long)):
@@ -157,18 +167,15 @@ class OrderPoint(ModelSQL, ModelView):
res[op.id] = "%s@%s" % (op.product.name, op.location.name)
return res
- def search_rec_name(self, cursor, user, name, args, context=None):
- args2 = []
- i = 0
- while i < len(args):
- names = args[i][2].split('@', 1)
- args2.append(('product.template.name', args[i][1], names[0]))
- if len(names) != 1 and names[1]:
- args2.append(('location', args[i][1], names[1]))
- i += 1
- return args2
-
- def get_location(self, cursor, user, ids, name, args, context=None):
+ def search_rec_name(self, cursor, user, name, clause, context=None):
+ res = []
+ names = clause[2].split('@', 1)
+ res.append(('product.template.name', clause[1], names[0]))
+ if len(names) != 1 and names[1]:
+ res.append(('location', clause[1], names[1]))
+ return res
+
+ def get_location(self, cursor, user, ids, name, context=None):
location_obj = self.pool.get('stock.location')
res = {}
for op in self.browse(cursor, user, ids, context=context):
@@ -190,7 +197,6 @@ class OrderPoint(ModelSQL, ModelView):
return [('id', 'in', ids)]
def default_company(self, cursor, user, context=None):
- company_obj = self.pool.get('company.company')
if context is None:
context = {}
if context.get('company'):
diff --git a/order_point.xml b/order_point.xml
index 827f16b..d3d062e 100644
--- a/order_point.xml
+++ b/order_point.xml
@@ -43,9 +43,10 @@ this repository contains the full copyright notices and license terms. -->
<field name="type">tree</field>
<field name="arch" type="xml">
<![CDATA[
- <tree string="Locations">
+ <tree string="Order Points">
<field name="product" select="1"/>
<field name="location" select="1"/>
+ <field name="type" select="1"/>
<field name="company"/>
<field name="min_quantity" select="2"/>
<field name="max_quantity" select="2"/>
@@ -73,6 +74,25 @@ this repository contains the full copyright notices and license terms. -->
<menuitem parent="stock.menu_stock" sequence="60"
action="act_order_point_form" id="menu_order_point_form"/>
+ <record model="ir.action.act_window" id="act_order_point_form2">
+ <field name="name">Order Points</field>
+ <field name="res_model">stock.order_point</field>
+ <field name="view_type">form</field>
+ </record>
+ <record model="ir.action.act_window.view" id="act_order_point_form2_view1">
+ <field name="sequence" eval="10"/>
+ <field name="view" ref="order_point_view_form"/>
+ <field name="act_window" ref="act_order_point_form2"/>
+ </record>
+ <record model="ir.action.act_window.view" id="act_order_point_form2_view2">
+ <field name="sequence" eval="20"/>
+ <field name="view" ref="order_point_view_tree"/>
+ <field name="act_window" ref="act_order_point_form2"/>
+ </record>
+ <menuitem name="New Order Point" parent="menu_order_point_form"
+ action="act_order_point_form2" id="menu_order_point_form_new"
+ sequence="10"/>
+
<record model="ir.model.access" id="access_order_point">
<field name="model" search="[('model', '=', 'stock.order_point')]"/>
<field name="perm_read" eval="True"/>
diff --git a/purchase_request.py b/purchase_request.py
index 8cb9cfd..8dd0577 100644
--- a/purchase_request.py
+++ b/purchase_request.py
@@ -2,6 +2,7 @@
#this repository contains the full copyright notices and license terms.
from trytond.model import ModelView, ModelSQL, fields
from trytond.wizard import Wizard
+from trytond.pyson import If, In, Eval, Get
import datetime
@@ -26,22 +27,21 @@ class PurchaseRequest(ModelSQL, ModelView):
domain=[('type', '=', 'warehouse')], readonly=True)
purchase_line = fields.Many2One(
'purchase.line', 'Purchase Line',readonly=True)
- purchase = fields.Function(
- 'get_purchase', type='many2one', relation='purchase.purchase',
- string='Purchase')
+ purchase = fields.Function(fields.Many2One('purchase.purchase',
+ 'Purchase'), 'get_purchase')
company = fields.Many2One('company.company', 'Company', required=True,
readonly=True, domain=[
- "('id', 'company' in context and '=' or '!=', " \
- "context.get('company', 0))"])
+ ('id', If(In('company', Eval('context', {})), '=', '!='),
+ Get(Eval('context', {}), 'company', 0)),
+ ])
origin = fields.Reference('Origin', selection='origin_get', readonly=True,
required=True)
- state = fields.Function(
- 'get_state', type='selection',
- selection=[("purchased", "Purchased"),
- ("done", "Done"),
- ("draft", "Draft"),
- ("cancel", "Cancel")],
- string="State", readonly=True)
+ state = fields.Function(fields.Selection([
+ ('purchased', 'Purchased'),
+ ('done', 'Done'),
+ ('draft', 'Draft'),
+ ('cancel', 'Cancel'),
+ ], 'State'), 'get_state')
def __init__(self):
super(PurchaseRequest, self).__init__()
@@ -50,7 +50,7 @@ class PurchaseRequest(ModelSQL, ModelView):
'create_request': 'Purchase requests are only created by the system.',
})
- def get_rec_name(self, cursor, user, ids, name, arg, context=None):
+ def get_rec_name(self, cursor, user, ids, name, context=None):
if isinstance(ids, (int, long)):
ids = [ids]
res = {}
@@ -58,26 +58,22 @@ class PurchaseRequest(ModelSQL, ModelView):
res[pr.id] = "%s@%s" % (pr.product.name, pr.warehouse.name)
return res
- def search_rec_name(self, cursor, user, name, args, context=None):
- args2 = []
- i = 0
- while i < len(args):
- names = args[i][2].split('@', 1)
- args2.append(('product.template.name', args[i][1], names[0]))
- if len(names) != 1 and names[1]:
- args2.append(('warehouse', args[i][1], names[1]))
- i += 1
- return args2
+ def search_rec_name(self, cursor, user, name, clause, context=None):
+ res = []
+ names = clause[2].split('@', 1)
+ res.append(('product.template.name', clause[1], names[0]))
+ if len(names) != 1 and names[1]:
+ res.append(('warehouse', clause[1], names[1]))
+ return res
def default_company(self, cursor, user, context=None):
- company_obj = self.pool.get('company.company')
if context is None:
context = {}
if context.get('company'):
return context['company']
return False
- def get_purchase(self, cursor, user, ids, name, args, context=None):
+ def get_purchase(self, cursor, user, ids, name, context=None):
res = {}
requests = self.browse(cursor, user, ids, context=context)
@@ -88,7 +84,7 @@ class PurchaseRequest(ModelSQL, ModelView):
res[request.id] = False
return res
- def get_state(self, cursor, user, ids, name, args, context=None):
+ def get_state(self, cursor, user, ids, name, context=None):
res = {}.fromkeys(ids, 'draft')
for request in self.browse(cursor, user, ids, context=context):
if request.purchase_line:
diff --git a/purchase_request.xml b/purchase_request.xml
index 7147f16..7b967cb 100644
--- a/purchase_request.xml
+++ b/purchase_request.xml
@@ -89,6 +89,26 @@ this repository contains the full copyright notices and license terms. -->
<menuitem parent="purchase.menu_purchase" sequence="20"
action="act_purchase_request_form" id="menu_purchase_request_form"/>
+ <record model="ir.action.act_window" id="act_purchase_request_form_draft">
+ <field name="name">Draft Purchase Requests</field>
+ <field name="res_model">purchase.request</field>
+ <field name="view_type">form</field>
+ <field name="domain">[('purchase_line', '=', False)]</field>
+ </record>
+ <record model="ir.action.act_window.view" id="act_purchase_request_form_draft_view1">
+ <field name="sequence" eval="10"/>
+ <field name="view" ref="purchase_request_view_tree"/>
+ <field name="act_window" ref="act_purchase_request_form_draft"/>
+ </record>
+ <record model="ir.action.act_window.view" id="act_purchase_request_form_draft_view2">
+ <field name="sequence" eval="20"/>
+ <field name="view" ref="purchase_request_view_form"/>
+ <field name="act_window" ref="act_purchase_request_form_draft"/>
+ </record>
+
+ <menuitem parent="menu_purchase_request_form" sequence="10"
+ action="act_purchase_request_form_draft" id="menu_purchase_request_form_draft"/>
+
<record model="ir.ui.view" id="purchase_request_create_purchase_ask_view_form">
<field name="model">purchase.request.create_purchase.ask_term</field>
<field name="type">form</field>
@@ -137,7 +157,7 @@ this repository contains the full copyright notices and license terms. -->
<field name="name">Purchases</field>
<field name="res_model">purchase.purchase</field>
<field name="view_type">form</field>
- <field name="domain">[("id", "=", purchase)]</field>
+ <field name="domain">[("id", "=", Eval('purchase'))]</field>
</record>
<record model="ir.action.act_window.view" id="act_purchase_form_view1">
<field name="sequence" eval="10"/>
diff --git a/setup.py b/setup.py
index 74f00cb..a5103df 100644
--- a/setup.py
+++ b/setup.py
@@ -2,19 +2,22 @@
#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 setuptools import setup, find_packages
+from setuptools import setup
import re
-info = eval(file('__tryton__.py').read())
+info = eval(open('__tryton__.py').read())
+major_version, minor_version, _ = info.get('version', '0.0.1').split('.', 2)
+major_version = int(major_version)
+minor_version = int(minor_version)
requires = []
for dep in info.get('depends', []):
if not re.match(r'(ir|res|workflow|webdav)(\W|$)', dep):
- requires.append('trytond_' + dep)
-
-major_version, minor_version, _ = info.get('version', '0.0.1').split('.', 2)
-requires.append('trytond >= %s.%s' % (major_version, minor_version))
-requires.append('trytond < %s.%s' % (major_version, int(minor_version) + 1))
+ requires.append('trytond_%s >= %s.%s, < %s.%s' %
+ (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))
setup(name='trytond_stock_supply',
version=info.get('version', '0.0.1'),
@@ -27,6 +30,7 @@ setup(name='trytond_stock_supply',
package_dir={'trytond.modules.stock_supply': '.'},
packages=[
'trytond.modules.stock_supply',
+ 'trytond.modules.stock_supply.tests',
],
package_data={
'trytond.modules.stock_supply': info.get('xml', []) \
@@ -55,4 +59,6 @@ setup(name='trytond_stock_supply',
[trytond.modules]
stock_supply = trytond.modules.stock_supply
""",
+ test_suite='tests',
+ test_loader='trytond.test_loader:Loader',
)
diff --git a/tests/__init__.py b/tests/__init__.py
index 72fa326..53c66b5 100644
--- a/tests/__init__.py
+++ b/tests/__init__.py
@@ -1,4 +1,4 @@
#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 test_stock_supply import *
+from test_stock_supply import suite
diff --git a/tests/test_stock_supply.py b/tests/test_stock_supply.py
index b386847..3c3e7cc 100644
--- a/tests/test_stock_supply.py
+++ b/tests/test_stock_supply.py
@@ -10,7 +10,7 @@ if os.path.isdir(DIR):
import unittest
import trytond.tests.test_tryton
-from trytond.tests.test_tryton import RPCProxy, CONTEXT, SOCK, test_view
+from trytond.tests.test_tryton import test_view
class StockSupplyTestCase(unittest.TestCase):
@@ -28,11 +28,10 @@ class StockSupplyTestCase(unittest.TestCase):
self.assertRaises(Exception, test_view('stock_supply'))
def suite():
- return unittest.TestLoader().loadTestsFromTestCase(StockSupplyTestCase)
+ suite = trytond.tests.test_tryton.suite()
+ suite.addTests(unittest.TestLoader().loadTestsFromTestCase(
+ StockSupplyTestCase))
+ return suite
if __name__ == '__main__':
- suiteTrytond = trytond.tests.test_tryton.suite()
- suiteStockSupply = suite()
- alltests = unittest.TestSuite([suiteTrytond, suiteStockSupply])
- unittest.TextTestRunner(verbosity=2).run(alltests)
- SOCK.disconnect()
+ unittest.TextTestRunner(verbosity=2).run(suite())
diff --git a/trytond_stock_supply.egg-info/PKG-INFO b/trytond_stock_supply.egg-info/PKG-INFO
index e0d9fa7..714ba26 100644
--- a/trytond_stock_supply.egg-info/PKG-INFO
+++ b/trytond_stock_supply.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
Metadata-Version: 1.0
Name: trytond-stock-supply
-Version: 1.4.1
+Version: 1.6.0
Summary: Supply Management Module with:
- Order point
- Purchase Request
@@ -13,7 +13,7 @@ Home-page: http://www.tryton.org/
Author: B2CK
Author-email: info at b2ck.com
License: GPL-3
-Download-URL: http://downloads.tryton.org/1.4/
+Download-URL: http://downloads.tryton.org/1.6/
Description: UNKNOWN
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
diff --git a/trytond_stock_supply.egg-info/SOURCES.txt b/trytond_stock_supply.egg-info/SOURCES.txt
index 0155527..47a40fe 100644
--- a/trytond_stock_supply.egg-info/SOURCES.txt
+++ b/trytond_stock_supply.egg-info/SOURCES.txt
@@ -18,9 +18,9 @@ shipment.xml
./product.py
./purchase_request.py
./shipment.py
+./tests/__init__.py
+./tests/test_stock_supply.py
doc/index.rst
-tests/__init__.py
-tests/test_stock_supply.py
trytond_stock_supply.egg-info/PKG-INFO
trytond_stock_supply.egg-info/SOURCES.txt
trytond_stock_supply.egg-info/dependency_links.txt
diff --git a/trytond_stock_supply.egg-info/requires.txt b/trytond_stock_supply.egg-info/requires.txt
index d1fe116..36bd0a1 100644
--- a/trytond_stock_supply.egg-info/requires.txt
+++ b/trytond_stock_supply.egg-info/requires.txt
@@ -1,7 +1,6 @@
-trytond_product
-trytond_stock
-trytond_purchase
-trytond_party
-trytond_account
-trytond >= 1.4
-trytond < 1.5
\ No newline at end of file
+trytond_product >= 1.6, < 1.7
+trytond_stock >= 1.6, < 1.7
+trytond_purchase >= 1.6, < 1.7
+trytond_party >= 1.6, < 1.7
+trytond_account >= 1.6, < 1.7
+trytond >= 1.6, < 1.7
\ No newline at end of file
commit 25f1d3342776a678d62f997da9c8359c5243300e
Author: Daniel Baumann <daniel at debian.org>
Date: Fri Apr 9 14:31:33 2010 +0200
Adding Dm-Upload-Allowed in control in preparation for Mathias.
diff --git a/debian/control b/debian/control
index 45c2563..e8aedb6 100644
--- a/debian/control
+++ b/debian/control
@@ -5,6 +5,7 @@ Maintainer: Debian Tryton Maintainers <tryton at lists.debian-maintainers.org>
Uploaders:
Daniel Baumann <daniel at debian.org>,
Mathias Behrle <mathiasb at mbsolutions.selfip.biz>
+Dm-Upload-Allowed: yes
Build-Depends: debhelper (>= 7), python, python-setuptools, python-support
Standards-Version: 3.8.4
Homepage: http://www.tryton.org/
commit 142d5c9e78b0df8d493c1394532c7dc2cf312546
Author: Daniel Baumann <daniel at debian.org>
Date: Sat Feb 20 11:02:07 2010 +0100
Releasing debian version 1.4.1-2.
diff --git a/debian/changelog b/debian/changelog
index 0e7cad6..e38ad17 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,11 @@
+tryton-modules-stock-supply (1.4.1-2) unstable; urgency=low
+
+ * Updating year in copyright file.
+ * Removing unneeded python-all-dev from build-depends.
+ * Updating to standards 3.8.4.
+
+ -- Daniel Baumann <daniel at debian.org> Sat, 20 Feb 2010 11:02:04 +0100
+
tryton-modules-stock-supply (1.4.1-1) unstable; urgency=low
* Making depends versioned for tryton 1.4.
commit 48c32dd1d21560984191e4ee5b9e273ea4d14dfd
Author: Daniel Baumann <daniel at debian.org>
Date: Thu Jan 28 07:53:22 2010 +0100
Updating to standards 3.8.4.
diff --git a/debian/control b/debian/control
index d8c4aaf..45c2563 100644
--- a/debian/control
+++ b/debian/control
@@ -6,7 +6,7 @@ Uploaders:
Daniel Baumann <daniel at debian.org>,
Mathias Behrle <mathiasb at mbsolutions.selfip.biz>
Build-Depends: debhelper (>= 7), python, python-setuptools, python-support
-Standards-Version: 3.8.3
+Standards-Version: 3.8.4
Homepage: http://www.tryton.org/
Vcs-Browser: http://git.debian-maintainers.org/?p=tryton/tryton-modules-stock-supply.git
Vcs-Git: git://git.debian-maintainers.org/git/tryton/tryton-modules-stock-supply.git
commit a8f6375ba3f59afd928cc5a14ec0fb9219f28fbf
Author: Daniel Baumann <daniel at debian.org>
Date: Mon Jan 25 10:12:28 2010 +0100
Removing unneeded python-all-dev from build-depends.
diff --git a/debian/control b/debian/control
index 2a165ac..d8c4aaf 100644
--- a/debian/control
+++ b/debian/control
@@ -5,8 +5,7 @@ Maintainer: Debian Tryton Maintainers <tryton at lists.debian-maintainers.org>
Uploaders:
Daniel Baumann <daniel at debian.org>,
Mathias Behrle <mathiasb at mbsolutions.selfip.biz>
-Build-Depends:
- debhelper (>= 7), python, python-all-dev, python-setuptools, python-support
+Build-Depends: debhelper (>= 7), python, python-setuptools, python-support
Standards-Version: 3.8.3
Homepage: http://www.tryton.org/
Vcs-Browser: http://git.debian-maintainers.org/?p=tryton/tryton-modules-stock-supply.git
commit ad8a5f3c24093a2e95ca786e87f9efb6a7de949a
Author: Daniel Baumann <daniel at debian.org>
Date: Sat Jan 2 11:35:47 2010 +0100
Updating year in copyright file.
diff --git a/debian/copyright b/debian/copyright
index add95e5..fc543a0 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -26,7 +26,7 @@ License: GPL-3+
can be found in /usr/share/common-licenses/GPL-3 file.
Files: debian/*
-Copyright: (C) 2009 Daniel Baumann <daniel at debian.org>
+Copyright: (C) 2009-2010 Daniel Baumann <daniel at debian.org>
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
commit 41f192d6ec0beae6a67ad8dc8358cd151a30e570
Author: Daniel Baumann <daniel at debian.org>
Date: Wed Nov 25 13:25:35 2009 +0100
Releasing debian version 1.4.1-1.
diff --git a/debian/changelog b/debian/changelog
index 2088692..0e7cad6 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,12 @@
+tryton-modules-stock-supply (1.4.1-1) unstable; urgency=low
+
+ * Making depends versioned for tryton 1.4.
+ * Merging upstream version 1.4.1.
+ * Updating README.source.
+ * Adding explicit debian source version 1.0 until switch to 3.0.
+
+ -- Daniel Baumann <daniel at debian.org> Wed, 25 Nov 2009 13:25:27 +0100
+
tryton-modules-stock-supply (1.4.0-1) unstable; urgency=low
* Merging upstream version 1.4.0.
commit 3a3e2021f103bdd80198f4173fab2e475243325e
Author: Daniel Baumann <daniel at debian.org>
Date: Wed Nov 25 13:25:14 2009 +0100
Adding explicit debian source version 1.0 until switch to 3.0.
diff --git a/debian/source/format b/debian/source/format
new file mode 100644
index 0000000..d3827e7
--- /dev/null
+++ b/debian/source/format
@@ -0,0 +1 @@
+1.0
commit 3740c3223323acf4b273bb2e2ed75c7f1d2e0e89
Author: Daniel Baumann <daniel at debian.org>
Date: Wed Nov 25 13:25:08 2009 +0100
Updating README.source.
diff --git a/debian/README.source b/debian/README.source
index dcc7ba3..18b6b24 100644
--- a/debian/README.source
+++ b/debian/README.source
@@ -32,6 +32,6 @@ upstream source. Changes, if any, are stored in the source package as diffs in
debian/diff and are applied during the build. Current modifications can be
applied to the source tree with:
- $ quilt push -a
+ $ QUILT_PATCHES=debian/patches quilt push -a
More information about Quilt can be found in the quilt package.
commit 1894b3b70bcdcd476d80121679435711281babe7
Author: Daniel Baumann <daniel at debian.org>
Date: Wed Nov 25 13:24:54 2009 +0100
Merging upstream version 1.4.1.
diff --git a/CHANGELOG b/CHANGELOG
index b4765f1..426ce1e 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,6 @@
+Version 1.4.1 - 2009-11-24
+* Some bug fixes (see mercurial logs for details)
+
Version 1.4.0 - 2009-10-19
* Bug fixes (see mercurial logs for details)
diff --git a/PKG-INFO b/PKG-INFO
index fa758b7..7b6216f 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
Metadata-Version: 1.0
Name: trytond_stock_supply
-Version: 1.4.0
+Version: 1.4.1
Summary: Supply Management Module with:
- Order point
- Purchase Request
diff --git a/__tryton__.py b/__tryton__.py
index 64cb988..53667b2 100644
--- a/__tryton__.py
+++ b/__tryton__.py
@@ -6,7 +6,7 @@
'name_es_CO': 'Gestión de pedidos de inventario',
'name_es_ES': 'Gestión de suministro de existencias',
'name_fr_FR': 'Gestion des approvisionnements de stock',
- 'version': '1.4.0',
+ 'version': '1.4.1',
'author': 'B2CK',
'email': 'info at b2ck.com',
'website': 'http://www.tryton.org/',
diff --git a/order_point.py b/order_point.py
index dffe659..4af056b 100644
--- a/order_point.py
+++ b/order_point.py
@@ -45,7 +45,8 @@ class OrderPoint(ModelSQL, ModelView):
max_quantity = fields.Float('Maximal Quantity', required=True,
digits="(16, unit_digits)", depends=['unit_digits'])
company = fields.Many2One('company.company', 'Company', required=True,
- domain=["('id', '=', context.get('company', 0))"])
+ domain=["('id', 'company' in context and '=' or '!=', " \
+ "context.get('company', 0))"])
unit = fields.Function('get_unit', type='many2one', relation='product.uom',
string='Unit')
unit_digits = fields.Function('get_unit_digits', type='integer',
diff --git a/purchase_request.py b/purchase_request.py
index f7a1580..8cb9cfd 100644
--- a/purchase_request.py
+++ b/purchase_request.py
@@ -30,7 +30,9 @@ class PurchaseRequest(ModelSQL, ModelView):
'get_purchase', type='many2one', relation='purchase.purchase',
string='Purchase')
company = fields.Many2One('company.company', 'Company', required=True,
- readonly=True, domain=["('id', '=', context.get('company', 0))"])
+ readonly=True, domain=[
+ "('id', 'company' in context and '=' or '!=', " \
+ "context.get('company', 0))"])
origin = fields.Reference('Origin', selection='origin_get', readonly=True,
required=True)
state = fields.Function(
diff --git a/trytond_stock_supply.egg-info/PKG-INFO b/trytond_stock_supply.egg-info/PKG-INFO
index 681cb2f..e0d9fa7 100644
--- a/trytond_stock_supply.egg-info/PKG-INFO
+++ b/trytond_stock_supply.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
Metadata-Version: 1.0
Name: trytond-stock-supply
-Version: 1.4.0
+Version: 1.4.1
Summary: Supply Management Module with:
- Order point
- Purchase Request
commit 0efe684ea82cf23a6cba908a28f0be3c3928b53b
Author: Daniel Baumann <daniel at debian.org>
Date: Wed Nov 4 12:22:21 2009 +0100
Making depends versioned for tryton 1.4.
diff --git a/debian/control b/debian/control
index c54eaa4..2a165ac 100644
--- a/debian/control
+++ b/debian/control
@@ -15,8 +15,9 @@ Vcs-Git: git://git.debian-maintainers.org/git/tryton/tryton-modules-stock-supply
Package: tryton-modules-stock-supply
Architecture: all
Depends:
- ${misc:Depends}, ${python:Depends}, tryton-server, tryton-modules-party,
- tryton-modules-product, tryton-modules-purchase, tryton-modules-stock,
+ ${misc:Depends}, ${python:Depends}, tryton-server (>= 1.4),
+ tryton-modules-party (>= 1.4), tryton-modules-product (>= 1.4),
+ tryton-modules-purchase (>= 1.4), tryton-modules-stock (>= 1.4),
python-pkg-resources
XB-Python-Version: ${python:Versions}
Description: Tryton Application Platform (Stock Supply Module)
commit 75fd29c12eac23ab6033e3bd57e31bb7a2ad6ca3
Author: Daniel Baumann <daniel at debian.org>
Date: Mon Oct 19 22:44:15 2009 +0200
Releasing debian version 1.4.0-1.
diff --git a/debian/changelog b/debian/changelog
index d012226..2088692 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+tryton-modules-stock-supply (1.4.0-1) unstable; urgency=low
+
+ * Merging upstream version 1.4.0.
+
+ -- Daniel Baumann <daniel at debian.org> Mon, 19 Oct 2009 22:44:07 +0200
+
tryton-modules-stock-supply (1.2.0-4) unstable; urgency=low
* Updating to standards version 3.8.3.
commit c44b08950e178c7e0f2ddbb5f45365cf7e1f5282
Author: Daniel Baumann <daniel at debian.org>
Date: Mon Oct 19 22:43:53 2009 +0200
Merging upstream version 1.4.0.
diff --git a/CHANGELOG b/CHANGELOG
index d28f483..b4765f1 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,6 @@
+Version 1.4.0 - 2009-10-19
+* Bug fixes (see mercurial logs for details)
+
Version 1.2.0 - 2009-04-20
* Bug fixes (see mercurial logs for details)
* Allow egg installation
diff --git a/INSTALL b/INSTALL
index 3c5d515..1134d9d 100644
--- a/INSTALL
+++ b/INSTALL
@@ -5,7 +5,7 @@ Prerequisites
-------------
* Python 2.4 or later (http://www.python.org/)
- * trytond 1.1.x (http://www.tryton.org/)
+ * trytond (http://www.tryton.org/)
* trytond_party (http://www.tryton.org/)
* trytond_product (http://www.tryton.org/)
* trytond_stock (http://www.tryton.org/)
diff --git a/MANIFEST.in b/MANIFEST.in
index dcb2afa..8b45b8a 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -8,3 +8,4 @@ include *.xml
include *.odt
include *.csv
include doc/*
+include tests/*
diff --git a/PKG-INFO b/PKG-INFO
index 92f2432..fa758b7 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,19 +1,19 @@
Metadata-Version: 1.0
Name: trytond_stock_supply
-Version: 1.2.0
+Version: 1.4.0
Summary: Supply Management Module with:
- Order point
- Purchase Request
With schedulers:
- - to generate purchase request based on order points
- - to generate internal packing based on order points
+ - to generate purchase requests based on order points
+ - to generate internal shipments based on order points
Home-page: http://www.tryton.org/
Author: B2CK
Author-email: info at b2ck.com
License: GPL-3
-Download-URL: http://downloads.tryton.org/1.2/
+Download-URL: http://downloads.tryton.org/1.4/
Description: UNKNOWN
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
diff --git a/__init__.py b/__init__.py
index d573cf6..b76a64a 100644
--- a/__init__.py
+++ b/__init__.py
@@ -3,4 +3,4 @@
from order_point import *
from product import *
from purchase_request import *
-from packing import *
+from shipment import *
diff --git a/__tryton__.py b/__tryton__.py
index b67c651..64cb988 100644
--- a/__tryton__.py
+++ b/__tryton__.py
@@ -4,9 +4,9 @@
'name': 'Stock Supply Management',
'name_de_DE': 'Lagerverwaltung Bestellwesen',
'name_es_CO': 'Gestión de pedidos de inventario',
- 'name_es_ES': 'Gestión de pedidos de inventario',
+ 'name_es_ES': 'Gestión de suministro de existencias',
'name_fr_FR': 'Gestion des approvisionnements de stock',
- 'version': '1.2.0',
+ 'version': '1.4.0',
'author': 'B2CK',
'email': 'info at b2ck.com',
'website': 'http://www.tryton.org/',
@@ -15,8 +15,8 @@
- Purchase Request
With schedulers:
- - to generate purchase request based on order points
- - to generate internal packing based on order points
+ - to generate purchase requests based on order points
+ - to generate internal shipments based on order points
''',
'description_de_DE': '''Modul für das Bestellwesen mit:
- Bestellpunkten
@@ -24,7 +24,7 @@ With schedulers:
Mit automatischer Auftragserstellung per Zeitplaner:
- für Bestellungen auf der Basis von Bestellpunkten
- - für internen Versand auf der Basis von Bestellpunkten
+ - für interne Lieferposten auf der Basis von Bestellpunkten
''',
'description_es_CO': '''Módulo de Administración de pedidos:
- Punto de Orden
@@ -34,13 +34,13 @@ Con agendadores para:
- generar solicitudes de compra basados en puntos de orden
- generar empaques internos basados en puntos de orden
''',
- 'description_es_ES': '''Módulo de Administración de pedidos:
- - Punto de Orden
- - Solicitud de Compras
+ 'description_es_ES': '''Módulo de gestión de suministros con:
+ - Punto de orden
+ - Solicitud de compra
-Con agendadores para:
+Con tareas programadas para:
- generar solicitudes de compra basados en puntos de orden
- - generar empaques internos basados en puntos de orden
+ - generar envios internos basados en puntos de orden
''',
'description_fr_FR': '''Module de gestion des approvisionnements avec:
- Règles d'approvisionnement
@@ -63,7 +63,7 @@ sur base des règles d'approvisionnement
'xml': [
'order_point.xml',
'purchase_request.xml',
- 'packing.xml',
+ 'shipment.xml',
],
'translation': [
'de_DE.csv',
diff --git a/de_DE.csv b/de_DE.csv
index a083f22..7f19afb 100644
--- a/de_DE.csv
+++ b/de_DE.csv
@@ -18,9 +18,9 @@ field,"purchase.request.create_purchase.ask_term,payment_term",0,Payment Term,Za
field,"purchase.request,origin",0,Origin,Herkunft,0
field,"purchase.request,party",0,Party,Partei,0
field,"purchase.request,product",0,Product,Artikel,0
-field,"purchase.request,purchase",0,Purchase,Bestellung,0
+field,"purchase.request,purchase",0,Purchase,Bestellvorschlag,0
field,"purchase.request,purchase_date",0,Best Purchase Date,Bestes Einkaufsdatum,0
-field,"purchase.request,purchase_line",0,Purchase Line,Position Bestellung,0
+field,"purchase.request,purchase_line",0,Purchase Line,Position Bestellvorschlag,0
field,"purchase.request,quantity",0,Quantity,Anzahl,0
field,"purchase.request,rec_name",0,Name,Name,0
field,"purchase.request,state",0,State,Status,0
@@ -42,34 +42,34 @@ field,"stock.order_point,unit_digits",0,Unit Digits,Anzahl Stellen,0
field,"stock.order_point,warehouse_location",0,Warehouse Location,Warenlager,0
model,"ir.action,name",wizard_create_purchase,Create Purchase,Auftrag erstellen,0
model,"ir.action,name",act_order_point_form,Order Points,Bestellpunkte,0
-model,"ir.action,name",act_purchase_request_form,Purchase Requests,Bestellungen,0
+model,"ir.action,name",act_purchase_request_form,Purchase Requests,Bestellvorschläge,0
model,"ir.action,name",act_purchase_form,Purchases,Einkäufe,0
-model,"ir.cron,name",cron_packing_iternal,Generate Internal Shipments,Erstellung von Internen Lieferposten,0
+model,"ir.cron,name",cron_shipment_iternal,Generate Internal Shipments,Erstellung von Internen Lieferposten,0
model,"ir.cron,name",cron_generate_request,Generate Purchase Requests,Erstellung von Bestellvorschlägen,0
model,"ir.ui.menu,name",menu_order_point_form,Order Points,Bestellpunkte,0
-model,"ir.ui.menu,name",menu_purchase_request_form,Purchase Requests,Bestellungen,0
+model,"ir.ui.menu,name",menu_purchase_request_form,Purchase Requests,Bestellvorschläge,0
model,"purchase.request.create_purchase.ask_party,name",0,Create Purchase Ask Party,Verkauf Nachfrage Partei,0
model,"purchase.request.create_purchase.ask_term,name",0,Create Purchase Ask Term,Verkauf Nachfrage Zahlungsbedingung,0
-model,"purchase.request,name",0,Purchase Request,Verkauf Angebotsnachfrage,0
+model,"purchase.request,name",0,Purchase Request,Bestellvorschlag,0
model,"res.group,name",group_purchase_request,Purchase Request,Bestellvorschlag,0
-model,"res.user,name",user_generate_packing_internal,Cron Intenal Shipment,Cron Interne Lieferposten,0
+model,"res.user,name",user_generate_shipment_internal,Cron Intenal Shipment,Cron Interne Lieferposten,0
model,"res.user,name",user_generate_request,Cron Purchase Request,Cron Bestellvorschlag,0
model,"stock.order_point,name",0,Order Point,Bestellpunkt,0
selection,"purchase.request,origin",0,Order Point,Bestellpunkt,0
selection,"purchase.request,state",0,Cancel,Abgebrochen,0
selection,"purchase.request,state",0,Done,Erledigt,0
selection,"purchase.request,state",0,Draft,Entwurf,0
-selection,"purchase.request,state",0,Purchased,Bestellt,0
+selection,"purchase.request,state",0,Purchased,Auftrag erstellt,0
selection,"stock.order_point,type",0,Internal,Intern,0
-selection,"stock.order_point,type",0,Purchase,Bestellung,0
+selection,"stock.order_point,type",0,Purchase,Bestellvorschlag,0
view,purchase.request,0,Product Info,Info Artikel,0
-view,purchase.request,0,Purchase Request,Bestellung,0
-view,purchase.request,0,Purchase Requests,Bestellungen,0
+view,purchase.request,0,Purchase Request,Bestellvorschlag,0
+view,purchase.request,0,Purchase Requests,Bestellvorschläge,0
view,purchase.request,0,supply Info,Info Lieferant,0
view,purchase.request,0,Supply Info,Info,0
view,purchase.request.create_purchase.ask_party,0,,,0
-view,purchase.request.create_purchase.ask_party,0,Create Purchase: Missing Supplier,Auftrag erstellen: Fehlender Lieferant,0
-view,purchase.request.create_purchase.ask_term,0,Create Purchase: Missing Payment Term,Auftrag erstellen: Fehlende Zahlungsbedingung,0
+view,purchase.request.create_purchase.ask_party,0,Create Purchase: Missing Supplier,Auftragerstellung: Fehlender Lieferant,0
+view,purchase.request.create_purchase.ask_term,0,Create Purchase: Missing Payment Term,Auftragerstellung: Fehlende Zahlungsbedingung,0
view,stock.order_point,0,Locations,Lagerorte,0
view,stock.order_point,0,Order Point,Bestellpunkt,0
view,stock.order_point,0,Order Point Type,Typ Bestellpunkt,0
diff --git a/doc/index.rst b/doc/index.rst
index 48cfd7d..fb872ef 100644
--- a/doc/index.rst
+++ b/doc/index.rst
@@ -53,7 +53,7 @@ can be:
An Internal order point is defined on a Storage location, it also
define a provisioning location. If the minimum quantity is reached
- it will result in the creation of an internal packing between the
+ it will result in the creation of an internal shipment between the
provisioning location and the Storage location.
* Purchase
@@ -62,8 +62,8 @@ can be:
minimal quantity is reached on the warehouse it will result in a
purchase request.
-The internal packings and purchase requests are created by schedulers
-with respect to stock levels and existing packings and requests. The
+The internal shipments and purchase requests are created by schedulers
+with respect to stock levels and existing shipments and requests. The
stock levels are computed between the next two supply dates. If the
stock level of a product without order point on the given warehouse is
below zero, a purchase request is also created.
diff --git a/es_CO.csv b/es_CO.csv
index e7b57ad..c58d7db 100644
--- a/es_CO.csv
+++ b/es_CO.csv
@@ -44,7 +44,7 @@ model,"ir.action,name",wizard_create_purchase,Create Purchase,Crear Compra,0
model,"ir.action,name",act_order_point_form,Order Points,Puntos de Orden,0
model,"ir.action,name",act_purchase_request_form,Purchase Requests,Solicitudes de Compra,0
model,"ir.action,name",act_purchase_form,Purchases,Compras,0
-model,"ir.cron,name",cron_packing_iternal,Generate Internal Shipments,Genere Envío Interno,0
+model,"ir.cron,name",cron_shipment_iternal,Generate Internal Shipments,Genere Envío Interno,0
model,"ir.cron,name",cron_generate_request,Generate Purchase Requests,Genere Requisito de Compra,0
model,"ir.ui.menu,name",menu_order_point_form,Order Points,Puntos de Orden,0
model,"ir.ui.menu,name",menu_purchase_request_form,Purchase Requests,Solicitudes de Compra,0
@@ -52,7 +52,7 @@ model,"purchase.request.create_purchase.ask_party,name",0,Create Purchase Ask Pa
model,"purchase.request.create_purchase.ask_term,name",0,Create Purchase Ask Term,Crea Pregunta a Tercero de Término,0
model,"purchase.request,name",0,Purchase Request,Solicitud de Compra,0
model,"res.group,name",group_purchase_request,Purchase Request,Solicitud de Compra,0
-model,"res.user,name",user_generate_packing_internal,Cron Intenal Shipment,Cron Envío Interno,0
+model,"res.user,name",user_generate_shipment_internal,Cron Intenal Shipment,Cron Envío Interno,0
model,"res.user,name",user_generate_request,Cron Purchase Request,Cron Requisito de Compra,0
model,"stock.order_point,name",0,Order Point,Punto de Orden,0
selection,"purchase.request,origin",0,Order Point,Punto de Orden,0
diff --git a/es_ES.csv b/es_ES.csv
index 6337910..5d25037 100644
--- a/es_ES.csv
+++ b/es_ES.csv
@@ -1,20 +1,20 @@
type,name,res_id,src,value,fuzzy
-error,purchase.request,0,Purchase requests are only created by the system.,Los requisitos de compras son creados por el sistema únicamente.,0
-error,purchase.request.create_purchase,0,Purchase price is missing for product: %s (id: %s)!,El precio de compra falta para el producto: %s (id: %s)!,0
-error,purchase.request.create_purchase,0,This price is necessary for creating purchase.,Este precio se necesita para creación de compras.,0
+error,purchase.request,0,Purchase requests are only created by the system.,Las solicitudes de compra solo las crea el sistema.,0
+error,purchase.request.create_purchase,0,Purchase price is missing for product: %s (id: %s)!,Falta el precio de compra para el producto: %s (id: %s),0
+error,purchase.request.create_purchase,0,This price is necessary for creating purchase.,Se necesita este precio para crear la compra.,0
error,stock.order_point,0,Maximal quantity must be bigger than Minimal quantity,La cantidad máxima debe ser mayor que la mínima,0
-error,stock.order_point,0,Only one order point is allowed for each product-location pair.,Solamente se admite un punto de orden para cada par cliente-producto.,0
-error,stock.order_point,0,You can not define two order points on the same product with opposite locations.,No puede definir dos puntos de orden con lugares opuestos.,0
+error,stock.order_point,0,Only one order point is allowed for each product-location pair.,Solo se permite un punto de orden por cada par de producto-ubicación.,0
+error,stock.order_point,0,You can not define two order points on the same product with opposite locations.,No puede definir dos puntos de orden en el mismo producto con ubicaciones opuestas.,0
field,"product.product,order_points",0,Order Points,Puntos de orden,0
field,"purchase.request,company",0,Company,Empresa,0
-field,"purchase.request,computed_quantity",0,Computed Quantity,Calcule Cantidad,0
-field,"purchase.request,computed_uom",0,Computed UOM,Calcule UOM,0
+field,"purchase.request,computed_quantity",0,Computed Quantity,Cantidad calculada,0
+field,"purchase.request,computed_uom",0,Computed UOM,UdM calculada,0
field,"purchase.request.create_purchase.ask_party,company",0,Company,Empresa,0
field,"purchase.request.create_purchase.ask_party,party",0,Supplier,Proveedor,0
field,"purchase.request.create_purchase.ask_party,product",0,Product,Producto,0
field,"purchase.request.create_purchase.ask_term,company",0,Company,Empresa,0
field,"purchase.request.create_purchase.ask_term,party",0,Supplier,Proveedor,0
-field,"purchase.request.create_purchase.ask_term,payment_term",0,Payment Term,Término de pago,0
+field,"purchase.request.create_purchase.ask_term,payment_term",0,Payment Term,Plazo de pago,0
field,"purchase.request,origin",0,Origin,Origen,0
field,"purchase.request,party",0,Party,Tercero,0
field,"purchase.request,product",0,Product,Producto,0
@@ -24,8 +24,8 @@ field,"purchase.request,purchase_line",0,Purchase Line,Línea de compra,0
field,"purchase.request,quantity",0,Quantity,Cantidad,0
field,"purchase.request,rec_name",0,Name,Nombre,0
field,"purchase.request,state",0,State,Estado,0
-field,"purchase.request,stock_level",0,Stock at Supply Date,Existencias a la fecha del abastecimiento,0
-field,"purchase.request,supply_date",0,Expected Supply Date,Fecha estimada de abastecimiento,0
+field,"purchase.request,stock_level",0,Stock at Supply Date,Existencias a la fecha del suministro,0
+field,"purchase.request,supply_date",0,Expected Supply Date,Fecha estimada de suministro,0
field,"purchase.request,uom",0,UOM,UdM,0
field,"purchase.request,warehouse",0,Warehouse,Almacén,0
field,"stock.order_point,company",0,Company,Empresa,0
@@ -38,34 +38,34 @@ field,"stock.order_point,rec_name",0,Name,Nombre,0
field,"stock.order_point,storage_location",0,Storage Location,Ubicación del almacén,0
field,"stock.order_point,type",0,Type,Tipo,0
field,"stock.order_point,unit",0,Unit,Unidad,0
-field,"stock.order_point,unit_digits",0,Unit Digits,Dígitos de Unidad,0
+field,"stock.order_point,unit_digits",0,Unit Digits,Decimales de la unidad,0
field,"stock.order_point,warehouse_location",0,Warehouse Location,Ubicación del almacén,0
model,"ir.action,name",wizard_create_purchase,Create Purchase,Crear compra,0
model,"ir.action,name",act_order_point_form,Order Points,Puntos de orden,0
model,"ir.action,name",act_purchase_request_form,Purchase Requests,Solicitudes de compra,0
model,"ir.action,name",act_purchase_form,Purchases,Compras,0
-model,"ir.cron,name",cron_packing_iternal,Generate Internal Shipments,Genere Envío Interno,0
-model,"ir.cron,name",cron_generate_request,Generate Purchase Requests,Genere Requisito de Compra,0
+model,"ir.cron,name",cron_shipment_iternal,Generate Internal Shipments,Generar envios internos,0
+model,"ir.cron,name",cron_generate_request,Generate Purchase Requests,Generar peticiones de compra,0
model,"ir.ui.menu,name",menu_order_point_form,Order Points,Puntos de orden,0
model,"ir.ui.menu,name",menu_purchase_request_form,Purchase Requests,Solicitudes de compra,0
-model,"purchase.request.create_purchase.ask_party,name",0,Create Purchase Ask Party,Crea Pregunta a Tercero de Compra,0
-model,"purchase.request.create_purchase.ask_term,name",0,Create Purchase Ask Term,Crea Pregunta a Tercero de Término,0
-model,"purchase.request,name",0,Purchase Request,Solicitud de Compra,0
-model,"res.group,name",group_purchase_request,Purchase Request,Solicitud de Compra,0
-model,"res.user,name",user_generate_packing_internal,Cron Intenal Shipment,Cron Envío Interno,0
-model,"res.user,name",user_generate_request,Cron Purchase Request,Cron Requisito de Compra,0
-model,"stock.order_point,name",0,Order Point,Punto de Orden,0
+model,"purchase.request.create_purchase.ask_party,name",0,Create Purchase Ask Party,Crear compra - Petición de tercero,0
+model,"purchase.request.create_purchase.ask_term,name",0,Create Purchase Ask Term,Crear compra - Petición de plazo,0
+model,"purchase.request,name",0,Purchase Request,Solicitud de compra,0
+model,"res.group,name",group_purchase_request,Purchase Request,Solicitud de compra,0
+model,"res.user,name",user_generate_shipment_internal,Cron Intenal Shipment,Programador de tareas de envio interno,0
+model,"res.user,name",user_generate_request,Cron Purchase Request,Programador de tareas de solicitudes de compra,0
+model,"stock.order_point,name",0,Order Point,Punto de orden,0
selection,"purchase.request,origin",0,Order Point,Punto de orden,0
selection,"purchase.request,state",0,Cancel,Cancelar,0
-selection,"purchase.request,state",0,Done,Hecho,0
+selection,"purchase.request,state",0,Done,Terminada,0
selection,"purchase.request,state",0,Draft,Borrador,0
selection,"purchase.request,state",0,Purchased,Comprado,0
selection,"stock.order_point,type",0,Internal,Interno,0
selection,"stock.order_point,type",0,Purchase,Compra,0
-view,purchase.request,0,Product Info,Información de Producto,0
+view,purchase.request,0,Product Info,Información del producto,0
view,purchase.request,0,Purchase Request,Solicitud de compra,0
view,purchase.request,0,Purchase Requests,Solicitudes de compra,0
-view,purchase.request,0,Supply Info,Información de proveedor,0
+view,purchase.request,0,Supply Info,Información del suministro,0
view,purchase.request.create_purchase.ask_party,0,Create Purchase: Missing Supplier,Crear compra: sin proveedor,0
view,purchase.request.create_purchase.ask_term,0,Create Purchase: Missing Payment Term,Crear compra: sin término de pago,0
view,stock.order_point,0,Locations,Ubicaciones,0
diff --git a/fr_FR.csv b/fr_FR.csv
index 94c3ae5..cf44561 100644
--- a/fr_FR.csv
+++ b/fr_FR.csv
@@ -44,7 +44,7 @@ model,"ir.action,name",wizard_create_purchase,Create Purchase,Créer achat,0
model,"ir.action,name",act_order_point_form,Order Points,Règles d'approvisionnement,0
model,"ir.action,name",act_purchase_request_form,Purchase Requests,Demandes d'achat,0
model,"ir.action,name",act_purchase_form,Purchases,Achats,0
-model,"ir.cron,name",cron_packing_iternal,Generate Internal Shipments,Générer les expéditions internes,0
+model,"ir.cron,name",cron_shipment_iternal,Generate Internal Shipments,Générer les expéditions internes,0
model,"ir.cron,name",cron_generate_request,Generate Purchase Requests,Générer les demandes d'achat,0
model,"ir.ui.menu,name",menu_order_point_form,Order Points,Règles d'approvisionnement,0
model,"ir.ui.menu,name",menu_purchase_request_form,Purchase Requests,Demandes d'achat,0
@@ -52,7 +52,7 @@ model,"purchase.request.create_purchase.ask_party,name",0,Create Purchase Ask Pa
model,"purchase.request.create_purchase.ask_term,name",0,Create Purchase Ask Term,Créer l'achat - Demande de condition de paiment,0
model,"purchase.request,name",0,Purchase Request,Demande d'achat,0
model,"res.group,name",group_purchase_request,Purchase Request,Demande d'achat,0
-model,"res.user,name",user_generate_packing_internal,Cron Intenal Shipment,Cron expédition interne,0
+model,"res.user,name",user_generate_shipment_internal,Cron Intenal Shipment,Cron expédition interne,0
model,"res.user,name",user_generate_request,Cron Purchase Request,Cron Demande d'achat,0
model,"stock.order_point,name",0,Order Point,Règle d'approvisionnement,0
selection,"purchase.request,origin",0,Order Point,Règle d'approvisionnement,0
diff --git a/order_point.py b/order_point.py
index 2472908..dffe659 100644
--- a/order_point.py
+++ b/order_point.py
@@ -15,17 +15,17 @@ class OrderPoint(ModelSQL, ModelView):
product = fields.Many2One(
'product.product', 'Product', required=True, select=1,
- domain="[('type', '=', 'stockable'), ('purchasable', 'in', " \
- "type == 'purchase' and [True] or [True, False])]",
+ domain=[('type', '=', 'stockable'), "('purchasable', 'in', " \
+ "type == 'purchase' and [True] or [True, False])"],
on_change=['product'])
warehouse_location = fields.Many2One(
'stock.location', 'Warehouse Location', select=1,
- domain="[('type', '=', 'warehouse')]",
+ domain=[('type', '=', 'warehouse')],
states={'invisible': "type != 'purchase'",
'required': "type == 'purchase'"},)
storage_location = fields.Many2One(
'stock.location', 'Storage Location', select=1,
- domain="[('type', '=', 'storage')]",
+ domain=[('type', '=', 'storage')],
states={'invisible': "type != 'internal'",
'required': "type == 'internal'"},)
location = fields.Function(
@@ -33,7 +33,7 @@ class OrderPoint(ModelSQL, ModelView):
fnct_search='search_location', string='Location')
provisioning_location = fields.Many2One(
'stock.location', 'Provisioning Location',
- domain="[('type', '=', 'storage')]",
+ domain=[('type', '=', 'storage')],
states={'invisible': "type != 'internal'",
'required': "type == 'internal'"},)
type = fields.Selection(
@@ -45,7 +45,7 @@ class OrderPoint(ModelSQL, ModelView):
max_quantity = fields.Float('Maximal Quantity', required=True,
digits="(16, unit_digits)", depends=['unit_digits'])
company = fields.Many2One('company.company', 'Company', required=True,
- domain="[('id', '=', context.get('company', 0))]")
+ domain=["('id', '=', context.get('company', 0))"])
unit = fields.Function('get_unit', type='many2one', relation='product.uom',
string='Unit')
unit_digits = fields.Function('get_unit_digits', type='integer',
diff --git a/product.py b/product.py
index e1d2a41..7b935b8 100644
--- a/product.py
+++ b/product.py
@@ -1,7 +1,6 @@
#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 trytond.model import ModelView, ModelSQL, fields
-import datetime
class Product(ModelSQL, ModelView):
diff --git a/purchase_request.py b/purchase_request.py
index 5bc704d..f7a1580 100644
--- a/purchase_request.py
+++ b/purchase_request.py
@@ -30,7 +30,7 @@ class PurchaseRequest(ModelSQL, ModelView):
'get_purchase', type='many2one', relation='purchase.purchase',
string='Purchase')
company = fields.Many2One('company.company', 'Company', required=True,
- readonly=True, domain="[('id', '=', context.get('company', 0))]")
+ readonly=True, domain=["('id', '=', context.get('company', 0))"])
origin = fields.Reference('Origin', selection='origin_get', readonly=True,
required=True)
state = fields.Function(
diff --git a/setup.py b/setup.py
index 8aac505..74f00cb 100644
--- a/setup.py
+++ b/setup.py
@@ -9,17 +9,12 @@ info = eval(file('__tryton__.py').read())
requires = []
for dep in info.get('depends', []):
- match = re.compile(
- '(ir|res|workflow|webdav)((\s|$|<|>|<=|>=|==|!=).*?$)').match(dep)
- if match:
- continue
- else:
- dep = 'trytond_' + dep
- requires.append(dep)
+ if not re.match(r'(ir|res|workflow|webdav)(\W|$)', dep):
+ requires.append('trytond_' + dep)
major_version, minor_version, _ = info.get('version', '0.0.1').split('.', 2)
requires.append('trytond >= %s.%s' % (major_version, minor_version))
-requires.append('trytond < %s.%s' % (major_version, str(int(minor_version) + 1)))
+requires.append('trytond < %s.%s' % (major_version, int(minor_version) + 1))
setup(name='trytond_stock_supply',
version=info.get('version', '0.0.1'),
diff --git a/packing.py b/shipment.py
similarity index 70%
rename from packing.py
rename to shipment.py
index 6a47d9f..423b210 100644
--- a/packing.py
+++ b/shipment.py
@@ -3,12 +3,24 @@
from trytond.model import ModelView, ModelSQL
-class PackingInternal(ModelSQL, ModelView):
- _name = 'stock.packing.internal'
+class ShipmentInternal(ModelSQL, ModelView):
+ _name = 'stock.shipment.internal'
- def generate_internal_packing(self, cursor, user, context=None):
+ def init(self, cursor, module_name):
+ # Migration from 1.2: packing renamed into shipment
+ cursor.execute("UPDATE ir_model_data "\
+ "SET fs_id = REPLACE(fs_id, 'packing', 'shipment') "\
+ "WHERE fs_id like '%%packing%%' AND module = %s",
+ (module_name,))
+ cursor.execute("UPDATE ir_model "\
+ "SET model = REPLACE(model, 'packing', 'shipment') "\
+ "WHERE model like '%%packing%%' AND module = %s",
+ (module_name,))
+ super(ShipmentInternal, self).init(cursor, module_name)
+
+ def generate_internal_shipment(self, cursor, user, context=None):
"""
- Generate internal packings to meet order points defined on
+ Generate internal shipments to meet order points defined on
non-warehouse location.
"""
order_point_obj = self.pool.get('stock.order_point')
@@ -45,17 +57,17 @@ class PackingInternal(ModelSQL, ModelView):
op.product.id)
moves[key] = op.max_quantity - qty
- # Compare with existing draft packings
- packing_ids = self.search(
+ # Compare with existing draft shipments
+ shipment_ids = self.search(
cursor, user,
[('state', '=', 'draft'),
['OR', ('planned_date', '<=', today),
('planned_date', '=', False)]],
context=context)
- for packing in self.browse(cursor, user, packing_ids, context=context):
- for move in packing.moves:
- key = (packing.to_location.id,
- packing.from_location.id,
+ for shipment in self.browse(cursor, user, shipment_ids, context=context):
+ for move in shipment.moves:
+ key = (shipment.to_location.id,
+ shipment.from_location.id,
move.product.id)
if key not in moves:
continue
@@ -65,14 +77,14 @@ class PackingInternal(ModelSQL, ModelView):
moves[key] = max(0, moves[key] - quantity)
# Group moves by {from,to}_location
- packings = {}
+ shipments = {}
for key,qty in moves.iteritems():
from_location, to_location, product = key
- packings.setdefault(
+ shipments.setdefault(
(from_location, to_location),[]).append((product, qty))
- # Create packings and moves
- for packing, moves in packings.iteritems():
- from_location, to_location = packing
+ # Create shipments and moves
+ for shipment, moves in shipments.iteritems():
+ from_location, to_location = shipment
values = {
'from_location': from_location,
'to_location': to_location,
@@ -92,4 +104,4 @@ class PackingInternal(ModelSQL, ModelView):
))
self.create(cursor, user, values, context=context)
-PackingInternal()
+ShipmentInternal()
diff --git a/packing.xml b/shipment.xml
similarity index 61%
rename from packing.xml
rename to shipment.xml
index cfafa1d..c0f395a 100644
--- a/packing.xml
+++ b/shipment.xml
@@ -1,25 +1,26 @@
<?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. -->
+<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
+this repository contains the full copyright notices and license terms. -->
<tryton>
<data>
- <record model="res.user" id="user_generate_packing_internal">
- <field name="login">user_cron_internal_packing</field>
+ <record model="res.user" id="user_generate_shipment_internal">
+ <field name="login">user_cron_internal_shipment</field>
<field name="name">Cron Intenal Shipment</field>
<field name="groups" eval="[('add', ref('stock.group_stock'))]"/>
<field name="signature"></field>
</record>
- <record model="ir.cron" id="cron_packing_iternal">
+ <record model="ir.cron" id="cron_shipment_iternal">
<field name="name">Generate Internal Shipments</field>
<field name="request_user" ref="res.user_admin"/>
- <field name="user" ref="user_generate_packing_internal"/>
+ <field name="user" ref="user_generate_shipment_internal"/>
<field name="active" eval="True"/>
<field name="interval_number">1</field>
<field name="interval_type">days</field>
<field name="numbercall">-1</field>
<field name="doall" eval="False"/>
- <field name="model">stock.packing.internal</field>
- <field name="function">generate_internal_packing</field>
+ <field name="model">stock.shipment.internal</field>
+ <field name="function">generate_internal_shipment</field>
<field name="priority">5</field>
</record>
diff --git a/__init__.py b/tests/__init__.py
similarity index 55%
copy from __init__.py
copy to tests/__init__.py
index d573cf6..72fa326 100644
--- a/__init__.py
+++ b/tests/__init__.py
@@ -1,6 +1,4 @@
-#This file is part of Tryton. The COPYRIGHT file at the top level of
+#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 order_point import *
-from product import *
-from purchase_request import *
-from packing import *
+
+from test_stock_supply import *
diff --git a/tests/test_stock_supply.py b/tests/test_stock_supply.py
new file mode 100644
index 0000000..b386847
--- /dev/null
+++ b/tests/test_stock_supply.py
@@ -0,0 +1,38 @@
+#!/usr/bin/env python
+#This file is part of Tryton. The COPYRIGHT file at the top level of
+#this repository contains the full copyright notices and license terms.
+
+import sys, os
+DIR = os.path.abspath(os.path.normpath(os.path.join(__file__,
+ '..', '..', '..', '..', '..', 'trytond')))
+if os.path.isdir(DIR):
+ sys.path.insert(0, os.path.dirname(DIR))
+
+import unittest
+import trytond.tests.test_tryton
+from trytond.tests.test_tryton import RPCProxy, CONTEXT, SOCK, test_view
+
+
+class StockSupplyTestCase(unittest.TestCase):
+ '''
+ Test StockSupply module.
+ '''
+
+ def setUp(self):
+ trytond.tests.test_tryton.install_module('stock_supply')
+
+ def test0005views(self):
+ '''
+ Test views.
+ '''
+ self.assertRaises(Exception, test_view('stock_supply'))
+
+def suite():
+ return unittest.TestLoader().loadTestsFromTestCase(StockSupplyTestCase)
+
+if __name__ == '__main__':
+ suiteTrytond = trytond.tests.test_tryton.suite()
+ suiteStockSupply = suite()
+ alltests = unittest.TestSuite([suiteTrytond, suiteStockSupply])
+ unittest.TextTestRunner(verbosity=2).run(alltests)
+ SOCK.disconnect()
diff --git a/trytond_stock_supply.egg-info/PKG-INFO b/trytond_stock_supply.egg-info/PKG-INFO
index 85b5580..681cb2f 100644
--- a/trytond_stock_supply.egg-info/PKG-INFO
+++ b/trytond_stock_supply.egg-info/PKG-INFO
@@ -1,19 +1,19 @@
Metadata-Version: 1.0
Name: trytond-stock-supply
-Version: 1.2.0
+Version: 1.4.0
Summary: Supply Management Module with:
- Order point
- Purchase Request
With schedulers:
- - to generate purchase request based on order points
- - to generate internal packing based on order points
+ - to generate purchase requests based on order points
+ - to generate internal shipments based on order points
Home-page: http://www.tryton.org/
Author: B2CK
Author-email: info at b2ck.com
License: GPL-3
-Download-URL: http://downloads.tryton.org/1.2/
+Download-URL: http://downloads.tryton.org/1.4/
Description: UNKNOWN
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
diff --git a/trytond_stock_supply.egg-info/SOURCES.txt b/trytond_stock_supply.egg-info/SOURCES.txt
index c5af587..0155527 100644
--- a/trytond_stock_supply.egg-info/SOURCES.txt
+++ b/trytond_stock_supply.egg-info/SOURCES.txt
@@ -9,16 +9,18 @@ es_CO.csv
es_ES.csv
fr_FR.csv
order_point.xml
-packing.xml
purchase_request.xml
setup.py
+shipment.xml
./__init__.py
./__tryton__.py
./order_point.py
-./packing.py
./product.py
./purchase_request.py
+./shipment.py
doc/index.rst
+tests/__init__.py
+tests/test_stock_supply.py
trytond_stock_supply.egg-info/PKG-INFO
trytond_stock_supply.egg-info/SOURCES.txt
trytond_stock_supply.egg-info/dependency_links.txt
diff --git a/trytond_stock_supply.egg-info/requires.txt b/trytond_stock_supply.egg-info/requires.txt
index b08fcb2..d1fe116 100644
--- a/trytond_stock_supply.egg-info/requires.txt
+++ b/trytond_stock_supply.egg-info/requires.txt
@@ -3,5 +3,5 @@ trytond_stock
trytond_purchase
trytond_party
trytond_account
-trytond >= 1.2
-trytond < 1.3
\ No newline at end of file
+trytond >= 1.4
+trytond < 1.5
\ No newline at end of file
commit 4e411389065803a78b5d6452c12f17e95785ec32
Author: Daniel Baumann <daniel at debian.org>
Date: Sat Sep 5 09:43:47 2009 +0200
Releasing debian version 1.2.0-4.
diff --git a/debian/changelog b/debian/changelog
index b0f75f2..d012226 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,14 @@
+tryton-modules-stock-supply (1.2.0-4) unstable; urgency=low
+
+ * Updating to standards version 3.8.3.
+ * Adding maintainer homepage field to control.
+ * Adding README.source.
+ * Moving maintainer homepage field to copyright.
+ * Updating README.source.
+ * Using ascii only characters in copyright.
+
+ -- Daniel Baumann <daniel at debian.org> Sat, 05 Sep 2009 09:43:33 +0200
+
tryton-modules-stock-supply (1.2.0-3) unstable; urgency=low
* Updating maintainer field.
commit 7824973f2cc31ff4df6e1d40c318f17967a748f7
Author: Daniel Baumann <daniel at debian.org>
Date: Sat Sep 5 09:34:33 2009 +0200
Using ascii only characters in copyright.
diff --git a/debian/copyright b/debian/copyright
index cf22c34..add95e5 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -5,7 +5,7 @@ Maintainer-Homepage: http://tryton.debian-maintainers.org/
Files: *
Copyright:
- (C) 2008-2009 Cédric Krier
+ (C) 2008-2009 Cedric Krier
(C) 2008-2009 Bertrand Chenal
(C) 2008-2009 B2CK SPRL
License: GPL-3+
commit 733c8ec7e0ec3375dac8607a46c2109fd706e694
Author: Daniel Baumann <daniel at debian.org>
Date: Sat Sep 5 09:31:18 2009 +0200
Updating README.source.
diff --git a/debian/README.source b/debian/README.source
index 259f923..dcc7ba3 100644
--- a/debian/README.source
+++ b/debian/README.source
@@ -4,7 +4,7 @@ Package Repositories
Backports for the current stable debian distribution as well as snapshots of
unreleased versions may be available in repositories listed on the maintainers
homepage. The current URL of the maintainer homepage can be seen in
-debian/control.
+debian/copyright.
Source Access
commit 620fef7e6cf7b1a3296f7211cda43441f50919e3
Author: Daniel Baumann <daniel at debian.org>
Date: Sat Sep 5 09:28:47 2009 +0200
Moving maintainer homepage field to copyright.
diff --git a/debian/control b/debian/control
index a9f7b09..c54eaa4 100644
--- a/debian/control
+++ b/debian/control
@@ -11,7 +11,6 @@ Standards-Version: 3.8.3
Homepage: http://www.tryton.org/
Vcs-Browser: http://git.debian-maintainers.org/?p=tryton/tryton-modules-stock-supply.git
Vcs-Git: git://git.debian-maintainers.org/git/tryton/tryton-modules-stock-supply.git
-XSBC-Maintainer-Homepage: http://tryton.debian-maintainers.org/
Package: tryton-modules-stock-supply
Architecture: all
diff --git a/debian/copyright b/debian/copyright
index 8909cb1..cf22c34 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -1,5 +1,7 @@
-Author: Tryton Project <http://www.tryton.org/>
-Download: http://www.tryton.org/downloads.html
+Upstream-Contact: Tryton project <tryton at googlegroups.com>
+Upstream-Homepage: http://downloads.tryton.org/
+Maintainer-Contact: Debian Tryton Maintainers <tryton at lists.debian-maintainers.org>
+Maintainer-Homepage: http://tryton.debian-maintainers.org/
Files: *
Copyright:
commit 742647b37a215da29b83a2b1f3b09b3fb4e535ad
Author: Daniel Baumann <daniel at debian.org>
Date: Tue Aug 25 08:18:44 2009 +0200
Adding README.source.
diff --git a/debian/README.source b/debian/README.source
new file mode 100644
index 0000000..259f923
--- /dev/null
+++ b/debian/README.source
@@ -0,0 +1,37 @@
+Package Repositories
+--------------------
+
+Backports for the current stable debian distribution as well as snapshots of
+unreleased versions may be available in repositories listed on the maintainers
+homepage. The current URL of the maintainer homepage can be seen in
+debian/control.
+
+
+Source Access
+-------------
+
+You can obtain the sources of this package with:
+
+ $ apt-get source ${PACKAGE}
+
+whereas '${PACKAGE}' has to be replaced with the actual name of the package.
+
+This package is maintained with the Git version control system. The current git
+source tree can be obtained with:
+
+ $ git clone ${GIT_URI}
+
+whereas '${GIT_URI}' has to be replaced with the actual URI for the Git
+repository. The current Git URI can be seen in debian/control in the extracted
+package sources.
+
+More information about Git can be found in the git-core package.
+
+This package may use the Quilt patch system to manage all modifications to the
+upstream source. Changes, if any, are stored in the source package as diffs in
+debian/diff and are applied during the build. Current modifications can be
+applied to the source tree with:
+
+ $ quilt push -a
+
+More information about Quilt can be found in the quilt package.
commit cdfc69208f77fd2d9d1b6a91ae719e534fbbce8e
Author: Daniel Baumann <daniel at debian.org>
Date: Mon Aug 24 17:51:36 2009 +0200
Adding maintainer homepage field to control.
diff --git a/debian/control b/debian/control
index c54eaa4..a9f7b09 100644
--- a/debian/control
+++ b/debian/control
@@ -11,6 +11,7 @@ Standards-Version: 3.8.3
Homepage: http://www.tryton.org/
Vcs-Browser: http://git.debian-maintainers.org/?p=tryton/tryton-modules-stock-supply.git
Vcs-Git: git://git.debian-maintainers.org/git/tryton/tryton-modules-stock-supply.git
+XSBC-Maintainer-Homepage: http://tryton.debian-maintainers.org/
Package: tryton-modules-stock-supply
Architecture: all
commit 329c60694b388c6b545ecd04fb11efaf7e209f4c
Author: Daniel Baumann <daniel at debian.org>
Date: Sun Aug 16 10:13:41 2009 +0200
Updating to standards version 3.8.3.
diff --git a/debian/control b/debian/control
index 59f418c..c54eaa4 100644
--- a/debian/control
+++ b/debian/control
@@ -7,7 +7,7 @@ Uploaders:
Mathias Behrle <mathiasb at mbsolutions.selfip.biz>
Build-Depends:
debhelper (>= 7), python, python-all-dev, python-setuptools, python-support
-Standards-Version: 3.8.2
+Standards-Version: 3.8.3
Homepage: http://www.tryton.org/
Vcs-Browser: http://git.debian-maintainers.org/?p=tryton/tryton-modules-stock-supply.git
Vcs-Git: git://git.debian-maintainers.org/git/tryton/tryton-modules-stock-supply.git
commit 817888fd7339f5306e2de19812ce146cf77d15ac
Author: Daniel Baumann <daniel at debian.org>
Date: Mon Aug 10 20:29:34 2009 +0200
Releasing debian version 1.2.0-3.
diff --git a/debian/changelog b/debian/changelog
index 28ebb6e..b0f75f2 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,11 @@
+tryton-modules-stock-supply (1.2.0-3) unstable; urgency=low
+
+ * Updating maintainer field.
+ * Updating vcs fields.
+ * Wrapping lines in control.
+
+ -- Daniel Baumann <daniel at debian.org> Mon, 10 Aug 2009 20:29:33 +0200
+
tryton-modules-stock-supply (1.2.0-2) unstable; urgency=low
* Updating package to standards version 3.8.2.
commit a4c93f03f1f02965e75d706a31526e903e317e93
Author: Daniel Baumann <daniel at debian.org>
Date: Mon Aug 10 20:29:30 2009 +0200
Wrapping lines in control.
diff --git a/debian/control b/debian/control
index 84ac19c..59f418c 100644
--- a/debian/control
+++ b/debian/control
@@ -2,7 +2,9 @@ Source: tryton-modules-stock-supply
Section: python
Priority: optional
Maintainer: Debian Tryton Maintainers <tryton at lists.debian-maintainers.org>
-Uploaders: Daniel Baumann <daniel at debian.org>, Mathias Behrle <mathiasb at mbsolutions.selfip.biz>
+Uploaders:
+ Daniel Baumann <daniel at debian.org>,
+ Mathias Behrle <mathiasb at mbsolutions.selfip.biz>
Build-Depends:
debhelper (>= 7), python, python-all-dev, python-setuptools, python-support
Standards-Version: 3.8.2
commit 92fd41fc180e84a2033a31063030dc536eb36773
Author: Daniel Baumann <daniel at debian.org>
Date: Sat Aug 8 23:26:50 2009 +0200
Updating vcs fields.
diff --git a/debian/control b/debian/control
index ab28234..84ac19c 100644
--- a/debian/control
+++ b/debian/control
@@ -7,8 +7,8 @@ Build-Depends:
debhelper (>= 7), python, python-all-dev, python-setuptools, python-support
Standards-Version: 3.8.2
Homepage: http://www.tryton.org/
-Vcs-Browser: http://git.debian.net/?p=debian/tryton-modules-stock-supply.git
-Vcs-Git: git://git.debian.net/git/debian/tryton-modules-stock-supply.git
+Vcs-Browser: http://git.debian-maintainers.org/?p=tryton/tryton-modules-stock-supply.git
+Vcs-Git: git://git.debian-maintainers.org/git/tryton/tryton-modules-stock-supply.git
Package: tryton-modules-stock-supply
Architecture: all
commit 0277a4e17d1f065c4c0a6fd2d66f22d561401c8b
Author: Daniel Baumann <daniel at debian.org>
Date: Sat Aug 8 23:19:31 2009 +0200
Updating maintainer field.
diff --git a/debian/control b/debian/control
index 528f935..ab28234 100644
--- a/debian/control
+++ b/debian/control
@@ -1,8 +1,8 @@
Source: tryton-modules-stock-supply
Section: python
Priority: optional
-Maintainer: Daniel Baumann <daniel at debian.org>
-Uploaders: Mathias Behrle <mathiasb at mbsolutions.selfip.biz>
+Maintainer: Debian Tryton Maintainers <tryton at lists.debian-maintainers.org>
+Uploaders: Daniel Baumann <daniel at debian.org>, Mathias Behrle <mathiasb at mbsolutions.selfip.biz>
Build-Depends:
debhelper (>= 7), python, python-all-dev, python-setuptools, python-support
Standards-Version: 3.8.2
commit 367b5093ebdc7fdf92accd7ed4ab2af4462e335c
Author: Daniel Baumann <daniel at debian.org>
Date: Sun Jul 26 20:49:44 2009 +0200
Releasing debian version 1.2.0-2.
diff --git a/debian/changelog b/debian/changelog
index 4c54a5a..28ebb6e 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+tryton-modules-stock-supply (1.2.0-2) unstable; urgency=low
+
+ * Updating package to standards version 3.8.2.
+ * Minimizing rules file.
+
+ -- Daniel Baumann <daniel at debian.org> Sun, 26 Jul 2009 20:49:43 +0200
+
tryton-modules-stock-supply (1.2.0-1) unstable; urgency=low
[ Daniel Baumann ]
commit e20a99469f9d1a30753d76a55392c94257895668
Author: Daniel Baumann <daniel at debian.org>
Date: Sun Jul 26 20:49:37 2009 +0200
Minimizing rules file.
diff --git a/debian/rules b/debian/rules
index b679ef6..000210b 100755
--- a/debian/rules
+++ b/debian/rules
@@ -1,41 +1,4 @@
#!/usr/bin/make -f
-clean:
- dh_testdir
- dh_testroot
- rm -f build-stamp
-
- python setup.py clean
- rm -rf dist build trytond_stock_supply.egg-info
-
- dh_clean
-
-build:
-
-install:
- dh_testdir
- dh_testroot
- dh_prep
-
- python setup.py install --single-version-externally-managed --root=$(CURDIR)/debian/tryton-modules-stock-supply --install-lib /usr/share/python-support/tryton-modules-stock-supply
-
- find debian/tryton-modules-stock-supply -type f -name "*.pyc" | xargs rm -f
-
-binary: binary-indep
-
-binary-arch:
-
-binary-indep: install
- dh_testdir
- dh_testroot
- dh_installchangelogs CHANGELOG
- dh_installdocs
- dh_pysupport
- dh_compress
- dh_fixperms
- dh_installdeb
- dh_gencontrol
- dh_md5sums
- dh_builddeb
-
-.PHONY: clean build install binary binary-arch binary-indep
+%:
+ dh ${@}
commit a681adead9c74b136f04afe7578dcf3220ecd796
Author: Daniel Baumann <daniel at debian.org>
Date: Fri Jul 10 14:09:16 2009 +0200
Updating package to standards version 3.8.2.
diff --git a/debian/control b/debian/control
index 8bea7b8..528f935 100644
--- a/debian/control
+++ b/debian/control
@@ -5,7 +5,7 @@ Maintainer: Daniel Baumann <daniel at debian.org>
Uploaders: Mathias Behrle <mathiasb at mbsolutions.selfip.biz>
Build-Depends:
debhelper (>= 7), python, python-all-dev, python-setuptools, python-support
-Standards-Version: 3.8.1
+Standards-Version: 3.8.2
Homepage: http://www.tryton.org/
Vcs-Browser: http://git.debian.net/?p=debian/tryton-modules-stock-supply.git
Vcs-Git: git://git.debian.net/git/debian/tryton-modules-stock-supply.git
commit d340e4074c800fb191d042ed8525aa2ef101cd6b
Author: Daniel Baumann <daniel at debian.org>
Date: Tue Apr 21 21:05:10 2009 +0200
Releasing debian version 1.2.0-1.
diff --git a/debian/changelog b/debian/changelog
index 2f810b2..4c54a5a 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,18 @@
+tryton-modules-stock-supply (1.2.0-1) unstable; urgency=low
+
+ [ Daniel Baumann ]
+ * Merging upstream version 1.2.0.
+ * Tidy rules file.
+ * Updating copyright file for new upstream release.
+
+ [ Mathias Behrle ]
+ * Updating application and package description.
+
+ [ Daniel Baumann ]
+ * Correcting wrapping of control file.
+
+ -- Daniel Baumann <daniel at debian.org> Tue, 21 Apr 2009 21:04:00 +0200
+
tryton-modules-stock-supply (1.0.2-2) unstable; urgency=low
* Adding Mathias to uploaders.
commit 25f3ad471f6a866bec1224c9825c738724704157
Author: Daniel Baumann <daniel at debian.org>
Date: Tue Apr 21 21:04:53 2009 +0200
Correcting wrapping of control file.
diff --git a/debian/control b/debian/control
index a6b948c..8bea7b8 100644
--- a/debian/control
+++ b/debian/control
@@ -3,7 +3,8 @@ Section: python
Priority: optional
Maintainer: Daniel Baumann <daniel at debian.org>
Uploaders: Mathias Behrle <mathiasb at mbsolutions.selfip.biz>
-Build-Depends: debhelper (>= 7), python, python-all-dev, python-setuptools, python-support
+Build-Depends:
+ debhelper (>= 7), python, python-all-dev, python-setuptools, python-support
Standards-Version: 3.8.1
Homepage: http://www.tryton.org/
Vcs-Browser: http://git.debian.net/?p=debian/tryton-modules-stock-supply.git
@@ -11,11 +12,15 @@ Vcs-Git: git://git.debian.net/git/debian/tryton-modules-stock-supply.git
Package: tryton-modules-stock-supply
Architecture: all
-Depends: ${misc:Depends}, ${python:Depends}, tryton-server, tryton-modules-party, tryton-modules-product, tryton-modules-purchase, tryton-modules-stock, python-pkg-resources
+Depends:
+ ${misc:Depends}, ${python:Depends}, tryton-server, tryton-modules-party,
+ tryton-modules-product, tryton-modules-purchase, tryton-modules-stock,
+ python-pkg-resources
XB-Python-Version: ${python:Versions}
Description: Tryton Application Platform (Stock Supply 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.
+ and using PostgreSQL as database engine. It is the core base of a complete
+ business solution.
.
This package contains the module for supply management with:
.
commit 4f5ad3e146579ec841de9d84a958f2a869d80e1d
Author: Mathias Behrle <mathiasb at mbsolutions.selfip.biz>
Date: Tue Apr 21 17:56:56 2009 +0200
Updating application and package description.
diff --git a/debian/control b/debian/control
index 3332fa7..a6b948c 100644
--- a/debian/control
+++ b/debian/control
@@ -15,14 +15,14 @@ Depends: ${misc:Depends}, ${python:Depends}, tryton-server, tryton-modules-party
XB-Python-Version: ${python:Versions}
Description: Tryton Application Platform (Stock Supply 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 an ERP.
+ and using PostgreSQL as database engine. It is the core base of a complete business solution.
.
- This package contains the Supply Management Module with:
+ This package contains the module for supply management with:
.
- * Order point
- * Purchase Request
+ * Order points
+ * Purchase Requests
.
- With schedulers:
+ Providing scheduler tasks:
.
- * to generate purchase request based on order points.
- * to generate internal packing based on order points.
+ * to generate purchase requests based on order points.
+ * to generate internal shipments based on order points.
commit a64bf1a164adaa6699ef4afe94d1ce141cd3bd5a
Author: Daniel Baumann <daniel at debian.org>
Date: Tue Apr 21 11:48:12 2009 +0200
Updating copyright file for new upstream release.
diff --git a/debian/copyright b/debian/copyright
index 1c7f5ab..8909cb1 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -3,9 +3,9 @@ Download: http://www.tryton.org/downloads.html
Files: *
Copyright:
- (C) 2008 Cedric Krier
- (C) 2008 Bertrand Chenal
- (C) 2008 B2CK SPRL
+ (C) 2008-2009 Cédric Krier
+ (C) 2008-2009 Bertrand Chenal
+ (C) 2008-2009 B2CK SPRL
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
commit f2ef99228e60ffad903816d0f07a0199255ad841
Author: Daniel Baumann <daniel at debian.org>
Date: Tue Apr 21 11:35:56 2009 +0200
Tidy rules file.
diff --git a/debian/rules b/debian/rules
index e728f01..b679ef6 100755
--- a/debian/rules
+++ b/debian/rules
@@ -16,7 +16,6 @@ install:
dh_testdir
dh_testroot
dh_prep
- dh_installdirs
python setup.py install --single-version-externally-managed --root=$(CURDIR)/debian/tryton-modules-stock-supply --install-lib /usr/share/python-support/tryton-modules-stock-supply
commit d341bcf9fd7bde4e4c4e7fe9994f9339e4add7a2
Author: Daniel Baumann <daniel at debian.org>
Date: Tue Apr 21 10:41:12 2009 +0200
Merging upstream version 1.2.0.
diff --git a/CHANGELOG b/CHANGELOG
index 2521948..d28f483 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,7 +1,5 @@
-Version 1.0.2 - 2009-03-02
-* Some bug fixes (see mercurial logs for details)
-
-Version 1.0.1 - 2008-12-01
+Version 1.2.0 - 2009-04-20
+* Bug fixes (see mercurial logs for details)
* Allow egg installation
Version 1.0.0 - 2008-11-17
diff --git a/COPYRIGHT b/COPYRIGHT
index 313ec81..4451df9 100644
--- a/COPYRIGHT
+++ b/COPYRIGHT
@@ -1,6 +1,6 @@
-Copyright (C) 2008 Cédric Krier.
-Copyright (C) 2008 Bertrand Chenal.
-Copyright (C) 2008 B2CK SPRL.
+Copyright (C) 2008-2009 Cédric Krier.
+Copyright (C) 2008-2009 Bertrand Chenal.
+Copyright (C) 2008-2009 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/INSTALL b/INSTALL
index 98218dd..3c5d515 100644
--- a/INSTALL
+++ b/INSTALL
@@ -5,7 +5,7 @@ Prerequisites
-------------
* Python 2.4 or later (http://www.python.org/)
- * trytond 0.0.x (http://www.tryton.org/)
+ * trytond 1.1.x (http://www.tryton.org/)
* trytond_party (http://www.tryton.org/)
* trytond_product (http://www.tryton.org/)
* trytond_stock (http://www.tryton.org/)
@@ -14,7 +14,7 @@ Prerequisites
Installation
------------
-Once you've downloaded and unpacked a trytond_stock_supply source release, enter the
+Once you've downloaded and unpacked the trytond_stock_supply source release, enter the
directory where the archive was unpacked, and run:
python setup.py install
diff --git a/PKG-INFO b/PKG-INFO
index 7ff831c..92f2432 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
Metadata-Version: 1.0
Name: trytond_stock_supply
-Version: 1.0.2
+Version: 1.2.0
Summary: Supply Management Module with:
- Order point
- Purchase Request
@@ -13,7 +13,7 @@ Home-page: http://www.tryton.org/
Author: B2CK
Author-email: info at b2ck.com
License: GPL-3
-Download-URL: http://downloads.tryton.org/1.0/
+Download-URL: http://downloads.tryton.org/1.2/
Description: UNKNOWN
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
diff --git a/__tryton__.py b/__tryton__.py
index d7b8ba8..b67c651 100644
--- a/__tryton__.py
+++ b/__tryton__.py
@@ -2,10 +2,11 @@
#this repository contains the full copyright notices and license terms.
{
'name': 'Stock Supply Management',
- 'name_de_DE': 'Lagerverwaltung Beschaffung',
- 'name_fr_FR': 'Gestion des approvisionnements de stock',
+ 'name_de_DE': 'Lagerverwaltung Bestellwesen',
+ 'name_es_CO': 'Gestión de pedidos de inventario',
'name_es_ES': 'Gestión de pedidos de inventario',
- 'version': '1.0.2',
+ 'name_fr_FR': 'Gestion des approvisionnements de stock',
+ 'version': '1.2.0',
'author': 'B2CK',
'email': 'info at b2ck.com',
'website': 'http://www.tryton.org/',
@@ -17,22 +18,21 @@ With schedulers:
- to generate purchase request based on order points
- to generate internal packing based on order points
''',
- 'description_de_DE': '''Beschaffungsmodul mit:
+ 'description_de_DE': '''Modul für das Bestellwesen mit:
- Bestellpunkten
- Auftragserstellung
Mit automatischer Auftragserstellung per Zeitplaner:
- - um Bestellungen auf der Basis von Bestellpunkten zu erstellen
- - um internen Versand auf der Basis von Bestellpunkten zu erstellen
+ - für Bestellungen auf der Basis von Bestellpunkten
+ - für internen Versand auf der Basis von Bestellpunkten
''',
- 'description_fr_FR': '''Module de gestion des approvisionnements avec:
- - Règles d'approvisionnement
- - Demandes d'achat
+ 'description_es_CO': '''Módulo de Administración de pedidos:
+ - Punto de Orden
+ - Solicitud de Compras
-Et les planificateurs pour générer:
- - des demandes d'achat et
- - des colisages internes
-sur base des règles d'approvisionnement
+Con agendadores para:
+ - generar solicitudes de compra basados en puntos de orden
+ - generar empaques internos basados en puntos de orden
''',
'description_es_ES': '''Módulo de Administración de pedidos:
- Punto de Orden
@@ -42,7 +42,15 @@ Con agendadores para:
- generar solicitudes de compra basados en puntos de orden
- generar empaques internos basados en puntos de orden
''',
+ 'description_fr_FR': '''Module de gestion des approvisionnements avec:
+ - Règles d'approvisionnement
+ - Demandes d'achat
+Et les planificateurs pour générer:
+ - des demandes d'achat et
+ - des colisages internes
+sur base des règles d'approvisionnement
+''',
'depends': [
'ir',
'res',
@@ -50,6 +58,7 @@ Con agendadores para:
'stock',
'purchase',
'party',
+ 'account',
],
'xml': [
'order_point.xml',
@@ -58,6 +67,7 @@ Con agendadores para:
],
'translation': [
'de_DE.csv',
+ 'es_CO.csv',
'es_ES.csv',
'fr_FR.csv',
]
diff --git a/de_DE.csv b/de_DE.csv
index 6a60db6..a083f22 100644
--- a/de_DE.csv
+++ b/de_DE.csv
@@ -1,12 +1,14 @@
type,name,res_id,src,value,fuzzy
-error,purchase.request,0,Purchase request are only created by the system.,Bestellungen werden nur durch das System erstellt,0
+error,purchase.request,0,Purchase requests are only created by the system.,Bestellvorschläge werden nur durch das System generiert!,0
error,purchase.request.create_purchase,0,Purchase price is missing for product: %s (id: %s)!,Fehlender Einkaufspreis für Artikel: %s (id: %s)!,0
-error,purchase.request.create_purchase,0,This price is necessary for creating purchase.,Dieser Preis wird für die Auftragserstellung benötigt.,0
-error,stock.order_point,0,Maximal quantity must be bigger than Minimal quantity,Maximale Anzahl muss größer als die Minimale Anzahl sein,0
+error,purchase.request.create_purchase,0,This price is necessary for creating purchase.,Dieser Preis wird für die Auftragserstellung benötigt!,0
+error,stock.order_point,0,Maximal quantity must be bigger than Minimal quantity,Die maximale Anzahl muss größer als die minimale Anzahl sein,0
error,stock.order_point,0,Only one order point is allowed for each product-location pair.,Es ist nur ein Bestellpunkt für jede Paarung Artikel-Lagerort erlaubt,0
-error,stock.order_point,0,You can not define two order point on the same product with opposite locations.,Es ist nicht möglich zwei Bestellpunkte für den selben Artikel mit gegensätzlichen Lagerorten zu definieren.,0
+error,stock.order_point,0,You can not define two order points on the same product with opposite locations.,Für einen Artikel können keine verschiedenen Bestellpunkte mit unterschiedlichen Lagerstandorten erstellt werden!,0
field,"product.product,order_points",0,Order Points,Bestellpunkte,0
field,"purchase.request,company",0,Company,Unternehmen,0
+field,"purchase.request,computed_quantity",0,Computed Quantity,Berechnete Anzahl,0
+field,"purchase.request,computed_uom",0,Computed UOM,Berechnete Maßeinheit,0
field,"purchase.request.create_purchase.ask_party,company",0,Company,Unternehmen,0
field,"purchase.request.create_purchase.ask_party,party",0,Supplier,Lieferant,0
field,"purchase.request.create_purchase.ask_party,product",0,Product,Artikel,0
@@ -19,7 +21,8 @@ field,"purchase.request,product",0,Product,Artikel,0
field,"purchase.request,purchase",0,Purchase,Bestellung,0
field,"purchase.request,purchase_date",0,Best Purchase Date,Bestes Einkaufsdatum,0
field,"purchase.request,purchase_line",0,Purchase Line,Position Bestellung,0
-field,"purchase.request,quantity",0,Quantity,Menge,0
+field,"purchase.request,quantity",0,Quantity,Anzahl,0
+field,"purchase.request,rec_name",0,Name,Name,0
field,"purchase.request,state",0,State,Status,0
field,"purchase.request,stock_level",0,Stock at Supply Date,Lagerbestand am Lieferdatum,0
field,"purchase.request,supply_date",0,Expected Supply Date,Voraussichtliches Lieferdatum,0
@@ -31,20 +34,27 @@ field,"stock.order_point,max_quantity",0,Maximal Quantity,Maximale Anzahl,0
field,"stock.order_point,min_quantity",0,Minimal Quantity,Minimale Anzahl,0
field,"stock.order_point,product",0,Product,Artikel,0
field,"stock.order_point,provisioning_location",0,Provisioning Location,Bereitstellungsort,0
+field,"stock.order_point,rec_name",0,Name,Name,0
field,"stock.order_point,storage_location",0,Storage Location,Lagerort,0
field,"stock.order_point,type",0,Type,Typ,0
+field,"stock.order_point,unit",0,Unit,Einheit,0
+field,"stock.order_point,unit_digits",0,Unit Digits,Anzahl Stellen,0
field,"stock.order_point,warehouse_location",0,Warehouse Location,Warenlager,0
model,"ir.action,name",wizard_create_purchase,Create Purchase,Auftrag erstellen,0
model,"ir.action,name",act_order_point_form,Order Points,Bestellpunkte,0
model,"ir.action,name",act_purchase_request_form,Purchase Requests,Bestellungen,0
-model,"ir.action,name",act_purchase_form,Purchases,Bestellungen,0
-model,"ir.cron,name",cron_packing_iternal,Generate Internal Packings,Erstellung Interne Lieferscheine,0
-model,"ir.cron,name",cron_generate_request,Generate Purchase Requests,Auftragserstellung,0
+model,"ir.action,name",act_purchase_form,Purchases,Einkäufe,0
+model,"ir.cron,name",cron_packing_iternal,Generate Internal Shipments,Erstellung von Internen Lieferposten,0
+model,"ir.cron,name",cron_generate_request,Generate Purchase Requests,Erstellung von Bestellvorschlägen,0
model,"ir.ui.menu,name",menu_order_point_form,Order Points,Bestellpunkte,0
model,"ir.ui.menu,name",menu_purchase_request_form,Purchase Requests,Bestellungen,0
-model,"res.group,name",group_purchase_request,Purchase Request,Auftragserstellung,0
-model,"res.user,name",user_generate_packing_internal,Cron Intenal Packing,Cron Interne Lieferscheine,0
-model,"res.user,name",user_generate_request,Cron Purchase Request,Cron Auftragserstellung,0
+model,"purchase.request.create_purchase.ask_party,name",0,Create Purchase Ask Party,Verkauf Nachfrage Partei,0
+model,"purchase.request.create_purchase.ask_term,name",0,Create Purchase Ask Term,Verkauf Nachfrage Zahlungsbedingung,0
+model,"purchase.request,name",0,Purchase Request,Verkauf Angebotsnachfrage,0
+model,"res.group,name",group_purchase_request,Purchase Request,Bestellvorschlag,0
+model,"res.user,name",user_generate_packing_internal,Cron Intenal Shipment,Cron Interne Lieferposten,0
+model,"res.user,name",user_generate_request,Cron Purchase Request,Cron Bestellvorschlag,0
+model,"stock.order_point,name",0,Order Point,Bestellpunkt,0
selection,"purchase.request,origin",0,Order Point,Bestellpunkt,0
selection,"purchase.request,state",0,Cancel,Abgebrochen,0
selection,"purchase.request,state",0,Done,Erledigt,0
@@ -52,8 +62,11 @@ selection,"purchase.request,state",0,Draft,Entwurf,0
selection,"purchase.request,state",0,Purchased,Bestellt,0
selection,"stock.order_point,type",0,Internal,Intern,0
selection,"stock.order_point,type",0,Purchase,Bestellung,0
+view,purchase.request,0,Product Info,Info Artikel,0
view,purchase.request,0,Purchase Request,Bestellung,0
view,purchase.request,0,Purchase Requests,Bestellungen,0
+view,purchase.request,0,supply Info,Info Lieferant,0
+view,purchase.request,0,Supply Info,Info,0
view,purchase.request.create_purchase.ask_party,0,,,0
view,purchase.request.create_purchase.ask_party,0,Create Purchase: Missing Supplier,Auftrag erstellen: Fehlender Lieferant,0
view,purchase.request.create_purchase.ask_term,0,Create Purchase: Missing Payment Term,Auftrag erstellen: Fehlende Zahlungsbedingung,0
diff --git a/doc/index.rst b/doc/index.rst
index a9ca03b..48cfd7d 100644
--- a/doc/index.rst
+++ b/doc/index.rst
@@ -63,4 +63,7 @@ can be:
purchase request.
The internal packings and purchase requests are created by schedulers
-with respect to stock levels and existing packings and requests.
+with respect to stock levels and existing packings and requests. The
+stock levels are computed between the next two supply dates. If the
+stock level of a product without order point on the given warehouse is
+below zero, a purchase request is also created.
diff --git a/es_ES.csv b/es_CO.csv
similarity index 68%
copy from es_ES.csv
copy to es_CO.csv
index 1a37578..e7b57ad 100644
--- a/es_ES.csv
+++ b/es_CO.csv
@@ -1,10 +1,14 @@
type,name,res_id,src,value,fuzzy
-error,purchase.request,0,Purchase request are only created by the system.,Las solicitudes de compra las crea únicamente el sistema.,0
+error,purchase.request,0,Purchase requests are only created by the system.,Los requisitos de compras son creados por el sistema únicamente.,0
+error,purchase.request.create_purchase,0,Purchase price is missing for product: %s (id: %s)!,El precio de compra falta para el producto: %s (id: %s)!,0
+error,purchase.request.create_purchase,0,This price is necessary for creating purchase.,Este precio se necesita para creación de compras.,0
error,stock.order_point,0,Maximal quantity must be bigger than Minimal quantity,La cantidad máxima debe ser mayor que la Cantidad Mínima,0
error,stock.order_point,0,Only one order point is allowed for each product-location pair.,Solamente se admite un punto de orden para cada par cliente-producto.,0
-error,stock.order_point,0,You can not define two order point on the same product with opposite locations.,No puede definir dos puntos de orden del mismo producto con lugares opuestos.,0
+error,stock.order_point,0,You can not define two order points on the same product with opposite locations.,No puede definir dos puntos de orden con lugares opuestos.,0
field,"product.product,order_points",0,Order Points,Puntos de Orden,0
field,"purchase.request,company",0,Company,Compañía,0
+field,"purchase.request,computed_quantity",0,Computed Quantity,Calcule Cantidad,0
+field,"purchase.request,computed_uom",0,Computed UOM,Calcule UOM,0
field,"purchase.request.create_purchase.ask_party,company",0,Company,Compañía,0
field,"purchase.request.create_purchase.ask_party,party",0,Supplier,Proveedor,0
field,"purchase.request.create_purchase.ask_party,product",0,Product,Producto,0
@@ -18,6 +22,7 @@ field,"purchase.request,purchase",0,Purchase,Compra,0
field,"purchase.request,purchase_date",0,Best Purchase Date,Mejor Fecha de Compra,0
field,"purchase.request,purchase_line",0,Purchase Line,Línea de Compra,0
field,"purchase.request,quantity",0,Quantity,Cantidad,0
+field,"purchase.request,rec_name",0,Name,Nombre,0
field,"purchase.request,state",0,State,Estado,0
field,"purchase.request,stock_level",0,Stock at Supply Date,Almacenar al Momento en la fecha de abastecimiento,0
field,"purchase.request,supply_date",0,Expected Supply Date,Fecha Esperada de Abastecimiento,0
@@ -29,15 +34,27 @@ field,"stock.order_point,max_quantity",0,Maximal Quantity,Cantidad Máxima,0
field,"stock.order_point,min_quantity",0,Minimal Quantity,Cantidad Mínima,0
field,"stock.order_point,product",0,Product,Producto,0
field,"stock.order_point,provisioning_location",0,Provisioning Location,Lugar de Aprovisionamiento,0
+field,"stock.order_point,rec_name",0,Name,Nombre,0
field,"stock.order_point,storage_location",0,Storage Location,Lugar de almacenamiento,0
field,"stock.order_point,type",0,Type,Tipo,0
+field,"stock.order_point,unit",0,Unit,Unidad,0
+field,"stock.order_point,unit_digits",0,Unit Digits,Dígitos de Unidad,0
field,"stock.order_point,warehouse_location",0,Warehouse Location,Lugar de la bodega,0
model,"ir.action,name",wizard_create_purchase,Create Purchase,Crear Compra,0
model,"ir.action,name",act_order_point_form,Order Points,Puntos de Orden,0
model,"ir.action,name",act_purchase_request_form,Purchase Requests,Solicitudes de Compra,0
model,"ir.action,name",act_purchase_form,Purchases,Compras,0
+model,"ir.cron,name",cron_packing_iternal,Generate Internal Shipments,Genere Envío Interno,0
+model,"ir.cron,name",cron_generate_request,Generate Purchase Requests,Genere Requisito de Compra,0
model,"ir.ui.menu,name",menu_order_point_form,Order Points,Puntos de Orden,0
model,"ir.ui.menu,name",menu_purchase_request_form,Purchase Requests,Solicitudes de Compra,0
+model,"purchase.request.create_purchase.ask_party,name",0,Create Purchase Ask Party,Crea Pregunta a Tercero de Compra,0
+model,"purchase.request.create_purchase.ask_term,name",0,Create Purchase Ask Term,Crea Pregunta a Tercero de Término,0
+model,"purchase.request,name",0,Purchase Request,Solicitud de Compra,0
+model,"res.group,name",group_purchase_request,Purchase Request,Solicitud de Compra,0
+model,"res.user,name",user_generate_packing_internal,Cron Intenal Shipment,Cron Envío Interno,0
+model,"res.user,name",user_generate_request,Cron Purchase Request,Cron Requisito de Compra,0
+model,"stock.order_point,name",0,Order Point,Punto de Orden,0
selection,"purchase.request,origin",0,Order Point,Punto de Orden,0
selection,"purchase.request,state",0,Cancel,Cancelar,0
selection,"purchase.request,state",0,Done,Hecho,0
@@ -45,8 +62,10 @@ selection,"purchase.request,state",0,Draft,Borrador,0
selection,"purchase.request,state",0,Purchased,Comprado,0
selection,"stock.order_point,type",0,Internal,Intern@,0
selection,"stock.order_point,type",0,Purchase,Compra,0
+view,purchase.request,0,Product Info,Información de Producto,0
view,purchase.request,0,Purchase Request,Solicitud de Compra,0
view,purchase.request,0,Purchase Requests,Solicitudes de Compra,0
+view,purchase.request,0,Supply Info,Información de proveedor,0
view,purchase.request.create_purchase.ask_party,0,Create Purchase: Missing Supplier,Crear Compra: Sin Proveedor,0
view,purchase.request.create_purchase.ask_term,0,Create Purchase: Missing Payment Term,Crear Compra: Sin Término de Pago,0
view,stock.order_point,0,Locations,Lugares,0
diff --git a/es_ES.csv b/es_ES.csv
index 1a37578..6337910 100644
--- a/es_ES.csv
+++ b/es_ES.csv
@@ -1,58 +1,77 @@
type,name,res_id,src,value,fuzzy
-error,purchase.request,0,Purchase request are only created by the system.,Las solicitudes de compra las crea únicamente el sistema.,0
-error,stock.order_point,0,Maximal quantity must be bigger than Minimal quantity,La cantidad máxima debe ser mayor que la Cantidad Mínima,0
+error,purchase.request,0,Purchase requests are only created by the system.,Los requisitos de compras son creados por el sistema únicamente.,0
+error,purchase.request.create_purchase,0,Purchase price is missing for product: %s (id: %s)!,El precio de compra falta para el producto: %s (id: %s)!,0
+error,purchase.request.create_purchase,0,This price is necessary for creating purchase.,Este precio se necesita para creación de compras.,0
+error,stock.order_point,0,Maximal quantity must be bigger than Minimal quantity,La cantidad máxima debe ser mayor que la mínima,0
error,stock.order_point,0,Only one order point is allowed for each product-location pair.,Solamente se admite un punto de orden para cada par cliente-producto.,0
-error,stock.order_point,0,You can not define two order point on the same product with opposite locations.,No puede definir dos puntos de orden del mismo producto con lugares opuestos.,0
-field,"product.product,order_points",0,Order Points,Puntos de Orden,0
-field,"purchase.request,company",0,Company,Compañía,0
-field,"purchase.request.create_purchase.ask_party,company",0,Company,Compañía,0
+error,stock.order_point,0,You can not define two order points on the same product with opposite locations.,No puede definir dos puntos de orden con lugares opuestos.,0
+field,"product.product,order_points",0,Order Points,Puntos de orden,0
+field,"purchase.request,company",0,Company,Empresa,0
+field,"purchase.request,computed_quantity",0,Computed Quantity,Calcule Cantidad,0
+field,"purchase.request,computed_uom",0,Computed UOM,Calcule UOM,0
+field,"purchase.request.create_purchase.ask_party,company",0,Company,Empresa,0
field,"purchase.request.create_purchase.ask_party,party",0,Supplier,Proveedor,0
field,"purchase.request.create_purchase.ask_party,product",0,Product,Producto,0
-field,"purchase.request.create_purchase.ask_term,company",0,Company,Compañía,0
+field,"purchase.request.create_purchase.ask_term,company",0,Company,Empresa,0
field,"purchase.request.create_purchase.ask_term,party",0,Supplier,Proveedor,0
-field,"purchase.request.create_purchase.ask_term,payment_term",0,Payment Term,Término de Pago,0
+field,"purchase.request.create_purchase.ask_term,payment_term",0,Payment Term,Término de pago,0
field,"purchase.request,origin",0,Origin,Origen,0
field,"purchase.request,party",0,Party,Tercero,0
field,"purchase.request,product",0,Product,Producto,0
field,"purchase.request,purchase",0,Purchase,Compra,0
-field,"purchase.request,purchase_date",0,Best Purchase Date,Mejor Fecha de Compra,0
-field,"purchase.request,purchase_line",0,Purchase Line,Línea de Compra,0
+field,"purchase.request,purchase_date",0,Best Purchase Date,Mejor fecha de compra,0
+field,"purchase.request,purchase_line",0,Purchase Line,Línea de compra,0
field,"purchase.request,quantity",0,Quantity,Cantidad,0
+field,"purchase.request,rec_name",0,Name,Nombre,0
field,"purchase.request,state",0,State,Estado,0
-field,"purchase.request,stock_level",0,Stock at Supply Date,Almacenar al Momento en la fecha de abastecimiento,0
-field,"purchase.request,supply_date",0,Expected Supply Date,Fecha Esperada de Abastecimiento,0
-field,"purchase.request,uom",0,UOM,UDM,0
-field,"purchase.request,warehouse",0,Warehouse,Depósito,0
-field,"stock.order_point,company",0,Company,Compañía,0
-field,"stock.order_point,location",0,Location,Lugar,0
-field,"stock.order_point,max_quantity",0,Maximal Quantity,Cantidad Máxima,0
-field,"stock.order_point,min_quantity",0,Minimal Quantity,Cantidad Mínima,0
+field,"purchase.request,stock_level",0,Stock at Supply Date,Existencias a la fecha del abastecimiento,0
+field,"purchase.request,supply_date",0,Expected Supply Date,Fecha estimada de abastecimiento,0
+field,"purchase.request,uom",0,UOM,UdM,0
+field,"purchase.request,warehouse",0,Warehouse,Almacén,0
+field,"stock.order_point,company",0,Company,Empresa,0
+field,"stock.order_point,location",0,Location,Ubicación,0
+field,"stock.order_point,max_quantity",0,Maximal Quantity,Cantidad máxima,0
+field,"stock.order_point,min_quantity",0,Minimal Quantity,Cantidad mínima,0
field,"stock.order_point,product",0,Product,Producto,0
-field,"stock.order_point,provisioning_location",0,Provisioning Location,Lugar de Aprovisionamiento,0
-field,"stock.order_point,storage_location",0,Storage Location,Lugar de almacenamiento,0
+field,"stock.order_point,provisioning_location",0,Provisioning Location,Ubicación del aprovisionamiento,0
+field,"stock.order_point,rec_name",0,Name,Nombre,0
+field,"stock.order_point,storage_location",0,Storage Location,Ubicación del almacén,0
field,"stock.order_point,type",0,Type,Tipo,0
-field,"stock.order_point,warehouse_location",0,Warehouse Location,Lugar de la bodega,0
-model,"ir.action,name",wizard_create_purchase,Create Purchase,Crear Compra,0
-model,"ir.action,name",act_order_point_form,Order Points,Puntos de Orden,0
-model,"ir.action,name",act_purchase_request_form,Purchase Requests,Solicitudes de Compra,0
+field,"stock.order_point,unit",0,Unit,Unidad,0
+field,"stock.order_point,unit_digits",0,Unit Digits,Dígitos de Unidad,0
+field,"stock.order_point,warehouse_location",0,Warehouse Location,Ubicación del almacén,0
+model,"ir.action,name",wizard_create_purchase,Create Purchase,Crear compra,0
+model,"ir.action,name",act_order_point_form,Order Points,Puntos de orden,0
+model,"ir.action,name",act_purchase_request_form,Purchase Requests,Solicitudes de compra,0
model,"ir.action,name",act_purchase_form,Purchases,Compras,0
-model,"ir.ui.menu,name",menu_order_point_form,Order Points,Puntos de Orden,0
-model,"ir.ui.menu,name",menu_purchase_request_form,Purchase Requests,Solicitudes de Compra,0
-selection,"purchase.request,origin",0,Order Point,Punto de Orden,0
+model,"ir.cron,name",cron_packing_iternal,Generate Internal Shipments,Genere Envío Interno,0
+model,"ir.cron,name",cron_generate_request,Generate Purchase Requests,Genere Requisito de Compra,0
+model,"ir.ui.menu,name",menu_order_point_form,Order Points,Puntos de orden,0
+model,"ir.ui.menu,name",menu_purchase_request_form,Purchase Requests,Solicitudes de compra,0
+model,"purchase.request.create_purchase.ask_party,name",0,Create Purchase Ask Party,Crea Pregunta a Tercero de Compra,0
+model,"purchase.request.create_purchase.ask_term,name",0,Create Purchase Ask Term,Crea Pregunta a Tercero de Término,0
+model,"purchase.request,name",0,Purchase Request,Solicitud de Compra,0
+model,"res.group,name",group_purchase_request,Purchase Request,Solicitud de Compra,0
+model,"res.user,name",user_generate_packing_internal,Cron Intenal Shipment,Cron Envío Interno,0
+model,"res.user,name",user_generate_request,Cron Purchase Request,Cron Requisito de Compra,0
+model,"stock.order_point,name",0,Order Point,Punto de Orden,0
+selection,"purchase.request,origin",0,Order Point,Punto de orden,0
selection,"purchase.request,state",0,Cancel,Cancelar,0
selection,"purchase.request,state",0,Done,Hecho,0
selection,"purchase.request,state",0,Draft,Borrador,0
selection,"purchase.request,state",0,Purchased,Comprado,0
-selection,"stock.order_point,type",0,Internal,Intern@,0
+selection,"stock.order_point,type",0,Internal,Interno,0
selection,"stock.order_point,type",0,Purchase,Compra,0
-view,purchase.request,0,Purchase Request,Solicitud de Compra,0
-view,purchase.request,0,Purchase Requests,Solicitudes de Compra,0
-view,purchase.request.create_purchase.ask_party,0,Create Purchase: Missing Supplier,Crear Compra: Sin Proveedor,0
-view,purchase.request.create_purchase.ask_term,0,Create Purchase: Missing Payment Term,Crear Compra: Sin Término de Pago,0
-view,stock.order_point,0,Locations,Lugares,0
-view,stock.order_point,0,Order Point,Punto de Orden,0
-view,stock.order_point,0,Order Point Type,Tipo de Punto de Orden,0
-view,stock.order_point,0,Product Info,Información de Producto,0
+view,purchase.request,0,Product Info,Información de Producto,0
+view,purchase.request,0,Purchase Request,Solicitud de compra,0
+view,purchase.request,0,Purchase Requests,Solicitudes de compra,0
+view,purchase.request,0,Supply Info,Información de proveedor,0
+view,purchase.request.create_purchase.ask_party,0,Create Purchase: Missing Supplier,Crear compra: sin proveedor,0
+view,purchase.request.create_purchase.ask_term,0,Create Purchase: Missing Payment Term,Crear compra: sin término de pago,0
+view,stock.order_point,0,Locations,Ubicaciones,0
+view,stock.order_point,0,Order Point,Punto de orden,0
+view,stock.order_point,0,Order Point Type,Tipo de punto de orden,0
+view,stock.order_point,0,Product Info,Información del producto,0
wizard_button,"purchase.request.create_purchase,ask_user_party,end",0,Cancel,Cancelar,0
wizard_button,"purchase.request.create_purchase,ask_user_party,init",0,Continue,Continuar,0
wizard_button,"purchase.request.create_purchase,ask_user_term,end",0,Cancel,Cancelar,0
diff --git a/fr_FR.csv b/fr_FR.csv
index 559f806..94c3ae5 100644
--- a/fr_FR.csv
+++ b/fr_FR.csv
@@ -1,16 +1,18 @@
type,name,res_id,src,value,fuzzy
-error,purchase.request,0,Purchase request are only created by the system.,Les demandes d'achat sont uniquement créées par le sytème,0
-error,purchase.request.create_purchase,0,Purchase price is missing for product: %s (id: %s)!,Le prix d'achat en absent pour le produit : %s (id: %s) !,0
+error,purchase.request,0,Purchase requests are only created by the system.,Les demandes d'achat sont uniquement crées par le sytème,0
+error,purchase.request.create_purchase,0,Purchase price is missing for product: %s (id: %s)!,Le prix d'achat est absent pour le produit : %s (id: %s) !,0
error,purchase.request.create_purchase,0,This price is necessary for creating purchase.,Ce prix est nécessaire pour créer les achats.,0
error,stock.order_point,0,Maximal quantity must be bigger than Minimal quantity,La Quantité maximale doit être supérieure à la quantité minimale,0
error,stock.order_point,0,Only one order point is allowed for each product-location pair.,Une seule règle d'approvisionnement est autorisée par paire produit-emplacement,0
-error,stock.order_point,0,You can not define two order point on the same product with opposite locations.,Vous ne pouvez pas définir deux règles d'approvisionnement sur le même produit avec des emplacement opposés,0
+error,stock.order_point,0,You can not define two order points on the same product with opposite locations.,Vous ne pouvez pas définir deux règles d'approvisionnement sur le même produit avec des emplacement opposés,0
field,"product.product,order_points",0,Order Points,Règles d'approvisionnements,0
-field,"purchase.request,company",0,Company,Companie,0
-field,"purchase.request.create_purchase.ask_party,company",0,Company,Companie,0
+field,"purchase.request,company",0,Company,Société,0
+field,"purchase.request,computed_quantity",0,Computed Quantity,Quantité calculée,0
+field,"purchase.request,computed_uom",0,Computed UOM,UDM calculée,0
+field,"purchase.request.create_purchase.ask_party,company",0,Company,Société,0
field,"purchase.request.create_purchase.ask_party,party",0,Supplier,Fournisseur,0
field,"purchase.request.create_purchase.ask_party,product",0,Product,Produit,0
-field,"purchase.request.create_purchase.ask_term,company",0,Company,Companie,0
+field,"purchase.request.create_purchase.ask_term,company",0,Company,Société,0
field,"purchase.request.create_purchase.ask_term,party",0,Supplier,Fournisseur,0
field,"purchase.request.create_purchase.ask_term,payment_term",0,Payment Term,Condition de paiement,0
field,"purchase.request,origin",0,Origin,Origine,0
@@ -20,26 +22,39 @@ field,"purchase.request,purchase",0,Purchase,Achat,0
field,"purchase.request,purchase_date",0,Best Purchase Date,Meilleur date d'achat,0
field,"purchase.request,purchase_line",0,Purchase Line,Ligne d'achat,0
field,"purchase.request,quantity",0,Quantity,Quantité,0
+field,"purchase.request,rec_name",0,Name,Nom,0
field,"purchase.request,state",0,State,État,0
field,"purchase.request,stock_level",0,Stock at Supply Date,Stock à la date de livraison,0
field,"purchase.request,supply_date",0,Expected Supply Date,Date de livraison attendue,0
field,"purchase.request,uom",0,UOM,UDM,0
field,"purchase.request,warehouse",0,Warehouse,Entrepôt,0
-field,"stock.order_point,company",0,Company,Companie,0
+field,"stock.order_point,company",0,Company,Société,0
field,"stock.order_point,location",0,Location,Emplacement,0
field,"stock.order_point,max_quantity",0,Maximal Quantity,Quantité maximale,0
field,"stock.order_point,min_quantity",0,Minimal Quantity,Quantité minimale,0
field,"stock.order_point,product",0,Product,Produit,0
field,"stock.order_point,provisioning_location",0,Provisioning Location,Emplacement d'appro.,0
-field,"stock.order_point,storage_location",0,Storage Location,Magasin,0
+field,"stock.order_point,rec_name",0,Name,Nom,0
+field,"stock.order_point,storage_location",0,Storage Location,Emplacement de stockage,0
field,"stock.order_point,type",0,Type,Type,0
+field,"stock.order_point,unit",0,Unit,Unité,0
+field,"stock.order_point,unit_digits",0,Unit Digits,Décimales de l'unité,0
field,"stock.order_point,warehouse_location",0,Warehouse Location,Entrepôt,0
model,"ir.action,name",wizard_create_purchase,Create Purchase,Créer achat,0
model,"ir.action,name",act_order_point_form,Order Points,Règles d'approvisionnement,0
model,"ir.action,name",act_purchase_request_form,Purchase Requests,Demandes d'achat,0
model,"ir.action,name",act_purchase_form,Purchases,Achats,0
+model,"ir.cron,name",cron_packing_iternal,Generate Internal Shipments,Générer les expéditions internes,0
+model,"ir.cron,name",cron_generate_request,Generate Purchase Requests,Générer les demandes d'achat,0
model,"ir.ui.menu,name",menu_order_point_form,Order Points,Règles d'approvisionnement,0
model,"ir.ui.menu,name",menu_purchase_request_form,Purchase Requests,Demandes d'achat,0
+model,"purchase.request.create_purchase.ask_party,name",0,Create Purchase Ask Party,Créer l'achat - Demande de tiers,0
+model,"purchase.request.create_purchase.ask_term,name",0,Create Purchase Ask Term,Créer l'achat - Demande de condition de paiment,0
+model,"purchase.request,name",0,Purchase Request,Demande d'achat,0
+model,"res.group,name",group_purchase_request,Purchase Request,Demande d'achat,0
+model,"res.user,name",user_generate_packing_internal,Cron Intenal Shipment,Cron expédition interne,0
+model,"res.user,name",user_generate_request,Cron Purchase Request,Cron Demande d'achat,0
+model,"stock.order_point,name",0,Order Point,Règle d'approvisionnement,0
selection,"purchase.request,origin",0,Order Point,Règle d'approvisionnement,0
selection,"purchase.request,state",0,Cancel,Annulé,0
selection,"purchase.request,state",0,Done,Fait,0
@@ -47,10 +62,12 @@ selection,"purchase.request,state",0,Draft,Brouillon,0
selection,"purchase.request,state",0,Purchased,Commandé,0
selection,"stock.order_point,type",0,Internal,Interne,0
selection,"stock.order_point,type",0,Purchase,Achat,0
+view,purchase.request,0,Product Info,Info produit,0
view,purchase.request,0,Purchase Request,Demande d'achat,0
view,purchase.request,0,Purchase Requests,Demandes d'achat,0
-view,purchase.request.create_purchase.ask_party,0,Create Purchase: Missing Supplier,Creation de la comande: fournisseur absent,0
-view,purchase.request.create_purchase.ask_term,0,Create Purchase: Missing Payment Term,Creation de la comande: règle d'appro. absente,0
+view,purchase.request,0,Supply Info,Information d'approvisionnement,0
+view,purchase.request.create_purchase.ask_party,0,Create Purchase: Missing Supplier,Création de la commande: fournisseur absent,0
+view,purchase.request.create_purchase.ask_term,0,Create Purchase: Missing Payment Term,Création de la commande: règle d'appro. absente,0
view,stock.order_point,0,Locations,Emplacements,0
view,stock.order_point,0,Order Point,Règle d'approvisionnement,0
view,stock.order_point,0,Order Point Type,Type de Règle d'approvisionnement,0
diff --git a/order_point.py b/order_point.py
index c3ad04e..2472908 100644
--- a/order_point.py
+++ b/order_point.py
@@ -1,10 +1,10 @@
#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 trytond.osv import fields, OSV
-from trytond.wizard import Wizard, WizardOSV
+from trytond.model import ModelView, ModelSQL, fields
+from trytond.wizard import Wizard
-class OrderPoint(OSV):
+class OrderPoint(ModelSQL, ModelView):
"""
Order Point: Provide a way to define a supply policy for each
product on each locations. Order points on warehouse are
@@ -16,7 +16,8 @@ class OrderPoint(OSV):
product = fields.Many2One(
'product.product', 'Product', required=True, select=1,
domain="[('type', '=', 'stockable'), ('purchasable', 'in', " \
- "type == 'purchase' and [True] or [True, False])]")
+ "type == 'purchase' and [True] or [True, False])]",
+ on_change=['product'])
warehouse_location = fields.Many2One(
'stock.location', 'Warehouse Location', select=1,
domain="[('type', '=', 'warehouse')]",
@@ -39,9 +40,16 @@ class OrderPoint(OSV):
[('internal', 'Internal'),
('purchase', 'Purchase')],
'Type', select=1, required=True)
- min_quantity = fields.Float('Minimal Quantity', required=True)
- max_quantity = fields.Float('Maximal Quantity', required=True)
- company = fields.Many2One('company.company', 'Company', required=True)
+ min_quantity = fields.Float('Minimal Quantity', required=True,
+ digits="(16, unit_digits)", depends=['unit_digits'])
+ max_quantity = fields.Float('Maximal Quantity', required=True,
+ digits="(16, unit_digits)", depends=['unit_digits'])
+ company = fields.Many2One('company.company', 'Company', required=True,
+ domain="[('id', '=', context.get('company', 0))]")
+ unit = fields.Function('get_unit', type='many2one', relation='product.uom',
+ string='Unit')
+ unit_digits = fields.Function('get_unit_digits', type='integer',
+ string='Unit Digits')
def __init__(self):
super(OrderPoint, self).__init__()
@@ -57,12 +65,39 @@ class OrderPoint(OSV):
self._error_messages.update(
{'unique_op': 'Only one order point is allowed '\
'for each product-location pair.',
- 'concurrent_internal_op': 'You can not define two order point '\
+ 'concurrent_internal_op': 'You can not define two order points '\
'on the same product with opposite locations.',})
def default_type(self, cursor, user, context=None):
return "purchase"
+ def on_change_product(self, cursor, user, ids, vals, context=None):
+ product_obj = self.pool.get('product.product')
+ res = {
+ 'unit': False,
+ 'unit.rec_name': '',
+ 'unit_digits': 2,
+ }
+ if vals.get('product'):
+ product = product_obj.browse(cursor, user, vals['product'],
+ context=context)
+ res['unit'] = product.default_uom.id
+ res['unit.rec_name'] = product.default_uom.rec_name
+ res['unit_digits'] = product.default_uom.digits
+ return res
+
+ def get_unit(self, cursor, user, ids, name, arg, context=None):
+ res = {}
+ for order in self.browse(cursor, user, ids, context=context):
+ res[order.id] = order.product.default_uom.id
+ return res
+
+ def get_unit_digits(self, cursor, user, ids, name, arg, context=None):
+ res = {}
+ for order in self.browse(cursor, user, ids, context=context):
+ res[order.id] = order.product.default_uom.digits
+ return res
+
def check_concurrent_internal(self, cursor, user, ids):
"""
Ensure that there is no 'concurrent' internal order
@@ -111,32 +146,26 @@ class OrderPoint(OSV):
ids = self.search(cursor, user, query)
return not bool(ids)
- def name_get(self, cursor, user, ids, context=None):
+ def get_rec_name(self, cursor, user, ids, name, arg, context=None):
if not ids:
- return []
+ return {}
if isinstance(ids, (int, long)):
ids = [ids]
- res = []
+ res = {}
for op in self.browse(cursor, user, ids, context=context):
- res.append((op.id, "%s@%s" % (op.product.name, op.location.name)))
+ res[op.id] = "%s@%s" % (op.product.name, op.location.name)
return res
- def name_search(self, cursor, user, name='', args=None, operator='ilike',
- context=None, limit=None):
- if not args:
- args=[]
- names = name.split('@', 1)
- query = ['AND', ('product.template.name', operator, names[0]), args]
- if len(names) == 1 or not names[1]:
- ids = self.search( cursor, user, query, limit=limit, context=context)
- else:
- location_args = self.search_location(
- cursor, user, 'location', [('location', operator, names[1])],
- context=context)
- ids = self.search(
- cursor, user, ['AND', query, location_args], limit=limit,
- context=context)
- return self.name_get(cursor, user, ids, context)
+ def search_rec_name(self, cursor, user, name, args, context=None):
+ args2 = []
+ i = 0
+ while i < len(args):
+ names = args[i][2].split('@', 1)
+ args2.append(('product.template.name', args[i][1], names[0]))
+ if len(names) != 1 and names[1]:
+ args2.append(('location', args[i][1], names[1]))
+ i += 1
+ return args2
def get_location(self, cursor, user, ids, name, args, context=None):
location_obj = self.pool.get('stock.location')
@@ -148,12 +177,6 @@ class OrderPoint(OSV):
res[op.id] = op.storage_location.id
else:
res[op.id] = False
- loc_id2name = dict(location_obj.name_get(
- cursor, user, [i for i in res.itervalues() if i]))
-
- for op_id, loc_id in res.iteritems():
- if loc_id in loc_id2name:
- res[op_id] = (loc_id, loc_id2name[loc_id])
return res
def search_location(self, cursor, user, name, domain=None, context=None):
@@ -170,8 +193,7 @@ class OrderPoint(OSV):
if context is None:
context = {}
if context.get('company'):
- return company_obj.name_get(cursor, user, context['company'],
- context=context)[0]
+ return context['company']
return False
OrderPoint()
diff --git a/order_point.xml b/order_point.xml
index cf0ea8d..827f16b 100644
--- a/order_point.xml
+++ b/order_point.xml
@@ -8,17 +8,22 @@ this repository contains the full copyright notices and license terms. -->
<field name="type">form</field>
<field name="arch" type="xml">
<![CDATA[
- <form string="Order Point">
- <separator string="Product Info" colspan="4"/>
- <label name="product"/>
- <field name="product"/>
+ <form string="Order Point" cursor="product">
+ <separator string="Product Info" colspan="4"
+ id="info"/>
<label name="company"/>
<field name="company"/>
+ <newline/>
+ <label name="product"/>
+ <field name="product"/>
+ <label name="unit"/>
+ <field name="unit"/>
<label name="min_quantity"/>
<field name="min_quantity"/>
<label name="max_quantity"/>
<field name="max_quantity"/>
- <separator string="Order Point Type" colspan="4"/>
+ <separator string="Order Point Type" colspan="4"
+ id="type"/>
<label name="type"/>
<field name="type"/>
<newline/>
@@ -44,6 +49,7 @@ this repository contains the full copyright notices and license terms. -->
<field name="company"/>
<field name="min_quantity" select="2"/>
<field name="max_quantity" select="2"/>
+ <field name="unit"/>
</tree>
]]>
</field>
diff --git a/packing.py b/packing.py
index c659b1b..6a47d9f 100644
--- a/packing.py
+++ b/packing.py
@@ -1,9 +1,9 @@
#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 trytond.osv import fields, OSV
+from trytond.model import ModelView, ModelSQL
-class PackingInternal(OSV):
+class PackingInternal(ModelSQL, ModelView):
_name = 'stock.packing.internal'
def generate_internal_packing(self, cursor, user, context=None):
diff --git a/packing.xml b/packing.xml
index f018ea4..cfafa1d 100644
--- a/packing.xml
+++ b/packing.xml
@@ -4,13 +4,13 @@
<data>
<record model="res.user" id="user_generate_packing_internal">
<field name="login">user_cron_internal_packing</field>
- <field name="name">Cron Intenal Packing</field>
+ <field name="name">Cron Intenal Shipment</field>
<field name="groups" eval="[('add', ref('stock.group_stock'))]"/>
<field name="signature"></field>
</record>
<record model="ir.cron" id="cron_packing_iternal">
- <field name="name">Generate Internal Packings</field>
+ <field name="name">Generate Internal Shipments</field>
<field name="request_user" ref="res.user_admin"/>
<field name="user" ref="user_generate_packing_internal"/>
<field name="active" eval="True"/>
diff --git a/product.py b/product.py
index 630e911..e1d2a41 100644
--- a/product.py
+++ b/product.py
@@ -1,9 +1,10 @@
-#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 trytond.osv import fields, OSV
+#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 trytond.model import ModelView, ModelSQL, fields
import datetime
-class Product(OSV):
+class Product(ModelSQL, ModelView):
_name = "product.product"
order_points = fields.One2Many(
diff --git a/purchase_request.py b/purchase_request.py
index 6a4aa1a..5bc704d 100644
--- a/purchase_request.py
+++ b/purchase_request.py
@@ -1,33 +1,36 @@
#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 trytond.osv import fields, OSV
-from trytond.wizard import Wizard, WizardOSV
+from trytond.model import ModelView, ModelSQL, fields
+from trytond.wizard import Wizard
import datetime
-class PurchaseRequest(OSV):
+class PurchaseRequest(ModelSQL, ModelView):
'Purchase Request'
_name = 'purchase.request'
_description = __doc__
product = fields.Many2One(
- 'product.product', 'Product', required=True, select=1, readonly=True)
+ 'product.product', 'Product', required=True, select=1, readonly=True,
+ domain=[('purchasable', '=', True)])
party = fields.Many2One('party.party', 'Party', select=1)
quantity = fields.Float('Quantity', required=True)
uom = fields.Many2One('product.uom', 'UOM', required=True, select=1)
+ computed_quantity = fields.Float('Computed Quantity', readonly=True)
+ computed_uom = fields.Many2One('product.uom', 'Computed UOM', readonly=True)
purchase_date = fields.Date('Best Purchase Date', readonly=True)
supply_date = fields.Date('Expected Supply Date', readonly=True)
stock_level = fields.Float('Stock at Supply Date', readonly=True)
warehouse = fields.Many2One(
'stock.location', "Warehouse", required=True,
- domain="[('type', '=', 'warehouse')]", readonly=True)
+ domain=[('type', '=', 'warehouse')], readonly=True)
purchase_line = fields.Many2One(
'purchase.line', 'Purchase Line',readonly=True)
purchase = fields.Function(
'get_purchase', type='many2one', relation='purchase.purchase',
string='Purchase')
- company = fields.Many2One(
- 'company.company', 'Company', required=True, readonly=True)
+ company = fields.Many2One('company.company', 'Company', required=True,
+ readonly=True, domain="[('id', '=', context.get('company', 0))]")
origin = fields.Reference('Origin', selection='origin_get', readonly=True,
required=True)
state = fields.Function(
@@ -42,59 +45,45 @@ class PurchaseRequest(OSV):
super(PurchaseRequest, self).__init__()
self._order[0] = ('id', 'DESC')
self._error_messages.update({
- 'create_request': 'Purchase request are only created by the system.',
+ 'create_request': 'Purchase requests are only created by the system.',
})
- def name_get(self, cursor, user, ids, context=None):
+ def get_rec_name(self, cursor, user, ids, name, arg, context=None):
if isinstance(ids, (int, long)):
ids = [ids]
- res = []
+ res = {}
for pr in self.browse(cursor, user, ids, context=context):
- res.append((pr.id, "%s@%s" % (pr.product.name, pr.warehouse.name)))
+ res[pr.id] = "%s@%s" % (pr.product.name, pr.warehouse.name)
return res
- def name_search(self, cursor, user, name='', args=None, operator='ilike',
- context=None, limit=None):
- if not args:
- args=[]
- names = name.split('@',1)
- query = ['AND', ('product.template.name', operator, names[0]), args]
- if len(names) == 1 or not names[1]:
- ids = self.search( cursor, user, query, limit=limit, context=context)
- else:
- warehouse_arg = [('warehouse', operator, names[1])]
- ids = self.search(
- cursor, user, query + warehouse_arg, limit=limit, context=context)
- return self.name_get(cursor, user, ids, context)
+ def search_rec_name(self, cursor, user, name, args, context=None):
+ args2 = []
+ i = 0
+ while i < len(args):
+ names = args[i][2].split('@', 1)
+ args2.append(('product.template.name', args[i][1], names[0]))
+ if len(names) != 1 and names[1]:
+ args2.append(('warehouse', args[i][1], names[1]))
+ i += 1
+ return args2
def default_company(self, cursor, user, context=None):
company_obj = self.pool.get('company.company')
if context is None:
context = {}
if context.get('company'):
- return company_obj.name_get(cursor, user, context['company'],
- context=context)[0]
+ return context['company']
return False
def get_purchase(self, cursor, user, ids, name, args, context=None):
res = {}
- purchase_obj = self.pool.get('purchase.purchase')
- purchase_ids = set()
requests = self.browse(cursor, user, ids, context=context)
for request in requests:
if request.purchase_line:
- purchase_ids.add(request.purchase_line.purchase.id)
- purchase_names = dict(purchase_obj.name_get(
- cursor, user, purchase_ids, context=context))
-
- for request in requests:
- if request.purchase_line:
- pid = request.purchase_line.purchase.id
- res[request.id] = (pid, purchase_names[pid])
+ res[request.id] = request.purchase_line.purchase.id
else:
res[request.id] = False
-
return res
def get_state(self, cursor, user, ids, name, args, context=None):
@@ -148,7 +137,9 @@ class PurchaseRequest(OSV):
# fetch stockable products
product_ids = product_obj.search(
- cursor, user, [('type', '=', 'stockable')], context=context)
+ cursor, user,
+ [('type', '=', 'stockable'), ('purchasable', '=', True)],
+ context=context)
#aggregate product by minimum supply date
date2products = {}
for product in product_obj.browse(cursor, user, product_ids,
@@ -164,7 +155,8 @@ class PurchaseRequest(OSV):
for min_date in date2products:
product_ids = [x[0].id for x in date2products[min_date]]
local_context.update(
- {'stock_date_end': min_date or datetime.date.max})
+ {'stock_date_end': min_date or datetime.date.max,
+ 'stock_skip_warehouse': True})
pbl = product_obj.products_by_location(
cursor, user, warehouse_ids, product_ids, with_childs=True,
skip_zero=False, context=local_context)
@@ -186,12 +178,30 @@ class PurchaseRequest(OSV):
product_quantity, company, order_point, context=context)
new_requests.append(request_val)
+ new_requests = self.compare_requests(
+ cursor, user, new_requests, context=context)
+
self.create_requests(cursor, user, new_requests, context=context)
return {}
def create_requests(self, cursor, user, new_requests, context=None):
+ request_obj = self.pool.get('purchase.request')
+
+ for new_req in new_requests:
+ if new_req['supply_date'] == datetime.date.max:
+ new_req['supply_date'] = None
+ if new_req['quantity'] > 0.0:
+ new_req.update({'product': new_req['product'].id,
+ 'party': new_req['party'] and new_req['party'].id,
+ 'uom': new_req['uom'].id,
+ 'computed_uom': new_req['computed_uom'].id,
+ 'company': new_req['company'].id
+ })
+ request_obj.create(cursor, user, new_req, context=context)
+
+ def compare_requests(self, cursor, user, new_requests, context=None):
"""
- Compare new_requests with already existing request and avoid
+ Compare new_requests with already existing request to avoid
to re-create existing requests.
"""
# delete purchase request without a purchase line
@@ -251,6 +261,7 @@ class PurchaseRequest(OSV):
cursor, user, old_req['uom'], old_req['quantity'],
new_req['uom'], context=context)
new_req['quantity'] = max(0.0, new_req['quantity'] - quantity)
+ new_req['computed_quantity'] = new_req['quantity']
old_req['quantity'] = uom_obj.compute_qty(
cursor, user, new_req['uom'],
max(0.0, quantity - new_req['quantity']),
@@ -258,17 +269,7 @@ class PurchaseRequest(OSV):
else:
break
- # Create new request
- for new_req in new_requests:
- if new_req['supply_date'] == datetime.date.max:
- new_req['supply_date'] = None
- if new_req['quantity'] > 0.0:
- new_req.update({'product': new_req['product'].id,
- 'party': new_req['party'] and new_req['party'].id,
- 'uom': new_req['uom'].id,
- 'company': new_req['company'].id
- })
- request_obj.create(cursor, user, new_req, context=context)
+ return new_requests
def get_supply_dates(self, cursor, user, product, context=None):
"""
@@ -357,6 +358,8 @@ class PurchaseRequest(OSV):
'party': supplier and supplier or None,
'quantity': quantity,
'uom': product.purchase_uom or product.default_uom,
+ 'computed_quantity': quantity,
+ 'computed_uom': product.purchase_uom or product.default_uom,
'purchase_date': purchase_date,
'supply_date': shortage_date,
'stock_level': product_quantity,
@@ -427,8 +430,10 @@ class PurchaseRequest(OSV):
PurchaseRequest()
-class CreatePurchaseAskTerm(WizardOSV):
+class CreatePurchaseAskTerm(ModelView):
+ 'Create Purchase Ask Term'
_name = 'purchase.request.create_purchase.ask_term'
+ _description = __doc__
party = fields.Many2One('party.party', 'Supplier', readonly=True)
company = fields.Many2One('company.company', 'Company', readonly=True)
payment_term = fields.Many2One(
@@ -436,8 +441,10 @@ class CreatePurchaseAskTerm(WizardOSV):
CreatePurchaseAskTerm()
-class CreatePurchaseAskParty(WizardOSV):
+class CreatePurchaseAskParty(ModelView):
+ 'Create Purchase Ask Party'
_name = 'purchase.request.create_purchase.ask_party'
+ _description = __doc__
product = fields.Many2One('product.product', 'Product', readonly=True)
company = fields.Many2One('company.company', 'Company', readonly=True)
party = fields.Many2One('party.party', 'Supplier', required=True)
@@ -613,10 +620,24 @@ class CreatePurchase(Wizard):
return 'end'
+ def _get_tax_rule_pattern(self, cursor, user, request, context=None):
+ '''
+ Get tax rule pattern
+
+ :param cursor: the database cursor
+ :param user: the user id
+ :param request: the BrowseRecord of the purchase request
+ :param context: the context
+ :return: a dictionary to use as pattern for tax rule
+ '''
+ res = {}
+ return res
def compute_purchase_line(self, cursor, user, request, context=None):
party_obj = self.pool.get('party.party')
product_obj = self.pool.get('product.product')
+ tax_rule_obj = self.pool.get('account.tax.rule')
+
line = {
'product': request.product.id,
'unit': request.uom.id,
@@ -644,10 +665,14 @@ class CreatePurchase(Wizard):
taxes = []
for tax in request.product.supplier_taxes_used:
- if 'supplier_' + tax.group.code in party_obj._columns \
- and request.party['supplier_' + tax.group.code]:
- taxes.append(
- request.party['supplier_' + tax.group.code].id)
+ if request.party and request.party.supplier_tax_rule:
+ pattern = self._get_tax_rule_pattern(cursor, user, request,
+ context=context)
+ tax_id = tax_rule_obj.apply(cursor, user,
+ request.party.supplier_tax_rule, tax, pattern,
+ context=context)
+ if tax_id:
+ taxes.append(tax_id)
continue
taxes.append(tax.id)
line['taxes'] = [('add', taxes)]
diff --git a/purchase_request.xml b/purchase_request.xml
index 5a8c326..7147f16 100644
--- a/purchase_request.xml
+++ b/purchase_request.xml
@@ -14,14 +14,22 @@ this repository contains the full copyright notices and license terms. -->
<field name="arch" type="xml">
<![CDATA[
<form string="Purchase Request">
+ <separator string="Product Info" colspan="4" id="product"/>
<label name="product"/>
<field name="product"/>
- <label name="party"/>
- <field name="party"/>
+ <newline/>
<label name="quantity"/>
<field name="quantity"/>
<label name="uom"/>
<field name="uom"/>
+ <label name="computed_quantity"/>
+ <field name="computed_quantity"/>
+ <label name="computed_uom"/>
+ <field name="computed_uom"/>
+ <separator string="Supply Info" colspan="4" id="supply"/>
+ <label name="party"/>
+ <field name="party"/>
+ <newline/>
<label name="warehouse"/>
<field name="warehouse"/>
<label name="company"/>
diff --git a/trytond_stock_supply.egg-info/PKG-INFO b/trytond_stock_supply.egg-info/PKG-INFO
index f40cfab..85b5580 100644
--- a/trytond_stock_supply.egg-info/PKG-INFO
+++ b/trytond_stock_supply.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
Metadata-Version: 1.0
Name: trytond-stock-supply
-Version: 1.0.2
+Version: 1.2.0
Summary: Supply Management Module with:
- Order point
- Purchase Request
@@ -13,7 +13,7 @@ Home-page: http://www.tryton.org/
Author: B2CK
Author-email: info at b2ck.com
License: GPL-3
-Download-URL: http://downloads.tryton.org/1.0/
+Download-URL: http://downloads.tryton.org/1.2/
Description: UNKNOWN
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
diff --git a/trytond_stock_supply.egg-info/SOURCES.txt b/trytond_stock_supply.egg-info/SOURCES.txt
index 827f24b..c5af587 100644
--- a/trytond_stock_supply.egg-info/SOURCES.txt
+++ b/trytond_stock_supply.egg-info/SOURCES.txt
@@ -5,6 +5,7 @@ LICENSE
MANIFEST.in
README
de_DE.csv
+es_CO.csv
es_ES.csv
fr_FR.csv
order_point.xml
diff --git a/trytond_stock_supply.egg-info/requires.txt b/trytond_stock_supply.egg-info/requires.txt
index 8278687..b08fcb2 100644
--- a/trytond_stock_supply.egg-info/requires.txt
+++ b/trytond_stock_supply.egg-info/requires.txt
@@ -2,5 +2,6 @@ trytond_product
trytond_stock
trytond_purchase
trytond_party
-trytond >= 1.0
-trytond < 1.1
\ No newline at end of file
+trytond_account
+trytond >= 1.2
+trytond < 1.3
\ No newline at end of file
commit 6d0e0736ced91ca01076e6552a9ec9b13dfe8012
Author: Daniel Baumann <daniel at debian.org>
Date: Sat Mar 28 16:36:30 2009 +0100
Releasing debian version 1.0.2-2.
diff --git a/debian/changelog b/debian/changelog
index 413b272..2f810b2 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+tryton-modules-stock-supply (1.0.2-2) unstable; urgency=low
+
+ * Adding Mathias to uploaders.
+
+ -- Daniel Baumann <daniel at debian.org> Sat, 28 Mar 2009 16:36:00 +0100
+
tryton-modules-stock-supply (1.0.2-1) unstable; urgency=low
* Merging upstream version 1.0.2.
commit 190fbfd43e80685ce2ec5d829786e4a8c303ef0a
Author: Daniel Baumann <daniel at debian.org>
Date: Sat Mar 28 16:13:23 2009 +0100
Adding Mathias to uploaders.
diff --git a/debian/control b/debian/control
index 866a166..3332fa7 100644
--- a/debian/control
+++ b/debian/control
@@ -2,6 +2,7 @@ Source: tryton-modules-stock-supply
Section: python
Priority: optional
Maintainer: Daniel Baumann <daniel at debian.org>
+Uploaders: Mathias Behrle <mathiasb at mbsolutions.selfip.biz>
Build-Depends: debhelper (>= 7), python, python-all-dev, python-setuptools, python-support
Standards-Version: 3.8.1
Homepage: http://www.tryton.org/
commit 162e1bf7ec23a723e572266e10694f617b433158
Author: Daniel Baumann <daniel at debian.org>
Date: Mon Mar 23 07:23:25 2009 +0100
Releasing debian version 1.0.2-1.
diff --git a/debian/changelog b/debian/changelog
index 2b5be32..413b272 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+tryton-modules-stock-supply (1.0.2-1) unstable; urgency=low
+
+ * Merging upstream version 1.0.2.
+
+ -- Daniel Baumann <daniel at debian.org> Mon, 23 Mar 2009 07:23:00 +0100
+
tryton-modules-stock-supply (1.0.1-1) unstable; urgency=low
* Merging upstream version 1.0.1.
commit 3e1de8b5226da48dada6cf4d784e996d147ddc6a
Author: Daniel Baumann <daniel at debian.org>
Date: Mon Mar 23 07:22:57 2009 +0100
Merging upstream version 1.0.2.
diff --git a/CHANGELOG b/CHANGELOG
index 9801fce..2521948 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,6 @@
+Version 1.0.2 - 2009-03-02
+* Some bug fixes (see mercurial logs for details)
+
Version 1.0.1 - 2008-12-01
* Allow egg installation
diff --git a/PKG-INFO b/PKG-INFO
index ffb57a2..7ff831c 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
Metadata-Version: 1.0
Name: trytond_stock_supply
-Version: 1.0.1
+Version: 1.0.2
Summary: Supply Management Module with:
- Order point
- Purchase Request
diff --git a/__tryton__.py b/__tryton__.py
index c8dccc8..d7b8ba8 100644
--- a/__tryton__.py
+++ b/__tryton__.py
@@ -5,7 +5,7 @@
'name_de_DE': 'Lagerverwaltung Beschaffung',
'name_fr_FR': 'Gestion des approvisionnements de stock',
'name_es_ES': 'Gestión de pedidos de inventario',
- 'version': '1.0.1',
+ 'version': '1.0.2',
'author': 'B2CK',
'email': 'info at b2ck.com',
'website': 'http://www.tryton.org/',
diff --git a/doc/index_en.rst b/doc/index.rst
similarity index 97%
rename from doc/index_en.rst
rename to doc/index.rst
index 0656caf..a9ca03b 100644
--- a/doc/index_en.rst
+++ b/doc/index.rst
@@ -13,22 +13,22 @@ is linked to a warehouse and eventually a supplier, it contains a
ideal purchase date and an expected supply date. A purchase request
can be in one of these states:
-Draft
+* Draft
A draft purchase request is a request that is not linked to a
purchase.
-Purchased
+* Purchased
A Purchased request is a request that is linked to a purchase which
is not in state Done or Cancel.
-Done
+* Done
A purchase request is in state Done if it is linked to a Purchase
which is in state Done.
-Cancel
+* Cancel
A purchase request is in state Cancel if it is linked to a Purchase
which is cancelled.
@@ -49,14 +49,14 @@ a location. The minimum quantity is the quantity that should be always
be reached when re-ordering. An order point also define a type which
can be:
-Internal
+* Internal
An Internal order point is defined on a Storage location, it also
define a provisioning location. If the minimum quantity is reached
it will result in the creation of an internal packing between the
provisioning location and the Storage location.
-Purchase
+* Purchase
A Purchase order point is defined on a warehouse location. If the
minimal quantity is reached on the warehouse it will result in a
diff --git a/order_point.py b/order_point.py
index f49df9c..c3ad04e 100644
--- a/order_point.py
+++ b/order_point.py
@@ -15,7 +15,8 @@ class OrderPoint(OSV):
product = fields.Many2One(
'product.product', 'Product', required=True, select=1,
- domain=[('type', '=', 'stockable')])
+ domain="[('type', '=', 'stockable'), ('purchasable', 'in', " \
+ "type == 'purchase' and [True] or [True, False])]")
warehouse_location = fields.Many2One(
'stock.location', 'Warehouse Location', select=1,
domain="[('type', '=', 'warehouse')]",
diff --git a/trytond_stock_supply.egg-info/PKG-INFO b/trytond_stock_supply.egg-info/PKG-INFO
index e67becf..f40cfab 100644
--- a/trytond_stock_supply.egg-info/PKG-INFO
+++ b/trytond_stock_supply.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
Metadata-Version: 1.0
Name: trytond-stock-supply
-Version: 1.0.1
+Version: 1.0.2
Summary: Supply Management Module with:
- Order point
- Purchase Request
diff --git a/trytond_stock_supply.egg-info/SOURCES.txt b/trytond_stock_supply.egg-info/SOURCES.txt
index c9cf690..827f24b 100644
--- a/trytond_stock_supply.egg-info/SOURCES.txt
+++ b/trytond_stock_supply.egg-info/SOURCES.txt
@@ -17,7 +17,7 @@ setup.py
./packing.py
./product.py
./purchase_request.py
-doc/index_en.rst
+doc/index.rst
trytond_stock_supply.egg-info/PKG-INFO
trytond_stock_supply.egg-info/SOURCES.txt
trytond_stock_supply.egg-info/dependency_links.txt
commit 13b30afe17fe0c45b48f37f6bff6a4a1c2d4b798
Author: Daniel Baumann <daniel at debian.org>
Date: Sun Mar 22 23:31:05 2009 +0100
Releasing debian version 1.0.1-1.
diff --git a/debian/changelog b/debian/changelog
index 884692b..2b5be32 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,11 @@
+tryton-modules-stock-supply (1.0.1-1) unstable; urgency=low
+
+ * Merging upstream version 1.0.1.
+ * Updating standards to 3.8.1.
+ * Making package arch all as it should be (Closes: #520809).
+
+ -- Daniel Baumann <daniel at debian.org> Sun, 22 Mar 2009 23:30:00 +0100
+
tryton-modules-stock-supply (1.0.0-1) unstable; urgency=low
* Initial release (Closes: #506095).
commit ee6dcb75b149a8ff2fb3704a7e0637f93f25ffc3
Author: Daniel Baumann <daniel at debian.org>
Date: Sun Mar 22 23:30:39 2009 +0100
Making package arch all as it should be (Closes: #520809).
diff --git a/debian/control b/debian/control
index 641d404..866a166 100644
--- a/debian/control
+++ b/debian/control
@@ -9,7 +9,7 @@ Vcs-Browser: http://git.debian.net/?p=debian/tryton-modules-stock-supply.git
Vcs-Git: git://git.debian.net/git/debian/tryton-modules-stock-supply.git
Package: tryton-modules-stock-supply
-Architecture: any
+Architecture: all
Depends: ${misc:Depends}, ${python:Depends}, tryton-server, tryton-modules-party, tryton-modules-product, tryton-modules-purchase, tryton-modules-stock, python-pkg-resources
XB-Python-Version: ${python:Versions}
Description: Tryton Application Platform (Stock Supply Module)
commit 4bb353aeee5075b8627c85f0355b6a4841d11993
Author: Daniel Baumann <daniel at debian.org>
Date: Sun Mar 22 23:30:18 2009 +0100
Updating standards to 3.8.1.
diff --git a/debian/control b/debian/control
index 85a0ed1..641d404 100644
--- a/debian/control
+++ b/debian/control
@@ -3,7 +3,7 @@ Section: python
Priority: optional
Maintainer: Daniel Baumann <daniel at debian.org>
Build-Depends: debhelper (>= 7), python, python-all-dev, python-setuptools, python-support
-Standards-Version: 3.8.0
+Standards-Version: 3.8.1
Homepage: http://www.tryton.org/
Vcs-Browser: http://git.debian.net/?p=debian/tryton-modules-stock-supply.git
Vcs-Git: git://git.debian.net/git/debian/tryton-modules-stock-supply.git
commit 635ed337a9290cece95f28f9455c71677043e89c
Author: Daniel Baumann <daniel at debian.org>
Date: Wed Jan 28 14:20:24 2009 +0100
Merging upstream version 1.0.1.
diff --git a/CHANGELOG b/CHANGELOG
index eacaaef..9801fce 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,2 +1,5 @@
+Version 1.0.1 - 2008-12-01
+* Allow egg installation
+
Version 1.0.0 - 2008-11-17
* Initial release
diff --git a/PKG-INFO b/PKG-INFO
index 19dc9dd..ffb57a2 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
Metadata-Version: 1.0
Name: trytond_stock_supply
-Version: 1.0.0
+Version: 1.0.1
Summary: Supply Management Module with:
- Order point
- Purchase Request
@@ -13,6 +13,7 @@ Home-page: http://www.tryton.org/
Author: B2CK
Author-email: info at b2ck.com
License: GPL-3
+Download-URL: http://downloads.tryton.org/1.0/
Description: UNKNOWN
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
diff --git a/__tryton__.py b/__tryton__.py
index f6fbf42..c8dccc8 100644
--- a/__tryton__.py
+++ b/__tryton__.py
@@ -5,7 +5,7 @@
'name_de_DE': 'Lagerverwaltung Beschaffung',
'name_fr_FR': 'Gestion des approvisionnements de stock',
'name_es_ES': 'Gestión de pedidos de inventario',
- 'version': '1.0.0',
+ 'version': '1.0.1',
'author': 'B2CK',
'email': 'info at b2ck.com',
'website': 'http://www.tryton.org/',
diff --git a/setup.py b/setup.py
index 13d1084..8aac505 100644
--- a/setup.py
+++ b/setup.py
@@ -27,6 +27,8 @@ setup(name='trytond_stock_supply',
author=info.get('author', ''),
author_email=info.get('email', ''),
url=info.get('website', ''),
+ download_url="http://downloads.tryton.org/" + \
+ info.get('version', '0.0.1').rsplit('.', 1)[0] + '/',
package_dir={'trytond.modules.stock_supply': '.'},
packages=[
'trytond.modules.stock_supply',
@@ -53,4 +55,9 @@ setup(name='trytond_stock_supply',
],
license='GPL-3',
install_requires=requires,
+ zip_safe=False,
+ entry_points="""
+ [trytond.modules]
+ stock_supply = trytond.modules.stock_supply
+ """,
)
diff --git a/trytond_stock_supply.egg-info/PKG-INFO b/trytond_stock_supply.egg-info/PKG-INFO
index 81161ab..e67becf 100644
--- a/trytond_stock_supply.egg-info/PKG-INFO
+++ b/trytond_stock_supply.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
Metadata-Version: 1.0
Name: trytond-stock-supply
-Version: 1.0.0
+Version: 1.0.1
Summary: Supply Management Module with:
- Order point
- Purchase Request
@@ -13,6 +13,7 @@ Home-page: http://www.tryton.org/
Author: B2CK
Author-email: info at b2ck.com
License: GPL-3
+Download-URL: http://downloads.tryton.org/1.0/
Description: UNKNOWN
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
diff --git a/trytond_stock_supply.egg-info/SOURCES.txt b/trytond_stock_supply.egg-info/SOURCES.txt
index d6818b3..c9cf690 100644
--- a/trytond_stock_supply.egg-info/SOURCES.txt
+++ b/trytond_stock_supply.egg-info/SOURCES.txt
@@ -21,5 +21,7 @@ doc/index_en.rst
trytond_stock_supply.egg-info/PKG-INFO
trytond_stock_supply.egg-info/SOURCES.txt
trytond_stock_supply.egg-info/dependency_links.txt
+trytond_stock_supply.egg-info/entry_points.txt
+trytond_stock_supply.egg-info/not-zip-safe
trytond_stock_supply.egg-info/requires.txt
trytond_stock_supply.egg-info/top_level.txt
\ No newline at end of file
diff --git a/trytond_stock_supply.egg-info/entry_points.txt b/trytond_stock_supply.egg-info/entry_points.txt
new file mode 100644
index 0000000..bcdc825
--- /dev/null
+++ b/trytond_stock_supply.egg-info/entry_points.txt
@@ -0,0 +1,4 @@
+
+ [trytond.modules]
+ stock_supply = trytond.modules.stock_supply
+
\ No newline at end of file
diff --git a/trytond_stock_supply.egg-info/not-zip-safe b/trytond_stock_supply.egg-info/not-zip-safe
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/trytond_stock_supply.egg-info/not-zip-safe
@@ -0,0 +1 @@
+
commit c9240bcdff072020caa336c3f23686e4a7c03d1d
Author: Daniel Baumann <daniel at debian.org>
Date: Tue Nov 18 13:05:56 2008 +0100
Adding debian version 1.0.0-1.
diff --git a/CHANGELOG b/CHANGELOG
new file mode 100644
index 0000000..eacaaef
--- /dev/null
+++ b/CHANGELOG
@@ -0,0 +1,2 @@
+Version 1.0.0 - 2008-11-17
+* Initial release
diff --git a/COPYRIGHT b/COPYRIGHT
new file mode 100644
index 0000000..313ec81
--- /dev/null
+++ b/COPYRIGHT
@@ -0,0 +1,16 @@
+Copyright (C) 2008 Cédric Krier.
+Copyright (C) 2008 Bertrand Chenal.
+Copyright (C) 2008 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
+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/>.
diff --git a/INSTALL b/INSTALL
new file mode 100644
index 0000000..98218dd
--- /dev/null
+++ b/INSTALL
@@ -0,0 +1,33 @@
+Installing trytond_stock_supply
+===============================
+
+Prerequisites
+-------------
+
+ * Python 2.4 or later (http://www.python.org/)
+ * trytond 0.0.x (http://www.tryton.org/)
+ * trytond_party (http://www.tryton.org/)
+ * trytond_product (http://www.tryton.org/)
+ * trytond_stock (http://www.tryton.org/)
+ * trytond_purchase (http://www.tryton.org/)
+
+Installation
+------------
+
+Once you've downloaded and unpacked a trytond_stock_supply source release, enter the
+directory where the archive was unpacked, and run:
+
+ python setup.py install
+
+Note that you may need administrator/root privileges for this step, as
+this command will by default attempt to install module to the Python
+site-packages directory on your system.
+
+For advanced options, please refer to the easy_install and/or the distutils
+documentation:
+
+ http://peak.telecommunity.com/DevCenter/EasyInstall
+ http://docs.python.org/inst/inst.html
+
+To use without installation, extract the archive into ``trytond/modules`` with
+the directory name stock_supply.
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..94a9ed0
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,674 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ 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/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+ <program> Copyright (C) <year> <name of author>
+ This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+ The GNU General Public License does not permit incorporating your program
+into proprietary programs. If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License. But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
diff --git a/MANIFEST.in b/MANIFEST.in
new file mode 100644
index 0000000..dcb2afa
--- /dev/null
+++ b/MANIFEST.in
@@ -0,0 +1,10 @@
+include INSTALL
+include README
+include TODO
+include COPYRIGHT
+include CHANGELOG
+include LICENSE
+include *.xml
+include *.odt
+include *.csv
+include doc/*
diff --git a/PKG-INFO b/PKG-INFO
new file mode 100644
index 0000000..19dc9dd
--- /dev/null
+++ b/PKG-INFO
@@ -0,0 +1,31 @@
+Metadata-Version: 1.0
+Name: trytond_stock_supply
+Version: 1.0.0
+Summary: Supply Management Module with:
+ - Order point
+ - Purchase Request
+
+With schedulers:
+ - to generate purchase request based on order points
+ - to generate internal packing based on order points
+
+Home-page: http://www.tryton.org/
+Author: B2CK
+Author-email: info at b2ck.com
+License: GPL-3
+Description: UNKNOWN
+Platform: UNKNOWN
+Classifier: Development Status :: 5 - Production/Stable
+Classifier: Environment :: Plugins
+Classifier: Intended Audience :: Developers
+Classifier: Intended Audience :: Financial and Insurance Industry
+Classifier: Intended Audience :: Legal Industry
+Classifier: Intended Audience :: Manufacturing
+Classifier: License :: OSI Approved :: GNU General Public License (GPL)
+Classifier: Natural Language :: English
+Classifier: Natural Language :: French
+Classifier: Natural Language :: German
+Classifier: Natural Language :: Spanish
+Classifier: Operating System :: OS Independent
+Classifier: Programming Language :: Python
+Classifier: Topic :: Office/Business
diff --git a/README b/README
new file mode 100644
index 0000000..4c3c6fc
--- /dev/null
+++ b/README
@@ -0,0 +1,36 @@
+trytond_stock_supply
+====================
+
+The stock_supply module of the Tryton application platform.
+See __tryton__.py
+
+Installing
+----------
+
+See INSTALL
+
+Support
+-------
+
+If you encounter any problems with Tryton, please don't hesitate to ask
+questions on the Tryton bug tracker, mailing list, wiki or IRC channel:
+
+ http://bugs.tryton.org/
+ http://groups.tryton.org/
+ http://wiki.tryton.org/
+ irc://irc.freenode.net/tryton
+
+License
+-------
+
+See LICENSE
+
+Copyright
+---------
+
+See COPYRIGHT
+
+
+For more information please visit the Tryton web site:
+
+ http://www.tryton.org/
diff --git a/__init__.py b/__init__.py
new file mode 100644
index 0000000..d573cf6
--- /dev/null
+++ b/__init__.py
@@ -0,0 +1,6 @@
+#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 order_point import *
+from product import *
+from purchase_request import *
+from packing import *
diff --git a/__tryton__.py b/__tryton__.py
new file mode 100644
index 0000000..f6fbf42
--- /dev/null
+++ b/__tryton__.py
@@ -0,0 +1,64 @@
+#This file is part of Tryton. The COPYRIGHT file at the top level of
+#this repository contains the full copyright notices and license terms.
+{
+ 'name': 'Stock Supply Management',
+ 'name_de_DE': 'Lagerverwaltung Beschaffung',
+ 'name_fr_FR': 'Gestion des approvisionnements de stock',
+ 'name_es_ES': 'Gestión de pedidos de inventario',
+ 'version': '1.0.0',
+ 'author': 'B2CK',
+ 'email': 'info at b2ck.com',
+ 'website': 'http://www.tryton.org/',
+ 'description': '''Supply Management Module with:
+ - Order point
+ - Purchase Request
+
+With schedulers:
+ - to generate purchase request based on order points
+ - to generate internal packing based on order points
+''',
+ 'description_de_DE': '''Beschaffungsmodul mit:
+ - Bestellpunkten
+ - Auftragserstellung
+
+Mit automatischer Auftragserstellung per Zeitplaner:
+ - um Bestellungen auf der Basis von Bestellpunkten zu erstellen
+ - um internen Versand auf der Basis von Bestellpunkten zu erstellen
+''',
+ 'description_fr_FR': '''Module de gestion des approvisionnements avec:
+ - Règles d'approvisionnement
+ - Demandes d'achat
+
+Et les planificateurs pour générer:
+ - des demandes d'achat et
+ - des colisages internes
+sur base des règles d'approvisionnement
+''',
+ 'description_es_ES': '''Módulo de Administración de pedidos:
+ - Punto de Orden
+ - Solicitud de Compras
+
+Con agendadores para:
+ - generar solicitudes de compra basados en puntos de orden
+ - generar empaques internos basados en puntos de orden
+''',
+
+ 'depends': [
+ 'ir',
+ 'res',
+ 'product',
+ 'stock',
+ 'purchase',
+ 'party',
+ ],
+ 'xml': [
+ 'order_point.xml',
+ 'purchase_request.xml',
+ 'packing.xml',
+ ],
+ 'translation': [
+ 'de_DE.csv',
+ 'es_ES.csv',
+ 'fr_FR.csv',
+ ]
+}
diff --git a/de_DE.csv b/de_DE.csv
new file mode 100644
index 0000000..6a60db6
--- /dev/null
+++ b/de_DE.csv
@@ -0,0 +1,67 @@
+type,name,res_id,src,value,fuzzy
+error,purchase.request,0,Purchase request are only created by the system.,Bestellungen werden nur durch das System erstellt,0
+error,purchase.request.create_purchase,0,Purchase price is missing for product: %s (id: %s)!,Fehlender Einkaufspreis für Artikel: %s (id: %s)!,0
+error,purchase.request.create_purchase,0,This price is necessary for creating purchase.,Dieser Preis wird für die Auftragserstellung benötigt.,0
+error,stock.order_point,0,Maximal quantity must be bigger than Minimal quantity,Maximale Anzahl muss größer als die Minimale Anzahl sein,0
+error,stock.order_point,0,Only one order point is allowed for each product-location pair.,Es ist nur ein Bestellpunkt für jede Paarung Artikel-Lagerort erlaubt,0
+error,stock.order_point,0,You can not define two order point on the same product with opposite locations.,Es ist nicht möglich zwei Bestellpunkte für den selben Artikel mit gegensätzlichen Lagerorten zu definieren.,0
+field,"product.product,order_points",0,Order Points,Bestellpunkte,0
+field,"purchase.request,company",0,Company,Unternehmen,0
+field,"purchase.request.create_purchase.ask_party,company",0,Company,Unternehmen,0
+field,"purchase.request.create_purchase.ask_party,party",0,Supplier,Lieferant,0
+field,"purchase.request.create_purchase.ask_party,product",0,Product,Artikel,0
+field,"purchase.request.create_purchase.ask_term,company",0,Company,Unternehmen,0
+field,"purchase.request.create_purchase.ask_term,party",0,Supplier,Lieferant,0
+field,"purchase.request.create_purchase.ask_term,payment_term",0,Payment Term,Zahlungsbedingung,0
+field,"purchase.request,origin",0,Origin,Herkunft,0
+field,"purchase.request,party",0,Party,Partei,0
+field,"purchase.request,product",0,Product,Artikel,0
+field,"purchase.request,purchase",0,Purchase,Bestellung,0
+field,"purchase.request,purchase_date",0,Best Purchase Date,Bestes Einkaufsdatum,0
+field,"purchase.request,purchase_line",0,Purchase Line,Position Bestellung,0
+field,"purchase.request,quantity",0,Quantity,Menge,0
+field,"purchase.request,state",0,State,Status,0
+field,"purchase.request,stock_level",0,Stock at Supply Date,Lagerbestand am Lieferdatum,0
+field,"purchase.request,supply_date",0,Expected Supply Date,Voraussichtliches Lieferdatum,0
+field,"purchase.request,uom",0,UOM,Maßeinheit,0
+field,"purchase.request,warehouse",0,Warehouse,Warenlager,0
+field,"stock.order_point,company",0,Company,Unternehmen,0
+field,"stock.order_point,location",0,Location,Lagerort,0
+field,"stock.order_point,max_quantity",0,Maximal Quantity,Maximale Anzahl,0
+field,"stock.order_point,min_quantity",0,Minimal Quantity,Minimale Anzahl,0
+field,"stock.order_point,product",0,Product,Artikel,0
+field,"stock.order_point,provisioning_location",0,Provisioning Location,Bereitstellungsort,0
+field,"stock.order_point,storage_location",0,Storage Location,Lagerort,0
+field,"stock.order_point,type",0,Type,Typ,0
+field,"stock.order_point,warehouse_location",0,Warehouse Location,Warenlager,0
+model,"ir.action,name",wizard_create_purchase,Create Purchase,Auftrag erstellen,0
+model,"ir.action,name",act_order_point_form,Order Points,Bestellpunkte,0
+model,"ir.action,name",act_purchase_request_form,Purchase Requests,Bestellungen,0
+model,"ir.action,name",act_purchase_form,Purchases,Bestellungen,0
+model,"ir.cron,name",cron_packing_iternal,Generate Internal Packings,Erstellung Interne Lieferscheine,0
+model,"ir.cron,name",cron_generate_request,Generate Purchase Requests,Auftragserstellung,0
+model,"ir.ui.menu,name",menu_order_point_form,Order Points,Bestellpunkte,0
+model,"ir.ui.menu,name",menu_purchase_request_form,Purchase Requests,Bestellungen,0
+model,"res.group,name",group_purchase_request,Purchase Request,Auftragserstellung,0
+model,"res.user,name",user_generate_packing_internal,Cron Intenal Packing,Cron Interne Lieferscheine,0
+model,"res.user,name",user_generate_request,Cron Purchase Request,Cron Auftragserstellung,0
+selection,"purchase.request,origin",0,Order Point,Bestellpunkt,0
+selection,"purchase.request,state",0,Cancel,Abgebrochen,0
+selection,"purchase.request,state",0,Done,Erledigt,0
+selection,"purchase.request,state",0,Draft,Entwurf,0
+selection,"purchase.request,state",0,Purchased,Bestellt,0
+selection,"stock.order_point,type",0,Internal,Intern,0
+selection,"stock.order_point,type",0,Purchase,Bestellung,0
+view,purchase.request,0,Purchase Request,Bestellung,0
+view,purchase.request,0,Purchase Requests,Bestellungen,0
+view,purchase.request.create_purchase.ask_party,0,,,0
+view,purchase.request.create_purchase.ask_party,0,Create Purchase: Missing Supplier,Auftrag erstellen: Fehlender Lieferant,0
+view,purchase.request.create_purchase.ask_term,0,Create Purchase: Missing Payment Term,Auftrag erstellen: Fehlende Zahlungsbedingung,0
+view,stock.order_point,0,Locations,Lagerorte,0
+view,stock.order_point,0,Order Point,Bestellpunkt,0
+view,stock.order_point,0,Order Point Type,Typ Bestellpunkt,0
+view,stock.order_point,0,Product Info,Artikelinfo,0
+wizard_button,"purchase.request.create_purchase,ask_user_party,end",0,Cancel,Abbrechen,0
+wizard_button,"purchase.request.create_purchase,ask_user_party,init",0,Continue,Fortfahren,0
+wizard_button,"purchase.request.create_purchase,ask_user_term,end",0,Cancel,Abbrechen,0
+wizard_button,"purchase.request.create_purchase,ask_user_term,init",0,Continue,Fortfahren,0
diff --git a/debian/changelog b/debian/changelog
new file mode 100644
index 0000000..884692b
--- /dev/null
+++ b/debian/changelog
@@ -0,0 +1,5 @@
+tryton-modules-stock-supply (1.0.0-1) unstable; urgency=low
+
+ * Initial release (Closes: #506095).
+
+ -- Daniel Baumann <daniel at debian.org> Mon, 12 Jan 2009 15:49:00 -0500
diff --git a/debian/compat b/debian/compat
new file mode 100644
index 0000000..7f8f011
--- /dev/null
+++ b/debian/compat
@@ -0,0 +1 @@
+7
diff --git a/debian/control b/debian/control
new file mode 100644
index 0000000..85a0ed1
--- /dev/null
+++ b/debian/control
@@ -0,0 +1,27 @@
+Source: tryton-modules-stock-supply
+Section: python
+Priority: optional
+Maintainer: Daniel Baumann <daniel at debian.org>
+Build-Depends: debhelper (>= 7), python, python-all-dev, python-setuptools, python-support
+Standards-Version: 3.8.0
+Homepage: http://www.tryton.org/
+Vcs-Browser: http://git.debian.net/?p=debian/tryton-modules-stock-supply.git
+Vcs-Git: git://git.debian.net/git/debian/tryton-modules-stock-supply.git
+
+Package: tryton-modules-stock-supply
+Architecture: any
+Depends: ${misc:Depends}, ${python:Depends}, tryton-server, tryton-modules-party, tryton-modules-product, tryton-modules-purchase, tryton-modules-stock, python-pkg-resources
+XB-Python-Version: ${python:Versions}
+Description: Tryton Application Platform (Stock Supply 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 an ERP.
+ .
+ This package contains the Supply Management Module with:
+ .
+ * Order point
+ * Purchase Request
+ .
+ With schedulers:
+ .
+ * to generate purchase request based on order points.
+ * to generate internal packing based on order points.
diff --git a/debian/copyright b/debian/copyright
new file mode 100644
index 0000000..1c7f5ab
--- /dev/null
+++ b/debian/copyright
@@ -0,0 +1,43 @@
+Author: Tryton Project <http://www.tryton.org/>
+Download: http://www.tryton.org/downloads.html
+
+Files: *
+Copyright:
+ (C) 2008 Cedric Krier
+ (C) 2008 Bertrand Chenal
+ (C) 2008 B2CK SPRL
+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/>.
+ .
+ On Debian systems, the complete text of the GNU General Public License
+ can be found in /usr/share/common-licenses/GPL-3 file.
+
+Files: debian/*
+Copyright: (C) 2009 Daniel Baumann <daniel at debian.org>
+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/>.
+ .
+ On Debian systems, the complete text of the GNU General Public License
+ can be found in /usr/share/common-licenses/GPL-3 file.
diff --git a/debian/pycompat b/debian/pycompat
new file mode 100644
index 0000000..0cfbf08
--- /dev/null
+++ b/debian/pycompat
@@ -0,0 +1 @@
+2
diff --git a/debian/pyversions b/debian/pyversions
new file mode 100644
index 0000000..8b253bc
--- /dev/null
+++ b/debian/pyversions
@@ -0,0 +1 @@
+2.4-
diff --git a/debian/rules b/debian/rules
new file mode 100755
index 0000000..e728f01
--- /dev/null
+++ b/debian/rules
@@ -0,0 +1,42 @@
+#!/usr/bin/make -f
+
+clean:
+ dh_testdir
+ dh_testroot
+ rm -f build-stamp
+
+ python setup.py clean
+ rm -rf dist build trytond_stock_supply.egg-info
+
+ dh_clean
+
+build:
+
+install:
+ dh_testdir
+ dh_testroot
+ dh_prep
+ dh_installdirs
+
+ python setup.py install --single-version-externally-managed --root=$(CURDIR)/debian/tryton-modules-stock-supply --install-lib /usr/share/python-support/tryton-modules-stock-supply
+
+ find debian/tryton-modules-stock-supply -type f -name "*.pyc" | xargs rm -f
+
+binary: binary-indep
+
+binary-arch:
+
+binary-indep: install
+ dh_testdir
+ dh_testroot
+ dh_installchangelogs CHANGELOG
+ dh_installdocs
+ dh_pysupport
+ dh_compress
+ dh_fixperms
+ dh_installdeb
+ dh_gencontrol
+ dh_md5sums
+ dh_builddeb
+
+.PHONY: clean build install binary binary-arch binary-indep
diff --git a/doc/index_en.rst b/doc/index_en.rst
new file mode 100644
index 0000000..0656caf
--- /dev/null
+++ b/doc/index_en.rst
@@ -0,0 +1,66 @@
+Stock Supply Module
+###################
+
+The Stock Supply module add automatic supply mechanisms and introduce
+the concepts of order point and purchase request.
+
+
+Purchase Request
+****************
+
+A purchase request define the need for the purchase of a product. It
+is linked to a warehouse and eventually a supplier, it contains a
+ideal purchase date and an expected supply date. A purchase request
+can be in one of these states:
+
+Draft
+
+ A draft purchase request is a request that is not linked to a
+ purchase.
+
+Purchased
+
+ A Purchased request is a request that is linked to a purchase which
+ is not in state Done or Cancel.
+
+Done
+
+ A purchase request is in state Done if it is linked to a Purchase
+ which is in state Done.
+
+Cancel
+
+ A purchase request is in state Cancel if it is linked to a Purchase
+ which is cancelled.
+
+A wizard allow to create purchases based on a selection of Draft
+purchase requests. The new purchases contains one purchase line by
+purchase request and group them by warehouse and by supplier. Once the
+purchases are created, the corresponding purchase requests are set to
+the state Purchased.
+
+
+Order Point
+***********
+
+An order point define minimum and maximum quantities for a product on
+a location. The minimum quantity is the quantity that should be always
+(if possible) available. The maximum is a target quantity that should
+be reached when re-ordering. An order point also define a type which
+can be:
+
+Internal
+
+ An Internal order point is defined on a Storage location, it also
+ define a provisioning location. If the minimum quantity is reached
+ it will result in the creation of an internal packing between the
+ provisioning location and the Storage location.
+
+Purchase
+
+ A Purchase order point is defined on a warehouse location. If the
+ minimal quantity is reached on the warehouse it will result in a
+ purchase request.
+
+The internal packings and purchase requests are created by schedulers
+with respect to stock levels and existing packings and requests.
diff --git a/es_ES.csv b/es_ES.csv
new file mode 100644
index 0000000..1a37578
--- /dev/null
+++ b/es_ES.csv
@@ -0,0 +1,59 @@
+type,name,res_id,src,value,fuzzy
+error,purchase.request,0,Purchase request are only created by the system.,Las solicitudes de compra las crea únicamente el sistema.,0
+error,stock.order_point,0,Maximal quantity must be bigger than Minimal quantity,La cantidad máxima debe ser mayor que la Cantidad Mínima,0
+error,stock.order_point,0,Only one order point is allowed for each product-location pair.,Solamente se admite un punto de orden para cada par cliente-producto.,0
+error,stock.order_point,0,You can not define two order point on the same product with opposite locations.,No puede definir dos puntos de orden del mismo producto con lugares opuestos.,0
+field,"product.product,order_points",0,Order Points,Puntos de Orden,0
+field,"purchase.request,company",0,Company,Compañía,0
+field,"purchase.request.create_purchase.ask_party,company",0,Company,Compañía,0
+field,"purchase.request.create_purchase.ask_party,party",0,Supplier,Proveedor,0
+field,"purchase.request.create_purchase.ask_party,product",0,Product,Producto,0
+field,"purchase.request.create_purchase.ask_term,company",0,Company,Compañía,0
+field,"purchase.request.create_purchase.ask_term,party",0,Supplier,Proveedor,0
+field,"purchase.request.create_purchase.ask_term,payment_term",0,Payment Term,Término de Pago,0
+field,"purchase.request,origin",0,Origin,Origen,0
+field,"purchase.request,party",0,Party,Tercero,0
+field,"purchase.request,product",0,Product,Producto,0
+field,"purchase.request,purchase",0,Purchase,Compra,0
+field,"purchase.request,purchase_date",0,Best Purchase Date,Mejor Fecha de Compra,0
+field,"purchase.request,purchase_line",0,Purchase Line,Línea de Compra,0
+field,"purchase.request,quantity",0,Quantity,Cantidad,0
+field,"purchase.request,state",0,State,Estado,0
+field,"purchase.request,stock_level",0,Stock at Supply Date,Almacenar al Momento en la fecha de abastecimiento,0
+field,"purchase.request,supply_date",0,Expected Supply Date,Fecha Esperada de Abastecimiento,0
+field,"purchase.request,uom",0,UOM,UDM,0
+field,"purchase.request,warehouse",0,Warehouse,Depósito,0
+field,"stock.order_point,company",0,Company,Compañía,0
+field,"stock.order_point,location",0,Location,Lugar,0
+field,"stock.order_point,max_quantity",0,Maximal Quantity,Cantidad Máxima,0
+field,"stock.order_point,min_quantity",0,Minimal Quantity,Cantidad Mínima,0
+field,"stock.order_point,product",0,Product,Producto,0
+field,"stock.order_point,provisioning_location",0,Provisioning Location,Lugar de Aprovisionamiento,0
+field,"stock.order_point,storage_location",0,Storage Location,Lugar de almacenamiento,0
+field,"stock.order_point,type",0,Type,Tipo,0
+field,"stock.order_point,warehouse_location",0,Warehouse Location,Lugar de la bodega,0
+model,"ir.action,name",wizard_create_purchase,Create Purchase,Crear Compra,0
+model,"ir.action,name",act_order_point_form,Order Points,Puntos de Orden,0
+model,"ir.action,name",act_purchase_request_form,Purchase Requests,Solicitudes de Compra,0
+model,"ir.action,name",act_purchase_form,Purchases,Compras,0
+model,"ir.ui.menu,name",menu_order_point_form,Order Points,Puntos de Orden,0
+model,"ir.ui.menu,name",menu_purchase_request_form,Purchase Requests,Solicitudes de Compra,0
+selection,"purchase.request,origin",0,Order Point,Punto de Orden,0
+selection,"purchase.request,state",0,Cancel,Cancelar,0
+selection,"purchase.request,state",0,Done,Hecho,0
+selection,"purchase.request,state",0,Draft,Borrador,0
+selection,"purchase.request,state",0,Purchased,Comprado,0
+selection,"stock.order_point,type",0,Internal,Intern@,0
+selection,"stock.order_point,type",0,Purchase,Compra,0
+view,purchase.request,0,Purchase Request,Solicitud de Compra,0
+view,purchase.request,0,Purchase Requests,Solicitudes de Compra,0
+view,purchase.request.create_purchase.ask_party,0,Create Purchase: Missing Supplier,Crear Compra: Sin Proveedor,0
+view,purchase.request.create_purchase.ask_term,0,Create Purchase: Missing Payment Term,Crear Compra: Sin Término de Pago,0
+view,stock.order_point,0,Locations,Lugares,0
+view,stock.order_point,0,Order Point,Punto de Orden,0
+view,stock.order_point,0,Order Point Type,Tipo de Punto de Orden,0
+view,stock.order_point,0,Product Info,Información de Producto,0
+wizard_button,"purchase.request.create_purchase,ask_user_party,end",0,Cancel,Cancelar,0
+wizard_button,"purchase.request.create_purchase,ask_user_party,init",0,Continue,Continuar,0
+wizard_button,"purchase.request.create_purchase,ask_user_term,end",0,Cancel,Cancelar,0
+wizard_button,"purchase.request.create_purchase,ask_user_term,init",0,Continue,Continuar,0
diff --git a/fr_FR.csv b/fr_FR.csv
new file mode 100644
index 0000000..559f806
--- /dev/null
+++ b/fr_FR.csv
@@ -0,0 +1,61 @@
+type,name,res_id,src,value,fuzzy
+error,purchase.request,0,Purchase request are only created by the system.,Les demandes d'achat sont uniquement créées par le sytème,0
+error,purchase.request.create_purchase,0,Purchase price is missing for product: %s (id: %s)!,Le prix d'achat en absent pour le produit : %s (id: %s) !,0
+error,purchase.request.create_purchase,0,This price is necessary for creating purchase.,Ce prix est nécessaire pour créer les achats.,0
+error,stock.order_point,0,Maximal quantity must be bigger than Minimal quantity,La Quantité maximale doit être supérieure à la quantité minimale,0
+error,stock.order_point,0,Only one order point is allowed for each product-location pair.,Une seule règle d'approvisionnement est autorisée par paire produit-emplacement,0
+error,stock.order_point,0,You can not define two order point on the same product with opposite locations.,Vous ne pouvez pas définir deux règles d'approvisionnement sur le même produit avec des emplacement opposés,0
+field,"product.product,order_points",0,Order Points,Règles d'approvisionnements,0
+field,"purchase.request,company",0,Company,Companie,0
+field,"purchase.request.create_purchase.ask_party,company",0,Company,Companie,0
+field,"purchase.request.create_purchase.ask_party,party",0,Supplier,Fournisseur,0
+field,"purchase.request.create_purchase.ask_party,product",0,Product,Produit,0
+field,"purchase.request.create_purchase.ask_term,company",0,Company,Companie,0
+field,"purchase.request.create_purchase.ask_term,party",0,Supplier,Fournisseur,0
+field,"purchase.request.create_purchase.ask_term,payment_term",0,Payment Term,Condition de paiement,0
+field,"purchase.request,origin",0,Origin,Origine,0
+field,"purchase.request,party",0,Party,Tiers,0
+field,"purchase.request,product",0,Product,Produit,0
+field,"purchase.request,purchase",0,Purchase,Achat,0
+field,"purchase.request,purchase_date",0,Best Purchase Date,Meilleur date d'achat,0
+field,"purchase.request,purchase_line",0,Purchase Line,Ligne d'achat,0
+field,"purchase.request,quantity",0,Quantity,Quantité,0
+field,"purchase.request,state",0,State,État,0
+field,"purchase.request,stock_level",0,Stock at Supply Date,Stock à la date de livraison,0
+field,"purchase.request,supply_date",0,Expected Supply Date,Date de livraison attendue,0
+field,"purchase.request,uom",0,UOM,UDM,0
+field,"purchase.request,warehouse",0,Warehouse,Entrepôt,0
+field,"stock.order_point,company",0,Company,Companie,0
+field,"stock.order_point,location",0,Location,Emplacement,0
+field,"stock.order_point,max_quantity",0,Maximal Quantity,Quantité maximale,0
+field,"stock.order_point,min_quantity",0,Minimal Quantity,Quantité minimale,0
+field,"stock.order_point,product",0,Product,Produit,0
+field,"stock.order_point,provisioning_location",0,Provisioning Location,Emplacement d'appro.,0
+field,"stock.order_point,storage_location",0,Storage Location,Magasin,0
+field,"stock.order_point,type",0,Type,Type,0
+field,"stock.order_point,warehouse_location",0,Warehouse Location,Entrepôt,0
+model,"ir.action,name",wizard_create_purchase,Create Purchase,Créer achat,0
+model,"ir.action,name",act_order_point_form,Order Points,Règles d'approvisionnement,0
+model,"ir.action,name",act_purchase_request_form,Purchase Requests,Demandes d'achat,0
+model,"ir.action,name",act_purchase_form,Purchases,Achats,0
+model,"ir.ui.menu,name",menu_order_point_form,Order Points,Règles d'approvisionnement,0
+model,"ir.ui.menu,name",menu_purchase_request_form,Purchase Requests,Demandes d'achat,0
+selection,"purchase.request,origin",0,Order Point,Règle d'approvisionnement,0
+selection,"purchase.request,state",0,Cancel,Annulé,0
+selection,"purchase.request,state",0,Done,Fait,0
+selection,"purchase.request,state",0,Draft,Brouillon,0
+selection,"purchase.request,state",0,Purchased,Commandé,0
+selection,"stock.order_point,type",0,Internal,Interne,0
+selection,"stock.order_point,type",0,Purchase,Achat,0
+view,purchase.request,0,Purchase Request,Demande d'achat,0
+view,purchase.request,0,Purchase Requests,Demandes d'achat,0
+view,purchase.request.create_purchase.ask_party,0,Create Purchase: Missing Supplier,Creation de la comande: fournisseur absent,0
+view,purchase.request.create_purchase.ask_term,0,Create Purchase: Missing Payment Term,Creation de la comande: règle d'appro. absente,0
+view,stock.order_point,0,Locations,Emplacements,0
+view,stock.order_point,0,Order Point,Règle d'approvisionnement,0
+view,stock.order_point,0,Order Point Type,Type de Règle d'approvisionnement,0
+view,stock.order_point,0,Product Info,Info produit,0
+wizard_button,"purchase.request.create_purchase,ask_user_party,end",0,Cancel,Annuler,0
+wizard_button,"purchase.request.create_purchase,ask_user_party,init",0,Continue,Continuer,0
+wizard_button,"purchase.request.create_purchase,ask_user_term,end",0,Cancel,Annuler,0
+wizard_button,"purchase.request.create_purchase,ask_user_term,init",0,Continue,Continuer,0
diff --git a/order_point.py b/order_point.py
new file mode 100644
index 0000000..f49df9c
--- /dev/null
+++ b/order_point.py
@@ -0,0 +1,176 @@
+#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 trytond.osv import fields, OSV
+from trytond.wizard import Wizard, WizardOSV
+
+
+class OrderPoint(OSV):
+ """
+ Order Point: Provide a way to define a supply policy for each
+ product on each locations. Order points on warehouse are
+ considered by the supply scheduler to generate purchase requests.
+ """
+ _name = 'stock.order_point'
+ _description = "Order Point"
+
+ product = fields.Many2One(
+ 'product.product', 'Product', required=True, select=1,
+ domain=[('type', '=', 'stockable')])
+ warehouse_location = fields.Many2One(
+ 'stock.location', 'Warehouse Location', select=1,
+ domain="[('type', '=', 'warehouse')]",
+ states={'invisible': "type != 'purchase'",
+ 'required': "type == 'purchase'"},)
+ storage_location = fields.Many2One(
+ 'stock.location', 'Storage Location', select=1,
+ domain="[('type', '=', 'storage')]",
+ states={'invisible': "type != 'internal'",
+ 'required': "type == 'internal'"},)
+ location = fields.Function(
+ 'get_location', type='many2one', relation='stock.location',
+ fnct_search='search_location', string='Location')
+ provisioning_location = fields.Many2One(
+ 'stock.location', 'Provisioning Location',
+ domain="[('type', '=', 'storage')]",
+ states={'invisible': "type != 'internal'",
+ 'required': "type == 'internal'"},)
+ type = fields.Selection(
+ [('internal', 'Internal'),
+ ('purchase', 'Purchase')],
+ 'Type', select=1, required=True)
+ min_quantity = fields.Float('Minimal Quantity', required=True)
+ max_quantity = fields.Float('Maximal Quantity', required=True)
+ company = fields.Many2One('company.company', 'Company', required=True)
+
+ def __init__(self):
+ super(OrderPoint, self).__init__()
+ self._constraints += [
+ ('check_concurrent_internal', 'concurrent_internal_op'),
+ ('check_uniqueness', 'unique_op'),
+ ]
+ self._sql_constraints += [
+ ('check_min_max_quantity',
+ 'CHECK( max_quantity is null or min_quantity is null or max_quantity >= min_quantity )',
+ 'Maximal quantity must be bigger than Minimal quantity'),
+ ]
+ self._error_messages.update(
+ {'unique_op': 'Only one order point is allowed '\
+ 'for each product-location pair.',
+ 'concurrent_internal_op': 'You can not define two order point '\
+ 'on the same product with opposite locations.',})
+
+ def default_type(self, cursor, user, context=None):
+ return "purchase"
+
+ def check_concurrent_internal(self, cursor, user, ids):
+ """
+ Ensure that there is no 'concurrent' internal order
+ points. I.E. no two order point with opposite location for the
+ same product and same company.
+ """
+ internal_ids = self.search(
+ cursor, user, [('id', 'in', ids), ('type', '=', 'internal')])
+ if not internal_ids:
+ return True
+
+ query = ['OR']
+ for op in self.browse(cursor, user, internal_ids):
+ arg = ['AND',
+ ('provisioning_location', '=', op.storage_location.id),
+ ('storage_location', '=', op.provisioning_location.id),
+ ('company', '=', op.company.id),
+ ('type', '=', 'internal')]
+ query.append(arg)
+ ids = self.search(cursor, user, query)
+ return not bool(ids)
+
+ def _type2field(self, type=None):
+ t2f = {'purchase': 'warehouse_location',
+ 'internal': 'storage_location',}
+ if type == None:
+ return t2f
+ else:
+ return t2f[type]
+
+ def check_uniqueness(self, cursor, user, ids):
+ """
+ Ensure uniqueness of order points. I.E that there is no several
+ order point for the same location, the same product and the
+ same company.
+ """
+ query = ['OR']
+ for op in self.browse(cursor, user, ids):
+ field = self._type2field(op.type)
+ arg = ['AND',
+ ('product', '=', op.product.id),
+ (field, '=', op[field].id),
+ ('id', '!=', op.id),
+ ('company', '=', op.company.id),]
+ query.append(arg)
+ ids = self.search(cursor, user, query)
+ return not bool(ids)
+
+ def name_get(self, cursor, user, ids, context=None):
+ if not ids:
+ return []
+ if isinstance(ids, (int, long)):
+ ids = [ids]
+ res = []
+ for op in self.browse(cursor, user, ids, context=context):
+ res.append((op.id, "%s@%s" % (op.product.name, op.location.name)))
+ return res
+
+ def name_search(self, cursor, user, name='', args=None, operator='ilike',
+ context=None, limit=None):
+ if not args:
+ args=[]
+ names = name.split('@', 1)
+ query = ['AND', ('product.template.name', operator, names[0]), args]
+ if len(names) == 1 or not names[1]:
+ ids = self.search( cursor, user, query, limit=limit, context=context)
+ else:
+ location_args = self.search_location(
+ cursor, user, 'location', [('location', operator, names[1])],
+ context=context)
+ ids = self.search(
+ cursor, user, ['AND', query, location_args], limit=limit,
+ context=context)
+ return self.name_get(cursor, user, ids, context)
+
+ def get_location(self, cursor, user, ids, name, args, context=None):
+ location_obj = self.pool.get('stock.location')
+ res = {}
+ for op in self.browse(cursor, user, ids, context=context):
+ if op.type == 'purchase':
+ res[op.id] = op.warehouse_location.id
+ elif op.type == 'internal':
+ res[op.id] = op.storage_location.id
+ else:
+ res[op.id] = False
+ loc_id2name = dict(location_obj.name_get(
+ cursor, user, [i for i in res.itervalues() if i]))
+
+ for op_id, loc_id in res.iteritems():
+ if loc_id in loc_id2name:
+ res[op_id] = (loc_id, loc_id2name[loc_id])
+ return res
+
+ def search_location(self, cursor, user, name, domain=None, context=None):
+ ids = []
+ for type, field in self._type2field().iteritems():
+ args = [('type', '=', type)]
+ for _, operator, operand in domain:
+ args.append((field, operator, operand))
+ ids.extend(self.search(cursor, user, args, context=context))
+ return [('id', 'in', ids)]
+
+ def default_company(self, cursor, user, context=None):
+ company_obj = self.pool.get('company.company')
+ if context is None:
+ context = {}
+ if context.get('company'):
+ return company_obj.name_get(cursor, user, context['company'],
+ context=context)[0]
+ return False
+
+OrderPoint()
diff --git a/order_point.xml b/order_point.xml
new file mode 100644
index 0000000..cf0ea8d
--- /dev/null
+++ b/order_point.xml
@@ -0,0 +1,97 @@
+<?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. -->
+<tryton>
+ <data>
+ <record model="ir.ui.view" id="order_point_view_form">
+ <field name="model">stock.order_point</field>
+ <field name="type">form</field>
+ <field name="arch" type="xml">
+ <![CDATA[
+ <form string="Order Point">
+ <separator string="Product Info" colspan="4"/>
+ <label name="product"/>
+ <field name="product"/>
+ <label name="company"/>
+ <field name="company"/>
+ <label name="min_quantity"/>
+ <field name="min_quantity"/>
+ <label name="max_quantity"/>
+ <field name="max_quantity"/>
+ <separator string="Order Point Type" colspan="4"/>
+ <label name="type"/>
+ <field name="type"/>
+ <newline/>
+ <label name="warehouse_location"/>
+ <field name="warehouse_location"/>
+ <newline/>
+ <label name="storage_location"/>
+ <field name="storage_location"/>
+ <label name="provisioning_location"/>
+ <field name="provisioning_location"/>
+ </form>
+ ]]>
+ </field>
+ </record>
+ <record model="ir.ui.view" id="order_point_view_tree">
+ <field name="model">stock.order_point</field>
+ <field name="type">tree</field>
+ <field name="arch" type="xml">
+ <![CDATA[
+ <tree string="Locations">
+ <field name="product" select="1"/>
+ <field name="location" select="1"/>
+ <field name="company"/>
+ <field name="min_quantity" select="2"/>
+ <field name="max_quantity" select="2"/>
+ </tree>
+ ]]>
+ </field>
+ </record>
+
+ <record model="ir.action.act_window" id="act_order_point_form">
+ <field name="name">Order Points</field>
+ <field name="res_model">stock.order_point</field>
+ <field name="view_type">form</field>
+ </record>
+ <record model="ir.action.act_window.view" id="act_order_point_form_view1">
+ <field name="sequence" eval="10"/>
+ <field name="view" ref="order_point_view_tree"/>
+ <field name="act_window" ref="act_order_point_form"/>
+ </record>
+ <record model="ir.action.act_window.view" id="act_order_point_form_view2">
+ <field name="sequence" eval="20"/>
+ <field name="view" ref="order_point_view_form"/>
+ <field name="act_window" ref="act_order_point_form"/>
+ </record>
+ <menuitem parent="stock.menu_stock" sequence="60"
+ action="act_order_point_form" id="menu_order_point_form"/>
+
+ <record model="ir.model.access" id="access_order_point">
+ <field name="model" search="[('model', '=', 'stock.order_point')]"/>
+ <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_order_point_admin">
+ <field name="model" search="[('model', '=', 'stock.order_point')]"/>
+ <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.rule.group" id="rule_group_order_point">
+ <field name="model" search="[('model', '=', 'stock.order_point')]"/>
+ <field name="global_p" eval="True"/>
+ </record>
+ <record model="ir.rule" id="rule_order_point">
+ <field name="field" search="[('name', '=', 'company'), ('model.model', '=', 'stock.order_point')]"/>
+ <field name="operator">=</field>
+ <field name="operand">User/Current Company</field>
+ <field name="rule_group" ref="rule_group_order_point"/>
+ </record>
+ </data>
+</tryton>
diff --git a/packing.py b/packing.py
new file mode 100644
index 0000000..c659b1b
--- /dev/null
+++ b/packing.py
@@ -0,0 +1,95 @@
+#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 trytond.osv import fields, OSV
+
+
+class PackingInternal(OSV):
+ _name = 'stock.packing.internal'
+
+ def generate_internal_packing(self, cursor, user, context=None):
+ """
+ Generate internal packings to meet order points defined on
+ non-warehouse location.
+ """
+ order_point_obj = self.pool.get('stock.order_point')
+ uom_obj = self.pool.get('product.uom')
+ product_obj = self.pool.get('product.product')
+ date_obj = self.pool.get('ir.date')
+ user_obj = self.pool.get('res.user')
+ user_record = user_obj.browse(cursor, user, user, context=context)
+ today = date_obj.today(cursor, user, context=context)
+ # fetch quantities on order points
+ op_ids = order_point_obj.search(
+ cursor, user, [('type', '=', 'internal')], context=context)
+ order_points = order_point_obj.browse(
+ cursor, user, op_ids, context=context)
+ id2product = {}
+ location_ids = []
+ for op in order_points:
+ id2product[op.product.id] = op.product
+ location_ids.append(op.storage_location.id)
+
+ local_ctx = context or {}
+ local_ctx['stock_date_end'] = today
+ pbl = product_obj.products_by_location(
+ cursor, user, location_ids, list(id2product.iterkeys()), with_childs=True,
+ context=local_ctx)
+
+ # Create a list of move to create
+ moves = {}
+ for op in order_points:
+ qty = pbl.get((op.storage_location.id, op.product.id), 0)
+ if qty < op.min_quantity:
+ key = (op.storage_location.id,
+ op.provisioning_location.id,
+ op.product.id)
+ moves[key] = op.max_quantity - qty
+
+ # Compare with existing draft packings
+ packing_ids = self.search(
+ cursor, user,
+ [('state', '=', 'draft'),
+ ['OR', ('planned_date', '<=', today),
+ ('planned_date', '=', False)]],
+ context=context)
+ for packing in self.browse(cursor, user, packing_ids, context=context):
+ for move in packing.moves:
+ key = (packing.to_location.id,
+ packing.from_location.id,
+ move.product.id)
+ if key not in moves:
+ continue
+ quantity = uom_obj.compute_qty(
+ cursor, user, move.uom, move.quantity,
+ id2product[move.product.id].default_uom, context=context)
+ moves[key] = max(0, moves[key] - quantity)
+
+ # Group moves by {from,to}_location
+ packings = {}
+ for key,qty in moves.iteritems():
+ from_location, to_location, product = key
+ packings.setdefault(
+ (from_location, to_location),[]).append((product, qty))
+ # Create packings and moves
+ for packing, moves in packings.iteritems():
+ from_location, to_location = packing
+ values = {
+ 'from_location': from_location,
+ 'to_location': to_location,
+ 'planned_date': today,
+ 'moves': [],
+ }
+ for move in moves:
+ product, qty = move
+ values['moves'].append(
+ ('create',
+ {'from_location': from_location,
+ 'to_location': to_location,
+ 'product': product,
+ 'quantity': qty,
+ 'uom': id2product[product].default_uom.id,
+ 'company': user_record.company.id,}
+ ))
+ self.create(cursor, user, values, context=context)
+
+PackingInternal()
diff --git a/packing.xml b/packing.xml
new file mode 100644
index 0000000..f018ea4
--- /dev/null
+++ b/packing.xml
@@ -0,0 +1,27 @@
+<?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. -->
+<tryton>
+ <data>
+ <record model="res.user" id="user_generate_packing_internal">
+ <field name="login">user_cron_internal_packing</field>
+ <field name="name">Cron Intenal Packing</field>
+ <field name="groups" eval="[('add', ref('stock.group_stock'))]"/>
+ <field name="signature"></field>
+ </record>
+
+ <record model="ir.cron" id="cron_packing_iternal">
+ <field name="name">Generate Internal Packings</field>
+ <field name="request_user" ref="res.user_admin"/>
+ <field name="user" ref="user_generate_packing_internal"/>
+ <field name="active" eval="True"/>
+ <field name="interval_number">1</field>
+ <field name="interval_type">days</field>
+ <field name="numbercall">-1</field>
+ <field name="doall" eval="False"/>
+ <field name="model">stock.packing.internal</field>
+ <field name="function">generate_internal_packing</field>
+ <field name="priority">5</field>
+ </record>
+
+ </data>
+</tryton>
diff --git a/product.py b/product.py
new file mode 100644
index 0000000..630e911
--- /dev/null
+++ b/product.py
@@ -0,0 +1,12 @@
+#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 trytond.osv import fields, OSV
+import datetime
+
+
+class Product(OSV):
+ _name = "product.product"
+
+ order_points = fields.One2Many(
+ 'stock.order_point', 'product', 'Order Points')
+
+Product()
diff --git a/purchase_request.py b/purchase_request.py
new file mode 100644
index 0000000..6a4aa1a
--- /dev/null
+++ b/purchase_request.py
@@ -0,0 +1,656 @@
+#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 trytond.osv import fields, OSV
+from trytond.wizard import Wizard, WizardOSV
+import datetime
+
+
+class PurchaseRequest(OSV):
+ 'Purchase Request'
+ _name = 'purchase.request'
+ _description = __doc__
+
+ product = fields.Many2One(
+ 'product.product', 'Product', required=True, select=1, readonly=True)
+ party = fields.Many2One('party.party', 'Party', select=1)
+ quantity = fields.Float('Quantity', required=True)
+ uom = fields.Many2One('product.uom', 'UOM', required=True, select=1)
+ purchase_date = fields.Date('Best Purchase Date', readonly=True)
+ supply_date = fields.Date('Expected Supply Date', readonly=True)
+ stock_level = fields.Float('Stock at Supply Date', readonly=True)
+ warehouse = fields.Many2One(
+ 'stock.location', "Warehouse", required=True,
+ domain="[('type', '=', 'warehouse')]", readonly=True)
+ purchase_line = fields.Many2One(
+ 'purchase.line', 'Purchase Line',readonly=True)
+ purchase = fields.Function(
+ 'get_purchase', type='many2one', relation='purchase.purchase',
+ string='Purchase')
+ company = fields.Many2One(
+ 'company.company', 'Company', required=True, readonly=True)
+ origin = fields.Reference('Origin', selection='origin_get', readonly=True,
+ required=True)
+ state = fields.Function(
+ 'get_state', type='selection',
+ selection=[("purchased", "Purchased"),
+ ("done", "Done"),
+ ("draft", "Draft"),
+ ("cancel", "Cancel")],
+ string="State", readonly=True)
+
+ def __init__(self):
+ super(PurchaseRequest, self).__init__()
+ self._order[0] = ('id', 'DESC')
+ self._error_messages.update({
+ 'create_request': 'Purchase request are only created by the system.',
+ })
+
+ def name_get(self, cursor, user, ids, context=None):
+ if isinstance(ids, (int, long)):
+ ids = [ids]
+ res = []
+ for pr in self.browse(cursor, user, ids, context=context):
+ res.append((pr.id, "%s@%s" % (pr.product.name, pr.warehouse.name)))
+ return res
+
+ def name_search(self, cursor, user, name='', args=None, operator='ilike',
+ context=None, limit=None):
+ if not args:
+ args=[]
+ names = name.split('@',1)
+ query = ['AND', ('product.template.name', operator, names[0]), args]
+ if len(names) == 1 or not names[1]:
+ ids = self.search( cursor, user, query, limit=limit, context=context)
+ else:
+ warehouse_arg = [('warehouse', operator, names[1])]
+ ids = self.search(
+ cursor, user, query + warehouse_arg, limit=limit, context=context)
+ return self.name_get(cursor, user, ids, context)
+
+ def default_company(self, cursor, user, context=None):
+ company_obj = self.pool.get('company.company')
+ if context is None:
+ context = {}
+ if context.get('company'):
+ return company_obj.name_get(cursor, user, context['company'],
+ context=context)[0]
+ return False
+
+ def get_purchase(self, cursor, user, ids, name, args, context=None):
+ res = {}
+ purchase_obj = self.pool.get('purchase.purchase')
+ purchase_ids = set()
+
+ requests = self.browse(cursor, user, ids, context=context)
+ for request in requests:
+ if request.purchase_line:
+ purchase_ids.add(request.purchase_line.purchase.id)
+ purchase_names = dict(purchase_obj.name_get(
+ cursor, user, purchase_ids, context=context))
+
+ for request in requests:
+ if request.purchase_line:
+ pid = request.purchase_line.purchase.id
+ res[request.id] = (pid, purchase_names[pid])
+ else:
+ res[request.id] = False
+
+ return res
+
+ def get_state(self, cursor, user, ids, name, args, context=None):
+ res = {}.fromkeys(ids, 'draft')
+ for request in self.browse(cursor, user, ids, context=context):
+ if request.purchase_line:
+ if request.purchase_line.purchase.state == 'cancel':
+ res[request.id] = 'cancel'
+ elif request.purchase_line.purchase.state == 'done':
+ res[request.id] = 'done'
+ else:
+ res[request.id] = 'purchased'
+ return res
+
+ def origin_get(self, cursor, user, context=None):
+ model_obj = self.pool.get('ir.model')
+ res = []
+ model_ids = model_obj.search(cursor, user, [
+ ('model', '=', 'stock.order_point'),
+ ], context=context)
+ for model in model_obj.browse(cursor, user, model_ids,
+ context=context):
+ res.append([model.model, model.name])
+ return res
+
+ def generate_requests(self, cursor, user, context=None):
+ """
+ For each product compute the purchase request that must be
+ create today to meet product outputs.
+ """
+ order_point_obj = self.pool.get('stock.order_point')
+ purchase_request_obj = self.pool.get('purchase.request')
+ product_obj = self.pool.get('product.product')
+ location_obj = self.pool.get('stock.location')
+ user_obj = self.pool.get('res.user')
+ company = user_obj.browse(cursor, user, user, context=context).company
+
+ # fetch warehouses:
+ warehouse_ids = location_obj.search(
+ cursor, user, [('type','=','warehouse')], context=context)
+ # fetch order points
+ order_point_ids = order_point_obj.search(
+ cursor, user, [('type', '=', 'purchase')], context=context)
+ # index them by product
+ product2ops = {}
+ for order_point in order_point_obj.browse(
+ cursor, user, order_point_ids, context=context):
+ product2ops[
+ (order_point.warehouse_location.id, order_point.product.id)
+ ] = order_point
+
+ # fetch stockable products
+ product_ids = product_obj.search(
+ cursor, user, [('type', '=', 'stockable')], context=context)
+ #aggregate product by minimum supply date
+ date2products = {}
+ for product in product_obj.browse(cursor, user, product_ids,
+ context=context):
+ min_date, max_date = self.get_supply_dates(
+ cursor, user, product, context=context)
+ date2products.setdefault(min_date, []).append((product, max_date))
+
+ # compute requests
+ local_context = context and context.copy() or {}
+ local_context['forecast'] = True
+ new_requests = []
+ for min_date in date2products:
+ product_ids = [x[0].id for x in date2products[min_date]]
+ local_context.update(
+ {'stock_date_end': min_date or datetime.date.max})
+ pbl = product_obj.products_by_location(
+ cursor, user, warehouse_ids, product_ids, with_childs=True,
+ skip_zero=False, context=local_context)
+ for product, max_date in date2products[min_date]:
+ for warehouse_id in warehouse_ids:
+ qty = pbl.pop((warehouse_id, product.id))
+ order_point = product2ops.get((warehouse_id, product.id))
+ # Search for shortage between min-max
+ shortage_date, product_quantity = self.get_shortage(
+ cursor, user, warehouse_id, product.id, min_date,
+ max_date, min_date_qty=qty, order_point=order_point,
+ context=context)
+
+ if shortage_date == None or product_quantity == None:
+ continue
+ # generate request values
+ request_val = self.compute_request(
+ cursor, user, product, warehouse_id, shortage_date,
+ product_quantity, company, order_point, context=context)
+ new_requests.append(request_val)
+
+ self.create_requests(cursor, user, new_requests, context=context)
+ return {}
+
+ def create_requests(self, cursor, user, new_requests, context=None):
+ """
+ Compare new_requests with already existing request and avoid
+ to re-create existing requests.
+ """
+ # delete purchase request without a purchase line
+ uom_obj = self.pool.get('product.uom')
+ request_obj = self.pool.get('purchase.request')
+ product_supplier_obj = self.pool.get('purchase.product_supplier')
+ req_ids = request_obj.search(cursor, user, [
+ ('purchase_line', '=', False),
+ ('origin', 'like', 'stock.order_point,%'),
+ ], context=context)
+ request_obj.delete(cursor, user, req_ids, context=context)
+
+ req_ids = request_obj.search(
+ cursor, user,
+ [('purchase_line.moves', '=', False),
+ ('purchase_line.purchase.state', '!=', 'cancel'),
+ ('origin', 'like', 'stock.order_point,%')],
+ context=context
+ )
+ requests = request_obj.browse(cursor, user, req_ids, context=context)
+ # Fetch data from existing requests
+ existing_req = {}
+ for request in requests:
+ pline = request.purchase_line
+ # Skip incoherent request
+ if request.product.id != pline.product.id or \
+ request.warehouse.id != pline.purchase.warehouse.id:
+ continue
+ # Take smallest amount between request and purchase line
+ req_qty = uom_obj.compute_qty(
+ cursor, user, request.uom, request.quantity,
+ pline.unit, context=context)
+ if req_qty < pline.quantity:
+ quantity = request.quantity
+ uom = request.uom
+ else:
+ quantity = pline.quantity
+ uom = pline.unit
+
+ existing_req.setdefault(
+ (request.product.id, request.warehouse.id),
+ []).append({'supply_date': request.supply_date or datetime.date.max,
+ 'quantity': quantity,
+ 'uom': uom}
+ )
+
+ for i in existing_req.itervalues():
+ i.sort(lambda r,s: cmp(r['supply_date'],s['supply_date']))
+
+ # Update new requests to take existing requests into account
+ new_requests.sort(lambda r,s: cmp(r['supply_date'],s['supply_date']))
+ for new_req in new_requests:
+ for old_req in existing_req.get((new_req['product'].id,
+ new_req['warehouse']), []):
+ if old_req['supply_date'] <= new_req['supply_date']:
+ quantity = uom_obj.compute_qty(
+ cursor, user, old_req['uom'], old_req['quantity'],
+ new_req['uom'], context=context)
+ new_req['quantity'] = max(0.0, new_req['quantity'] - quantity)
+ old_req['quantity'] = uom_obj.compute_qty(
+ cursor, user, new_req['uom'],
+ max(0.0, quantity - new_req['quantity']),
+ old_req['uom'], context=context)
+ else:
+ break
+
+ # Create new request
+ for new_req in new_requests:
+ if new_req['supply_date'] == datetime.date.max:
+ new_req['supply_date'] = None
+ if new_req['quantity'] > 0.0:
+ new_req.update({'product': new_req['product'].id,
+ 'party': new_req['party'] and new_req['party'].id,
+ 'uom': new_req['uom'].id,
+ 'company': new_req['company'].id
+ })
+ request_obj.create(cursor, user, new_req, context=context)
+
+ def get_supply_dates(self, cursor, user, product, context=None):
+ """
+ Return the minimal interval of earliest supply dates for a product.
+
+ :param cursor: the database cursor
+ :param user: the user id
+ :param product: a BrowseRecord of the Product
+ :param context: the context
+ :return: a tuple with the two dates
+ """
+ product_supplier_obj = self.pool.get('purchase.product_supplier')
+ date_obj = self.pool.get('ir.date')
+
+ min_date = None
+ max_date = None
+ today = date_obj.today(cursor, user, context=context)
+
+ for product_supplier in product.product_suppliers:
+ supply_date, next_supply_date = product_supplier_obj.\
+ compute_supply_date(cursor, user, product_supplier,
+ date=today, context=context)
+ if (not min_date) or supply_date < min_date:
+ min_date = supply_date
+ if (not max_date):
+ max_date = next_supply_date
+ if supply_date > min_date and supply_date < max_date:
+ max_date = supply_date
+ if next_supply_date < max_date:
+ max_date = next_supply_date
+
+ if not min_date:
+ min_date = datetime.date.max
+ max_date = datetime.date.max
+
+ return (min_date, max_date)
+
+ def compute_request(self, cursor, user, product, location_id, shortage_date,
+ product_quantity, company, order_point=None,
+ context=None):
+ """
+ Return the value of the purchase request which will answer to
+ the needed quantity at the given date. I.e: the latest
+ purchase date, the expected supply date and the prefered
+ supplier.
+ """
+ uom_obj = self.pool.get('product.uom')
+ product_supplier_obj = self.pool.get('purchase.product_supplier')
+ date_obj = self.pool.get('ir.date')
+
+ supplier = None
+ timedelta = datetime.timedelta.max
+ today = date_obj.today(cursor, user, context=context)
+ max_quantity = order_point and order_point.max_quantity or 0.0
+ for product_supplier in product.product_suppliers:
+ supply_date = product_supplier_obj.compute_supply_date(cursor, user,
+ product_supplier, date=today, context=context)[0]
+ sup_timedelta = shortage_date - supply_date
+ if not supplier:
+ supplier = product_supplier.party
+ timedelta = sup_timedelta
+ continue
+
+ if timedelta < datetime.timedelta(0) \
+ and (sup_timedelta >= datetime.timedelta(0) \
+ or sup_timedelta > timedelta):
+ supplier = product_supplier.party
+ timedelta = sup_timedelta
+
+ if supplier:
+ purchase_date = product_supplier_obj.compute_purchase_date(cursor,
+ user, product_supplier, shortage_date, context=context)
+ else:
+ purchase_date = today
+
+ quantity = uom_obj.compute_qty(cursor, user, product.default_uom,
+ max_quantity - product_quantity,
+ product.purchase_uom or product.default_uom,
+ context=context)
+
+ if order_point:
+ origin = 'stock.order_point,%s'%order_point.id
+ else:
+ origin = 'stock.order_point,0'
+ return {'product': product,
+ 'party': supplier and supplier or None,
+ 'quantity': quantity,
+ 'uom': product.purchase_uom or product.default_uom,
+ 'purchase_date': purchase_date,
+ 'supply_date': shortage_date,
+ 'stock_level': product_quantity,
+ 'company': company,
+ 'warehouse': location_id,
+ 'origin': origin,
+ }
+
+ def get_shortage(self, cursor, user, location_id, product_id, min_date,
+ max_date, min_date_qty, order_point=None, context=None):
+ """
+ Return between min_date and max_date the first date where the
+ stock quantity is less than the minimal quantity and
+ the smallest stock quantity in the interval
+ or None if there is no date where stock quantity is less than
+ the minimal quantity
+ The minimal quantity comes from the order_point or is zero
+
+ :param cursor: the database cursor
+ :param user: the user id
+ :param location_id: the stock location id
+ :param produc_id: the product id
+ :param min_date: the minimal date
+ :param max_date: the maximal date
+ :param min_date_qty: the stock quantity at the minimal date
+ :param order_point: a BrowseRecord of the Order Point
+ :param context: the context
+ :return: a tuple with the date and the quantity
+ """
+ product_obj = self.pool.get('product.product')
+
+ res_date = None
+ res_qty = None
+
+ min_quantity = order_point and order_point.min_quantity or 0.0
+
+ current_date = min_date
+ current_qty = min_date_qty
+ while (current_date < max_date) or (current_date == min_date):
+ if current_qty < min_quantity:
+ if not res_date:
+ res_date = current_date
+ if (not res_qty) or (current_qty < res_qty):
+ res_qty = current_qty
+
+ local_context = context and context.copy() or {}
+ local_context['stock_date_start'] = current_date
+ local_context['stock_date_end'] = current_date
+ res = product_obj.products_by_location(
+ cursor, user, [location_id],
+ [product_id], with_childs=True, skip_zero=False,
+ context=context)
+ for qty in res.itervalues():
+ current_qty += qty
+ if current_date == datetime.date.max:
+ break
+ current_date += datetime.timedelta(1)
+
+ return (res_date, res_qty)
+
+ def create(self, cursor, user, vals, context=None):
+ for field_name in ('product', 'quantity', 'uom', 'warehouse', 'company'):
+ if not vals.get(field_name):
+ self.raise_user_error(cursor, 'create_request', context=context)
+ return super(PurchaseRequest, self).create(
+ cursor, user, vals, context=context)
+
+PurchaseRequest()
+
+
+class CreatePurchaseAskTerm(WizardOSV):
+ _name = 'purchase.request.create_purchase.ask_term'
+ party = fields.Many2One('party.party', 'Supplier', readonly=True)
+ company = fields.Many2One('company.company', 'Company', readonly=True)
+ payment_term = fields.Many2One(
+ 'account.invoice.payment_term', 'Payment Term', required=True)
+
+CreatePurchaseAskTerm()
+
+class CreatePurchaseAskParty(WizardOSV):
+ _name = 'purchase.request.create_purchase.ask_party'
+ product = fields.Many2One('product.product', 'Product', readonly=True)
+ company = fields.Many2One('company.company', 'Company', readonly=True)
+ party = fields.Many2One('party.party', 'Supplier', required=True)
+
+CreatePurchaseAskParty()
+
+class CreatePurchase(Wizard):
+ 'Create Purchase'
+ _name = 'purchase.request.create_purchase'
+
+ states = {
+
+ 'init': {
+ 'result': {
+ 'type': 'choice',
+ 'next_state': '_create_purchase',
+ },
+ },
+
+
+ 'ask_user_party': {
+ 'actions': ['_set_default_party'],
+ 'result': {
+ 'type': 'form',
+ 'object': 'purchase.request.create_purchase.ask_party',
+ 'state': [
+ ('end', 'Cancel', 'tryton-cancel'),
+ ('init', 'Continue', 'tryton-go-next', True),
+ ],
+ },
+ },
+
+ 'ask_user_term': {
+ 'actions': ['_set_default_term'],
+ 'result': {
+ 'type': 'form',
+ 'object': 'purchase.request.create_purchase.ask_term',
+ 'state': [
+ ('end', 'Cancel', 'tryton-cancel'),
+ ('init', 'Continue', 'tryton-go-next', True),
+ ],
+ },
+ },
+
+ }
+
+ def __init__(self):
+ super(CreatePurchase, self).__init__()
+ self._error_messages.update({
+ 'missing_price': 'Purchase price is missing for product: %s (id: %s)!',
+ 'please_update': 'This price is necessary for creating purchase.'
+ })
+
+ def _set_default_party(self, cursor, user, data, context=None):
+
+ request_obj = self.pool.get('purchase.request')
+ requests = request_obj.browse(cursor, user, data['ids'], context=context)
+ for request in requests:
+ if request.purchase_line:
+ continue
+ if not request.party:
+ return {'product': request.product.id,'company': request.company.id}
+
+ return {'product': request.product.id,'company': request.company.id}
+
+ def _set_default_term(self, cursor, user, data, context=None):
+
+ request_obj = self.pool.get('purchase.request')
+ requests = request_obj.browse(cursor, user, data['ids'], context=context)
+ for request in requests:
+ if (not request.party) or request.purchase_line:
+ continue
+ if not request.party.supplier_payment_term:
+ return {'party': request.party.id,'company': request.company.id}
+
+ return {'party': request.party.id,'company': request.company.id}
+
+ def _create_purchase(self, cursor, user, data, context=None):
+ request_obj = self.pool.get('purchase.request')
+ party_obj = self.pool.get('party.party')
+ purchase_obj = self.pool.get('purchase.purchase')
+ product_obj = self.pool.get('product.product')
+ line_obj = self.pool.get('purchase.line')
+ date_obj = self.pool.get('ir.date')
+
+ if context is None:
+ context = {}
+
+ form = data['form']
+ if form.get('product') and form.get('party') and \
+ form.get('company'):
+ req_ids = request_obj.search(
+ cursor, user, [('id', 'in', data['ids']), ('party', '=', False)],
+ context=context)
+ if req_ids:
+ request_obj.write(
+ cursor, user, req_ids, {'party': form['party']},
+ context=context)
+
+ elif form.get('payment_term') and form.get('party') and \
+ form.get('company'):
+ local_context = context and context.copy() or {}
+ local_context['company'] = form['company']
+ party_obj.write(
+ cursor, user, form['party'],
+ {'supplier_payment_term': form['payment_term']}, context=local_context)
+
+
+ req_ids = request_obj.search(
+ cursor, user, [('id', 'in', data['ids']),
+ ('purchase_line', '=', False),
+ ('party', '=', False)],
+ context=context)
+ if req_ids:
+ return 'ask_user_party'
+
+ today = date_obj.today(cursor, user, context=context)
+ requests = request_obj.browse(cursor, user, data['ids'], context=context)
+ purchases = {}
+ # collect data
+ for request in requests:
+ if request.purchase_line:
+ continue
+
+ if not request.party.supplier_payment_term:
+ return 'ask_user_term'
+
+ key = (request.party.id, request.company.id, request.warehouse.id)
+ if key not in purchases:
+ if request.purchase_date and request.purchase_date >= today:
+ purchase_date = request.purchase_date
+ else:
+ purchase_date = today
+ purchase = {
+ 'company': request.company.id,
+ 'party': request.party.id,
+ 'purchase_date': purchase_date,
+ 'payment_term': request.party.supplier_payment_term.id,
+ 'warehouse': request.warehouse.id,
+ 'currency': request.company.currency.id,
+ 'invoice_address': party_obj.address_get(
+ cursor, user, request.party.id, type='invoice', context=context),
+ 'lines': [],
+ }
+
+ purchases[key] = purchase
+ else:
+ purchase = purchases[key]
+
+ line = self.compute_purchase_line(
+ cursor, user, request, context=context)
+ purchase['lines'].append(line)
+ if request.purchase_date:
+ if purchase.get('purchase_date'):
+ purchase['purchase_date'] = min(purchase['purchase_date'],
+ request.purchase_date)
+ else:
+ purchase['purchase_date'] = request.purchase_date
+
+ # Create all
+ ctx = context.copy()
+ ctx['user'] = user
+ for purchase in purchases.itervalues():
+ lines = purchase.pop('lines')
+ purchase_id = purchase_obj.create(cursor, 0, purchase, context=ctx)
+ for line in lines:
+ request_id = line.pop('request')
+ line['purchase'] = purchase_id
+ line_id = line_obj.create(cursor, 0, line, context=ctx)
+ request_obj.write(
+ cursor, user, request_id, {'purchase_line': line_id},
+ context=context)
+
+ return 'end'
+
+
+ def compute_purchase_line(self, cursor, user, request, context=None):
+ party_obj = self.pool.get('party.party')
+ product_obj = self.pool.get('product.product')
+ line = {
+ 'product': request.product.id,
+ 'unit': request.uom.id,
+ 'quantity': request.quantity,
+ 'request': request.id,
+ 'description': request.product.name,
+ }
+ local_context = context.copy()
+ local_context['uom'] = request.uom.id
+ local_context['supplier'] = request.party.id
+ local_context['currency'] = request.company.currency.id
+
+ # XXX purchase with several lines of the same product
+ product_price = product_obj.get_purchase_price(
+ cursor, user, [request.product.id], request.quantity,
+ context=local_context)[request.product.id]
+
+ if not product_price:
+ self.raise_user_error(
+ cursor, 'missing_price',
+ (request.product.name, request.product.id),
+ 'please_update',
+ context=context)
+ line['unit_price'] = product_price
+
+ taxes = []
+ for tax in request.product.supplier_taxes_used:
+ if 'supplier_' + tax.group.code in party_obj._columns \
+ and request.party['supplier_' + tax.group.code]:
+ taxes.append(
+ request.party['supplier_' + tax.group.code].id)
+ continue
+ taxes.append(tax.id)
+ line['taxes'] = [('add', taxes)]
+ return line
+
+CreatePurchase()
diff --git a/purchase_request.xml b/purchase_request.xml
new file mode 100644
index 0000000..5a8c326
--- /dev/null
+++ b/purchase_request.xml
@@ -0,0 +1,205 @@
+<?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. -->
+<tryton>
+ <data>
+
+ <record model="res.group" id="group_purchase_request">
+ <field name="name">Purchase Request</field>
+ </record>
+
+ <record model="ir.ui.view" id="purchase_request_view_form">
+ <field name="model">purchase.request</field>
+ <field name="type">form</field>
+ <field name="arch" type="xml">
+ <![CDATA[
+ <form string="Purchase Request">
+ <label name="product"/>
+ <field name="product"/>
+ <label name="party"/>
+ <field name="party"/>
+ <label name="quantity"/>
+ <field name="quantity"/>
+ <label name="uom"/>
+ <field name="uom"/>
+ <label name="warehouse"/>
+ <field name="warehouse"/>
+ <label name="company"/>
+ <field name="company"/>
+ <label name="purchase_date"/>
+ <field name="purchase_date"/>
+ <label name="supply_date"/>
+ <field name="supply_date"/>
+ <label name="purchase"/>
+ <field name="purchase"/>
+ <label name="stock_level"/>
+ <field name="stock_level"/>
+ <label name="origin"/>
+ <field name="origin"/>
+ <label name="state"/>
+ <field name="state"/>
+ </form>
+ ]]>
+ </field>
+ </record>
+ <record model="ir.ui.view" id="purchase_request_view_tree">
+ <field name="model">purchase.request</field>
+ <field name="type">tree</field>
+ <field name="arch" type="xml">
+ <![CDATA[
+ <tree string="Purchase Requests">
+ <field name="product" select="1"/>
+ <field name="quantity" select="2"/>
+ <field name="uom" select="2"/>
+ <field name="warehouse" select="1"/>
+ <field name="party" select="1"/>
+ <field name="purchase_date" select="2"/>
+ <field name="stock_level"/>
+ <field name="company" select="2"/>
+ <field name="state"/>
+ </tree>
+ ]]>
+ </field>
+ </record>
+
+ <record model="ir.action.act_window" id="act_purchase_request_form">
+ <field name="name">Purchase Requests</field>
+ <field name="res_model">purchase.request</field>
+ <field name="view_type">form</field>
+ </record>
+ <record model="ir.action.act_window.view" id="act_purchase_request_form_view1">
+ <field name="sequence" eval="10"/>
+ <field name="view" ref="purchase_request_view_tree"/>
+ <field name="act_window" ref="act_purchase_request_form"/>
+ </record>
+ <record model="ir.action.act_window.view" id="act_purchase_request_form_view2">
+ <field name="sequence" eval="20"/>
+ <field name="view" ref="purchase_request_view_form"/>
+ <field name="act_window" ref="act_purchase_request_form"/>
+ </record>
+
+ <menuitem parent="purchase.menu_purchase" sequence="20"
+ action="act_purchase_request_form" id="menu_purchase_request_form"/>
+
+ <record model="ir.ui.view" id="purchase_request_create_purchase_ask_view_form">
+ <field name="model">purchase.request.create_purchase.ask_term</field>
+ <field name="type">form</field>
+ <field name="arch" type="xml">
+ <![CDATA[
+ <form string="Create Purchase: Missing Payment Term" col="2" cursor="payment_term">
+ <label name="party"/>
+ <field name="party"/>
+ <label name="company"/>
+ <field name="company"/>
+ <label name="payment_term"/>
+ <field name="payment_term"/>
+ </form>
+ ]]>
+ </field>
+ </record>
+ <record model="ir.ui.view" id="purchase_request_create_purchase_ask_party">
+ <field name="model">purchase.request.create_purchase.ask_party</field>
+ <field name="type">form</field>
+ <field name="arch" type="xml">
+ <![CDATA[
+ <form string="Create Purchase: Missing Supplier" col="2" cursor="party">
+ <label name="product"/>
+ <field name="product"/>
+ <label name="company"/>
+ <field name="company"/>
+ <label name="party"/>
+ <field name="party"/>
+ </form>
+ ]]>
+ </field>
+ </record>
+ <record model="ir.action.wizard" id="wizard_create_purchase">
+ <field name="name">Create Purchase</field>
+ <field name="wiz_name">purchase.request.create_purchase</field>
+ <field name="model">purchase.request</field>
+ <field name="groups" eval="[('add', ref('group_purchase_request'))]"/>
+ </record>
+ <record model="ir.action.keyword" id="create_purchase_keyword">
+ <field name="keyword">form_action</field>
+ <field name="model">purchase.request,0</field>
+ <field name="action" ref="wizard_create_purchase"/>
+ </record>
+
+ <record model="ir.action.act_window" id="act_purchase_form">
+ <field name="name">Purchases</field>
+ <field name="res_model">purchase.purchase</field>
+ <field name="view_type">form</field>
+ <field name="domain">[("id", "=", purchase)]</field>
+ </record>
+ <record model="ir.action.act_window.view" id="act_purchase_form_view1">
+ <field name="sequence" eval="10"/>
+ <field name="view" ref="purchase.purchase_view_tree"/>
+ <field name="act_window" ref="act_purchase_form"/>
+ </record>
+ <record model="ir.action.act_window.view" id="act_purchase_form_view2">
+ <field name="sequence" eval="20"/>
+ <field name="view" ref="purchase.purchase_view_form"/>
+ <field name="act_window" ref="act_purchase_form"/>
+ </record>
+ <record model="ir.action.keyword"
+ id="act_open_purchase_keyword1">
+ <field name="keyword">form_relate</field>
+ <field name="model">purchase.request,0</field>
+ <field name="action" ref="act_purchase_form"/>
+ </record>
+
+
+ <record model="ir.rule.group" id="rule_group_purchase_request">
+ <field name="model" search="[('model', '=', 'purchase.request')]"/>
+ <field name="global_p" eval="True"/>
+ </record>
+ <record model="ir.rule" id="rule_purchase_request">
+ <field name="field" search="[('name', '=', 'company'), ('model.model', '=', 'purchase.request')]"/>
+ <field name="operator">=</field>
+ <field name="operand">User/Current Company</field>
+ <field name="rule_group" ref="rule_group_purchase_request"/>
+ </record>
+
+ <record model="ir.model.access" id="access_purchase_request">
+ <field name="model" search="[('model', '=', 'purchase.request')]"/>
+ <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_purchase_request_admin">
+ <field name="model" search="[('model', '=', 'purchase.request')]"/>
+ <field name="group" ref="group_purchase_request"/>
+ <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="res.user" id="res.user_admin">
+ <field name="groups" eval="[('add', ref('group_purchase_request'))]"/>
+ </record>
+
+ <record model="res.user" id="user_generate_request">
+ <field name="login">user_cron_purchase_request</field>
+ <field name="name">Cron Purchase Request</field>
+ <field name="groups" eval="[('add', ref('group_purchase_request'))]"/>
+ <field name="signature"></field>
+ </record>
+
+ <record model="ir.cron" id="cron_generate_request">
+ <field name="name">Generate Purchase Requests</field>
+ <field name="request_user" ref="res.user_admin"/>
+ <field name="user" ref="user_generate_request"/>
+ <field name="active" eval="True"/>
+ <field name="interval_number">1</field>
+ <field name="interval_type">days</field>
+ <field name="numbercall">-1</field>
+ <field name="doall" eval="False"/>
+ <field name="model">purchase.request</field>
+ <field name="function">generate_requests</field>
+ <field name="priority">5</field>
+ </record>
+
+ </data>
+</tryton>
diff --git a/setup.cfg b/setup.cfg
new file mode 100644
index 0000000..861a9f5
--- /dev/null
+++ b/setup.cfg
@@ -0,0 +1,5 @@
+[egg_info]
+tag_build =
+tag_date = 0
+tag_svn_revision = 0
+
diff --git a/setup.py b/setup.py
new file mode 100644
index 0000000..13d1084
--- /dev/null
+++ b/setup.py
@@ -0,0 +1,56 @@
+#!/usr/bin/env python
+#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 setuptools import setup, find_packages
+import re
+
+info = eval(file('__tryton__.py').read())
+
+requires = []
+for dep in info.get('depends', []):
+ match = re.compile(
+ '(ir|res|workflow|webdav)((\s|$|<|>|<=|>=|==|!=).*?$)').match(dep)
+ if match:
+ continue
+ else:
+ dep = 'trytond_' + dep
+ requires.append(dep)
+
+major_version, minor_version, _ = info.get('version', '0.0.1').split('.', 2)
+requires.append('trytond >= %s.%s' % (major_version, minor_version))
+requires.append('trytond < %s.%s' % (major_version, str(int(minor_version) + 1)))
+
+setup(name='trytond_stock_supply',
+ version=info.get('version', '0.0.1'),
+ description=info.get('description', ''),
+ author=info.get('author', ''),
+ author_email=info.get('email', ''),
+ url=info.get('website', ''),
+ package_dir={'trytond.modules.stock_supply': '.'},
+ packages=[
+ 'trytond.modules.stock_supply',
+ ],
+ package_data={
+ 'trytond.modules.stock_supply': info.get('xml', []) \
+ + info.get('translation', []),
+ },
+ classifiers=[
+ 'Development Status :: 5 - Production/Stable',
+ 'Environment :: Plugins',
+ 'Intended Audience :: Developers',
+ 'Intended Audience :: Financial and Insurance Industry',
+ 'Intended Audience :: Legal Industry',
+ 'Intended Audience :: Manufacturing',
+ 'License :: OSI Approved :: GNU General Public License (GPL)',
+ 'Natural Language :: English',
+ 'Natural Language :: French',
+ 'Natural Language :: German',
+ 'Natural Language :: Spanish',
+ 'Operating System :: OS Independent',
+ 'Programming Language :: Python',
+ 'Topic :: Office/Business',
+ ],
+ license='GPL-3',
+ install_requires=requires,
+)
diff --git a/trytond_stock_supply.egg-info/PKG-INFO b/trytond_stock_supply.egg-info/PKG-INFO
new file mode 100644
index 0000000..81161ab
--- /dev/null
+++ b/trytond_stock_supply.egg-info/PKG-INFO
@@ -0,0 +1,31 @@
+Metadata-Version: 1.0
+Name: trytond-stock-supply
+Version: 1.0.0
+Summary: Supply Management Module with:
+ - Order point
+ - Purchase Request
+
+With schedulers:
+ - to generate purchase request based on order points
+ - to generate internal packing based on order points
+
+Home-page: http://www.tryton.org/
+Author: B2CK
+Author-email: info at b2ck.com
+License: GPL-3
+Description: UNKNOWN
+Platform: UNKNOWN
+Classifier: Development Status :: 5 - Production/Stable
+Classifier: Environment :: Plugins
+Classifier: Intended Audience :: Developers
+Classifier: Intended Audience :: Financial and Insurance Industry
+Classifier: Intended Audience :: Legal Industry
+Classifier: Intended Audience :: Manufacturing
+Classifier: License :: OSI Approved :: GNU General Public License (GPL)
+Classifier: Natural Language :: English
+Classifier: Natural Language :: French
+Classifier: Natural Language :: German
+Classifier: Natural Language :: Spanish
+Classifier: Operating System :: OS Independent
+Classifier: Programming Language :: Python
+Classifier: Topic :: Office/Business
diff --git a/trytond_stock_supply.egg-info/SOURCES.txt b/trytond_stock_supply.egg-info/SOURCES.txt
new file mode 100644
index 0000000..d6818b3
--- /dev/null
+++ b/trytond_stock_supply.egg-info/SOURCES.txt
@@ -0,0 +1,25 @@
+CHANGELOG
+COPYRIGHT
+INSTALL
+LICENSE
+MANIFEST.in
+README
+de_DE.csv
+es_ES.csv
+fr_FR.csv
+order_point.xml
+packing.xml
+purchase_request.xml
+setup.py
+./__init__.py
+./__tryton__.py
+./order_point.py
+./packing.py
+./product.py
+./purchase_request.py
+doc/index_en.rst
+trytond_stock_supply.egg-info/PKG-INFO
+trytond_stock_supply.egg-info/SOURCES.txt
+trytond_stock_supply.egg-info/dependency_links.txt
+trytond_stock_supply.egg-info/requires.txt
+trytond_stock_supply.egg-info/top_level.txt
\ No newline at end of file
diff --git a/trytond_stock_supply.egg-info/dependency_links.txt b/trytond_stock_supply.egg-info/dependency_links.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/trytond_stock_supply.egg-info/dependency_links.txt
@@ -0,0 +1 @@
+
diff --git a/trytond_stock_supply.egg-info/requires.txt b/trytond_stock_supply.egg-info/requires.txt
new file mode 100644
index 0000000..8278687
--- /dev/null
+++ b/trytond_stock_supply.egg-info/requires.txt
@@ -0,0 +1,6 @@
+trytond_product
+trytond_stock
+trytond_purchase
+trytond_party
+trytond >= 1.0
+trytond < 1.1
\ No newline at end of file
diff --git a/trytond_stock_supply.egg-info/top_level.txt b/trytond_stock_supply.egg-info/top_level.txt
new file mode 100644
index 0000000..93df119
--- /dev/null
+++ b/trytond_stock_supply.egg-info/top_level.txt
@@ -0,0 +1 @@
+trytond
--
tryton-modules-stock-supply
More information about the tryton-debian-vcs
mailing list