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):