[tryton-debian-vcs] tryton-modules-purchase-request branch upstream updated. upstream/4.2.0-2-gd61f4ac

Mathias Behrle tryton-debian-vcs at alioth.debian.org
Wed Jun 7 13:35:08 UTC 2017


The following commit has been merged in the upstream branch:
https://alioth.debian.org/plugins/scmgit/cgi-bin/gitweb.cgi/?p=tryton/tryton-modules-purchase-request.git;a=commitdiff;h=upstream/4.2.0-2-gd61f4ac

commit d61f4ac5dd5525d93cd3d68b99c46d9078dded11
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Wed Jun 7 15:27:33 2017 +0200

    Adding upstream version 4.4.1.
    
    Signed-off-by: Mathias Behrle <mathiasb at m9s.biz>

diff --git a/CHANGELOG b/CHANGELOG
index b40d94f..079411f 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,6 @@
+Version 4.4.1 - 2017-06-06
+* Bug fixes (see mercurial logs for details)
+
 Version 4.4.0 - 2017-05-01
 * Bug fixes (see mercurial logs for details)
 * Add requests on purchase line
diff --git a/PKG-INFO b/PKG-INFO
index 10006c7..5dd6940 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: trytond_purchase_request
-Version: 4.4.0
+Version: 4.4.1
 Summary: Tryton module for purchase requests
 Home-page: http://www.tryton.org/
 Author: Tryton
diff --git a/purchase.py b/purchase.py
index 703e5ba..2cb4e51 100644
--- a/purchase.py
+++ b/purchase.py
@@ -39,6 +39,7 @@ class Purchase:
         cls.check_delete_purchase_request(purchases)
         super(Purchase, cls).delete(purchases)
 
+    @classmethod
     def check_delete_purchase_request(cls, purchases):
         with Transaction().set_context(_check_access=False):
             purchases = cls.browse(purchases)
diff --git a/setup.cfg b/setup.cfg
index 861a9f5..8bfd5a1 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -1,5 +1,4 @@
 [egg_info]
 tag_build = 
 tag_date = 0
-tag_svn_revision = 0
 
diff --git a/tryton.cfg b/tryton.cfg
index f835f86..bfe1b2b 100644
--- a/tryton.cfg
+++ b/tryton.cfg
@@ -1,5 +1,5 @@
 [tryton]
-version=4.4.0
+version=4.4.1
 depends:
     ir
     purchase
diff --git a/trytond_purchase_request.egg-info/PKG-INFO b/trytond_purchase_request.egg-info/PKG-INFO
index f41e972..3670be7 100644
--- a/trytond_purchase_request.egg-info/PKG-INFO
+++ b/trytond_purchase_request.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: trytond-purchase-request
-Version: 4.4.0
+Version: 4.4.1
 Summary: Tryton module for purchase requests
 Home-page: http://www.tryton.org/
 Author: Tryton
commit 12d9331676067c4aa963d15d773b66c6306dca5b
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Wed Jun 7 15:26:53 2017 +0200

    Adding upstream version 4.4.0.
    
    Signed-off-by: Mathias Behrle <mathiasb at m9s.biz>

diff --git a/CHANGELOG b/CHANGELOG
index 5114ce7..b40d94f 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,7 @@
+Version 4.4.0 - 2017-05-01
+* Bug fixes (see mercurial logs for details)
+* Add requests on purchase line
+
 Version 4.2.0 - 2016-11-28
 * Bug fixes (see mercurial logs for details)
 * Allow request without product
diff --git a/COPYRIGHT b/COPYRIGHT
index 029f63b..4891bb6 100644
--- a/COPYRIGHT
+++ b/COPYRIGHT
@@ -1,8 +1,8 @@
-Copyright (C) 2016 Nicolas Évrard.
+Copyright (C) 2016-2017 Nicolas Évrard.
 Copyright (C) 2013-2015 NaN-tic.
-Copyright (C) 2008-2016 Cédric Krier.
+Copyright (C) 2008-2017 Cédric Krier.
 Copyright (C) 2008-2013 Bertrand Chenal.
-Copyright (C) 2008-2016 B2CK SPRL.
+Copyright (C) 2008-2017 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 6933766..10006c7 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,12 +1,12 @@
 Metadata-Version: 1.1
 Name: trytond_purchase_request
-Version: 4.2.0
+Version: 4.4.0
 Summary: Tryton module for purchase requests
 Home-page: http://www.tryton.org/
 Author: Tryton
 Author-email: issue_tracker at tryton.org
 License: GPL-3
-Download-URL: http://downloads.tryton.org/4.2/
+Download-URL: http://downloads.tryton.org/4.4/
 Description: trytond_purchase_request
         ========================
         
@@ -51,7 +51,7 @@ Classifier: Framework :: Tryton
 Classifier: Intended Audience :: Developers
 Classifier: Intended Audience :: Financial and Insurance Industry
 Classifier: Intended Audience :: Legal Industry
-Classifier: License :: OSI Approved :: GNU General Public License (GPL)
+Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
 Classifier: Natural Language :: Bulgarian
 Classifier: Natural Language :: Catalan
 Classifier: Natural Language :: Chinese (Simplified)
diff --git a/__init__.py b/__init__.py
index 255b40b..3085bd7 100644
--- a/__init__.py
+++ b/__init__.py
@@ -13,6 +13,7 @@ def register():
         HandlePurchaseCancellationExceptionStart,
         CreatePurchaseAskParty,
         Purchase,
