← Back to team overview

avanzosc team mailing list archive

[Merge] lp:~dani-ds/avanzosc/dos_sale_commissioncalc into lp:~avanzosc-security-team/avanzosc/72horas

 

Daniel Campos (Avanzosc) has proposed merging lp:~dani-ds/avanzosc/dos_sale_commissioncalc into lp:~avanzosc-security-team/avanzosc/72horas.

Requested reviews:
  Avanzosc_security (avanzosc-security-team)

For more details, see:
https://code.launchpad.net/~dani-ds/avanzosc/dos_sale_commissioncalc/+merge/225512

dos_sale_commissioncalc
-- 
https://code.launchpad.net/~dani-ds/avanzosc/dos_sale_commissioncalc/+merge/225512
Your team Avanzosc_security is requested to review the proposed merge of lp:~dani-ds/avanzosc/dos_sale_commissioncalc into lp:~avanzosc-security-team/avanzosc/72horas.
=== modified file 'dos_sale_commissioncalc/__init__.py'
--- dos_sale_commissioncalc/__init__.py	2014-06-11 10:23:47 +0000
+++ dos_sale_commissioncalc/__init__.py	2014-07-03 15:53:39 +0000
@@ -20,15 +20,7 @@
 #
 ##############################################################################
 
-
-import salecommissiontable
-import salecommissionlines
-import salezone
-import saleagent
-import partner
-import invoice
-import sale_order
-import stock_picking
-import report
-import wizard
+from . import models
+from . import report
+from . import wizard
 

