# -*- encoding: utf-8 -*-
from resources import *
from import_export.admin import ImportExportModelAdmin
import re
import csv
import xlwt
from types import *
from datetime import date
from decimal import Decimal
from number_to_letter import *
from django.conf import settings
from django.contrib import admin
from django.forms import ModelForm
from ordenes_de_pago.models import *
from django.contrib.messages import *
from django.core.urlresolvers import reverse
from reservas_abm.models import Banco, FormaPago
from dateutil.relativedelta import relativedelta
from django.contrib.admin import SimpleListFilter
from django.forms.models import BaseInlineFormSet
from daterange_filter.filter import DateRangeFilter
from django.utils.translation import ugettext_lazy as _
from django.http import HttpResponse, HttpResponseRedirect


def mygetattr(obj, attr):
    try:
        value = getattr(obj, attr)
        if callable(value):
            value = value()
        return value
    except:
        value = None
        return value


def generic_export_xls(queryset, fields):
    response = HttpResponse(mimetype="application/ms-excel")
    response['Content-Disposition'] = 'attachment; filename=filename.xls'
    wb = xlwt.Workbook(encoding='utf-8')
    ws = wb.add_sheet('Sheetname')
    fila = 0
    for i, (field, descripcion) in enumerate(fields):
        ws.write(fila, i, unicode(descripcion))
    for obj in queryset:
        fila += 1
        for i, (field, descripcion) in enumerate(fields):
            valor = mygetattr(obj, field)
            if not (type(valor) is Decimal or type(valor) is LongType):
                ws.write(fila, i, unicode(valor))
            if type(valor) is Decimal:
                ws.row(fila).set_cell_number(i, Decimal(valor))
            if type(valor) is LongType:
                ws.row(fila).set_cell_number(i, valor)
    wb.save(response)
    return response


def generic_export_csv(queryset, fields):
    response = HttpResponse(mimetype='text/csv')
    response['Content-Disposition'] = 'attachment; filename=filename.csv'
    writer = csv.writer(response)
    writer.writerow([unicode(descripcion).encode("utf-8") for
                     field, descripcion in fields])
    for obj in queryset:
        writer.writerow([unicode(mygetattr(obj, field)).encode("utf-8")
                         for field, descripcion in fields])
    return response


def factura_export_xls(queryset, fields_factura, fields_detalle_fac):
    response = HttpResponse(mimetype="application/ms-excel")
    response['Content-Disposition'] = 'attachment; filename=filename.xls'
    wb = xlwt.Workbook(encoding='utf-8')
    ws = wb.add_sheet('Facturas_' + str(datetime.date.today()),
                      cell_overwrite_ok=True)
    fila = 0
    fila_detalle = 0
    ws.write(fila, 0, 'Exportacion Facturas ' + str(datetime.date.today()))
    # Encabezado Exportacion
    fila = 3
    all_fields = fields_factura + fields_detalle_fac
    for j, (field, descripcion) in enumerate(all_fields):
        ws.write(fila, j, unicode(descripcion))
    # Datos Factura
    fila += 1
    for obj in queryset:
        for i, (field, descripcion) in enumerate(fields_factura):
            valor = mygetattr(obj, field)
            if type(valor) is datetime.date:
                date_format = ''
                date_split = (str(valor).split('-'))
                for x in reversed(date_split):
                    date_format += x + '/'
                valor = date_format[:-1]
            if not (type(valor) is Decimal or type(valor) is LongType):
                ws.write(fila, i, unicode(valor))
            if type(valor) is Decimal:
                ws.row(fila).set_cell_number(i, Decimal(valor))
            if type(valor) is LongType:
                ws.row(fila).set_cell_number(i, valor)
            if not (type(valor) is Decimal or type(valor) is LongType):
                ws.write(fila, i, unicode(valor))
            if type(valor) is Decimal:
                ws.row(fila).set_cell_number(i, Decimal(valor))
            if type(valor) is LongType:
                ws.row(fila).set_cell_number(i, valor)
        # Datos Detalle Factura
        fila_detalle = fila
        for i in range(obj.detallefactura_set.all().count()):
            col = 7
            for j, (field_detalle_fac, descripcion) in enumerate(fields_detalle_fac):
                valor = mygetattr(obj.detallefactura_set.all()[
                                  i], field_detalle_fac)
                if not (type(valor) is Decimal or type(valor) is LongType):
                    ws.write(fila_detalle, col, unicode(valor))
                if type(valor) is Decimal:
                    ws.row(fila_detalle).set_cell_number(col, Decimal(valor))
                if type(valor) is LongType:
                    ws.row(fila_detalle).set_cell_number(col, valor)
                col += 1
            fila_detalle += 1

        if (fila_detalle >= fila):
            fila = fila_detalle
        else:
            fila += 1

    wb.save(response)
    return response


