From 4aa687cf3fad299a4cc6098f7fc12f35c36d5338 Mon Sep 17 00:00:00 2001
From: "ron@tinyerp.com" <>
Date: Wed, 29 Jun 2011 10:48:00 +0530
Subject: [PATCH 01/10] [FIX]purchase,procurement:Fixed=>Generate Sale order
via Non admin User Po generated with wrong warehouse and company ,For
information Traceback Generated after run the ORDERPOINT it is a sequence
problem and it has been fixed in lp:787052 :
lp bug: https://launchpad.net/bugs/802322 fixed
bzr revid: ron@tinyerp.com-20110629051800-u71iztvvtbgsyzuq
---
addons/procurement/schedulers.py | 1 +
addons/purchase/purchase.py | 4 ++++
2 files changed, 5 insertions(+)
diff --git a/addons/procurement/schedulers.py b/addons/procurement/schedulers.py
index 3a6e3336472..d2787185c18 100644
--- a/addons/procurement/schedulers.py
+++ b/addons/procurement/schedulers.py
@@ -183,6 +183,7 @@ class procurement_order(osv.osv):
'product_qty': -product.virtual_available,
'product_uom': product.uom_id.id,
'location_id': location_id,
+ 'company_id': warehouse.company_id.id,
'procure_method': 'make_to_order',
})
wf_service.trg_validate(uid, 'procurement.order', proc_id, 'button_confirm', cr)
diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py
index 6f6ab0c1b44..8867cb7f3a7 100644
--- a/addons/purchase/purchase.py
+++ b/addons/purchase/purchase.py
@@ -775,6 +775,8 @@ class procurement_order(osv.osv):
prod_obj = self.pool.get('product.product')
acc_pos_obj = self.pool.get('account.fiscal.position')
po_obj = self.pool.get('purchase.order')
+ wharehouse_obj = self.pool.get('stock.warehouse')
+
for procurement in self.browse(cr, uid, ids, context=context):
res_id = procurement.move_id.id
partner = procurement.product_id.seller_id # Taken Main Supplier of Product of Procurement.
@@ -821,6 +823,8 @@ class procurement_order(osv.osv):
'partner_id': partner_id,
'partner_address_id': address_id,
'location_id': procurement.location_id.id,
+ 'warehouse_id': wharehouse_obj.search(cr, uid, [('company_id','=',procurement.company_id.id or company)])[0],
+ 'company_id': procurement.company_id.id or company,
'pricelist_id': pricelist_id,
'order_line': [(0,0,line)],
'company_id': procurement.company_id.id,
From 6c27f121fb6621d0964a163ae6a62b1b363a9c8f Mon Sep 17 00:00:00 2001
From: "ron@tinyerp.com" <>
Date: Wed, 29 Jun 2011 18:55:39 +0530
Subject: [PATCH 02/10] [IMP]purchase:fixed=>Traceback Generated after run the
ORDERPOINT
bzr revid: ron@tinyerp.com-20110629132539-9y8zxts1v39olmrt
---
addons/purchase/purchase.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py
index 8867cb7f3a7..e06a5ef988c 100644
--- a/addons/purchase/purchase.py
+++ b/addons/purchase/purchase.py
@@ -776,7 +776,6 @@ class procurement_order(osv.osv):
acc_pos_obj = self.pool.get('account.fiscal.position')
po_obj = self.pool.get('purchase.order')
wharehouse_obj = self.pool.get('stock.warehouse')
-
for procurement in self.browse(cr, uid, ids, context=context):
res_id = procurement.move_id.id
partner = procurement.product_id.seller_id # Taken Main Supplier of Product of Procurement.
@@ -819,6 +818,7 @@ class procurement_order(osv.osv):
'taxes_id': [(6,0,taxes)]
})
purchase_id = po_obj.create(cr, uid, {
+ 'name': self.pool.get('ir.sequence').get(cr, uid, 'purchase.order') or _('PO:%s') %procurement.name,
'origin': procurement.origin,
'partner_id': partner_id,
'partner_address_id': address_id,
From f059576ba8c7bc2ca8e8f15b96b1438b502f67b7 Mon Sep 17 00:00:00 2001
From: "ron@tinyerp.com" <>
Date: Tue, 5 Jul 2011 11:47:50 +0530
Subject: [PATCH 03/10] [IMP]procurment:Fixed=>changed the all select queries
which bypassed the record rules in procurment.py and schedular.py,and change
the output location configuaration with company_id=False because of that it
will be access by child company
bzr revid: ron@tinyerp.com-20110705061750-7g73nancsfijk0re
---
addons/procurement/procurement.py | 4 ++--
addons/procurement/schedulers.py | 12 +++---------
addons/purchase/purchase.py | 1 -
addons/stock/stock_data.xml | 2 +-
4 files changed, 6 insertions(+), 13 deletions(-)
diff --git a/addons/procurement/procurement.py b/addons/procurement/procurement.py
index 743ef85a9ea..f4988afedc0 100644
--- a/addons/procurement/procurement.py
+++ b/addons/procurement/procurement.py
@@ -371,8 +371,8 @@ class procurement_order(osv.osv):
id = procurement.move_id.id
if not (procurement.move_id.state in ('done','assigned','cancel')):
ok = ok and self.pool.get('stock.move').action_assign(cr, uid, [id])
- cr.execute('select count(id) from stock_warehouse_orderpoint where product_id=%s', (procurement.product_id.id,))
- res = cr.fetchone()[0]
+ order_point_id = self.pool.get('stock.warehouse.orderpoint').search(cr, uid, [('product_id', '=', procurement.product_id.id)])
+ res = len(order_point_id)
if not res and not ok:
message = _("Not enough stock and no minimum orderpoint rule defined.")
elif not res:
diff --git a/addons/procurement/schedulers.py b/addons/procurement/schedulers.py
index d2787185c18..33abeab34af 100644
--- a/addons/procurement/schedulers.py
+++ b/addons/procurement/schedulers.py
@@ -67,8 +67,7 @@ class procurement_order(osv.osv):
report_except = 0
report_later = 0
while True:
- cr.execute("select id from procurement_order where state='confirmed' and procure_method='make_to_order' order by priority,date_planned limit 500 offset %s", (offset,))
- ids = map(lambda x: x[0], cr.fetchall())
+ ids = procurement_obj.search(cr, uid, [('state', '=', 'confirmed'), ('procure_method', '=', 'make_to_order')], order='priority,date_planned')
for proc in procurement_obj.browse(cr, uid, ids, context=context):
if maxdate >= proc.date_planned:
wf_service.trg_validate(uid, 'procurement.order', proc.id, 'button_check', cr)
@@ -156,11 +155,7 @@ class procurement_order(osv.osv):
wf_service = netsvc.LocalService("workflow")
warehouse_ids = warehouse_obj.search(cr, uid, [], context=context)
-
- cr.execute('select p.id from product_product p \
- join product_template t on (p.product_tmpl_id=t.id) \
- where p.active=True and t.purchase_ok=True')
- products_id = [x for x, in cr.fetchall()]
+ products_id = product_obj.search(cr, uid, [('active', '=', True), ('purchase_ok', '=', True)], order='id')
for warehouse in warehouse_obj.browse(cr, uid, warehouse_ids, context=context):
context['warehouse'] = warehouse
@@ -242,8 +237,7 @@ class procurement_order(osv.osv):
if op.procurement_draft_ids:
# Check draft procurement related to this order point
pro_ids = [x.id for x in op.procurement_draft_ids]
- cr.execute('select id, product_qty from procurement_order where id in %s order by product_qty desc', (tuple(pro_ids), ))
- procure_datas = cr.dictfetchall()
+ procure_datas = procurement_obj.read(cr, uid, pro_ids, ['id','product_qty'], context=context)
to_generate = qty
for proc_data in procure_datas:
if to_generate >= proc_data['product_qty']:
diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py
index e06a5ef988c..137e8125c06 100644
--- a/addons/purchase/purchase.py
+++ b/addons/purchase/purchase.py
@@ -824,7 +824,6 @@ class procurement_order(osv.osv):
'partner_address_id': address_id,
'location_id': procurement.location_id.id,
'warehouse_id': wharehouse_obj.search(cr, uid, [('company_id','=',procurement.company_id.id or company)])[0],
- 'company_id': procurement.company_id.id or company,
'pricelist_id': pricelist_id,
'order_line': [(0,0,line)],
'company_id': procurement.company_id.id,
diff --git a/addons/stock/stock_data.xml b/addons/stock/stock_data.xml
index bcde818c78a..3c75615dfae 100644
--- a/addons/stock/stock_data.xml
+++ b/addons/stock/stock_data.xml
@@ -91,8 +91,8 @@
Output
-
internal
+
customer
transparent
out
From 4ac423a87addad8c7a4b1f1edd3eca7c09e287c7 Mon Sep 17 00:00:00 2001
From: "ron@tinyerp.com" <>
Date: Thu, 15 Sep 2011 14:03:33 +0530
Subject: [PATCH 04/10] [IMP]procurment, purchase, stock: Improved stock demo
data, added limit and offset in search query, improved query if company_id
not avail, also improved code of make_po() function
bzr revid: ron@tinyerp.com-20110915083333-ab8p3kp8lu1fvq53
---
addons/procurement/schedulers.py | 2 +-
addons/purchase/purchase.py | 9 ++++++---
addons/stock/stock_data.xml | 2 +-
3 files changed, 8 insertions(+), 5 deletions(-)
diff --git a/addons/procurement/schedulers.py b/addons/procurement/schedulers.py
index 33abeab34af..293d9f06ff9 100644
--- a/addons/procurement/schedulers.py
+++ b/addons/procurement/schedulers.py
@@ -67,7 +67,7 @@ class procurement_order(osv.osv):
report_except = 0
report_later = 0
while True:
- ids = procurement_obj.search(cr, uid, [('state', '=', 'confirmed'), ('procure_method', '=', 'make_to_order')], order='priority,date_planned')
+ ids = procurement_obj.search(cr, uid, [('state', '=', 'confirmed'), ('procure_method', '=', 'make_to_order')], offset=offset, limit=500, order='priority,date_planned', context=context)
for proc in procurement_obj.browse(cr, uid, ids, context=context):
if maxdate >= proc.date_planned:
wf_service.trg_validate(uid, 'procurement.order', proc.id, 'button_check', cr)
diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py
index 1cf0da7d916..72e0808f715 100644
--- a/addons/purchase/purchase.py
+++ b/addons/purchase/purchase.py
@@ -791,6 +791,8 @@ class procurement_order(osv.osv):
pricelist_obj = self.pool.get('product.pricelist')
prod_obj = self.pool.get('product.product')
acc_pos_obj = self.pool.get('account.fiscal.position')
+ seq_obj = self.pool.get('ir.sequence')
+ wharehouse_obj = self.pool.get('stock.warehouse')
for procurement in self.browse(cr, uid, ids, context=context):
res_id = procurement.move_id.id
partner = procurement.product_id.seller_id # Taken Main Supplier of Product of Procurement.
@@ -799,7 +801,7 @@ class procurement_order(osv.osv):
partner_id = partner.id
address_id = partner_obj.address_get(cr, uid, [partner_id], ['delivery'])['delivery']
pricelist_id = partner.property_product_pricelist_purchase.id
-
+ warehouse_id = wharehouse_obj.search(cr, uid, [('company_id','=',procurement.company_id.id or company.id or '')], context=context)
uom_id = procurement.product_id.uom_po_id.id
qty = uom_obj._compute_qty(cr, uid, procurement.product_uom.id, procurement.product_qty, uom_id)
@@ -829,13 +831,14 @@ class procurement_order(osv.osv):
'notes': product.description_purchase,
'taxes_id': [(6,0,taxes)],
}
-
+ name = seq_obj.get(cr, uid, 'purchase.order') or _('PO:%s') %procurement.name
po_vals = {
+ 'name': name,
'origin': procurement.origin,
'partner_id': partner_id,
'partner_address_id': address_id,
'location_id': procurement.location_id.id,
- 'warehouse_id': wharehouse_obj.search(cr, uid, [('company_id','=',procurement.company_id.id or company)])[0],
+ 'warehouse_id': warehouse_id and warehouse_id[0] or False,
'pricelist_id': pricelist_id,
'company_id': procurement.company_id.id,
'fiscal_position': partner.property_account_position and partner.property_account_position.id or False
diff --git a/addons/stock/stock_data.xml b/addons/stock/stock_data.xml
index 3c75615dfae..bcde818c78a 100644
--- a/addons/stock/stock_data.xml
+++ b/addons/stock/stock_data.xml
@@ -91,8 +91,8 @@
Output
+
internal
-
customer
transparent
out
From 70e83c0d9c34e4db4c4ddaea9a5793411eefec52 Mon Sep 17 00:00:00 2001
From: "ron@tinyerp.com" <>
Date: Thu, 15 Sep 2011 14:13:00 +0530
Subject: [PATCH 05/10] [IMP]procurment: Added context on search method
bzr revid: ron@tinyerp.com-20110915084300-5algmu80v5n7472i
---
addons/procurement/schedulers.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/addons/procurement/schedulers.py b/addons/procurement/schedulers.py
index 293d9f06ff9..47ee2b699b8 100644
--- a/addons/procurement/schedulers.py
+++ b/addons/procurement/schedulers.py
@@ -155,7 +155,7 @@ class procurement_order(osv.osv):
wf_service = netsvc.LocalService("workflow")
warehouse_ids = warehouse_obj.search(cr, uid, [], context=context)
- products_id = product_obj.search(cr, uid, [('active', '=', True), ('purchase_ok', '=', True)], order='id')
+ products_id = product_obj.search(cr, uid, [('active', '=', True), ('purchase_ok', '=', True)], order='id', context=context)
for warehouse in warehouse_obj.browse(cr, uid, warehouse_ids, context=context):
context['warehouse'] = warehouse
From 191952b5b847ee69f1b41793c894b833d10c7316 Mon Sep 17 00:00:00 2001
From: "ron@tinyerp.com" <>
Date: Fri, 16 Sep 2011 18:31:50 +0530
Subject: [PATCH 06/10] [IMP]procurement: Removed active field conditon from
product search query, Added sorting by order of read query, removed
unnecessary len used
bzr revid: ron@tinyerp.com-20110916130150-zd0x5fvhpy6808ws
---
addons/procurement/procurement.py | 5 ++---
addons/procurement/schedulers.py | 4 ++--
2 files changed, 4 insertions(+), 5 deletions(-)
diff --git a/addons/procurement/procurement.py b/addons/procurement/procurement.py
index 747b2fe07ce..87ea682a916 100644
--- a/addons/procurement/procurement.py
+++ b/addons/procurement/procurement.py
@@ -372,10 +372,9 @@ class procurement_order(osv.osv):
if not (procurement.move_id.state in ('done','assigned','cancel')):
ok = ok and self.pool.get('stock.move').action_assign(cr, uid, [id])
order_point_id = self.pool.get('stock.warehouse.orderpoint').search(cr, uid, [('product_id', '=', procurement.product_id.id)])
- res = len(order_point_id)
- if not res and not ok:
+ if not order_point_id and not ok:
message = _("Not enough stock and no minimum orderpoint rule defined.")
- elif not res:
+ elif not order_point_id:
message = _("No minimum orderpoint rule defined.")
elif not ok:
message = _("Not enough stock.")
diff --git a/addons/procurement/schedulers.py b/addons/procurement/schedulers.py
index 47ee2b699b8..d57049191b9 100644
--- a/addons/procurement/schedulers.py
+++ b/addons/procurement/schedulers.py
@@ -155,7 +155,7 @@ class procurement_order(osv.osv):
wf_service = netsvc.LocalService("workflow")
warehouse_ids = warehouse_obj.search(cr, uid, [], context=context)
- products_id = product_obj.search(cr, uid, [('active', '=', True), ('purchase_ok', '=', True)], order='id', context=context)
+ products_id = product_obj.search(cr, uid, [('purchase_ok', '=', True)], order='id', context=context)
for warehouse in warehouse_obj.browse(cr, uid, warehouse_ids, context=context):
context['warehouse'] = warehouse
@@ -237,7 +237,7 @@ class procurement_order(osv.osv):
if op.procurement_draft_ids:
# Check draft procurement related to this order point
pro_ids = [x.id for x in op.procurement_draft_ids]
- procure_datas = procurement_obj.read(cr, uid, pro_ids, ['id','product_qty'], context=context)
+ procure_datas = procurement_obj.read(cr, uid, pro_ids, ['id','product_qty'], context=context, order='product_qty desc')
to_generate = qty
for proc_data in procure_datas:
if to_generate >= proc_data['product_qty']:
From 5b7af7eb605db5b8b6fd948023a6213c2d56ee08 Mon Sep 17 00:00:00 2001
From: "ron@tinyerp.com" <>
Date: Fri, 16 Sep 2011 18:54:42 +0530
Subject: [PATCH 07/10] [IMP]procurement, purchase: Improved PEP standard
bzr revid: ron@tinyerp.com-20110916132442-lp0kaaik6bubyj2q
---
addons/procurement/procurement.py | 2 +-
addons/procurement/schedulers.py | 2 +-
addons/purchase/purchase.py | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/addons/procurement/procurement.py b/addons/procurement/procurement.py
index 87ea682a916..7f5f54c7521 100644
--- a/addons/procurement/procurement.py
+++ b/addons/procurement/procurement.py
@@ -371,7 +371,7 @@ class procurement_order(osv.osv):
id = procurement.move_id.id
if not (procurement.move_id.state in ('done','assigned','cancel')):
ok = ok and self.pool.get('stock.move').action_assign(cr, uid, [id])
- order_point_id = self.pool.get('stock.warehouse.orderpoint').search(cr, uid, [('product_id', '=', procurement.product_id.id)])
+ order_point_id = self.pool.get('stock.warehouse.orderpoint').search(cr, uid, [('product_id', '=', procurement.product_id.id)], context=context)
if not order_point_id and not ok:
message = _("Not enough stock and no minimum orderpoint rule defined.")
elif not order_point_id:
diff --git a/addons/procurement/schedulers.py b/addons/procurement/schedulers.py
index d57049191b9..29ce2dd0a11 100644
--- a/addons/procurement/schedulers.py
+++ b/addons/procurement/schedulers.py
@@ -67,7 +67,7 @@ class procurement_order(osv.osv):
report_except = 0
report_later = 0
while True:
- ids = procurement_obj.search(cr, uid, [('state', '=', 'confirmed'), ('procure_method', '=', 'make_to_order')], offset=offset, limit=500, order='priority,date_planned', context=context)
+ ids = procurement_obj.search(cr, uid, [('state', '=', 'confirmed'), ('procure_method', '=', 'make_to_order')], offset=offset, limit=500, order='priority, date_planned', context=context)
for proc in procurement_obj.browse(cr, uid, ids, context=context):
if maxdate >= proc.date_planned:
wf_service.trg_validate(uid, 'procurement.order', proc.id, 'button_check', cr)
diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py
index 72e0808f715..db642907d7a 100644
--- a/addons/purchase/purchase.py
+++ b/addons/purchase/purchase.py
@@ -801,7 +801,7 @@ class procurement_order(osv.osv):
partner_id = partner.id
address_id = partner_obj.address_get(cr, uid, [partner_id], ['delivery'])['delivery']
pricelist_id = partner.property_product_pricelist_purchase.id
- warehouse_id = wharehouse_obj.search(cr, uid, [('company_id','=',procurement.company_id.id or company.id or '')], context=context)
+ warehouse_id = wharehouse_obj.search(cr, uid, [('company_id', '=', procurement.company_id.id or company.id or '')], context=context)
uom_id = procurement.product_id.uom_po_id.id
qty = uom_obj._compute_qty(cr, uid, procurement.product_uom.id, procurement.product_qty, uom_id)
From e7fb72e30e99bc78338bf523fe1e899aec60bdb9 Mon Sep 17 00:00:00 2001
From: "ron@tinyerp.com" <>
Date: Mon, 19 Sep 2011 18:51:07 +0530
Subject: [PATCH 08/10] [IMP]purchase: Improved PEP standard
bzr revid: ron@tinyerp.com-20110919132107-w37cdlq6vhcap33x
---
addons/purchase/purchase.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py
index db642907d7a..b8ca01f8767 100644
--- a/addons/purchase/purchase.py
+++ b/addons/purchase/purchase.py
@@ -831,7 +831,7 @@ class procurement_order(osv.osv):
'notes': product.description_purchase,
'taxes_id': [(6,0,taxes)],
}
- name = seq_obj.get(cr, uid, 'purchase.order') or _('PO:%s') %procurement.name
+ name = seq_obj.get(cr, uid, 'purchase.order') or _('PO: %s') % procurement.name
po_vals = {
'name': name,
'origin': procurement.origin,
From 3ac0b6a7b985de834ced8a9c9ad909243d540b38 Mon Sep 17 00:00:00 2001
From: "ron@tinyerp.com" <>
Date: Tue, 20 Sep 2011 14:32:22 +0530
Subject: [PATCH 09/10] [IMP]Procurment: Fixed:when scheduler is run by admin
all new PO of other company/warehouse is having wrong company (of admin)
instead of respective
bzr revid: ron@tinyerp.com-20110920090222-np5er3i3q9onay07
---
addons/procurement/schedulers.py | 1 +
1 file changed, 1 insertion(+)
diff --git a/addons/procurement/schedulers.py b/addons/procurement/schedulers.py
index 29ce2dd0a11..87cd55d7084 100644
--- a/addons/procurement/schedulers.py
+++ b/addons/procurement/schedulers.py
@@ -254,6 +254,7 @@ class procurement_order(osv.osv):
'date_planned': newdate.strftime('%Y-%m-%d'),
'product_id': op.product_id.id,
'product_qty': qty,
+ 'company_id': op.company_id.id,
'product_uom': op.product_uom.id,
'location_id': op.location_id.id,
'procure_method': 'make_to_order',
From a1f8fd00f64c71b9780f15f33ecccbf36667a3ac Mon Sep 17 00:00:00 2001
From: "ron@tinyerp.com" <>
Date: Tue, 20 Sep 2011 16:57:26 +0530
Subject: [PATCH 10/10] [IMP]Purchase: Improved string value of warehouse
instead of wharehouse
bzr revid: ron@tinyerp.com-20110920112726-43r8yiwu8ubkpxyy
---
addons/purchase/purchase.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py
index b8ca01f8767..cd7e855ce2e 100644
--- a/addons/purchase/purchase.py
+++ b/addons/purchase/purchase.py
@@ -792,7 +792,7 @@ class procurement_order(osv.osv):
prod_obj = self.pool.get('product.product')
acc_pos_obj = self.pool.get('account.fiscal.position')
seq_obj = self.pool.get('ir.sequence')
- wharehouse_obj = self.pool.get('stock.warehouse')
+ warehouse_obj = self.pool.get('stock.warehouse')
for procurement in self.browse(cr, uid, ids, context=context):
res_id = procurement.move_id.id
partner = procurement.product_id.seller_id # Taken Main Supplier of Product of Procurement.
@@ -801,7 +801,7 @@ class procurement_order(osv.osv):
partner_id = partner.id
address_id = partner_obj.address_get(cr, uid, [partner_id], ['delivery'])['delivery']
pricelist_id = partner.property_product_pricelist_purchase.id
- warehouse_id = wharehouse_obj.search(cr, uid, [('company_id', '=', procurement.company_id.id or company.id or '')], context=context)
+ warehouse_id = warehouse_obj.search(cr, uid, [('company_id', '=', procurement.company_id.id or company.id or '')], context=context)
uom_id = procurement.product_id.uom_po_id.id
qty = uom_obj._compute_qty(cr, uid, procurement.product_uom.id, procurement.product_qty, uom_id)