from openerp.osv import fields, osv
import openerp.addons.decimal_precision as dp


class DiscountInvoiceReport(osv.osv):
    _inherit = 'account.invoice.report'

    _columns = {
        'discount': fields.float('Discount', readonly=True,digits=dp.get_precision('Discount')),
    }

    def _select(self):
        res = super(DiscountInvoiceReport,self)._select()
        select_str = res + """, sub.discount / cr.rate as discount """
        return select_str

    def _sub_select(self):
        res = super(DiscountInvoiceReport,self)._sub_select()
        select_str = res + """,SUM(CASE
            WHEN ai.type::text = ANY (ARRAY['out_refund'::character varying::text, 'in_invoice'::character varying::text])
            THEN - ((ail.quantity / u.factor * u2.factor) * ail.price_unit * (ail.discount) / 100.0)
            ELSE ((ail.quantity / u.factor * u2.factor) * ail.price_unit * (ail.discount) / 100.0) END) as discount"""
        return select_str