summaryrefslogtreecommitdiff
path: root/addons/purchase
diff options
context:
space:
mode:
authorJosse Colpaert <jco@odoo.com>2014-09-17 22:12:51 +0200
committerJosse Colpaert <jco@odoo.com>2014-09-17 22:12:51 +0200
commitccc3e7ff994c66cafab17c02cd293128e0e8d3ef (patch)
treee0653532585d33d64e6e5615fc00cced769c37b6 /addons/purchase
parent8aca4094af3796668c1bdcde8ead3fcab3c3e8da (diff)
parent5aeccbd90ed9d8e627c31823b976ab31e6d35312 (diff)
Merge pull request #2502 from odoo-dev/8.0-wmsstaging9-jco
8.0 wmsstaging9 jco
Diffstat (limited to 'addons/purchase')
-rw-r--r--addons/purchase/purchase.py19
-rw-r--r--addons/purchase/purchase_view.xml3
-rw-r--r--addons/purchase/stock.py19
3 files changed, 28 insertions, 13 deletions
diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py
index be2803261e7..97f0861ef31 100644
--- a/addons/purchase/purchase.py
+++ b/addons/purchase/purchase.py
@@ -679,12 +679,12 @@ class purchase_order(osv.osv):
def action_cancel(self, cr, uid, ids, context=None):
for purchase in self.browse(cr, uid, ids, context=context):
for pick in purchase.picking_ids:
- if pick.state not in ('draft', 'cancel'):
- raise osv.except_osv(
- _('Unable to cancel the purchase order %s.') % (purchase.name),
- _('First cancel all receipts related to this purchase order.'))
- self.pool.get('stock.picking') \
- .signal_workflow(cr, uid, map(attrgetter('id'), purchase.picking_ids), 'button_cancel')
+ for move in pick.move_lines:
+ if pick.state == 'done':
+ raise osv.except_osv(
+ _('Unable to cancel the purchase order %s.') % (purchase.name),
+ _('You have already received some goods for it. '))
+ self.pool.get('stock.picking').action_cancel(cr, uid, [x.id for x in purchase.picking_ids if x.state != 'cancel'], context=context)
for inv in purchase.invoice_ids:
if inv and inv.state not in ('cancel', 'draft'):
raise osv.except_osv(
@@ -692,10 +692,6 @@ class purchase_order(osv.osv):
_('You must first cancel all invoices related to this purchase order.'))
self.pool.get('account.invoice') \
.signal_workflow(cr, uid, map(attrgetter('id'), purchase.invoice_ids), 'invoice_cancel')
- self.pool['purchase.order.line'].write(cr, uid, [l.id for l in purchase.order_line],
- {'state': 'cancel'})
- self.write(cr, uid, ids, {'state': 'cancel'})
- self.set_order_line_status(cr, uid, ids, 'cancel', context=context)
self.signal_workflow(cr, uid, ids, 'purchase_cancel')
return True
@@ -1156,6 +1152,7 @@ class purchase_order_line(osv.osv):
self.write(cr, uid, ids, {'state': 'confirmed'}, context=context)
return True
+
class procurement_rule(osv.osv):
_inherit = 'procurement.rule'
@@ -1287,7 +1284,7 @@ class procurement_order(osv.osv):
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
+ name = product.display_name
if product.description_purchase:
name += '\n' + product.description_purchase
diff --git a/addons/purchase/purchase_view.xml b/addons/purchase/purchase_view.xml
index 239bc990ff2..1ccd8af6011 100644
--- a/addons/purchase/purchase_view.xml
+++ b/addons/purchase/purchase_view.xml
@@ -202,8 +202,7 @@
<button name="view_picking" string="Receive Products" type="object" attrs="{'invisible': ['|', ('shipped','=',True), ('state','!=', 'approved')]}" class="oe_highlight"/>
<button name="view_invoice" string="Receive Invoice" type="object" attrs="{'invisible': ['|', ('invoice_method','in', ['picking', 'manual']), '|', ('state','!=', 'approved'), ('invoiced','=',True) ]}" class="oe_highlight"/>
<button name="action_cancel_draft" states="cancel,sent,confirmed" string="Set to Draft" type="object" />
- <button name="purchase_cancel" states="draft,confirmed,sent,bid" string="Cancel"/>
- <button name="action_cancel" states="approved,except_picking,except_invoice" string="Cancel" type="object" />
+ <button name="action_cancel" states="draft,confirmed,sent,bid,approved,except_picking,except_invoice" string="Cancel" type="object" />
<field name="state" widget="statusbar" statusbar_visible="draft,sent,bid,approved,done" statusbar_colors='{"except_picking":"red","except_invoice":"red","confirmed":"blue"}' readonly="1"/>
</header>
<sheet>
diff --git a/addons/purchase/stock.py b/addons/purchase/stock.py
index 205513c90ac..977326e7511 100644
--- a/addons/purchase/stock.py
+++ b/addons/purchase/stock.py
@@ -139,6 +139,25 @@ class stock_picking(osv.osv):
}),
}
+ def _create_invoice_from_picking(self, cr, uid, picking, vals, context=None):
+ purchase_obj = self.pool.get("purchase.order")
+ purchase_line_obj = self.pool.get('purchase.order.line')
+ invoice_line_obj = self.pool.get('account.invoice.line')
+ invoice_id = super(stock_picking, self)._create_invoice_from_picking(cr, uid, picking, vals, context=context)
+ if picking.move_lines and picking.move_lines[0].purchase_line_id:
+ purchase_id = picking.move_lines[0].purchase_line_id.order_id.id
+ purchase_line_ids = purchase_line_obj.search(cr, uid, [('order_id', '=', purchase_id), ('product_id.type', '=', 'service'), ('invoiced', '=', False)], context=context)
+ if purchase_line_ids:
+ inv_lines = []
+ for po_line in purchase_line_obj.browse(cr, uid, purchase_line_ids, context=context):
+ acc_id = purchase_obj._choose_account_from_po_line(cr, uid, po_line, context=context)
+ inv_line_data = purchase_obj._prepare_inv_line(cr, uid, acc_id, po_line, context=context)
+ inv_line_id = invoice_line_obj.create(cr, uid, inv_line_data, context=context)
+ inv_lines.append(inv_line_id)
+ po_line.write({'invoice_lines': [(4, inv_line_id)]})
+ invoice_line_obj.write(cr, uid, inv_lines, {'invoice_id': invoice_id}, context=context)
+ return invoice_id
+
class stock_warehouse(osv.osv):
_inherit = 'stock.warehouse'