From 7dc16e99f2a3657be87c64f7e8fc0102ac3f4eb9 Mon Sep 17 00:00:00 2001 From: Numerigraphe - Lionel Sausin Date: Thu, 21 Oct 2010 10:08:37 +0200 Subject: [PATCH 01/20] [IMP] product_expiry: proper help texts lp bug: https://launchpad.net/bugs/664344 fixed bzr revid: ls@numerigraphe.fr-20101021080837-o81w2malpyr2v1l3 --- addons/product_expiry/product_expiry.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/addons/product_expiry/product_expiry.py b/addons/product_expiry/product_expiry.py index fbfa7dc1610..0efbc7c3fe3 100644 --- a/addons/product_expiry/product_expiry.py +++ b/addons/product_expiry/product_expiry.py @@ -50,14 +50,14 @@ class stock_production_lot(osv.osv): help='The date the lot starts deteriorating without becoming dangerous.'), 'removal_date': fields.datetime('Removal Date', help='The date the lot should be removed.'), - 'alert_date': fields.datetime('Alert Date', help="The date signifying an alert to notify about the production lot."), + 'alert_date': fields.datetime('Alert Date', help="The date an alert should be notified about the production lot."), } # Assign dates according to products data def create(self, cr, uid, vals, context=None): newid = super(stock_production_lot, self).create(cr, uid, vals, context=context) obj = self.browse(cr, uid, newid, context=context) towrite = [] - for f in ('life_date','use_date','removal_date','alert_date'): + for f in ('life_date', 'use_date', 'removal_date', 'alert_date'): if not getattr(obj, f): towrite.append(f) context = context or {} @@ -82,8 +82,7 @@ class product_product(osv.osv): help='The number of days before a production lot starts deteriorating without becoming dangerous.'), 'removal_time': fields.integer('Product Removal Time', help='The number of days before a production lot should be removed.'), - 'alert_time': fields.integer('Product Alert Time', help="The number of days after which, needs an alert to notify about the production lot."), + 'alert_time': fields.integer('Product Alert Time', help="The number of days after which an alert should be notified about the production lot."), } product_product() # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: - From 42d9a84001627fd6dc67c124ccba8d2a4faf87f5 Mon Sep 17 00:00:00 2001 From: "ron@tinyerp.com" <> Date: Sat, 30 Oct 2010 16:31:37 +0530 Subject: [PATCH 02/20] [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 03/20] [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 04/20] [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 88d2e8b5301aadca2355031a3c80a82358c82f68 Mon Sep 17 00:00:00 2001 From: "rpa (Open ERP)" Date: Tue, 2 Nov 2010 10:59:14 +0530 Subject: [PATCH 05/20] [FIX]: product: Fixed problem of loading list of products in m2o of purchase line after setting qty and uom as zero and False respectively bzr revid: rpa@tinyerp.com-20101102052914-q03vwvbfse2a97uk --- addons/product/product.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/product/product.py b/addons/product/product.py index b43f40b1cbc..b05b7b2887c 100644 --- a/addons/product/product.py +++ b/addons/product/product.py @@ -342,7 +342,7 @@ class product_product(osv.osv): def _product_price(self, cr, uid, ids, name, arg, context={}): res = {} - quantity = context.get('quantity', 1) + quantity = context.get('quantity') or 1.0 pricelist = context.get('pricelist', False) if pricelist: for id in ids: From b3f09a0263d96f8e580d4da79ef7d917c1cb63da Mon Sep 17 00:00:00 2001 From: "rpa (Open ERP)" Date: Tue, 2 Nov 2010 11:11:04 +0530 Subject: [PATCH 06/20] [FIX]: purchase: Fixed onchange product bzr revid: rpa@tinyerp.com-20101102054104-s8qaffy7jnc2bve7 --- addons/purchase/purchase.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py index 3145979d7b0..6ac5405ae0f 100644 --- a/addons/purchase/purchase.py +++ b/addons/purchase/purchase.py @@ -643,8 +643,8 @@ class purchase_order_line(osv.osv): if not partner_id: raise osv.except_osv(_('No Partner!'), _('You have to select a partner in the purchase form !\nPlease set one partner before choosing a product.')) if not product: - return {'value': {'price_unit': price_unit or 0.0, 'name': name or '', - 'notes': notes or'', 'product_uom' : uom or False}, 'domain':{'product_uom':[]}} + return {'value': {'price_unit': 0.0, 'name': '', 'product_qty': 1.0, 'date_planned': False, + 'notes': '', 'product_uom' : False}, 'domain':{'product_uom':[]}} prod= self.pool.get('product.product').browse(cr, uid, product) lang=False if partner_id: @@ -681,7 +681,7 @@ class purchase_order_line(osv.osv): res = {'value': {'price_unit': price, 'name': name or prod_name, 'taxes_id':map(lambda x: x.id, prod.supplier_taxes_id), 'date_planned': date_planned or dt,'notes': notes or prod.description_purchase, - 'product_qty': qty, + 'product_qty': qty or 1.0, 'product_uom': uom}} domain = {} From 09948fcad575fc25c62dcc91d6f487ddecde0dc5 Mon Sep 17 00:00:00 2001 From: "ron@tinyerp.com" <> Date: Tue, 2 Nov 2010 11:27:27 +0530 Subject: [PATCH 07/20] [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 08/20] [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 95124a4a3f5b4124e6d6fd7b365643e639e0c5f7 Mon Sep 17 00:00:00 2001 From: "rpa (Open ERP)" Date: Wed, 3 Nov 2010 18:08:55 +0530 Subject: [PATCH 09/20] [FIX]: product_visible_discount: Fixed computation of discount lp bug: https://launchpad.net/bugs/667558 fixed bzr revid: rpa@tinyerp.com-20101103123855-tqtml3aggrxu9fka --- .../product_visible_discount.py | 32 +++++++++++++------ 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/addons/product_visible_discount/product_visible_discount.py b/addons/product_visible_discount/product_visible_discount.py index 6b1c60ca516..9e8c8f55643 100644 --- a/addons/product_visible_discount/product_visible_discount.py +++ b/addons/product_visible_discount/product_visible_discount.py @@ -43,7 +43,7 @@ class sale_order_line(osv.osv): uom=False, qty_uos=0, uos=False, name='', partner_id=False, lang=False, update_tax=True,date_order=False,packaging=False,fiscal_position=False, flag=False): - def get_real_price(res_dict, product_id, pricelist): + def get_real_price(res_dict, product_id, qty, uom, pricelist): item_obj = self.pool.get('product.pricelist.item') price_type_obj = self.pool.get('product.price.type') product_obj = self.pool.get('product.product') @@ -56,10 +56,17 @@ class sale_order_line(osv.osv): if item_base > 0: field_name = price_type_obj.browse(cr, uid, item_base).field - product_tmpl_id = product_obj.browse(cr, uid, product_id, context).product_tmpl_id.id + product = product_obj.browse(cr, uid, product_id, context) + product_tmpl_id = product.product_tmpl_id.id product_read = template_obj.read(cr, uid, product_tmpl_id, [field_name], context) - return product_read[field_name] + + factor = 1.0 + if uom and uom != product.uom_id.id: + product_uom_obj = self.pool.get('product.uom') + uom_data = product_uom_obj.browse(cr, uid, product.uom_id.id) + factor = uom_data.factor + return product_read[field_name] * factor res=super(sale_order_line, self).product_id_change(cr, uid, ids, pricelist, product, qty, @@ -84,7 +91,7 @@ class sale_order_line(osv.osv): pricelists = pricelist_obj.read(cr,uid,[pricelist],['visible_discount']) old_uom = product.uos_id or product.uom_id - new_list_price = get_real_price(list_price, product.id, pricelist) + new_list_price = get_real_price(list_price, product.id, qty, uom, pricelist) if(len(pricelists)>0 and pricelists[0]['visible_discount'] and list_price[pricelist] != 0): discount = (new_list_price - price) / new_list_price * 100 result['price_unit'] = new_list_price @@ -101,7 +108,7 @@ class account_invoice_line(osv.osv): def product_id_change(self, cr, uid, ids, product, uom, qty=0, name='', type='out_invoice', partner_id=False, fposition_id=False, price_unit=False, address_invoice_id=False, currency_id=False, context={}): res = super(account_invoice_line, self).product_id_change(cr, uid, ids, product, uom, qty, name, type, partner_id, fposition_id, price_unit, address_invoice_id, currency_id, context) - def get_real_price(res_dict, product_id, pricelist): + def get_real_price(res_dict, product_id, qty, uom, pricelist): item_obj = self.pool.get('product.pricelist.item') price_type_obj = self.pool.get('product.price.type') product_obj = self.pool.get('product.product') @@ -114,10 +121,17 @@ class account_invoice_line(osv.osv): if item_base > 0: field_name = price_type_obj.browse(cr, uid, item_base).field - product_tmpl_id = product_obj.browse(cr, uid, product_id, context).product_tmpl_id.id + product = product_obj.browse(cr, uid, product_id, context) + product_tmpl_id = product.product_tmpl_id.id product_read = template_obj.read(cr, uid, product_tmpl_id, [field_name], context) - return product_read[field_name] + + factor = 1.0 + if uom and uom != product.uom_id.id: + product_uom_obj = self.pool.get('product.uom') + uom_data = product_uom_obj.browse(cr, uid, product.uom_id.id) + factor = uom_data.factor + return product_read[field_name] * factor if product: pricelist_obj = self.pool.get('product.pricelist') @@ -133,7 +147,7 @@ class account_invoice_line(osv.osv): raise osv.except_osv(_('No Purchase Pricelist Found !'),_("You must first define a pricelist for Supplier !")) price_unit_res = pricelist_obj.price_get(cr, uid, [pricelist], product.id, qty or 1.0, partner_id, {'uom': uom})[pricelist] price_unit = price_unit_res[pricelist] - real_price = get_real_price(price_unit_res, product.id, pricelist) + real_price = get_real_price(price_unit_res, product.id, qty, uom, pricelist) else: if partner_id: pricelist = partner_obj.browse(cr, uid, partner_id).property_product_pricelist.id @@ -142,7 +156,7 @@ class account_invoice_line(osv.osv): price_unit_res = pricelist_obj.price_get(cr, uid, [pricelist], product.id, qty or 1.0, partner_id, {'uom': uom}) price_unit = price_unit_res[pricelist] - real_price = get_real_price(price_unit_res, product.id, pricelist) + real_price = get_real_price(price_unit_res, product.id, qty, uom, pricelist) if pricelist: pricelists=pricelist_obj.read(cr,uid,[pricelist],['visible_discount']) if(len(pricelists)>0 and pricelists[0]['visible_discount'] and real_price != 0): From 36c6bbfe6fde6fd649044cdcdd3a16e926902c3c Mon Sep 17 00:00:00 2001 From: "rpa (Open ERP)" Date: Wed, 3 Nov 2010 19:03:30 +0530 Subject: [PATCH 10/20] [FIX]: product: Fixed precision of conversation ratio(factor) lp bug: https://launchpad.net/bugs/511193 fixed bzr revid: rpa@tinyerp.com-20101103133330-scgkvp2khxbsscec --- addons/product/product.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/product/product.py b/addons/product/product.py index b05b7b2887c..a3266070903 100644 --- a/addons/product/product.py +++ b/addons/product/product.py @@ -69,7 +69,7 @@ class product_uom(osv.osv): 'name': fields.char('Name', size=64, required=True, translate=True), 'category_id': fields.many2one('product.uom.categ', 'UoM Category', required=True, ondelete='cascade', help="Quantity conversions may happen automatically between Units of Measure in the same category, according to their respective ratios."), - 'factor': fields.float('Ratio', required=True,digits=(12, 6), + 'factor': fields.float('Ratio', required=True,digits=(12, 12), help='How many times this UoM is smaller than the reference UoM in this category:\n'\ '1 * (reference unit) = ratio * (this unit)'), 'factor_inv': fields.function(_factor_inv, digits_compute=dp.get_precision('Product UoM'), From 5c6172df5aa85a6c4301d27922cad99a5fdd4efb Mon Sep 17 00:00:00 2001 From: "ron@tinyerp.com" <> Date: Thu, 4 Nov 2010 10:30:13 +0530 Subject: [PATCH 11/20] [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 12/20] [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 37ffc45883b6a8ad758d5f341f0b5a3dfa540140 Mon Sep 17 00:00:00 2001 From: "rpa (Open ERP)" Date: Thu, 4 Nov 2010 17:41:48 +0530 Subject: [PATCH 13/20] [FIX,REF]: stock: Code refactoring lp bug: https://launchpad.net/bugs/666781 fixed bzr revid: rpa@tinyerp.com-20101104121148-g4cqx1bocnmxsued --- addons/stock/wizard/stock_return_picking.py | 3 +-- addons/stock/wizard/stock_split_move.py | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/addons/stock/wizard/stock_return_picking.py b/addons/stock/wizard/stock_return_picking.py index 78852202440..cf6f7c4b1bd 100644 --- a/addons/stock/wizard/stock_return_picking.py +++ b/addons/stock/wizard/stock_return_picking.py @@ -149,10 +149,9 @@ class stock_return_picking(osv.osv_memory): new_picking = None date_cur = time.strftime('%Y-%m-%d %H:%M:%S') - move_ids = [m.id for m in [line for line in pick.move_lines]] set_invoice_state_to_none = True returned_lines = 0 - for move in move_obj.browse(cr, uid, move_ids): + for move in pick.move_lines: if not new_picking: if pick.type=='out': new_type = 'in' diff --git a/addons/stock/wizard/stock_split_move.py b/addons/stock/wizard/stock_split_move.py index f3e72bfdc11..92262648272 100644 --- a/addons/stock/wizard/stock_split_move.py +++ b/addons/stock/wizard/stock_split_move.py @@ -104,8 +104,7 @@ class stock_split_move_line(osv.osv_memory): pick_obj = self.pool.get('stock.picking') pick = pick_obj.browse(cr, uid, record_id, context=context) data = self.read(cr, uid, ids[0]) - move_ids = [m.id for m in [line for line in pick.move_lines]] - for move in move_obj.browse(cr, uid, move_ids, context=context): + for move in pick.move_lines: quantity = data['move%s' % move.id] if 0 < quantity < move.product_qty: new_qty = move.product_qty - quantity From f7dda35ecc888f92a2e12aa4d622769938e8de8f Mon Sep 17 00:00:00 2001 From: "ron@tinyerp.com" <> Date: Wed, 10 Nov 2010 11:07:49 +0530 Subject: [PATCH 14/20] [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 0705b7bad719a3e87758346cd02b1bb1575faa5a Mon Sep 17 00:00:00 2001 From: "rpa (Open ERP)" Date: Wed, 10 Nov 2010 17:43:19 +0530 Subject: [PATCH 15/20] [FIX]: stock: Production lots should not be created for product which is of type=service lp bug: https://launchpad.net/bugs/641110 fixed bzr revid: rpa@tinyerp.com-20101110121319-ai7zni54lkfw6f29 --- 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 e6737ae31bb..4a63a8bd5f5 100644 --- a/addons/stock/stock.py +++ b/addons/stock/stock.py @@ -1353,7 +1353,7 @@ class stock_production_lot(osv.osv): 'name': fields.char('Serial Number', size=64, required=True, help="Unique serial number, will be displayed as: PREFIX/SERIAL [INT_REF]"), 'ref': fields.char('Internal Reference', size=256, help="Internal reference number in case it differs from the manufacturer's serial number"), 'prefix': fields.char('Prefix', size=64, help="Optional prefix to prepend when displaying this serial number: PREFIX/SERIAL [INT_REF]"), - 'product_id': fields.many2one('product.product', 'Product', required=True), + 'product_id': fields.many2one('product.product', 'Product', required=True, domain=[('type', '<>', 'service')]), 'date': fields.datetime('Creation Date', required=True), 'stock_available': fields.function(_get_stock, fnct_search=_stock_search, method=True, type="float", string="Available", select=True, help="Current quantity of products with this Production Lot Number available in company warehouses", From 3e9cf431b3bb7970972134241615b2f6de7c62a9 Mon Sep 17 00:00:00 2001 From: "ron@tinyerp.com" <> Date: Wed, 10 Nov 2010 18:47:58 +0530 Subject: [PATCH 16/20] [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 @@