From 940b5beb2621858fdc8a2d1af6c205d5ebda5b10 Mon Sep 17 00:00:00 2001 From: Martin Trigaux Date: Thu, 11 Dec 2014 14:15:56 +0100 Subject: [PATCH 1/3] [FIX] purchase: cancel PO lines and set related procurements in exception on cancelation of a PO --- addons/purchase/purchase.py | 23 +++++++++++++++++++++-- addons/purchase/purchase_workflow.xml | 2 +- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py index e6f4989c9a3..eea61a7b3c9 100644 --- a/addons/purchase/purchase.py +++ b/addons/purchase/purchase.py @@ -266,6 +266,22 @@ class purchase_order(osv.osv): return super(purchase_order, self).unlink(cr, uid, unlink_ids, context=context) + def set_order_line_status(self, cr, uid, ids, status, context=None): + line = self.pool.get('purchase.order.line') + order_line_ids = [] + move_ids = [] + proc_obj = self.pool.get('procurement.order') + for order in self.browse(cr, uid, ids, context=context): + order_line_ids += [po_line.id for po_line in order.order_line] + move_ids += [po_line.move_dest_id.id for po_line in order.order_line if po_line.move_dest_id] + if order_line_ids: + line.write(cr, uid, order_line_ids, {'state': status}, context=context) + if order_line_ids and status == 'cancel': + procs = proc_obj.search(cr, uid, [('move_id', 'in', move_ids)], context=context) + if procs: + proc_obj.write(cr, uid, procs, {'state': 'exception'}, context=context) + return True + def button_dummy(self, cr, uid, ids, context=None): return True @@ -582,6 +598,10 @@ class purchase_order(osv.osv): return True return False + def wkf_action_cancel(self, cr, uid, ids, context=None): + self.write(cr, uid, ids, {'state': 'cancel'}, context=context) + self.set_order_line_status(cr, uid, ids, 'cancel', context=context) + def action_cancel(self, cr, uid, ids, context=None): wf_service = netsvc.LocalService("workflow") for purchase in self.browse(cr, uid, ids, context=context): @@ -601,9 +621,8 @@ class purchase_order(osv.osv): wf_service.trg_validate(uid, 'account.invoice', inv.id, 'invoice_cancel', cr) 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'}) - for (id, name) in self.name_get(cr, uid, ids): + for id in ids: wf_service.trg_validate(uid, 'purchase.order', id, 'purchase_cancel', cr) return True diff --git a/addons/purchase/purchase_workflow.xml b/addons/purchase/purchase_workflow.xml index bed4ba5275c..ac9f561442a 100644 --- a/addons/purchase/purchase_workflow.xml +++ b/addons/purchase/purchase_workflow.xml @@ -31,7 +31,7 @@ cancel function True - write({'state':'cancel'}) + wkf_action_cancel() From ccd2f68af02331106d8cff8ccb9c71c1d2be69c2 Mon Sep 17 00:00:00 2001 From: senthilnathang Date: Fri, 12 Dec 2014 11:59:37 +0800 Subject: [PATCH 2/3] [FIX] base: Malaysian currency Default Currency for Malaysia is MYR (Malaysian ringgit), not MXN (Mexican peso) Fixes #4193 --- openerp/addons/base/res/res_country_data.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openerp/addons/base/res/res_country_data.xml b/openerp/addons/base/res/res_country_data.xml index 2e22687098b..119603a1dd4 100644 --- a/openerp/addons/base/res/res_country_data.xml +++ b/openerp/addons/base/res/res_country_data.xml @@ -798,7 +798,7 @@ Malaysia my - + Mozambique From f46fa1d0263ec6f7dd2e0f6dd5c4b90eca8d299e Mon Sep 17 00:00:00 2001 From: Denis Ledoux Date: Fri, 12 Dec 2014 15:39:35 +0100 Subject: [PATCH 3/3] [FIX] sale_margin: margin handle included taxes for sale Another fix should probably be build for purchase price, but it isn't that easy, we need to know the partner to which the product has been purchased, as taxes are partner/country dependent. Besides, included taxes in purchase prices happen less often. --- addons/sale_margin/sale_margin.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/addons/sale_margin/sale_margin.py b/addons/sale_margin/sale_margin.py index 7c58028658e..96031db1f3c 100644 --- a/addons/sale_margin/sale_margin.py +++ b/addons/sale_margin/sale_margin.py @@ -52,10 +52,7 @@ class sale_order_line(osv.osv): for line in self.browse(cr, uid, ids, context=context): res[line.id] = 0 if line.product_id: - if line.purchase_price: - res[line.id] = round((line.price_unit*line.product_uos_qty*(100.0-line.discount)/100.0) -(line.purchase_price*line.product_uos_qty), 2) - else: - res[line.id] = round((line.price_unit*line.product_uos_qty*(100.0-line.discount)/100.0) -(line.product_id.standard_price*line.product_uos_qty), 2) + res[line.id] = round(line.price_subtotal - ((line.purchase_price or line.product_id.standard_price) * line.product_uos_qty), 2) return res _columns = {