From 42d9a84001627fd6dc67c124ccba8d2a4faf87f5 Mon Sep 17 00:00:00 2001
From: "ron@tinyerp.com" <>
Date: Sat, 30 Oct 2010 16:31:37 +0530
Subject: [PATCH 01/10] [FIX]stock: Wrong Journals when creating an invoice
from picking
lp bug: https://launchpad.net/bugs/667246 fixed
bzr revid: ron@tinyerp.com-20101030110137-9b8k2diccjcdugs0
---
addons/stock/wizard/stock_invoice_onshipping.py | 2 ++
1 file changed, 2 insertions(+)
diff --git a/addons/stock/wizard/stock_invoice_onshipping.py b/addons/stock/wizard/stock_invoice_onshipping.py
index d841c7cb37a..20a54a8c264 100644
--- a/addons/stock/wizard/stock_invoice_onshipping.py
+++ b/addons/stock/wizard/stock_invoice_onshipping.py
@@ -78,6 +78,8 @@ class stock_invoice_onshipping(osv.osv_memory):
onshipdata_obj[ids] = onshipdata_obj.new_picking
context['date_inv'] = onshipdata_obj['invoice_date']
+ journal_id = onshipdata_obj['journal_id']
+ context['journal_type'] =self.pool.get('account.journal').browse(cr, uid, journal_id).type
invoice_ids = []
for picking in picking_obj.browse(cr, uid, context.get('active_ids', []), context=context):
if picking.invoice_state == '2binvoiced':
From 529263808f06f9365b3637019324e1e8edfa53a5 Mon Sep 17 00:00:00 2001
From: "ron@tinyerp.com" <>
Date: Mon, 1 Nov 2010 16:43:15 +0530
Subject: [PATCH 02/10] [IMP]stock: if chain location type fixed then
chain_location_id is required
bzr revid: ron@tinyerp.com-20101101111315-h55yzhn3u39z7fc2
---
addons/stock/stock_view.xml | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/addons/stock/stock_view.xml b/addons/stock/stock_view.xml
index 9e3de5fca7c..42854e46537 100644
--- a/addons/stock/stock_view.xml
+++ b/addons/stock/stock_view.xml
@@ -304,7 +304,7 @@
-
+
@@ -317,7 +317,7 @@
-
+
@@ -449,7 +449,7 @@
-
+
From d9a4cb7313e10348ab7197cb62df76c31edcd4ec Mon Sep 17 00:00:00 2001
From: "ron@tinyerp.com" <>
Date: Mon, 1 Nov 2010 19:08:09 +0530
Subject: [PATCH 03/10] [IMP]sale:changes in CSV file
bzr revid: ron@tinyerp.com-20101101133809-fzm17hg0heegc00l
---
addons/sale/security/ir.model.access.csv | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/addons/sale/security/ir.model.access.csv b/addons/sale/security/ir.model.access.csv
index 11718051d04..91a3d791168 100644
--- a/addons/sale/security/ir.model.access.csv
+++ b/addons/sale/security/ir.model.access.csv
@@ -1,5 +1,5 @@
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
-"access_sale_shop","sale.shop","model_sale_shop","base.group_user",1,0,0,0
+"access_sale_shop","sale.shop","model_sale_shop","base.group_user",1,1,0,0
"access_sale_order","sale.order","model_sale_order","base.group_sale_salesman",1,1,1,0
"access_sale_order_line","sale.order.line","model_sale_order_line","base.group_sale_salesman",1,1,1,1
"access_account_invoice_tax_salesman","account_invoice_tax salesman","account.model_account_invoice_tax","base.group_sale_salesman",1,1,1,0
@@ -51,3 +51,4 @@
"access_product_supplierinfo_user","product.supplierinfo.user","product.model_product_supplierinfo","base.group_sale_salesman",1,0,0,0
"access_product_pricelist_sale_user","product.pricelist.sale.user","product.model_product_pricelist","base.group_sale_salesman",1,0,0,0
"access_account_account_salesman","account_account salesman","account.model_account_account","base.group_sale_salesman",1,0,0,0
+"access_stock_location_path","stock.location.path","stock_location.model_stock_location_path","base.group_sale_salesman",1,0,0,0
From 09948fcad575fc25c62dcc91d6f487ddecde0dc5 Mon Sep 17 00:00:00 2001
From: "ron@tinyerp.com" <>
Date: Tue, 2 Nov 2010 11:27:27 +0530
Subject: [PATCH 04/10] [IMP]sale:Update CSV file for Access write
bzr revid: ron@tinyerp.com-20101102055727-9ogurx3btr2bxumx
---
addons/account/account_invoice_view.xml | 1 -
addons/mrp/security/ir.model.access.csv | 1 +
addons/sale/security/ir.model.access.csv | 1 -
addons/stock_location/security/ir.model.access.csv | 2 ++
4 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/addons/account/account_invoice_view.xml b/addons/account/account_invoice_view.xml
index a7da472e760..80d65334636 100644
--- a/addons/account/account_invoice_view.xml
+++ b/addons/account/account_invoice_view.xml
@@ -458,7 +458,6 @@
tree,form,calendar,graph
[('type','=','in_invoice')]
- {'type':'in_invoice', 'journal_type': 'purchase'}
Supplier Invoices allows you to enter and manage invoices issued by your suppliers. OpenERP generates draft of supplier invoices automatically so that you can control what you received from your supplier according to what you purchased or received.
diff --git a/addons/mrp/security/ir.model.access.csv b/addons/mrp/security/ir.model.access.csv
index 586f82f1b53..dcbf6c866b4 100644
--- a/addons/mrp/security/ir.model.access.csv
+++ b/addons/mrp/security/ir.model.access.csv
@@ -67,3 +67,4 @@
"access_stock_picking_mrp_manager","stock.picking mrp_manager","stock.model_stock_picking","mrp.group_mrp_manager",1,0,0,0
"access_report_mrp_inout_user","report.mrp.inout user","model_report_mrp_inout","mrp.group_mrp_user",1,0,0,0
"access_report_workcenter_load_user","report.workcenter.load.user","model_report_workcenter_load","mrp.group_mrp_user",1,0,0,0
+"access_mrp_bom","mrp.bom","model_mrp_bom","base.group_sale_salesman",1,0,0,0
diff --git a/addons/sale/security/ir.model.access.csv b/addons/sale/security/ir.model.access.csv
index 91a3d791168..39b1996ee88 100644
--- a/addons/sale/security/ir.model.access.csv
+++ b/addons/sale/security/ir.model.access.csv
@@ -51,4 +51,3 @@
"access_product_supplierinfo_user","product.supplierinfo.user","product.model_product_supplierinfo","base.group_sale_salesman",1,0,0,0
"access_product_pricelist_sale_user","product.pricelist.sale.user","product.model_product_pricelist","base.group_sale_salesman",1,0,0,0
"access_account_account_salesman","account_account salesman","account.model_account_account","base.group_sale_salesman",1,0,0,0
-"access_stock_location_path","stock.location.path","stock_location.model_stock_location_path","base.group_sale_salesman",1,0,0,0
diff --git a/addons/stock_location/security/ir.model.access.csv b/addons/stock_location/security/ir.model.access.csv
index d3815736408..fc4eeff788b 100644
--- a/addons/stock_location/security/ir.model.access.csv
+++ b/addons/stock_location/security/ir.model.access.csv
@@ -6,3 +6,5 @@
"access_stock_location_path_manager","stock location path manager","model_stock_location_path","stock.group_stock_manager",1,1,1,1
"access_stock_location_path_partner_manager","stock.location.path partner manager","model_stock_location_path","product.group_product_manager",1,1,1,1
"access_stock_location_path_stock_user","stock.location.path stock user","model_stock_location_path","stock.group_stock_user",1,1,1,1
+"access_stock_location_path","stock.location.path","model_stock_location_path","base.group_sale_salesman",1,0,0,0
+"access_product_pulled_flow","product.pulled.flow","model_product_pulled_flow","base.group_sale_salesman",1,0,0,0
From be4f579fa1045c5c23eb8c6d06d2643bdc7d3fb4 Mon Sep 17 00:00:00 2001
From: "ron@tinyerp.com" <>
Date: Wed, 3 Nov 2010 15:50:01 +0530
Subject: [PATCH 05/10] [FIX] stock: Wrong Journals when creating an invoice
from picking and Improvment in Wizard Journal_id field
lp bug: https://launchpad.net/bugs/667246 fixed
bzr revid: ron@tinyerp.com-20101103102001-sau6gdki0j7vdunk
---
.../stock/wizard/stock_invoice_onshipping.py | 37 ++++++++++++++++++-
1 file changed, 36 insertions(+), 1 deletion(-)
diff --git a/addons/stock/wizard/stock_invoice_onshipping.py b/addons/stock/wizard/stock_invoice_onshipping.py
index 20a54a8c264..3d468129d74 100644
--- a/addons/stock/wizard/stock_invoice_onshipping.py
+++ b/addons/stock/wizard/stock_invoice_onshipping.py
@@ -24,14 +24,49 @@ from osv import fields, osv
from tools.translate import _
class stock_invoice_onshipping(osv.osv_memory):
+
+ def _get_journal_id(self, cr,uid,ids, context=None):
+ if context is None:
+ context = {}
+
+ if ids['active_model'] == "stock.picking":
+ pick_obj = self.pool.get('stock.picking').browse(cr,uid,ids['active_id'])
+ acct_obj = self.pool.get('account.journal')
+ vals=[]
+ if pick_obj.type == 'in':
+ value = acct_obj.search(cr, uid, [('type', 'in',('sale','sale_refund') )])
+ for jr_type in acct_obj.browse(cr, uid, value, context=context):
+ t1 = jr_type.id,jr_type.name
+ vals.append(t1)
+
+ elif pick_obj.type == 'out':
+ value = acct_obj.search(cr, uid, [('type', 'in',('purchase','purchase_refund') )])
+ for jr_type in acct_obj.browse(cr, uid, value, context=context):
+ t1 = jr_type.id,jr_type.name
+ vals.append(t1)
+ else:
+ value = acct_obj.search(cr, uid, [('type', 'in',('cash','bank','general','situation') )])
+ for jr_type in acct_obj.browse(cr, uid, value, context=context):
+ t1 = jr_type.id,jr_type.name
+ vals.append(t1)
+ return vals
+ else:
+ return True
+ return vals
+
+
_name = "stock.invoice.onshipping"
_description = "Stock Invoice Onshipping"
+
+
_columns = {
- 'journal_id': fields.many2one('account.journal', 'Destination Journal', required=True),
+# 'journal_id': fields.many2one('account.journal', 'Destination Journal', required=True,selection=_get_journal_id),
+ 'journal_id': fields.selection(_get_journal_id, 'Destination Journal',required=True),
'group': fields.boolean("Group by partner"),
'invoice_date': fields.date('Invoiced date'),
}
+
def view_init(self, cr, uid, fields_list, context=None):
if context is None:
context = {}
From 5c6172df5aa85a6c4301d27922cad99a5fdd4efb Mon Sep 17 00:00:00 2001
From: "ron@tinyerp.com" <>
Date: Thu, 4 Nov 2010 10:30:13 +0530
Subject: [PATCH 06/10] [FIX]mrp: raises exception error when mrp module
produce product with mark Track Manufacturing Lots
lp bug: https://launchpad.net/bugs/669210 fixed
bzr revid: ron@tinyerp.com-20101104050013-pk01lxfs91163uih
---
addons/stock/stock.py | 2 +-
addons/stock/wizard/stock_invoice_onshipping.py | 5 ++---
2 files changed, 3 insertions(+), 4 deletions(-)
diff --git a/addons/stock/stock.py b/addons/stock/stock.py
index 735fb47dde8..1c3b31a353b 100644
--- a/addons/stock/stock.py
+++ b/addons/stock/stock.py
@@ -2231,7 +2231,7 @@ class stock_move(osv.osv):
quantity_rest = quantity
uos_qty_rest = uos_qty
if move.product_id.track_production and location_id:
- res += self.split_lines(cr, uid, [move.id], quantity_rest, split_by_qty=1, context=context)
+ res += self.action_split(cr, uid, [move.id], quantity_rest, split_by_qty=1, context=context)
else:
res += [move.id]
update_val = {
diff --git a/addons/stock/wizard/stock_invoice_onshipping.py b/addons/stock/wizard/stock_invoice_onshipping.py
index 3d468129d74..38b384cdcde 100644
--- a/addons/stock/wizard/stock_invoice_onshipping.py
+++ b/addons/stock/wizard/stock_invoice_onshipping.py
@@ -28,18 +28,17 @@ class stock_invoice_onshipping(osv.osv_memory):
def _get_journal_id(self, cr,uid,ids, context=None):
if context is None:
context = {}
-
if ids['active_model'] == "stock.picking":
pick_obj = self.pool.get('stock.picking').browse(cr,uid,ids['active_id'])
acct_obj = self.pool.get('account.journal')
vals=[]
- if pick_obj.type == 'in':
+ if pick_obj.type == 'out':
value = acct_obj.search(cr, uid, [('type', 'in',('sale','sale_refund') )])
for jr_type in acct_obj.browse(cr, uid, value, context=context):
t1 = jr_type.id,jr_type.name
vals.append(t1)
- elif pick_obj.type == 'out':
+ elif pick_obj.type == 'in':
value = acct_obj.search(cr, uid, [('type', 'in',('purchase','purchase_refund') )])
for jr_type in acct_obj.browse(cr, uid, value, context=context):
t1 = jr_type.id,jr_type.name
From 75c2110758a3d2efa12cbfa27270a7a2ab8fce72 Mon Sep 17 00:00:00 2001
From: "ron@tinyerp.com" <>
Date: Thu, 4 Nov 2010 14:05:07 +0530
Subject: [PATCH 07/10] [IMP] stock:Improvement on Create Invoice Wizard in
outgoing delivary
bzr revid: ron@tinyerp.com-20101104083507-nl27rwo2u4ttm5w4
---
.../stock/wizard/stock_invoice_onshipping.py | 24 +++++++++++--------
1 file changed, 14 insertions(+), 10 deletions(-)
diff --git a/addons/stock/wizard/stock_invoice_onshipping.py b/addons/stock/wizard/stock_invoice_onshipping.py
index 38b384cdcde..3be2ab72067 100644
--- a/addons/stock/wizard/stock_invoice_onshipping.py
+++ b/addons/stock/wizard/stock_invoice_onshipping.py
@@ -25,20 +25,27 @@ from tools.translate import _
class stock_invoice_onshipping(osv.osv_memory):
- def _get_journal_id(self, cr,uid,ids, context=None):
+ def _get_journal_id(self, cr, uid, context=None):
if context is None:
context = {}
- if ids['active_model'] == "stock.picking":
- pick_obj = self.pool.get('stock.picking').browse(cr,uid,ids['active_id'])
- acct_obj = self.pool.get('account.journal')
- vals=[]
- if pick_obj.type == 'out':
+
+ model = context.get('active_model')
+ if not model or model != 'stock.picking':
+ return []
+
+ model_pool = self.pool.get(model)
+ acct_obj = self.pool.get('account.journal')
+ res_ids = context and context.get('active_ids', [])
+ vals=[]
+ pick_types = list(set(map(lambda x: x.type, model_pool.browse(cr, uid, res_ids, context=context))))
+ for type in pick_types:
+ if type == 'out':
value = acct_obj.search(cr, uid, [('type', 'in',('sale','sale_refund') )])
for jr_type in acct_obj.browse(cr, uid, value, context=context):
t1 = jr_type.id,jr_type.name
vals.append(t1)
- elif pick_obj.type == 'in':
+ elif type == 'in':
value = acct_obj.search(cr, uid, [('type', 'in',('purchase','purchase_refund') )])
for jr_type in acct_obj.browse(cr, uid, value, context=context):
t1 = jr_type.id,jr_type.name
@@ -48,9 +55,6 @@ class stock_invoice_onshipping(osv.osv_memory):
for jr_type in acct_obj.browse(cr, uid, value, context=context):
t1 = jr_type.id,jr_type.name
vals.append(t1)
- return vals
- else:
- return True
return vals
From f7dda35ecc888f92a2e12aa4d622769938e8de8f Mon Sep 17 00:00:00 2001
From: "ron@tinyerp.com" <>
Date: Wed, 10 Nov 2010 11:07:49 +0530
Subject: [PATCH 08/10] [FIX]stock.move:stock moves - missing search field
->Reference
lp bug: https://launchpad.net/bugs/670056 fixed
bzr revid: ron@tinyerp.com-20101110053749-sqdya9y115cgcj5k
---
addons/stock/stock.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/addons/stock/stock.py b/addons/stock/stock.py
index 1c3b31a353b..8308d0bfb11 100644
--- a/addons/stock/stock.py
+++ b/addons/stock/stock.py
@@ -1480,7 +1480,7 @@ class stock_move(osv.osv):
'move_dest_id': fields.many2one('stock.move', 'Destination Move', help="Optional: next stock move when chaining them", select=True),
'move_history_ids': fields.many2many('stock.move', 'stock_move_history_ids', 'parent_id', 'child_id', 'Move History (child moves)'),
'move_history_ids2': fields.many2many('stock.move', 'stock_move_history_ids', 'child_id', 'parent_id', 'Move History (parent moves)'),
- 'picking_id': fields.many2one('stock.picking', 'Picking List', select=True,states={'done': [('readonly', True)]}),
+ 'picking_id': fields.many2one('stock.picking', 'Reference', select=True,states={'done': [('readonly', True)]}),
'note': fields.text('Notes'),
'state': fields.selection([('draft', 'Draft'), ('waiting', 'Waiting'), ('confirmed', 'Confirmed'), ('assigned', 'Available'), ('done', 'Done'), ('cancel', 'Cancelled')], 'State', readonly=True, select=True,
help='When the stock move is created it is in the \'Draft\' state.\n After that it is set to \'Confirmed\' state.\n If stock is available state is set to \'Available\'.\n When the picking is done the state is \'Done\'.\
From 3e9cf431b3bb7970972134241615b2f6de7c62a9 Mon Sep 17 00:00:00 2001
From: "ron@tinyerp.com" <>
Date: Wed, 10 Nov 2010 18:47:58 +0530
Subject: [PATCH 09/10] [FIX]Account,stock:Creating invoices and grouping
multiplies services
lp bug: https://launchpad.net/bugs/663890 fixed
bzr revid: ron@tinyerp.com-20101110131758-0c0zjal8sozbvflv
---
addons/stock/stock_view.xml | 14 +++++-----
.../stock/wizard/stock_invoice_onshipping.py | 28 +++++++++++++------
2 files changed, 27 insertions(+), 15 deletions(-)
diff --git a/addons/stock/stock_view.xml b/addons/stock/stock_view.xml
index aa0985a6cde..61bc8b887de 100644
--- a/addons/stock/stock_view.xml
+++ b/addons/stock/stock_view.xml
@@ -726,7 +726,7 @@
-
+
@@ -919,7 +919,7 @@
-
+
@@ -1139,7 +1139,7 @@
-
+
@@ -1461,9 +1461,9 @@
Reception Picking (By Stock Move)
====================================
-
-
-
+
+
+
stock.move.tree2
stock.move
@@ -1523,7 +1523,7 @@
-
+
stock.move.form2
diff --git a/addons/stock/wizard/stock_invoice_onshipping.py b/addons/stock/wizard/stock_invoice_onshipping.py
index 3be2ab72067..a1525c76a0d 100644
--- a/addons/stock/wizard/stock_invoice_onshipping.py
+++ b/addons/stock/wizard/stock_invoice_onshipping.py
@@ -110,6 +110,9 @@ class stock_invoice_onshipping(osv.osv_memory):
context = {}
result = []
picking_obj = self.pool.get('stock.picking')
+ invoice_obj = self.pool.get('account.invoice')
+ invoice_line_obj = self.pool.get('account.invoice.line')
+
onshipdata_obj = self.read(cr, uid, ids[0], ['journal_id', 'group', 'invoice_date'])
if context.get('new_picking', False):
onshipdata_obj['id'] = onshipdata_obj.new_picking
@@ -119,14 +122,23 @@ class stock_invoice_onshipping(osv.osv_memory):
journal_id = onshipdata_obj['journal_id']
context['journal_type'] =self.pool.get('account.journal').browse(cr, uid, journal_id).type
invoice_ids = []
- for picking in picking_obj.browse(cr, uid, context.get('active_ids', []), context=context):
- if picking.invoice_state == '2binvoiced':
- res = picking_obj.action_invoice_create(cr, uid, [picking.id],
- journal_id = onshipdata_obj['journal_id'],
- group=onshipdata_obj['group'],
- type=self._get_type(picking),
- context=context)
- invoice_ids.extend(res.values())
+ active_ids=context.get('active_ids', [])
+ picking = picking_obj.browse(cr, uid,active_ids, context=context)[0]
+
+ if onshipdata_obj['group']:
+ res = picking_obj.action_invoice_create(cr, uid,active_ids,
+ journal_id = onshipdata_obj['journal_id'],
+ group=onshipdata_obj['group'],
+ type=self._get_type(picking),
+ context=context)
+ invoice_ids.extend(res.values())
+ else:
+ res = picking_obj.action_invoice_create(cr, uid,active_ids,
+ journal_id = onshipdata_obj['journal_id'],
+ group=onshipdata_obj['group'],
+ type=self._get_type(picking),
+ context=context)
+ invoice_ids.extend(res.values())
if not invoice_ids:
raise osv.except_osv(_('Error'), _('No invoice were created'))
From 3099ec6c73539ec21c0a8183506f8263d96ae6f6 Mon Sep 17 00:00:00 2001
From: "ron@tinyerp.com" <>
Date: Thu, 11 Nov 2010 18:23:51 +0530
Subject: [PATCH 10/10] [IMP]procurement:creating a PO(after Schedular Run)
from a procurment use the location_id which Define in minimum stock rule.
task id = 1772
bzr revid: ron@tinyerp.com-20101111125351-0fwal01v7n4s2dm7
---
addons/procurement/procurement.py | 28 ++++++++++++++--------------
addons/procurement/schedulers.py | 27 ++++++++++++++++++---------
2 files changed, 32 insertions(+), 23 deletions(-)
diff --git a/addons/procurement/procurement.py b/addons/procurement/procurement.py
index 359586fae7e..0db7c7e28ba 100644
--- a/addons/procurement/procurement.py
+++ b/addons/procurement/procurement.py
@@ -62,11 +62,11 @@ mrp_property()
class StockMove(osv.osv):
_inherit = 'stock.move'
-
+
_columns= {
'procurements': fields.one2many('procurement.order', 'move_id', 'Procurements'),
}
-
+
def copy(self, cr, uid, id, default=None, context=None):
default = default or {}
default['procurements'] = []
@@ -134,7 +134,7 @@ class procurement_order(osv.osv):
if s['state'] in ['draft','cancel']:
unlink_ids.append(s['id'])
else:
- raise osv.except_osv(_('Invalid action !'),
+ raise osv.except_osv(_('Invalid action !'),
_('Cannot delete Procurement Order(s) which are in %s State!') % \
s['state'])
return osv.osv.unlink(self, cr, uid, unlink_ids, context=context)
@@ -283,7 +283,7 @@ class procurement_order(osv.osv):
if procurement.product_id.product_tmpl_id.supply_method <> 'buy':
return False
if not procurement.product_id.seller_ids:
- cr.execute('update procurement_order set message=%s where id=%s',
+ cr.execute('update procurement_order set message=%s where id=%s',
(_('No supplier defined for this product !'), procurement.id))
return False
partner = procurement.product_id.seller_id #Taken Main Supplier of Product of Procurement.
@@ -293,7 +293,7 @@ class procurement_order(osv.osv):
return False
address_id = partner_obj.address_get(cr, uid, [partner.id], ['delivery'])['delivery']
if not address_id:
- cr.execute('update procurement_order set message=%s where id=%s',
+ cr.execute('update procurement_order set message=%s where id=%s',
(_('No address defined for the supplier'), procurement.id))
return False
return True
@@ -314,7 +314,7 @@ class procurement_order(osv.osv):
move_obj = self.pool.get('stock.move')
for procurement in self.browse(cr, uid, ids):
if procurement.product_qty <= 0.00:
- raise osv.except_osv(_('Data Insufficient !'),
+ raise osv.except_osv(_('Data Insufficient !'),
_('Please check the Quantity in Procurement Order(s), it should not be less than 1!'))
if procurement.product_id.type in ('product', 'consu'):
if not procurement.move_id:
@@ -342,7 +342,7 @@ class procurement_order(osv.osv):
""" Changes procurement state to Running and writes message.
@return: True
"""
- self.write(cr, uid, ids, {'state': 'running',
+ self.write(cr, uid, ids, {'state': 'running',
'message': _('from stock: products assigned.')})
return True
@@ -365,8 +365,8 @@ class procurement_order(osv.osv):
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,))
if not cr.fetchone()[0]:
- cr.execute('update procurement_order set message=%s where id=%s',
- (_('Not enough stock and no minimum orderpoint rule defined.'),
+ cr.execute('update procurement_order set message=%s where id=%s',
+ (_('Not enough stock and no minimum orderpoint rule defined.'),
procurement.id))
message = _("Procurement '%s' is in exception: not enough stock.") % \
(procurement.name,)
@@ -479,7 +479,7 @@ class StockPicking(osv.osv):
wf_service.trg_validate(user, 'procurement.order',
procurement.id, 'button_check', cursor)
return res
-
+
StockPicking()
class stock_warehouse_orderpoint(osv.osv):
@@ -517,7 +517,7 @@ class stock_warehouse_orderpoint(osv.osv):
'company_id': lambda self, cr, uid, c: self.pool.get('res.company')._company_default_get(cr, uid, 'stock.warehouse.orderpoint', context=c)
}
_sql_constraints = [
- ('qty_multiple_check', 'CHECK( qty_multiple > 0 )',
+ ('qty_multiple_check', 'CHECK( qty_multiple > 0 )',
_('Qty Multiple must be greater than zero.')),
]
@@ -531,7 +531,7 @@ class stock_warehouse_orderpoint(osv.osv):
v = {'location_id': w.lot_stock_id.id}
return {'value': v}
return {}
-
+
def onchange_product_id(self, cr, uid, ids, product_id, context={}):
""" Finds UoM for changed product.
@param product_id: Changed id of product.
@@ -542,7 +542,7 @@ class stock_warehouse_orderpoint(osv.osv):
v = {'product_uom': prod.uom_id.id}
return {'value': v}
return {}
-
+
def copy(self, cr, uid, id, default=None,context={}):
if not default:
default = {}
@@ -550,6 +550,6 @@ class stock_warehouse_orderpoint(osv.osv):
'name': self.pool.get('ir.sequence').get(cr, uid, 'stock.orderpoint') or '',
})
return super(stock_warehouse_orderpoint, self).copy(cr, uid, id, default, context)
-
+
stock_warehouse_orderpoint()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/procurement/schedulers.py b/addons/procurement/schedulers.py
index b3d3c3bb98d..381d13aaa2a 100644
--- a/addons/procurement/schedulers.py
+++ b/addons/procurement/schedulers.py
@@ -34,14 +34,14 @@ class procurement_order(osv.osv):
def _procure_confirm(self, cr, uid, ids=None, use_new_cursor=False, context=None):
'''
Call the scheduler to check the procurement order
-
+
@param self: The object pointer
@param cr: The current row, from the database cursor,
@param uid: The current user ID for security checks
@param ids: List of selected IDs
@param use_new_cursor: False or the dbname
@param context: A standard dictionary for contextual values
- @return: Dictionary of values
+ @return: Dictionary of values
'''
if not context:
context = {}
@@ -50,7 +50,7 @@ class procurement_order(osv.osv):
if use_new_cursor:
cr = pooler.get_db(use_new_cursor).cursor()
wf_service = netsvc.LocalService("workflow")
-
+
procurement_obj = self.pool.get('procurement.order')
if not ids:
ids = procurement_obj.search(cr, uid, [], order="date_planned")
@@ -112,13 +112,13 @@ class procurement_order(osv.osv):
if uid:
request = self.pool.get('res.request')
summary = '''Here is the procurement scheduling report.
-
+
Start Time: %s
End Time: %s
Total Procurements processed: %d
Procurements with exceptions: %d
Skipped Procurements (scheduled date outside of scheduler range) %d
-
+
Exceptions:\n'''% (start_date, end_date, report_total, report_except, report_later)
summary += '\n'.join(report)
request.create(cr, uid,
@@ -141,7 +141,7 @@ class procurement_order(osv.osv):
def create_automatic_op(self, cr, uid, context=None):
"""
Create procurement of virtual stock < 0
-
+
@param self: The object pointer
@param cr: The current row, from the database cursor,
@param uid: The current user ID for security checks
@@ -153,6 +153,7 @@ class procurement_order(osv.osv):
product_obj = self.pool.get('product.product')
proc_obj = self.pool.get('procurement.order')
warehouse_obj = self.pool.get('stock.warehouse')
+ stock_rule_obj = self.pool.get('stock.warehouse.orderpoint')
wf_service = netsvc.LocalService("workflow")
warehouse_ids = warehouse_obj.search(cr, uid, [], context=context)
@@ -168,7 +169,15 @@ class procurement_order(osv.osv):
newdate = datetime.today()
if product.supply_method == 'buy':
- location_id = warehouse.lot_input_id.id
+ rule_id= stock_rule_obj.search(cr, uid, [('product_id', '=', product.id)])
+ if not rule_id:
+ location_id = warehouse.lot_input_id.id
+ break
+ rule_prd_id= stock_rule_obj.browse(cr, uid,rule_id)[0].product_id.id
+ if rule_prd_id == product.id:
+ location_id= stock_rule_obj.browse(cr, uid,rule_id)[0].location_id.id
+ else:
+ location_id = warehouse.lot_input_id.id
elif product.supply_method == 'produce':
location_id = warehouse.lot_stock_id.id
else:
@@ -191,14 +200,14 @@ class procurement_order(osv.osv):
'''
Create procurement based on Orderpoint
use_new_cursor: False or the dbname
-
+
@param self: The object pointer
@param cr: The current row, from the database cursor,
@param user_id: The current user ID for security checks
@param context: A standard dictionary for contextual values
@param param: False or the dbname
@return: Dictionary of values
- """
+ """
'''
if not context:
context = {}