def orden_pago_export_xls(queryset, fields_orden_pago, fields_detalle_op, fields_factura_op, fields_detalle_ret, fields_detalle_cc):
    response = HttpResponse(mimetype="application/ms-excel")
    response['Content-Disposition'] = 'attachment; filename=filename.xls'
    wb = xlwt.Workbook(encoding='utf-8')
    ws = wb.add_sheet('OrdenesDePago_' +
                      str(datetime.date.today()), cell_overwrite_ok=True)
    fila = 0
    fila_detalle = 0
    ws.write(fila, 0, 'Exportacion Ordenes de Pago ' +
             str(datetime.date.today()))
    # Encabezado Exportacion
    fila = 3
    all_fields = fields_orden_pago + fields_detalle_op + \
        fields_factura_op + fields_detalle_ret + fields_detalle_cc
    for j, (field, descripcion) in enumerate(all_fields):
        ws.write(fila, j, unicode(descripcion))
    # Datos Orden de Pago
    fila += 1
    for obj in queryset:
        for i, (field, descripcion) in enumerate(fields_orden_pago):
            valor = mygetattr(obj, field)
            if valor == 'P':
                valor = 'Pesos'
            if valor == 'D':
                valor = 'Dolares'
            if type(valor) is datetime.date:
                date_format = ''
                date_split = (str(valor).split('-'))
                for x in reversed(date_split):
                    date_format += x + '/'
                valor = date_format[:-1]
            if not (type(valor) is Decimal or type(valor) is LongType):
                ws.write(fila, i, unicode(valor))
            if type(valor) is Decimal:
                ws.row(fila).set_cell_number(i, Decimal(valor))
            if type(valor) is LongType:
                ws.row(fila).set_cell_number(i, valor)
        # Datos Detalle Orde de Pago
        fila_detalle = fila
        for i in range(obj.detalleordenpago_set.all().count()):
            col = 5
            for j, (field_detalle_op, descripcion) in enumerate(fields_detalle_op):
                valor = mygetattr(obj.detalleordenpago_set.all()[
                                  i], field_detalle_op)
                if valor == 'A':
                    valor = 'A Rendir'
                if valor == 'P':
                    valor = 'Proveedores'
                if valor == 'V':
                    valor = 'Viaticos'
                if valor == 'H':
                    valor = 'Honorarios'
                if valor == 'O':
                    valor = 'Otros'
                if not (type(valor) is Decimal or type(valor) is LongType):
                    ws.write(fila_detalle, col, unicode(valor))
                if type(valor) is Decimal:
                    ws.row(fila_detalle).set_cell_number(col, Decimal(valor))
                if type(valor) is LongType:
                    ws.row(fila_detalle).set_cell_number(col, valor)
                col += 1
            fila_detalle += 1
        # Datos Factura Orden de Pago
        fila_fac = fila
        for i in range(obj.detalleordenpagofac_set.count()):
            col = 9
            for j, (field_factura_op, descripcion) in enumerate(fields_factura_op):
                valor = mygetattr(obj.detalleordenpagofac_set.all()[
                                  i], field_factura_op)
                if not (type(valor) is Decimal or type(valor) is LongType):
                    ws.write(fila_fac, col, unicode(valor))
                if type(valor) is Decimal:
                    ws.row(fila_fac).set_cell_number(col, Decimal(valor))
                if type(valor) is LongType:
                    ws.row(fila_fac).set_cell_number(col, valor)
                col += 1
            fila_fac += 1
        # Datos Ret Orden Pago
        fila_ret = fila
        for i in range(obj.detalleordenpagoret_set.count()):
            col = 10
            for j, (field_ret_op, descripcion) in enumerate(fields_detalle_ret):
                valor = mygetattr(
                    obj.detalleordenpagoret_set.all()[i], field_ret_op)
                if not (type(valor) is Decimal or type(valor) is LongType):
                    ws.write(fila_ret, col, unicode(valor))
                if type(valor) is Decimal:
                    ws.row(fila_ret).set_cell_number(col, Decimal(valor))
                if type(valor) is LongType:
                    ws.row(fila_ret).set_cell_number(col, valor)
                col += 1
            fila_ret += 1
        # Datos Centro Costo Orden de Pago
        fila_cc = fila
        try:
            for i in range(obj.detalleordenpagocc_set.count()):
                col = 14
                for j, (field_cc_op, descripcion) in enumerate(fields_detalle_cc):
                    valor = mygetattr(
                        obj.detalleordenpago_set.all()[i], field_cc_op)
                    if not (type(valor) is Decimal or type(valor) is LongType):
                        ws.write(fila_cc, col, unicode(valor))
                    if type(valor) is Decimal:
                        ws.row(fila_cc).set_cell_number(col, Decimal(valor))
                    if type(valor) is LongType:
                        ws.row(fila_cc).set_cell_number(col, valor)
                    col += 1
                fila_cc += 1
        except:
            pass

        if (fila_detalle >= fila):
            fila = fila_detalle
        else:
            fila += 1

    wb.save(response)
    return response
