[IMP] Change move_id in move_dest_id where needed (thanks to branch of psi), give...
authorJosse Colpaert <jco@openerp.com>
Mon, 12 Aug 2013 12:37:17 +0000 (14:37 +0200)
committerJosse Colpaert <jco@openerp.com>
Mon, 12 Aug 2013 12:37:17 +0000 (14:37 +0200)
bzr revid: jco@openerp.com-20130812123717-y6golm2oaxn6n9pm

addons/mrp/procurement.py
addons/procurement/procurement.py
addons/purchase/purchase.py
addons/purchase_requisition/purchase_requisition.py
addons/stock/procurement.py

index b667f2e..76c9f22 100644 (file)
@@ -92,10 +92,10 @@ class procurement_order(osv.osv):
 
     def get_phantom_bom_id(self, cr, uid, ids, context=None):
         for procurement in self.browse(cr, uid, ids, context=context):
-            if procurement.move_id and procurement.move_id.product_id.supply_method=='produce' \
-                 and procurement.move_id.product_id.procure_method=='make_to_order':
+            if procurement.move_dest_id and procurement.move_dest_id.product_id.supply_method=='produce' \
+                 and procurement.move_dest_id.product_id.procure_method=='make_to_order':
                     phantom_bom_id = self.pool.get('mrp.bom').search(cr, uid, [
-                        ('product_id', '=', procurement.move_id.product_id.id),
+                        ('product_id', '=', procurement.move_dest_id.product_id.id),
                         ('bom_id', '=', False),
                         ('type', '=', 'phantom')]) 
                     return phantom_bom_id 
@@ -120,7 +120,7 @@ class procurement_order(osv.osv):
         move_obj = self.pool.get('stock.move')
         procurement_obj = self.pool.get('procurement.order')
         for procurement in procurement_obj.browse(cr, uid, ids, context=context):
-            res_id = procurement.move_id.id
+            res_id = procurement.move_dest_id and procurement.move_dest_id.id or False
             newdate = datetime.strptime(procurement.date_planned, '%Y-%m-%d %H:%M:%S') - relativedelta(days=procurement.product_id.produce_delay or 0.0)
             newdate = newdate - relativedelta(days=company.manufacturing_lead)
             produce_id = production_obj.create(cr, uid, {
index 6282336..69e2b1c 100644 (file)
@@ -125,7 +125,7 @@ class procurement_order(osv.osv):
             ('running', 'Running'),
             ('done', 'Done')
         ], 'Status', required=True, track_visibility='onchange'),
