From ebd9c6e398e8ec8c8f794369cbe5a6dc9787ee77 Mon Sep 17 00:00:00 2001 From: "Turkesh Patel (Open ERP)" Date: Wed, 7 Mar 2012 17:24:53 +0530 Subject: [PATCH] [ADD] added tax policy field bzr revid: tpa@tinyerp.com-20120307115453-he70yxpcpxsr1yfx --- addons/purchase/res_config.py | 42 +++++++++++++++++++ addons/purchase/res_config_view.xml | 8 ++-- .../purchase/security/purchase_security.xml | 16 +++++++ 3 files changed, 63 insertions(+), 3 deletions(-) diff --git a/addons/purchase/res_config.py b/addons/purchase/res_config.py index d32fc3685cd..52f726e8873 100644 --- a/addons/purchase/res_config.py +++ b/addons/purchase/res_config.py @@ -56,12 +56,54 @@ class purchase_configuration(osv.osv_memory): help="""When a purchase order is created, you now have the opportunity to save the related requisition. This new object will regroup and will allow you to easily keep track and order all your purchase orders. It Installs purchase_requisition module."""), + 'tax_policy': fields.selection([ + ('no_tax', 'No Tax'), + ('global_on_order', 'Global On Order'), + ('on_order_line', 'On Order Lines'), + ], 'Taxes', required=True, + help=""" + If you want to apply global tax on sale order then select 'Global On Order' it will add 'Global On Order' group to employees. + If you want to apply different taxes for sale order lines then select 'On Order Lines' it will add 'On Order Lines' group to employees. + """), + 'group_purchase_taxes_global_on_order':fields.boolean("Global on order", group='base.group_user', implied_group='base.group_purchase_taxes_global_on_order'), + 'group_purchase_taxes_on_order_line':fields.boolean("On order line", group='base.group_user', implied_group='base.group_purchase_taxes_on_order_line'), } _defaults = { 'default_method': lambda s,c,u,ctx: s.pool.get('purchase.order').default_get(c,u,['invoice_method'],context=ctx)['invoice_method'], + 'tax_policy': 'global_on_order', } + def _check_default_tax(self, cr, uid, context=None): + ir_values_obj = self.pool.get('ir.values') + for tax in ir_values_obj.get(cr, uid, 'default', False, ['product.product']): + if tax[1] == 'taxes_id': + return tax[2] + return False + + def set_default_taxes(self, cr, uid, ids, context=None): + ir_values_obj = self.pool.get('ir.values') + taxes = self._check_default_tax(cr, uid, context=context) + if taxes: + ir_values_obj.set(cr, uid, 'default', False, 'tax_id', ['purchase.order'], taxes[0]) + ir_values_obj.set(cr, uid, 'default', False, 'tax_id', ['purchase.order.line'], taxes) + ir_values_obj.set(cr, uid, 'default', False, 'taxes_id', ['product.product'], taxes) + + def onchange_tax_policy(self, cr, uid, ids, tax_policy, context=None): + res = {'value': {}} + if ids: + self.set_tax_policy(cr, uid, ids, context=context) + if tax_policy == 'global_on_order': + res['value'].update({'group_purchase_taxes_global_on_order': True}) + res['value'].update({'group_purchase_taxes_on_order_line': False}) + + elif tax_policy == 'on_order_line': + res['value'].update({'group_purchase_taxes_on_order_line': True}) + res['value'].update({'group_purchase_taxes_global_on_order': False}) + else: + res['value'].update({'group_purchase_taxes_on_order_line': False, 'group_purchase_taxes_global_on_order': False}) + return res + purchase_configuration() # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file diff --git a/addons/purchase/res_config_view.xml b/addons/purchase/res_config_view.xml index f1273fb55a6..3ad32ba07ad 100644 --- a/addons/purchase/res_config_view.xml +++ b/addons/purchase/res_config_view.xml @@ -17,9 +17,11 @@ - + + + + + diff --git a/addons/purchase/security/purchase_security.xml b/addons/purchase/security/purchase_security.xml index 4a8ac571703..11dfe28b0b0 100644 --- a/addons/purchase/security/purchase_security.xml +++ b/addons/purchase/security/purchase_security.xml @@ -12,6 +12,22 @@ + + Purchase Taxes Global on Order + + + + + Purchase Taxes on Order Lines + + + + + + + Purchase Order multi-company