+        PurchaseLine,
         module='purchase_request', type_='model')
     Pool.register(
         CreatePurchase,
diff --git a/locale/bg.po b/locale/bg.po
index 24edd7d..46fff85 100644
--- a/locale/bg.po
+++ b/locale/bg.po
@@ -24,6 +24,10 @@ msgctxt "error:purchase.request:"
 msgid "You can not delete purchased request."
 msgstr ""
 
+msgctxt "field:purchase.line,requests:"
+msgid "Requests"
+msgstr ""
+
 #, fuzzy
 msgctxt "field:purchase.request,company:"
 msgid "Company"
diff --git a/locale/ca.po b/locale/ca.po
index 2ea9214..3f33b29 100644
--- a/locale/ca.po
+++ b/locale/ca.po
@@ -26,6 +26,10 @@ msgctxt "error:purchase.request:"
 msgid "You can not delete purchased request."
 msgstr "No podeu eliminar sol·licituds de compra."
 
+msgctxt "field:purchase.line,requests:"
+msgid "Requests"
+msgstr "Sol·licituds"
+
 msgctxt "field:purchase.request,company:"
 msgid "Company"
 msgstr "Empresa"
@@ -100,7 +104,7 @@ msgstr "Estat"
 
 msgctxt "field:purchase.request,stock_level:"
 msgid "Stock at Supply Date"
-msgstr "Estoc a data de subministre"
+msgstr "Existències a data de subministre"
 
 msgctxt "field:purchase.request,supply_date:"
 msgid "Expected Supply Date"
diff --git a/locale/cs.po b/locale/cs.po
index c6db10b..8955c89 100644
--- a/locale/cs.po
+++ b/locale/cs.po
@@ -24,6 +24,10 @@ msgctxt "error:purchase.request:"
 msgid "You can not delete purchased request."
 msgstr ""
 
+msgctxt "field:purchase.line,requests:"
+msgid "Requests"
+msgstr ""
+
 msgctxt "field:purchase.request,company:"
 msgid "Company"
 msgstr ""
diff --git a/locale/de.po b/locale/de.po
index 98f2f48..282cc9a 100644
--- a/locale/de.po
+++ b/locale/de.po
@@ -26,6 +26,10 @@ msgctxt "error:purchase.request:"
 msgid "You can not delete purchased request."
 msgstr "Ein beauftragter Bestellvorschlag kann nicht gelöscht werden."
 
+msgctxt "field:purchase.line,requests:"
+msgid "Requests"
+msgstr "Anfragen"
+
 msgctxt "field:purchase.request,company:"
 msgid "Company"
 msgstr "Unternehmen"
diff --git a/locale/es.po b/locale/es.po
index 615a9c7..e3d889b 100644
--- a/locale/es.po
+++ b/locale/es.po
@@ -26,6 +26,10 @@ msgctxt "error:purchase.request:"
 msgid "You can not delete purchased request."
 msgstr "No puede eliminar solicitudes de compra."
 
+msgctxt "field:purchase.line,requests:"
+msgid "Requests"
+msgstr "Solicitudes"
+
 msgctxt "field:purchase.request,company:"
 msgid "Company"
 msgstr "Empresa"
@@ -100,7 +104,7 @@ msgstr "Estado"
 
 msgctxt "field:purchase.request,stock_level:"
 msgid "Stock at Supply Date"
-msgstr "Stock a fecha de suministro"
+msgstr "Existencias a fecha de suministro"
 
 msgctxt "field:purchase.request,supply_date:"
 msgid "Expected Supply Date"
diff --git a/locale/es_419.po b/locale/es_419.po
index 4a54cff..523ed88 100644
--- a/locale/es_419.po
+++ b/locale/es_419.po
@@ -7,6 +7,8 @@ msgid ""
 "You can not delete the purchase \"%(purchase)s\" because it is linked to at "
 "least one purchase request."
 msgstr ""
+"No puede eliminar la compra \"%(purchase)s\" porque está asociada al menos a"
+" una solicitud de compra."
 
 msgctxt "error:purchase.request.create_purchase:"
 msgid "Purchase price is missing for product \"%s\"."
@@ -18,12 +20,16 @@ msgstr ""
 
 msgctxt "error:purchase.request:"
 msgid "Purchase requests are only created by the system."
-msgstr ""
+msgstr "Las solicitudes de compra sólo son creadas por el sistema."
 
 msgctxt "error:purchase.request:"
 msgid "You can not delete purchased request."
 msgstr ""
 
+msgctxt "field:purchase.line,requests:"
+msgid "Requests"
+msgstr ""
+
 msgctxt "field:purchase.request,company:"
 msgid "Company"
 msgstr ""
@@ -42,7 +48,7 @@ msgstr ""
 
 msgctxt "field:purchase.request,create_uid:"
 msgid "Create User"
-msgstr ""
+msgstr "Creado por usuario"
 
 msgctxt "field:purchase.request,default_uom_digits:"
 msgid "Default UOM Digits"
@@ -102,7 +108,7 @@ msgstr ""
 
 msgctxt "field:purchase.request,supply_date:"
 msgid "Expected Supply Date"
-msgstr ""
+msgstr "Fecha de suministro estimada"
 
 msgctxt "field:purchase.request,uom:"
 msgid "UOM"
@@ -114,11 +120,11 @@ msgstr ""
 
 msgctxt "field:purchase.request,warehouse:"
 msgid "Warehouse"
-msgstr ""
+msgstr "Bodega"
 
 msgctxt "field:purchase.request,warehouse_required:"
 msgid "Warehouse Required"
-msgstr ""
+msgstr "Bodega requerida"
 
 msgctxt "field:purchase.request,write_date:"
 msgid "Write Date"
@@ -126,7 +132,7 @@ msgstr ""
 
 msgctxt "field:purchase.request,write_uid:"
 msgid "Write User"
-msgstr ""
+msgstr "Modificado por usuario"
 
 msgctxt "field:purchase.request.create_purchase.ask_party,company:"
 msgid "Company"
@@ -154,39 +160,38 @@ msgstr ""
 
 msgctxt "model:ir.action,name:act_purchase_request_form"
 msgid "Purchase Requests"
-msgstr "Purchase Requests"
+msgstr ""
 
 msgctxt "model:ir.action,name:wizard_create_purchase"
 msgid "Create Purchase"
-msgstr "Create Purchase"
+msgstr ""
 
 msgctxt "model:ir.action,name:wizard_purchase_cancellation_handle_exception"
 msgid "Handle Purchase Cancellation"
-msgstr "Handle Purchase Cancellation"
+msgstr ""
 
 msgctxt ""
 "model:ir.action.act_window.domain,name:act_purchase_request_form_domain_all"
 msgid "All"
-msgstr "All"
+msgstr ""
 
 msgctxt ""
 "model:ir.action.act_window.domain,name:act_purchase_request_form_domain_draft"
 msgid "Draft"
-msgstr "Draft"
+msgstr ""
 
 msgctxt ""
 "model:ir.action.act_window.domain,name:act_purchase_request_form_domain_exception"
 msgid "Exception"
-msgstr "Exception"
+msgstr ""
 
 msgctxt "model:ir.ui.menu,name:menu_purchase_request_form"
 msgid "Purchase Requests"
-msgstr "Purchase Requests"
+msgstr ""
 
-#, fuzzy
 msgctxt "model:purchase.request,name:"
 msgid "Purchase Request"
-msgstr "Purchase Request"
+msgstr ""
 
 msgctxt "model:purchase.request.create_purchase.ask_party,name:"
 msgid "Create Purchase Ask Party"
@@ -194,11 +199,11 @@ msgstr ""
 
 msgctxt "model:purchase.request.handle.purchase.cancellation.start,name:"
 msgid "Handle Purchase Cancellation Exception - Start"
-msgstr ""
+msgstr "Gestionar excepción de cancelación de compra - Inicio"
 
 msgctxt "model:res.group,name:group_purchase_request"
 msgid "Purchase Request"
-msgstr "Purchase Request"
+msgstr ""
 
 msgctxt "selection:purchase.request,state:"
 msgid "Cancel"
@@ -206,17 +211,15 @@ msgstr ""
 
 msgctxt "selection:purchase.request,state:"
 msgid "Done"
-msgstr ""
+msgstr "Realizada"
 
-#, fuzzy
 msgctxt "selection:purchase.request,state:"
 msgid "Draft"
-msgstr "Draft"
+msgstr ""
 
-#, fuzzy
 msgctxt "selection:purchase.request,state:"
 msgid "Exception"
-msgstr "Exception"
+msgstr ""
 
 msgctxt "selection:purchase.request,state:"
 msgid "Purchased"
@@ -226,18 +229,17 @@ msgctxt "view:purchase.request.handle.purchase.cancellation.start:"
 msgid "Do you want to cancel the request or to reset it to draft?"
 msgstr ""
 
-#, fuzzy
 msgctxt "view:purchase.request:"
 msgid "Handle Purchase Cancellation"
-msgstr "Handle Purchase Cancellation"
+msgstr ""
 
 msgctxt "view:purchase.request:"
 msgid "Product Info"
-msgstr ""
+msgstr "Información de producto"
 
 msgctxt "view:purchase.request:"
 msgid "Supply Info"
-msgstr ""
+msgstr "Información de proveedor"
 
 msgctxt "wizard_button:purchase.request.create_purchase,ask_party,end:"
 msgid "Cancel"
diff --git a/locale/fr.po b/locale/fr.po
index 26e108b..f34e62d 100644
--- a/locale/fr.po
+++ b/locale/fr.po
@@ -26,6 +26,10 @@ msgctxt "error:purchase.request:"
 msgid "You can not delete purchased request."
 msgstr "Vous ne pouvez pas supprimer des demandes d'achat commandées."
 
+msgctxt "field:purchase.line,requests:"
+msgid "Requests"
+msgstr "Demandes"
+
 msgctxt "field:purchase.request,company:"
 msgid "Company"
 msgstr "Société"
diff --git a/locale/hu_HU.po b/locale/hu_HU.po
index b03a658..5c9089a 100644
--- a/locale/hu_HU.po
+++ b/locale/hu_HU.po
@@ -24,6 +24,10 @@ msgctxt "error:purchase.request:"
 msgid "You can not delete purchased request."
 msgstr ""
 
+msgctxt "field:purchase.line,requests:"
+msgid "Requests"
+msgstr ""
+
 #, fuzzy
 msgctxt "field:purchase.request,company:"
 msgid "Company"
diff --git a/locale/it_IT.po b/locale/it_IT.po
index b7c3a8c..0ed0b2c 100644
--- a/locale/it_IT.po
+++ b/locale/it_IT.po
@@ -24,6 +24,10 @@ msgctxt "error:purchase.request:"
 msgid "You can not delete purchased request."
 msgstr ""
 
+msgctxt "field:purchase.line,requests:"
+msgid "Requests"
+msgstr ""
+
 #, fuzzy
 msgctxt "field:purchase.request,company:"
 msgid "Company"
diff --git a/locale/ja_JP.po b/locale/ja_JP.po
index 4a54cff..d637895 100644
--- a/locale/ja_JP.po
+++ b/locale/ja_JP.po
@@ -24,6 +24,10 @@ msgctxt "error:purchase.request:"
 msgid "You can not delete purchased request."
 msgstr ""
 
+msgctxt "field:purchase.line,requests:"
+msgid "Requests"
+msgstr ""
+
 msgctxt "field:purchase.request,company:"
 msgid "Company"
 msgstr ""
diff --git a/locale/lo.po b/locale/lo.po
index b4480f1..f83d346 100644
--- a/locale/lo.po
+++ b/locale/lo.po
@@ -24,6 +24,10 @@ msgctxt "error:purchase.request:"
 msgid "You can not delete purchased request."
 msgstr ""
 
+msgctxt "field:purchase.line,requests:"
+msgid "Requests"
+msgstr ""
+
 #, fuzzy
 msgctxt "field:purchase.request,company:"
 msgid "Company"
diff --git a/locale/lt.po b/locale/lt.po
index c6db10b..8955c89 100644
--- a/locale/lt.po
+++ b/locale/lt.po
@@ -24,6 +24,10 @@ msgctxt "error:purchase.request:"
 msgid "You can not delete purchased request."
 msgstr ""
 
+msgctxt "field:purchase.line,requests:"
+msgid "Requests"
+msgstr ""
+
 msgctxt "field:purchase.request,company:"
 msgid "Company"
 msgstr ""
diff --git a/locale/nl.po b/locale/nl.po
index a459b25..f40bcbd 100644
--- a/locale/nl.po
+++ b/locale/nl.po
@@ -24,6 +24,10 @@ msgctxt "error:purchase.request:"
 msgid "You can not delete purchased request."
 msgstr ""
 
+msgctxt "field:purchase.line,requests:"
+msgid "Requests"
+msgstr ""
+
 #, fuzzy
 msgctxt "field:purchase.request,company:"
 msgid "Company"
diff --git a/locale/pl.po b/locale/pl.po
index 4a54cff..d637895 100644
--- a/locale/pl.po
+++ b/locale/pl.po
@@ -24,6 +24,10 @@ msgctxt "error:purchase.request:"
 msgid "You can not delete purchased request."
 msgstr ""
 
+msgctxt "field:purchase.line,requests:"
+msgid "Requests"
+msgstr ""
+
 msgctxt "field:purchase.request,company:"
 msgid "Company"
 msgstr ""
diff --git a/locale/pt_BR.po b/locale/pt_BR.po
index a1988e2..1187ff1 100644
--- a/locale/pt_BR.po
+++ b/locale/pt_BR.po
@@ -7,285 +7,253 @@ msgid ""
 "You can not delete the purchase \"%(purchase)s\" because it is linked to at "
 "least one purchase request."
 msgstr ""
+"Você não pode apagar a compra \"%(purchase)s\", pois ela está vinculada a "
+"pelo menos um pedido de compra."
 
 msgctxt "error:purchase.request.create_purchase:"
 msgid "Purchase price is missing for product \"%s\"."
-msgstr ""
+msgstr "Preço de compra está faltando para produto \"%s\"."
 
 msgctxt "error:purchase.request.create_purchase:"
 msgid "This price is necessary for creating purchases."
-msgstr ""
+msgstr "Este preço é necessário para criar compras."
 
 msgctxt "error:purchase.request:"
 msgid "Purchase requests are only created by the system."
-msgstr ""
+msgstr "Pedidos de compra são criados apenas pelo sistema."
 
 msgctxt "error:purchase.request:"
 msgid "You can not delete purchased request."
-msgstr ""
+msgstr "Você não pode apagar pedido de compra."
+
+msgctxt "field:purchase.line,requests:"
+msgid "Requests"
+msgstr "Pedidos"
 
-#, fuzzy
 msgctxt "field:purchase.request,company:"
 msgid "Company"
 msgstr "Empresa"
 
 msgctxt "field:purchase.request,computed_quantity:"
 msgid "Computed Quantity"
-msgstr ""
+msgstr "Quantidade Calculada"
 
 msgctxt "field:purchase.request,computed_uom:"
 msgid "Computed UOM"
-msgstr ""
+msgstr "UDM Calculada"
 
-#, fuzzy
 msgctxt "field:purchase.request,create_date:"
 msgid "Create Date"
 msgstr "Data de criação"
 
-#, fuzzy
 msgctxt "field:purchase.request,create_uid:"
 msgid "Create User"
-msgstr "Usuário de Criação"
+msgstr "Criado por"
 
 msgctxt "field:purchase.request,default_uom_digits:"
 msgid "Default UOM Digits"
-msgstr ""
+msgstr "Dígitos Decimais Padrões da UDM"
 
-#, fuzzy
 msgctxt "field:purchase.request,description:"
 msgid "Description"
 msgstr "Descrição"
 
 msgctxt "field:purchase.request,exception_ignored:"
 msgid "Ignored Exception"
-msgstr ""
+msgstr "Exceção Ignorada"
 
-#, fuzzy
 msgctxt "field:purchase.request,id:"
 msgid "ID"
 msgstr "ID"
 
-#, fuzzy
 msgctxt "field:purchase.request,origin:"
 msgid "Origin"
 msgstr "Origem"
 
-#, fuzzy
 msgctxt "field:purchase.request,party:"
 msgid "Party"
 msgstr "Pessoa"
 
-#, fuzzy
 msgctxt "field:purchase.request,product:"
 msgid "Product"
 msgstr "Produto"
 
-#, fuzzy
 msgctxt "field:purchase.request,purchase:"
 msgid "Purchase"
-msgstr "Comprar"
+msgstr "Compra"
 
 msgctxt "field:purchase.request,purchase_date:"
 msgid "Best Purchase Date"
-msgstr ""
+msgstr "Melhor Data de Compra"
 
-#, fuzzy
 msgctxt "field:purchase.request,purchase_line:"
 msgid "Purchase Line"
-msgstr "Linha da compra"
+msgstr "Linha da Compra"
 
-#, fuzzy
 msgctxt "field:purchase.request,quantity:"
 msgid "Quantity"
 msgstr "Quantidade"
 
-#, fuzzy
 msgctxt "field:purchase.request,rec_name:"
 msgid "Name"
 msgstr "Nome"
 
-#, fuzzy
 msgctxt "field:purchase.request,state:"
 msgid "State"
-msgstr "State"
+msgstr "Estado"
 
 msgctxt "field:purchase.request,stock_level:"
 msgid "Stock at Supply Date"
-msgstr ""
+msgstr "Estoque na Data de Abastecimento"
 
 msgctxt "field:purchase.request,supply_date:"
 msgid "Expected Supply Date"
-msgstr ""
+msgstr "Data Esperada de Abastecimento"
 
-#, fuzzy
 msgctxt "field:purchase.request,uom:"
 msgid "UOM"
-msgstr "UM"
+msgstr "UDM"
 
 msgctxt "field:purchase.request,uom_digits:"
 msgid "UOM Digits"
-msgstr ""
+msgstr "Dígitos Decimais da UDM"
 
-#, fuzzy
 msgctxt "field:purchase.request,warehouse:"
 msgid "Warehouse"
-msgstr "Estoque/Almoxarifado"
+msgstr "Almoxarifado"
 
 msgctxt "field:purchase.request,warehouse_required:"
 msgid "Warehouse Required"
-msgstr ""
+msgstr "Almoxarifado Obrigatório"
 
-#, fuzzy
 msgctxt "field:purchase.request,write_date:"
 msgid "Write Date"
-msgstr "Editado por"
+msgstr "Data de edição"
 
-#, fuzzy
 msgctxt "field:purchase.request,write_uid:"
 msgid "Write User"
-msgstr "Gravado por"
+msgstr "Editado por"
 
-#, fuzzy
 msgctxt "field:purchase.request.create_purchase.ask_party,company:"
 msgid "Company"
 msgstr "Empresa"
 
-#, fuzzy
 msgctxt "field:purchase.request.create_purchase.ask_party,description:"
 msgid "Description"
 msgstr "Descrição"
 
-#, fuzzy
 msgctxt "field:purchase.request.create_purchase.ask_party,id:"
 msgid "ID"
 msgstr "ID"
 
-#, fuzzy
 msgctxt "field:purchase.request.create_purchase.ask_party,party:"
 msgid "Supplier"
 msgstr "Fornecedor"
 
-#, fuzzy
 msgctxt "field:purchase.request.create_purchase.ask_party,product:"
 msgid "Product"
 msgstr "Produto"
 
-#, fuzzy
 msgctxt "field:purchase.request.handle.purchase.cancellation.start,id:"
 msgid "ID"
 msgstr "ID"
 
-#, fuzzy
 msgctxt "model:ir.action,name:act_purchase_request_form"
 msgid "Purchase Requests"
-msgstr "Requisições de Compra"
+msgstr "Pedidos de Compra"
 
 msgctxt "model:ir.action,name:wizard_create_purchase"
 msgid "Create Purchase"
-msgstr ""
+msgstr "Criar Compra"
 
 msgctxt "model:ir.action,name:wizard_purchase_cancellation_handle_exception"
 msgid "Handle Purchase Cancellation"
-msgstr ""
+msgstr "Gerenciamento de Cancelamento de Compra"
 
-#, fuzzy
 msgctxt ""
 "model:ir.action.act_window.domain,name:act_purchase_request_form_domain_all"
 msgid "All"
-msgstr "Tudo"
+msgstr "Todos"
 
-#, fuzzy
 msgctxt ""
 "model:ir.action.act_window.domain,name:act_purchase_request_form_domain_draft"
 msgid "Draft"
 msgstr "Rascunho"
 
-#, fuzzy
 msgctxt ""
 "model:ir.action.act_window.domain,name:act_purchase_request_form_domain_exception"
 msgid "Exception"
 msgstr "Exceção"
 
-#, fuzzy
 msgctxt "model:ir.ui.menu,name:menu_purchase_request_form"
 msgid "Purchase Requests"
-msgstr "Requisições de Compra"
+msgstr "Pedidos de Compra"
 
-#, fuzzy
 msgctxt "model:purchase.request,name:"
 msgid "Purchase Request"
-msgstr "Requisição de Compra"
+msgstr "Pedidos de Compra"
 
 msgctxt "model:purchase.request.create_purchase.ask_party,name:"
 msgid "Create Purchase Ask Party"
-msgstr ""
+msgstr "Criar Pedido de Compra"
 
 msgctxt "model:purchase.request.handle.purchase.cancellation.start,name:"
 msgid "Handle Purchase Cancellation Exception - Start"
-msgstr ""
+msgstr "Gerenciamento de Cancelamento de Compra Exceção - Início"
 
-#, fuzzy
 msgctxt "model:res.group,name:group_purchase_request"
 msgid "Purchase Request"
-msgstr "Requisição de Compra"
+msgstr "Pedido de Compra"
 
-#, fuzzy
 msgctxt "selection:purchase.request,state:"
 msgid "Cancel"
 msgstr "Cancelar"
 
-#, fuzzy
 msgctxt "selection:purchase.request,state:"
 msgid "Done"
 msgstr "Feito"
 
-#, fuzzy
 msgctxt "selection:purchase.request,state:"
 msgid "Draft"
 msgstr "Rascunho"
 
-#, fuzzy
 msgctxt "selection:purchase.request,state:"
 msgid "Exception"
 msgstr "Exceção"
 
-#, fuzzy
 msgctxt "selection:purchase.request,state:"
 msgid "Purchased"
 msgstr "Comprado"
 
 msgctxt "view:purchase.request.handle.purchase.cancellation.start:"
 msgid "Do you want to cancel the request or to reset it to draft?"
-msgstr ""
+msgstr "Você quer cancelar o pedido ou voltar para rascunho?"
 
 msgctxt "view:purchase.request:"
 msgid "Handle Purchase Cancellation"
-msgstr ""
+msgstr "Gerenciamento de Cancelamento de Compra"
 
-#, fuzzy
 msgctxt "view:purchase.request:"
 msgid "Product Info"
 msgstr "Informação do Produto"
 
 msgctxt "view:purchase.request:"
 msgid "Supply Info"
-msgstr ""
+msgstr "Informações de Abastecimento"
 
-#, 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"
 
 msgctxt ""
 "wizard_button:purchase.request.handle.purchase.cancellation,start,cancel_request:"
 msgid "Cancel Request"
-msgstr ""
+msgstr "Cancelar Pedido"
 
-#, fuzzy
 msgctxt ""
 "wizard_button:purchase.request.handle.purchase.cancellation,start,end:"
 msgid "Cancel"
@@ -294,4 +262,4 @@ msgstr "Cancelar"
 msgctxt ""
 "wizard_button:purchase.request.handle.purchase.cancellation,start,reset:"
 msgid "Reset to draft"
-msgstr ""
+msgstr "Voltar para rascunho"
diff --git a/locale/ru.po b/locale/ru.po
index e85feda..bbd420e 100644
--- a/locale/ru.po
+++ b/locale/ru.po
@@ -24,6 +24,10 @@ msgctxt "error:purchase.request:"
 msgid "You can not delete purchased request."
 msgstr ""
 
+msgctxt "field:purchase.line,requests:"
+msgid "Requests"
+msgstr ""
+
 #, fuzzy
 msgctxt "field:purchase.request,company:"
 msgid "Company"
diff --git a/locale/sl.po b/locale/sl.po
index 6a91153..2263714 100644
--- a/locale/sl.po
+++ b/locale/sl.po
@@ -26,6 +26,10 @@ msgctxt "error:purchase.request:"
 msgid "You can not delete purchased request."
 msgstr "Nabavnega zahtevka ni možno izbrisati."
 
+msgctxt "field:purchase.line,requests:"
+msgid "Requests"
+msgstr "Zahtevki"
+
 msgctxt "field:purchase.request,company:"
 msgid "Company"
 msgstr "Družba"
@@ -50,7 +54,6 @@ msgctxt "field:purchase.request,default_uom_digits:"
 msgid "Default UOM Digits"
 msgstr "Privzete decimalke"
 
-#, fuzzy
 msgctxt "field:purchase.request,description:"
 msgid "Description"
 msgstr "Opis"
@@ -135,7 +138,6 @@ msgctxt "field:purchase.request.create_purchase.ask_party,company:"
 msgid "Company"
 msgstr "Družba"
 
-#, fuzzy
 msgctxt "field:purchase.request.create_purchase.ask_party,description:"
 msgid "Description"
 msgstr "Opis"
diff --git a/locale/zh_CN.po b/locale/zh_CN.po
index dfe9a65..4be4ae6 100644
--- a/locale/zh_CN.po
+++ b/locale/zh_CN.po
@@ -24,6 +24,10 @@ msgctxt "error:purchase.request:"
 msgid "You can not delete purchased request."
 msgstr ""
 
+msgctxt "field:purchase.line,requests:"
+msgid "Requests"
+msgstr ""
+
 msgctxt "field:purchase.request,company:"
 msgid "Company"
 msgstr ""
diff --git a/purchase.py b/purchase.py
index f78e39f..703e5ba 100644
--- a/purchase.py
+++ b/purchase.py
@@ -1,10 +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 functools import wraps
 
-from trytond.tools import grouped_slice
-from trytond.pool import Pool, PoolMeta
+from trytond.pool import PoolMeta, Pool
+from trytond.model import ModelView, Workflow, fields
+from trytond.transaction import Transaction
+from trytond.pyson import Eval
 
-__all__ = ['Purchase']
+__all__ = ['Purchase', 'PurchaseLine']
+
+
+def process_request(func):
+    @wraps(func)
+    def wrapper(cls, purchases):
+        pool = Pool()
+        Request = pool.get('purchase.request')
+        func(cls, purchases)
+        requests = [r for p in purchases for l in p.lines for r in l.requests]
+        Request.update_state(requests)
+    return wrapper
 
 
 class Purchase:
@@ -22,20 +36,49 @@ class Purchase:
 
     @classmethod
     def delete(cls, purchases):
-        pool = Pool()
-        PurchaseRequest = pool.get('purchase.request')
-
-        purchase_lines = [pl.id
-            for purchase in purchases for pl in purchase.lines]
-        for sub_lines in grouped_slice(purchase_lines):
-            requests = PurchaseRequest.search([
-                    ('purchase_line', 'in', list(sub_lines)),
-                    ],
-                limit=1)
-            if requests:
-                purchase = requests[0].purchase
-                cls.raise_user_error('delete_purchase_request', {
-                        'purchase': purchase.rec_name,
-                        })
-
+        cls.check_delete_purchase_request(purchases)
         super(Purchase, cls).delete(purchases)
+
+    def check_delete_purchase_request(cls, purchases):
+        with Transaction().set_context(_check_access=False):
+            purchases = cls.browse(purchases)
+        for purchase in purchases:
+            for line in purchase.lines:
+                if line.requests:
+                    cls.raise_user_error('delete_purchase_request', {
+                            'purchase': purchase.rec_name,
+                            })
+
+    @classmethod
+    @ModelView.button
+    @Workflow.transition('cancel')
+    @process_request
+    def cancel(cls, purchases):
+        super(Purchase, cls).cancel(purchases)
+
+    @classmethod
+    @Workflow.transition('done')
+    @process_request
+    def do(cls, purchases):
+        super(Purchase, cls).do(purchases)
+
+
+class PurchaseLine:
+    __metaclass__ = PoolMeta
+    __name__ = 'purchase.line'
+
+    requests = fields.One2Many(
+        'purchase.request', 'purchase_line', "Requests", readonly=True,
+        states={
+            'invisible': ~Eval('requests'),
+            })
+
+    @classmethod
+    def delete(cls, lines):
+        pool = Pool()
+        Request = pool.get('purchase.request')
+        with Transaction().set_context(_check_access=False):
+            requests = [r for l in cls.browse(lines) for r in l.requests]
+        super(PurchaseLine, cls).delete(lines)
+        with Transaction().set_context(_check_access=False):
+            Request.update_state(requests)
diff --git a/purchase.xml b/purchase.xml
new file mode 100644
index 0000000..88f41a7
--- /dev/null
+++ b/purchase.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. -->
+<tryton>
+    <data>
+        <record model="ir.ui.view" id="purchase_line_view_form">
+            <field name="model">purchase.line</field>
+            <field name="inherit" ref="purchase.purchase_line_view_form"/>
+            <field name="name">purchase_line_form</field>
+        </record>
+    </data>
+</tryton>
diff --git a/purchase_request.py b/purchase_request.py
index 0eef1f0..ef2aa42 100644
--- a/purchase_request.py
+++ b/purchase_request.py
@@ -2,12 +2,9 @@
 # this repository contains the full copyright notices and license terms.
 import datetime
 from decimal import Decimal
-from itertools import groupby
+from itertools import groupby, ifilter
 from functools import partial
 
-from sql import Null
-from sql.conditionals import Case
-
 from trytond import backend
 from trytond.model import ModelView, ModelSQL, fields
 from trytond.wizard import Wizard, StateView, StateTransition, Button
@@ -82,13 +79,13 @@ class PurchaseRequest(ModelSQL, ModelView):
     origin = fields.Reference('Origin', selection='get_origin', readonly=True,
             required=True)
     exception_ignored = fields.Boolean('Ignored Exception')
-    state = fields.Function(fields.Selection([
-        ('purchased', 'Purchased'),
-        ('done', 'Done'),
-        ('draft', 'Draft'),
-        ('cancel', 'Cancel'),
-        ('exception', 'Exception'),
-        ], 'State'), 'get_state', searcher='search_state')
+    state = fields.Selection([
+            ('purchased', "Purchased"),
+            ('done', "Done"),
+            ('draft', "Draft"),
+            ('cancel', "Cancel"),
+            ('exception', "Exception"),
+            ], "State", required=True, readonly=True, select=True)
 
     @classmethod
     def __setup__(cls):
@@ -110,8 +107,17 @@ class PurchaseRequest(ModelSQL, ModelView):
     def __register__(cls, module_name):
         pool = Pool()
         ModelData = pool.get('ir.model.data')
+        Purchase = pool.get('purchase.purchase')
+        PurchaseLine = pool.get('purchase.line')
         TableHandler = backend.get('TableHandler')
         model_data = ModelData.__table__()
+        purchase = Purchase.__table__()
+        purchase_line = PurchaseLine.__table__()
+        request = cls.__table__()
+
+        tablehandler = TableHandler(cls, module_name)
+        state_exist = tablehandler.column_exist('state')
+
         super(PurchaseRequest, cls).__register__(module_name)
 
         # Migration from 3.6: removing the constraint on the quantity
@@ -130,6 +136,31 @@ class PurchaseRequest(ModelSQL, ModelView):
         tablehandler.not_null_action('product', action='remove')
         tablehandler.not_null_action('uom', action='remove')
 
+        # Migration from 4.2: add state
+        if not state_exist:
+            cursor = Transaction().connection.cursor()
+            update = Transaction().connection.cursor()
+            query = request.join(purchase_line, type_='INNER',
+                condition=request.purchase_line == purchase_line.id
+                ).join(purchase, type_='INNER',
+                    condition=purchase_line.purchase == purchase.id
+                    ).select(
+                        request.id, purchase.state, request.exception_ignored)
+            cursor.execute(*query)
+            for request_id, purchase_state, exception_ignored in cursor:
+                if purchase_state == 'cancel' and not exception_ignored:
+                    state = 'exception'
+                elif purchase_state == 'cancel':
+                    state = 'cancel'
+                elif purchase_state == 'done':
+                    state = 'done'
+                else:
+                    state = 'purchased'
+                update.execute(*request.update(
+                        [request.state],
+                        [state],
+                        where=request.id == request_id))
+
     def get_rec_name(self, name):
         product_name = (self.product.name if self.product else
             self.description.splitlines()[0])
@@ -169,7 +200,11 @@ class PurchaseRequest(ModelSQL, ModelView):
     def currency(self):
         return self.company.currency
 
-    def get_state(self, name):
+    @classmethod
+    def default_state(cls):
+        return 'draft'
+
+    def get_state(self):
         if self.purchase_line:
             if (self.purchase_line.purchase.state == 'cancel'
                     and not self.exception_ignored):
@@ -183,35 +218,12 @@ class PurchaseRequest(ModelSQL, ModelView):
         return 'draft'
 
     @classmethod
-    def search_state(cls, name, clause):
-        pool = Pool()
-        Purchase = pool.get('purchase.purchase')
-        PurchaseLine = pool.get('purchase.line')
-
-        request = cls.__table__()
-        purchase_line = PurchaseLine.__table__()
-        purchase = Purchase.__table__()
-
-        _, operator_, state = clause
-        Operator = fields.SQL_OPERATORS[operator_]
-        state_case = Case(
-            ((purchase.state == 'cancel')
-                & (request.exception_ignored == False), 'exception'),
-            ((purchase.state == 'cancel')
-                & (request.exception_ignored == True), 'cancel'),
-            (purchase.state == 'done', 'done'),
-            (request.purchase_line != Null, 'purchased'),
-            else_='draft')
-        state_query = request.join(
-            purchase_line, type_='LEFT',
-            condition=request.purchase_line == purchase_line.id
-            ).join(purchase, type_='LEFT',
-            condition=purchase_line.purchase == purchase.id
-            ).select(
-            request.id,
-            where=Operator(state_case, state))
-
-        return [('id', 'in', state_query)]
+    def update_state(cls, requests):
+        for request in requests:
+            state = request.get_state()
+            if state != request.state:
+                request.state = state
+        cls.save(requests)
 
     def get_warehouse_required(self, name):
         return self.product and self.product.type in ('goods', 'assets')
@@ -357,20 +369,19 @@ class CreatePurchase(Wizard):
         pool = Pool()
         Request = pool.get('purchase.request')
         Purchase = pool.get('purchase.purchase')
+        Line = pool.get('purchase.line')
         Date = pool.get('ir.date')
 
-        request_ids = Transaction().context['active_ids']
+        requests = Request.browse(Transaction().context['active_ids'])
 
         if (getattr(self.ask_party, 'party', None)
                 and getattr(self.ask_party, 'company', None)):
-            reqs = Request.search([
-                    ('id', 'in', request_ids),
-                    ('purchase_line', '=', None),
-                    ('party', '=', None),
-                    ('product', '=', (self.ask_party.product.id
-                            if self.ask_party.product else None)),
-                    ('description', '=', self.ask_party.description),
-                    ])
+            def to_write(request):
+                return (not request.purchase_line
+                    and not request.party
+                    and request.product == self.ask_party.product
+                    and request.description == self.ask_party.description)
+            reqs = filter(to_write, requests)
             if reqs:
                 Request.write(reqs, {
                         'party': self.ask_party.party.id,
@@ -380,22 +391,21 @@ class CreatePurchase(Wizard):
             self.ask_party.party = None
             self.ask_party.company = None
 
-        reqs = Request.search([
-                ('id', 'in', request_ids),
-                ('purchase_line', '=', None),
-                ('party', '=', None),
-                ])
-        if reqs:
+        def to_ask_party(request):
+            return not request.purchase_line and not request.party
+        reqs = ifilter(to_ask_party, requests)
+        if any(reqs):
             return 'ask_party'
 
         today = Date.today()
-        requests = Request.browse(request_ids)
 
         requests = [r for r in requests if not r.purchase_line]
 
         keyfunc = partial(self._group_purchase_key, requests)
         requests = sorted(requests, key=keyfunc)
 
+        purchases = []
+        lines = []
         for key, grouped_requests in groupby(requests, key=keyfunc):
             grouped_requests = list(grouped_requests)
             try:
@@ -409,17 +419,18 @@ class CreatePurchase(Wizard):
             purchase = Purchase(purchase_date=purchase_date)
             for f, v in key:
                 setattr(purchase, f, v)
-            purchase.save()
+            purchases.append(purchase)
             for line_key, line_requests in groupby(
                     grouped_requests, key=self._group_purchase_line_key):
                 line_requests = list(line_requests)
                 line = self.compute_purchase_line(
                     line_key, line_requests, purchase)
                 line.purchase = purchase
-                line.save()
-                Request.write(line_requests, {
-                        'purchase_line': line.id,
-                        })
+                line.requests = line_requests
+                lines.append(line)
+        Purchase.save(purchases)
+        Line.save(lines)
+        Request.update_state(requests)
         return 'end'
 
     @staticmethod
@@ -489,9 +500,9 @@ class HandlePurchaseCancellationException(Wizard):
         PurchaseRequest = pool.get('purchase.request')
 
         requests = PurchaseRequest.browse(Transaction().context['active_ids'])
-        PurchaseRequest.write(requests, {
-                'purchase_line': None,
-                })
+        for request in requests:
+            request.purchase_line = None
+        PurchaseRequest.update_state(requests)
         return 'end'
 
     def transition_cancel_request(self):
@@ -499,9 +510,9 @@ class HandlePurchaseCancellationException(Wizard):
         PurchaseRequest = pool.get('purchase.request')
 
         requests = PurchaseRequest.browse(Transaction().context['active_ids'])
-        PurchaseRequest.write(requests, {
-                'exception_ignored': True,
-                })
+        for request in requests:
+            request.exception_ignored = True
+        PurchaseRequest.update_state(requests)
         return 'end'
 
 
diff --git a/purchase_request.xml b/purchase_request.xml
index a575451..b65e373 100644
--- a/purchase_request.xml
+++ b/purchase_request.xml
@@ -115,6 +115,13 @@ this repository contains the full copyright notices and license terms. -->
             <field name="wiz_name">purchase.request.handle.purchase.cancellation</field>
             <field name="model">purchase.request</field>
         </record>
+        <record model="ir.action-res.group"
+            id="wizard_purchase_cancellation_handle_exception_group_purchase_request">
+            <field name="action"
+                ref="wizard_purchase_cancellation_handle_exception"/>
+            <field name="group" ref="group_purchase_request"/>
+        </record>
+
         <record model="ir.action.keyword" 
             id="wizard_purchase_cancellation_handle_exception_keyword">
             <field name="action"
diff --git a/setup.py b/setup.py
index 9c15102..9041698 100644
--- a/setup.py
+++ b/setup.py
@@ -86,7 +86,7 @@ setup(name=name,
         'Intended Audience :: Developers',
         'Intended Audience :: Financial and Insurance Industry',
         'Intended Audience :: Legal Industry',
-        'License :: OSI Approved :: GNU General Public License (GPL)',
+        'License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)',
         'Natural Language :: Bulgarian',
         'Natural Language :: Catalan',
         'Natural Language :: Chinese (Simplified)',
diff --git a/tests/scenario_purchase_request.rst b/tests/scenario_purchase_request.rst
index 0ec90bd..cc03a83 100644
--- a/tests/scenario_purchase_request.rst
+++ b/tests/scenario_purchase_request.rst
@@ -17,7 +17,7 @@ Imports::
 
 Install stock_supply Module::
 
-    >>> config = activate_modules('stock_supply')
+    >>> config = activate_modules(['purchase_request', 'stock_supply'])
 
 Create company::
 
@@ -143,7 +143,7 @@ There is no purchase request::
 
 Create the purchase request::
 
-    >>> create_pr = Wizard('purchase.request.create')
+    >>> create_pr = Wizard('stock.supply')
     >>> create_pr.execute('create_')
 
 There is now a draft purchase request::
@@ -162,14 +162,14 @@ Create the purchase then cancel it::
     >>> create_purchase.form.party = supplier
     >>> create_purchase.execute('start')
     >>> pr.state
-    'purchased'
+    u'purchased'
 
     >>> Purchase = Model.get('purchase.purchase')
     >>> purchase, = Purchase.find()
     >>> purchase.click('cancel')
     >>> pr.reload()
     >>> pr.state
-    'exception'
+    u'exception'
 
 Handle the exception::
 
@@ -177,20 +177,20 @@ Handle the exception::
     ...     'purchase.request.handle.purchase.cancellation', [pr])
     >>> handle_exception.execute('reset')
     >>> pr.state
-    'draft'
+    u'draft'
 
 Recreate a purchase and cancel it again::
 
     >>> create_purchase = Wizard('purchase.request.create_purchase',
     ...     [pr])
     >>> pr.state
-    'purchased'
+    u'purchased'
 
     >>> purchase, = Purchase.find([('state', '=', 'draft')])
     >>> purchase.click('cancel')
     >>> pr.reload()
     >>> pr.state
-    'exception'
+    u'exception'
 
 Handle again the exception::
 
@@ -198,11 +198,11 @@ Handle again the exception::
     ...     'purchase.request.handle.purchase.cancellation', [pr])
     >>> handle_exception.execute('cancel_request')
     >>> pr.state
-    'cancel'
+    u'cancel'
 
 Re-create the purchase request::
 
-    >>> create_pr = Wizard('purchase.request.create')
+    >>> create_pr = Wizard('stock.supply')
     >>> create_pr.execute('create_')
 
 Create a second purchase request manually::
@@ -229,7 +229,7 @@ Create the purchase with a unique line::
     >>> create_purchase.form.party = supplier
     >>> create_purchase.execute('start')
     >>> pr.state
-    'purchased'
+    u'purchased'
 
     >>> Purchase = Model.get('purchase.purchase')
     >>> purchase, = Purchase.find([('state', '=', 'draft')])
@@ -258,7 +258,7 @@ Create the purchase without product::
     >>> create_purchase.form.party = supplier
     >>> create_purchase.execute('start')
     >>> pr.state
-    'purchased'
+    u'purchased'
 
     >>> pr.purchase_line.product
     >>> pr.purchase_line.description
diff --git a/tryton.cfg b/tryton.cfg
index 6345ed6..f835f86 100644
--- a/tryton.cfg
+++ b/tryton.cfg
@@ -1,8 +1,9 @@
 [tryton]
-version=4.2.0
+version=4.4.0
 depends:
     ir
     purchase
     product
 xml:
     purchase_request.xml
+    purchase.xml
diff --git a/trytond_purchase_request.egg-info/PKG-INFO b/trytond_purchase_request.egg-info/PKG-INFO
index d922a72..f41e972 100644
--- a/trytond_purchase_request.egg-info/PKG-INFO
+++ b/trytond_purchase_request.egg-info/PKG-INFO
@@ -1,12 +1,12 @@
 Metadata-Version: 1.1
 Name: trytond-purchase-request
-Version: 4.2.0
+Version: 4.4.0
 Summary: Tryton module for purchase requests
 Home-page: http://www.tryton.org/
 Author: Tryton
 Author-email: issue_tracker at tryton.org
 License: GPL-3
-Download-URL: http://downloads.tryton.org/4.2/
+Download-URL: http://downloads.tryton.org/4.4/
 Description: trytond_purchase_request
         ========================
         
@@ -51,7 +51,7 @@ Classifier: Framework :: Tryton
 Classifier: Intended Audience :: Developers
 Classifier: Intended Audience :: Financial and Insurance Industry
 Classifier: Intended Audience :: Legal Industry
-Classifier: License :: OSI Approved :: GNU General Public License (GPL)
+Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
 Classifier: Natural Language :: Bulgarian
 Classifier: Natural Language :: Catalan
 Classifier: Natural Language :: Chinese (Simplified)
diff --git a/trytond_purchase_request.egg-info/SOURCES.txt b/trytond_purchase_request.egg-info/SOURCES.txt
index 1b5f1c8..0c73283 100644
--- a/trytond_purchase_request.egg-info/SOURCES.txt
+++ b/trytond_purchase_request.egg-info/SOURCES.txt
@@ -4,12 +4,14 @@ INSTALL
 LICENSE
 MANIFEST.in
 README
+purchase.xml
 purchase_request.xml
 setup.py
 tryton.cfg
 ./__init__.py
 ./party.py
 ./purchase.py
+./purchase.xml
 ./purchase_request.py
 ./purchase_request.xml
 ./tryton.cfg
@@ -35,6 +37,7 @@ tryton.cfg
 ./tests/scenario_purchase_request.rst
 ./tests/test_purchase_request.py
 ./view/handle_purchase_cancellation_start_form.xml
+./view/purchase_line_form.xml
 ./view/purchase_request_create_purchase_ask_party_form.xml
 ./view/purchase_request_form.xml
 ./view/purchase_request_tree.xml
@@ -66,6 +69,7 @@ trytond_purchase_request.egg-info/not-zip-safe
 trytond_purchase_request.egg-info/requires.txt
 trytond_purchase_request.egg-info/top_level.txt
 view/handle_purchase_cancellation_start_form.xml
+view/purchase_line_form.xml
 view/purchase_request_create_purchase_ask_party_form.xml
 view/purchase_request_form.xml
 view/purchase_request_tree.xml
\ No newline at end of file
diff --git a/trytond_purchase_request.egg-info/requires.txt b/trytond_purchase_request.egg-info/requires.txt
index 1b45287..278f8b3 100644
--- a/trytond_purchase_request.egg-info/requires.txt
+++ b/trytond_purchase_request.egg-info/requires.txt
@@ -1,3 +1,3 @@
-trytond_purchase >= 4.2, < 4.3
-trytond_product >= 4.2, < 4.3
-trytond >= 4.2, < 4.3
+trytond_purchase >= 4.4, < 4.5
+trytond_product >= 4.4, < 4.5
+trytond >= 4.4, < 4.5
diff --git a/view/purchase_line_form.xml b/view/purchase_line_form.xml
new file mode 100644
index 0000000..f1423cf
--- /dev/null
+++ b/view/purchase_line_form.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<!-- This file is part of Tryton.  The COPYRIGHT file at the top level of
+this repository contains the full copyright notices and license terms. -->
+<data>
+    <xpath expr="/form/notebook" position="inside">
+        <page name="requests">
+            <field name="requests"/>
+        </page>
+    </xpath>
+</data>
diff --git a/view/purchase_request_form.xml b/view/purchase_request_form.xml
index 8504694..24d8d4d 100644
--- a/view/purchase_request_form.xml
+++ b/view/purchase_request_form.xml
@@ -36,7 +36,7 @@ this repository contains the full copyright notices and license terms. -->
     <field name="origin"/>
     <label name="state"/>
     <field name="state"/>
-    <group col="1" colspan="2" id="buttons">
+    <group col="-1" colspan="2" id="buttons">
         <button name="handle_purchase_cancellation_exception"
             string="Handle Purchase Cancellation"
             icon="tryton-go-next"/>
-- 
tryton-modules-purchase-request



More information about the tryton-debian-vcs mailing list