-        'message': fields.text('Latest error', help="Exception occurred while computing procurement orders."),
+        'message': fields.text('Latest error', help="Exception occurred while computing procurement orders.", track_visibility='onchange'),
     }
 
     _defaults = {
index 31522c2..a80b84b 100644 (file)
@@ -1218,63 +1218,65 @@ class procurement_order(osv.osv):
         acc_pos_obj = self.pool.get('account.fiscal.position')
         seq_obj = self.pool.get('ir.sequence')
         warehouse_obj = self.pool.get('stock.warehouse')
+        pass_ids = []
         for procurement in self.browse(cr, uid, ids, context=context):
-            res_id = procurement.move_id.id
+            res_id = procurement.move_dest_id and procurement.move_dest_id.id or False
             partner = procurement.product_id.seller_id # Taken Main Supplier of Product of Procurement.
-            assert partner, ('There is no supplier associated to product %s', (procurements.product_id.name))
-            seller_qty = procurement.product_id.seller_qty
-            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 = warehouse_obj.search(cr, uid, [('company_id', '=', procurement.company_id.id or company.id)], 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)
-            if seller_qty:
-                qty = max(qty,seller_qty)
-
-            price = pricelist_obj.price_get(cr, uid, [pricelist_id], procurement.product_id.id, qty, partner_id, {'uom': uom_id})[pricelist_id]
-
-            schedule_date = self._get_purchase_schedule_date(cr, uid, procurement, company, context=context)
-            purchase_date = self._get_purchase_order_date(cr, uid, procurement, company, schedule_date, context=context)
-
-            #Passing partner_id to context for purchase order line integrity of Line name
-            new_context = context.copy()
-            new_context.update({'lang': partner.lang, 'partner_id': partner_id})
-
-            product = prod_obj.browse(cr, uid, procurement.product_id.id, context=new_context)
-            taxes_ids = procurement.product_id.supplier_taxes_id
-            taxes = acc_pos_obj.map_tax(cr, uid, partner.property_account_position, taxes_ids)
-
-            name = product.partner_ref
-            if product.description_purchase:
-                name += '\n'+ product.description_purchase
-            line_vals = {
-                'name': name,
-                'product_qty': qty,
-                'product_id': procurement.product_id.id,
-                'product_uom': uom_id,
-                'price_unit': price or 0.0,
-                'date_planned': schedule_date.strftime(DEFAULT_SERVER_DATETIME_FORMAT),
-                'move_dest_id': res_id,
-                '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,
-                'location_id': procurement.location_id.id,
-                'warehouse_id': warehouse_id and warehouse_id[0] or False,
-                'pricelist_id': pricelist_id,
-                'date_order': purchase_date.strftime(DEFAULT_SERVER_DATETIME_FORMAT),
-                'company_id': procurement.company_id.id,
-                'fiscal_position': partner.property_account_position and partner.property_account_position.id or False,
-                'payment_term_id': partner.property_supplier_payment_term.id or False,
-            }
-            res[procurement.id] = self.create_procurement_purchase_order(cr, uid, procurement, po_vals, line_vals, context=new_context)
-            self.write(cr, uid, [procurement.id], {'state': 'running', 'purchase_id': res[procurement.id]})
-        self.message_post(cr, uid, ids, body=_("Draft Purchase Order created"), context=context)
+            if not partner: 
+                procurement.write({'message': _('There is no supplier associated to product %s') % (procurement.product_id.name)})
+            else:
+                seller_qty = procurement.product_id.seller_qty
+                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 = warehouse_obj.search(cr, uid, [('company_id', '=', procurement.company_id.id or company.id)], 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)
+                if seller_qty:
+                    qty = max(qty,seller_qty)
+
+                price = pricelist_obj.price_get(cr, uid, [pricelist_id], procurement.product_id.id, qty, partner_id, {'uom': uom_id})[pricelist_id]
+
+                schedule_date = self._get_purchase_schedule_date(cr, uid, procurement, company, context=context)
+                purchase_date = self._get_purchase_order_date(cr, uid, procurement, company, schedule_date, context=context)
+
+                #Passing partner_id to context for purchase order line integrity of Line name
+                new_context = context.copy()
+                new_context.update({'lang': partner.lang, 'partner_id': partner_id})
+                product = prod_obj.browse(cr, uid, procurement.product_id.id, context=new_context)
+                taxes_ids = procurement.product_id.supplier_taxes_id
+                taxes = acc_pos_obj.map_tax(cr, uid, partner.property_account_position, taxes_ids)
+                name = product.partner_ref
+                if product.description_purchase:
+                    name += '\n'+ product.description_purchase
+                line_vals = {
+                    'name': name,
+                    'product_qty': qty,
+                    'product_id': procurement.product_id.id,
+                    'product_uom': uom_id,
+                    'price_unit': price or 0.0,
+                    'date_planned': schedule_date.strftime(DEFAULT_SERVER_DATETIME_FORMAT),
+                    'move_dest_id': res_id,
+                    '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,
+                    'location_id': procurement.location_id.id,
+                    'warehouse_id': warehouse_id and warehouse_id[0] or False,
+                    'pricelist_id': pricelist_id,
+                    'date_order': purchase_date.strftime(DEFAULT_SERVER_DATETIME_FORMAT),
+                    'company_id': procurement.company_id.id,
+                    'fiscal_position': partner.property_account_position and partner.property_account_position.id or False,
+                    'payment_term_id': partner.property_supplier_payment_term.id or False,
+                }
+                res[procurement.id] = self.create_procurement_purchase_order(cr, uid, procurement, po_vals, line_vals, context=new_context)
+                self.write(cr, uid, [procurement.id], {'state': 'running', 'purchase_id': res[procurement.id]})
+                pass_ids += [procurement.id]
+        if pass_ids:
+            self.message_post(cr, uid, pass_ids, body=_("Draft Purchase Order created"), context=context)
         return res
 
     def _product_virtual_get(self, cr, uid, order_point):
index 7f23e1b..85fda69 100644 (file)
@@ -391,7 +391,7 @@ class procurement_order(osv.osv):
                 'date_end': procurement.date_planned,
                 'warehouse_id': warehouse_id and warehouse_id[0] or False,
                 'company_id': procurement.company_id.id,
-                'move_dest_id': procurement.move_id.id,
+                'move_dest_id': procurement.move_dest_id and procurement.move_dest_id.id or False,
                 'line_ids': [(0, 0, {
                     'product_id': procurement.product_id.id,
                     'product_uom_id': procurement.product_uom.id,
index 71864af..7f36871 100644 (file)
@@ -107,7 +107,6 @@ class procurement_order(osv.osv):
                     return False
             else:
                 return True
-            return procurement.move_id.state == 'done'
         return super(procurement_order, self)._check(cr, uid, procurement, context)