diff --git a/addons/mrp/stock.py b/addons/mrp/stock.py index caed38654ac..90b98b093ae 100644 --- a/addons/mrp/stock.py +++ b/addons/mrp/stock.py @@ -113,6 +113,9 @@ class StockMove(osv.osv): production_obj.force_production(cr, uid, [prod.id]) wf_service.trg_validate(uid, 'mrp.production', prod.id, 'button_produce', cr) for new_move in new_moves: + if new_move == move.id: + #This move is already there in move lines of production order + continue production_obj.write(cr, uid, production_ids, {'move_lines': [(4, new_move)]}) res.append(new_move) return res diff --git a/addons/product/product.py b/addons/product/product.py index 84b90a53b62..b51a0df9c5f 100644 --- a/addons/product/product.py +++ b/addons/product/product.py @@ -760,7 +760,7 @@ class pricelist_partnerinfo(osv.osv): 'name': fields.char('Description', size=64), 'suppinfo_id': fields.many2one('product.supplierinfo', 'Partner Information', required=True, ondelete='cascade'), 'min_quantity': fields.float('Quantity', required=True), - 'price': fields.float('Unit Price', required=True, digits_compute=dp.get_precision('Purchase Price')), + 'price': fields.float('Unit Price', required=True, digits_compute=dp.get_precision('Purchase Price'), help="This price will be considered as a price for default Unit of Measure of the product"), } _order = 'min_quantity asc' pricelist_partnerinfo() diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py index 5401aa2a205..bcd7878b563 100644 --- a/addons/purchase/purchase.py +++ b/addons/purchase/purchase.py @@ -649,7 +649,7 @@ class purchase_order_line(osv.osv): 'notes': notes or'', 'product_uom' : uom or False}, 'domain':{'product_uom':[]}} prod= self.pool.get('product.product').browse(cr, uid, product) - + product_uom_pool = self.pool.get('product.uom') lang=False if partner_id: lang=self.pool.get('res.partner').read(cr, uid, partner_id, ['lang'])['lang'] @@ -670,15 +670,18 @@ class purchase_order_line(osv.osv): for s in prod.seller_ids: if s.name.id == partner_id: seller_delay = s.delay - temp_qty = s.qty # supplier _qty assigned to temp + temp_qty = s.min_qty # supplier _qty assigned to temp + if s.product_uom: + qty = product_uom_pool._compute_qty(cr, uid, s.product_uom.id, s.min_qty, to_uom_id=prod_uom_po) + uom = prod_uom_po if qty < temp_qty: # If the supplier quantity is greater than entered from user, set minimal. qty = temp_qty if price_unit: price = price_unit else: price = self.pool.get('product.pricelist').price_get(cr,uid,[pricelist], - product, qty or 1.0, partner_id, { - 'uom': uom, + product, 1.0, partner_id, { + 'uom': prod_uom_po, 'date': date_order, })[pricelist] dt = (datetime.now() + relativedelta(days=int(seller_delay) or 0.0)).strftime('%Y-%m-%d %H:%M:%S') diff --git a/addons/purchase/purchase_demo.xml b/addons/purchase/purchase_demo.xml index f95009aae9d..053c6f17b14 100644 --- a/addons/purchase/purchase_demo.xml +++ b/addons/purchase/purchase_demo.xml @@ -56,6 +56,10 @@ + + + + diff --git a/addons/purchase_requisition/__openerp__.py b/addons/purchase_requisition/__openerp__.py index 0cfc48feccd..ff99be06ae3 100644 --- a/addons/purchase_requisition/__openerp__.py +++ b/addons/purchase_requisition/__openerp__.py @@ -31,7 +31,8 @@ "depends" : ["purchase","mrp"], "init_xml" : [], "demo_xml" : ['purchase_requisition_demo.xml'], - "update_xml" : ["wizard/purchase_requisition_partner_view.xml", + "update_xml" : ["security/purchase_tender.xml", + "wizard/purchase_requisition_partner_view.xml", "purchase_requisition_data.xml", "purchase_requisition_view.xml", "purchase_requisition_report.xml", diff --git a/addons/purchase_requisition/purchase_requisition_demo.xml b/addons/purchase_requisition/purchase_requisition_demo.xml index 225137416bf..a0b4d7f217b 100644 --- a/addons/purchase_requisition/purchase_requisition_demo.xml +++ b/addons/purchase_requisition/purchase_requisition_demo.xml @@ -9,7 +9,6 @@ - TE0001 multiple 2010/09/16 15:56:14 diff --git a/addons/purchase_requisition/wizard/purchase_requisition_partner.py b/addons/purchase_requisition/wizard/purchase_requisition_partner.py index a5a291b545d..8db1f97b390 100644 --- a/addons/purchase_requisition/wizard/purchase_requisition_partner.py +++ b/addons/purchase_requisition/wizard/purchase_requisition_partner.py @@ -85,28 +85,28 @@ class purchase_requisition_partner(osv.osv_memory): partner_list = sorted([(partner.sequence, partner) for partner in line.product_id.seller_ids if partner]) partner_rec = partner_list and partner_list[0] and partner_list[0][1] or False uom_id = line.product_id.uom_po_id and line.product_id.uom_po_id.id or False - newdate = datetime.strptime(tender.date_start, '%Y-%m-%d %H:%M:%S') - newdate = newdate - relativedelta(days=company.po_lead) + + if tender.date_start: + newdate = datetime.strptime(tender.date_start, '%Y-%m-%d %H:%M:%S') - relativedelta(days=company.po_lead) + else: + newdate = datetime.today() - relativedelta(days=company.po_lead) delay = partner_rec and partner_rec.delay or 0.0 - newdate = newdate -(delay and relativedelta(days=delay) or datetime.strptime(tender.date_start, '%Y-%m-%d %H:%M:%S') ) + if delay: + newdate -= relativedelta(days=delay) + partner = partner_rec and partner_rec.name or supplier_data pricelist_id = partner.property_product_pricelist_purchase and partner.property_product_pricelist_purchase.id or False price = pricelist_obj.price_get(cr, uid, [pricelist_id], line.product_id.id, line.product_qty, False, {'uom': uom_id})[pricelist_id] product = prod_obj.browse(cr, uid, line.product_id.id, context=context) location_id = self.pool.get('stock.warehouse').read(cr, uid, [tender.warehouse_id.id], ['lot_input_id'])[0]['lot_input_id'][0] - if not newdate: - date_planned = datetime.strptime(tender.date_start, '%Y-%m-%d %H:%M:%S') - else: - date_planned = newdate.strftime('%Y-%m-%d %H:%M:%S') - purchase_order_line= { 'name': product.partner_ref, 'product_qty': line.product_qty, 'product_id': line.product_id.id, 'product_uom': uom_id, 'price_unit': price, - 'date_planned': date_planned, + 'date_planned': newdate.strftime('%Y-%m-%d %H:%M:%S'), 'notes': product.description_purchase, } taxes_ids = line.product_id.product_tmpl_id.supplier_taxes_id diff --git a/addons/sale/sale_view.xml b/addons/sale/sale_view.xml index adafd1938fa..c83f1cd3e45 100644 --- a/addons/sale/sale_view.xml +++ b/addons/sale/sale_view.xml @@ -138,7 +138,7 @@ + on_change="product_uom_change(parent.pricelist_id,product_id,product_uom_qty,product_uom,product_uos_qty,product_uos,name,parent.partner_id, 'lang' in context and context['lang'], False, parent.date_order)"/> - -