# -*- encoding: utf -*_-8
# Create your views here.
import xlwt
import datetime
from types import *
from decimal import Decimal
import django_tables as tables
from ordenes_de_pago.models import *
from django.http import HttpResponse
from django.template import RequestContext
from django.shortcuts import render_to_response
from dateutil.relativedelta import relativedelta
from number_to_letter import *

def retiibb(request, ingresosbrutos_id):
    iibb_view = IngresosBrutos.objects.get(pk=ingresosbrutos_id)
    params = request.GET.copy()
    url = '%s?%s' % (request.path, params.urlencode)

    nro_comprobante_iibb = ''
    anio = ''
    nro_orden_pago = ''
    fecha_iibb = ''
    proveedor_id = ''
    proveedor = ''
    razonsocial = ''
    direccion = ''
    provincia = ''
    cuit = ''
    nro_iibb = ''
    porcentaje_ret = ''
    comprobantes = []
    importe_pagado = 0 # Importe Total - Importe Retenido
    importe_retenido = 0

    #nro_comprobante_iibb = long(ingresosbrutos_id)
    nro_comprobante_iibb = iibb_view.nro_certificado
    anio = iibb_view.fecha_iibb.year
    if iibb_view.orden_pago_id == None:
        nro_orden_pago = iibb_view.orden_pago_venta_id
    else:
        nro_orden_pago = iibb_view.orden_pago_id
    fecha_iibb = iibb_view.fecha_iibb
    proveedor_id = iibb_view.proveedor_id
    proveedor = iibb_view.proveedor
    razonsocial = iibb_view.proveedor.razonsocial
    direccion = iibb_view.proveedor.domicilio_fiscal
    provincia = iibb_view.proveedor.get_provincia_display()
    cuit = iibb_view.proveedor.cuit
    nro_iibb = iibb_view.proveedor.nro_iibb
    porcentaje_ret = iibb_view.proveedor.porcentaje_ret

    try:
        for comprobante in iibb_view.orden_pago.detalleordenpagofac_set.all():
            comprobantes.append('FAC' + comprobante.factura.nrofactura + '/')
            importe_pagado += comprobante.factura.importe_neto_total
        for comprobante in iibb_view.orden_pago.detalleordenpagonc_set.all():
            comprobantes.append('NC' + comprobante.notacredito.nronotacredito + '/')
            importe_pagado -= comprobante.notacredito.importe_total
        for comprobante in iibb_view.orden_pago.detalleordenpagoret_set.all():
            importe_retenido += comprobante.importe_ret_iibb
    except:
        for comprobante in iibb_view.orden_pago_venta.detalleordenpagofacventa_set.all():
            comprobantes.append('FAC' + comprobante.factura.nrofactura + '/')
            importe_pagado += comprobante.factura.importe_neto_total
        for comprobante in iibb_view.orden_pago_venta.detalleordenpagoncventa_set.all():
            comprobantes.append('NC' + comprobante.notacredito.nronotacredito + '/')
            importe_pagado -= comprobante.notacredito.importe_total
        for comprobante in iibb_view.orden_pago_venta.detalleordenpagoretventa_set.all():
            importe_retenido += comprobante.importe_ret_iibb

    return render_to_response('index_iibb.html',
        {
        'anio': anio,
        'nro_comprobante_iibb': nro_comprobante_iibb,
        'nro_orden_pago': nro_orden_pago,
        'fecha_iibb': fecha_iibb,
        'comprobantes': comprobantes,
        'proveedor_id': proveedor_id,
        'proveedor': proveedor,
        'razonsocial': razonsocial,
        'direccion': direccion,
        'provincia': provincia,
        'cuit': cuit,
        'nro_iibb': nro_iibb,
        'porcentaje_ret': porcentaje_ret,
        'importe_pagado': importe_pagado,
        'importe_retenido': importe_retenido,
        }, context_instance=RequestContext(request))