=== modified file 'dos_sale_commissioncalc/__openerp__.py'
--- dos_sale_commissioncalc/__openerp__.py	2014-06-11 10:23:47 +0000
+++ dos_sale_commissioncalc/__openerp__.py	2014-07-03 15:53:39 +0000
@@ -2,25 +2,24 @@
 {
     "name": "DOS Commission Calc",
     "version": "1.0",
-    "depends": ["base","product","account","sale","decimal_precision"],
+    "depends": ["base", "product", "account", "sale"],
     "author": "Diseño Operativo de Software S.L.",
     "category": "Sale",
     "description": """
     Commission Calc
     """,
-    "init_xml": [],
-    'update_xml': [
-		'salecommissiontableview.xml',
-		'salezone_view.xml',
-		'saleagent_view.xml',
-		'partner_view.xml', 
-		'invoice_view.xml',
-		'sale_commissions_view.xml',
-		'sale_order_view.xml',
-		'sale_commissions_report.xml',
-		'wizard/dos_sale_commission_report_wizard.xml',
-		'security/ir.model.access.csv',
-	],
+    'data': [
+        'views/salecommissiontableview.xml',
+        'views/salezone_view.xml',
+        'views/saleagent_view.xml',
+        'views/partner_view.xml',
+        'views/invoice_view.xml',
+        'views/sale_commissions_view.xml',
+        'views/sale_order_view.xml',
+        'reports/sale_commissions_report.xml',
+        'wizard/dos_sale_commission_report_wizard.xml',
+        'security/ir.model.access.csv',
+    ],
     'demo_xml': [],
     'installable': True,
     'active': False,

=== added directory 'dos_sale_commissioncalc/models'
=== added file 'dos_sale_commissioncalc/models/__init__.py'
--- dos_sale_commissioncalc/models/__init__.py	1970-01-01 00:00:00 +0000
+++ dos_sale_commissioncalc/models/__init__.py	2014-07-03 15:53:39 +0000
@@ -0,0 +1,30 @@
+# -*- encoding: utf-8 -*-
+##############################################################################
+#
+#    OpenERP, Open Source Management Solution
+#    Copyright (C) 2004-2010 Tiny SPRL (http://tiny.be). All Rights Reserved
+#
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU General Public License as published by
+#    the Free Software Foundation, either version 3 of the License, or
+#    (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU General Public License for more details.
+#
+#    You should have received a copy of the GNU General Public License
+#    along with this program.  If not, see http://www.gnu.org/licenses/.
+#
+##############################################################################
+
+from . import salecommissiontable
+from . import salecommissionlines
+from . import salezone
+from . import saleagent
+from . import partner
+from . import invoice
+from . import sale_order
+from . import stock_picking

=== renamed file 'dos_sale_commissioncalc/invoice.py' => 'dos_sale_commissioncalc/models/invoice.py'
--- dos_sale_commissioncalc/invoice.py	2014-06-11 10:23:47 +0000
+++ dos_sale_commissioncalc/models/invoice.py	2014-07-03 15:53:39 +0000
@@ -19,78 +19,89 @@
 #
 ##############################################################################
 
-"""Inherit account_invoice to add commission settled and commission settled date"""
-
-from osv import osv, fields
-from tools.translate import _
-import decimal_precision as dp
-
-class account_invoice(osv.osv):
-	"""Inherit account_invoice to add commission settled and commission settled date"""
-
-	_inherit = "account.invoice"
-	
-	def _get_agent_percentage_distribution_commission1(self, cr, uid, ids, prop, unknow_none, context=None):
-		result = {}
-		for inv in self.browse(cr, uid, ids, context=context):
-			if inv.agent2_percentage_distribution_commission:
-				result[inv.id] = 100.0 - inv.agent2_percentage_distribution_commission
-			else:
-				result[inv.id] = 100.0
-		return result
-	
-	def _invoice_paid_date(self, cr, uid, ids, prop, unknow_none, context=None):
-		""" Finds invoice paid date.
-		@param prop: Name of field.
-		@param unknow_none:
-		@return: Dictionary of values.
-		"""
-		result = {}
-		for inv in self.browse(cr, uid, ids, context=context):
-			if inv.state == 'paid':
-				result[inv.id] = inv.date_due
-				for payment in inv.payment_ids:
-					if payment.date > result[inv.id]:
-						result[inv.id] = payment.date
-			else:
-				result[inv.id] = False
-		return result
-		
-	_columns = {
-		'decorator_discount': fields.float('Dto decorador'),
-		'commission_total': fields.float('Total Commission'),
-		'commission_settled_date': fields.datetime('Commission settled date'),
-		'commission_settled': fields.boolean('Settled'),
-		'agent_id': fields.many2one('sale.agent','Sales Agent'),
-		'paid_date': fields.function(_invoice_paid_date, method=True, type='date', string='Paid Date'),
-		'agent2_percentage_distribution_commission': fields.float('% Dist. Com. 2'),
-		'agent1_percentage_distribution_commission': fields.function(_get_agent_percentage_distribution_commission1, method=True, type='float', string='% Dist. Com. 1'),
-		'agent2_id': fields.many2one('sale.agent','Sales Agent 2'),
-	}
-	
-	def onchange_agent_percentage_distribution_commission2(self, cr, uid, ids, agent2_percentage_distribution_commission):
-		v = {}
-		perc = 100
-		if agent2_percentage_distribution_commission:
-			perc = 100.0 - agent2_percentage_distribution_commission
-			if perc < 0:
-				perc = 0
-			if perc > 100:
-				perc = 100
-		v['agent1_percentage_distribution_commission'] = perc
-		return {'value': v}
-	
-	def onchange_partner_id(self, cr, uid, ids, type, partner_id, date_invoice=False, payment_term=False, partner_bank_id=False, company_id=False):
-		res = super(account_invoice, self).onchange_partner_id(cr, uid, ids, type, partner_id, date_invoice=date_invoice, payment_term=payment_term, partner_bank_id=partner_bank_id, company_id=company_id)
-		if not partner_id:
-			res['value']['agent_id'] = False
-			res['value']['agent2_id'] = False
-			return res
-		else:
-			partner = self.pool.get('res.partner').browse(cr, uid, partner_id, context=None)
-			res['value']['agent_id'] = partner.agent_id.id
-			res['value']['agent2_id'] = False
-			
-		return res
-		
-account_invoice()
\ No newline at end of file
+
+from openerp.orm import fields, orm
+
+
+class AccountInvoice(orm.Model):
+    """Inherit account_invoice to add commission settled
+     and commission settled date"""
+    _inherit = "account.invoice"
+
+    def _get_ag_pctage_dist_comm1(self, cr, uid,
+                                  ids, prop, unknow_none, context=None):
+        result = {}
+        for inv in self.browse(cr, uid, ids, context=context):
+            if inv.agent2_percentage_distribution_commission:
+                inv_commision = inv.agent2_percentage_distribution_commission
+                result[inv.id] = 100.0 - inv_commision
+            else:
+                result[inv.id] = 100.0
+        return result
+
+    def _invoice_paid_date(self, cr, uid, ids, prop, unknow_none,
+                           context=None):
+        """ Finds invoice paid date.
+        @param prop: Name of field.
+        @param unknow_none:
+        @return: Dictionary of values.
+        """
+        result = {}
+        for inv in self.browse(cr, uid, ids, context=context):
+            if inv.state == 'paid':
+                result[inv.id] = inv.date_due
+                for payment in inv.payment_ids:
+                    if payment.date > result[inv.id]:
+                        result[inv.id] = payment.date
+            else:
+                result[inv.id] = False
+        return result
+
+    _columns = {
+        'decorator_discount': fields.float('Dto decorador'),
+        'commission_total': fields.float('Total Commission'),
+        'commission_settled_date': fields.datetime('Commission settled date'),
+        'commission_settled': fields.boolean('Settled'),
+        'agent_id': fields.many2one('sale.agent', 'Sales Agent'),
+        'paid_date': fields.function(_invoice_paid_date, method=True,
+                                     type='date', string='Paid Date'),
+        'agent2_percentage_distribution_commission': (
+            fields.float('% Dist. Com. 2')),
+        'agent1_percentage_distribution_commission': (
+            fields.function(_get_ag_pctage_dist_comm1, method=True,
+                            type='float', string='% Dist. Com. 1')),
+        'agent2_id': fields.many2one('sale.agent', 'Sales Agent 2'),
+    }
+
+    def onchange_ag_pctage_dist_comm2(
+            self, cr, uid, ids, agent2_percentage_distribution_commission):
+        v = {}
+        perc = 100
+        if agent2_percentage_distribution_commission:
+            perc = 100.0 - agent2_percentage_distribution_commission
+            if perc < 0:
+                perc = 0
+            if perc > 100:
+                perc = 100
+        v['agent1_percentage_distribution_commission'] = perc
+        return {'value': v}
+
+    def onchange_partner_id(self, cr, uid, ids, type, partner_id,
+                            date_invoice=False, payment_term=False,
+                            partner_bank_id=False, company_id=False):
+        res = super(AccountInvoice,
+                    self).onchange_partner_id(cr, uid, ids, type, partner_id,
+                                              date_invoice=date_invoice,
+                                              payment_term=payment_term,
+                                              partner_bank_id=partner_bank_id,
+                                              company_id=company_id)
+        if not partner_id:
+            res['value']['agent_id'] = False
+            res['value']['agent2_id'] = False
+            return res
+        else:
+            partner = self.pool['res.partner'].browse(cr, uid, partner_id,
+                                                      context=None)
+            res['value']['agent_id'] = partner.agent_id.id
+            res['value']['agent2_id'] = False
+        return res

=== renamed file 'dos_sale_commissioncalc/partner.py' => 'dos_sale_commissioncalc/models/partner.py'
--- dos_sale_commissioncalc/partner.py	2014-06-11 10:23:47 +0000
+++ dos_sale_commissioncalc/models/partner.py	2014-07-03 15:53:39 +0000
@@ -19,46 +19,38 @@
 #
 ##############################################################################
 
-from osv import fields,osv
-
-class res_partner(osv.osv):
-	_name = "res.partner"
-	_description = "Sale agent sale info"
-	_inherit = "res.partner"
-	
-	def _check_permissions(self, cr, uid, ids, field_name, arg, context):
-		res = {}
-
-		for i in ids:
-			if not i:
-				continue
-
-			# Get the HR Officer/Manager id's
-			group_obj = self.pool.get('res.groups')
-			manager_ids = group_obj.search(cr, uid, [('name','=', 'Sales / Manager')])
-			# Get the user and see what groups he/she is in
-			user_obj = self.pool.get('res.users')
-			user = user_obj.browse(cr, uid, uid, context=context)
-
-			group_ids = []
-			for grp in user.groups_id:
-				group_ids.append(grp.id)
-
-			if (manager_ids[0] in group_ids):
-				res[i] ='Manager'
-			else:
-				res[i] = 'User'
-			
-		return res
-   
-	_columns = {
-			'agent_id': fields.many2one('sale.agent','Sales Agent'),
-			'unique_commission': fields.float('Unique Comm %'),
-			'unique_commission_2': fields.float('Unique Comm 2 %'),
-			'is_agent': fields.boolean('Agent'),
-			'permissions': fields.function(_check_permissions, type='char', method=True, string="Permissions"),
-		}
-
-res_partner()
-
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+from openerp.orm import fields, orm
+
+
+class ResPartner(orm.Model):
+    _inherit = "res.partner"
+
+    def _check_permissions(self, cr, uid, ids, field_name, arg, context):
+        res = {}
+        for i in ids:
+            if not i:
+                continue
+            # Get the HR Officer/Manager id's
+            group_obj = self.pool['res.groups']
+            manager_ids = group_obj.search(cr, uid,
+                                           [('name', '=', 'Sales / Manager')])
+            # Get the user and see what groups he/she is in
+            user_obj = self.pool['res.users']
+            user = user_obj.browse(cr, uid, uid, context=context)
+            group_ids = []
+            for grp in user.groups_id:
+                group_ids.append(grp.id)
+            if (manager_ids[0] in group_ids):
+                res[i] = 'Manager'
+            else:
+                res[i] = 'User'
+        return res
+
+    _columns = {
+        'agent_id': fields.many2one('sale.agent', 'Sales Agent'),
+        'unique_commission': fields.float('Unique Comm %'),
+        'unique_commission_2': fields.float('Unique Comm 2 %'),
+        'is_agent': fields.boolean('Agent'),
+        'permissions': fields.function(_check_permissions, type='char',
+                                       method=True, string="Permissions"),
+    }

=== renamed file 'dos_sale_commissioncalc/sale_order.py' => 'dos_sale_commissioncalc/models/sale_order.py'
--- dos_sale_commissioncalc/sale_order.py	2014-06-11 10:23:47 +0000
+++ dos_sale_commissioncalc/models/sale_order.py	2014-07-03 15:53:39 +0000
@@ -19,89 +19,99 @@
 #
 ##############################################################################
 
-"""Modificamos el pedido para que al generar la factura herede el representante del cliente"""
-
-from osv import fields, osv
-from tools.translate import _
-
-class sale_order(osv.osv):
-	"""Modificamos las ventas para incluir el comportamiento de comisiones"""
-
-	_inherit = "sale.order"
-	
-	def _get_percentage_commission_agent(self, cr, uid, ids, prop, unknow_none, context=None):
-		result = {}
-		for order in self.browse(cr, uid, ids, context=context):
-			if order.agent2_percentage_distribution_commission:
-				result[order.id] = 100.0 - order.agent2_percentage_distribution_commission
-			else:
-				result[order.id] = 100.0
-		return result
-		
-	_columns = {
-		'agent2_percentage_distribution_commission': fields.float('% Dist. Com. 2'),
-		'agent1_percentage_distribution_commission': fields.function(_get_percentage_commission_agent, method=True, type='float', string='% Dist. Com. 1'),
-		'agent_id': fields.many2one('sale.agent','Sales Agent'),
-		'agent2_id': fields.many2one('sale.agent','Sales Agent 2'),
-	}
-	
-	def onchange_partner_id(self, cr, uid, ids, part):
-		"""extend this event for add agents partner"""
-		#res = self.onchange_partner_id(cr, uid, ids, part)
-		res = super(sale_order, self).onchange_partner_id(cr, uid, ids, part)
-		if not part:
-			res['value']['agent_id'] = False
-			res['value']['agent2_id'] = False
-			return res
-		else:
-			partner = self.pool.get('res.partner').browse(cr, uid, part, context=None)
-			res['value']['agent_id'] = partner.agent_id.id
-			res['value']['agent2_id'] = False
-			
-		return res
-		
-	# def onchange_partner_id_commission(self, cr, uid, ids, part):
-		# """extend this event for add agents partner"""
-		# res = self.onchange_partner_id(cr, uid, ids, part)
-		# if not part:
-			# res['value']['agent_id'] = False
-			# res['value']['agent2_id'] = False
-			# return res
-		# else:
-			# partner = self.pool.get('res.partner').browse(cr, uid, part, context=None)
-			# res['value']['agent_id'] = partner.agent_id.id
-			# res['value']['agent2_id'] = False
-			
-		# return res
-		
-	def onchange_agent_percentage_distribution_commission2(self, cr, uid, ids, agent2_percentage_distribution_commission):
-		v = {}
-		perc = 100
-		if agent2_percentage_distribution_commission:
-			perc = 100.0 - agent2_percentage_distribution_commission
-			if perc < 0:
-				perc = 0
-			if perc > 100:
-				perc = 100
-		v['agent1_percentage_distribution_commission'] = perc
-		return {'value': v}
-		
-	def action_invoice_create(self, cr, uid, ids, grouped=False, states=['confirmed', 'done', 'exception'], date_inv = False, context=None):
-		"""
-		Inherited method for writing agent_id partner value in created invoice
-		"""
-		invoice_id = super(sale_order, self).action_invoice_create(cr, uid, ids, grouped=grouped, states=states, date_inv = date_inv, context=context)
-		inv_obj = self.pool.get('account.invoice')
-		for saleorder in self.browse(cr, uid, ids, context=context):
-			if saleorder.partner_id and saleorder.agent_id:
-				for invoice in saleorder.invoice_ids:
-					inv_obj.write(cr, uid, [invoice.id], {
-						'agent_id': saleorder.agent_id and saleorder.agent_id.id or False, 
-						'agent2_id': saleorder.agent2_id and saleorder.agent2_id.id or False , 
-						'agent2_percentage_distribution_commission': saleorder.agent2_percentage_distribution_commission
-						})
-				
-		return invoice_id
-	
-
-sale_order()
\ No newline at end of file
+"""Modificamos el pedido para que al generar la factura herede el
+ representante del cliente"""
+
+from openerp.orm import fields, orm
+
+
+class SaleOrder(orm.Model):
+    """Modificamos las ventas para incluir el comportamiento de comisiones"""
+    _inherit = "sale.order"
+
+    def _get_percentage_commission_agent(self, cr, uid, ids, prop,
+                                         unknow_none, context=None):
+        result = {}
+        for order in self.browse(cr, uid, ids, context=context):
+            if order.agent2_percentage_distribution_commission:
+                result[order.id] = (
+                    100.0 - order.agent2_percentage_distribution_commission)
+            else:
+                result[order.id] = 100.0
+        return result
+
+    _columns = {
+        'agent2_percentage_distribution_commission': (
+            fields.float('% Dist. Com. 2')),
+        'agent1_percentage_distribution_commission': (
+            fields.function(_get_percentage_commission_agent,
+                            method=True, type='float',
+                            string='% Dist. Com. 1')),
+        'agent_id': fields.many2one('sale.agent', 'Sales Agent'),
+        'agent2_id': fields.many2one('sale.agent', 'Sales Agent 2'),
+    }
+
+    def onchange_partner_id(self, cr, uid, ids, part):
+        """extend this event for add agents partner"""
+        # res = self.onchange_partner_id(cr, uid, ids, part)
+        res = super(SaleOrder, self).onchange_partner_id(cr, uid, ids, part)
+        partner_obj = self.pool['res.partner']
+        if not part:
+            res['value']['agent_id'] = False
+            res['value']['agent2_id'] = False
+            return res
+        else:
+            partner = partner_obj.browse(cr, uid, part, context=None)
+            res['value']['agent_id'] = partner.agent_id.id
+            res['value']['agent2_id'] = False
+        return res
+
+    # def onchange_partner_id_commission(self, cr, uid, ids, part):
+        # """extend this event for add agents partner"""
+        # res = self.onchange_partner_id(cr, uid, ids, part)
+        # partner_obj = self.pool['res.partner']
+        # if not part:
+        #    res['value']['agent_id'] = False
+        #     res['value']['agent2_id'] = False
+        #     return res
+        # else:
+        #     partner = partner_obj.browse(cr, uid, part,context=None)
+        #     res['value']['agent_id'] = partner.agent_id.id
+        #     res['value']['agent2_id'] = False
+        # return res
+
+    def onchange_ag_pctage_dist_comm2(
+            self, cr, uid, ids, agent2_percentage_distribution_commission):
+        v = {}
+        perc = 100
+        if agent2_percentage_distribution_commission:
+            perc = 100.0 - agent2_percentage_distribution_commission
+            if perc < 0:
+                perc = 0
+            if perc > 100:
+                perc = 100
+        v['agent1_percentage_distribution_commission'] = perc
+        return {'value': v}
+
+    def action_invoice_create(self, cr, uid, ids, grouped=False,
+                              states=['confirmed', 'done', 'exception'],
+                              date_inv=False, context=None):
+        """
+        Inherited method for writing agent_id partner value in created invoice
+        """
+        invoice_id = super(SaleOrder, self).action_invoice_create(
+            cr, uid, ids, grouped=grouped, states=states, date_inv=date_inv,
+            context=context)
+        inv_obj = self.pool.get('account.invoice')
+        for saleorder in self.browse(cr, uid, ids, context=context):
+            if saleorder.partner_id and saleorder.agent_id:
+                for invoice in saleorder.invoice_ids:
+                    inv_obj.write(cr, uid, [invoice.id], {
+                        'agent_id': (saleorder.agent_id and
+                                     saleorder.agent_id.id or False),
+                        'agent2_id': (saleorder.agent2_id and
+                                      saleorder.agent2_id.id or False),
+                        'agent2_percentage_distribution_commission': (
+                            saleorder.agent2_percentage_distribution_commission)
+                        })
+        return invoice_id

=== renamed file 'dos_sale_commissioncalc/saleagent.py' => 'dos_sale_commissioncalc/models/saleagent.py'
--- dos_sale_commissioncalc/saleagent.py	2014-06-11 10:23:47 +0000
+++ dos_sale_commissioncalc/models/saleagent.py	2014-07-03 15:53:39 +0000
@@ -19,28 +19,33 @@
 #
 ##############################################################################
 
-from osv import fields,osv
-
-class sale_agent(osv.osv):
-	_name = "sale.agent"
-	_description = "Sale agent sale info"
-	_columns = {
-	    'name': fields.char('Saleagent Name', size=25, required=True),
-	    'active': fields.boolean('Active'),
-	    'partner_id': fields.many2one('res.partner','Partner',required=True,ondelete='cascade'),
-        'commission_rate': fields.float('Commission Rate',required=False),
-	    'commissiontozeroforce': fields.boolean('Commission To Zero Force'),
-        'retention': fields.float('Retention',required=False),		
-	    'commissionwithouttable': fields.boolean('Commission Without Table'),			
-	    'commissiontable_id': fields.many2one('sale.commissiontable','Commission Table',required=False),
-	    'zone_id': fields.many2one('sale.zone','Zone',required=False),		
-	    'customer': fields.one2many('res.partner','agent_id','Customer'),
-		'company_id': fields.many2one('res.company', 'Company', required=False),
-        }
-	_defaults = {
-		'active': lambda *a: True,
-		'company_id': lambda s, cr, uid, c: s.pool.get('res.company')._company_default_get(cr, uid, 'sale.shop', context=c),
-		}
-
-sale_agent()
-
+from openerp.orm import fields, orm
+
+
+class SaleAgent(orm.Model):
+    _name = "sale.agent"
+    _description = "Sale agent sale info"
+    _columns = {
+        'name': fields.char('Saleagent Name', size=25, required=True),
+        'active': fields.boolean('Active'),
+        'partner_id': fields.many2one('res.partner', 'Partner', required=True,
+                                      ondelete='cascade'),
+        'commission_rate': fields.float('Commission Rate', required=False),
+        'commissiontozeroforce': fields.boolean('Commission To Zero Force'),
+        'retention': fields.float('Retention', required=False),
+        'commissionwithouttable': fields.boolean('Commission Without Table'),
+        'commissiontable_id': fields.many2one('sale.commissiontable',
+                                              'Commission Table',
+                                              required=False),
+        'zone_id': fields.many2one('sale.zone', 'Zone', required=False),
+        'customer': fields.one2many('res.partner', 'agent_id', 'Customer'),
+        'company_id': fields.many2one('res.company', 'Company',
+                                      required=False),
+    }
+
+    _defaults = {
+        'active': lambda *a: True,
+        'company_id': lambda s, cr, uid,
+        c: s.pool['res.company']._company_default_get(cr, uid, 'sale.shop',
+                                                      context=c),
+    }

=== renamed file 'dos_sale_commissioncalc/salecommissionlines.py' => 'dos_sale_commissioncalc/models/salecommissionlines.py'
--- dos_sale_commissioncalc/salecommissionlines.py	2014-06-11 10:23:47 +0000
+++ dos_sale_commissioncalc/models/salecommissionlines.py	2014-07-03 15:53:39 +0000
@@ -1,9 +1,9 @@
 # -*- encoding: utf-8 -*-
 ##############################################################################
 #
-#    OpenERP, Open Source Management Solution    
+#    OpenERP, Open Source Management Solution
 #    Copyright (C) 2004-2010 Tiny SPRL (http://tiny.be). All Rights Reserved
-#    
+#
 #
 #    This program is free software: you can redistribute it and/or modify
 #    it under the terms of the GNU General Public License as published by
@@ -20,18 +20,18 @@
 #
 ##############################################################################
 
-from osv import osv
-from osv import fields
-
-class sale_commissionlines(osv.osv):
-    
+from openerp import orm, fields
+
+
+class SaleCommissionlines(orm.Model):
+
     _name = 'sale.commissionlines'
     _description = 'Sale Commission Lines'
- 
+
     _columns = {
-        'discount':fields.float('Discount',required=True),
-		'commission':fields.float('Commission',required=True),
-        'sale_commissiontable_id': fields.many2one('sale.commissiontable','Commission Table',required=True,ondelete='cascade'),
+        'discount': fields.float('Discount', required=True),
+        'commission': fields.float('Commission', required=True),
+        'sale_commissiontable_id': fields.many2one(
+            'sale.commissiontable', 'Commission Table', required=True,
+            ondelete='cascade'),
     }
-	
-sale_commissionlines()

=== renamed file 'dos_sale_commissioncalc/salecommissiontable.py' => 'dos_sale_commissioncalc/models/salecommissiontable.py'
--- dos_sale_commissioncalc/salecommissiontable.py	2014-06-11 10:23:47 +0000
+++ dos_sale_commissioncalc/models/salecommissiontable.py	2014-07-03 15:53:39 +0000
@@ -1,9 +1,9 @@
 # -*- encoding: utf-8 -*-
 ##############################################################################
 #
-#    OpenERP, Open Source Management Solution    
+#    OpenERP, Open Source Management Solution
 #    Copyright (C) 2004-2010 Tiny SPRL (http://tiny.be). All Rights Reserved
-#    
+#
 #
 #    This program is free software: you can redistribute it and/or modify
 #    it under the terms of the GNU General Public License as published by
@@ -20,25 +20,28 @@
 #
 ##############################################################################
 
-from osv import osv
-from osv import fields
-
-class sale_commissiontable(osv.osv): 
- 
-	_name = 'sale.commissiontable'
-	_description = 'Commission Table Info'
- 
-	_columns = {
-		'name':fields.char('Name', size=64),
-		'maxdctpercent': fields.float('Max Discount %'),
-		'maxdctcommission': fields.float('Max Discount Commission'),
-		'commissiondctzero': fields.float('Commission for 0% discount'),
-		'dctbypaymentdelay': fields.float('% Discount every 30 days'),
-		'sale_commissionlines': fields.one2many('sale.commissionlines','sale_commissiontable_id','Líneas'),
-		'company_id': fields.many2one('res.company', 'Company', required=False),
-		}
-	_defaults = {
-		'company_id': lambda s, cr, uid, c: s.pool.get('res.company')._company_default_get(cr, uid, 'sale.shop', context=c),
-		}
-	
-sale_commissiontable()
+from openerp.orm import orm, fields
+
+
+class SaleCommissiontable(orm.Model):
+    _name = 'sale.commissiontable'
+    _description = 'Commission Table Info'
+
+    _columns = {
+        'name': fields.char('Name', size=64),
+        'maxdctpercent': fields.float('Max Discount %'),
+        'maxdctcommission': fields.float('Max Discount Commission'),
+        'commissiondctzero': fields.float('Commission for 0% discount'),
+        'dctbypaymentdelay': fields.float('% Discount every 30 days'),
+        'sale_commissionlines': fields.one2many('sale.commissionlines',
+                                                'sale_commissiontable_id',
+                                                'Líneas'),
+        'company_id': fields.many2one('res.company', 'Company',
+                                      required=False),
+        }
+
+    _defaults = {
+        'company_id': lambda s, cr, uid,
+        c: s.pool['res.company']._company_default_get(cr, uid, 'sale.shop',
+                                                      context=c),
+    }

=== renamed file 'dos_sale_commissioncalc/salezone.py' => 'dos_sale_commissioncalc/models/salezone.py'
--- dos_sale_commissioncalc/salezone.py	2014-06-11 10:23:47 +0000
+++ dos_sale_commissioncalc/models/salezone.py	2014-07-03 15:53:39 +0000
@@ -19,17 +19,14 @@
 #
 ##############################################################################
 
-from osv import fields,osv
-
-class sale_zone(osv.osv):
-	_name = "sale.zone"
-	_description = "Sale Zone Info"
-	_columns = {
-	    'name': fields.char('Name', size=40, required=True),		
-	    'description': fields.char('Description', size=40, required=True),
+from openerp.orm import fields, orm
+
+
+class sale_zone(orm.Model):
+    _name = "sale.zone"
+    _description = "Sale Zone Info"
+
+    _columns = {
+        'name': fields.char('Name', size=40, required=True),
+        'description': fields.char('Description', size=40, required=True),
         }
-sale_zone()
-
-#
-# En sale_zone class
-#

=== renamed file 'dos_sale_commissioncalc/stock_picking.py' => 'dos_sale_commissioncalc/models/stock_picking.py'
--- dos_sale_commissioncalc/stock_picking.py	2014-06-11 10:23:47 +0000
+++ dos_sale_commissioncalc/models/stock_picking.py	2014-07-03 15:53:39 +0000
@@ -20,23 +20,30 @@
 #
 ##############################################################################
 
-"""Modificamos el albaran para que al generar la factura herede el representante del cliente"""
-
-from osv import osv
-
-class stock_picking(osv.osv):
-	"""Inherit stock_picking to add agent from partner"""
-
-	_inherit = "stock.picking"
-
-	def _invoice_hook(self, cursor, user, picking, invoice_id):
-		if picking and picking.partner_id and picking.partner_id.agent_id and invoice_id:
-			self.pool.get('account.invoice').write(cursor, user, invoice_id, {
-					'agent_id': (picking.sale_id and picking.sale_id.agent_id and picking.sale_id.agent_id.id) or (picking.partner_id and picking.partner_id.agent_id and picking.partner_id.agent_id.id) or False,
-					'agent2_id': (picking.sale_id and picking.sale_id.agent2_id and picking.sale_id.agent2_id.id) or False,
-					'agent2_percentage_distribution_commission': picking.sale_id and picking.sale_id.agent2_percentage_distribution_commission or 0.0
-				})
-			
-		return super(stock_picking, self)._invoice_hook(cursor, user, picking, invoice_id)
-
-stock_picking()
\ No newline at end of file
+"""Modificamos el albaran para que al generar la factura herede el
+ representante del cliente"""
+
+from openerp.orm import orm
+
+
+class stock_picking(orm.Model):
+    """Inherit stock_picking to add agent from partner"""
+    _inherit = "stock.picking"
+
+    def _invoice_hook(self, cursor, user, picking, invoice_id):
+        if (picking and picking.partner_id and picking.partner_id.agent_id and
+                invoice_id):
+            self.pool.get('account.invoice').write(cursor, user, invoice_id, {
+                'agent_id': (picking.sale_id and picking.sale_id.agent_id and
+                             picking.sale_id.agent_id.id) or
+                            (picking.partner_id and picking.partner_id.agent_id
+                             and picking.partner_id.agent_id.id) or False,
+                'agent2_id': (picking.sale_id and picking.sale_id.agent2_id and
+                              picking.sale_id.agent2_id.id) or False,
+                'agent2_percentage_distribution_commission': (
+                    picking.sale_id and
+                    picking.sale_id.agent2_percentage_distribution_commission
+                    or 0.0)
+                })
+        return super(stock_picking, self)._invoice_hook(cursor, user, picking,
+                                                        invoice_id)

=== renamed directory 'dos_sale_commissioncalc/report' => 'dos_sale_commissioncalc/reports'
=== modified file 'dos_sale_commissioncalc/reports/__init__.py'
--- dos_sale_commissioncalc/report/__init__.py	2014-06-11 10:23:47 +0000
+++ dos_sale_commissioncalc/reports/__init__.py	2014-07-03 15:53:39 +0000
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 ##############################################################################
-#    
+#
 #    OpenERP, Open Source Management Solution
 #    Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
 #
@@ -15,11 +15,8 @@
 #    GNU Affero General Public License for more details.
 #
 #    You should have received a copy of the GNU Affero General Public License
-#    along with this program.  If not, see <http://www.gnu.org/licenses/>.     
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #
 ##############################################################################
 
 import report_sale_commissions
-
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-

=== modified file 'dos_sale_commissioncalc/reports/report_sale_commissions.py'
--- dos_sale_commissioncalc/report/report_sale_commissions.py	2014-06-11 10:23:47 +0000
+++ dos_sale_commissioncalc/reports/report_sale_commissions.py	2014-07-03 15:53:39 +0000
@@ -22,230 +22,232 @@
 import time
 from datetime import datetime
 from report import report_sxw
-import pooler
-import decimal_precision as dp
-from dateutil.relativedelta import relativedelta
-
-class report_sale_commissions(report_sxw.rml_parse):
-	def __init__(self, cr, uid, name, context):
-		super(report_sale_commissions, self).__init__(cr, uid, name, context=context)
-		self.localcontext.update({
-			'time': time,
-			'get_date_start': self.get_date_start,
-			'get_date_end': self.get_date_end,
-			'get_agent_invoices': self.get_agent_invoices,
-			'get_total_agent_amount_untaxed': self.get_total_agent_amount_untaxed,
-			'get_agent_receipts_pendings': self.get_agent_receipts_pendings,
-			'get_total_agent_receipts_pendings': self.get_total_agent_receipts_pendings,
-			'get_total_agent_sales_in_period': self.get_total_agent_sales_in_period,
-			'get_commission_average': self.get_commission_average,
-			'get_commission_total': self.get_commission_total,
-			'get_invoice_commission_total': self.get_invoice_commission_total,
-			'get_invoice_commission_percentage': self.get_invoice_commission_percentage,
-			'get_total_agent_receipts_pendings_before_period': self.get_total_agent_receipts_pendings_before_period,
-			'get_inv_amount_untaxed': self.get_inv_amount_untaxed,
-		})
-		self.context = context
-		self.data_report = context['data_report']
-		
-	def get_date_start(self, form):
-		date_start = form['date_start']
-		return date_start
-	
-	def get_date_end(self, form):
-		date_end = form['date_end']
-		return date_end
-	
-	def get_agent_invoices(self, form, agent):
-		pool = pooler.get_pool(self.cr.dbname)
-		inv_obj = pool.get('account.invoice')
-		inv_ids = self.data_report['agent_invoices'][agent.id]
-		
-		# if form['settled'] == 'all':
-			# inv_ids = inv_obj.search(self.cr, self.uid, [ ('state','=', 'paid'), ('date_invoice','>=',form['date_start']), ('date_invoice','<=',form['date_end']), ('paid_date','>=',form['payment_date_start']), ('paid_date','<=',form['payment_date_end']), ('agent_id', '=', agent.id) ])
-		# else:
-			# settled = False
-			# if form['settled'] == 'settled':
-				# settled = True
-			# inv_ids = inv_obj.search(self.cr, self.uid, [ ('state','=', 'paid'), ('commission_settled','=', settled), ('date_invoice','>=',form['date_start']), ('date_invoice','<=',form['date_end']), ('paid_date','>=',form['payment_date_start']), ('paid_date','<=',form['payment_date_end']), ('agent_id', '=', agent.id)])
-		invoice_ids = inv_obj.browse(self.cr, self.uid, inv_ids)
-		return invoice_ids
-		
-	def get_total_agent_amount_untaxed(self, form, agent):
-		invoice_ids = self.get_agent_invoices(form, agent)
-		total = 0.0
-		for inv in invoice_ids:
-			total += inv.amount_untaxed
-			#si se ha a�do el articulo de entrega a cuenta, hay que sumar lo a la base imponible
-			for line in inv.invoice_line:
-				if line.product_id and line.product_id.name == 'ENTREGA A CUENTA':
-					total -= line.price_subtotal #resto porque es negativo, con lo que debo de estar sumando
-					
-		return total
-	def get_inv_amount_untaxed(self, invoice):
-		total = invoice.amount_untaxed
-		for line in invoice.invoice_line:
-			if line.product_id and line.product_id.name == 'ENTREGA A CUENTA':
-				total -= line.price_subtotal
-		return total
-	
-	def get_agent_receipts_pendings(self, form, agent):
-		pool = pooler.get_pool(self.cr.dbname)
-		inv_obj = pool.get('account.invoice')
-		#inv_ids = inv_obj.search(self.cr, self.uid, [ ('state','=', 'open'), ('commission_settled','=', False), ('agent_id', '=', agent.id)])
-		inv_ids = self.data_report['agent_invoice_pending'][agent.id]
-		invoice_ids = inv_obj.browse(self.cr, self.uid, inv_ids)
-		receipts = []
-		for inv in invoice_ids:
-			data_lines = [x for x in inv.move_id.line_id if x.account_id.id == inv.account_id.id]
-			for move_line in data_lines:
-				if not move_line.reconcile_id:
-					receipts.append(move_line)
-		
-		return receipts
-	
-	def get_total_agent_receipts_pendings(self, form, agent):
-		move_ids = self.get_agent_receipts_pendings(form, agent)
-		total = 0.0
-		for move in move_ids:
-			total += move.amount_residual
-		return total
-	
-	def get_total_agent_receipts_pendings_before_period(self, form, agent):
-		total = 0.0
-		pool = pooler.get_pool(self.cr.dbname)
-		inv_obj = pool.get('account.invoice')
-		inv_ids = inv_obj.search(self.cr, self.uid, [ ('state','=', 'open'), ('commission_settled','=', False), ('agent_id', '=', agent.id)])
-		invoice_ids = inv_obj.browse(self.cr, self.uid, inv_ids)
-		receipts = []
-		for inv in invoice_ids:
-			if inv.date_invoice < form['date_start']:
-				data_lines = [x for x in inv.move_id.line_id if x.account_id.id == inv.account_id.id]
-				for move_line in data_lines:
-					if not move_line.reconcile_id:
-						total += move_line.amount_residual
-		
-		return total
-	def get_total_agent_sales_in_period(self, form, agent):
-		pool = pooler.get_pool(self.cr.dbname)
-		inv_obj = pool.get('account.invoice')
-		
-		if form['settled'] == 'all':
-			inv_ids = inv_obj.search(self.cr, self.uid, [ ('state','=', 'paid'), ('date_invoice','>=',form['date_start']), ('date_invoice','<=',form['date_end']), ('paid_date','>=',form['payment_date_start']), ('paid_date','<=',form['payment_date_end']), ('agent_id', '=', agent.id) ])
-		else:
-			settled = False
-			if form['settled'] == 'settled':
-				settled = True
-				
-		inv_ids = inv_obj.search(self.cr, self.uid, [ ('state','in', ['open', 'paid']), ('date_invoice','>=',form['date_start']), ('date_invoice','<=',form['date_end']), ('agent_id', '=', agent.id)])
-		invoice_ids = inv_obj.browse(self.cr, self.uid, inv_ids)
-		
-		total = 0.0
-		for inv in invoice_ids:
-			total += inv.amount_untaxed
-		return total
-	
-	def get_invoice_commission_percentage(self, invoice, agent_obj):
-		if not invoice.agent_id:
-			return 0.0
-		dto = invoice.header_discount + invoice.early_payment_discount
-		if invoice.decorator_discount:
-			dto = invoice.decorator_discount
-			
-		final_date = invoice.date_invoice
-		if invoice.paid_date and invoice.paid_date > final_date:
-			final_date = invoice.paid_date
-		if invoice.date_due and invoice.date_due > final_date:
-			final_date = invoice.date_due
-		diasMes = 30
-		
-		dtt1 = datetime.strptime(final_date, '%Y-%m-%d')
-		dtt2 = datetime.strptime(invoice.date_invoice, '%Y-%m-%d')
-		dif = dtt1 - dtt2
-		
-		numPeriodos30dias = round(dif.days / 30,0)
-		agent = invoice.agent_id
-		por_commission = 0.0
-		if agent.commissionwithouttable:
-			if dto == 10.0:
-				por_commission = 4.0
-			elif dto == 15.0:
-				por_commission = 2.0
-			elif dto == 20.0:
-				por_commission = 1.0
-			else:
-				por_commission = agent.commission_rate
-		else:
-			if invoice.partner_id.unique_commission:
-				por_commission = invoice.partner_id.unique_commission
-			elif invoice.partner_id.unique_commission_2:
-				por_commission = invoice.partner_id.unique_commission_2
-			elif agent.commission_rate:
-				por_commission = agent.commission_rate
-			elif agent.commissiontozeroforce:
-				por_commission = 0.0
-			else:
-				if agent.commissiontable_id:
-					if dto == 0.0:
-						por_commission = agent.commissiontable_id.commissiondctzero
-					else:
-						dto_assign = 0
-						line_assign = False
-						for commission_line in agent.commissiontable_id.sale_commissionlines:
-							if commission_line.discount >= dto and (not line_assign or dto_assign > commission_line.discount):
-								dto_assign = commission_line.discount
-								por_commission = commission_line.commission
-								line_assign = True
-						if not line_assign:
-							if dto <= agent.commissiontable_id.maxdctpercent:
-								por_commission = agent.commissiontable_id.maxdctcommission
-							else:
-								por_commission = 0.0
-					
-					por_commission = por_commission - (numPeriodos30dias * agent.commissiontable_id.dctbypaymentdelay)
-					if por_commission < agent.commissiontable_id.maxdctcommission:
-						por_commission = agent.commissiontable_id.maxdctcommission
-		
-		if invoice.agent2_id and invoice.agent2_percentage_distribution_commission > 0:
-			por_commission2 = por_commission * invoice.agent2_percentage_distribution_commission / 100.0
-			por_commission2 = round(por_commission2,2)
-			por_commission = por_commission - por_commission2
-			if invoice.agent2_id.id == agent_obj.id:
-				por_commission = por_commission2
-		
-		return por_commission
-	
-	def get_invoice_commission_total(self, invoice, agent):
-		por_commission = self.get_invoice_commission_percentage(invoice, agent)
-		base_amount = invoice.amount_untaxed
-		#si se ha a�do el articulo de entrega a cuenta, hay que sumar lo a la base imponible
-		for line in invoice.invoice_line:
-			if line.product_id and line.product_id.name == 'ENTREGA A CUENTA':
-				base_amount -= line.price_subtotal #resto porque es negativo, con lo que debo de estar sumando
-		# if invoice.decorator_discount:
-			# base_amount = invoice.amount_untaxed * (1.0 - (decorator_discount / 100.0))
-			# base_amount = round(base_amount,2)
-		total = base_amount * por_commission / 100.0
-		total = round(total,2)
-		return total
-	
-	def get_commission_total(self, form, agent):
-		invoice_ids = self.get_agent_invoices(form, agent)
-		total = 0.0
-		for inv in invoice_ids:
-			total += self.get_invoice_commission_total(inv, agent)
-		
-		return total
-	
-	def get_commission_average(self, form, agent):
-		base = self.get_total_agent_amount_untaxed(form, agent)
-		commission = self.get_commission_total(form, agent)
-		
-		if base == 0.0:
-			return 0.0
-		else:
-			return (commission / base) * 100.0
-	
-report_sxw.report_sxw('report.sale_commissions_report', 'sale.agent', 'addons/dos_sale_commissioncalc/report/report_sale_commissions.rml', parser=report_sale_commissions)
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-
+
+
+class ReportSaleCommissions(report_sxw.rml_parse):
+
+    def __init__(self, cr, uid, name, context):
+        super(ReportSaleCommissions, self).__init__(cr, uid, name,
+                                                    context=context)
+        self.localcontext.update({
+            'time': time,
+            'get_date_start': self.get_date_start,
+            'get_date_end': self.get_date_end,
+            'get_agent_invoices': self.get_agent_invoices,
+            'get_total_agent_amount_untaxed': (
+                self.get_total_agent_amount_untaxed),
+            'get_agent_receipts_pendings': self.get_agent_receipts_pendings,
+            'get_total_agent_receipts_pendings': (
+                self.get_total_agent_receipts_pendings),
+            'get_total_agent_sales_in_period': (
+                self.get_total_agent_sales_in_period),
+            'get_commission_average': self.get_commission_average,
+            'get_commission_total': self.get_commission_total,
+            'get_invoice_commission_total': self.get_invoice_commission_total,
+            'get_invoice_commission_percentage': (
+                self.get_invoice_commission_percentage),
+            'get_total_agent_receipts_pendings_before_period': (
+                self.get_total_agent_receipts_pendings_before_period),
+            'get_inv_amount_untaxed': self.get_inv_amount_untaxed,
+        })
+        self.context = context
+        self.data_report = context['data_report']
+
+    def get_date_start(self, form):
+        date_start = form['date_start']
+        return date_start
+
+    def get_date_end(self, form):
+        date_end = form['date_end']
+        return date_end
+
+    def get_agent_invoices(self, form, agent):
+        inv_obj = self.pool['account.invoice']
+        inv_ids = self.data_report['agent_invoices'][agent.id]
+        invoice_ids = inv_obj.browse(self.cr, self.uid, inv_ids)
+        return invoice_ids
+
+    def get_total_agent_amount_untaxed(self, form, agent):
+        invoice_ids = self.get_agent_invoices(form, agent)
+        total = 0.0
+        for inv in invoice_ids:
+            total += inv.amount_untaxed
+            # si se ha a�adido el articulo de entrega a cuenta,
+            # hay que sumar lo a la base imponible
+            for line in inv.invoice_line:
+                if (line.product_id and
+                        line.product_id.name == 'ENTREGA A CUENTA'):
+                    total -= line.price_subtotal
+                    # resto porque es negativo, con lo que debo de sumar
+
+        return total
+
+    def get_inv_amount_untaxed(self, invoice):
+        total = invoice.amount_untaxed
+        for line in invoice.invoice_line:
+            if line.product_id and line.product_id.name == 'ENTREGA A CUENTA':
+                total -= line.price_subtotal
+        return total
+
+    def get_agent_receipts_pendings(self, form, agent):
+        inv_obj = self.pool['account.invoice']
+        inv_ids = self.data_report['agent_invoice_pending'][agent.id]
+        invoice_ids = inv_obj.browse(self.cr, self.uid, inv_ids)
+        receipts = []
+        for inv in invoice_ids:
+            data_lines = [
+                x for x in inv.move_id.line_id
+                if x.account_id.id == inv.account_id.id]
+            for move_line in data_lines:
+                if not move_line.reconcile_id:
+                    receipts.append(move_line)
+        return receipts
+
+    def get_total_agent_receipts_pendings(self, form, agent):
+        move_ids = self.get_agent_receipts_pendings(form, agent)
+        total = 0.0
+        for move in move_ids:
+            total += move.amount_residual
+        return total
+
+    def get_total_agent_receipts_pendings_before_period(self, form,
+                                                        agent):
+        total = 0.0
+        inv_obj = self.pool['account.invoice']
+        inv_ids = inv_obj.search(self.cr, self.uid, [
+            ('state', '=', 'open'), ('commission_settled', '=', False),
+            ('agent_id', '=', agent.id)])
+        invoice_ids = inv_obj.browse(self.cr, self.uid, inv_ids)
+        for inv in invoice_ids:
+            if inv.date_invoice < form['date_start']:
+                data_lines = [x for x in inv.move_id.line_id
+                              if x.account_id.id == inv.account_id.id]
+                for move_line in data_lines:
+                    if not move_line.reconcile_id:
+                        total += move_line.amount_residual
+        return total
+
+    def get_total_agent_sales_in_period(self, form, agent):
+        inv_obj = self.pool['account.invoice']
+        inv_ids = inv_obj.search(self.cr, self.uid, [
+            ('state', 'in', ['open', 'paid']),
+            ('date_invoice', '>=', form['date_start']),
+            ('date_invoice', '<=', form['date_end']),
+            ('agent_id', '=', agent.id)])
+        invoice_ids = inv_obj.browse(self.cr, self.uid, inv_ids)
+        total = 0.0
+        for inv in invoice_ids:
+            total += inv.amount_untaxed
+        return total
+
+    def get_invoice_commission_percentage(self, invoice, agent_obj):
+        if not invoice.agent_id:
+            return 0.0
+        dto = invoice.header_discount + invoice.early_payment_discount
+        if invoice.decorator_discount:
+            dto = invoice.decorator_discount
+        final_date = invoice.date_invoice
+        if invoice.paid_date and invoice.paid_date > final_date:
+            final_date = invoice.paid_date
+        if invoice.date_due and invoice.date_due > final_date:
+            final_date = invoice.date_due
+        dtt1 = datetime.strptime(final_date, '%Y-%m-%d')
+        dtt2 = datetime.strptime(invoice.date_invoice, '%Y-%m-%d')
+        dif = dtt1 - dtt2
+        numPeriodos30dias = round(dif.days / 30, 0)
+        agent = invoice.agent_id
+        por_commission = 0.0
+        if agent.commissionwithouttable:
+            if dto == 10.0:
+                por_commission = 4.0
+            elif dto == 15.0:
+                por_commission = 2.0
+            elif dto == 20.0:
+                por_commission = 1.0
+            else:
+                por_commission = agent.commission_rate
+        else:
+            if invoice.partner_id.unique_commission:
+                por_commission = invoice.partner_id.unique_commission
+            elif invoice.partner_id.unique_commission_2:
+                por_commission = invoice.partner_id.unique_commission_2
+            elif agent.commission_rate:
+                por_commission = agent.commission_rate
+            elif agent.commissiontozeroforce:
+                por_commission = 0.0
+            else:
+                if agent.commissiontable_id:
+                    if dto == 0.0:
+                        por_commission = (
+                            agent.commissiontable_id.commissiondctzero)
+                    else:
+                        dto_assign = 0
+                        line_assign = False
+                        for commission_line in (
+                                agent.commissiontable_id.sale_commissionlines):
+                            if commission_line.discount >= dto and (
+                                    not line_assign or
+                                    dto_assign > commission_line.discount):
+                                dto_assign = commission_line.discount
+                                por_commission = commission_line.commission
+                                line_assign = True
+                        if not line_assign:
+                            if dto <= agent.commissiontable_id.maxdctpercent:
+                                por_commission = (
+                                    agent.commissiontable_id.maxdctcommission)
+                            else:
+                                por_commission = 0.0
+                    por_commission = por_commission - (
+                        numPeriodos30dias *
+                        agent.commissiontable_id.dctbypaymentdelay)
+                    if (por_commission <
+                            agent.commissiontable_id.maxdctcommission):
+                        por_commission = (
+                            agent.commissiontable_id.maxdctcommission)
+        if (invoice.agent2_id and
+                invoice.agent2_percentage_distribution_commission > 0):
+            por_commission2 = (
+                por_commission *
+                invoice.agent2_percentage_distribution_commission / 100.0)
+            por_commission2 = round(por_commission2, 2)
+            por_commission = por_commission - por_commission2
+            if invoice.agent2_id.id == agent_obj.id:
+                por_commission = por_commission2
+        return por_commission
+
+    def get_invoice_commission_total(self, invoice, agent):
+        por_commission = self.get_invoice_commission_percentage(invoice, agent)
+        base_amount = invoice.amount_untaxed
+        # si se ha a�adido el articulo de entrega a cuenta, hay que sumar
+        # lo a la base imponible
+        for line in invoice.invoice_line:
+            if line.product_id and line.product_id.name == 'ENTREGA A CUENTA':
+                base_amount -= line.price_subtotal  # resto porque es negativo,
+                # con lo que debo de estar sumando
+        # if invoice.decorator_discount:
+        #     base_amount = invoice.amount_untaxed * (
+        #    1.0 - (decorator_discount / 100.0))
+        #     base_amount = round(base_amount,2)
+        total = base_amount * por_commission / 100.0
+        total = round(total, 2)
+        return total
+
+    def get_commission_total(self, form, agent):
+        invoice_ids = self.get_agent_invoices(form, agent)
+        total = 0.0
+        for inv in invoice_ids:
+            total += self.get_invoice_commission_total(inv, agent)
+        return total
+
+    def get_commission_average(self, form, agent):
+        base = self.get_total_agent_amount_untaxed(form, agent)
+        commission = self.get_commission_total(form, agent)
+        if base == 0.0:
+            return 0.0
+        else:
+            return (commission / base) * 100.0
+
+report_sxw.report_sxw(
+    'report.sale_commissions_report', 'sale.agent',
+    'addons/dos_sale_commissioncalc/report/report_sale_commissions.rml',
+    parser=ReportSaleCommissions)

=== renamed file 'dos_sale_commissioncalc/sale_commissions_report.xml' => 'dos_sale_commissioncalc/reports/sale_commissions_report.xml'
=== added directory 'dos_sale_commissioncalc/views'
=== renamed file 'dos_sale_commissioncalc/invoice_view.xml' => 'dos_sale_commissioncalc/views/invoice_view.xml'
--- dos_sale_commissioncalc/invoice_view.xml	2014-06-11 10:23:47 +0000
+++ dos_sale_commissioncalc/views/invoice_view.xml	2014-07-03 15:53:39 +0000
@@ -4,7 +4,6 @@
 		<record id="invoice_form_add_agent_settled_field" model="ir.ui.view">
             <field name="name">account.invoice.form.add_agent_field</field>
             <field name="model">account.invoice</field>
-            <field name="type">form</field>
             <field name="inherit_id" ref="account.invoice_form"/>
             <field name="arch" type="xml">
                 <field name="address_contact_id" position="after">
@@ -12,7 +11,7 @@
 					<field name="agent_id"/>
 					<field name="agent2_id"/>
 					<field name="agent1_percentage_distribution_commission" readonly="1" />
-					<field name="agent2_percentage_distribution_commission" on_change="onchange_agent_percentage_distribution_commission2(agent2_percentage_distribution_commission)" />
+					<field name="agent2_percentage_distribution_commission" on_change="onchange_ag_pctage_dist_comm2(agent2_percentage_distribution_commission)" />
 					<field name="commission_settled" readonly="1"/>
 					<field name="commission_settled_date" readonly="1"/>
 					<field name="commission_total" readonly="1"/>

=== renamed file 'dos_sale_commissioncalc/partner_view.xml' => 'dos_sale_commissioncalc/views/partner_view.xml'
--- dos_sale_commissioncalc/partner_view.xml	2014-06-11 10:23:47 +0000
+++ dos_sale_commissioncalc/views/partner_view.xml	2014-07-03 15:53:39 +0000
@@ -5,7 +5,6 @@
 	<record model="ir.ui.view" id="view_partner_form_agent_id">
 		<field name="name">res.partner.form.inherit.agent_id</field>
 		<field name="model">res.partner</field>
-		<field name="type">form</field>
 		<field name="inherit_id" ref="base.view_partner_form"/>
 		<field name="arch" type="xml">
 		<field name="company_id" position="after">
@@ -22,7 +21,6 @@
 	<record model="ir.ui.view" id="view_partner_form_is_agent">
 		<field name="name">res.partner.form.inherit.is_agent</field>
 		<field name="model">res.partner</field>
-		<field name="type">form</field>
 		<field name="inherit_id" ref="base.view_partner_form"/>
 		<field name="arch" type="xml">
 			<field name="supplier" position="after">

=== renamed file 'dos_sale_commissioncalc/sale_commissions_view.xml' => 'dos_sale_commissioncalc/views/sale_commissions_view.xml'
--- dos_sale_commissioncalc/sale_commissions_view.xml	2014-06-11 10:23:47 +0000
+++ dos_sale_commissioncalc/views/sale_commissions_view.xml	2014-07-03 15:53:39 +0000
@@ -6,7 +6,9 @@
 		<menuitem name="Commissions Tables" id="menu_TableCommissions" parent="menu_sale_commissions" action="action_sale_commissiontable_tree"/>
 		<menuitem name="Zones" id="menu_sale_zones" parent="menu_sale_commissions" action="action_sale_zone_tree"/>
 		
-	    <!--<menuitem name="New Sales Agent" id="menu_new_sale_commisions_agent" parent="menu_sale_commisions_agent" action="action_sale_agent_form"/>-->
-		<!--<menuitem action="action_order_form" id="menu_sale_order" parent="base.menu_sales" sequence="3" groups="base.group_sale_salesman,base.group_sale_manager"/>-->
+	    <!--<menuitem name="New Sales Agent" id="menu_new_sale_commisions_agent" 
+	    parent="menu_sale_commisions_agent" action="action_sale_agent_form"/>-->
+		<!--<menuitem action="action_order_form" id="menu_sale_order" 
+		parent="base.menu_sales" sequence="3" groups="base.group_sale_salesman,base.group_sale_manager"/>-->
 	</data>
 </openerp>
\ No newline at end of file

=== renamed file 'dos_sale_commissioncalc/sale_order_view.xml' => 'dos_sale_commissioncalc/views/sale_order_view.xml'
--- dos_sale_commissioncalc/sale_order_view.xml	2014-06-11 10:23:47 +0000
+++ dos_sale_commissioncalc/views/sale_order_view.xml	2014-07-03 15:53:39 +0000
@@ -4,7 +4,6 @@
 		<record id="view_order_form_add_commissions" model="ir.ui.view">
             <field name="name">sale.order.form.add_commissions</field>
             <field name="model">sale.order</field>
-            <field name="type">form</field>
             <field name="inherit_id" ref="sale.view_order_form"/>
             <field name="arch" type="xml">
                 <notebook position="inside">
@@ -12,7 +11,7 @@
 						<field name="agent_id"/>
 						<field name="agent2_id"/>
 						<field name="agent1_percentage_distribution_commission" readonly="1" />
-						<field name="agent2_percentage_distribution_commission" on_change="onchange_agent_percentage_distribution_commission2(agent2_percentage_distribution_commission)" />
+						<field name="agent2_percentage_distribution_commission" on_change="onchange_ag_pctage_dist_comm2(agent2_percentage_distribution_commission)" />
 					</page>
 				</notebook>
 			</field>
@@ -21,7 +20,6 @@
 		 <!--<record id="view_order_form_change_partner_onchange_commissions" model="ir.ui.view">
             <field name="name">sale.order.form.change_partner_onchange_commissions</field>
             <field name="model">sale.order</field>
-            <field name="type">form</field>
             <field name="inherit_id" ref="sale.view_order_form"/>
             <field name="arch" type="xml">
                 <field name="partner_id" position="replace">

=== renamed file 'dos_sale_commissioncalc/saleagent_view.xml' => 'dos_sale_commissioncalc/views/saleagent_view.xml'
--- dos_sale_commissioncalc/saleagent_view.xml	2014-06-11 10:23:47 +0000
+++ dos_sale_commissioncalc/views/saleagent_view.xml	2014-07-03 15:53:39 +0000
@@ -10,7 +10,6 @@
     <record model="ir.ui.view" id="view_sale_agent_tree">
         <field name="name">sale.agent.info.tree</field>
         <field name="model">sale.agent</field>
-        <field name="type">tree</field>
         <field name="arch" type="xml">
             <tree string="Saleagent">
                          <field name="name"  select="1"/>
@@ -23,7 +22,6 @@
     <record model="ir.ui.view" id="view_sale_agent_form">
         <field name="name">sale.agent.info.form</field>
         <field name="model">sale.agent</field>
-        <field name="type">form</field>
         <field name="arch" type="xml">
             <form string="SaleAgent">
             <notebook>

=== renamed file 'dos_sale_commissioncalc/salecommissiontableview.xml' => 'dos_sale_commissioncalc/views/salecommissiontableview.xml'
--- dos_sale_commissioncalc/salecommissiontableview.xml	2014-06-11 10:23:47 +0000
+++ dos_sale_commissioncalc/views/salecommissiontableview.xml	2014-07-03 15:53:39 +0000
@@ -11,7 +11,6 @@
     <record model="ir.ui.view" id="view_sale_commissionlines_tree">
         <field name="name">sale.commissionlines.tree</field>
         <field name="model">sale.commissionlines</field>
-        <field name="type">tree</field>
         <field name="arch" type="xml">
             <tree string="Commission Lines">
             	<field name="discount"/>
@@ -22,7 +21,6 @@
     <record model="ir.ui.view" id="view_sale_commissionlines_form">
         <field name="name">sale.commissionlines.form</field>
         <field name="model">sale.commissionlines</field>
-        <field name="type">form</field>
         <field name="arch" type="xml">
             <form string="Commission Lines">
             	<separator string="Detail" colspan="4"/>
@@ -41,7 +39,6 @@
     <record model="ir.ui.view" id="view_sale_commissiontable_tree">
         <field name="name">sale.commissiontable.tree</field>
         <field name="model">sale.commissiontable</field>
-        <field name="type">tree</field>
         <field name="arch" type="xml">
             <tree string="Commission Table">
                          <field name="name"  select="1"/>
@@ -51,7 +48,6 @@
     <record model="ir.ui.view" id="view_sale_commissiontable_form">
         <field name="name">sale.commissiontable.form</field>
         <field name="model">sale.commissiontable</field>
-        <field name="type">form</field>
         <field name="arch" type="xml">
             <form string="Commission Table">
             	<separator string="General Information" colspan="4"/>
@@ -69,7 +65,6 @@
 
     <record model="ir.actions.act_window" id="action_sale_commissiontable_tree">
         <field name="name">Commission Table</field>
-        <field name="type">ir.actions.act_window</field>
         <field name="res_model">sale.commissiontable</field>
         <field name="view_type">form</field>
         <field name="view_mode">tree,form</field>
@@ -77,7 +72,6 @@
     </record>
     <!--<record model="ir.actions.act_window" id="action_sale_commissiontable_form">
         <field name="name">Commission Table</field>
-        <field name="type">ir.actions.act_window</field>
         <field name="res_model">sale.commissiontable</field>
         <field name="view_type">form</field>
         <field name="view_mode">tree,form</field>

=== renamed file 'dos_sale_commissioncalc/salezone_view.xml' => 'dos_sale_commissioncalc/views/salezone_view.xml'
--- dos_sale_commissioncalc/salezone_view.xml	2014-06-11 10:23:47 +0000
+++ dos_sale_commissioncalc/views/salezone_view.xml	2014-07-03 15:53:39 +0000
@@ -9,7 +9,6 @@
     <record model="ir.ui.view" id="view_sale_zone_tree">
         <field name="name">sale.zone.info.tree</field>
         <field name="model">sale.zone</field>
-        <field name="type">tree</field>
         <field name="arch" type="xml">
             <tree string="SaleZone">
             	<field name="description" select="1"/>
@@ -19,7 +18,6 @@
     <record model="ir.ui.view" id="view_sale_zone_form">
         <field name="name">sale.zone.info.form</field>
         <field name="model">sale.zone</field>
-        <field name="type">form</field>
         <field name="arch" type="xml">
             <form string="SaleZone">
 		<separator string="General Information" colspan="4"/>
@@ -45,7 +43,5 @@
         <field name="view_id" ref="view_sale_zone_form"/>
     </record>
 
-	
-
 </data>
 </openerp>

=== modified file 'dos_sale_commissioncalc/wizard/dos_sale_commission_report_wizard.py'
--- dos_sale_commissioncalc/wizard/dos_sale_commission_report_wizard.py	2014-06-11 10:23:47 +0000
+++ dos_sale_commissioncalc/wizard/dos_sale_commission_report_wizard.py	2014-07-03 15:53:39 +0000
@@ -20,237 +20,278 @@
 ##############################################################################
 
 import time
-from osv import osv, fields
+from openerp.orm import orm, fields
 from datetime import datetime
 from dateutil.relativedelta import relativedelta
-from tools.translate import _
-
-class dos_sale_commission_report_wizard(osv.osv_memory):
-	_name = 'dos.sale.commission.report.wizard'
-	_description = 'Sale Commissions Report'
-	
-	def _get_first_day_present_year(self, cr, uid, context=None):
-		if context is None:
-			context = {}
-		date_ref = datetime.now().strftime('%Y-%m-%d')
-		first_date = (datetime.strptime(date_ref, '%Y-%m-%d') + relativedelta(day=1, month=1))
-		return first_date.strftime('%Y-%m-%d')
-		# return datetime.now()
-	
-	_columns = {
-		'date_start': fields.date('From invoice Date' ),
-		'date_end': fields.date('To invoice Date' ),
-		'payment_date_start': fields.date('From payment date'),
-		'payment_date_end': fields.date('To payment date'),
-		'settled': fields.selection([
-			('all','All'),
-			('not_settled','Not Settled'),
-			('settled','Settled'),
-			],'Settled' ),
-		'final_report': fields.boolean('Definitivo'),
-		'agent_id': fields.many2one('sale.agent','Sales Agent'),
-	}
-	
-	_defaults = {
-		'date_start': _get_first_day_present_year,
-		'date_end': time.strftime('%Y-%m-%d'),
-		'payment_date_start': _get_first_day_present_year,
-		'payment_date_end': time.strftime('%Y-%m-%d'),
-		'settled': 'not_settled',
-		'final_report': False,
-	}
-	
-	def get_invoice_commission_percentage(self, invoice, agent_obj):
-		if not invoice.agent_id:
-			return 0.0
-			
-		dto = invoice.header_discount + invoice.early_payment_discount
-		if invoice.decorator_discount:
-			dto = invoice.decorator_discount
-		final_date = invoice.date_invoice
-		if invoice.paid_date and invoice.paid_date > final_date:
-			final_date = invoice.paid_date
-		if invoice.date_due and invoice.date_due > final_date:
-			final_date = invoice.date_due
-		diasMes = 30
-		
-		dtt1 = datetime.strptime(final_date, '%Y-%m-%d')
-		dtt2 = datetime.strptime(invoice.date_invoice, '%Y-%m-%d')
-		dif = dtt1 - dtt2
-		
-		numPeriodos30dias = round(dif.days / 30,0)
-		
-		agent = invoice.agent_id
-		
-		por_commission = 0.0
-		if agent.commissionwithouttable:
-			if dto == 10.0:
-				por_commission = 4.0
-			elif dto == 15.0:
-				por_commission = 2.0
-			elif dto == 20.0:
-				por_commission = 1.0
-			else:
-				por_commission = agent.commission_rate
-		else:
-			if invoice.partner_id.unique_commission:
-				por_commission = invoice.partner_id.unique_commission
-			elif invoice.partner_id.unique_commission_2:
-				por_commission = invoice.partner_id.unique_commission_2
-			elif agent.commission_rate:
-				por_commission = agent.commission_rate
-			elif agent.commissiontozeroforce:
-				por_commission = 0.0
-			else:
-				if agent.commissiontable_id:
-					if dto == 0.0:
-						por_commission = agent.commissiontable_id.commissiondctzero
-					else:
-						dto_assign = 0
-						line_assign = False
-						for commission_line in agent.commissiontable_id.sale_commissionlines:
-							if commission_line.discount >= dto and (not line_assign or dto_assign > commission_line.discount):
-								dto_assign = commission_line.discount
-								por_commission = commission_line.commission
-								line_assign = True
-						if not line_assign:
-							if dto <= agent.commissiontable_id.maxdctpercent:
-								por_commission = agent.commissiontable_id.maxdctcommission
-							else:
-								por_commission = 0.0
-
-					por_commission = por_commission - (numPeriodos30dias * agent.commissiontable_id.dctbypaymentdelay)
-					if por_commission < agent.commissiontable_id.maxdctcommission:
-						por_commission = agent.commissiontable_id.maxdctcommission
-		
-		#En la factura pondremos la comision total
-		# if invoice.agent2_id and invoice.agent2_percentage_distribution_commission > 0:
-			# por_commission2 = por_commission * invoice.agent2_percentage_distribution_commission / 100.0
-			# por_commission2 = round(por_commission2,2)
-			# por_commission = por_commission - por_commission2
-			# if invoice.agent2_id.id == agent_obj.id:
-				# por_commission = por_commission2
-		
-		return por_commission
-		
-	def _get_agent_ids(self, cr, uid, data, context=None):
-		
-		inv_obj = self.pool.get('account.invoice')
-		cur_obj = self.pool.get('res.currency')
-		inv_ids = []
-			
-		if data['agent_id']:
-			if data['settled'] == 'all':
-				inv_ids = inv_obj.search(cr, uid, [ ('state','=', 'paid'), ('date_invoice','>=',data['date_start']), ('date_invoice','<=',data['date_end']), ('paid_date','>=',data['payment_date_start']), ('paid_date','<=',data['payment_date_end']), ('agent_id', '=', data['agent_id']) ])
-			else:
-				settled = False
-				if data['settled'] == 'settled':
-					settled = True
-				inv_ids = inv_obj.search(cr, uid, [ ('state','=', 'paid'), ('commission_settled','=', settled), ('date_invoice','>=',data['date_start']), ('date_invoice','<=',data['date_end']), ('paid_date','>=',data['payment_date_start']), ('paid_date','<=',data['payment_date_end']), ('agent_id', '=', data['agent_id'])])
-		else:
-			if data['settled'] == 'all':
-				inv_ids = inv_obj.search(cr, uid, [ ('state','=', 'paid'), ('date_invoice','>=',data['date_start']), ('date_invoice','<=',data['date_end']), ('paid_date','>=',data['payment_date_start']), ('paid_date','<=',data['payment_date_end'])])
-			else:
-				settled = False
-				if data['settled'] == 'settled':
-					settled = True
-				inv_ids = inv_obj.search(cr, uid, [ ('state','=', 'paid'), ('commission_settled','=', settled), ('date_invoice','>=',data['date_start']), ('date_invoice','<=',data['date_end']), ('paid_date','>=',data['payment_date_start']), ('paid_date','<=',data['payment_date_end'])])
-				
-		inv_ids2 = []
-		#para las facturas donde este como segundo representante
-		if data['agent_id']:
-			if data['settled'] == 'all':
-				inv_ids2 = inv_obj.search(cr, uid, [ ('state','=', 'paid'), ('date_invoice','>=',data['date_start']), ('date_invoice','<=',data['date_end']), ('paid_date','>=',data['payment_date_start']), ('paid_date','<=',data['payment_date_end']), ('agent2_id', '=', data['agent_id']) ])
-			else:
-				settled = False
-				if data['settled'] == 'settled':
-					settled = True
-				inv_ids2 = inv_obj.search(cr, uid, [ ('state','=', 'paid'), ('commission_settled','=', settled), ('date_invoice','>=',data['date_start']), ('date_invoice','<=',data['date_end']), ('paid_date','>=',data['payment_date_start']), ('paid_date','<=',data['payment_date_end']), ('agent2_id', '=', data['agent_id'])])
-			inv_ids = inv_ids + inv_ids2
-				
-		res = {}
-		
-		invoice_ids = inv_obj.browse(cr,uid,inv_ids)
-		
-		agent_invoices = {}
-		for invoice in invoice_ids:
-			if data['agent_id']:
-				res[data['agent_id']] = data['agent_id']
-				if not data['agent_id'] in agent_invoices:
-					agent_invoices[data['agent_id']] = [invoice.id]
-				else:
-					agent_invoices[data['agent_id']].append(invoice.id)
-			else:
-				if invoice.agent_id and not invoice.agent_id.id in res:
-					res[invoice.agent_id.id] = invoice.agent_id.id
-				if invoice.agent2_id and not invoice.agent2_id.id in res:
-					res[invoice.agent2_id.id] = invoice.agent2_id.id
-				
-				if invoice.agent_id:
-					if not invoice.agent_id.id in agent_invoices:
-						agent_invoices[invoice.agent_id.id] = [invoice.id]
-					else:
-						agent_invoices[invoice.agent_id.id].append(invoice.id)
-				
-				if invoice.agent2_id:
-					if not invoice.agent2_id.id in agent_invoices:
-						agent_invoices[invoice.agent2_id.id] = [invoice.id]
-					else:
-						agent_invoices[invoice.agent2_id.id].append(invoice.id)
-				
-				if data['final_report'] and not invoice.commission_settled:
-					commission = self.get_invoice_commission_percentage(invoice, invoice.agent_id)
-					invoice.commission_settled = True
-					invoice.commission_settled_date = time.strftime('%Y-%m-%d')
-					base_amount = invoice.amount_untaxed
-					#si se ha a�do el articulo de entrega a cuenta, hay que sumar lo a la base imponible
-					for line in invoice.invoice_line:
-						if line.product_id and line.product_id.name == 'ENTREGA A CUENTA':
-							base_amount -= line.price_subtotal #resto porque es negativo, con lo que debo de estar sumando
-						
-					invoice.commission_total = cur_obj.round(cr, uid, invoice.currency_id, commission * base_amount / 100.0)
-					inv_obj.write(cr, uid, [invoice.id], {'commission_settled':invoice.commission_settled, 'commission_settled_date': invoice.commission_settled_date, 'commission_total':invoice.commission_total})
-				
-		data['agent_invoices'] = agent_invoices
-		
-		agent_invoice_pending = {}
-		for agent_id in res.values():
-			inv_pending_ids = inv_obj.search(cr, uid, [ ('state','=', 'open'), ('commission_settled','=', False), ('agent_id', '=', agent_id)])
-			inv_pending2_ids = inv_obj.search(cr, uid, [ ('state','=', 'open'), ('commission_settled','=', False), ('agent2_id', '=', agent_id)])
-			inv_pending_ids = inv_pending_ids + inv_pending2_ids
-			agent_invoice_pending[agent_id] = inv_pending_ids
-		
-		data['agent_invoice_pending'] = agent_invoice_pending
-		
-		return res.values()
-	
-	def check_report(self, cr, uid, ids, context=None):
-		datas = {}
-		if context is None:
-			context = {}
-		
-		data = self.read(cr, uid, ids, [], context=context)[0]
-		agent_ids = self._get_agent_ids(cr, uid, data, context=context)
-		
-		context['data_report'] = data
-		datas = {
-			 'ids': agent_ids, #context.get('active_ids',[]),
-			 'model': 'sale.agent',
-			 'form': data,
-			 'context': context
-		}
-		if agent_ids and len(agent_ids) > 0:
-			return {
-				'type': 'ir.actions.report.xml',
-				'report_name': 'sale_commissions_report',
-				'context': context,
-				'datas': datas,
-			}
-		else:
-			raise osv.except_osv(_('Warning !'),'No hay facturas en los limites indicados.')
-			#msgalert = {'title':'Warning','message':'No hay facturas en los limites indicados'}
-			#return {'warning':msgalert}
-			
-dos_sale_commission_report_wizard()
-
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
\ No newline at end of file
+from openerp.tools.translate import _
+
+
+class DosSaleCommissionReportWizard(orm.TransientModel):
+    _name = 'dos.sale.commission.report.wizard'
+    _description = 'Sale Commissions Report'
+
+    def _get_first_day_present_year(self, cr, uid, context=None):
+        if context is None:
+            context = {}
+        date_ref = datetime.now().strftime('%Y-%m-%d')
+        first_date = (datetime.strptime(date_ref, '%Y-%m-%d') +
+                      relativedelta(day=1, month=1))
+        return first_date.strftime('%Y-%m-%d')
+        # return datetime.now()
+
+    _columns = {
+        'date_start': fields.date('From invoice Date'),
+        'date_end': fields.date('To invoice Date'),
+        'payment_date_start': fields.date('From payment date'),
+        'payment_date_end': fields.date('To payment date'),
+        'settled': fields.selection([
+            ('all', 'All'),
+            ('not_settled', 'Not Settled'),
+            ('settled', 'Settled'),
+            ], 'Settled'),
+        'final_report': fields.boolean('Definitivo'),
+        'agent_id': fields.many2one('sale.agent', 'Sales Agent'),
+    }
+
+    _defaults = {
+        'date_start': _get_first_day_present_year,
+        'date_end': time.strftime('%Y-%m-%d'),
+        'payment_date_start': _get_first_day_present_year,
+        'payment_date_end': time.strftime('%Y-%m-%d'),
+        'settled': 'not_settled',
+        'final_report': False,
+    }
+
+    def get_invoice_commission_percentage(self, invoice, agent_obj):
+        if not invoice.agent_id:
+            return 0.0
+        dto = invoice.header_discount + invoice.early_payment_discount
+        if invoice.decorator_discount:
+            dto = invoice.decorator_discount
+        final_date = invoice.date_invoice
+        if invoice.paid_date and invoice.paid_date > final_date:
+            final_date = invoice.paid_date
+        if invoice.date_due and invoice.date_due > final_date:
+            final_date = invoice.date_due
+        dtt1 = datetime.strptime(final_date, '%Y-%m-%d')
+        dtt2 = datetime.strptime(invoice.date_invoice, '%Y-%m-%d')
+        dif = dtt1 - dtt2
+        numPeriodos30dias = round(dif.days / 30, 0)
+        agent = invoice.agent_id
+        por_commission = 0.0
+        if agent.commissionwithouttable:
+            if dto == 10.0:
+                por_commission = 4.0
+            elif dto == 15.0:
+                por_commission = 2.0
+            elif dto == 20.0:
+                por_commission = 1.0
+            else:
+                por_commission = agent.commission_rate
+        else:
+            if invoice.partner_id.unique_commission:
+                por_commission = invoice.partner_id.unique_commission
+            elif invoice.partner_id.unique_commission_2:
+                por_commission = invoice.partner_id.unique_commission_2
+            elif agent.commission_rate:
+                por_commission = agent.commission_rate
+            elif agent.commissiontozeroforce:
+                por_commission = 0.0
+            else:
+                if agent.commissiontable_id:
+                    if dto == 0.0:
+                        por_commission = (
+                            agent.commissiontable_id.commissiondctzero)
+                    else:
+                        dto_assign = 0
+                        line_assign = False
+                        for commission_line in (
+                                agent.commissiontable_id.sale_commissionlines):
+                            if (commission_line.discount >= dto and
+                                (not line_assign or dto_assign >
+                                 commission_line.discount)):
+                                dto_assign = commission_line.discount
+                                por_commission = commission_line.commission
+                                line_assign = True
+                        if not line_assign:
+                            if dto <= agent.commissiontable_id.maxdctpercent:
+                                por_commission = (
+                                    agent.commissiontable_id.maxdctcommission)
+                            else:
+                                por_commission = 0.0
+                    por_commission = por_commission - (
+                        numPeriodos30dias *
+                        agent.commissiontable_id.dctbypaymentdelay)
+                    if (por_commission <
+                            agent.commissiontable_id.maxdctcommission):
+                        por_commission = (
+                            agent.commissiontable_id.maxdctcommission)
+        # En la factura pondremos la comision total
+        # if (invoice.agent2_id and
+        #        invoice.agent2_percentage_distribution_commission > 0):
+        #    por_commission2 = (
+        #        por_commission *
+        #        invoice.agent2_percentage_distribution_commission / 100.0)
+            # por_commission2 = round(por_commission2,2)
+            # por_commission = por_commission - por_commission2
+            # if invoice.agent2_id.id == agent_obj.id:
+                # por_commission = por_commission2
+        return por_commission
+
+    def _get_agent_ids(self, cr, uid, data, context=None):
+        inv_obj = self.pool['account.invoice']
+        cur_obj = self.pool['res.currency']
+        inv_ids = []
+        if data['agent_id']:
+            if data['settled'] == 'all':
+                inv_ids = inv_obj.search(cr, uid, [
+                    ('state', '=', 'paid'),
+                    ('date_invoice', '>=', data['date_start']),
+                    ('date_invoice', '<=', data['date_end']),
+                    ('paid_date', '>=', data['payment_date_start']),
+                    ('paid_date', '<=', data['payment_date_end']),
+                    ('agent_id', '=', data['agent_id'])])
+            else:
+                settled = False
+                if data['settled'] == 'settled':
+                    settled = True
+                inv_ids = inv_obj.search(cr, uid, [
+                    ('state', '=', 'paid'),
+                    ('commission_settled', '=', settled),
+                    ('date_invoice', '>=', data['date_start']),
+                    ('date_invoice', '<=', data['date_end']),
+                    ('paid_date', '>=', data['payment_date_start']),
+                    ('paid_date', '<=', data['payment_date_end']),
+                    ('agent_id', '=', data['agent_id'])])
+        else:
+            if data['settled'] == 'all':
+                inv_ids = inv_obj.search(cr, uid, [
+                    ('state', '=', 'paid'),
+                    ('date_invoice', '>=', data['date_start']),
+                    ('date_invoice', '<=', data['date_end']),
+                    ('paid_date', '>=', data['payment_date_start']),
+                    ('paid_date', '<=', data['payment_date_end'])])
+            else:
+                settled = False
+                if data['settled'] == 'settled':
+                    settled = True
+                inv_ids = inv_obj.search(cr, uid, [
+                    ('state', '=', 'paid'),
+                    ('commission_settled', '=', settled),
+                    ('date_invoice', '>=', data['date_start']),
+                    ('date_invoice', '<=', data['date_end']),
+                    ('paid_date', '>=', data['payment_date_start']),
+                    ('paid_date', '<=', data['payment_date_end'])])
+        inv_ids2 = []
+        # para las facturas donde este como segundo representante
+        if data['agent_id']:
+            if data['settled'] == 'all':
+                inv_ids2 = inv_obj.search(cr, uid, [
+                    ('state', '=', 'paid'),
+                    ('date_invoice', '>=', data['date_start']),
+                    ('date_invoice', '<=', data['date_end']),
+                    ('paid_date', '>=', data['payment_date_start']),
+                    ('paid_date', '<=', data['payment_date_end']),
+                    ('agent2_id', '=', data['agent_id'])])
+            else:
+                settled = False
+                if data['settled'] == 'settled':
+                    settled = True
+                inv_ids2 = inv_obj.search(cr, uid, [
+                    ('state', '=', 'paid'),
+                    ('commission_settled', '=', settled),
+                    ('date_invoice', '>=', data['date_start']),
+                    ('date_invoice', '<=', data['date_end']),
+                    ('paid_date', '>=', data['payment_date_start']),
+                    ('paid_date', '<=', data['payment_date_end']),
+                    ('agent2_id', '=', data['agent_id'])])
+            inv_ids = inv_ids + inv_ids2
+        res = {}
+        invoice_ids = inv_obj.browse(cr, uid, inv_ids)
+        agent_invoices = {}
+        for invoice in invoice_ids:
+            if data['agent_id']:
+                res[data['agent_id']] = data['agent_id']
+                if not data['agent_id'] in agent_invoices:
+                    agent_invoices[data['agent_id']] = [invoice.id]
+                else:
+                    agent_invoices[data['agent_id']].append(invoice.id)
+            else:
+                if invoice.agent_id and invoice.agent_id.id not in res:
+                    res[invoice.agent_id.id] = invoice.agent_id.id
+                if invoice.agent2_id and invoice.agent2_id.id not in res:
+                    res[invoice.agent2_id.id] = invoice.agent2_id.id
+                if invoice.agent_id:
+                    if invoice.agent_id.id not in agent_invoices:
+                        agent_invoices[invoice.agent_id.id] = [invoice.id]
+                    else:
+                        agent_invoices[invoice.agent_id.id].append(invoice.id)
+                if invoice.agent2_id:
+                    if invoice.agent2_id.id not in agent_invoices:
+                        agent_invoices[invoice.agent2_id.id] = [invoice.id]
+                    else:
+                        agent_invoices[invoice.agent2_id.id].append(invoice.id)
+                if data['final_report'] and not invoice.commission_settled:
+                    commission = (
+                        self.get_invoice_commission_percentage(
+                            invoice, invoice.agent_id))
+                    invoice.commission_settled = True
+                    invoice.commission_settled_date = time.strftime('%Y-%m-%d')
+                    base_amount = invoice.amount_untaxed
+                    # si se ha a�adido el articulo de entrega a cuenta,
+                    # hay que sumar lo a la base imponible
+                    for line in invoice.invoice_line:
+                        if (line.product_id and
+                                line.product_id.name == 'ENTREGA A CUENTA'):
+                            base_amount -= line.price_subtotal
+                            # resto porque es negativo, con lo que debo sumar
+                    invoice.commission_total = (
+                        cur_obj.round(cr, uid, invoice.currency_id,
+                                      commission * base_amount / 100.0))
+                    inv_obj.write(cr, uid, [invoice.id], {
+                        'commission_settled': invoice.commission_settled,
+                        'commission_settled_date': (
+                            invoice.commission_settled_date),
+                        'commission_total': invoice.commission_total})
+        data['agent_invoices'] = agent_invoices
+        agent_invoice_pending = {}
+        for agent_id in res.values():
+            inv_pending_ids = inv_obj.search(cr, uid, [
+                ('state', '=', 'open'),
+                ('commission_settled', '=', False),
+                ('agent_id', '=', agent_id)])
+            inv_pending2_ids = inv_obj.search(cr, uid, [
+                ('state', '=', 'open'),
+                ('commission_settled', '=', False),
+                ('agent2_id', '=', agent_id)])
+            inv_pending_ids = inv_pending_ids + inv_pending2_ids
+            agent_invoice_pending[agent_id] = inv_pending_ids
+        data['agent_invoice_pending'] = agent_invoice_pending
+        return res.values()
+
+    def check_report(self, cr, uid, ids, context=None):
+        datas = {}
+        if context is None:
+            context = {}
+        data = self.read(cr, uid, ids, [], context=context)[0]
+        agent_ids = self._get_agent_ids(cr, uid, data, context=context)
+        context['data_report'] = data
+        datas = {
+            'ids': agent_ids,  # context.get('active_ids',[]),
+            'model': 'sale.agent',
+            'form': data,
+            'context': context
+        }
+        if agent_ids and len(agent_ids) > 0:
+            return {
+                'type': 'ir.actions.report.xml',
+                'report_name': 'sale_commissions_report',
+                'context': context,
+                'datas': datas,
+            }
+        else:
+            raise orm.except_orm(_('Warning !'),
+                                 'No hay facturas en los limites indicados.')
+            # msgalert = {'title':'Warning',
+            #            'message':'No hay facturas en los limites indicados'}
+            # return {'warning':msgalert}

=== modified file 'dos_sale_commissioncalc/wizard/dos_sale_commission_report_wizard.xml'
--- dos_sale_commissioncalc/wizard/dos_sale_commission_report_wizard.xml	2014-06-11 10:23:47 +0000
+++ dos_sale_commissioncalc/wizard/dos_sale_commission_report_wizard.xml	2014-07-03 15:53:39 +0000
@@ -5,7 +5,6 @@
 		<record id="dos_sale_commission_report_wizard_view" model="ir.ui.view">
 			<field name="name">Sale Commissions Report View</field>
 			<field name="model">dos.sale.commission.report.wizard</field>
-			<field name="type">form</field>
 			<field name="arch" type="xml">
 				<form string="Limites">
 					<group colspan="4" col="4">


Follow ups