# ******************************* CLASE MEDIAMIXIN ******************************
class MediaMixin(object):
    class Media:
        css = {
            "all": ("ordenes_de_pago/css/chosen.css", 'ordenes_de_pago/css/proveedor.css')
        }
        js = ('ordenes_de_pago/js/jquery-1.6.4.min.js', 'ordenes_de_pago/js/chosen.jquery.min.js',
              )
# ******************************* CLASE MEDIAMIXIN ******************************

#*************** Convierte todos los campos en ReadOnly ***********************#
class ReadOnlyAdmin(object):
    def get_readonly_fields(self, request, obj=None):
        if (request.user.is_superuser) or (request.user.groups.filter(name='usuarios_chile')):
            ret = set(self.readonly_fields)
        else:
            ret = set(self.readonly_fields + type(self.readonly_fields)
                      (field.name for field in self.model._meta.fields))
        return list(ret - set(self.exclude or []) - set(['id']))
#*************** Convierte todos los campos en ReadOnly ***********************#


class DetalleFacturaInmoInLine(ReadOnlyAdmin, admin.TabularInline):
    model = DetalleFacturaInmo
    extra = 0
    cant_delete = True


class DetalleNotaCreditoInmoInLine(ReadOnlyAdmin, admin.TabularInline):
    model = DetalleNotaCreditoInmo
    extra = 0
    cant_delete = True


class DetalleNotaCreditoInmoAdmin():
    pass


class NotaCreditoInmoAdmin(ReadOnlyAdmin, ImportExportModelAdmin, admin.ModelAdmin, MediaMixin):
    class Media:
        js = (
            settings.STATIC_URL + "ordenes_de_pago/js/jquery-1.6.2.min.js",
            settings.STATIC_URL + "ordenes_de_pago/js/chosen.jquery.min.js",
            settings.STATIC_URL + "ordenes_de_pago/js/chosen.jquery.orden_pago.js",
            settings.STATIC_URL + "ordenes_de_pago/js/disable_enter.js",
            settings.STATIC_URL + "ordenes_de_pago/js/notacredito.js",
            settings.STATIC_URL + "ordenes_de_pago/js/basic.js",
        )
        css = {
            'all': (settings.STATIC_URL + "ordenes_de_pago/css/style.css", "ordenes_de_pago/css/chosen.css", 'ordenes_de_pago/css/proveedor.css')
        }

    actions = ['Exportar_a_Excel', ]
    list_display = ('nronotacredito', 'proveedorinmo',
                    'fecha_nota_credito', 'importe_total', 'pendiente')
    list_filter = ('fecha_nota_credito',)
    search_fields = ('proveedorinmo__razonsocial',)

    fieldsets = (
        ('Datos Nota Credito', {
            'classes': ('expand',),
            'fields': (('nronotacredito', 'fecha_nota_credito', 'proveedorinmo'),),
        }),
        ('Datos Tipo Nota Credito', {
            'classes': ('expand',),
            'fields': (('tipo_nota_credito', 'concepto', 'importe_neto_total', 'importe_total', 'pendiente'),),
        }),
    )

    resource_class = NotaCreditoResources

    exportable_fields_notacredito = (
        ('nronotacredito', 'Nro. Nota Credito'),
        ('fecha_nota_credito', 'Fecha Nota Credito'),
        ('proveedorinmo', 'Proveedor'),
        ('tipo_nota_credito', 'Tipo'),
        ('concepto', 'Concepto'),
        ('importe_total', 'Imp Total'),
        ('pendiente', 'Pendiente'),
    )
    exportable_fields_detalle_nota_credito = (
        ('importe_neto', 'Imp. Neto'),
        ('iva', 'IVA'),
        ('ret_iva', 'Ret IVA'),
        ('ret_iibb', 'Ret IIBB'),
        ('percep_iva', 'Perc IVA'),
        ('percep_iibb_caba', 'Perc IIBB CABA'),
        ('percep_iibb_bsas', 'Perc IIBB BSAS'),
    )

    def Exportar_a_Excel(self, request, queryset):
        return nota_credito_export_xls(queryset, self.exportable_fields_notacredito, self.exportable_fields_detalle_nota_credito)

    def Exportar_a_csv(self, request, queryset):
        return generic_export_csv(queryset, self.exportable_fields)

    inlines = [
        DetalleNotaCreditoInmoInLine,
    ]