def ordenpago(request, ordenpago_id):
    ordenpago_view = OrdenPagoInmo.objects.get(pk=ordenpago_id)
    params = request.GET.copy()
    url = '%s?%s' % (request.path, params.urlencode())

    proveedor = ''
    comprobantes = []
    conceptos = []
    importes = []
    retenciones = []
    banco = ''
    forma_pago = ''
    nro_cheque = ''
    tipo_gasto = ''
    centro_costo = ''

    nro_orden_pago=ordenpago_view.nro_orden_pago
    fecha_orden_pago=ordenpago_view.fecha_orden_pago
    moneda=ordenpago_view.moneda
    if moneda=='P':
        moneda='$ARG'
        moneda1= 'Pesos'
    else:
        moneda='U$S'
        moneda1='Dolares'

    proveedor = str(ordenpago_view.proveedorinmo.razonsocial)
    total_a_pagar = 0

    for comprobante in ordenpago_view.detalleordenpagofacinmo_set.all():
        comprobantes.append('FAC '+ comprobante.factura.nrofactura)
    for concepto in ordenpago_view.detalleordenpagofac_set.all():
        conceptos.append(concepto.factura.concepto)
    for importe in ordenpago_view.detalleordenpagofac_set.all():
        total_a_pagar+=importe.factura.importe_total
        importes.append('$ ' + str(importe.factura.importe_total))

    for comprobante in ordenpago_view.detalleordenpagonc_set.all():
		comprobantes.append('NC ' + comprobante.notacredito.nronotacredito)
    for concepto in ordenpago_view.detalleordenpagonc_set.all():
		conceptos.append(concepto.notacredito.concepto)
    for importe in ordenpago_view.detalleordenpagonc_set.all():
		total_a_pagar-=importe.notacredito.importe_total
		importes.append('$ (-' + str(importe.notacredito.importe_total) + ')')

    for ret_iibb in ordenpago_view.detalleordenpagoret_set.all():
        if (ret_iibb.importe_ret_iibb > 0.00):
            comprobantes.append(ret_iibb.nro_ret_iibb)
            conceptos.append('Ret IIBB')
            total_a_pagar-=ret_iibb.importe_ret_iibb
            retenciones.append('$ (-' + str(ret_iibb.importe_ret_iibb) + ')')

    for ret_gan in ordenpago_view.detalleordenpagoret_set.all():
        if (ret_gan.importe_ret_ganancias > 0.00):
            comprobantes.append(ret_gan.nro_ret_ganancias)
            conceptos.append('Ret Gan')
            total_a_pagar-=ret_iibb.importe_ret_ganancias
            retenciones.append('$ (-' + str(ret_gan.importe_ret_ganancias) + ')')

    importe_en_letras=(to_word(total_a_pagar))
    total_a_pagar =  '$ ' + str(total_a_pagar)

    for formapago in ordenpago_view.detalleordenpago_set.all():
        banco += ' ' + str(formapago.banco.descripcion)
        forma_pago += ' ' + str(formapago.forma_pago.forma_pago)
        if formapago.tipo_gasto == 'P':
            tipo_gasto += ' ' + (str('PROVEEDORES'))
        if formapago.tipo_gasto == 'V':
            tipo_gasto += ' ' + ('VIATICOS')
        if formapago.tipo_gasto == 'A':
            tipo_gasto += ' ' + ('A RENDIR')
        if formapago.tipo_gasto == 'H':
            tipo_gasto += ' ' + ('HONORARIOS')
        if formapago.tipo_gasto == 'O':
            tipo_gasto += ' ' + ('OTROS')
        if formapago.nro_cheque == '0':
            nro_cheque = ''
        else:
            nro_cheque = formapago.nro_cheque

    if not (ordenpago_view.detalleordenpagocc_set.all()) == 'None':
        for cc in ordenpago_view.detalleordenpagocc_set.all():
            centro_costo += ' ' + str(cc.centro_costo)
    else:
        centro_costo = ' '

    return render_to_response('index_orden_de_pago.html',
        {
  		'nro_orden_pago': nro_orden_pago,
        'fecha_orden_pago': fecha_orden_pago,
        'moneda': moneda,
        'proveedor': proveedor,
        'comprobantes': comprobantes,
        'conceptos': conceptos,
        'importes': importes,
        'retenciones': retenciones,
        'total_a_pagar': total_a_pagar,
        'forma_pago': forma_pago,
		'banco': banco,
        'nro_cheque': nro_cheque,
        'tipo_gasto': tipo_gasto,
        'centro_costo': centro_costo,
        'moneda1': moneda1,
        'importe_en_letras': importe_en_letras,
  	    }, context_instance=RequestContext(request))