class FacturaInmoAdmin(ReadOnlyAdmin, ImportExportModelAdmin, admin.ModelAdmin, MediaMixin):
    class Media:
        js = (
            settings.STATIC_URL + "ordenes_de_pago/js/jquery-1.6.2.min.js",
            settings.STATIC_URL + "ordenes_de_pago/js/chosen.jquery.min.js",
            settings.STATIC_URL + "ordenes_de_pago/js/chosen.jquery.orden_pago.js",
            settings.STATIC_URL + "ordenes_de_pago/js/disable_enter.js",
            settings.STATIC_URL + "ordenes_de_pago/js/factura.js",
            settings.STATIC_URL + "ordenes_de_pago/js/basic.js",
        )
        css = {
            'all': (settings.STATIC_URL + "ordenes_de_pago/css/style.css", "ordenes_de_pago/css/chosen.css", 'ordenes_de_pago/css/proveedor.css')
        }

    actions = ['Exportar_a_Excel', ]
    list_display = ('nrofactura', 'proveedorinmo', 'fecha_factura',
                    'importe_total', 'pendiente')
    list_filter = ('fecha_factura',)
    search_fields = ('proveedorinmo__razonsocial',)

    fieldsets = (
        ('Datos Factura', {
            'classes': ('expand',),
            'fields': (('nrofactura', 'fecha_factura', 'proveedorinmo'),),
        }),
        ('Datos Tipo Factura', {
            'classes': ('expand',),
            'fields': (('tipo_factura', 'concepto', 'importe_neto_total', 'importe_total', 'pendiente'),),
        }),
    )

    resource_class = FacturaResources

    exportable_fields_factura = (
        ('nrofactura', 'Nro. Fac'),
        ('fecha_factura', 'Fecha Fac'),
        ('proveedorinmo', 'Proveedor'),
        ('tipo_factura', 'Tipo'),
        ('concepto', 'Concepto'),
        ('importe_total', 'Imp Total'),
        ('pendiente', 'Pendiente'),
    )
    exportable_fields_detalle_fac = (
        ('importe_neto', 'Imp. Neto'),
        ('iva', 'IVA'),
        ('ret_iva', 'Ret IVA'),
        ('ret_iibb', 'Ret IIBB'),
        ('percep_iva', 'Perc IVA'),
        ('percep_iibb_caba', 'Perc IIBB CABA'),
        ('percep_iibb_bsas', 'Perc IIBB BSAS'),
    )

    def Exportar_a_Excel(self, request, queryset):
        return factura_export_xls(queryset, self.exportable_fields_factura, self.exportable_fields_detalle_fac)

    def Exportar_a_csv(self, request, queryset):
        return generic_export_csv(queryset, self.exportable_fields)
    inlines = [
        DetalleFacturaInmoInLine,
    ]


class IVA_Compras_InmoAdmin(ReadOnlyAdmin, ImportExportModelAdmin, admin.ModelAdmin, MediaMixin):
    list_display = ('fecha', 'tipo_comprobante', 'nro_comprobante', 'cuit', 'razonsocial',
                    'grabado_21', 'grabado_105', 'grabado_27', 'exento', 'iva_21', 'iva_105',
                    'iva_27', 'ret_iva', 'percep_iva', 'ret_gcias', 'percep_iibb_caba',
                    'ret_iibb_caba', 'importe_total')
    list_filter = ('fecha',)
    search_fields = ('proveedorinmo__razonsocial',)


class DetalleFacturaInmoAdmin(ReadOnlyAdmin, admin.ModelAdmin):
    list_display = ('factura', 'porcentaje_iva', 'importe neto', 'iva', 'ret_iva',
                    'ret_iibb', 'percep_iva', 'percep_iibb_caba', 'percep_iibb_bsas')


class DetalleOrdenPagoCCInmoInLine(ReadOnlyAdmin, admin.TabularInline):
    model = DetalleOrdenPagoCCInmo
    extra = 0
    cant_delete = True


class DetalleOrdenPagoNCInmoInLine(ReadOnlyAdmin, admin.TabularInline):
    model = DetalleOrdenPagoNCInmo
    extra = 0
    cant_delete = True

    def get_readonly_fields(self, request, obj=None):
        if not request.user.is_superuser:
            if obj is not None:  # El Objeto no es  nuevo
                return self.readonly_fields + ('notacredito',)
        if obj is not None:  # El Objeto no es  nuevo
            return self.readonly_fields + ('notacredito',)
        return self.readonly_fields

    def formfield_for_foreignkey(self, db_field, request, **kwargs):
        if db_field.name == 'notacredito':
            kwargs['queryset'] = NotaCreditoInmo.objects.filter(pendiente=False)
        return super(DetalleOrdenPagoNCInmoInLine, self).formfield_for_foreignkey(db_field, request, **kwargs)


class DetalleOrdenPagoFACInmoInLine(ReadOnlyAdmin, admin.TabularInline):
    model = DetalleOrdenPagoFACInmo
    extra = 0
    cant_delete = True

    def get_readonly_fields(self, request, obj=None):
        if not request.user.is_superuser:
            if obj is not None:  # El Objeto no es  nuevo
                return self.readonly_fields + ('factura',)
        if obj is not None:  # El Objeto no es  nuevo
            return self.readonly_fields + ('factura',)
        return self.readonly_fields

    def formfield_for_foreignkey(self, db_field, request, **kwargs):
        if db_field.name == 'factura':
            kwargs['queryset'] = FacturaInmo.objects.filter(pendiente=False)
        return super(DetalleOrdenPagoFACInmoInLine, self).formfield_for_foreignkey(db_field, request, **kwargs)


class DetalleOrdenPagoInmoInLine(ReadOnlyAdmin, admin.TabularInline):
    model = DetalleOrdenPagoInmo
    extra = 0
    cant_delete = True


class DetalleOrdenPagoRetInmoInLine(ReadOnlyAdmin, admin.TabularInline):
    model = DetalleOrdenPagoRetInmo
    extra = 0
    cant_delete = True


class DetalleOrdenPagoRetInmoAdmin(ReadOnlyAdmin, admin.ModelAdmin):
    list_display = ('orden_pago', 'importe_ret_iibb', 'nro_ret_iibb',
                    'importe_ret_ganancias', 'nro_ret_ganancias')


class DetalleOrdenPagoCCInmoAdmin(ReadOnlyAdmin, admin.ModelAdmin):
    list_display = ('orden_pago', 'centro_costo', 'porcentaje_aplicacion')


class DetalleOrdenPagoNCInmoAdmin(ReadOnlyAdmin, admin.ModelAdmin):
    list_display = ('orden_pago', 'notacredito')


class DetalleOrdenPagoFACInmoAdmin(ReadOnlyAdmin, admin.ModelAdmin):
    list_display = ('orden_pago', 'factura')


class DetalleOrdenPagoInmoAdmin(ReadOnlyAdmin, admin.ModelAdmin):
    list_display = ('orden_pago', 'banco', 'forma_pago',
                    'tipo_gasto', 'nro_cheque')


class OrdenPagoInmoAdmin(ReadOnlyAdmin, ImportExportModelAdmin, admin.ModelAdmin, MediaMixin):

    class Media():
        js = (
            settings.STATIC_URL + "ordenes_de_pago/js/jquery-1.6.2.min.js",
            settings.STATIC_URL + "ordenes_de_pago/js/chosen.jquery.min.js",
            settings.STATIC_URL + "ordenes_de_pago/js/chosen.jquery.orden_pago.js",
            settings.STATIC_URL + "ordenes_de_pago/js/disable_enter.js",
            settings.STATIC_URL + "ordenes_de_pago/js/basic.js",
            settings.STATIC_URL + "ordenes_de_pago/js/orden_de_pago.js",
        )
        css = {
            'all': (settings.STATIC_URL + "ordenes_de_pago/css/style.css", "ordenes_de_pago/css/chosen.css", 'ordenes_de_pago/css/proveedor.css')
        }

    actions = ['Exportar_a_Excel', 'delete_selected']

    def delete_selected(self, request, obj):
        for orden_pago in obj.all():
            for factura in orden_pago.detalleordenpagofacinmo_set.all():
                factura.factura.pendiente = False
                factura.factura.save()
            for notacredito in orden_pago.detalleordenpagoncinmo_set.all():
                notacredito.notacredito.pendiente = False
                notacredito.notacredito.save()
        orden_pago.delete()

    list_display = ('nro_orden_pago', 'proveedorinmo',
                    'fecha_orden_pago', 'total_a_pagar', 'ver_ordenpago')
    list_filter = ('fecha_orden_pago',)
    search_fields = ('proveedorinmo__razonsocial', 'nro_orden_pago')

    fieldsets = (
        ('Datos Orden de Pago', {
            'classes': ('expand',),
            'fields': (('proveedorinmo',), ('fecha_orden_pago', 'moneda', 'total_a_pagar')),
        }),
    )

    exportable_fields_orden_pago = (
        ('nro_orden_pago', 'Nro. OP'),
        ('proveedorinmo', 'Proveedor'),
        ('fecha_orden_pago', 'Fecha'),
        ('moneda', 'Moneda'),
        ('total_a_pagar', 'Total'),
    )
    exportable_fields_detalle_orden_pago = (
        ('banco', 'Banco'),
        ('forma_pago', 'Forma Pago'),
        ('tipo_gasto', 'Tipo Gasto'),
        ('nro_cheque', 'Cheque'),
    )
    exportable_fields_fac_orden_pago = (
        ('factura', 'Factura'),
    )
    exportable_fields_ret_orden_pago = (
        ('importe_ret_iibb', 'Imp IIBB'),
        ('nro_ret_iibb', 'Nro IIBB'),
        ('importe_ret_ganancias', 'Imp Gan'),
        ('nro_ret_ganancias', 'Nro Gan'),
    )
    exportable_fields_cc_orden_pago = (
        ('centro_costo', 'Ctro Costo'),
        ('porcentaje_aplicacion', '% Aplic'),
    )

    resource_class = OrdenPagoResources

    def get_readonly_fields(self, request, obj=None):
        if not request.user.is_superuser:
            if obj is not None:
                return self.readonly_fields + ('proveedorinmo', 'fecha_orden_pago', 'moneda')
        return self.readonly_fields

    def Exportar_a_Excel(self, request, queryset):
        return orden_pago_export_xls(queryset, self.exportable_fields_orden_pago, self.exportable_fields_detalle_orden_pago,
                                     self.exportable_fields_fac_orden_pago, self.exportable_fields_ret_orden_pago, self.exportable_fields_cc_orden_pago)

    def nro_cheque(self, obj):
        return obj.detalleordenpagoinmo_set.get().nro_cheque

    def ver_ordenpago(self, obj):
        return '<a href="%s">Ver o Imprimir Orden de Pago</a>' % reverse('ordenpago', args=[obj.nro_orden_pago])
    ver_ordenpago.allow_tags = True

    inlines = [
        DetalleOrdenPagoFACInmoInLine, DetalleOrdenPagoNCInmoInLine, DetalleOrdenPagoInmoInLine, DetalleOrdenPagoRetInmoInLine,
        DetalleOrdenPagoCCInmoInLine,
    ]


class IngresosBrutosInmoAdmin(ReadOnlyAdmin, ImportExportModelAdmin, admin.ModelAdmin):
    list_display = ('id', 'nro_certificado', 'proveedorinmo',
                    'importe_pagado', 'importe_retenido', 'pertenece', 'ver_retiibb')

    fieldsets = (
        ('Datos Ret IIBB', {
            'classes': ('expand',),
            'fields': (('orden_pago', 'proveedorinmo', 'fecha_iibb'),),
        }),
        ('Datos Importes', {
            'classes': ('expand',),
            'fields': (('importe_pagado', 'importe_retenido'),),
        }),
    )

    def ver_retiibb(self, obj):
        return '<a href="%s">Ver o Imprimir Comprobante</a>' % reverse('retiibb', args=[obj.id])
    ver_retiibb.allow_tags = True


admin.site.register(FacturaInmo, FacturaInmoAdmin)
admin.site.register(NotaCreditoInmo, NotaCreditoInmoAdmin)
admin.site.register(OrdenPagoInmo, OrdenPagoInmoAdmin)
admin.site.register(IngresosBrutosInmo, IngresosBrutosInmoAdmin)
admin.site.register(IVA_Compras_Inmo, IVA_Compras_InmoAdmin)

