# -*- coding: utf-8 -*-
from django.shortcuts import render
from django.contrib.auth.decorators import login_required, permission_required
from django.contrib.auth.models import User, Group
from django.db.models import Sum,Q,Avg,Count
from django.http import HttpResponseRedirect
from django.http import HttpResponse
from django.db  import  IntegrityError ,  transaction 
import json
import sys
from django.core import serializers
from Main.models import *
from Process.models import *
from Maintenance.models import *
from Consult.models import *
from datetime import date, time, timedelta
import time
import datetime
import calendar
#modulos adicionales
def QuitarEspacios(texto):
	a=str(texto)
	return " ".join(a.split())
def ConvertirDecimal(numtext):
	a=str(numtext)
	return float(a.replace(',','.'))
#modulos adicionales
def esReal(t):
	f=0
	try:
		f=float(t)
	except:
		f=0
	return f
def poner_coma(numero):
	cadena=numero
	n= len(cadena)
	resul=''
	p=n
	while p>3:
		p= p-3
		p1=cadena[:p]
		p2=cadena[p:]
		resul= ','+p2+resul
		cadena= p1
	return (cadena+resul)
def normalizar(numero):
	cadena=str(float(numero))
	part= cadena.split('.')
	num= part[0]
	dec= part[1]
	cade= poner_coma(num)
	return cade+'.'+dec

# Create your views here.
@login_required
def Clientes_view(request):
	#este view... ya no es nesesario q devuelva un json...
	#estamos usando un ajax para hacer la carga de de datos
	try:
		usr= request.user.username
		cargo =''
		C= Cajas.objects.get(id_usuario__usuario=usr)
		if C.id_usuario.pk == C.id_oficina.id_usuario.pk:
			cargo='administrador'
	except:
		cargo =''
	return render(request,'Clientes.html',{"cargo":cargo} )


@login_required
def listaCliente_user_autocompletado_ajax_view(request):
	if request.is_ajax:
		html_clientes=''
		dato=''
		text_parametro=request.GET.get('parametro')
		tipo=request.GET.get('tipo')
		usr = request.user.username
		try:
			fil= QuitarEspacios(text_parametro).split(' ')
			no=fil[0]
			am=''
			ap=''
			if len(fil)>1:
				ap=fil[1]
				if len(fil)>2:
					am=fil[2]
			consulta=list(Cliente.objects.filter(nombre__icontains=no,Apellido_paterno__icontains=ap,Apellido_materno__icontains=am,verificado=True).values('pk','dni','nombre','Apellido_paterno','Apellido_materno','telefono','direccion','fecha_nacimiento','email','drem','tipo_persona').order_by('pk')[:5])
			lista=[]
			if tipo==1:	
				for obj in consulta:
					html_clientes=html_clientes+'<li data-value="'+str(obj['pk'])+'" n="'+obj['nombre'].upper()+'" ap="'+obj['Apellido_paterno'].upper()+'" am="'+obj['Apellido_materno'].upper()+'" cel="'+obj['telefono']+'"><a href="javascript:void(0);">'+obj['nombre'].upper()+' '+obj['Apellido_paterno'].upper()+' '+obj['Apellido_materno'].upper()+'</a></li>'

			else:
				for obj in consulta:
					html_clientes=html_clientes+'<li data-value="'+str(obj['pk'])+'" n="'+obj['nombre'].upper()+'" ap="'+obj['Apellido_paterno'].upper()+'" am="'+obj['Apellido_materno'].upper()+'" dni="'+obj['dni'].upper()+'"><a href="javascript:void(0);">'+obj['nombre'].upper()+' '+obj['Apellido_paterno'].upper()+' '+obj['Apellido_materno'].upper()+'</a></li>'				

			lista.append(html_clientes)	
			dato={'listaClientes':lista}
		except:
			dato='fail'+str(sys.exc_info()[1])
	else:
		dato='fail'+str(sys.exc_info()[1])
	mimetype="application/json"
	data= json.dumps(dato)

	return HttpResponse(data,mimetype)

@login_required
def listadoVentas_view(request):
	usr= request.user.username
	return render(request,'listadoVentas.html' )


@login_required
def listaVentas_user_ajax_view(request):
	if request.is_ajax:
		pag=request.GET.get('pg','')
		pg= 1
		if pag !='':
			pg= int(pag)
		desde= (pg-1)*20
		hasta= pg*20
		usr = request.user.username
		try:
			u= Personal.objects.get(usuario=usr)
			consulta=list(TCajaMaterialHaber.objects.filter(id_personal=u.pk,tablaRelacional='TVentaMaterial').values('pk','conceptoDetalle'))
			lista=[]
			pt,st,dt=0,0,0
			for obj in consulta:
				dato={}
				OMV=TVentaMaterial.objects.get(idCajaMaterialHaber=obj['pk'])
				dato['pk']=obj['pk']
				dato['f']=str(OMV.fecha.strftime("%d-%m-%Y %H:%M"))
				if OMV.id_cliente >0:
					OC=Cliente.objects.get(pk=OMV.id_cliente)
					dato['cli']=OC.dni+'  '+OC.nombre+', '+OC.Apellido_paterno+' '+OC.Apellido_materno
				else:
					dato['cli']=''
				dato['obs']=OMV.observaciones
				dato['moneda']=OMV.moneda
				dato['peso']=str(OMV.Peso_gramos)
				dato['presio']=str(OMV.Precio_gramo)
				dato['total']=str(OMV.Total_cobrar)
				pt=pt+float(OMV.Peso_gramos)
				if str(OMV.moneda)=='soles':
					st=st+float(OMV.Total_cobrar)
				elif str(OMV.moneda)=='dolares':
					dt=dt+float(OMV.Total_cobrar)
				lista.append(dato)
			totales={'peso_t':pt,'sol_t':st,'dol_t':dt}
			lista.append(totales)
			data= json.dumps(lista)
		except:
			data='fail'+ str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)


@login_required
def listaVentasFiltro_user_ajax_view(request):
	if request.is_ajax:
		filtro=request.GET.get('filtro','')
		F1=request.GET.get('F1','')
		F2=request.GET.get('F2','')
		usr= request.user.username
		try:
			lista=[]
			u= Personal.objects.get(usuario=usr)
			if F1 != '':
				if filtro =='f':
					if F1 !='':
						fecha= datetime.datetime.strptime(F1, '%Y-%m-%d')
						horamin= datetime.datetime.combine(fecha,datetime.time.min)
						horamax= datetime.datetime.combine(fecha,datetime.time.max)
						Chabermaterial=list(TCajaMaterialHaber.objects.filter(id_personal=u.pk,tablaRelacional='TVentaMaterial',fecha__range=(horamin,horamax)).values('pk','conceptoDetalle'))				
					else:
						Chabermaterial=list(TCajaMaterialHaber.objects.filter(id_personal=u.pk,tablaRelacional='TVentaMaterial').values('pk','conceptoDetalle'))
				
				elif filtro=='ef':
					fecha1= datetime.datetime.strptime(F1, '%Y-%m-%d')
					fecha2= datetime.datetime.strptime(F2, '%Y-%m-%d')
					fhoramin= datetime.datetime.combine(fecha1,datetime.time.min)
					fhoramax= datetime.datetime.combine(fecha2,datetime.time.max)
					Chabermaterial=list(TCajaMaterialHaber.objects.filter(id_personal=u.pk,tablaRelacional='TVentaMaterial',fecha__range=(fhoramin,fhoramax)).values('pk','conceptoDetalle'))
				else:
					Chabermaterial=list(TCajaMaterialHaber.objects.filter(id_personal=u.pk,tablaRelacional='TVentaMaterial').values('pk','conceptoDetalle'))
			else:#hoy
				fhoramin= datetime.datetime.combine(datetime.date.today(),datetime.time.min)
				fhoramax= datetime.datetime.combine(datetime.date.today(),datetime.time.max)
				Chabermaterial=list(TCajaMaterialHaber.objects.filter(id_personal=u.pk,tablaRelacional='TVentaMaterial',fecha__range=(fhoramin,fhoramax)).values('pk','conceptoDetalle'))
		 		
			pt,st,dt=0,0,0
			for obj in Chabermaterial:
				dato={}
				OMV=TVentaMaterial.objects.get(idCajaMaterialHaber=obj['pk'])
				dato['pk']=obj['pk']
				dato['f']=str(OMV.fecha.strftime("%d-%m-%Y %H:%M"))
				if OMV.id_cliente >0:
					OC=Cliente.objects.get(pk=OMV.id_cliente)
					dato['cli']=OC.dni+'  '+OC.nombre+', '+OC.Apellido_paterno+' '+OC.Apellido_materno
				else:
					dato['cli']=''
				dato['obs']=OMV.observaciones
				dato['moneda']=OMV.moneda
				dato['peso']=str(OMV.Peso_gramos)
				dato['presio']=str(OMV.Precio_gramo)
				dato['total']=str(OMV.Total_cobrar)
				pt=pt+float(OMV.Peso_gramos)
				if str(OMV.moneda)=='soles':
					st=st+float(OMV.Total_cobrar)
				elif str(OMV.moneda)=='dolares':
					dt=dt+float(OMV.Total_cobrar)
				lista.append(dato)
			totales={'peso_t':pt,'sol_t':st,'dol_t':dt}
			lista.append(totales)
			data= json.dumps(lista)
		except:
			data='fail'+ str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)


@login_required
def listadoCompras_view(request):
	usr= request.user.username
	return render(request,'listadoCompras.html' )



@login_required
def listaCompras_user_ajax_view(request):
	if request.is_ajax:
		pag=request.GET.get('pg','')
		pg= 1
		if pag !='':
			pg= int(pag)
		desde= (pg-1)*20
		hasta= pg*20
		usr = request.user.username
		try:
			u= Personal.objects.get(usuario=usr)
			Cdebematerial=list(TCajaMaterialDebe.objects.filter(id_personal=u.pk,tablaRelacional='TCompraMaterial').values('pk','conceptoDetalle'))
			lista=[]
			pt,st,dt=0,0,0
			for obj in Cdebematerial:
				dato={}
				OMD=TCompraMaterial.objects.get(idCajaMaterialDebe=obj['pk'])
				dato['pk']=obj['pk']
				dato['f']=str(OMD.fecha.strftime("%d-%m-%Y %H:%M"))
				if OMD.id_cliente >0:
					OC=Cliente.objects.get(pk=OMD.id_cliente)
					dato['cli']=OC.dni+'  '+OC.nombre+', '+OC.Apellido_paterno+' '+OC.Apellido_materno
				else:
					dato['cli']=''
				dato['obs']=OMD.observaciones
				dato['moneda']=OMD.moneda
				dato['peso']=str(OMD.Peso_gramos)
				dato['presio']=str(OMD.Precio_gramo)
				dato['total']=str(OMD.Total_pagar)
				pt=pt+float(OMD.Peso_gramos)
				if str(OMD.moneda)=='soles':
					st=st+float(OMD.Total_pagar)
				elif str(OMD.moneda)=='dolares':
					dt=dt+float(OMD.Total_pagar)
				lista.append(dato)
			totales={'peso_t':pt,'sol_t':st,'dol_t':dt}
			lista.append(totales)
			data= json.dumps(lista)
		except:
			data='fail'+ str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)


@login_required
def listaComprasFiltro_user_ajax_view(request):
	data=""
	if request.is_ajax:
		filtro=request.GET.get('filtro','')
		F1=request.GET.get('F1','')
		F2=request.GET.get('F2','')
		usr= request.user.username
		try:
			lista=[]
			u= Personal.objects.get(usuario=usr)
			if F1 != '':
				if filtro =='f':
					if F1 !='':
						fecha= datetime.datetime.strptime(F1, '%Y-%m-%d')
						horamin= datetime.datetime.combine(fecha,datetime.time.min)
						horamax= datetime.datetime.combine(fecha,datetime.time.max)
						Cdebematerial=list(TCajaMaterialDebe.objects.filter(id_personal=u.pk,tablaRelacional='TCompraMaterial',fecha__range=(horamin,horamax)).values('pk','conceptoDetalle'))				
					
					else:
						Cdebematerial=list(TCajaMaterialDebe.objects.filter(id_personal=u.pk,tablaRelacional='TCompraMaterial').values('pk','conceptoDetalle'))
						 
				elif filtro=='ef':
					fecha1= datetime.datetime.strptime(F1, '%Y-%m-%d')
					fecha2= datetime.datetime.strptime(F2, '%Y-%m-%d')
					fhoramin= datetime.datetime.combine(fecha1,datetime.time.min)
					fhoramax= datetime.datetime.combine(fecha2,datetime.time.max)
					Cdebematerial=list(TCajaMaterialDebe.objects.filter(id_personal=u.pk,tablaRelacional='TCompraMaterial',fecha__range=(fhoramin,fhoramax)).values('pk','conceptoDetalle'))
				else:
					Cdebematerial=list(TCajaMaterialDebe.objects.filter(id_personal=u.pk,tablaRelacional='TCompraMaterial').values('pk','conceptoDetalle'))
			else:#filtrar de hoy
				fhoramin= datetime.datetime.combine(datetime.date.today(),datetime.time.min)
				fhoramax= datetime.datetime.combine(datetime.date.today(),datetime.time.max)
				Cdebematerial=list(TCajaMaterialDebe.objects.filter(id_personal=u.pk,tablaRelacional='TCompraMaterial',fecha__range=(fhoramin,fhoramax)).values('pk','conceptoDetalle'))
				
			lista=[]
			pt,st,dt=0,0,0
			for obj in Cdebematerial:
				dato={}
				OMD=TCompraMaterial.objects.get(idCajaMaterialDebe=obj['pk'])
				dato['pk']=obj['pk']
				dato['f']=str(OMD.fecha.strftime("%d-%m-%Y %H:%M"))
				if OMD.id_cliente >0:
					OC=Cliente.objects.get(pk=OMD.id_cliente)
					dato['cli']=OC.dni+'  '+OC.nombre+', '+OC.Apellido_paterno+' '+OC.Apellido_materno
				else:
					dato['cli']=''
				dato['obs']=OMD.observaciones
				dato['moneda']=OMD.moneda
				dato['peso']=str(OMD.Peso_gramos)
				dato['presio']=str(OMD.Precio_gramo)
				dato['total']=str(OMD.Total_pagar)
				pt=pt+float(OMD.Peso_gramos)
				if str(OMD.moneda)=='soles':
					st=st+float(OMD.Total_pagar)
				elif str(OMD.moneda)=='dolares':
					dt=dt+float(OMD.Total_pagar)
				lista.append(dato)
			totales={'peso_t':pt,'sol_t':st,'dol_t':dt}
			lista.append(totales)
			data= json.dumps(lista)
		except:
			data='fail1'+str(sys.exc_info()[1])
	else:
		data='fail'+str(sys.exc_info()[1])
	mimetype="application/json"
	return HttpResponse(data,mimetype)


@login_required
def listaCliente_user_autocomplete_ajax_view(request):
	if request.is_ajax:
		usr = request.user.username 
		consulta=list(Cliente.objects.all().values('pk','dni','nombre','Apellido_paterno','Apellido_materno','telefono','direccion','fecha_nacimiento','email','drem','estado','tipo_persona'))
		#lista=[]
		listaDni=[]
		listaNom=[]
		for obj in consulta:
			listaDni.append(str(obj['dni']))
			d= obj['nombre']+obj['Apellido_paterno']+obj['Apellido_materno']
			listaNom.append(d)
		dato={'data_Dni':listaDni,'data_Nombres':listaNom}
		data= json.dumps(dato)
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)


#este viw se encarga de devolver los json  con la lista de clientes creados
#ojo con los atributos
"""
@login_required
def VerPeticionCtaCte_operador(request):
	if request.is_ajax:
		idCta=request.GET.get('idctacte','')
		usr= request.user.username
		C= Cajas.objects.get(id_usuario__usuario=usr)
		consulta=list(PeticionesCtaCtes.objects.filter(idctacte=idCta,id_personal=C.id_usuario).exclude(estado='RETIRADO').values('pk','idctacte','estado','monto','saldo','tipoMoneda','fechaHora','montoSobregiro','nroDiasSobregiro','interesSobregiro'))
		lista=[]
		for obj in consulta:
			dato={}
			dato['pk']=obj['pk']
			dato['idctacte']=obj['idctacte']
			dato['estado']=obj['estado']
			dato['monto']=str(obj['monto'])
			dato['saldo']=str(obj['saldo'])
			dato['tipoMoneda']=obj['tipoMoneda']
			dato['fechaHora']= str(obj['fechaHora'].strftime("%Y-%m-%d %H:%M %p"))
			dato['montoSobregiro']=str(obj['montoSobregiro'])
			dato['nroDiasSobregiro']=obj['nroDiasSobregiro']
			dato['interesSobregiro']=str(obj['interesSobregiro']) 
			lista.append(dato)
		data= json.dumps(lista)
	else:
		data='fail' 
	mimetype="application/json"
	return HttpResponse(data,mimetype)



@login_required
def ListaPeticionesCtaCteFiltro(request):
	if request.is_ajax:
		idCta=request.GET.get('idctacte','')
		consulta=list(PeticionesCtaCtes.objects.filter(idctacte=idCta).values('id','idctacte','estado','monto','tipoMoneda','fechaHora','id_personal','saldo','esSobregiro','montoSobregiro','interesSobregiro','nroDiasSobregiro'))
		lista=[]
		for obj in consulta:
			dato={}
			idPers= str(obj['id_personal'])
			idCta= str(obj['idctacte'])
			consulta2=CtaCte.objects.filter(pk=idCta).values('id_cliente','idCajaDebe')
			consulta3=Cliente.objects.filter(pk=consulta2[0]['id_cliente']).values('nombre','Apellido_paterno','Apellido_materno')
			consulta4=TCajaDebe.objects.filter(pk=consulta2[0]['idCajaDebe']).values('id_oficina','id_personal')
			consulta5=Oficina.objects.filter(pk=consulta4[0]['id_oficina']).values('nombre_oficina')
			consulta6=Personal.objects.filter(pk=consulta4[0]['id_personal']).values('usuario')
			dato['id']= obj['id']
			dato['usuario']= consulta6[0]['usuario']
			dato['oficina']= consulta5[0]['nombre_oficina']
			dato['nombre']= consulta3[0]['nombre']
			dato['ap']= consulta3[0]['Apellido_paterno']
			dato['am']= consulta3[0]['Apellido_materno']
			dato['idCta']= idCta
			dato['fechaHora']= str(obj['fechaHora'].strftime("%Y-%m-%d %H:%M %p"))
			dato['estado']=obj['estado']
			dato['monto']=str(obj['monto'])
			dato['saldo']=str(obj['saldo'])
			dato['moneda']=obj['tipoMoneda'] 
			lista.append(dato)
		data= json.dumps(lista)
	else:
		data='fail' 
	mimetype="application/json"
	return HttpResponse(data,mimetype)

"""
@login_required
def listaClienteTotal_ajax_view(request):
	if request.is_ajax:
		consulta=list(Cliente.objects.all().values('pk','dni','nombre','Apellido_paterno','Apellido_materno','telefono','direccion','fecha_nacimiento','email','drem','estado','tipo_persona'))
		lista=[]
		for obj in consulta:
			dato={}
			dato['pk']=obj['pk']
			dato['dni']=obj['dni']
			dato['nom']=obj['nombre']
			dato['ap']=obj['Apellido_paterno']
			dato['am']=obj['Apellido_materno']
			dato['tel']=obj['telefono']
			dato['dir']= obj['direccion']
			dato['fn']=str(obj['fecha_nacimiento'])
			dato['email']=obj['email']
			dato['drem']=obj['drem']
			dato['estado']=obj['estado']
			dato['tp']=obj['tipo_persona']
			lista.append(dato)
		data= json.dumps(lista)
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
def listaClientesFiltro_ajax_view(request):
	data=''
	if request.is_ajax:
		filtro2=request.GET.get('filtro2','')
		valor= request.GET.get('valor','')
		if valor !='':
			if filtro2 =='nom':
				consulta= list(Cliente.objects.filter(nombre__icontains=valor).values('pk','dni','nombre','Apellido_paterno','Apellido_materno','telefono','direccion','fecha_nacimiento','email','drem','estado','tipo_persona'))
			elif filtro2=='ap':
				consulta= list(Cliente.objects.filter(Apellido_paterno__icontains=valor).values('pk','dni','nombre','Apellido_paterno','Apellido_materno','telefono','direccion','fecha_nacimiento','email','drem','estado','tipo_persona'))
			elif filtro2=='am':
				consulta= list(Cliente.objects.filter(Apellido_materno__icontains=valor).values('pk','dni','nombre','Apellido_paterno','Apellido_materno','telefono','direccion','fecha_nacimiento','email','drem','estado','tipo_persona'))
			elif filtro2=='dni':
				consulta= list(Cliente.objects.filter(dni__icontains=valor).values('pk','dni','nombre','Apellido_paterno','Apellido_materno','telefono','direccion','fecha_nacimiento','email','drem','estado','tipo_persona'))
			else:
				data='fail'
			lista=[]
			for obj in consulta:
				dato={}
				dato['pk']=obj['pk']
				dato['dni']=obj['dni']
				dato['nom']=obj['nombre']
				dato['ap']=obj['Apellido_paterno']
				dato['am']=obj['Apellido_materno']
				dato['tel']=obj['telefono']
				dato['dir']= obj['direccion']
				dato['fn']=str(obj['fecha_nacimiento'])
				dato['email']=obj['email']
				dato['drem']=obj['drem']
				dato['estado']=obj['estado']
				dato['tp']=obj['tipo_persona']
				lista.append(dato)
			data= json.dumps(lista)
		else:
			data='fail'
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
def Transfe_Creadas_view(request):
	try:
		usr= request.user.username
		cargo =''
		C= Cajas.objects.get(id_usuario__usuario=usr)
		if C.id_usuario.pk == C.id_oficina.id_usuario.pk:
			cargo='administrador'
	except:
		cargo =''
	return render(request,'Transferecia.html',{"cargo":cargo} )

@login_required
def Transfe_bancos_Creadas_view(request):
	return render(request,'TransferenciasBancosCreados.html' )

#@login_required
#def Transfe_bancos_procesar_view(request):
#	return render(request,'TransferenciasBancosProcesar.html' )

@login_required
def Transfe_Recibidas_view(request):
	try:
		usr= request.user.username
		cargo =''
		C= Cajas.objects.get(id_usuario__usuario=usr)
		if C.id_usuario.pk == C.id_oficina.id_usuario.pk:
			cargo='administrador'
	except:
		cargo =''
	return render(request,'TransRecibidas.html',{"cargo":cargo} )

@login_required
def Transfe_Recibidas_alterna_view(request):
	try:
		usr= request.user.username
		cargo =''
		C= Cajas.objects.get(id_usuario__usuario=usr)
		if C.id_usuario.pk == C.id_oficina.id_usuario.pk:
			cargo='administrador'
	except:
		cargo =''
	return render(request,'TransRecibidasAlt.html',{"cargo":cargo} )

@login_required
def Transfe_Pagadas_view(request):
	try:
		usr= request.user.username
		cargo =''
		C= Cajas.objects.get(id_usuario__usuario=usr)
		if C.id_usuario.pk == C.id_oficina.id_usuario.pk:
			cargo='administrador'
	except:
		cargo =''
	return render(request,'TransPagadas.html',{"cargo":cargo} )

@login_required
def SaldoCaja_view(request):#este formulario sigue la misma logica
	usr=request.user.username
	try:
		usr= request.user.username
		cargo =''
		C= Cajas.objects.get(id_usuario__usuario=usr)
		if C.id_usuario.pk == C.id_oficina.id_usuario.pk:
			cargo='administrador'
	except:
		cargo =''
	return render(request,"SaldoCaja.html",{"resultado":usr,"cargo":cargo} )

@login_required
def ListadoRecepcionSaldo_view(request):#este formulario sigue la misma logica
	usr=request.user.username
	try:
		usr= request.user.username
		cargo =''
		C= Cajas.objects.get(id_usuario__usuario=usr)
		if C.id_usuario.pk == C.id_oficina.id_usuario.pk:
			cargo='administrador'
	except:
		cargo =''
	return render(request,"ListadoSaldoRecibido.html",{"cargo":cargo} )


@login_required
def ListadoHabilitacion_cajaAlt_view(request):#este formulario sigue la misma logica
	usr=request.user.username
	try:
		usr= request.user.username
		cargo =''
		C= Cajas.objects.get(id_usuario__usuario=usr)
		if C.id_usuario.pk == C.id_oficina.id_usuario.pk:
			cargo='administrador'
	except:
		cargo =''
	return render(request,"listadoHabiliAlt.html",{"cargo":cargo} )


@login_required
def listaTransfereciasTotal_ajax_view(request):#creados
	if request.is_ajax:
		pag=request.GET.get('pg','')
		filtro=request.GET.get('filtro','')
		F1=request.GET.get('F1','')
		F2=request.GET.get('F2','')
		if filtro=='h':
			F1= str(datetime.date.today())
			filtro= 'f'
		pg= 1
		if pag !='':
			pg= int(pag)
		desde= (pg-1)*20
		hasta= pg*20
		usr= request.user.username
		try:
			C = Cajas.objects.get(id_usuario__usuario=usr)
			horamin = None
			horamax = None
			if filtro =='f':
				if F1 !='':
					fecha= datetime.datetime.strptime(F1, '%Y-%m-%d')
					horamin= datetime.datetime.combine(fecha,datetime.time.min)
					horamax= datetime.datetime.combine(fecha,datetime.time.max)
					
			elif filtro=='ef':
				if F1 !='' and F2 !='':
					fecha1= datetime.datetime.strptime(F1, '%Y-%m-%d')
					fecha2= datetime.datetime.strptime(F2, '%Y-%m-%d')
					horamin= datetime.datetime.combine(fecha1,datetime.time.min)
					horamax= datetime.datetime.combine(fecha2,datetime.time.max)

			consulta1= list(SolicitudTransferencia.objects.filter(idCajaDebe__id_oficina=C.id_oficina.pk,idCajaDebe__id_caja=C.pk,idCajaDebe__fecha__range=(horamin,horamax)).order_by('-pk').values('pk','idCajaDebe','id_cliente','id_oficina','comision','nombre_beneficiado','Apellido_paterno_beneficiado','Apellido_materno_beneficiado','dni_beneficiado','observaciones','monto_conceptos','otros_conceptos','dniMenor','banco','tipo_operacion','nroCta','cel_referencia','nro_operacion','nro_giro','clave' ))
			#consulta1= list(TCajaDebe.objects.filter(id_oficina=C.id_oficina.pk,id_caja=C.pk,tablaRelacional='SolicitudTransferencia').order_by('-pk')[desde:hasta].values('pk','fecha','nroRecibo','estadoTransaccion','conceptoDetalle','id_personal','cantidadDinero','moneda','aux1'))
			lista=[]
			for obj in consulta1:
				#idCajaD= str(obj['pk'])
				#consulta2= list(SolicitudTransferencia.objects.filter(idCajaDebe=idCajaD).values('pk','id_cliente','id_oficina','comision','nombre_beneficiado','Apellido_paterno_beneficiado','Apellido_materno_beneficiado','dni_beneficiado','observaciones','monto_conceptos','otros_conceptos'))#cambiar por object.get
				debe= TCajaDebe.objects.get(pk=obj['idCajaDebe'])
				#idCli= str(consulta2[0]['id_cliente'])
				#consulta3=list(Cliente.objects.filter(pk=idCli).values('nombre','Apellido_paterno','Apellido_materno','dni'))
				#consulta4= list(Oficina.objects.filter(pk=str(consulta2[0]['id_oficina'])).values('nombre_oficina'))
				ofi=Oficina.objects.get(pk=obj['id_oficina'])
				cli=Cliente.objects.get(pk=obj['id_cliente'])
				cantidaEnvio= ConvertirDecimal(debe.cantidadDinero)-ConvertirDecimal(obj['comision']) -ConvertirDecimal(obj['monto_conceptos'])
				sq= PagoTransferencia.objects.filter(id_solicitud_transferencia=obj['pk'],idCajaHaber__id_caja=C.pk)
				sq2=PagoTransferencia.objects.filter(id_solicitud_transferencia=obj['pk'])
				dato={}	
				usuGlo=''
				if debe.conceptoDetalle[2] =='-':
					usuGlo= debe.conceptoDetalle.split('-')[2]

				if obj['dniMenor']==None:
					dato['dniMenor']='no'
				else:
					if str(obj['dniMenor']).strip()=='':
						dato['dniMenor']='no'
					else:
						dato['dniMenor']=obj['dniMenor']
				delta= datetime.datetime.today() - debe.fecha
				dato['dias']= delta.days
				dato['transEx']='no'
				if delta.days >1:
					dato['transEx']= 'si'
				dato['usuGlo']= usuGlo
				dato['fecha']=str(debe.fecha.strftime("%d-%m-%Y %H:%M"))
				dato['AutEx']=debe.aux1
				dato['nroRecibo']=debe.nroRecibo
				dato['estado']= debe.estadoTransaccion
				dato['obs_re']=''
				dato['id_personal']=debe.id_personal.nombre+' ' + debe.id_personal.Apellido_paterno
				dato['monto']=normalizar(cantidaEnvio)
				dato['moneda']= debe.moneda
				dato['id_trans']=str(obj['pk'])
				dato['oficina_ori']=''
				dato['oficina_des']= ofi.nombre_oficina
				if ST_BaseExterna.objects.filter(id_transferencia=obj['pk']).exists():
					stbe= ST_BaseExterna.objects.get(id_transferencia=obj['pk'])
					if stbe.id_base_ori!= None and stbe.id_base_ori!='':
						be1= Base_Ext.objects.get(pk=stbe.id_base_ori)
						dato['oficina_ori']= be1.nombre_base
					if stbe.id_base_des!= None and stbe.id_base_des!='':
						be2= Base_Ext.objects.get(pk=stbe.id_base_des)
						dato['oficina_des']= be2.nombre_base
				dato['comicion']= float(obj['comision'])
				dato['nombre_bnf']=obj['nombre_beneficiado']
				dato['dni_bnf']=obj['dni_beneficiado']
				dato['paterno_bnf']=obj['Apellido_paterno_beneficiado']
				dato['materno_bnf']= obj['Apellido_materno_beneficiado']
				dato['obs']=obj['observaciones']
				dato['nombre_rmt']=cli.nombre
				dato['paterno_rmt']=cli.Apellido_paterno
				dato['materno_rmt']=cli.Apellido_materno
				dato['dni_rmt']=cli.dni
				dato['monto_conceptos']= float(obj['monto_conceptos'])
				dato['otros_conceptos']= obj['otros_conceptos']
				dato['banco']= obj['banco']
				dato['tipo_operacion']= obj['tipo_operacion']
				dato['nroCta']= obj['nroCta']
				dato['cel_referencia']= obj['cel_referencia']
				dato['nro_operacion']= obj['nro_operacion']
				dato['nro_giro']= obj['nro_giro']
				dato['clave']= obj['clave']
				dato['pago_forzado']=''
				dato['fp']=''
				if sq.count()>0:
					dato['pago_forzado']= 'si'
				if sq2.count()>0:
					sqpt=PagoTransferencia.objects.get(id_solicitud_transferencia=obj['pk'])
					dato['fp']=str(sqpt.idCajaHaber.fecha.strftime("%d-%m-%Y %H:%M"))
				lista.append(dato)
			data= json.dumps(lista)
		except:
			data='fail'+ str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

#ultimas 3 transferencias creadas
@login_required
def listaUltimasTransCreadas_ajax_view(request):#creados
	if request.is_ajax:
		usr= request.user.username
		try:
			C = Cajas.objects.get(id_usuario__usuario=usr)
			consulta1= list(SolicitudTransferencia.objects.filter(idCajaDebe__id_caja=C.pk).order_by('-id')[:5].values('pk','idCajaDebe','id_cliente','id_oficina','comision','nombre_beneficiado','Apellido_paterno_beneficiado','Apellido_materno_beneficiado','dni_beneficiado','observaciones','monto_conceptos','otros_conceptos','banco'))
			lista=[]
			for obj in consulta1:
				cli=Cliente.objects.get(pk=obj['id_cliente'])
				Cdebe= TCajaDebe.objects.get(pk=obj['idCajaDebe'])
				of= Oficina.objects.get(pk=obj['id_oficina'])
				cantidaEnvio= ConvertirDecimal(str(Cdebe.cantidadDinero))-ConvertirDecimal(str(obj['comision'])) -ConvertirDecimal(obj['monto_conceptos'])
				dato={}	
				dato['fecha']=str(Cdebe.fecha.strftime("%d-%m-%Y %H:%M"))
				dato['nroRecibo']=Cdebe.nroRecibo
				dato['estado']= Cdebe.estadoTransaccion
				dato['id_personal']=Cdebe.id_personal.nombre +' '+ Cdebe.id_personal.Apellido_paterno +' '+ Cdebe.id_personal.Apellido_materno
				dato['monto']=normalizar(cantidaEnvio)
				dato['moneda']= str(Cdebe.moneda)
				dato['oficina_ori']=''
				dato['oficina_des']= of.nombre_oficina
				if ST_BaseExterna.objects.filter(id_transferencia=obj['pk']).exists():
					stbe= ST_BaseExterna.objects.get(id_transferencia=obj['pk'])
					if stbe.id_base_ori!= None and stbe.id_base_ori!='':
						be1= Base_Ext.objects.get(pk=stbe.id_base_ori)
						dato['oficina_ori']= be1.nombre_base
					if stbe.id_base_des!= None and stbe.id_base_des!='':
						be2= Base_Ext.objects.get(pk=stbe.id_base_des)
						dato['oficina_des']= be2.nombre_base
				dato['comicion']= str(obj['comision'])
				dato['nombre_bnf']=obj['nombre_beneficiado']
				dato['dni_bnf']=obj['dni_beneficiado']
				dato['paterno_bnf']=obj['Apellido_paterno_beneficiado']
				dato['materno_bnf']= obj['Apellido_materno_beneficiado']
				dato['obs']=obj['observaciones']
				dato['nombre_rmt']=cli.nombre
				dato['paterno_rmt']=cli.Apellido_paterno
				dato['materno_rmt']=cli.Apellido_materno
				dato['dni_rmt']=cli.dni
				dato['monto_conceptos']= str(obj['monto_conceptos'])
				dato['otros_conceptos']= obj['otros_conceptos']
				dato['banco']= obj['banco']
				lista.append(dato)
			data= json.dumps(lista)
		except:
			data='fail'+ str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)


@login_required
def listaUltimasTransBancoCreadas_ajax_view(request):#creados
	if request.is_ajax:
		usr= request.user.username
		try:
			C = Cajas.objects.get(id_usuario__usuario=usr)
			consulta1= list(SolicitudTransferenciaBancoa.objects.filter(idCajaDebe__id_caja=C.pk).order_by('-id')[:5].values('pk','idCajaDebe','id_cliente','comision','monto','nombre_beneficiado','paterno_beneficiado','materno_beneficiado','dni_beneficiado','observaciones','monto_conceptos','otros_conceptos','banco','nroCta'))
			lista=[]
			for obj in consulta1:
				cli=Cliente.objects.get(pk=obj['id_cliente'])
				Cdebe= TCajaDebe.objects.get(pk=obj['idCajaDebe'])
				#cantidaEnvio= ConvertirDecimal(str(Cdebe.cantidadDinero))-ConvertirDecimal(str(obj['comision'])) -ConvertirDecimal(obj['monto_conceptos'])
				dato={}	
				dato['fecha']=str(Cdebe.fecha.strftime("%d-%m-%Y %H:%M"))
				dato['nroRecibo']=Cdebe.nroRecibo
				dato['estado']= Cdebe.estadoTransaccion
				dato['id_personal']=Cdebe.id_personal.nombre +' '+ Cdebe.id_personal.Apellido_paterno +' '+ Cdebe.id_personal.Apellido_materno
				dato['monto']=normalizar(obj['monto'])
				dato['moneda']= str(Cdebe.moneda)
				
				dato['comicion']= str(obj['comision'])
				dato['nombre_bnf']=obj['nombre_beneficiado']
				dato['dni_bnf']=obj['dni_beneficiado']
				dato['paterno_bnf']=obj['paterno_beneficiado']
				dato['materno_bnf']= obj['materno_beneficiado']
				dato['obs']=obj['observaciones']
				dato['nombre_rmt']=cli.nombre
				dato['paterno_rmt']=cli.Apellido_paterno
				dato['materno_rmt']=cli.Apellido_materno
				dato['dni_rmt']=cli.dni
				dato['monto_conceptos']= str(obj['monto_conceptos'])
				dato['otros_conceptos']= obj['otros_conceptos']
				dato['banco']= obj['banco']
				dato['nroCta']= obj['nroCta']
				lista.append(dato)
			data= json.dumps(lista)
		except:
			data='fail'+ str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
def listaTransfereciasBancosTotal_ajax_view(request):#creados
	if request.is_ajax:
		pag=request.GET.get('pg','')
		filtro=request.GET.get('filtro','')
		F1=request.GET.get('F1','')
		F2=request.GET.get('F2','')
		if filtro=='h':
			F1= str(datetime.date.today())
			filtro= 'f'
		pg= 1
		if pag !='':
			pg= int(pag)
		desde= (pg-1)*20
		hasta= pg*20
		usr= request.user.username
		try:
			C = Cajas.objects.get(id_usuario__usuario=usr)
			horamin = None
			horamax = None
			if filtro =='f':
				if F1 !='':
					fecha= datetime.datetime.strptime(F1, '%Y-%m-%d')
					horamin= datetime.datetime.combine(fecha,datetime.time.min)
					horamax= datetime.datetime.combine(fecha,datetime.time.max)
					
			elif filtro=='ef':
				if F1 !='' and F2 !='':
					fecha1= datetime.datetime.strptime(F1, '%Y-%m-%d')
					fecha2= datetime.datetime.strptime(F2, '%Y-%m-%d')
					horamin= datetime.datetime.combine(fecha1,datetime.time.min)
					horamax= datetime.datetime.combine(fecha2,datetime.time.max)

			consulta1= list(SolicitudTransferenciaBancoa.objects.filter(idCajaDebe__id_oficina=C.id_oficina.pk,idCajaDebe__id_caja=C.pk,idCajaDebe__fecha__range=(horamin,horamax)).order_by('-pk').values('pk','idCajaDebe','id_cliente','comision','monto','nombre_beneficiado','paterno_beneficiado','materno_beneficiado','dni_beneficiado','id_beneficiario','observaciones','monto_conceptos','otros_conceptos','banco','tipo_operacion','nroCta','cel_referencia','nro_operacion','nro_giro','clave','es_privado' ,'estado_transferencia','id_banco','id_operacion'))
			#consulta1= list(TCajaDebe.objects.filter(id_oficina=C.id_oficina.pk,id_caja=C.pk,tablaRelacional='SolicitudTransferencia').order_by('-pk')[desde:hasta].values('pk','fecha','nroRecibo','estadoTransaccion','conceptoDetalle','id_personal','cantidadDinero','moneda','aux1'))
			lista=[]
			for obj in consulta1:
				debe= TCajaDebe.objects.get(pk=obj['idCajaDebe'])
				cli=Cliente.objects.get(pk=obj['id_cliente'])
				sq2=TransferenciaBancoProcesado.objects.filter(id_solicitud_transferencia=obj['pk'])
				dato={}	
				usuGlo=''
				if debe.conceptoDetalle[2] =='-':
					usuGlo= debe.conceptoDetalle.split('-')[2]

				delta= datetime.datetime.today() - debe.fecha
				dato['dias']= delta.days
				dato['transEx']='no'
				if delta.days >1:
					dato['transEx']= 'si'
				dato['usuGlo']= usuGlo
				dato['fecha']=str(debe.fecha.strftime("%d-%m-%Y %H:%M"))
				dato['AutEx']=debe.aux1
				dato['nroRecibo']=debe.nroRecibo
				dato['estado']= debe.estadoTransaccion
				dato['obs_re']=''
				dato['id_personal']=debe.id_personal.nombre+' ' + debe.id_personal.Apellido_paterno
				dato['monto']=normalizar(obj['monto'])
				dato['moneda']= debe.moneda
				dato['id_trans']=str(obj['pk'])
				
				dato['comicion']= float(obj['comision'])
				dato['nombre_bnf']=obj['nombre_beneficiado']
				dato['dni_bnf']=obj['dni_beneficiado']
				dato['paterno_bnf']=obj['paterno_beneficiado']
				dato['materno_bnf']= obj['materno_beneficiado']
				dato['obs']=obj['observaciones']
				dato['nombre_rmt']=cli.nombre
				dato['paterno_rmt']=cli.Apellido_paterno
				dato['materno_rmt']=cli.Apellido_materno
				dato['dni_rmt']=cli.dni
				dato['monto_conceptos']= float(obj['monto_conceptos'])
				dato['otros_conceptos']= obj['otros_conceptos']
				dato['banco']= obj['banco']
				dato['id_banco']= obj['id_banco']
				dato['tipo_operacion']= obj['tipo_operacion']
				dato['nroCta']= obj['nroCta']
				dato['cel_referencia']= obj['cel_referencia']
				dato['nro_operacion']= obj['nro_operacion']
				dato['nro_giro']= obj['nro_giro']
				dato['clave']= obj['clave']
				dato['estado_trans']= obj['estado_transferencia']
				dato['fp']=''
				if sq2.count()>0:
					sqpt=TransferenciaBancoProcesado.objects.get(id_solicitud_transferencia=obj['pk'])
					dato['fp']=str(sqpt.fecha.strftime("%d-%m-%Y %H:%M"))
				dato['operacion']=''
				if obj['id_operacion']>0:
					ope = Operacion_agente.objects.get(pk=obj['id_operacion'])
					dato['operacion'] = ope.operacion
				lista.append(dato)
			data= json.dumps(lista)
		except:
			data='fail'+ str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
def listaTransfereciasBancosTotal_procesar_ajax_view(request):#creados
	if request.is_ajax:
		pag=request.GET.get('pg','')
		filtro=request.GET.get('filtro','')
		F1=request.GET.get('F1','')
		F2=request.GET.get('F2','')
		if filtro=='h':
			F1= str(datetime.date.today())
			filtro= 'f'
		pg= 1
		if pag !='':
			pg= int(pag)
		desde= (pg-1)*20
		hasta= pg*20
		usr= request.user.username
		try:
			C = Cajas.objects.get(id_usuario__usuario=usr)
			procesa_st = ConfiguracionExtra_caja.objects.filter(id_caja = C.pk, procesa_agente='si').exists()
			horamin = None
			horamax = None
			if filtro =='f':
				if F1 !='':
					fecha= datetime.datetime.strptime(F1, '%Y-%m-%d')
					horamin= datetime.datetime.combine(fecha,datetime.time.min)
					horamax= datetime.datetime.combine(fecha,datetime.time.max)
					
			elif filtro=='ef':
				if F1 !='' and F2 !='':
					fecha1= datetime.datetime.strptime(F1, '%Y-%m-%d')
					fecha2= datetime.datetime.strptime(F2, '%Y-%m-%d')
					horamin= datetime.datetime.combine(fecha1,datetime.time.min)
					horamax= datetime.datetime.combine(fecha2,datetime.time.max)
			if C.id_oficina.categoria_oficina != "central" and not procesa_st:
				consulta1= list(SolicitudTransferenciaBancoa.objects.filter(idCajaDebe__id_caja=C.pk,idCajaDebe__fecha__range=(horamin,horamax)).order_by('-pk').values('pk','idCajaDebe','id_cliente','comision','monto','nombre_beneficiado','paterno_beneficiado','materno_beneficiado','dni_beneficiado','id_beneficiario','observaciones','monto_conceptos','otros_conceptos','banco','tipo_operacion','nroCta','cel_referencia','nro_operacion','nro_giro','clave','es_privado' ,'estado_transferencia','id_banco','id_operacion'))
			else:
				consulta1= list(SolicitudTransferenciaBancoa.objects.filter(idCajaDebe__fecha__range=(horamin,horamax)).order_by('-pk').values('pk','idCajaDebe','id_cliente','comision','monto','nombre_beneficiado','paterno_beneficiado','materno_beneficiado','dni_beneficiado','id_beneficiario','observaciones','monto_conceptos','otros_conceptos','banco','tipo_operacion','nroCta','cel_referencia','nro_operacion','nro_giro','clave','es_privado' ,'estado_transferencia','id_banco','id_operacion'))
			lista=[]
			for obj in consulta1:
				debe= TCajaDebe.objects.get(pk=obj['idCajaDebe'])
				cli=Cliente.objects.get(pk=obj['id_cliente'])
				sq2=TransferenciaBancoProcesado.objects.filter(id_solicitud_transferencia=obj['pk'])
				dato={}	
				usuGlo=''
				if debe.conceptoDetalle[2] =='-':
					usuGlo= debe.conceptoDetalle.split('-')[2]

				delta= datetime.datetime.today() - debe.fecha
				dato['dias']= delta.days
				dato['transEx']='no'
				if delta.days >1:
					dato['transEx']= 'si'
				dato['usuGlo']= usuGlo
				dato['fecha']=str(debe.fecha.strftime("%d-%m-%Y %H:%M"))
				dato['AutEx']=debe.aux1
				dato['nroRecibo']=debe.nroRecibo
				dato['estado']= debe.estadoTransaccion
				dato['obs_re']=''
				dato['id_personal']=debe.id_personal.nombre+' ' + debe.id_personal.Apellido_paterno
				dato['monto']=normalizar(obj['monto'])
				dato['moneda']= debe.moneda
				dato['id_trans']=str(obj['pk'])
				
				dato['comicion']= float(obj['comision'])
				dato['nombre_bnf']=obj['nombre_beneficiado']
				dato['dni_bnf']=obj['dni_beneficiado']
				dato['paterno_bnf']=obj['paterno_beneficiado']
				dato['materno_bnf']= obj['materno_beneficiado']
				dato['obs']=obj['observaciones']
				dato['nombre_rmt']=cli.nombre
				dato['paterno_rmt']=cli.Apellido_paterno
				dato['materno_rmt']=cli.Apellido_materno
				dato['dni_rmt']=cli.dni
				dato['monto_conceptos']= float(obj['monto_conceptos'])
				dato['otros_conceptos']= obj['otros_conceptos']
				dato['banco']= obj['banco']
				dato['id_banco']= obj['id_banco']
				dato['tipo_operacion']= obj['tipo_operacion']
				dato['nroCta']= obj['nroCta']
				dato['cel_referencia']= obj['cel_referencia']
				dato['nro_operacion']= obj['nro_operacion']
				dato['nro_giro']= obj['nro_giro']
				dato['clave']= obj['clave']
				dato['estado_trans']= obj['estado_transferencia']
				dato['fp']=''
				if sq2.count()>0:
					sqpt=TransferenciaBancoProcesado.objects.get(id_solicitud_transferencia=obj['pk'])
					dato['fp']=str(sqpt.fecha.strftime("%d-%m-%Y %H:%M"))
				dato['operacion']=''
				if obj['id_operacion']>0:
					ope = Operacion_agente.objects.get(pk=obj['id_operacion'])
					dato['operacion'] = ope.operacion
				lista.append(dato)
			data= json.dumps(lista)
		except:
			data='fail'+ str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
def listaTransfereciasTotal_filtro_ajax_view(request):#creados
	if request.is_ajax:
		valor=request.GET.get('filtro')
		pag=request.GET.get('pg','')
		pg= 1
		if pag !='':
			pg= int(pag)
		desde= (pg-1)*20
		hasta= pg*20
		usr= request.user.username
		try:
			C = Cajas.objects.get(id_usuario__usuario=usr)
			fil= QuitarEspacios(valor).split(' ')
			no=fil[0]
			am=''
			ap=''
			if len(fil)>1:
				ap=fil[1]
				if len(fil)>2:
					am=fil[2]
			consulta1= list(SolicitudTransferencia.objects.filter(Q(idCajaDebe__id_oficina=C.id_oficina.pk,idCajaDebe__id_caja=C.pk,nombre_beneficiado__icontains=no,Apellido_paterno_beneficiado__icontains=ap,Apellido_materno_beneficiado__icontains=am) | Q(idCajaDebe__id_oficina=C.id_oficina.pk,idCajaDebe__id_caja=C.pk,id_cliente__nombre__icontains=no,id_cliente__Apellido_paterno__icontains=ap,id_cliente__Apellido_materno__icontains=am)|Q(idCajaDebe__id_oficina=C.id_oficina.pk,id_oficina__nombre_oficina__icontains=valor)| Q(idCajaDebe__id_oficina=C.id_oficina.pk,id_oficina__ciudad__icontains=valor)).order_by('-pk').values('pk','idCajaDebe','id_cliente','id_oficina','comision','nombre_beneficiado','Apellido_paterno_beneficiado','Apellido_materno_beneficiado','dni_beneficiado','observaciones','monto_conceptos','otros_conceptos','dniMenor','banco' ,'tipo_operacion','nroCta','cel_referencia','nro_operacion','nro_giro','clave'))
			lista=[]
			for obj in consulta1:
				Debe= TCajaDebe.objects.get(pk=obj['idCajaDebe'])
				consulta3=Cliente.objects.get(pk=obj['id_cliente'])
				consulta4= Oficina.objects.get(pk=obj['id_oficina'])
				cantidaEnvio= ConvertirDecimal(Debe.cantidadDinero)-ConvertirDecimal(str(obj['comision'])) -ConvertirDecimal(obj['monto_conceptos'])
				sq= PagoTransferencia.objects.filter(id_solicitud_transferencia=str(obj['pk']),idCajaHaber__id_caja=C.pk)
				sq2=PagoTransferencia.objects.filter(id_solicitud_transferencia=str(obj['pk']))
				dato={}	
				usuGlo=''
				if Debe.conceptoDetalle[2] =='-':
					usuGlo= Debe.conceptoDetalle.split('-')[2]

				if obj['dniMenor']==None:
					dato['dniMenor']='no'
				else:
					if str(obj['dniMenor']).strip()=='':
						dato['dniMenor']='no'
					else:
						dato['dniMenor']=obj['dniMenor']
				delta= datetime.datetime.today() - Debe.fecha
				dato['dias']= delta.days
				dato['transEx']='no'
				if delta.days >1:
					dato['transEx']= 'si'
				dato['usuGlo']= usuGlo
				dato['fecha']=str(Debe.fecha.strftime("%d-%m-%Y %H:%M"))
				dato['AutEx']=Debe.aux1
				dato['nroRecibo']=Debe.nroRecibo
				dato['estado']= Debe.estadoTransaccion
				dato['obs_re']=''
				dato['recha']=''
				dato['id_personal']=Debe.id_personal.nombre +' '+Debe.id_personal.Apellido_paterno +' '+Debe.id_personal.Apellido_materno
				dato['monto']=normalizar(cantidaEnvio)
				dato['moneda']= str(Debe.moneda)
				dato['id_trans']=str(obj['pk'])
				dato['oficina_ori']=''
				dato['oficina_des']= consulta4.nombre_oficina
				if ST_BaseExterna.objects.filter(id_transferencia=obj['pk']).exists():
					stbe= ST_BaseExterna.objects.get(id_transferencia=obj['pk'])
					if stbe.id_base_ori!= None and stbe.id_base_ori!='':
						be1= Base_Ext.objects.get(pk=stbe.id_base_ori)
						dato['oficina_ori']= be1.nombre_base
					if stbe.id_base_des!= None and stbe.id_base_des!='':
						be2= Base_Ext.objects.get(pk=stbe.id_base_des)
						dato['oficina_des']= be2.nombre_base
				dato['comicion']= str(obj['comision'])
				dato['nombre_bnf']=obj['nombre_beneficiado']
				dato['dni_bnf']=obj['dni_beneficiado']
				dato['paterno_bnf']=obj['Apellido_paterno_beneficiado']
				dato['materno_bnf']= obj['Apellido_materno_beneficiado']
				dato['obs']=obj['observaciones']
				dato['nombre_rmt']=consulta3.nombre
				dato['paterno_rmt']=consulta3.Apellido_paterno
				dato['materno_rmt']=consulta3.Apellido_materno
				dato['dni_rmt']=consulta3.dni
				dato['monto_conceptos']= str(obj['monto_conceptos'])
				dato['otros_conceptos']= obj['otros_conceptos']
				dato['banco']= obj['banco']
				dato['nroCta']= obj['nroCta']
				dato['tipo_operacion']= obj['tipo_operacion']
				dato['cel_referencia']= obj['cel_referencia']
				dato['nro_operacion']= obj['nro_operacion']
				dato['nro_giro']= obj['nro_giro']
				dato['clave']= obj['clave']
				dato['pago_forzado']=''
				dato['fp']=''
				if sq.count()>0:
					dato['pago_forzado']= 'si'
				if sq2.count()>0:
					sqpt=PagoTransferencia.objects.get(id_solicitud_transferencia=str(obj['pk']))
					dato['fp']=str(sqpt.idCajaHaber.fecha.strftime("%d-%m-%Y %H:%M"))
				lista.append(dato)
			data= json.dumps(lista)
		except:
			data='fail'+ str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
def listaTransfereciasTotal_bancos_filtro_ajax_view(request):#creados
	if request.is_ajax:
		valor=request.GET.get('filtro')
		pag=request.GET.get('pg','')
		pg= 1
		if pag !='':
			pg= int(pag)
		desde= (pg-1)*20
		hasta= pg*20
		usr= request.user.username
		try:
			C = Cajas.objects.get(id_usuario__usuario=usr)
			fil= QuitarEspacios(valor).split(' ')
			no=fil[0]
			am=''
			ap=''
			if len(fil)>1:
				ap=fil[1]
				if len(fil)>2:
					am=fil[2]
			consulta1= list(SolicitudTransferenciaBancoa.objects.filter(Q(idCajaDebe__id_oficina=C.id_oficina.pk,idCajaDebe__id_caja=C.pk,nombre_beneficiado__icontains=no,paterno_beneficiado__icontains=ap,materno_beneficiado__icontains=am) | Q(idCajaDebe__id_oficina=C.id_oficina.pk,idCajaDebe__id_caja=C.pk,id_cliente__nombre__icontains=no,id_cliente__Apellido_paterno__icontains=ap,id_cliente__Apellido_materno__icontains=am)).order_by('-pk').values('pk','idCajaDebe','id_cliente','comision','monto','nombre_beneficiado','paterno_beneficiado','materno_beneficiado','dni_beneficiado','id_beneficiario','observaciones','monto_conceptos','otros_conceptos','banco','tipo_operacion','nroCta','cel_referencia','nro_operacion','nro_giro','clave','es_privado' ,'estado_transferencia','id_banco','id_operacion'))
			lista=[]
			for obj in consulta1:
				debe= TCajaDebe.objects.get(pk=obj['idCajaDebe'])
				cli=Cliente.objects.get(pk=obj['id_cliente'])
		
				sq2=TransferenciaBancoProcesado.objects.filter(id_solicitud_transferencia=obj['pk'])
				dato={}
				usuGlo=''
				if debe.conceptoDetalle[2] =='-':
					usuGlo= debe.conceptoDetalle.split('-')[2]

				delta= datetime.datetime.today() - debe.fecha
				dato['dias']= delta.days
				dato['transEx']='no'
				if delta.days >1:
					dato['transEx']= 'si'
				dato['usuGlo']= usuGlo
				dato['fecha']=str(debe.fecha.strftime("%d-%m-%Y %H:%M"))
				dato['AutEx']=debe.aux1
				dato['nroRecibo']=debe.nroRecibo
				dato['estado']= debe.estadoTransaccion
				dato['obs_re']=''
				dato['id_personal']=debe.id_personal.nombre+' ' + debe.id_personal.Apellido_paterno
				dato['monto']=normalizar(obj['monto'])
				dato['moneda']= debe.moneda
				dato['id_trans']=str(obj['pk'])
				
				dato['comicion']= float(obj['comision'])
				dato['nombre_bnf']=obj['nombre_beneficiado']
				dato['dni_bnf']=obj['dni_beneficiado']
				dato['paterno_bnf']=obj['paterno_beneficiado']
				dato['materno_bnf']= obj['materno_beneficiado']
				dato['obs']=obj['observaciones']
				dato['nombre_rmt']=cli.nombre
				dato['paterno_rmt']=cli.Apellido_paterno
				dato['materno_rmt']=cli.Apellido_materno
				dato['dni_rmt']=cli.dni
				dato['monto_conceptos']= float(obj['monto_conceptos'])
				dato['otros_conceptos']= obj['otros_conceptos']
				dato['banco']= obj['banco']
				dato['id_banco']= obj['id_banco']
				dato['tipo_operacion']= obj['tipo_operacion']
				dato['nroCta']= obj['nroCta']
				dato['cel_referencia']= obj['cel_referencia']
				dato['nro_operacion']= obj['nro_operacion']
				dato['nro_giro']= obj['nro_giro']
				dato['clave']= obj['clave']
				dato['estado_trans']= obj['estado_transferencia']
				dato['fp']=''
				if sq2.count()>0:
					sqpt=TransferenciaBancoProcesado.objects.get(id_solicitud_transferencia=obj['pk'])
					dato['fp']=str(sqpt.fecha.strftime("%d-%m-%Y %H:%M"))
				dato['operacion']=''
				if obj['id_operacion']>0:
					ope = Operacion_agente.objects.get(pk=obj['id_operacion'])
					dato['operacion'] = ope.operacion
				lista.append(dato)
			data= json.dumps(lista)
		except:
			data='fail'+ str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
def listaTransfereciasTotal_bancos_procesar_filtro_ajax_view(request):#creados
	if request.is_ajax:
		valor=request.GET.get('filtro')
		pag=request.GET.get('pg','')
		pg= 1
		if pag !='':
			pg= int(pag)
		desde= (pg-1)*20
		hasta= pg*20
		usr= request.user.username
		try:
			C = Cajas.objects.get(id_usuario__usuario=usr)
			procesa_st = ConfiguracionExtra_caja.objects.filter(id_caja = C.pk, procesa_agente='si').exists()
			fil= QuitarEspacios(valor).split(' ')
			no=fil[0]
			am=''
			ap=''
			if len(fil)>1:
				ap=fil[1]
				if len(fil)>2:
					am=fil[2]
			if C.id_oficina.categoria_oficina != "central" and not procesa_st:
				consulta1= list(SolicitudTransferenciaBancoa.objects.filter(Q(idCajaDebe__id_caja=C.pk,nombre_beneficiado__icontains=no,paterno_beneficiado__icontains=ap,materno_beneficiado__icontains=am) | Q(idCajaDebe__id_caja=C.pk,id_cliente__nombre__icontains=no,id_cliente__Apellido_paterno__icontains=ap,id_cliente__Apellido_materno__icontains=am)).order_by('-pk').values('pk','idCajaDebe','id_cliente','comision','monto','nombre_beneficiado','paterno_beneficiado','materno_beneficiado','dni_beneficiado','id_beneficiario','observaciones','monto_conceptos','otros_conceptos','banco','tipo_operacion','nroCta','cel_referencia','nro_operacion','nro_giro','clave','es_privado' ,'estado_transferencia','id_banco','id_operacion'))
			else:
				consulta1= list(SolicitudTransferenciaBancoa.objects.filter(Q(nombre_beneficiado__icontains=no,paterno_beneficiado__icontains=ap,materno_beneficiado__icontains=am) | Q(id_cliente__nombre__icontains=no,id_cliente__Apellido_paterno__icontains=ap,id_cliente__Apellido_materno__icontains=am)).order_by('-pk').values('pk','idCajaDebe','id_cliente','comision','monto','nombre_beneficiado','paterno_beneficiado','materno_beneficiado','dni_beneficiado','id_beneficiario','observaciones','monto_conceptos','otros_conceptos','banco','tipo_operacion','nroCta','cel_referencia','nro_operacion','nro_giro','clave','es_privado' ,'estado_transferencia','id_banco','id_operacion'))
			lista=[]
			for obj in consulta1:
				debe= TCajaDebe.objects.get(pk=obj['idCajaDebe'])
				cli=Cliente.objects.get(pk=obj['id_cliente'])
		
				sq2=TransferenciaBancoProcesado.objects.filter(id_solicitud_transferencia=obj['pk'])
				dato={}
				usuGlo=''
				if debe.conceptoDetalle[2] =='-':
					usuGlo= debe.conceptoDetalle.split('-')[2]

				delta= datetime.datetime.today() - debe.fecha
				dato['dias']= delta.days
				dato['transEx']='no'
				if delta.days >1:
					dato['transEx']= 'si'
				dato['usuGlo']= usuGlo
				dato['fecha']=str(debe.fecha.strftime("%d-%m-%Y %H:%M"))
				dato['AutEx']=debe.aux1
				dato['nroRecibo']=debe.nroRecibo
				dato['estado']= debe.estadoTransaccion
				dato['obs_re']=''
				dato['id_personal']=debe.id_personal.nombre+' ' + debe.id_personal.Apellido_paterno
				dato['monto']=normalizar(obj['monto'])
				dato['moneda']= debe.moneda
				dato['id_trans']=str(obj['pk'])
				
				dato['comicion']= float(obj['comision'])
				dato['nombre_bnf']=obj['nombre_beneficiado']
				dato['dni_bnf']=obj['dni_beneficiado']
				dato['paterno_bnf']=obj['paterno_beneficiado']
				dato['materno_bnf']= obj['materno_beneficiado']
				dato['obs']=obj['observaciones']
				dato['nombre_rmt']=cli.nombre
				dato['paterno_rmt']=cli.Apellido_paterno
				dato['materno_rmt']=cli.Apellido_materno
				dato['dni_rmt']=cli.dni
				dato['monto_conceptos']= float(obj['monto_conceptos'])
				dato['otros_conceptos']= obj['otros_conceptos']
				dato['banco']= obj['banco']
				dato['id_banco']= obj['id_banco']
				dato['tipo_operacion']= obj['tipo_operacion']
				dato['nroCta']= obj['nroCta']
				dato['cel_referencia']= obj['cel_referencia']
				dato['nro_operacion']= obj['nro_operacion']
				dato['nro_giro']= obj['nro_giro']
				dato['clave']= obj['clave']
				dato['estado_trans']= obj['estado_transferencia']
				dato['fp']=''
				if sq2.count()>0:
					sqpt=TransferenciaBancoProcesado.objects.get(id_solicitud_transferencia=obj['pk'])
					dato['fp']=str(sqpt.fecha.strftime("%d-%m-%Y %H:%M"))
				dato['operacion']=''
				if obj['id_operacion']>0:
					ope = Operacion_agente.objects.get(pk=obj['id_operacion'])
					dato['operacion'] = ope.operacion
				lista.append(dato)
			data= json.dumps(lista)
		except:
			data='fail'+ str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)



@login_required
def listaTrans_paraDivision_envio_pagador_ajax_view(request):#creados
	if request.is_ajax:
		usr= request.user.username
		idO=request.GET.get('pk')
		lista=[]
		try:
			#C = Cajas.objects.get(id_usuario__usuario=usr)
			consulta1= list(SolicitudTransferencia.objects.filter(id_oficina=idO).exclude(idCajaDebe__observaciones2="pagado").values('pk','idCajaDebe','id_cliente','id_oficina','comision','nombre_beneficiado','Apellido_paterno_beneficiado','Apellido_materno_beneficiado','dni_beneficiado','observaciones','monto_conceptos','otros_conceptos'))
			for obj in consulta1:
				dato={}
				idCajaD= str(obj['idCajaDebe'])
				CajaDebe= TCajaDebe.objects.get(pk=idCajaD)
				idCli= str(obj['id_cliente'])
				idSt= str(obj['pk'])
				sq= PagoTransferencia.objects.filter(id_solicitud_transferencia=idSt,idCajaHaber__id_oficina=idO)
				consulta3=list(Cliente.objects.filter(pk=idCli).values('nombre','Apellido_paterno','Apellido_materno','dni'))
				cantidaEnvio= ConvertirDecimal(str(CajaDebe.cantidadDinero))-ConvertirDecimal(str(obj['comision']))-ConvertirDecimal(str(obj['monto_conceptos']))
				dato['fecha']=str(CajaDebe.fecha.strftime("%d-%m-%Y %H:%M"))
				dato['nroRecibo']=CajaDebe.nroRecibo
				dato['estado']= CajaDebe.estadoTransaccion
				dato['monto']=normalizar(cantidaEnvio)
				dato['id_trans']=obj['pk']
				dato['oficina_ori']= CajaDebe.id_oficina.nombre_oficina
				dato['comicion']= obj['comision']
				dato['moneda']= CajaDebe.moneda
				dato['nombre_bnf']=obj['nombre_beneficiado']
				dato['paterno_bnf']=obj['Apellido_paterno_beneficiado']
				dato['materno_bnf']= obj['Apellido_materno_beneficiado']
				dato['dni_bnf']=obj['dni_beneficiado']
				dato['obs']=obj['observaciones']
				dato['nombre_rmt']=consulta3[0]['nombre']
				dato['paterno_rmt']=consulta3[0]['Apellido_paterno']
				dato['materno_rmt']=consulta3[0]['Apellido_materno']
				dato['dni_rmt']=consulta3[0]['dni']
				dato['monto_conceptos']= obj['monto_conceptos']
				dato['otros_conceptos']= obj['otros_conceptos']
				dato['pago_forzado']= ''
				if sq.count() ==0:
					dato['pago_forzado']= 'si'
				lista.append(dato)
			data= json.dumps(lista)
		except:
			data='fail'
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)


@login_required
def listaTransfereciasRecibidas_ajax_view(request):
	if request.is_ajax:
		usr= request.user.username
		pag=request.GET.get('pg','')
		pg= 1
		if pag !='':
			pg= int(pag)
		desde= (pg-1)*20
		hasta= pg*20
		usr= request.user.username
		try:
			lista=[]
			C = Cajas.objects.get(id_usuario__usuario=usr)
			consulta1= list(SolicitudTransferencia.objects.filter(id_oficina=C.id_oficina.pk).order_by('-pk')[desde:hasta].values('pk','idCajaDebe','id_cliente','id_oficina','comision','nombre_beneficiado','Apellido_paterno_beneficiado','Apellido_materno_beneficiado','dni_beneficiado','observaciones','monto_conceptos','otros_conceptos','dniMenor','nroCta','banco'))
			aut_ret=True
			if conf_permisos_Cajas.objects.filter(id_caja=C.pk).exists():
				rta= conf_permisos_Cajas.objects.get(id_caja=C.pk)
				if rta.aux2 !='si':
					aut_ret= False
			for obj in consulta1:
				dato={}
				idCajaD= str(obj['idCajaDebe'])
				CajaDebe= TCajaDebe.objects.get(pk=idCajaD)
				dtd=CajaDebe.aux1
				comi=0
				if esReal(dtd)>0:
					comi=esReal(dtd)
				else:
					comi=obj['comision']
				idCli= str(obj['id_cliente'])
				idSt= str(obj['pk'])
				sq= PagoTransferencia.objects.filter(id_solicitud_transferencia=idSt,idCajaHaber__id_caja=C.pk)
				consulta3=Cliente.objects.get(pk=idCli)
				cantidaEnvio= ConvertirDecimal(str(CajaDebe.cantidadDinero))-ConvertirDecimal(str(obj['comision']))-ConvertirDecimal(str(obj['monto_conceptos']))
				delta= datetime.datetime.today() - CajaDebe.fecha
				dato['dias']= delta.days
				dato['transEx']= 'no'
				if delta.days >=5 and aut_ret:
					dato['transEx']= 'si'
				dato['fecha']=str(CajaDebe.fecha.strftime("%d-%m-%Y %H:%M"))
				dato['nroRecibo']=CajaDebe.nroRecibo
				dato['estado']= CajaDebe.estadoTransaccion
				dato['monto']=normalizar(cantidaEnvio)
				dato['id_trans']=obj['pk']
				dato['oficina_des']=''
				dato['oficina_ori']= CajaDebe.id_oficina.nombre_oficina
				if ST_BaseExterna.objects.filter(id_transferencia=obj['pk']).exists():
					stbe= ST_BaseExterna.objects.get(id_transferencia=obj['pk'])
					if stbe.id_base_ori!= None and stbe.id_base_ori!='':
						be1= Base_Ext.objects.get(pk=stbe.id_base_ori)
						dato['oficina_ori']= be1.nombre_base
					if stbe.id_base_des!= None and stbe.id_base_des!='':
						be2= Base_Ext.objects.get(pk=stbe.id_base_des)
						dato['oficina_des']= be2.nombre_base
				dato['op_emisor']= CajaDebe.id_personal.nombre +' '+CajaDebe.id_personal.Apellido_paterno +' '+CajaDebe.id_personal.Apellido_materno
				dato['comicion']= str(comi)
				dato['moneda']= CajaDebe.moneda
				dato['nombre_bnf']=obj['nombre_beneficiado']
				dato['paterno_bnf']=obj['Apellido_paterno_beneficiado']
				dato['materno_bnf']= obj['Apellido_materno_beneficiado']
				dato['dni_bnf']=obj['dni_beneficiado']
				dato['obs']=obj['observaciones']
				if obj['dniMenor']!=None and obj['dniMenor']!='':
					dato['dniMenor']=obj['dniMenor']
				else:
					dato['dniMenor']='no'

				if obj['nroCta']!=None:
					if str(obj['nroCta']).strip()!='':
						dato['nroCta']=str(obj['nroCta']).strip()
					else:
						dato['nroCta']=str(-1)
				else:
					dato['nroCta']=str(-1)	
				dato['nombre_rmt']=consulta3.nombre
				dato['paterno_rmt']=consulta3.Apellido_paterno
				dato['materno_rmt']=consulta3.Apellido_materno
				dato['dni_rmt']=consulta3.dni
				dato['monto_conceptos']= str(obj['monto_conceptos'])
				dato['otros_conceptos']= obj['otros_conceptos']
				dato['banco']= obj['banco']
				dato['estGlo']=CajaDebe.observaciones2
				dato['pago_forzado']= ''
				if sq.count() ==0:
					dato['pago_forzado']= 'si'

				lista.append(dato)
			data= json.dumps(lista)
		except:
			data='fail'+str(sys.exc_info()[1])
	else:
		data='fail'+str(sys.exc_info()[1])
	mimetype="application/json"
	return HttpResponse(data,mimetype)

#actualizado
@login_required
def listaTransfereciasRecibidas_alterna_ajax_view(request):
	if request.is_ajax:
		pag=request.GET.get('pg','')
		valor=request.GET.get('filtro')
		pg= 1
		if pag !='':
			pg= int(pag)
		desde= (pg-1)*50
		hasta= pg*50
		usr= request.user.username
		try:
			lista=[]
			if valor != None and valor != "":
				C = Cajas.objects.get(id_usuario__usuario=usr)
				fil= QuitarEspacios(valor).split(' ')
				no=fil[0]
				am=''
				ap=''
				if len(fil)>1:
					ap=fil[1]
					if len(fil)>2:
						am=fil[2]
				consulta1=[]
				if len(fil)>1:
					consulta1= list(SolicitudTransferencia.objects.filter(Q(id_oficina=C.id_oficina.pk,nombre_beneficiado__icontains=no,Apellido_paterno_beneficiado__icontains=ap,Apellido_materno_beneficiado__icontains=am) | Q(id_oficina=C.id_oficina.pk,id_cliente__nombre__icontains=no,id_cliente__Apellido_paterno__icontains=ap,id_cliente__Apellido_materno__icontains=am)|Q(id_oficina=C.id_oficina.pk,idCajaDebe__id_oficina__nombre_oficina__icontains=valor)| Q(id_oficina=C.id_oficina.pk,idCajaDebe__id_oficina__ciudad__icontains=valor)).order_by('-pk').values('pk','idCajaDebe','id_cliente','id_oficina','comision','nombre_beneficiado','Apellido_paterno_beneficiado','Apellido_materno_beneficiado','dni_beneficiado','observaciones','monto_conceptos','otros_conceptos','dniMenor','nroCta','banco','tipo_operacion','cel_referencia','nro_operacion','nro_giro','clave','verificado','leido_banco'))
				else:
					consulta1= list(SolicitudTransferencia.objects.filter(Q(id_oficina=C.id_oficina.pk,nombre_beneficiado__icontains=no) | Q(id_oficina=C.id_oficina.pk,Apellido_paterno_beneficiado__icontains=no) | Q(id_oficina=C.id_oficina.pk,Apellido_materno_beneficiado__icontains=no) | Q(id_oficina=C.id_oficina.pk,id_cliente__nombre__icontains=no)|Q(id_oficina=C.id_oficina.pk,id_cliente__Apellido_paterno__icontains=no)|Q(id_oficina=C.id_oficina.pk,id_cliente__Apellido_materno__icontains=no)|Q(id_oficina=C.id_oficina.pk,idCajaDebe__id_oficina__nombre_oficina__icontains=no)| Q(id_oficina=C.id_oficina.pk,idCajaDebe__id_oficina__ciudad__icontains=no)).order_by('-pk').values('pk','idCajaDebe','id_cliente','id_oficina','comision','nombre_beneficiado','Apellido_paterno_beneficiado','Apellido_materno_beneficiado','dni_beneficiado','observaciones','monto_conceptos','otros_conceptos','dniMenor','nroCta','banco','tipo_operacion','cel_referencia','nro_operacion','nro_giro','clave','verificado','leido_banco'))
				aut_ret=True
				if conf_permisos_Cajas.objects.filter(id_caja=C.pk).exists():
					rta= conf_permisos_Cajas.objects.get(id_caja=C.pk)
					if rta.aux2 !='si':
						aut_ret= False
				for obj in consulta1:
					dato={}
					idCajaD= str(obj['idCajaDebe'])
					CajaDebe= TCajaDebe.objects.get(pk=idCajaD)
					dtd=CajaDebe.aux1
					comi=0
					if esReal(dtd)>0:
						comi=esReal(dtd)
					else:
						comi=str(obj['comision'])
					idCli= str(obj['id_cliente'])
					idSt= str(obj['pk'])
					sq= PagoTransferencia.objects.filter(id_solicitud_transferencia=idSt,idCajaHaber__id_caja=C.pk)
					consulta3=Cliente.objects.get(pk=idCli)
					cantidaEnvio= ConvertirDecimal(str(CajaDebe.cantidadDinero))-ConvertirDecimal(str(obj['comision']))-ConvertirDecimal(str(obj['monto_conceptos']))
					delta= datetime.datetime.today() - CajaDebe.fecha
					dato['dias']= delta.days
					dato['transEx']= 'no'
					if delta.days >=5 and aut_ret:
						dato['transEx']= 'si'
					dato['fecha']=str(CajaDebe.fecha.strftime("%d-%m-%Y %H:%M"))
					dato['nroRecibo']=CajaDebe.nroRecibo
					dato['estado']= CajaDebe.estadoTransaccion
					dato['monto']=normalizar(cantidaEnvio)
					dato['id_trans']=obj['pk']
					dato['oficina_des']=''
					dato['oficina_ori']= CajaDebe.id_oficina.nombre_oficina
					if ST_BaseExterna.objects.filter(id_transferencia=obj['pk']).exists():
						stbe= ST_BaseExterna.objects.get(id_transferencia=obj['pk'])
						if stbe.id_base_ori!= None and stbe.id_base_ori!='':
							be1= Base_Ext.objects.get(pk=stbe.id_base_ori)
							dato['oficina_ori']= be1.nombre_base
						if stbe.id_base_des!= None and stbe.id_base_des!='':
							be2= Base_Ext.objects.get(pk=stbe.id_base_des)
							dato['oficina_des']= be2.nombre_base
					dato['op_emisor']= CajaDebe.id_personal.nombre +' '+CajaDebe.id_personal.Apellido_paterno +' '+CajaDebe.id_personal.Apellido_materno
					dato['comicion']= comi
					dato['moneda']= CajaDebe.moneda
					dato['nombre_bnf']=obj['nombre_beneficiado']
					dato['paterno_bnf']=obj['Apellido_paterno_beneficiado']
					dato['materno_bnf']= obj['Apellido_materno_beneficiado']
					dato['dni_bnf']=obj['dni_beneficiado']
					dato['obs']=obj['observaciones']
					dato['nombre_rmt']=consulta3.nombre
					dato['paterno_rmt']=consulta3.Apellido_paterno
					dato['materno_rmt']=consulta3.Apellido_materno
					if obj['dniMenor']!=None and obj['dniMenor']!='':
						dato['dniMenor']=obj['dniMenor']
					else:
						dato['dniMenor']='no'

					if obj['nroCta']!=None:
						if str(obj['nroCta']).strip()!='':
							dato['nroCta']=str(obj['nroCta']).strip()
						else:
							dato['nroCta']=str(-1)
					else:
						dato['nroCta']=str(-1)
					dato['dni_rmt']=consulta3.dni
					dato['monto_conceptos']= str(obj['monto_conceptos'])
					dato['otros_conceptos']= obj['otros_conceptos']
					dato['banco']= obj['banco']
					dato['tipo_operacion']= obj['tipo_operacion']
					dato['cel_referencia']= obj['cel_referencia']
					dato['nro_operacion']= obj['nro_operacion']
					dato['nro_giro']= obj['nro_giro']
					dato['clave']= obj['clave']
					dato['estGlo']=CajaDebe.observaciones2
					dato['pago_forzado']= ''
					if sq.count() ==0:
						dato['pago_forzado']= 'si'
					dato['estado_banco']=''
					if obj['leido_banco'] != None and obj['leido_banco'][:2]=='si':
						dato['estado_banco']='leido'
					lista.append(dato)
				data= json.dumps(lista)
			else:
				data= json.dumps(lista)
		except:
			data='fail'+str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
def listaTransfereciasRecibidas_alterna_activas_ajax_view(request):
	if request.is_ajax:
		usr= request.user.username
		pag=request.GET.get('pg','')
		valor=request.GET.get('filtro')
		pg= 1
		if pag !='':
			pg= int(pag)
		desde= (pg-1)*20
		hasta= pg*20
		usr= request.user.username
		try:
			lista=[]
			if valor != None and valor != "":
				C = Cajas.objects.get(id_usuario__usuario=usr)
				consulta1= list(SolicitudTransferencia.objects.filter(Q(id_oficina=C.id_oficina.pk,nombre_beneficiado__icontains=valor,idCajaDebe__estadoTransaccion='activo')| Q(id_oficina=C.id_oficina.pk,Apellido_paterno_beneficiado__icontains=valor,idCajaDebe__estadoTransaccion='activo')|Q(id_oficina=C.id_oficina.pk,Apellido_materno_beneficiado__icontains=valor,idCajaDebe__estadoTransaccion='activo') | Q(id_oficina=C.id_oficina.pk,id_cliente__nombre__icontains=valor,idCajaDebe__estadoTransaccion='activo') | Q(id_oficina=C.id_oficina.pk,id_cliente__Apellido_paterno__icontains=valor ,idCajaDebe__estadoTransaccion='activo') | Q(id_oficina=C.id_oficina.pk,id_cliente__Apellido_materno__icontains=valor,idCajaDebe__estadoTransaccion='activo') | Q(id_oficina=C.id_oficina.pk,id_cliente__dni__icontains=valor,idCajaDebe__estadoTransaccion='activo')| Q(id_oficina=C.id_oficina.pk,idCajaDebe__id_oficina__nombre_oficina__icontains=valor,idCajaDebe__estadoTransaccion='activo')| Q(id_oficina=C.id_oficina.pk,idCajaDebe__id_oficina__ciudad__icontains=valor,idCajaDebe__estadoTransaccion='activo')).order_by('-pk')[desde:hasta].values('pk','idCajaDebe','id_cliente','id_oficina','comision','nombre_beneficiado','Apellido_paterno_beneficiado','Apellido_materno_beneficiado','dni_beneficiado','observaciones','monto_conceptos','otros_conceptos','dniMenor','nroCta','banco','tipo_operacion','cel_referencia','nro_operacion','nro_giro','clave','verificado','leido_banco'))
				aut_ret=True
				if conf_permisos_Cajas.objects.filter(id_caja=C.pk).exists():
					rta= conf_permisos_Cajas.objects.get(id_caja=C.pk)
					if rta.aux2 !='si':
						aut_ret= False
				for obj in consulta1:
					dato={}
					idCajaD= str(obj['idCajaDebe'])
					CajaDebe= TCajaDebe.objects.get(pk=idCajaD)
					dtd=CajaDebe.aux1
					comi=0
					if esReal(dtd)>0:
						comi=esReal(dtd)
					else:
						comi=str(obj['comision'])
					idCli= str(obj['id_cliente'])
					idSt= str(obj['pk'])
					sq= PagoTransferencia.objects.filter(id_solicitud_transferencia=idSt,idCajaHaber__id_caja=C.pk)
					consulta3=Cliente.objects.get(pk=idCli)
					cantidaEnvio= ConvertirDecimal(str(CajaDebe.cantidadDinero))-ConvertirDecimal(str(obj['comision']))-ConvertirDecimal(str(obj['monto_conceptos']))
					delta= datetime.datetime.today() - CajaDebe.fecha
					dato['dias']= delta.days
					dato['transEx']= 'no'
					if delta.days >=5 and aut_ret:
						dato['transEx']= 'si'
					dato['fecha']=str(CajaDebe.fecha.strftime("%d-%m-%Y %H:%M"))
					dato['nroRecibo']=CajaDebe.nroRecibo
					dato['estado']= CajaDebe.estadoTransaccion
					dato['monto']=normalizar(cantidaEnvio)
					dato['id_trans']=obj['pk']
					dato['oficina_des']=''
					dato['oficina_ori']= CajaDebe.id_oficina.nombre_oficina
					if ST_BaseExterna.objects.filter(id_transferencia=obj['pk']).exists():
						stbe= ST_BaseExterna.objects.get(id_transferencia=obj['pk'])
						if stbe.id_base_ori!= None and stbe.id_base_ori!='':
							be1= Base_Ext.objects.get(pk=stbe.id_base_ori)
							dato['oficina_ori']= be1.nombre_base
						if stbe.id_base_des!= None and stbe.id_base_des!='':
							be2= Base_Ext.objects.get(pk=stbe.id_base_des)
							dato['oficina_des']= be2.nombre_base
					dato['op_emisor']= CajaDebe.id_personal.nombre +' '+CajaDebe.id_personal.Apellido_paterno +' '+CajaDebe.id_personal.Apellido_materno
					dato['comicion']= comi
					dato['moneda']= CajaDebe.moneda
					dato['nombre_bnf']=obj['nombre_beneficiado']
					dato['paterno_bnf']=obj['Apellido_paterno_beneficiado']
					dato['materno_bnf']= obj['Apellido_materno_beneficiado']
					dato['dni_bnf']=obj['dni_beneficiado']
					dato['obs']=obj['observaciones']
					if obj['dniMenor']!=None and obj['dniMenor']!='':
						dato['dniMenor']=obj['dniMenor']
					else:
						dato['dniMenor']='no'

					if obj['nroCta']!=None:
						if str(obj['nroCta']).strip()!='':
							dato['nroCta']=str(obj['nroCta']).strip()
						else:
							dato['nroCta']=str(-1)
					else:
						dato['nroCta']=str(-1)
					dato['nombre_rmt']=consulta3.nombre
					dato['paterno_rmt']=consulta3.Apellido_paterno
					dato['materno_rmt']=consulta3.Apellido_materno
					dato['dni_rmt']=consulta3.dni
					dato['monto_conceptos']= str(obj['monto_conceptos'])
					dato['otros_conceptos']= obj['otros_conceptos']
					dato['banco']= obj['banco']
					dato['tipo_operacion']= obj['tipo_operacion']
					dato['cel_referencia']= obj['cel_referencia']
					dato['nro_operacion']= obj['nro_operacion']
					dato['nro_giro']= obj['nro_giro']
					dato['clave']= obj['clave']
					dato['estGlo']=CajaDebe.observaciones2
					dato['pago_forzado']= ''
					if sq.count() ==0:
						dato['pago_forzado']= 'si'
					dato['estado_banco']=''
					if obj['leido_banco'] != None and obj['leido_banco'][:2]=='si':
						dato['estado_banco']='leido'
					lista.append(dato)
				data= json.dumps(lista)
			else:
				data= json.dumps(lista)
		except:
			data='fail'+str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
def CantidadTransfereciasRecibidasActiva_ajax_view(request):
	if request.is_ajax:
		usr= request.user.username
		try:
			lista=[]
			C = Cajas.objects.get(id_usuario__usuario=usr)
			consulta1= SolicitudTransferencia.objects.filter(id_oficina=C.id_oficina.pk,idCajaDebe__estadoTransaccion='activo')
			data= str(consulta1.count())
		except:
			data='fail'
	else:
		data='fail'
	mimetype="text"
	return HttpResponse(data,mimetype)




@login_required
def CantidadTransfereciasRecibidasActiva_Glob_ajax_view(request):
	if request.is_ajax:
		usr= request.user.username
		try:
			lista=[]
			C = Cajas.objects.get(id_usuario__usuario=usr)
			conf = conf_permisos_Cajas.objects.get(id_caja=C.pk,Trans_global='si')
			lo=[]
			consu= conf_oficinas_para_TransGlobal.objects.filter(id_conf=conf.pk,aux1="si").values('id_oficina')
			for o1 in consu:
				lo.append(o1['id_oficina'])
			data=0
			if len(lo)>0:
				consulta1= SolicitudTransferencia.objects.filter(id_oficina__in=lo,idCajaDebe__estadoTransaccion='activo').exclude(idCajaDebe__observaciones2__startswith='leido')
				data= str(consulta1.count())
		except:
			data='fail'
	else:
		data='fail'
	mimetype="text"
	return HttpResponse(data,mimetype)


@login_required
def ListaTransfereciasRecibidasActiva_ajax_view(request):
	if request.is_ajax:
		usr= request.user.username
		pag=request.GET.get('pg','')
		pg= 1
		if pag !='':
			pg= int(pag)
		desde= (pg-1)*20
		hasta= pg*20
		usr= request.user.username
		try:
			lista=[]
			C = Cajas.objects.get(id_usuario__usuario=usr)
			aut_ret=True
			if conf_permisos_Cajas.objects.filter(id_caja=C.pk).exists():
				rta= conf_permisos_Cajas.objects.get(id_caja=C.pk)
				if rta.aux2 !='si':
					aut_ret= False
			consulta1= list(SolicitudTransferencia.objects.filter(id_oficina=C.id_oficina.pk,idCajaDebe__estadoTransaccion='activo').order_by('-pk')[desde:hasta].values('pk','idCajaDebe','id_cliente','id_oficina','comision','nombre_beneficiado','Apellido_paterno_beneficiado','Apellido_materno_beneficiado','dni_beneficiado','observaciones','monto_conceptos','otros_conceptos','dniMenor','nroCta','banco','tipo_operacion','cel_referencia','nro_operacion','nro_giro','clave','verificado','leido_banco'))
			for obj in consulta1:
				dato={}
				idCajaD= str(obj['idCajaDebe'])
				CajaDebe= TCajaDebe.objects.get(pk=idCajaD)
				dtd=CajaDebe.aux1
				comi=0
				if esReal(dtd)>0:
					comi=esReal(dtd)
				else:
					comi=str(obj['comision'])
				idCli= str(obj['id_cliente'])
				idSt= str(obj['pk'])
				sq= PagoTransferencia.objects.filter(id_solicitud_transferencia=idSt,idCajaHaber__id_caja=C.pk)
				consulta3=Cliente.objects.get(pk=idCli)
				cantidaEnvio= ConvertirDecimal(str(CajaDebe.cantidadDinero))-ConvertirDecimal(str(obj['comision']))-ConvertirDecimal(str(obj['monto_conceptos']))
				delta= datetime.datetime.today() - CajaDebe.fecha
				dato['dias']= delta.days
				dato['transEx']= 'no'
				if delta.days >=5 and aut_ret:
					dato['transEx']= 'si'
				dato['fecha']=str(CajaDebe.fecha.strftime("%d-%m-%Y %H:%M"))
				dato['nroRecibo']=CajaDebe.nroRecibo
				dato['estado']= CajaDebe.estadoTransaccion
				dato['monto']=normalizar(cantidaEnvio)
				dato['id_trans']=obj['pk']
				dato['oficina_des']=''
				dato['oficina_ori']= CajaDebe.id_oficina.nombre_oficina
				if ST_BaseExterna.objects.filter(id_transferencia=obj['pk']).exists():
					stbe= ST_BaseExterna.objects.get(id_transferencia=obj['pk'])
					if stbe.id_base_ori!= None and stbe.id_base_ori!='':
						be1= Base_Ext.objects.get(pk=stbe.id_base_ori)
						dato['oficina_ori']= be1.nombre_base
					if stbe.id_base_des!= None and stbe.id_base_des!='':
						be2= Base_Ext.objects.get(pk=stbe.id_base_des)
						dato['oficina_des']= be2.nombre_base
				dato['op_emisor']= CajaDebe.id_personal.nombre +' '+CajaDebe.id_personal.Apellido_paterno +' '+CajaDebe.id_personal.Apellido_materno
				dato['comicion']= comi
				dato['moneda']= CajaDebe.moneda
				dato['nombre_bnf']=obj['nombre_beneficiado']
				dato['paterno_bnf']=obj['Apellido_paterno_beneficiado']
				dato['materno_bnf']= obj['Apellido_materno_beneficiado']
				dato['dni_bnf']=obj['dni_beneficiado']
				dato['obs']=obj['observaciones']
				if obj['dniMenor']!=None and obj['dniMenor']!='':
					dato['dniMenor']=obj['dniMenor']
				else:
					dato['dniMenor']='no'

				if obj['nroCta']!=None:
					if str(obj['nroCta']).strip()!='':
						dato['nroCta']=str(obj['nroCta']).strip()
					else:
						dato['nroCta']=str(-1)
				else:
					dato['nroCta']=str(-1)
				dato['nombre_rmt']=consulta3.nombre
				dato['paterno_rmt']=consulta3.Apellido_paterno
				dato['materno_rmt']=consulta3.Apellido_materno
				dato['dni_rmt']=consulta3.dni
				dato['monto_conceptos']= str(obj['monto_conceptos'])
				dato['otros_conceptos']= obj['otros_conceptos']
				dato['banco']= obj['banco']
				dato['tipo_operacion']= obj['tipo_operacion']
				dato['cel_referencia']= obj['cel_referencia']
				dato['nro_operacion']= obj['nro_operacion']
				dato['nro_giro']= obj['nro_giro']
				dato['clave']= obj['clave']
				dato['estGlo']=CajaDebe.observaciones2
				dato['pago_forzado']= ''
				if sq.count() ==0:
					dato['pago_forzado']= 'si'
				dato['estado_banco']=''
				if obj['leido_banco'] != None and obj['leido_banco'][:2]=='si':
					dato['estado_banco']='leido'
				lista.append(dato)
			data= json.dumps(lista)
		except:
			data='fail'+str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)



@login_required
def ListaTransRecibidasCBActiva_ajax_view(request):
	if request.is_ajax:
		usr= request.user.username
		pag=request.GET.get('pg','')
		pg= 1
		if pag !='':
			pg= int(pag)
		desde= (pg-1)*20
		hasta= pg*20
		usr= request.user.username
		try:
			lista=[]
			C = Cajas.objects.get(id_usuario__usuario=usr)
			aut_ret=True
			if conf_permisos_Cajas.objects.filter(id_caja=C.pk).exists():
				rta= conf_permisos_Cajas.objects.get(id_caja=C.pk)
				if rta.aux2 !='si':
					aut_ret= False
			consulta1= list(SolicitudTransferencia.objects.filter(id_oficina=C.id_oficina.pk,idCajaDebe__estadoTransaccion='activo').exclude(otros_conceptos='').order_by('-pk')[desde:hasta].values('pk','idCajaDebe','id_cliente','id_oficina','comision','nombre_beneficiado','Apellido_paterno_beneficiado','Apellido_materno_beneficiado','dni_beneficiado','observaciones','monto_conceptos','otros_conceptos','dniMenor','nroCta','banco','tipo_operacion','cel_referencia','nro_operacion','nro_giro','clave','verificado','leido_banco'))
			for obj in consulta1:
				dato={}
				idCajaD= str(obj['idCajaDebe'])
				CajaDebe= TCajaDebe.objects.get(pk=idCajaD)
				dtd=CajaDebe.aux1
				comi=0
				if esReal(dtd)>0:
					comi=esReal(dtd)
				else:
					comi=str(obj['comision'])
				idCli= str(obj['id_cliente'])
				idSt= str(obj['pk'])
				#sq= PagoTransferencia.objects.filter(id_solicitud_transferencia=idSt,idCajaHaber__id_caja=C.pk)
				consulta3=Cliente.objects.get(pk=idCli)
				cantidaEnvio= ConvertirDecimal(str(CajaDebe.cantidadDinero))-ConvertirDecimal(str(obj['comision']))-ConvertirDecimal(str(obj['monto_conceptos']))
				delta= datetime.datetime.today() - CajaDebe.fecha
				dato['dias']= delta.days
				dato['transEx']= 'no'
				if delta.days >=5 and aut_ret:
					dato['transEx']= 'si'
				dato['fecha']=str(CajaDebe.fecha.strftime("%d-%m-%Y %H:%M"))
				dato['nroRecibo']=CajaDebe.nroRecibo
				dato['estado']= CajaDebe.estadoTransaccion
				dato['monto']=normalizar(cantidaEnvio)
				dato['id_trans']=obj['pk']
				dato['oficina_des']=''
				dato['oficina_ori']= CajaDebe.id_oficina.nombre_oficina
				if ST_BaseExterna.objects.filter(id_transferencia=obj['pk']).exists():
					stbe= ST_BaseExterna.objects.get(id_transferencia=obj['pk'])
					if stbe.id_base_ori!= None and stbe.id_base_ori!='':
						be1= Base_Ext.objects.get(pk=stbe.id_base_ori)
						dato['oficina_ori']= be1.nombre_base
					if stbe.id_base_des!= None and stbe.id_base_des!='':
						be2= Base_Ext.objects.get(pk=stbe.id_base_des)
						dato['oficina_des']= be2.nombre_base
				dato['op_emisor']= CajaDebe.id_personal.nombre +' '+CajaDebe.id_personal.Apellido_paterno +' '+CajaDebe.id_personal.Apellido_materno
				dato['comicion']= comi
				dato['moneda']= CajaDebe.moneda
				dato['nombre_bnf']=obj['nombre_beneficiado']
				dato['paterno_bnf']=obj['Apellido_paterno_beneficiado']
				dato['materno_bnf']= obj['Apellido_materno_beneficiado']
				dato['dni_bnf']=obj['dni_beneficiado']
				dato['obs']=obj['observaciones']
				if obj['dniMenor']!=None and obj['dniMenor']!='':
					dato['dniMenor']=obj['dniMenor']
				else:
					dato['dniMenor']='no'

				if obj['nroCta']!=None:
					if str(obj['nroCta']).strip()!='':
						dato['nroCta']=str(obj['nroCta']).strip()
					else:
						dato['nroCta']=str(-1)
				else:
					dato['nroCta']=str(-1)
				dato['nombre_rmt']=consulta3.nombre
				dato['paterno_rmt']=consulta3.Apellido_paterno
				dato['materno_rmt']=consulta3.Apellido_materno
				dato['dni_rmt']=consulta3.dni
				dato['monto_conceptos']= str(obj['monto_conceptos'])
				dato['otros_conceptos']= obj['otros_conceptos']
				dato['banco']= obj['banco']
				dato['tipo_operacion']= obj['tipo_operacion']
				dato['cel_referencia']= obj['cel_referencia']
				dato['nro_operacion']= obj['nro_operacion']
				dato['nro_giro']= obj['nro_giro']
				dato['clave']= obj['clave']
				dato['estGlo']=CajaDebe.observaciones2
				dato['pago_forzado']= ''
				dato['estado_banco']=''
				if obj['leido_banco'] != None and obj['leido_banco'][:2]=='si':
					dato['estado_banco']='leido'
				lista.append(dato)
			data= json.dumps(lista)
		except:
			data='fail'
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
def ListaTransRecibidasCB_ajax_view(request):
	if request.is_ajax:
		usr= request.user.username
		pag=request.GET.get('pg','')
		pg= 1
		if pag !='':
			pg= int(pag)
		desde= (pg-1)*20
		hasta= pg*20
		usr= request.user.username
		try:
			lista=[]
			C = Cajas.objects.get(id_usuario__usuario=usr)
			aut_ret=True
			if conf_permisos_Cajas.objects.filter(id_caja=C.pk).exists():
				rta= conf_permisos_Cajas.objects.get(id_caja=C.pk)
				if rta.aux2 !='si':
					aut_ret= False
			consulta1= list(SolicitudTransferencia.objects.filter(id_oficina=C.id_oficina.pk).exclude(otros_conceptos='').order_by('-pk')[desde:hasta].values('pk','idCajaDebe','id_cliente','id_oficina','comision','nombre_beneficiado','Apellido_paterno_beneficiado','Apellido_materno_beneficiado','dni_beneficiado','observaciones','monto_conceptos','otros_conceptos','dniMenor','nroCta','banco','tipo_operacion','cel_referencia','nro_operacion','nro_giro','clave','verificado','leido_banco'))
			for obj in consulta1:
				dato={}
				idCajaD= str(obj['idCajaDebe'])
				CajaDebe= TCajaDebe.objects.get(pk=idCajaD)
				dtd=CajaDebe.aux1
				comi=0
				if esReal(dtd)>0:
					comi=esReal(dtd)
				else:
					comi=str(obj['comision'])
				idCli= str(obj['id_cliente'])
				idSt= str(obj['pk'])
				#sq= PagoTransferencia.objects.filter(id_solicitud_transferencia=idSt,idCajaHaber__id_caja=C.pk)
				consulta3=Cliente.objects.get(pk=idCli)
				cantidaEnvio= ConvertirDecimal(str(CajaDebe.cantidadDinero))-ConvertirDecimal(str(obj['comision']))-ConvertirDecimal(str(obj['monto_conceptos']))
				delta= datetime.datetime.today() - CajaDebe.fecha
				dato['dias']= delta.days
				dato['transEx']= 'no'
				if delta.days >=5 and aut_ret:
					dato['transEx']= 'si'
				dato['fecha']=str(CajaDebe.fecha.strftime("%d-%m-%Y %H:%M"))
				dato['nroRecibo']=CajaDebe.nroRecibo
				dato['estado']= CajaDebe.estadoTransaccion
				dato['monto']=normalizar(cantidaEnvio)
				dato['id_trans']=obj['pk']
				dato['oficina_des']=''
				dato['oficina_ori']= CajaDebe.id_oficina.nombre_oficina
				if ST_BaseExterna.objects.filter(id_transferencia=obj['pk']).exists():
					stbe= ST_BaseExterna.objects.get(id_transferencia=obj['pk'])
					if stbe.id_base_ori!= None and stbe.id_base_ori!='':
						be1= Base_Ext.objects.get(pk=stbe.id_base_ori)
						dato['oficina_ori']= be1.nombre_base
					if stbe.id_base_des!= None and stbe.id_base_des!='':
						be2= Base_Ext.objects.get(pk=stbe.id_base_des)
						dato['oficina_des']= be2.nombre_base
				dato['op_emisor']= CajaDebe.id_personal.nombre +' '+CajaDebe.id_personal.Apellido_paterno +' '+CajaDebe.id_personal.Apellido_materno
				dato['comicion']= comi
				dato['moneda']= CajaDebe.moneda
				dato['nombre_bnf']=obj['nombre_beneficiado']
				dato['paterno_bnf']=obj['Apellido_paterno_beneficiado']
				dato['materno_bnf']= obj['Apellido_materno_beneficiado']
				dato['dni_bnf']=obj['dni_beneficiado']
				dato['obs']=obj['observaciones']
				if obj['dniMenor']!=None and obj['dniMenor']!='':
					dato['dniMenor']=obj['dniMenor']
				else:
					dato['dniMenor']='no'

				if obj['nroCta']!=None:
					if str(obj['nroCta']).strip()!='':
						dato['nroCta']=str(obj['nroCta']).strip()
					else:
						dato['nroCta']=str(-1)
				else:
					dato['nroCta']=str(-1)
				dato['nombre_rmt']=consulta3.nombre
				dato['paterno_rmt']=consulta3.Apellido_paterno
				dato['materno_rmt']=consulta3.Apellido_materno
				dato['dni_rmt']=consulta3.dni
				dato['monto_conceptos']= str(obj['monto_conceptos'])
				dato['otros_conceptos']= obj['otros_conceptos']
				dato['banco']= obj['banco']
				dato['tipo_operacion']= obj['tipo_operacion']
				dato['cel_referencia']= obj['cel_referencia']
				dato['nro_operacion']= obj['nro_operacion']
				dato['nro_giro']= obj['nro_giro']
				dato['clave']= obj['clave']
				dato['estGlo']=CajaDebe.observaciones2
				dato['pago_forzado']= ''
				dato['estado_banco']=''
				if obj['leido_banco'] != None and obj['leido_banco'][:2]=='si':
					dato['estado_banco']='leido'
				lista.append(dato)
			data= json.dumps(lista)
		except:
			data='fail'
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)



@login_required
def listaTransferenciasPagadas_ajax_view(request):
	if request.is_ajax:
		usr= request.user.username
		pag=request.GET.get('pg','')
		filtro=request.GET.get('filtro','')
		F1=request.GET.get('F1','')
		F2=request.GET.get('F2','')
		if filtro=='h':
			F1= str(datetime.date.today())
			filtro= 'f'
		pg= 1
		if pag !='':
			pg= int(pag)
		desde= (pg-1)*50
		hasta= pg*50
		try:
			lista=[]
			C = Cajas.objects.get(id_usuario__usuario=usr)
			horamin = None
			horamax = None
			if filtro =='f':
				if F1 !='':
					fecha= datetime.datetime.strptime(F1, '%Y-%m-%d')
					horamin= datetime.datetime.combine(fecha,datetime.time.min)
					horamax= datetime.datetime.combine(fecha,datetime.time.max)
			elif filtro=='ef':
				if F1 !='' and F2 !='':
					fecha1= datetime.datetime.strptime(F1, '%Y-%m-%d')
					fecha2= datetime.datetime.strptime(F2, '%Y-%m-%d')
					horamin= datetime.datetime.combine(fecha1,datetime.time.min)
					horamax= datetime.datetime.combine(fecha2,datetime.time.max)
			consulta= list(PagoTransferencia.objects.filter(idCajaHaber__id_caja=C.pk,idCajaHaber__fecha__range=(horamin,horamax)).order_by('-pk').values('pk','idCajaHaber','id_solicitud_transferencia','observaciones'))
			#consulta1= list(SolicitudTransferencia.objects.filter(id_oficina=C.id_oficina.pk,idCajaDebe__estadoTransaccion='pagado').order_by('-pk')[desde:hasta].values('pk','idCajaDebe','id_cliente','id_oficina','comision','nombre_beneficiado','Apellido_paterno_beneficiado','Apellido_materno_beneficiado','dni_beneficiado','observaciones','monto_conceptos','otros_conceptos','banco','nroCta','tipo_operacion','cel_referencia','nro_operacion','nro_giro','clave'))
			for obj in consulta:
				dato={}
				haber= TCajaHaber.objects.get(pk=obj['idCajaHaber'])
				trans = SolicitudTransferencia.objects.get(pk=obj['id_solicitud_transferencia'])
				CajaDebe= TCajaDebe.objects.get(pk=trans.idCajaDebe.pk)
				cli=Cliente.objects.get(pk=trans.id_cliente.pk)

				#PagoTr = PagoTransferencia.objects.get(id_solicitud_transferencia=idSt)
				usuGlo=''
				if haber.conceptoDetalle[2] =='-':
					usuGlo= haber.conceptoDetalle.split('-')[2]

				if EgresoExtraTransferencia.objects.filter(idCajaHaber__id_caja=C.pk,id_pago_transferencia=obj['pk']).exists():
					EgresoExtra=EgresoExtraTransferencia.objects.get(idCajaHaber__id_caja=C.pk,id_pago_transferencia=obj['pk'])
					dato['egreso_extra']= str(EgresoExtra.monto)
				else:
					dato['egreso_extra']= str(0)

				dato['usuGlo']= usuGlo
				cantidaEnvio= ConvertirDecimal(str(CajaDebe.cantidadDinero))-ConvertirDecimal(trans.comision)-ConvertirDecimal(trans.monto_conceptos)
				dato['fechaC']=str(CajaDebe.fecha.strftime("%d-%m-%Y %H:%M"))
				dato['fecha']=str(haber.fecha.strftime("%d-%m-%Y %H:%M"))
				dato['nroRecibo']=haber.nroRecibo
				dato['estado']= haber.estadoTransaccion
				dato['pagador']=haber.id_personal.nombre+' '+haber.id_personal.Apellido_paterno+' '+haber.id_personal.Apellido_materno
				dato['monto']=normalizar(cantidaEnvio)
				dato['id_trans']=trans.pk
				dato['oficina_des']=''
				dato['oficina_ori']= CajaDebe.id_oficina.nombre_oficina
				if ST_BaseExterna.objects.filter(id_transferencia=trans.pk).exists():
					stbe= ST_BaseExterna.objects.get(id_transferencia=trans.pk)
					if stbe.id_base_ori!= None and stbe.id_base_ori!='':
						be1= Base_Ext.objects.get(pk=stbe.id_base_ori)
						dato['oficina_ori']= be1.nombre_base
					if stbe.id_base_des!= None and stbe.id_base_des!='':
						be2= Base_Ext.objects.get(pk=stbe.id_base_des)
						dato['oficina_des']= be2.nombre_base
				dato['comicion']= str(trans.comision)
				dato['moneda']= haber.moneda
				dato['nombre_bnf']=trans.nombre_beneficiado
				dato['paterno_bnf']=trans.Apellido_paterno_beneficiado
				dato['materno_bnf']= trans.Apellido_materno_beneficiado
				dato['dni_bnf']=trans.dni_beneficiado
				dato['obs']=trans.observaciones
				dato['obs_pa']=obj['observaciones']
				dato['nombre_rmt']=cli.nombre
				dato['paterno_rmt']=cli.Apellido_paterno
				dato['materno_rmt']=cli.Apellido_materno
				dato['dni_rmt']=cli.dni
				dato['monto_conceptos']= str(trans.monto_conceptos)
				dato['otros_conceptos']= trans.otros_conceptos
				dato['banco']= trans.banco
				dato['nroCta']= trans.nroCta
				dato['tipo_operacion']= trans.tipo_operacion
				dato['cel_referencia']= trans.cel_referencia
				dato['nro_operacion']= trans.nro_operacion
				dato['nro_giro']= trans.nro_giro
				dato['clave']= trans.clave
				dato['enviador']= CajaDebe.id_personal.nombre+' '+CajaDebe.id_personal.Apellido_paterno
				lista.append(dato)
			data= json.dumps(lista)	
		except:
			data=str(sys.exc_info()[1]) + str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
def listaTransferenciasPagadas_paradivision_envio_ajax_view(request):
	if request.is_ajax:
		usr= request.user.username
		try:
			lista=[]
			C = Cajas.objects.get(id_usuario__usuario=usr)
			consulta1= list(SolicitudTransferencia.objects.filter(id_oficina=C.id_oficina.pk,idCajaDebe__estadoTransaccion='pagado').values('pk','idCajaDebe','id_cliente','id_oficina','comision','nombre_beneficiado','Apellido_paterno_beneficiado','Apellido_materno_beneficiado','dni_beneficiado','observaciones','monto_conceptos','otros_conceptos'))
			for obj in consulta1:
				dato={}
				idSt= str(obj['pk'])
				idCajaD= str(obj['idCajaDebe'])
				CajaDebe= TCajaDebe.objects.get(pk=idCajaD)
				sq= PagoTransferencia.objects.filter(id_solicitud_transferencia=idSt,idCajaHaber__id_caja=C.pk).exclude(idCajaHaber__aux1="descontado")
				if sq.count()>0:
					PagoTr = PagoTransferencia.objects.get(id_solicitud_transferencia=idSt)
					idCli= str(obj['id_cliente'])
					consulta3=list(Cliente.objects.filter(pk=idCli).values('nombre','Apellido_paterno','Apellido_materno','dni'))
					cantidaEnvio= ConvertirDecimal(str(CajaDebe.cantidadDinero))-ConvertirDecimal(str(obj['comision']))-ConvertirDecimal(str(obj['monto_conceptos']))
					dato['fecha']=str(PagoTr.idCajaHaber.fecha.strftime("%d-%m-%Y %H:%M"))
					dato['nroRecibo']=PagoTr.idCajaHaber.nroRecibo
					dato['estado']= PagoTr.idCajaHaber.estadoTransaccion
					dato['pagador']=PagoTr.idCajaHaber.id_personal.nombre+' '+PagoTr.idCajaHaber.id_personal.Apellido_paterno+' '+PagoTr.idCajaHaber.id_personal.Apellido_materno
					dato['monto']=normalizar(cantidaEnvio)
					dato['id_trans']=obj['pk']
					dato['oficina_ori']= CajaDebe.id_oficina.nombre_oficina
					dato['comicion']= obj['comision']
					dato['moneda']= PagoTr.idCajaHaber.moneda
					dato['nombre_bnf']=obj['nombre_beneficiado']
					dato['paterno_bnf']=obj['Apellido_paterno_beneficiado']
					dato['materno_bnf']= obj['Apellido_materno_beneficiado']
					dato['dni_bnf']=obj['dni_beneficiado']
					dato['obs']=obj['observaciones']
					dato['nombre_rmt']=consulta3[0]['nombre']
					dato['paterno_rmt']=consulta3[0]['Apellido_paterno']
					dato['materno_rmt']=consulta3[0]['Apellido_materno']
					dato['dni_rmt']=consulta3[0]['dni']
					dato['monto_conceptos']= obj['monto_conceptos']
					dato['otros_conceptos']= obj['otros_conceptos']
					lista.append(dato)
			data= json.dumps(lista)	
		except:
			data='fail'
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
def listaTransferenciasPagadasTotal_filtro_ajax_view(request):
	if request.is_ajax:
		usr= request.user.username
		pag=request.GET.get('pg','')
		valor=request.GET.get('filtro')
		pg= 1
		if pag !='':
			pg= int(pag)
		desde= (pg-1)*20
		hasta= pg*20
		try:
			lista=[]
			C = Cajas.objects.get(id_usuario__usuario=usr)
			fil= QuitarEspacios(valor).split(' ')
			no=fil[0]
			am=''
			ap=''
			if len(fil)>1:
				ap=fil[1]
				if len(fil)>2:
					am=fil[2]
			#consulta1= list(SolicitudTransferencia.objects.filter(Q()| Q(idCajaDebe__estadoTransaccion='pagado',id_oficina=C.id_oficina.pk,id_cliente__nombre__icontains=no,id_cliente__Apellido_paterno__icontains=ap,id_cliente__Apellido_materno__icontains=am)).order_by('-pk')[desde:hasta].values('pk','idCajaDebe','id_cliente','id_oficina','comision','nombre_beneficiado','Apellido_paterno_beneficiado','Apellido_materno_beneficiado','dni_beneficiado','observaciones','monto_conceptos','otros_conceptos','banco'))
			consulta= list(PagoTransferencia.objects.filter(Q(idCajaHaber__id_caja=C.pk,id_solicitud_transferencia__nombre_beneficiado__icontains=no,id_solicitud_transferencia__Apellido_paterno_beneficiado__icontains=ap,id_solicitud_transferencia__Apellido_materno_beneficiado__icontains=am)|Q(idCajaHaber__id_caja=C.pk,id_solicitud_transferencia__id_cliente__nombre__icontains=no,id_solicitud_transferencia__id_cliente__Apellido_paterno__icontains=ap,id_solicitud_transferencia__id_cliente__Apellido_materno__icontains=am) ).order_by('-pk').values('pk','idCajaHaber','id_solicitud_transferencia','observaciones'))
			
			for obj in consulta:
				dato={}
				haber= TCajaHaber.objects.get(pk=obj['idCajaHaber'])
				trans = SolicitudTransferencia.objects.get(pk=obj['id_solicitud_transferencia'])
				CajaDebe= TCajaDebe.objects.get(pk=trans.idCajaDebe.pk)
				cli=Cliente.objects.get(pk=trans.id_cliente.pk)

				#PagoTr = PagoTransferencia.objects.get(id_solicitud_transferencia=idSt)
				usuGlo=''
				if haber.conceptoDetalle[2] =='-':
					usuGlo= haber.conceptoDetalle.split('-')[2]

				if EgresoExtraTransferencia.objects.filter(idCajaHaber__id_caja=C.pk,id_pago_transferencia=obj['pk']).exists():
					EgresoExtra=EgresoExtraTransferencia.objects.get(idCajaHaber__id_caja=C.pk,id_pago_transferencia=obj['pk'])
					dato['egreso_extra']= str(EgresoExtra.monto)
				else:
					dato['egreso_extra']= str(0)

				dato['usuGlo']= usuGlo
				cantidaEnvio= ConvertirDecimal(str(CajaDebe.cantidadDinero))-ConvertirDecimal(trans.comision)-ConvertirDecimal(trans.monto_conceptos)
				dato['fechaC']=str(CajaDebe.fecha.strftime("%d-%m-%Y %H:%M"))
				dato['fecha']=str(haber.fecha.strftime("%d-%m-%Y %H:%M"))
				dato['nroRecibo']=haber.nroRecibo
				dato['estado']= haber.estadoTransaccion
				dato['pagador']=haber.id_personal.nombre+' '+haber.id_personal.Apellido_paterno+' '+haber.id_personal.Apellido_materno
				dato['monto']=normalizar(cantidaEnvio)
				dato['id_trans']=trans.pk
				dato['oficina_des']=''
				dato['oficina_ori']= CajaDebe.id_oficina.nombre_oficina
				if ST_BaseExterna.objects.filter(id_transferencia=trans.pk).exists():
					stbe= ST_BaseExterna.objects.get(id_transferencia=trans.pk)
					if stbe.id_base_ori!= None and stbe.id_base_ori!='':
						be1= Base_Ext.objects.get(pk=stbe.id_base_ori)
						dato['oficina_ori']= be1.nombre_base
					if stbe.id_base_des!= None and stbe.id_base_des!='':
						be2= Base_Ext.objects.get(pk=stbe.id_base_des)
						dato['oficina_des']= be2.nombre_base
				dato['comicion']= str(trans.comision)
				dato['moneda']= haber.moneda
				dato['nombre_bnf']=trans.nombre_beneficiado
				dato['paterno_bnf']=trans.Apellido_paterno_beneficiado
				dato['materno_bnf']= trans.Apellido_materno_beneficiado
				dato['dni_bnf']=trans.dni_beneficiado
				dato['obs']=trans.observaciones
				dato['obs_pa']=obj['observaciones']
				dato['nombre_rmt']=cli.nombre
				dato['paterno_rmt']=cli.Apellido_paterno
				dato['materno_rmt']=cli.Apellido_materno
				dato['dni_rmt']=cli.dni
				dato['monto_conceptos']= str(trans.monto_conceptos)
				dato['otros_conceptos']= trans.otros_conceptos
				dato['banco']= trans.banco
				dato['nroCta']= trans.nroCta
				dato['tipo_operacion']= trans.tipo_operacion
				dato['cel_referencia']= trans.cel_referencia
				dato['nro_operacion']= trans.nro_operacion
				dato['nro_giro']= trans.nro_giro
				dato['clave']= trans.clave
				dato['enviador']= CajaDebe.id_personal.nombre+' '+CajaDebe.id_personal.Apellido_paterno
				lista.append(dato)
			data= json.dumps(lista)	
		except:
			data='fail'+ str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)


# lista de egreso que se descontara de envio con division
@login_required
def listaEgresoExt_paraDiv_envio_ajax_view(request):#creados
	if request.is_ajax:
		usr= request.user.username
		try:
			C = Cajas.objects.get(id_usuario__usuario=usr)
			consulta1= list(TCajaHaber.objects.filter(id_oficina=C.id_oficina.pk,id_caja=C.pk).exclude(tablaRelacional__in=['PagoTransferencia','TtransferenciaExtorno','EnvioOficinaOficina','CompraDolar','VentaDolar','CtaAhorros','CtaAhorrosMovimientos','CtaCte','CtaCteMovimientos']).exclude(aux2="pagado").values('pk','fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo','observaciones'))
			lista=[]
			for obj in consulta1:
				dato={}	
				dato['pk']= obj['pk']
				dato['fecha']=str(obj['fecha'].strftime("%d-%m-%Y %H:%M"))
				dato['concepto']=obj['conceptoDetalle']
				dato['td']=obj['tipoDocumento']
				dato['nr']=obj['nroRecibo']
				dato['m']=obj['moneda']
				dato['obs']=obj['observaciones']
				dato['monto']=str(obj['cantidadDinero'])
				lista.append(dato)
			data= json.dumps(lista)
		except:
			data='fail'+ str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

# lista de ingreso que se descontara de envio con division

@login_required
def listaIngresoExt_paraDiv_envio_ajax_view(request):#creados
	if request.is_ajax:
		usr= request.user.username
		try:
			C = Cajas.objects.get(id_usuario__usuario=usr)
			consulta1= list(TCajaDebe.objects.filter(id_oficina=C.id_oficina.pk,id_caja=C.pk).exclude(tablaRelacional__in=['SolicitudTransferencia','CompraDolar','VentaDolar','CtaAhorros','CtaAhorrosMovimientos','CtaCte','CtaCteMovimientos']).exclude(aux2="pagado").values('pk','fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo','observaciones'))
			lista=[]
			for obj in consulta1:
				dato={}	
				dato['pk']= obj['pk']
				dato['fecha']=str(obj['fecha'].strftime("%d-%m-%Y %H:%M"))
				dato['concepto']=obj['conceptoDetalle']
				dato['td']=obj['tipoDocumento']
				dato['nr']=obj['nroRecibo']
				dato['m']=obj['moneda']
				dato['obs']=obj['observaciones']
				dato['monto']=str(obj['cantidadDinero'])
				lista.append(dato)
			data= json.dumps(lista)
		except:
			data='fail'
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

#este view se encarga de devolver la lista de oficinas
@login_required
def oficinas_ajax_view(request):
	if request.is_ajax:
		usr= request.user.username
		data=''
		lista=[]
		try:
			C= Cajas.objects.get(id_usuario__usuario=usr)
			consulta=list(Oficina.objects.exclude(pk=C.id_oficina.pk).exclude(estado_oficina=False).exclude(nombre_oficina="Gerencia").values('pk','nombre_oficina','estado_oficina'))
			for obj in consulta:
				dato={}
				dato['pk']= obj['pk']
				dato['nombre_oficina']= obj['nombre_oficina']
				lista.append(dato)
			data= json.dumps(lista)
		except:
			data='error en consulta '+str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
def oficinas_ajax_tesoreria_view(request):
	if request.is_ajax:
		usr= request.user.username
		data=''
		lista=[]
		try:
			C= Cajas.objects.get(id_usuario__usuario=usr)
			consulta=list(Oficina.objects.exclude(pk=C.id_oficina.pk).exclude(estado_oficina=False).exclude(nombre_oficina="Gerencia").values('pk','nombre_oficina','estado_oficina'))
			for obj in consulta:
				dato={}
				dato['pk']= obj['pk']
				dato['nombre_oficina']= obj['nombre_oficina']
				lista.append(dato)
			if TConfiguracionSistema.objects.filter(conf3='si').exists():
				lista.append({'pk':'-2','nombre_oficina':'TESORERIA'})
			data= json.dumps(lista)
		except:
			data='error en consulta'
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

#devuelve la lista de sucurssales
"""
@login_required
def sucursales_trans_ajax_view(request):
	if request.is_ajax:
		usr= request.user.username
		try:
			lista=[]
			C = Cajas.objects.get(id_usuario__usuario=usr)
			O= Oficina.objects.get(pk= C.id_oficina.pk)
			consulta= list(Sucursal.objects.exclude(pk= O.nombre_sucursal.pk).values('nombre_sucursal','ciudad','descripcion'))
			for obj in consulta:
				lista.append(obj)
			data= json.dumps(lista)
		except:
			data='fail'
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)"""

@login_required
@permission_required('Main.add_oficina')
def listaClienteTotalAdmin_ajax_view(request):
	if request.is_ajax:
		ListaClientes=Cliente.objects.all()
		consulta= serializers.serialize('json',ListaClientes)
		data=consulta
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
@permission_required('Main.add_oficina')
def ConsultaCajaGeneral_view(request):
	return render(request,"ConsultaGeneral.html" )


@login_required
def consulta_PerIngreso_ajax_view(request):
	if request.is_ajax:
		usr = request.user.username
		filtro=request.GET.get('filtro','')
		F1=request.GET.get('F1','')
		F2=request.GET.get('F2','')
		totalD=0
		totalS=0
		UtilD = 0
		UtilS=0
		data=''
		try:
			if F1 != '':
				if filtro =='f':
					if F1 !='':
						st= SolicitudTransferencia.objects.filter(idCajaDebe__id_personal__usuario=usr,idCajaDebe__fecha=F1).values('pk','idCajaDebe','comision')
						UtilD= st.filter(idCajaDebe__moneda='dolares').aggregate(Sum('comision'))
						UtilS= st.filter(idCajaDebe__moneda='soles').aggregate(Sum('comision'))
						consulta = list(st)
					else:
						st= SolicitudTransferencia.objects.filter(idCajaDebe__id_personal__usuario=usr).values('pk','idCajaDebe','comision')
						UtilD= st.filter(idCajaDebe__moneda='dolares').aggregate(Sum('comision'))
						UtilS= st.filter(idCajaDebe__moneda='soles').aggregate(Sum('comision'))
						consulta = list(st)
				elif filtro=='ef':
					st=SolicitudTransferencia.objects.filter(idCajaDebe__id_personal__usuario=usr,idCajaDebe__fecha__range=(F1,F2)).values('pk','idCajaDebe','comision')
					UtilD= st.filter(idCajaDebe__moneda='dolares').aggregate(Sum('comision'))
					UtilS= st.filter(idCajaDebe__moneda='soles').aggregate(Sum('comision'))
					consulta = list(st)
				else:
					st= SolicitudTransferencia.objects.filter(idCajaDebe__id_personal__usuario=usr).values('pk','idCajaDebe','comision')
					UtilD= st.filter(idCajaDebe__moneda='dolares').aggregate(Sum('comision'))
					UtilS= st.filter(idCajaDebe__moneda='soles').aggregate(Sum('comision'))
					consulta = list(st)
			else:
				st= SolicitudTransferencia.objects.filter(idCajaDebe__id_personal__usuario=usr).values('pk','idCajaDebe','comision')
				UtilD= st.filter(idCajaDebe__moneda='dolares').aggregate(Sum('comision'))
				UtilS= st.filter(idCajaDebe__moneda='soles').aggregate(Sum('comision'))
				consulta = list(st)
			lista=[]
			for obj in consulta:
				dato={}
				CD= TCajaDebe.objects.get(pk=str(obj['idCajaDebe']))
				if str(CD.moneda)=='soles':
					totalS= totalS+CD.cantidadDinero
				if str(CD.moneda)=='dolares':
					totalD= totalD+CD.cantidadDinero
				dato['fecha'] = str(CD.fecha.strftime("%d-%m-%Y"))
				dato['concepto'] = str(CD.conceptoDetalle)
				dato['tipodoc']= str(CD.tipoDocumento)
				dato['moneda']= str(CD.moneda)
				dato['monto']= str(CD.cantidadDinero)
				dato['comision']= str(obj['comision'])
				lista.append(dato)
			total={}
			total['util_soles']= str(UtilS['comision__sum'])
			total['util_dolares']=str(UtilD['comision__sum'])
			total['total_soles']=str(totalS)
			total['total_dolares']=str(totalD)
			lista.append(total)
			data= json.dumps(lista)
		except:
			data='fail'
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
def consultaingresoParaDividir_ajax_view(request):
	if request.is_ajax:	
		usr = request.user.username
		filtro=request.GET.get('filtro','')
		F1=request.GET.get('F1','')
		F2=request.GET.get('F2','')
		idO=request.GET.get('ido')
		totalD=0
		totalS=0
		UtilD = 0
		UtilS=0
		data=''
		try:
			C = Cajas.objects.get(id_usuario__usuario=usr)
			if F1 != '':
				if filtro =='f':
					if F1 !='':
						
						fecha= datetime.datetime.strptime(F1, '%Y-%m-%d')
						horamin= datetime.datetime.combine(fecha,datetime.time.min)
						horamax= datetime.datetime.combine(fecha,datetime.time.max)
						st= SolicitudTransferencia.objects.filter(idCajaDebe__id_oficina=C.id_oficina.pk,id_oficina=idO,idCajaDebe__fecha__range=(horamin,horamax)).values('pk','idCajaDebe','comision')
						UtilD= st.filter(idCajaDebe__moneda='dolares').aggregate(Sum('comision'))
						UtilS= st.filter(idCajaDebe__moneda='soles').aggregate(Sum('comision'))
						consulta = list(st)
					else:
						"""st= SolicitudTransferencia.objects.filter(idCajaDebe__id_oficina=C.id_oficina.pk,id_oficina=idO).values('pk','idCajaDebe','comision')
						UtilD= st.filter(idCajaDebe__moneda='dolares').aggregate(Sum('comision'))
						UtilS= st.filter(idCajaDebe__moneda='soles').aggregate(Sum('comision'))
						consulta = list(st)"""
				elif filtro=='ef':
					fecha1= datetime.datetime.strptime(F1, '%Y-%m-%d')
					fecha2= datetime.datetime.strptime(F2, '%Y-%m-%d')
					fhoramin= datetime.datetime.combine(fecha1,datetime.time.min)
					fhoramax= datetime.datetime.combine(fecha2,datetime.time.max)
					st=SolicitudTransferencia.objects.filter(idCajaDebe__id_oficina=C.id_oficina.pk,id_oficina=idO,idCajaDebe__fecha__range=(fhoramin,fhoramax)).values('pk','idCajaDebe','comision')
					UtilD= st.filter(idCajaDebe__moneda='dolares').aggregate(Sum('comision'))
					UtilS= st.filter(idCajaDebe__moneda='soles').aggregate(Sum('comision'))
					consulta = list(st)
				else:
					"""st= SolicitudTransferencia.objects.filter(idCajaDebe__id_oficina=C.id_oficina.pk,id_oficina=idO).values('pk','idCajaDebe','comision')
					UtilD= st.filter(idCajaDebe__moneda='dolares').aggregate(Sum('comision'))
					UtilS= st.filter(idCajaDebe__moneda='soles').aggregate(Sum('comision'))
					consulta = list(st)"""
			else:
				"""st= SolicitudTransferencia.objects.filter(idCajaDebe__id_oficina=C.id_oficina.pk,id_oficina=idO).values('pk','idCajaDebe','comision')
				UtilD= st.filter(idCajaDebe__moneda='dolares').aggregate(Sum('comision'))
				UtilS= st.filter(idCajaDebe__moneda='soles').aggregate(Sum('comision'))
				consulta = list(st)"""
			lista=[]
			for obj in consulta:
				dato={}
				CD= TCajaDebe.objects.get(pk=str(obj['idCajaDebe']))
				dato['fecha'] = str(CD.fecha.strftime("%d-%m-%Y"))
				dato['concepto'] = str(CD.conceptoDetalle)
				dato['tipodoc']= str(CD.tipoDocumento)
				dato['moneda']= str(CD.moneda)
				dato['monto']= str(CD.cantidadDinero)
				dato['comision']= str(obj['comision'])
				lista.append(dato)
			total={}
			total['util_soles']= UtilS['comision__sum']
			total['util_dolares']=UtilD['comision__sum']
			lista.append(total)
			data= json.dumps(lista)
		except:
			data='fail'
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
def consulta_PerEgreso_ajax_view(request):
	if request.is_ajax:
		usr = request.user.username
		filtro=request.GET.get('filtro','')
		F1=request.GET.get('F1','')
		F2=request.GET.get('F2','')
		totalD=0
		totalS=0
		data=''
		try:
			if F1 != '':
				if filtro =='f':
					if F1 !='':
						consulta = list(TCajaHaber.objects.filter(id_personal__usuario=usr,fecha=F1).exclude(tablaRelacional='CajaCierre').values('fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda'))
					else:
						consulta = list(TCajaHaber.objects.filter(id_personal__usuario=usr).exclude(tablaRelacional='CajaCierre').values('fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda'))
				elif filtro=='ef':
					consulta = list(TCajaHaber.objects.filter(id_personal__usuario=usr,fecha__range=(F1,F2)).exclude(tablaRelacional='CajaCierre').values('fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda'))
				else:
					consulta = list(TCajaHaber.objects.filter(id_personal__usuario=usr).exclude(tablaRelacional='CajaCierre').values('fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda'))
			else:
				consulta = list(TCajaHaber.objects.filter(id_personal__usuario=usr).exclude(tablaRelacional='CajaCierre').values('fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda'))
			lista=[]
			for obj in consulta:
				dato={}
				if str(obj['moneda'])=='soles':
					totalS= totalS+obj['cantidadDinero']
				if str(obj['moneda'])=='dolares':
					totalD= totalD+obj['cantidadDinero']
				dato['fecha'] = str(obj['fecha'].strftime("%d-%m-%Y"))
				dato['concepto'] = str(obj['conceptoDetalle'])
				dato['tipodoc']= str(obj['tipoDocumento'])
				dato['moneda']= str(obj['moneda'])
				dato['monto']= str(obj['cantidadDinero'])
				lista.append(dato)
			total={}
			total['total_soles']=str(totalS)
			total['total_dolares']=str(totalD)
			lista.append(total)
			data= json.dumps(lista)
		except:
			data='fail'
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
def Recepcion_comisionDevidida_ajax_view(request):
	if request.is_ajax:
		usr = request.user.username
		data=''
		try:
			C= Cajas.objects.get(id_usuario__usuario=usr)
			consulta= list(TComisionDividida.objects.filter(oficina_destino=C.id_oficina.nombre_oficina,estado='enviado').values('pk','fecha','fechaDesde','fechaHasta','moneda','monto','oficina_origen'))
			lista=[]
			for obj in consulta:
				dato={}
				dato['pk']= obj['pk']
				dato['oficinaO']=obj['oficina_origen']
				dato['f']= str(obj['fecha'].strftime("%d-%m-%Y"))
				dato['fd']= str(obj['fechaDesde'].strftime("%d-%m-%Y"))
				dato['fh']=str(obj['fechaHasta'].strftime("%d-%m-%Y"))
				dato['moneda']= obj['moneda']
				dato['monto']= str(obj['monto'])
				lista.append(dato)
			data= json.dumps(lista)
		except:
			data='fail'
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)


@login_required
def validarDivicionC_ajax_view(request):
	if request.is_ajax:
		usr = request.user.username
		F1=request.GET.get('F1','')
		F2=request.GET.get('F2','')
		idO= request.GET.get('ido')
		data=''
		try:
			C= Cajas.objects.get(id_usuario__usuario=usr)
			O= Oficina.objects.get(pk=idO)
			if F2!='':
				if F2 !=F1:
					q=TComisionDividida.objects.filter(Q(fechaHasta__gte=F1,oficina_destino=O.nombre_oficina)|Q(fechaHasta__gte=F2,oficina_destino=O.nombre_oficina))
				else:
					q=TComisionDividida.objects.filter(Q(fechaHasta__gte=F1,oficina_destino=O.nombre_oficina))
			else:
				q=TComisionDividida.objects.filter(Q(fechaHasta__gte=F1,oficina_destino=O.nombre_oficina))
			if q.count()>0:
				data='fail'
			else:
				data='exito'
		except:
			data='fail'
	else:
		data='fail'
	mimetype="text"
	return HttpResponse(data,mimetype)#falta

@login_required
def validarCierre_ajax_view(request):
	if request.is_ajax:
		usr = request.user.username
		F1=request.GET.get('F1','')
		F2=request.GET.get('F2','')
		data=''
		try:
			if F1=='':
				F1=datetime.date.today()
			C= Cajas.objects.get(id_usuario__usuario=usr)
			if F2!='':
				if F2 !=F1:
					q=CajaCierre.objects.filter(Q(fechaHasta__gte=F1,id_caja=C.pk,estado="cerrado")|Q(fechaHasta__gte=F2,id_caja=C.pk,estado="cerrado"))
				else:
					q=CajaCierre.objects.filter(Q(fechaHasta__gte=F1,id_caja=C.pk,estado="cerrado"))
			else:
				q=CajaCierre.objects.filter(Q(fechaHasta__gte=F1,id_caja=C.pk,estado="cerrado"))
			if q.count()>0:
				data='fail'
			else:
				data='exito'

		except:
			data='fail'+str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="text"
	return HttpResponse(data,mimetype)

@login_required
def validarCierreDolares_ajax_view(request):
	if request.is_ajax:
		usr = request.user.username
		F1=request.GET.get('F1','')
		F2=request.GET.get('F2','')
		data=''
		try:
			if F1=='':
				F1=datetime.date.today()
			C= Cajas.objects.get(id_usuario__usuario=usr)
			if F2!='':
				if F2 !=F1:
					q=CajaCierreDolares.objects.filter(Q(fechaHasta__gte=F1,id_caja=C.pk,estado="cerrado")|Q(fechaHasta__gte=F2,id_caja=C.pk,estado="cerrado"))
				else:
					q=CajaCierreDolares.objects.filter(Q(fechaHasta__gte=F1,id_caja=C.pk,estado="cerrado"))
			else:
				q=CajaCierreDolares.objects.filter(Q(fechaHasta__gte=F1,id_caja=C.pk,estado="cerrado"))
			if q.count()>0:
				data='fail'
			else:
				data='exito'
		except:
			data='fail'
	else:
		data='fail'
	mimetype="text"
	return HttpResponse(data,mimetype)

@login_required
def validarCierreMaterial_ajax_view(request):
	if request.is_ajax:
		usr = request.user.username
		F1=request.GET.get('F1','')
		F2=request.GET.get('F2','')
		data=''
		try:
			if F1=='':
				F1=datetime.date.today()
			C= Cajas.objects.get(id_usuario__usuario=usr)
			if F2!='':
				if F2 !=F1:
					q=CajaCierreMaterial.objects.filter(Q(fechaHasta__gte=F1,id_caja=C.pk,estado="cerrado")|Q(fechaHasta__gte=F2,id_caja=C.pk,estado="cerrado"))
				else:
					q=CajaCierreMaterial.objects.filter(Q(fechaHasta__gte=F1,id_caja=C.pk,estado="cerrado"))
			else:
				q=CajaCierreMaterial.objects.filter(Q(fechaHasta__gte=F1,id_caja=C.pk,estado="cerrado"))
			if q.count()>0:
				data='fail'
			else:
				data='exito'
		except:
			data='fail'
	else:
		data='fail'
	mimetype="text"
	return HttpResponse(data,mimetype)

@login_required
def consultaCierre(request):
	if request.is_ajax:
		usr = request.user.username
		F1=request.GET.get('F1','')
		F2=request.GET.get('F2','')
		data=''
		try:
			C= Cajas.objects.get(id_usuario__usuario=usr)
			cajaC=CajaCierre.objects.get(fechaDesde=F1,estado='cerrado',id_caja=C.pk)
			lista=[]
			dato={}
			dato['pk']= cajaC.pk
			dato['Tingreso_soles']=cajaC.totalDebeSoles
			dato['Tingreso_dolraes']=cajaC.totalDebeDolares
			dato['Tegreso_soles']=cajaC.totalHaberSoles
			dato['Tegreso_dolares']=cajaC.totalHaberDolares
			dato['obs']=cajaC.observaciones
			dato['saldo_soles']= cajaC.saldo_soles
			dato['saldo_dolares']=cajaC.saldo_dolares
			dato['fd']= str(cajaC.fechaDesde)
			dato['fh']= str(cajaC.fechaHasta)
			dato['saldoI_soles']=cajaC.saldoInicial_soles
			dato['saldoI_dolares']=cajaC.saldoInicial_dolares
			lista.append(dato)
			data= json.dumps(lista)
		except :
			data= 'fail'+str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
@permission_required('Main.add_oficina')
def ConsultaGerenteCierre_ajax_view(request):
	if request.is_ajax:
		pag=request.GET.get('pg','')
		pg= 1
		if pag !='':
			pg= int(pag)
		desde= (pg-1)*20
		hasta= pg*20
		data=''
		try:
			consulta=list(CajaCierre.objects.all().order_by('-pk')[desde:hasta].values('pk','fecha','id_oficina','id_caja','totalDebeSoles','totalDebeDolares','totalHaberSoles','totalHaberDolares','observaciones','saldo_soles','saldo_dolares','fechaDesde','fechaHasta','estado','saldoInicial_soles','saldoInicial_dolares'))
			lista=[]
			for obj in consulta:
				dato={}
				C= Cajas.objects.get(pk=str(obj['id_caja']))
				O= Oficina.objects.get(pk=str(obj['id_oficina']))
				dato['pk']= obj['pk']
				dato['pkc']= obj['id_caja']
				dato['pko']= obj['id_oficina']
				dato['iso']=round(float(obj['totalDebeSoles']),2)
				dato['ido']=round(float(obj['totalDebeDolares']),2)
				dato['es']=round(float(obj['totalHaberSoles']),2)
				dato['ed']=round(float(obj['totalHaberDolares']),2)
				dato['obs']=obj['observaciones']
				dato['ss']= round(float(obj['saldo_soles']),2)
				dato['sd']=round(float(obj['saldo_dolares']),2)
				dato['fd']= str(obj['fechaDesde'])
				dato['fh']= str(obj['fechaHasta'])
				dato['sis']=round(float(obj['saldoInicial_soles']),2)
				dato['sid']=round(float(obj['saldoInicial_dolares']),2)
				dato['est']=obj['estado']
				dato['f']=str(obj['fecha'].strftime("%d-%m-%Y %H:%M"))
				dato['ofi']= O.nombre_oficina
				dato['caja']= C.nombre
				dato['o']= C.id_usuario.nombre +' '+C.id_usuario.Apellido_paterno+' '+C.id_usuario.Apellido_materno
				lista.append(dato)
			data= json.dumps(lista)
		except :
			data= 'fail'+str(sys.exc_info()[1])
	else:
		data='fail'+str(sys.exc_info()[1])
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
@permission_required('Main.add_oficina')
def ConsultaGerenteCierre_oficina_ajax_view(request):
	if request.is_ajax:
		ofi=request.GET.get('ofi')
		pag=request.GET.get('pg','')
		pg= 1
		if pag !='':
			pg= int(pag)
		desde= (pg-1)*20
		hasta= pg*20
		data=''
		try:
			consulta=list(CajaCierre.objects.filter(id_oficina=ofi).order_by('-pk')[desde:hasta].values('pk','fecha','id_oficina','id_caja','totalDebeSoles','totalDebeDolares','totalHaberSoles','totalHaberDolares','observaciones','saldo_soles','saldo_dolares','fechaDesde','fechaHasta','estado','saldoInicial_soles','saldoInicial_dolares'))
			lista=[]
			for obj in consulta:
				C= Cajas.objects.get(pk=str(obj['id_caja']))
				O= Oficina.objects.get(pk=str(obj['id_oficina']))
				dato={}
				dato['pk']= obj['pk']
				dato['pkc']= obj['id_caja']
				dato['pko']= obj['id_oficina']
				dato['iso']=round(float(obj['totalDebeSoles']),2)
				dato['ido']=round(float(obj['totalDebeDolares']),2)
				
				dato['es']=round(float(obj['totalHaberSoles']),2)
				dato['ed']=round(float(obj['totalHaberDolares']),2)
				
				dato['obs']=obj['observaciones']
				dato['ss']= round(float(obj['saldo_soles']),2)
				dato['sd']=round(float(obj['saldo_dolares']),2)
				
				dato['fd']= str(obj['fechaDesde'])
				dato['fh']= str(obj['fechaHasta'])
				dato['sis']=round(float(obj['saldoInicial_soles']),2)
				dato['sid']=round(float(obj['saldoInicial_dolares']),2)
				
				dato['est']=obj['estado']
				dato['f']=str(obj['fecha'].strftime("%d-%m-%Y %H:%M"))
				dato['ofi']= O.nombre_oficina
				dato['caja']= C.nombre
				dato['o']= C.id_usuario.nombre +' '+C.id_usuario.Apellido_paterno+' '+C.id_usuario.Apellido_materno
				lista.append(dato)
			data= json.dumps(lista)
		except :
			data= 'fail'+str(sys.exc_info()[1])
	else:
		data='fail'+str(sys.exc_info()[1])
	mimetype="application/json"
	return HttpResponse(data,mimetype)



@login_required
def consultaIngresoMaterialCierre_ajax_view(request):
	if request.is_ajax:
		usr = request.user.username
		filtro=request.GET.get('filtro','')
		F1=request.GET.get('F1','')
		F2=request.GET.get('F2','')
		if filtro=='h':
			F1= str(datetime.date.today())
			filtro= 'f'
		totalMaterial=0  
		data=''
		try:
			if F1 != '':
				if filtro =='f':
					if F1 !='':
						fecha= datetime.datetime.strptime(F1, '%Y-%m-%d')
						horamin= datetime.datetime.combine(fecha,datetime.time.min)
						horamax= datetime.datetime.combine(fecha,datetime.time.max)
						'''vm= TVentaMaterial.objects.filter(idCajaDebe__id_personal__usuario=usr,idCajaDebe__fecha__range=(horamin,horamax)).values('pk','idCajaDebe','comision','id_cliente','monto_conceptos')
						UtilD= st.filter(idCajaDebe__moneda='dolares').aggregate(Sum('comision'))
						UtilS= st.filter(idCajaDebe__moneda='soles').aggregate(Sum('comision'))
						consulta = list(st)'''
						consulta2= list(TCajaMaterialDebe.objects.filter(id_personal__usuario=usr,fecha__range=(horamin,horamax)).values('pk','fecha','conceptoDetalle','tipoDocumento','pesoGramos','tipoCambio','nroRecibo'))
					else:
						"""st= SolicitudTransferencia.objects.filter(idCajaDebe__id_personal__usuario=usr).values('pk','idCajaDebe','comision','id_cliente','monto_conceptos')
						UtilD= st.filter(idCajaDebe__moneda='dolares').aggregate(Sum('comision'))
						UtilS= st.filter(idCajaDebe__moneda='soles').aggregate(Sum('comision'))
						consulta = list(st)
						consulta2= list(TCajaDebe.objects.filter(id_personal__usuario=usr).exclude(tablaRelacional='SolicitudTransferencia').values('fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo'))"""
						data='fail'
				elif filtro=='ef':
					fecha1= datetime.datetime.strptime(F1, '%Y-%m-%d')
					fecha2= datetime.datetime.strptime(F2, '%Y-%m-%d')
					fhoramin= datetime.datetime.combine(fecha1,datetime.time.min)
					fhoramax= datetime.datetime.combine(fecha2,datetime.time.max)
					'''st=SolicitudTransferencia.objects.filter(idCajaDebe__id_personal__usuario=usr,idCajaDebe__fecha__range=(fhoramin,fhoramax)).values('pk','idCajaDebe','comision','id_cliente','monto_conceptos')
					UtilD= st.filter(idCajaDebe__moneda='dolares').aggregate(Sum('comision'))
					UtilS= st.filter(idCajaDebe__moneda='soles').aggregate(Sum('comision'))
					consulta = list(st)'''
					consulta2= list(TCajaMaterialDebe.objects.filter(id_personal__usuario=usr,fecha__range=(fhoramin,fhoramax)).values('pk','fecha','conceptoDetalle','tipoDocumento','pesoGramos','tipoCambio','nroRecibo'))
				else:
					"""st= SolicitudTransferencia.objects.filter(idCajaDebe__id_personal__usuario=usr).values('pk','idCajaDebe','comision','id_cliente','monto_conceptos')
					UtilD= st.filter(idCajaDebe__moneda='dolares').aggregate(Sum('comision'))
					UtilS= st.filter(idCajaDebe__moneda='soles').aggregate(Sum('comision'))
					consulta = list(st)
					consulta2= list(TCajaDebe.objects.filter(id_personal__usuario=usr).exclude(tablaRelacional='SolicitudTransferencia').values('fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo'))"""
					data='fail'
			else:
				F1= str(datetime.date.today())
				"""st= SolicitudTransferencia.objects.filter(idCajaDebe__id_personal__usuario=usr).values('pk','idCajaDebe','comision','id_cliente','monto_conceptos')
				UtilD= st.filter(idCajaDebe__moneda='dolares').aggregate(Sum('comision'))
				UtilS= st.filter(idCajaDebe__moneda='soles').aggregate(Sum('comision'))
				consulta = list(st)
				consulta2= list(TCajaDebe.objects.filter(id_personal__usuario=usr).exclude(tablaRelacional='SolicitudTransferencia').values('fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo'))"""
				fecha= datetime.datetime.strptime(F1, '%Y-%m-%d')
				horamin= datetime.datetime.combine(fecha,datetime.time.min)
				horamax= datetime.datetime.combine(fecha,datetime.time.max)
				'''st= SolicitudTransferencia.objects.filter(idCajaDebe__id_personal__usuario=usr,idCajaDebe__fecha__range=(horamin,horamax)).values('pk','idCajaDebe','comision','id_cliente','monto_conceptos')
				UtilD= st.filter(idCajaDebe__moneda='dolares').aggregate(Sum('comision'))
				UtilS= st.filter(idCajaDebe__moneda='soles').aggregate(Sum('comision'))
				consulta = list(st)'''
				consulta2= list(TCajaMaterialDebe.objects.filter(id_personal__usuario=usr,fecha__range=(horamin,horamax)).values('pk','fecha','conceptoDetalle','tipoDocumento','pesoGramos','tipoCambio','nroRecibo'))
			lista=[]
			for obj in consulta2:
				dato={}
				totalMaterial= totalMaterial+ConvertirDecimal(obj['pesoGramo'])
				dato['concepto']= obj['conceptoDetalle']
				dato['fecha'] = str(obj['fecha'].strftime("%d-%m-%Y %H:%M %p"))
				dato['tipodoc']= obj['tipoDocumento']
				dato['tipoCambio']= obj['tipoCambio']
				dato['pesoGramo']= normalizar(float(obj['pesoGramos']))
				dato['nroR']= obj['nroRecibo']
				lista.append(dato)

			total={}  
			total['total_material']=float(totalMaterial)
			lista.append(total)
			data= json.dumps(lista)
		except:
			data='fail'+str(sys.exc_info()[1])
	else:
		data='fail'+str(sys.exc_info()[1])
	mimetype="application/json"
	return HttpResponse(data,mimetype)


@login_required
def consultaIngresoCierre_ajax_view(request):
	if request.is_ajax:
		usr = request.user.username
		filtro=request.GET.get('filtro','')
		F1=request.GET.get('F1','')
		F2=request.GET.get('F2','')
		if filtro=='h':
			F1= str(datetime.date.today())
			filtro= 'f'
		totalD=0
		totalS=0
		UtilD = 0
		UtilS=0
		data=''
		try:
			C= Cajas.objects.get(id_usuario__usuario=usr)
			if F1 != '':
				if filtro =='f':
					if F1 !='':
						fecha= datetime.datetime.strptime(F1, '%Y-%m-%d')
						horamin= datetime.datetime.combine(fecha,datetime.time.min)
						horamax= datetime.datetime.combine(fecha,datetime.time.max)
						st= SolicitudTransferencia.objects.filter(idCajaDebe__id_caja=C.pk,idCajaDebe__fecha__range=(horamin,horamax)).values('pk','id_oficina','idCajaDebe','comision','id_cliente','monto_conceptos','nombre_beneficiado','Apellido_paterno_beneficiado','Apellido_materno_beneficiado')
						UtilD= st.filter(idCajaDebe__moneda='dolares').aggregate(Sum('comision'))
						UtilS= st.filter(idCajaDebe__moneda='soles').aggregate(Sum('comision'))
						consulta = list(st)
						consulta2= list(TCajaDebe.objects.filter(id_caja=C.pk,fecha__range=(horamin,horamax)).exclude(tablaRelacional='SolicitudTransferencia').values('pk','fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo'))
					else:
						data='fail'
				elif filtro=='ef':
					fecha1= datetime.datetime.strptime(F1, '%Y-%m-%d')
					fecha2= datetime.datetime.strptime(F2, '%Y-%m-%d')
					fhoramin= datetime.datetime.combine(fecha1,datetime.time.min)
					fhoramax= datetime.datetime.combine(fecha2,datetime.time.max)
					st=SolicitudTransferencia.objects.filter(idCajaDebe__id_caja=C.pk,idCajaDebe__fecha__range=(fhoramin,fhoramax)).values('pk','id_oficina','idCajaDebe','comision','id_cliente','monto_conceptos','nombre_beneficiado','Apellido_paterno_beneficiado','Apellido_materno_beneficiado')
					UtilD= st.filter(idCajaDebe__moneda='dolares').aggregate(Sum('comision'))
					UtilS= st.filter(idCajaDebe__moneda='soles').aggregate(Sum('comision'))
					consulta = list(st)
					consulta2= list(TCajaDebe.objects.filter(id_caja=C.pk,fecha__range=(fhoramin,fhoramax)).exclude(tablaRelacional='SolicitudTransferencia').values('pk','fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo'))
				else:
					data='fail'
			else:
				F1= str(datetime.date.today())
				fecha= datetime.datetime.strptime(F1, '%Y-%m-%d')
				horamin= datetime.datetime.combine(fecha,datetime.time.min)
				horamax= datetime.datetime.combine(fecha,datetime.time.max)
				st= SolicitudTransferencia.objects.filter(idCajaDebe__id_caja=C.pk,idCajaDebe__fecha__range=(horamin,horamax)).values('pk','id_oficina','idCajaDebe','comision','id_cliente','monto_conceptos','nombre_beneficiado','Apellido_paterno_beneficiado','Apellido_materno_beneficiado')
				UtilD= st.filter(idCajaDebe__moneda='dolares').aggregate(Sum('comision'))
				UtilS= st.filter(idCajaDebe__moneda='soles').aggregate(Sum('comision'))
				consulta = list(st)
				consulta2= list(TCajaDebe.objects.filter(id_caja=C.pk,fecha__range=(horamin,horamax)).exclude(tablaRelacional='SolicitudTransferencia').values('pk','fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo'))
			lista=[]
			tbancoD=0
			tbancoS=0
			tcapiD=0
			tcapiS=0
			aux_tc=0
			num_tc=0
			for obj in consulta:
				dato={}
				CD= TCajaDebe.objects.get(pk=str(obj['idCajaDebe']))
				Cl= Cliente.objects.get(pk=str(obj['id_cliente']))
				O_aux = Oficina.objects.get(pk= obj['id_oficina'])
				oori=''
				odest=O_aux.nombre_oficina
				if ST_BaseExterna.objects.filter(id_transferencia=obj['pk']).exists():
					stbe= ST_BaseExterna.objects.get(id_transferencia=obj['pk'])
					if stbe.id_base_des!= None and stbe.id_base_des!='':
						be2= Base_Ext.objects.get(pk=stbe.id_base_des)
						odest= be2.nombre_base
					if stbe.id_base_ori!= None and stbe.id_base_ori!='':
						be1= Base_Ext.objects.get(pk=stbe.id_base_ori)
						oori=' | De: '+'<b style="color: #d43f3a;">'+be1.nombre_base+'</b>' 

				usuGlo=''
				if CD.conceptoDetalle[2] =='-':
					usuGlo= CD.conceptoDetalle.split('-')[2]
				dato['usuGlo']= usuGlo[:10]
				#dato['concepto']= CD.conceptoDetalle +' departe de '+Cl.nombre+' '+Cl.Apellido_paterno
				dato['concepto']= 'Para: '+ obj['nombre_beneficiado'] +' '+ obj['Apellido_paterno_beneficiado']+' '+obj['Apellido_materno_beneficiado']+'<b style="color: #2e6da4;"> / '+odest+'</b>'+oori
				dato['fecha'] = str(CD.fecha.strftime("%d-%m-%Y %H:%M %p"))
				dato['tipodoc']= str(CD.tipoDocumento)
				dato['ope']= CD.id_personal.nombre + ' ' +CD.id_personal.Apellido_paterno +' '+CD.id_personal.Apellido_materno
				dato['moneda']= str(CD.moneda)
				dato['monto']= normalizar(float(CD.cantidadDinero))
				dato['comision']= str(obj['comision'])
				dato['comi_banco']= str(obj['monto_conceptos'])
				dato['nroR']= str(CD.nroRecibo)
				dato['capi']= 0
				dato['tcd']=''
				if str(CD.moneda)=='soles':
					totalS= totalS+ConvertirDecimal(CD.cantidadDinero)
					if obj['monto_conceptos'] != None and obj['monto_conceptos']!='':
						cap= float(CD.cantidadDinero) -float(obj['comision']) -float(obj['monto_conceptos'])
						dato['capi'] = cap
						tcapiS= tcapiS + cap
						tbancoS = tbancoS + float(obj['monto_conceptos'])
					else:
						cap= float(CD.cantidadDinero) -float(obj['comision'])
						dato['capi'] = cap
						tcapiS= tcapiS + cap
				if str(CD.moneda)=='dolares':
					totalD= totalD+ConvertirDecimal(CD.cantidadDinero)
					#if DebeDolar.objects.filter(idCajaDebe=CD.pk).exists():
					#	debedo=DebeDolar.objects.get(idCajaDebe=CD.pk)
					#	dato['tcd']=float(debedo.tipo_cambio)
					#	aux_tc=aux_tc+float(debedo.tipo_cambio)
					#	num_tc=num_tc+1
					if obj['monto_conceptos'] != None and obj['monto_conceptos']!='':
						cap= float(CD.cantidadDinero) -float(obj['comision']) -float(obj['monto_conceptos'])
						dato['capi'] = cap
						tcapiD= tcapiD + cap
						tbancoD = tbancoD + float(obj['monto_conceptos'])
					else:
						cap= float(CD.cantidadDinero) -float(obj['comision'])
						dato['capi'] = cap
						tcapiD= tcapiD + cap
				lista.append(dato)

			for obj1 in consulta2:
				CD= TCajaDebe.objects.get(pk=obj1['pk'])
				dato={}
				dato['tcd']=''
				if str(obj1['moneda'])=='soles':
					totalS= totalS+ConvertirDecimal(obj1['cantidadDinero'])
				if str(obj1['moneda'])=='dolares':
					totalD= totalD+ConvertirDecimal(obj1['cantidadDinero'])
					#if DebeDolar.objects.filter(idCajaDebe=CD.pk).exists():
					#	debedo=DebeDolar.objects.get(idCajaDebe=CD.pk)
					#	dato['tcd']=float(debedo.tipo_cambio)
					#	aux_tc=aux_tc+float(debedo.tipo_cambio)
					#	num_tc=num_tc+1
				dato['usuGlo']=''
				dato['concepto']= obj1['conceptoDetalle']
				dato['fecha'] = str(obj1['fecha'].strftime("%d-%m-%Y %H:%M %p"))
				dato['tipodoc']= obj1['tipoDocumento']
				dato['ope']= CD.id_personal.nombre + ' ' +CD.id_personal.Apellido_paterno +' '+CD.id_personal.Apellido_materno
				dato['moneda']= obj1['moneda']
				dato['monto']= normalizar(float(obj1['cantidadDinero']))
				dato['comision']= ''
				dato['comi_banco']= ''
				dato['capi']= ''
				dato['nroR']= obj1['nroRecibo']
				lista.append(dato)
			total={}
			total['util_soles']= str(UtilS['comision__sum'])
			total['util_dolares']=str(UtilD['comision__sum'])
			total['total_soles']=round(float(totalS),2)
			total['total_dolares']=round(float(totalD),2)
			total['tcapid']=float(tcapiD)
			total['tbancod']=float(tbancoD)
			total['tcapis']=float(tcapiS)
			total['tbancos']=float(tbancoS)
			total['prom_tcd']=''
			#if num_tc >0:
			#	total['prom_tcd']=round((aux_tc/num_tc),2)
			lista.append(total)
			data= json.dumps(lista)
		except:
			data='fail'+str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)




@login_required
def consultaIngresoCierreMaterial_ajax_view(request):
	if request.is_ajax:
		usr = request.user.username
		filtro=request.GET.get('filtro','')
		F1=request.GET.get('F1','')
		F2=request.GET.get('F2','')
		if filtro=='h':
			F1= str(datetime.date.today())
			filtro= 'f' 
		totalM=0
		data=''
		try:
			C= Cajas.objects.get(id_usuario__usuario=usr)
			if F1 != '':
				if filtro =='f':
					if F1 !='':
						fecha= datetime.datetime.strptime(F1, '%Y-%m-%d')
						horamin= datetime.datetime.combine(fecha,datetime.time.min)
						horamax= datetime.datetime.combine(fecha,datetime.time.max)
						consulta2= list(TCajaMaterialDebe.objects.filter(id_caja=C.pk,fecha__range=(horamin,horamax)).values('pk','fecha','conceptoDetalle','tipoDocumento','pesoGramos','nroRecibo'))
					else:
						data='fail'
				elif filtro=='ef':
					fecha1= datetime.datetime.strptime(F1, '%Y-%m-%d')
					fecha2= datetime.datetime.strptime(F2, '%Y-%m-%d')
					fhoramin= datetime.datetime.combine(fecha1,datetime.time.min)
					fhoramax= datetime.datetime.combine(fecha2,datetime.time.max)
					consulta2= list(TCajaMaterialDebe.objects.filter(id_caja=C.pk,fecha__range=(fhoramin,fhoramax)).values('pk','fecha','conceptoDetalle','tipoDocumento','pesoGramos','nroRecibo'))
				else:
					data='fail'
			else:
				F1= str(datetime.date.today())
				fecha= datetime.datetime.strptime(F1, '%Y-%m-%d')
				horamin= datetime.datetime.combine(fecha,datetime.time.min)
				horamax= datetime.datetime.combine(fecha,datetime.time.max)
				consulta2= list(TCajaMaterialDebe.objects.filter(id_caja=C.pk,fecha__range=(horamin,horamax)).values('pk','fecha','conceptoDetalle','tipoDocumento','pesoGramos','nroRecibo'))
			lista=[]
			 
			for obj1 in consulta2:
				CDM= TCajaMaterialDebe.objects.get(pk=obj1['pk'])
				dato={} 
				totalM= totalM+ConvertirDecimal(obj1['pesoGramos'])
				dato['concepto']= obj1['conceptoDetalle']
				dato['fecha'] = str(obj1['fecha'].strftime("%d-%m-%Y %H:%M %p"))
				dato['tipodoc']= obj1['tipoDocumento']
				dato['ope']= CDM.id_personal.nombre + ' ' +CDM.id_personal.Apellido_paterno +' '+CDM.id_personal.Apellido_materno
				dato['pesoGramos']= normalizar(float(obj1['pesoGramos']))
				dato['nroR']= obj1['nroRecibo']
				lista.append(dato)
			total={}
			total['total_material']=str(float(totalM))
			lista.append(total)
			data= json.dumps(lista)
		except:
			data='fail'+str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)


	

@login_required
def saldoinicial_ajax_view(request):
	usr = request.user.username
	if request.is_ajax:
		try:
			C = Cajas.objects.get(id_usuario__usuario=usr)
			SI_soles=0
			SI_dolares=0
			if CajaCierre.objects.filter(id_caja=C.pk,estado="cancelado").exists():
				Uc= CajaCierre.objects.filter(id_caja=C.pk,estado="cerrado").latest("fechaHasta")
				SI_soles=Uc.saldo_soles
				SI_dolares=Uc.saldo_dolares
				
			else:
				Sin=SaldoInicialCaja.objects.get(id_caja__id_usuario__usuario=usr)
				SI_soles=Sin.saldo_soles
				SI_dolares=Sin.saldo_dolares
			dato={}
			dato['sis']=str(SI_soles)
			dato['sid']= str(SI_dolares)
			lista=[]
			lista.append(dato)
			data= json.dumps(lista)
		except:
			data= 'error en consulta'+str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)


@login_required
def saldoinicialDolares_ajax_view(request):
	usr = request.user.username
	if request.is_ajax:
		try:
			C = Cajas.objects.get(id_usuario__usuario=usr)
			SI_soles=0
			SI_dolares=0
			if CajaCierreDolares.objects.filter(id_caja=C.pk,estado="cancelado").exists():
				Uc= CajaCierreDolares.objects.filter(id_caja=C.pk,estado="cerrado").latest("fechaHasta")
				SI_soles=Uc.saldo_soles
				SI_dolares=Uc.saldo_dolares
				
			else:
				Sin=SaldoInicialCajaCambio.objects.get(id_caja__id_usuario__usuario=usr)
				SI_soles=Sin.saldo_soles
				SI_dolares=Sin.saldo_dolares
			dato={}
			dato['sis']=str(SI_soles)
			dato['sid']= str(SI_dolares)
			lista=[]
			lista.append(dato)
			data= json.dumps(lista)
		except:
			data= str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
def saldoinicialMaterial_ajax_view(request):
	usr = request.user.username
	if request.is_ajax:
		try:
			C = Cajas.objects.get(id_usuario__usuario=usr)
			SI_material=0
			SI_soles=0
			SI_dolares=0
			if CajaCierreMaterial.objects.filter(id_caja=C.pk,estado="cancelado").exists(): 
				Uc= CajaCierreMaterial.objects.filter(id_caja=C.pk,estado='cerrado').latest("fechaHasta")
				SI_material=Uc.saldo_material
				SI_soles=Uc.saldo_soles
				SI_dolares=Uc.saldo_dolares
			else:
				Sin=SaldoInicialCajaMaterial.objects.get(id_caja__id_usuario__usuario=usr)
				SI_material=Sin.saldo_material
				SI_soles=Sin.saldo_soles
				SI_dolares=Sin.saldo_dolares

			dato={}
			dato['sim']=str(SI_material)
			dato['sis']=str(SI_soles)
			dato['sid']= str(SI_dolares)
			lista=[]
			lista.append(dato)
			data= json.dumps(lista)
		except:
			data= str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)


@login_required
def consultaEgresoMaterialCierre_ajax_view(request):
	if request.is_ajax:
		usr = request.user.username
		filtro=request.GET.get('filtro','')
		F1=request.GET.get('F1','')
		F2=request.GET.get('F2','')
		if filtro=='h':
			F1= str(datetime.date.today())
			filtro= 'f'
		totalMaterial=0 
		data=''
		try:
			if F1 != '':
				if filtro =='f':
					if F1 !='':
						fecha= datetime.datetime.strptime(F1, '%Y-%m-%d')
						horamin= datetime.datetime.combine(fecha,datetime.time.min)
						horamax= datetime.datetime.combine(fecha,datetime.time.max)
						consulta = list(TCajaMaterialHaber.objects.filter(id_personal__usuario=usr,fecha__range=(horamin,horamax)).values('pk','fecha','conceptoDetalle','tipoDocumento','pesoGramos','tipoCambio','nroRecibo'))
					else:
						#consulta = list(TCajaHaber.objects.filter(id_personal__usuario=usr).exclude(tablaRelacional='CajaCierre').values('pk','fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo'))
						data='fail'
				elif filtro=='ef':
					fecha1= datetime.datetime.strptime(F1, '%Y-%m-%d')
					fecha2= datetime.datetime.strptime(F2, '%Y-%m-%d')
					fhoramin= datetime.datetime.combine(fecha1,datetime.time.min)
					fhoramax= datetime.datetime.combine(fecha2,datetime.time.max)
					consulta = list(TCajaMaterialHaber.objects.filter(id_personal__usuario=usr,fecha__range=(fhoramin,fhoramax)).values('pk','fecha','conceptoDetalle','tipoDocumento','pesoGramos','tipoCambio','nroRecibo'))
				else:
					#consulta = list(TCajaHaber.objects.filter(id_personal__usuario=usr).exclude(tablaRelacional='CajaCierre').values('pk','fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo'))
					data='fail'
			else:
				#consulta = list(TCajaHaber.objects.filter(id_personal__usuario=usr).exclude(tablaRelacional='CajaCierre').values('pk','fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo'))
				F1= str(datetime.date.today())
				fecha= datetime.datetime.strptime(F1, '%Y-%m-%d')
				horamin= datetime.datetime.combine(fecha,datetime.time.min)
				horamax= datetime.datetime.combine(fecha,datetime.time.max)
				consulta = list(TCajaMaterialHaber.objects.filter(id_personal__usuario=usr,fecha__range=(horamin,horamax)).values('pk','fecha','conceptoDetalle','tipoDocumento','pesoGramos','tipoCambio','nroRecibo'))
			lista=[]
			for obj in consulta:
				dato={} 
				totalMaterial= totalMaterial+obj['cantidadDinero']
				dato['concepto']= obj['conceptoDetalle']
				dato['fecha'] = str(obj['fecha'].strftime("%d-%m-%Y %H:%M %p"))
				dato['tipodoc']= str(obj['tipoDocumento'])
				dato['tipoCambio']= str(obj['tipoCambio'])
				dato['pesoGramo']= normalizar(float(obj['pesoGramos']))
				dato['nroR']= str(obj['nroRecibo'])
				lista.append(dato)
			total={}
			total['total_material']=float(totalMaterial) 
			lista.append(total)
			data= json.dumps(lista)
		except:
			data='fail'+str(sys.exc_info()[1])
	else:
		data='fail'+str(sys.exc_info()[1])
	mimetype="application/json"
	return HttpResponse(data,mimetype)



@login_required
def consultaEgresoCierre_ajax_view(request):
	if request.is_ajax:
		usr = request.user.username
		filtro=request.GET.get('filtro','')
		F1=request.GET.get('F1','')
		F2=request.GET.get('F2','')
		if filtro=='h':
			F1= str(datetime.date.today())
			filtro= 'f'
		totalD=0
		totalS=0
		aux_tc=0
		num_tc=0
		data=''
		try:
			C= Cajas.objects.get(id_usuario__usuario=usr)
			if F1 != '':
				if filtro =='f':
					if F1 !='':
						fecha= datetime.datetime.strptime(F1, '%Y-%m-%d')
						horamin= datetime.datetime.combine(fecha,datetime.time.min)
						horamax= datetime.datetime.combine(fecha,datetime.time.max)
						consulta = list(TCajaHaber.objects.filter(id_caja=C.pk,fecha__range=(horamin,horamax)).exclude(tablaRelacional='CajaCierre').values('pk','fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo'))
					else:
						#consulta = list(TCajaHaber.objects.filter(id_personal__usuario=usr).exclude(tablaRelacional='CajaCierre').values('pk','fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo'))
						data='fail'
				elif filtro=='ef':
					fecha1= datetime.datetime.strptime(F1, '%Y-%m-%d')
					fecha2= datetime.datetime.strptime(F2, '%Y-%m-%d')
					fhoramin= datetime.datetime.combine(fecha1,datetime.time.min)
					fhoramax= datetime.datetime.combine(fecha2,datetime.time.max)
					consulta = list(TCajaHaber.objects.filter(id_caja=C.pk,fecha__range=(fhoramin,fhoramax)).exclude(tablaRelacional='CajaCierre').values('pk','fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo'))
				else:
					#consulta = list(TCajaHaber.objects.filter(id_personal__usuario=usr).exclude(tablaRelacional='CajaCierre').values('pk','fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo'))
					data='fail'
			else:
				#consulta = list(TCajaHaber.objects.filter(id_personal__usuario=usr).exclude(tablaRelacional='CajaCierre').values('pk','fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo'))
				F1= str(datetime.date.today())
				fecha= datetime.datetime.strptime(F1, '%Y-%m-%d')
				horamin= datetime.datetime.combine(fecha,datetime.time.min)
				horamax= datetime.datetime.combine(fecha,datetime.time.max)
				consulta = list(TCajaHaber.objects.filter(id_caja=C.pk,fecha__range=(horamin,horamax)).exclude(tablaRelacional='CajaCierre').values('pk','fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo'))
			lista=[]
			for obj in consulta:
				dato={}
				dato['tcd']=''
				if str(obj['moneda'])=='soles':
					totalS= totalS+obj['cantidadDinero']
				if str(obj['moneda'])=='dolares':
					totalD= totalD+obj['cantidadDinero']
					#if HaberDolar.objects.filter(idCajaHaber=obj['pk']).exists():
					#	debedo=HaberDolar.objects.get(idCajaHaber=obj['pk'])
					#	dato['tcd']=float(debedo.tipo_cambio)
					#	aux_tc=aux_tc+float(debedo.tipo_cambio)
					#	num_tc=num_tc+1

				dato['concepto']= obj['conceptoDetalle']
				dato['st']= ''
				if obj['conceptoDetalle']=='Pago transferencia':
					pt = PagoTransferencia.objects.get(idCajaHaber=obj['pk'])
					oori=pt.id_solicitud_transferencia.idCajaDebe.id_oficina.nombre_oficina
					odest=''
					if ST_BaseExterna.objects.filter(id_transferencia=pt.id_solicitud_transferencia.pk).exists():
						stbe= ST_BaseExterna.objects.get(id_transferencia=pt.id_solicitud_transferencia.pk)
						if stbe.id_base_ori!= None and stbe.id_base_ori!='':
							be2= Base_Ext.objects.get(pk=stbe.id_base_ori)
							oori= be2.nombre_base
						if stbe.id_base_des!= None and stbe.id_base_des!='':
							be1= Base_Ext.objects.get(pk=stbe.id_base_des)
							odest=' /'+'<b style="color: #d43f3a;">'+be1.nombre_base+'</b> | ' 
					dato['concepto']= 'A: '+pt.id_solicitud_transferencia.nombre_beneficiado +' '+pt.id_solicitud_transferencia.Apellido_paterno_beneficiado+' '+pt.id_solicitud_transferencia.Apellido_materno_beneficiado+odest+'<b style="color: #4cae4c;"> De: '+oori+ '</b> /<b  style="color: #d58512;">'+pt.id_solicitud_transferencia.idCajaDebe.id_personal.nombre +' '+pt.id_solicitud_transferencia.idCajaDebe.id_personal.Apellido_paterno+'<b>'
					dato['st'] = pt.id_solicitud_transferencia.idCajaDebe.nroRecibo
				dato['fecha'] = str(obj['fecha'].strftime("%d-%m-%Y %H:%M %p"))
				dato['tipodoc']= str(obj['tipoDocumento'])
				dato['moneda']= str(obj['moneda'])
				dato['monto']= normalizar(float(obj['cantidadDinero']))
				dato['nroR']= str(obj['nroRecibo'])
				dato['usuGlo']=''
				lista.append(dato)
			total={}
			total['total_soles']=round(float(totalS),2)
			total['total_dolares']=round(float(totalD),2)
			lista.append(total)
			data= json.dumps(lista)
		except:
			data='fail'
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)




@login_required
def consultaEgresoCierreMaterial_ajax_view(request):
	if request.is_ajax:
		usr = request.user.username
		filtro=request.GET.get('filtro','')
		F1=request.GET.get('F1','')
		F2=request.GET.get('F2','')
		if filtro=='h':
			F1= str(datetime.date.today())
			filtro= 'f'
		totalM=0 
		data=''
		try:
			C= Cajas.objects.get(id_usuario__usuario=usr)
			if F1 != '':
				if filtro =='f':
					if F1 !='':
						fecha= datetime.datetime.strptime(F1, '%Y-%m-%d')
						horamin= datetime.datetime.combine(fecha,datetime.time.min)
						horamax= datetime.datetime.combine(fecha,datetime.time.max)
						consulta = list(TCajaMaterialHaber.objects.filter(id_caja=C.pk,fecha__range=(horamin,horamax)).exclude(tablaRelacional='CajaCierre').values('pk','fecha','conceptoDetalle','tipoDocumento','pesoGramos','nroRecibo'))
					else:
						#consulta = list(TCajaHaber.objects.filter(id_personal__usuario=usr).exclude(tablaRelacional='CajaCierre').values('pk','fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo'))
						data='fail'
				elif filtro=='ef':
					fecha1= datetime.datetime.strptime(F1, '%Y-%m-%d')
					fecha2= datetime.datetime.strptime(F2, '%Y-%m-%d')
					fhoramin= datetime.datetime.combine(fecha1,datetime.time.min)
					fhoramax= datetime.datetime.combine(fecha2,datetime.time.max)
					consulta = list(TCajaMaterialHaber.objects.filter(id_caja=C.pk,fecha__range=(fhoramin,fhoramax)).exclude(tablaRelacional='CajaCierre').values('pk','fecha','conceptoDetalle','tipoDocumento','pesoGramos','nroRecibo'))
				else:
					#consulta = list(TCajaHaber.objects.filter(id_personal__usuario=usr).exclude(tablaRelacional='CajaCierre').values('pk','fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo'))
					data='fail'
			else:
				#consulta = list(TCajaHaber.objects.filter(id_personal__usuario=usr).exclude(tablaRelacional='CajaCierre').values('pk','fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo'))
				F1= str(datetime.date.today())
				fecha= datetime.datetime.strptime(F1, '%Y-%m-%d')
				horamin= datetime.datetime.combine(fecha,datetime.time.min)
				horamax= datetime.datetime.combine(fecha,datetime.time.max)
				consulta = list(TCajaMaterialHaber.objects.filter(id_caja=C.pk,fecha__range=(horamin,horamax)).exclude(tablaRelacional='CajaCierre').values('pk','fecha','conceptoDetalle','tipoDocumento','pesoGramos','nroRecibo'))
			lista=[]
			for obj in consulta:
				dato={} 
				totalM= totalM+obj['pesoGramos']
				dato['concepto']= obj['conceptoDetalle']
				dato['fecha'] = str(obj['fecha'].strftime("%d-%m-%Y %H:%M %p"))
				dato['tipodoc']= str(obj['tipoDocumento']) 
				dato['pesoGramos']= normalizar(float(obj['pesoGramos']))
				dato['nroR']= str(obj['nroRecibo'])
				
				lista.append(dato)
			total={}
			total['total_material']=str(float(totalM))
			lista.append(total)
			data= json.dumps(lista)
		except:
			data='fail'
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)



@login_required
def consultaIngresoCierre_oficina_admin_ajax_view(request):
	if request.is_ajax:
		filtro=request.GET.get('filtro','')
		pkc=request.GET.get('pkC')
		F1=request.GET.get('F1','')
		F2=request.GET.get('F2','')
		if filtro=='h':
			F1= str(datetime.date.today())
			filtro= 'f'
		totalD=0
		totalS=0
		UtilD = 0
		UtilS=0
		data=''
		try:
			C= Cajas.objects.get(pk=pkc)
			usr=C.id_usuario.usuario
			if F1 != '':
				if filtro =='f':
					if F1 !='':
						fecha= datetime.datetime.strptime(F1, '%Y-%m-%d')
						horamin= datetime.datetime.combine(fecha,datetime.time.min)
						horamax= datetime.datetime.combine(fecha,datetime.time.max)
						st= SolicitudTransferencia.objects.filter(idCajaDebe__id_caja=C.pk,idCajaDebe__fecha__range=(horamin,horamax)).values('pk','id_oficina','idCajaDebe','comision','id_cliente','monto_conceptos','nombre_beneficiado','Apellido_paterno_beneficiado','Apellido_materno_beneficiado')
						UtilD= st.filter(idCajaDebe__moneda='dolares').aggregate(Sum('comision'))
						UtilS= st.filter(idCajaDebe__moneda='soles').aggregate(Sum('comision'))
						consulta = list(st)
						consulta2= list(TCajaDebe.objects.filter(id_caja=C.pk,fecha__range=(horamin,horamax)).exclude(tablaRelacional='SolicitudTransferencia').values('pk','fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo'))
					else:
						data='fail'
				elif filtro=='ef':
					fecha1= datetime.datetime.strptime(F1, '%Y-%m-%d')
					fecha2= datetime.datetime.strptime(F2, '%Y-%m-%d')
					fhoramin= datetime.datetime.combine(fecha1,datetime.time.min)
					fhoramax= datetime.datetime.combine(fecha2,datetime.time.max)
					st=SolicitudTransferencia.objects.filter(idCajaDebe__id_caja=C.pk,idCajaDebe__fecha__range=(fhoramin,fhoramax)).values('pk','id_oficina','idCajaDebe','comision','id_cliente','monto_conceptos','nombre_beneficiado','Apellido_paterno_beneficiado','Apellido_materno_beneficiado')
					UtilD= st.filter(idCajaDebe__moneda='dolares').aggregate(Sum('comision'))
					UtilS= st.filter(idCajaDebe__moneda='soles').aggregate(Sum('comision'))
					consulta = list(st)
					consulta2= list(TCajaDebe.objects.filter(id_caja=C.pk,fecha__range=(fhoramin,fhoramax)).exclude(tablaRelacional='SolicitudTransferencia').values('pk','fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo'))
				else:
					data='fail'
			else:
				F1= str(datetime.date.today())
				fecha= datetime.datetime.strptime(F1, '%Y-%m-%d')
				horamin= datetime.datetime.combine(fecha,datetime.time.min)
				horamax= datetime.datetime.combine(fecha,datetime.time.max)
				st= SolicitudTransferencia.objects.filter(idCajaDebe__id_caja=C.pk,idCajaDebe__fecha__range=(horamin,horamax)).values('pk','id_oficina','idCajaDebe','comision','id_cliente','monto_conceptos','nombre_beneficiado','Apellido_paterno_beneficiado','Apellido_materno_beneficiado')
				UtilD= st.filter(idCajaDebe__moneda='dolares').aggregate(Sum('comision'))
				UtilS= st.filter(idCajaDebe__moneda='soles').aggregate(Sum('comision'))
				consulta = list(st)
				consulta2= list(TCajaDebe.objects.filter(id_caja=C.pk,fecha__range=(horamin,horamax)).exclude(tablaRelacional='SolicitudTransferencia').values('pk','fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo'))
			lista=[]
			tbancoD=0
			tbancoS=0
			tcapiD=0
			tcapiS=0
			aux_tc=0
			num_tc=0
			for obj in consulta:
				dato={}
				CD= TCajaDebe.objects.get(pk=str(obj['idCajaDebe']))
				Cl= Cliente.objects.get(pk=str(obj['id_cliente']))
				O_aux = Oficina.objects.get(pk= obj['id_oficina'])
				oori=''
				odest=O_aux.nombre_oficina
				if ST_BaseExterna.objects.filter(id_transferencia=obj['pk']).exists():
					stbe= ST_BaseExterna.objects.get(id_transferencia=obj['pk'])
					if stbe.id_base_des!= None and stbe.id_base_des!='':
						be2= Base_Ext.objects.get(pk=stbe.id_base_des)
						odest= be2.nombre_base
					if stbe.id_base_ori!= None and stbe.id_base_ori!='':
						be1= Base_Ext.objects.get(pk=stbe.id_base_ori)
						oori=' | De: '+'<b style="color: #d43f3a;">'+be1.nombre_base+'</b>' 

				usuGlo=''
				if CD.conceptoDetalle[2] =='-':
					usuGlo= CD.conceptoDetalle.split('-')[2]
				dato['usuGlo']= usuGlo[:10]
				#dato['concepto']= CD.conceptoDetalle +' departe de '+Cl.nombre+' '+Cl.Apellido_paterno
				dato['concepto']= 'Para: '+ obj['nombre_beneficiado'] +' '+ obj['Apellido_paterno_beneficiado']+' '+obj['Apellido_materno_beneficiado']+'<b style="color: #2e6da4;"> / '+odest+'</b>'+oori
				dato['fecha'] = str(CD.fecha.strftime("%d-%m-%Y %H:%M %p"))
				dato['tipodoc']= str(CD.tipoDocumento)
				dato['ope']= CD.id_personal.nombre + ' ' +CD.id_personal.Apellido_paterno +' '+CD.id_personal.Apellido_materno
				dato['moneda']= str(CD.moneda)
				dato['monto']= normalizar(float(CD.cantidadDinero))
				dato['comision']= str(obj['comision'])
				dato['comi_banco']= str(obj['monto_conceptos'])
				dato['nroR']= str(CD.nroRecibo)
				dato['capi']= 0
				dato['tcd']=''
				if str(CD.moneda)=='soles':
					totalS= totalS+ConvertirDecimal(CD.cantidadDinero)
					if obj['monto_conceptos'] != None and obj['monto_conceptos']!='':
						cap= float(CD.cantidadDinero) -float(obj['comision']) -float(obj['monto_conceptos'])
						dato['capi'] = cap
						tcapiS= tcapiS + cap
						tbancoS = tbancoS + float(obj['monto_conceptos'])
					else:
						cap= float(CD.cantidadDinero) -float(obj['comision'])
						dato['capi'] = cap
						tcapiS= tcapiS + cap
				if str(CD.moneda)=='dolares':
					totalD= totalD+ConvertirDecimal(CD.cantidadDinero)
					if DebeDolar.objects.filter(idCajaDebe=CD.pk).exists():
						debedo=DebeDolar.objects.get(idCajaDebe=CD.pk)
						dato['tcd']=float(debedo.tipo_cambio)
						aux_tc=aux_tc+float(debedo.tipo_cambio)
						num_tc=num_tc+1
					if obj['monto_conceptos'] != None and obj['monto_conceptos']!='':
						cap= float(CD.cantidadDinero) -float(obj['comision']) -float(obj['monto_conceptos'])
						dato['capi'] = cap
						tcapiD= tcapiD + cap
						tbancoD = tbancoD + float(obj['monto_conceptos'])
					else:
						cap= float(CD.cantidadDinero) -float(obj['comision'])
						dato['capi'] = cap
						tcapiD= tcapiD + cap
				lista.append(dato)

			for obj1 in consulta2:
				CD= TCajaDebe.objects.get(pk=obj1['pk'])
				dato={}
				dato['tcd']=''
				if str(obj1['moneda'])=='soles':
					totalS= totalS+ConvertirDecimal(obj1['cantidadDinero'])
				if str(obj1['moneda'])=='dolares':
					totalD= totalD+ConvertirDecimal(obj1['cantidadDinero'])
					if DebeDolar.objects.filter(idCajaDebe=CD.pk).exists():
						debedo=DebeDolar.objects.get(idCajaDebe=CD.pk)
						dato['tcd']=float(debedo.tipo_cambio)
						aux_tc=aux_tc+float(debedo.tipo_cambio)
						num_tc=num_tc+1
				dato['usuGlo']=''
				dato['concepto']= obj1['conceptoDetalle']
				dato['fecha'] = str(obj1['fecha'].strftime("%d-%m-%Y %H:%M %p"))
				dato['tipodoc']= obj1['tipoDocumento']
				dato['ope']= CD.id_personal.nombre + ' ' +CD.id_personal.Apellido_paterno +' '+CD.id_personal.Apellido_materno
				dato['moneda']= obj1['moneda']
				dato['monto']= normalizar(float(obj1['cantidadDinero']))
				dato['comision']= ''
				dato['comi_banco']= ''
				dato['capi']= ''
				dato['nroR']= obj1['nroRecibo']
				lista.append(dato)
			total={}
			total['util_soles']= str(UtilS['comision__sum'])
			total['util_dolares']=str(UtilD['comision__sum'])
			total['total_soles']=str(totalS)
			total['total_dolares']=str(totalD)
			total['tcapid']=str(tcapiD)
			total['tbancod']=str(tbancoD)
			total['tcapis']=str(tcapiS)
			total['tbancos']=str(tbancoS)
			total['prom_tcd']=''
			if num_tc >0:
				total['prom_tcd']=round((aux_tc/num_tc),2)
			lista.append(total)
			data= json.dumps(lista)
		except:
			data='fail'
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)



@login_required
@permission_required('Main.add_oficina')
def consultaIngresoMaterialCierre_oficina_admin_ajax_view(request):
	if request.is_ajax:
		filtro=request.GET.get('filtro','')
		pkc=request.GET.get('pkC')
		F1=request.GET.get('F1','')
		F2=request.GET.get('F2','')
		if filtro=='h':
			F1= str(datetime.date.today())
			filtro= 'f'
		totalMaterial=0 
		data=''
		try:
			C= Cajas.objects.get(pk=pkc)
			usr=C.id_usuario.usuario
			if F1 != '':
				if filtro =='f':
					if F1 !='':
						fecha= datetime.datetime.strptime(F1, '%Y-%m-%d')
						horamin= datetime.datetime.combine(fecha,datetime.time.min)
						horamax= datetime.datetime.combine(fecha,datetime.time.max)
						consulta2= list(TCajaMaterialDebe.objects.filter(id_personal__usuario=usr,fecha__range=(horamin,horamax)).values('pk','fecha','conceptoDetalle','tipoDocumento','pesoGramos','tipoCambio','nroRecibo'))
					else:
						"""st= SolicitudTransferencia.objects.filter(idCajaDebe__id_personal__usuario=usr).values('pk','idCajaDebe','comision','id_cliente','monto_conceptos')
						UtilD= st.filter(idCajaDebe__moneda='dolares').aggregate(Sum('comision'))
						UtilS= st.filter(idCajaDebe__moneda='soles').aggregate(Sum('comision'))
						consulta = list(st)
						consulta2= list(TCajaDebe.objects.filter(id_personal__usuario=usr).exclude(tablaRelacional='SolicitudTransferencia').values('fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo'))"""
						data='fail'
				elif filtro=='ef':
					fecha1= datetime.datetime.strptime(F1, '%Y-%m-%d')
					fecha2= datetime.datetime.strptime(F2, '%Y-%m-%d')
					fhoramin= datetime.datetime.combine(fecha1,datetime.time.min)
					fhoramax= datetime.datetime.combine(fecha2,datetime.time.max)
					consulta2= list(TCajaMaterialDebe.objects.filter(id_personal__usuario=usr,fecha__range=(fhoramin,fhoramax)).values('pk','fecha','conceptoDetalle','tipoDocumento','pesoGramos','tipoCambio','nroRecibo'))
				else:
					"""st= SolicitudTransferencia.objects.filter(idCajaDebe__id_personal__usuario=usr).values('pk','idCajaDebe','comision','id_cliente','monto_conceptos')
					UtilD= st.filter(idCajaDebe__moneda='dolares').aggregate(Sum('comision'))
					UtilS= st.filter(idCajaDebe__moneda='soles').aggregate(Sum('comision'))
					consulta = list(st)
					consulta2= list(TCajaDebe.objects.filter(id_personal__usuario=usr).exclude(tablaRelacional='SolicitudTransferencia').values('fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo'))"""
					data='fail'
			else:
				F1= str(datetime.date.today())
				"""st= SolicitudTransferencia.objects.filter(idCajaDebe__id_personal__usuario=usr).values('pk','idCajaDebe','comision','id_cliente','monto_conceptos')
				UtilD= st.filter(idCajaDebe__moneda='dolares').aggregate(Sum('comision'))
				UtilS= st.filter(idCajaDebe__moneda='soles').aggregate(Sum('comision'))
				consulta = list(st)
				consulta2= list(TCajaDebe.objects.filter(id_personal__usuario=usr).exclude(tablaRelacional='SolicitudTransferencia').values('fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo'))"""
				fecha= datetime.datetime.strptime(F1, '%Y-%m-%d')
				horamin= datetime.datetime.combine(fecha,datetime.time.min)
				horamax= datetime.datetime.combine(fecha,datetime.time.max)
				consulta2= list(TCajaMaterialDebe.objects.filter(id_personal__usuario=usr,fecha__range=(horamin,horamax)).values('pk','fecha','conceptoDetalle','tipoDocumento','pesoGramos','tipoCambio','nroRecibo'))
			lista=[]
			for obj in consulta2:
				dato={}
				totalMaterial= totalMaterial+ConvertirDecimal(obj['pesoGramo'])
				dato['concepto']= obj['conceptoDetalle']
				dato['fecha'] = str(obj['fecha'].strftime("%d-%m-%Y %H:%M %p"))
				dato['tipodoc']= obj['tipoDocumento']
				dato['tipoCambio']= obj['tipoCambio']
				dato['pesoGramo']= normalizar(float(obj['pesoGramos']))
				dato['nroR']= obj['nroRecibo']
				lista.append(dato)
			
			total={}  
			total['total_material']=float(totalMaterial)
			lista.append(total)
			data= json.dumps(lista)
		except:
			data='fail'
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)





@login_required
@permission_required('Main.add_oficina')
def consultaEgresoMaterialCierre_oficina_admin_ajax_view(request):
	if request.is_ajax:
		filtro=request.GET.get('filtro','')
		pkc=request.GET.get('pkC')
		F1=request.GET.get('F1','')
		F2=request.GET.get('F2','')
		if filtro=='h':
			F1= str(datetime.date.today())
			filtro= 'f'
		totalMaterial=0
		data=''
		try:
			C= Cajas.objects.get(pk=pkc)
			usr=C.id_usuario.usuario
			if F1 != '':
				if filtro =='f':
					if F1 !='':
						fecha= datetime.datetime.strptime(F1, '%Y-%m-%d')
						horamin= datetime.datetime.combine(fecha,datetime.time.min)
						horamax= datetime.datetime.combine(fecha,datetime.time.max)
						consulta = list(TCajaMaterialHaber.objects.filter(id_personal__usuario=usr,fecha__range=(horamin,horamax)).values('pk','fecha','conceptoDetalle','tipoDocumento','pesoGramos','tipoCambio','nroRecibo'))
					else:
						#consulta = list(TCajaHaber.objects.filter(id_personal__usuario=usr).exclude(tablaRelacional='CajaCierre').values('pk','fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo'))
						data='fail'
				elif filtro=='ef':
					fecha1= datetime.datetime.strptime(F1, '%Y-%m-%d')
					fecha2= datetime.datetime.strptime(F2, '%Y-%m-%d')
					fhoramin= datetime.datetime.combine(fecha1,datetime.time.min)
					fhoramax= datetime.datetime.combine(fecha2,datetime.time.max)
					consulta = list(TCajaMaterialHaber.objects.filter(id_personal__usuario=usr,fecha__range=(fhoramin,fhoramax)).values('pk','fecha','conceptoDetalle','tipoDocumento','pesoGramos','tipoCambio','nroRecibo'))
				else:
					#consulta = list(TCajaHaber.objects.filter(id_personal__usuario=usr).exclude(tablaRelacional='CajaCierre').values('pk','fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo'))
					data='fail'
			else:
				#consulta = list(TCajaHaber.objects.filter(id_personal__usuario=usr).exclude(tablaRelacional='CajaCierre').values('pk','fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo'))
				F1= str(datetime.date.today())
				fecha= datetime.datetime.strptime(F1, '%Y-%m-%d')
				horamin= datetime.datetime.combine(fecha,datetime.time.min)
				horamax= datetime.datetime.combine(fecha,datetime.time.max)
				consulta = list(TCajaMaterialHaber.objects.filter(id_personal__usuario=usr,fecha__range=(horamin,horamax)).values('pk','fecha','conceptoDetalle','tipoDocumento','pesoGramos','tipoCambio','nroRecibo'))
			
			lista=[]
			for obj in consulta:
				dato={} 
				totalMaterial= totalMaterial+obj['cantidadDinero'] 
				dato['concepto']= obj['conceptoDetalle']
				dato['fecha'] = str(obj['fecha'].strftime("%d-%m-%Y %H:%M %p"))
				dato['tipodoc']= str(obj['tipoDocumento'])
				dato['tipoCambio']= str(obj['tipoCambio'])
				dato['pesoGramo']= normalizar(float(obj['pesoGramos']))
				dato['nroR']= str(obj['nroRecibo'])
				lista.append(dato)
			total={}
			total['total_material']=float(totalMaterial) 
			lista.append(total)
			data= json.dumps(lista)
		except:
			data='fail'
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)





@login_required
def consultaEgresoCierre_oficina_admin_ajax_view(request):
	if request.is_ajax:
		filtro=request.GET.get('filtro','')
		pkc=request.GET.get('pkC')
		F1=request.GET.get('F1','')
		F2=request.GET.get('F2','')
		if filtro=='h':
			F1= str(datetime.date.today())
			filtro= 'f'
		totalD=0
		totalS=0
		aux_tc=0
		num_tc=0
		data=''
		try:
			C= Cajas.objects.get(pk=pkc)
			usr=C.id_usuario.usuario
			if F1 != '':
				if filtro =='f':
					if F1 !='':
						fecha= datetime.datetime.strptime(F1, '%Y-%m-%d')
						horamin= datetime.datetime.combine(fecha,datetime.time.min)
						horamax= datetime.datetime.combine(fecha,datetime.time.max)
						consulta = list(TCajaHaber.objects.filter(id_caja=C.pk,fecha__range=(horamin,horamax)).exclude(tablaRelacional='CajaCierre').values('pk','fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo'))
					else:
						data='fail'
				elif filtro=='ef':
					fecha1= datetime.datetime.strptime(F1, '%Y-%m-%d')
					fecha2= datetime.datetime.strptime(F2, '%Y-%m-%d')
					fhoramin= datetime.datetime.combine(fecha1,datetime.time.min)
					fhoramax= datetime.datetime.combine(fecha2,datetime.time.max)
					consulta = list(TCajaHaber.objects.filter(id_caja=C.pk,fecha__range=(fhoramin,fhoramax)).exclude(tablaRelacional='CajaCierre').values('pk','fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo'))
				else:
					#consulta = list(TCajaHaber.objects.filter(id_personal__usuario=usr).exclude(tablaRelacional='CajaCierre').values('pk','fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo'))
					data='fail'
			else:
				#consulta = list(TCajaHaber.objects.filter(id_personal__usuario=usr).exclude(tablaRelacional='CajaCierre').values('pk','fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo'))
				F1= str(datetime.date.today())
				fecha= datetime.datetime.strptime(F1, '%Y-%m-%d')
				horamin= datetime.datetime.combine(fecha,datetime.time.min)
				horamax= datetime.datetime.combine(fecha,datetime.time.max)
				consulta = list(TCajaHaber.objects.filter(id_personal__usuario=usr,fecha__range=(horamin,horamax)).exclude(tablaRelacional='CajaCierre').values('pk','fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo'))
			lista=[]
			for obj in consulta:
				dato={}
				dato['tcd']=''
				if str(obj['moneda'])=='soles':
					totalS= totalS+obj['cantidadDinero']
				if str(obj['moneda'])=='dolares':
					totalD= totalD+obj['cantidadDinero']
					if HaberDolar.objects.filter(idCajaHaber=obj['pk']).exists():
						debedo=HaberDolar.objects.get(idCajaHaber=obj['pk'])
						dato['tcd']=float(debedo.tipo_cambio)
						aux_tc=aux_tc+float(debedo.tipo_cambio)
						num_tc=num_tc+1
				dato['concepto']= obj['conceptoDetalle']
				dato['st']=''
				if obj['conceptoDetalle']=='Pago transferencia':
					pt = PagoTransferencia.objects.get(idCajaHaber=obj['pk'])
					oori=pt.id_solicitud_transferencia.idCajaDebe.id_oficina.nombre_oficina
					odest=''
					if ST_BaseExterna.objects.filter(id_transferencia=pt.id_solicitud_transferencia.pk).exists():
						stbe= ST_BaseExterna.objects.get(id_transferencia=pt.id_solicitud_transferencia.pk)
						if stbe.id_base_ori!= None and stbe.id_base_ori!='':
							be2= Base_Ext.objects.get(pk=stbe.id_base_ori)
							oori= be2.nombre_base
						if stbe.id_base_des!= None and stbe.id_base_des!='':
							be1= Base_Ext.objects.get(pk=stbe.id_base_des)
							odest=' /'+'<b style="color: #d43f3a;">'+be1.nombre_base+'</b> | ' 
					dato['concepto']= 'A: '+pt.id_solicitud_transferencia.nombre_beneficiado +' '+pt.id_solicitud_transferencia.Apellido_paterno_beneficiado+' '+pt.id_solicitud_transferencia.Apellido_materno_beneficiado+odest+'<b style="color: #4cae4c;"> De: '+oori+ '</b> /<b  style="color: #d58512;">'+pt.id_solicitud_transferencia.idCajaDebe.id_personal.nombre +' '+pt.id_solicitud_transferencia.idCajaDebe.id_personal.Apellido_paterno+'<b>'
					dato['st'] = pt.id_solicitud_transferencia.idCajaDebe.nroRecibo
				dato['fecha'] = str(obj['fecha'].strftime("%d-%m-%Y %H:%M %p"))
				dato['tipodoc']= str(obj['tipoDocumento'])
				dato['moneda']= str(obj['moneda'])
				dato['monto']= normalizar(float(obj['cantidadDinero']))
				dato['nroR']= str(obj['nroRecibo'])
				dato['usuGlo']=''
				lista.append(dato)
			total={}
			total['total_soles']=str(totalS)
			total['total_dolares']=str(totalD)
			lista.append(total)
			data= json.dumps(lista)
		except:
			data='fail'+ str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)


@login_required
@permission_required('Main.add_oficina')
def listaTransfereciasTotalAdmin_ajax_view(request):
	if request.is_ajax:
		trasnf=[]
		data = json.dumps(trasnf)
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)


#******************************* ADMIN ***************************************
@login_required
@permission_required('Main.add_oficina')
def consultaIngresoCierre_oficina_report_ajax_view(request):
	if request.is_ajax:
		filtro=request.GET.get('filtro','')
		pkc=request.GET.get('pkC')
		F1=request.GET.get('F1','')
		F2=request.GET.get('F2','')
		if filtro=='h':
			F1= str(datetime.date.today())
			filtro= 'f'
		totalD=0
		totalS=0
		UtilD = 0
		UtilS=0
		data=''
		try:
			C= Cajas.objects.get(pk=pkc)
			usr=C.id_usuario.usuario
			if F1 != '':
				if filtro =='f':
					if F1 !='':
						fecha= datetime.datetime.strptime(F1, '%Y-%m-%d')
						horamin= datetime.datetime.combine(fecha,datetime.time.min)
						horamax= datetime.datetime.combine(fecha,datetime.time.max)
						st= SolicitudTransferencia.objects.filter(idCajaDebe__id_caja=C.pk,idCajaDebe__fecha__range=(horamin,horamax)).values('pk','id_oficina','idCajaDebe','comision','id_cliente','monto_conceptos','nombre_beneficiado','Apellido_paterno_beneficiado','Apellido_materno_beneficiado')
						UtilD= st.filter(idCajaDebe__moneda='dolares').aggregate(Sum('comision'))
						UtilS= st.filter(idCajaDebe__moneda='soles').aggregate(Sum('comision'))
						consulta = list(st)
						consulta2= list(TCajaDebe.objects.filter(id_caja=C.pk,fecha__range=(horamin,horamax)).exclude(tablaRelacional='SolicitudTransferencia').values('pk','fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo'))
					else:
						data='fail'
				elif filtro=='ef':
					fecha1= datetime.datetime.strptime(F1, '%Y-%m-%d')
					fecha2= datetime.datetime.strptime(F2, '%Y-%m-%d')
					fhoramin= datetime.datetime.combine(fecha1,datetime.time.min)
					fhoramax= datetime.datetime.combine(fecha2,datetime.time.max)
					st=SolicitudTransferencia.objects.filter(idCajaDebe__id_caja=C.pk,idCajaDebe__fecha__range=(fhoramin,fhoramax)).values('pk','id_oficina','idCajaDebe','comision','id_cliente','monto_conceptos','nombre_beneficiado','Apellido_paterno_beneficiado','Apellido_materno_beneficiado')
					UtilD= st.filter(idCajaDebe__moneda='dolares').aggregate(Sum('comision'))
					UtilS= st.filter(idCajaDebe__moneda='soles').aggregate(Sum('comision'))
					consulta = list(st)
					consulta2= list(TCajaDebe.objects.filter(id_caja=C.pk,fecha__range=(fhoramin,fhoramax)).exclude(tablaRelacional='SolicitudTransferencia').values('pk','fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo'))
				else:
					data='fail'
			else:
				F1= str(datetime.date.today())
				fecha= datetime.datetime.strptime(F1, '%Y-%m-%d')
				horamin= datetime.datetime.combine(fecha,datetime.time.min)
				horamax= datetime.datetime.combine(fecha,datetime.time.max)
				st= SolicitudTransferencia.objects.filter(idCajaDebe__id_caja=C.pk,idCajaDebe__fecha__range=(horamin,horamax)).values('pk','id_oficina','idCajaDebe','comision','id_cliente','monto_conceptos','nombre_beneficiado','Apellido_paterno_beneficiado','Apellido_materno_beneficiado')
				UtilD= st.filter(idCajaDebe__moneda='dolares').aggregate(Sum('comision'))
				UtilS= st.filter(idCajaDebe__moneda='soles').aggregate(Sum('comision'))
				consulta = list(st)
				consulta2= list(TCajaDebe.objects.filter(id_caja=C.pk,fecha__range=(horamin,horamax)).exclude(tablaRelacional='SolicitudTransferencia').values('pk','fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo'))
			lista=[]
			tbancoD=0
			tbancoS=0
			tcapiD=0
			tcapiS=0
			for obj in consulta:
				dato={}
				CD= TCajaDebe.objects.get(pk=str(obj['idCajaDebe']))
				Cl= Cliente.objects.get(pk=str(obj['id_cliente']))
				O_aux = Oficina.objects.get(pk= obj['id_oficina'])
				#dato['concepto']= CD.conceptoDetalle +' departe de '+Cl.nombre+' '+Cl.Apellido_paterno
				dato['concepto']= 'Para: '+ obj['nombre_beneficiado'] +' '+ obj['Apellido_paterno_beneficiado']+' '+obj['Apellido_materno_beneficiado']+'<b style="color: #2e6da4;"> / '+O_aux.nombre_oficina+'</b>'
				dato['fecha'] = str(CD.fecha.strftime("%d-%m-%Y %H:%M %p"))
				dato['tipodoc']= str(CD.tipoDocumento)
				dato['ope']= CD.id_personal.nombre + ' ' +CD.id_personal.Apellido_paterno +' '+CD.id_personal.Apellido_materno
				dato['moneda']= str(CD.moneda)
				dato['monto']= normalizar(float(CD.cantidadDinero))
				dato['comision']= str(obj['comision'])
				dato['comi_banco']= str(obj['monto_conceptos'])
				dato['nroR']= str(CD.nroRecibo)
				dato['capi']= 0
				if str(CD.moneda)=='soles':
					totalS= totalS+ConvertirDecimal(CD.cantidadDinero)
					if obj['monto_conceptos'] != None and obj['monto_conceptos']!='':
						cap= float(CD.cantidadDinero) -float(obj['comision']) -float(obj['monto_conceptos'])
						dato['capi'] = cap
						tcapiS= tcapiS + cap
						tbancoS = tbancoS + float(obj['monto_conceptos'])
					else:
						cap= float(CD.cantidadDinero) -float(obj['comision'])
						dato['capi'] = cap
						tcapiS= tcapiS + cap
				if str(CD.moneda)=='dolares':
					totalD= totalD+ConvertirDecimal(CD.cantidadDinero)
					if obj['monto_conceptos'] != None and obj['monto_conceptos']!='':
						cap= float(CD.cantidadDinero) -float(obj['comision']) -float(obj['monto_conceptos'])
						dato['capi'] = cap
						tcapiD= tcapiD + cap
						tbancoD = tbancoD + float(obj['monto_conceptos'])
					else:
						cap= float(CD.cantidadDinero) -float(obj['comision'])
						dato['capi'] = cap
						tcapiD= tcapiD + cap
				lista.append(dato)

			for obj1 in consulta2:
				CD= TCajaDebe.objects.get(pk=obj1['pk'])
				dato={}
				if str(obj1['moneda'])=='soles':
					totalS= totalS+ConvertirDecimal(obj1['cantidadDinero'])
				if str(obj1['moneda'])=='dolares':
					totalD= totalD+ConvertirDecimal(obj1['cantidadDinero'])
				dato['concepto']= obj1['conceptoDetalle']
				dato['fecha'] = str(obj1['fecha'].strftime("%d-%m-%Y %H:%M %p"))
				dato['tipodoc']= obj1['tipoDocumento']
				dato['ope']= CD.id_personal.nombre + ' ' +CD.id_personal.Apellido_paterno +' '+CD.id_personal.Apellido_materno
				dato['moneda']= obj1['moneda']
				dato['monto']= normalizar(float(obj1['cantidadDinero']))
				dato['comision']= ''
				dato['comi_banco']= ''
				dato['capi']= ''
				dato['nroR']= obj1['nroRecibo']
				lista.append(dato)
			total={}
			total['util_soles']= str(UtilS['comision__sum'])
			total['util_dolares']=str(UtilD['comision__sum'])
			total['total_soles']=float(totalS)
			total['total_dolares']=float(totalD)
			total['tcapid']=float(tcapiD)
			total['tbancod']=float(tbancoD)
			total['tcapis']=float(tcapiS)
			total['tbancos']=float(tbancoS)
			lista.append(total)
			data= json.dumps(lista)
		except:
			data='fail'
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
@permission_required('Main.add_oficina')
def consultaEgresoCierre_oficina_report_ajax_view(request):
	if request.is_ajax:
		filtro=request.GET.get('filtro','')
		pkc=request.GET.get('pkC')
		F1=request.GET.get('F1','')
		F2=request.GET.get('F2','')
		if filtro=='h':
			F1= str(datetime.date.today())
			filtro= 'f'
		totalD=0
		totalS=0
		data=''
		try:
			C= Cajas.objects.get(pk=pkc)
			usr=C.id_usuario.usuario
			if F1 != '':
				if filtro =='f':
					if F1 !='':
						fecha= datetime.datetime.strptime(F1, '%Y-%m-%d')
						horamin= datetime.datetime.combine(fecha,datetime.time.min)
						horamax= datetime.datetime.combine(fecha,datetime.time.max)
						consulta = list(TCajaHaber.objects.filter(id_caja=C.pk,fecha__range=(horamin,horamax)).exclude(tablaRelacional='CajaCierre').values('pk','fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo'))
					else:
						#consulta = list(TCajaHaber.objects.filter(id_personal__usuario=usr).exclude(tablaRelacional='CajaCierre').values('pk','fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo'))
						data='fail'
				elif filtro=='ef':
					fecha1= datetime.datetime.strptime(F1, '%Y-%m-%d')
					fecha2= datetime.datetime.strptime(F2, '%Y-%m-%d')
					fhoramin= datetime.datetime.combine(fecha1,datetime.time.min)
					fhoramax= datetime.datetime.combine(fecha2,datetime.time.max)
					consulta = list(TCajaHaber.objects.filter(id_caja=C.pk,fecha__range=(fhoramin,fhoramax)).exclude(tablaRelacional='CajaCierre').values('pk','fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo'))
				else:
					#consulta = list(TCajaHaber.objects.filter(id_personal__usuario=usr).exclude(tablaRelacional='CajaCierre').values('pk','fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo'))
					data='fail'
			else:
				#consulta = list(TCajaHaber.objects.filter(id_personal__usuario=usr).exclude(tablaRelacional='CajaCierre').values('pk','fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo'))
				F1= str(datetime.date.today())
				fecha= datetime.datetime.strptime(F1, '%Y-%m-%d')
				horamin= datetime.datetime.combine(fecha,datetime.time.min)
				horamax= datetime.datetime.combine(fecha,datetime.time.max)
				consulta = list(TCajaHaber.objects.filter(id_caja=C.pk,fecha__range=(horamin,horamax)).exclude(tablaRelacional='CajaCierre').values('pk','fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo'))
			lista=[]
			for obj in consulta:
				dato={}
				if str(obj['moneda'])=='soles':
					totalS= totalS+obj['cantidadDinero']
				if str(obj['moneda'])=='dolares':
					totalD= totalD+obj['cantidadDinero']
				dato['concepto']= obj['conceptoDetalle']
				dato['st']= ''
				dato['comision']= ''
				if obj['conceptoDetalle']=='Pago transferencia':
					pt = PagoTransferencia.objects.get(idCajaHaber=obj['pk'])
					dato['concepto']= 'A: '+pt.id_solicitud_transferencia.nombre_beneficiado +' '+pt.id_solicitud_transferencia.Apellido_paterno_beneficiado+' '+pt.id_solicitud_transferencia.Apellido_materno_beneficiado+'<b style="color: #4cae4c;"> De: '+pt.id_solicitud_transferencia.idCajaDebe.id_oficina.nombre_oficina+ '</b> /<b  style="color: #d58512;">'+pt.id_solicitud_transferencia.idCajaDebe.id_personal.nombre +' '+pt.id_solicitud_transferencia.idCajaDebe.id_personal.Apellido_paterno+'<b>'
					dato['st'] = pt.id_solicitud_transferencia.idCajaDebe.nroRecibo
					dato['comision']=pt.id_solicitud_transferencia.comision
				dato['fecha'] = str(obj['fecha'].strftime("%d-%m-%Y %H:%M %p"))
				dato['tipodoc']= str(obj['tipoDocumento'])
				dato['moneda']= str(obj['moneda'])
				dato['monto']= normalizar(float(obj['cantidadDinero']))
				dato['nroR']= str(obj['nroRecibo'])
				
				lista.append(dato)
			total={}
			total['total_soles']=float(totalS)
			total['total_dolares']=float(totalD)
			lista.append(total)
			data= json.dumps(lista)
		except:
			data='fail'
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

#***************************************************************************

@login_required
def oficinasAdmin_ajax_view(request):
	if request.is_ajax:
		data=''
		lista=[]
		try:
			consulta=list(Oficina.objects.exclude(nombre_oficina="Gerencia").values('pk','nombre_oficina','estado_oficina'))
			for obj in consulta:
				lista.append(obj)
			data= json.dumps(lista)
		except:
			data='error en consulta'
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
@permission_required('Main.add_oficina')
def oficinasAdmin_para_OfExt_ajax_view(request):
	if request.is_ajax:
		data=''
		lista=[]
		try:
			consulta=list(Oficina.objects.exclude(nombre_oficina="Gerencia").values('pk','nombre_oficina'))
			for obj in consulta:
				if not Oficina_externa.objects.filter(id_oficina_imperial=obj['pk']).exists():
					lista.append(obj)
			data= json.dumps(lista)
		except:
			data='error en consulta'
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
@permission_required('Main.add_oficina')
def oficinasAdmin_oficinas_money_ajax_view(request):
	if request.is_ajax:
		data=''
		lista=[]
		try:
			consulta=list(Oficina_externa.objects.all().values('pk','fecha','idOf_Ext','nombreOf_Ext','observaciones','id_oficina_imperial'))
			for obj in consulta:
				oficina_imperial= Oficina.objects.get(pk=obj['id_oficina_imperial'])
				dato={}
				dato['fecha']=str(obj['fecha'].strftime("%d-%m-%Y %H:%M"))
				dato['cod']=obj['idOf_Ext']
				dato['nombre']=obj['nombreOf_Ext']
				dato['obs']=obj['observaciones']
				dato['imperial']=oficina_imperial.nombre_oficina
				lista.append(dato)
			data= json.dumps(lista)
		except:
			data='error en consulta'
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
@permission_required('Main.add_oficina')
def PersonalesTotal_ajax_view(request):
	exito=''
	data=''
	if request.is_ajax:
		idO=request.GET.get('idOfi')
		try:
			lista=[]
			consulta1 = list(Cajas.objects.filter(id_oficina=idO,estado=True).values('pk','nombre','estado','id_oficina','id_usuario','horaIngreso'))
			for obj in consulta1:
				IdP= str(obj['id_usuario'])
				Per= Personal.objects.get(pk=IdP)
				#ONR=NroReciboCaja.objects.get(id_caja=obj['pk']) 
				dato={}
				dato['c_id']=obj['pk']
				dato['c_nombre']=obj['nombre']
				dato['c_estado']=obj['estado']
				dato['c_hora_ingreso']=obj['horaIngreso']
				dato['p_nombre']=Per.nombre
				dato['p_fn']=str(Per.fecha_nacimiento)
				dato['p_fc']=str(Per.fecha_contratacion)
				dato['p_ap']=Per.Apellido_paterno
				dato['p_am']=Per.Apellido_materno
				dato['p_telefono']=Per.telefono
				dato['p_dni']=Per.dni
				dato['p_email']=Per.email
				dato['p_sueldo']=str(Per.sueldo)
				dato['p_usuario']=Per.usuario
				dato['p_password']=Per.password
				dato['p_cargo']=Per.cargo
				dato['p_estado']=Per.estado
				dato['p_direccion']=Per.direccion
				dato['p_observacion']=Per.observacion
				dato['p_id']=Per.pk
				lista.append(dato)

			data= json.dumps(lista)
		except:
			data='Error en consulta'+str(sys.exc_info()[1])
	else:
		data='fail'+str(sys.exc_info()[1])
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
@permission_required('Main.add_oficina')
def GerentesTotal_ajax_view(request):
	if request.is_ajax:
		try:
			consulta=list(Gerente.objects.all().values('pk','nombre','Apellido_paterno','Apellido_materno','dni','telefono','direccion','email','fecha_nacimiento','fecha_creacion','observacion','estado','usuario','password'))
			lista=[]
			for obj in consulta:
				dato={}
				dato['pk']=obj['pk']
				dato['nombre']=obj['nombre']
				dato['ap']=obj['Apellido_paterno']
				dato['am']=obj['Apellido_materno']
				dato['dni']= obj['dni']
				dato['tlf']= obj['telefono']
				dato['dir']= obj['direccion']
				dato['email']= obj['email']
				dato['fn']=  str(obj['fecha_nacimiento'])
				dato['fc']= str(obj['fecha_creacion'])
				dato['obs']= obj['observacion']
				dato['estado']= obj['estado']
				dato['user']= obj['usuario']
				dato['pass']= obj['password']
				lista.append(dato)
			data= json.dumps(lista)
		except:
			data='Error en consulta'
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)



@login_required
@permission_required('Main.add_oficina')
def DepositosMaterial_ajax_view(request):
	usr= request.user.username
	if request.is_ajax:
		try:
			consulta=list(DepositoCajaMaterial.objects.filter(id_gerente__usuario=usr).values('pk','fecha','id_caja','id_usuario','pesoGramos'))
			lista=[]
			for obj in consulta:
				idCa= str(obj['id_caja'])
				idPe= str(obj['id_usuario'])
				con1= list(Cajas.objects.filter(pk=idCa).values('nombre','estado'))
				con2= list(Personal.objects.filter(pk=idPe).values('nombre','Apellido_paterno','Apellido_materno'))
				dato={}
				dato['c_nombre']= con1[0]['nombre']
				dato['c_estado']=con1[0]['estado']
				dato['p_encargado']= con2[0]['nombre']+' '+con2[0]['Apellido_paterno']+' '+con2[0]['Apellido_materno']
				dato['fecha']= str(obj['fecha'])
				dato['pesoGramos']= obj['pesoGramos'] 
				lista.append(dato)
			data= json.dumps(lista)
		except:
			data='Error en consulta'
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)



@login_required
@permission_required('Main.add_oficina')
def Depositos_ajax_view(request):
	usr= request.user.username
	if request.is_ajax:
		try:
			consulta=list(DepositoCaja.objects.filter(id_gerente__usuario=usr).values('pk','fecha','id_caja','id_usuario','moneda','monto','estado','observaciones'))
			lista=[]
			for obj in consulta:
				idCa= str(obj['id_caja'])
				idPe= str(obj['id_usuario'])
				c= Cajas.objects.get(pk=idCa)
				p= Personal.objects.get(pk=idPe)
				dato={}
				dato['pk']=obj['pk']
				dato['c_nombre']= c.nombre
				dato['c_estado']=c.estado
				dato['p_encargado']= p.nombre+' '+p.Apellido_paterno+' '+p.Apellido_materno
				dato['fecha']= str(obj['fecha'].strftime("%d-%m-%Y %H:%M"))
				dato['monto']= obj['monto']
				dato['concepto']= 'Envio de habilitacion para oficina: '+c.id_oficina.nombre_oficina+' - '+c.nombre
				dato['moneda']= obj['moneda']
				dato['obs']=obj['observaciones']
				dato['est']=obj['estado']
				act='no'
				if obj['estado']== 'enviado':
					act='si'
				dato['act']=act
				lista.append(dato)
			data= json.dumps(lista)
		except:
			data='Error en consulta'
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)


@login_required
@permission_required('Main.add_oficina')
def oficinasAdminT_ajax_view(request):
	if request.is_ajax:
		data=''
		lista=[]
		try:
			consulta=list(Oficina.objects.all().values('pk','nombre_oficina','ciudad','direccion','descripcion','observaciones','estado_oficina'))
			for obj in consulta:
				lista.append(obj)
			data= json.dumps(lista)
		except:
			data='error en consulta'
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)


"""@login_required
@permission_required('Main.add_oficina')
def sucursalesAdmin_ajax_view(request):
	if request.is_ajax:
		try:
			ListaSucursales=Sucursal.objects.all()
			consulta= serializers.serialize('json',ListaSucursales)
			data=consulta
		except:
			data='fail'
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)"""

#cionsulta personales
@login_required
@permission_required('Main.add_oficina')
def personales_ajax_view(request):#consulta todos los personales
	if request.is_ajax:
		try:
			consulta=list(Personal.objects.filter(estado=True,cargo="operador").values('pk','nombre','Apellido_paterno','Apellido_materno','dni'))
			consulta1= list(Cajas.objects.all().values('id_usuario'))
			lista=[]
			for obj in consulta:
				oper={}
				oper['id_usuario']=obj['pk']
				if not oper in consulta1:
					lista.append(obj)
			data= json.dumps(lista)
		except:
			data='Error en consulta'
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
def personales_ajax_caja_view(request):
	if request.is_ajax:
		idCa= request.GET.get('idca')
		try:
			C = list(Cajas.objects.filter(pk=idCa).values('id_usuario'))
			idUser=str(C[0]['id_usuario'])
			consulta=list(Personal.objects.filter(pk=idUser).values('pk','nombre','Apellido_paterno','Apellido_materno','dni'))
			lista=[]
			for obj in consulta:
				lista.append(obj)
			data= json.dumps(lista)
		except:
			data='Error en consulta'
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)


@login_required
@permission_required('Main.add_oficina')
def cajasAdmin_ajax_view(request):
	if request.is_ajax:
		idO = request.GET.get('idOfi')
		data=''
		lista=[]
		try:
			consulta=list(Cajas.objects.filter(id_oficina = idO).values('pk','nombre','estado'))
			for obj in consulta:
				lista.append(obj)
			data= json.dumps(lista)
		except:
			data='error en consulta'
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
def cajas_operador_ajax_view(request):
	if request.is_ajax:
		data=''
		usr = request.user.username
		lista=[]
		try:
			C= Cajas.objects.get(id_usuario__usuario=usr) 
			q=Cajas.objects.filter(id_oficina=C.id_oficina.pk)
			consulta=list(q.exclude(pk=C.pk).values('pk','nombre'))
			for obj in consulta:
				dato={}
				dato['pk']= obj['pk']
				dato['nombre']= obj['nombre']
				aux_caja = Cajas.objects.get(pk=obj['pk'])
				dato['oper']= aux_caja.id_usuario.nombre+', '+aux_caja.id_usuario.Apellido_paterno+' '+aux_caja.id_usuario.Apellido_materno
				lista.append(dato)
			data= json.dumps(lista)
		except:
			data='error en consulta'
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
def cajas_operador_material_ajax_view(request):
	if request.is_ajax:
		data=''
		usr = request.user.username
		lista=[]
		try:
			C= Cajas.objects.get(id_usuario__usuario=usr) 
			q=Cajas.objects.filter(id_oficina=C.id_oficina.pk)
			consulta=list(q.exclude(pk=C.pk).values('pk','nombre'))
			for obj in consulta:
				if TConfiguracionSistema.objects.filter(id_caja=obj['pk'],id_oficina=C.id_oficina.pk,tipoSistema__in=['hibrido','material']).exists():
					dato={}
					dato['pk']= obj['pk']
					dato['nombre']= obj['nombre']
					aux_caja = Cajas.objects.get(pk=obj['pk'])
					dato['oper']= aux_caja.id_usuario.nombre+', '+aux_caja.id_usuario.Apellido_paterno+' '+aux_caja.id_usuario.Apellido_materno
					lista.append(dato)
			data= json.dumps(lista)
		except:
			data='error en consulta'
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
def cajas_operador_dolar_ajax_view(request):
	if request.is_ajax:
		data=''
		usr = request.user.username
		lista=[]
		try:
			C= Cajas.objects.get(id_usuario__usuario=usr) 
			q=Cajas.objects.filter(id_oficina=C.id_oficina.pk)
			consulta=list(q.exclude(pk=C.pk).values('pk','nombre'))
			for obj in consulta:
				if TConfiguracionSistema.objects.filter(id_caja=obj['pk'],id_oficina=C.id_oficina.pk,cajaDolar='si').exists():
					dato={}
					dato['pk']= obj['pk']
					dato['nombre']= obj['nombre']
					aux_caja = Cajas.objects.get(pk=obj['pk'])
					dato['oper']= aux_caja.id_usuario.nombre+', '+aux_caja.id_usuario.Apellido_paterno+' '+aux_caja.id_usuario.Apellido_materno
					lista.append(dato)
			data= json.dumps(lista)
		except:
			data='error en consulta'
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
def cajas_operador_alterna_ajax_view(request):
	if request.is_ajax:
		data=''
		usr = request.user.username
		lista=[]
		try:
			C= Cajas.objects.get(id_usuario__usuario=usr) 
			q=Cajas.objects.filter(id_oficina=C.id_oficina.pk).exclude(id_usuario=C.id_oficina.id_usuario)
			consulta=list(q.exclude(pk=C.pk).values('pk','nombre'))
			for obj in consulta:
				dato={}
				dato['pk']= obj['pk']
				dato['nombre']= obj['nombre']
				aux_caja = Cajas.objects.get(pk=obj['pk'])
				dato['oper']= aux_caja.id_usuario.nombre+', '+aux_caja.id_usuario.Apellido_paterno+' '+aux_caja.id_usuario.Apellido_materno
				lista.append(dato)
			data= json.dumps(lista)
		except:
			data='error en consulta'
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)


@login_required
def saldoCaja_ajax_view(request):
	if request.is_ajax:
		usr = request.user.username
		data=''
		try:
			C= Cajas.objects.get(id_usuario__usuario=usr)
			saldo_caja = SaldoDisponibleCajas.objects.get(id_caja=C.pk)
			datos={}
			datos['p_nombre']=C.id_usuario.nombre
			datos['p_ap']=C.id_usuario.Apellido_paterno
			datos['p_am']=C.id_usuario.Apellido_materno
			datos['p_dni']=C.id_usuario.dni
			datos['caja']=C.nombre
			datos['saldo_soles']=normalizar(saldo_caja.saldo_soles)
			datos['saldo_dolares']=normalizar(saldo_caja.saldo_dolares)
			datos['saldo_soles_do']=0
			datos['saldo_dolares_do']=0
			datos['saldo_soles_ma']=0
			datos['saldo_dolares_ma']=0
			datos['saldo_material']=0
			if SaldoDisponibleCajaCambio.objects.filter(id_caja=C.pk).exists():#dolares
				saldo_cambio= SaldoDisponibleCajaCambio.objects.get(id_caja=C.pk)
				datos['saldo_soles_do']=normalizar(saldo_cambio.saldo_soles)
				datos['saldo_dolares_do']=normalizar(saldo_cambio.saldo_dolares)
			if SaldoDisponibleCajaMaterial.objects.filter(id_caja=C.pk).exists():#material
				saldo_material= SaldoDisponibleCajaMaterial.objects.get(id_caja=C.pk)
				datos['saldo_soles_ma']=normalizar(saldo_material.saldo_soles)
				datos['saldo_dolares_ma']=normalizar(saldo_material.saldo_dolares)
				datos['saldo_material']=normalizar(saldo_material.saldo_material)
			data= json.dumps(datos)
		except:
			data='error en consulta'+str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)



@login_required
def saldoCajaMaterial_ajax_view(request):
	if request.is_ajax:
		usr = request.user.username
		data=''
		lista=[]
		try:
			q1 = Personal.objects.filter(usuario=usr).values('pk','nombre','Apellido_paterno','Apellido_materno','dni')
			if len(q1) >0:
				cons1=list(q1)
				idusu= str(cons1[0]['pk'])
				q=Cajas.objects.filter(id_usuario=idusu).values('pk','nombre')
				if len(q)>0:
					con= list(q)
					idcaja = str(con[0]['pk'])
					consulta = list(SaldoDisponibleCajaMaterial.objects.filter(id_caja=idcaja).values('pk','saldo_Material'))
					datos={}
					datos['p_nombre']=cons1[0]['nombre']
					datos['p_ap']=cons1[0]['Apellido_paterno']
					datos['p_am']=cons1[0]['Apellido_materno']
					datos['p_dni']=cons1[0]['dni']
					datos['caja']=con[0]['nombre']
					datos['saldo_material']=normalizar(float(consulta[0]['saldo_Material'])) 
					lista.append(datos)
					data= json.dumps(lista)
				else:
					data='usuario no asignado a caja'
			else:
				data='usuario no asignado a caja'
		except:
			data='error en consulta'
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)


@login_required
def CajasSaldoOficina_ajax_view(request):
	if request.is_ajax:
		usr = request.user.username
		data=''
		lista=[]
		try:
			C= Cajas.objects.get(id_usuario__usuario=usr)
			if C.id_usuario.pk == C.id_oficina.id_usuario.pk:
				consulta1 = list(Cajas.objects.filter(id_oficina=C.id_oficina.pk).values('pk','nombre','estado','id_oficina','id_usuario'))
				for obj in consulta1:
					IdC = str(obj['pk'])
					IdP= str(obj['id_usuario'])
					consulta2= list(Personal.objects.filter(pk=IdP).values('nombre','Apellido_paterno','Apellido_materno'))
					#consulta3=list(SaldoDisponibleCajas.objects.filter(id_caja=IdC).values('saldo_soles','saldo_dolares'))
					dato={}
					dato['c_id']=obj['pk']
					dato['c_nombre']=obj['nombre']
					dato['c_estado']=obj['estado']
					dato['p_nombre']=consulta2[0]['nombre']
					dato['p_ap']=consulta2[0]['Apellido_paterno']
					dato['p_am']=consulta2[0]['Apellido_materno']
					dato['saldo_soles_do']=0
					dato['saldo_dolares_do']=0
					dato['saldo_soles_ma']=0
					dato['saldo_dolares_ma']=0
					dato['saldo_material_ma']=0
					S= SaldoDisponibleCajas.objects.filter(id_caja=IdC).values('saldo_soles','saldo_dolares')
					if S.exists():
						consulta3=list(S)
						dato['saldo_soles']=normalizar(consulta3[0]['saldo_soles'])
						dato['saldo_dolares']=normalizar(consulta3[0]['saldo_dolares'])
						
					else:
						dato['saldo_soles']=0
						dato['saldo_dolares']=0
					if SaldoDisponibleCajaCambio.objects.filter(id_caja=IdC).exists():
						saldod= SaldoDisponibleCajaCambio.objects.get(id_caja=IdC)
						dato['saldo_soles_do']=normalizar(saldod.saldo_soles)
						dato['saldo_dolares_do']=normalizar(saldod.saldo_dolares)
					if SaldoDisponibleCajaMaterial.objects.filter(id_caja=IdC).exists():
						saldom= SaldoDisponibleCajaMaterial.objects.get(id_caja=IdC)
						dato['saldo_soles_ma']=normalizar(saldom.saldo_soles)
						dato['saldo_dolares_ma']=normalizar(saldom.saldo_dolares)
						dato['saldo_material_ma']=normalizar(saldom.saldo_material)
					lista.append(dato)
				data= json.dumps(lista)
			else:
				data='error'
		except:
			data='error en consulta'+str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
def listaCierresRecibidas_ajax_view(request):
	if request.is_ajax:
		usr = request.user.username
		data=''
		lista=[]
		try:
			C= Cajas.objects.get(id_usuario__usuario=usr)
			if C.id_usuario.pk == C.id_oficina.id_usuario.pk:
				consulta = list(TCajaHaber.objects.filter(id_oficina= C.id_oficina.pk,tablaRelacional='CajaCierre',estadoTransaccion='enviado').values('pk','fecha','cantidadDinero','moneda','id_caja','observaciones'))
				for obj in consulta:
					dato={}
					Cp= Cajas.objects.get(pk=str(obj['id_caja']))
					dato['pk']=obj['pk']
					dato['fecha']=str(obj['fecha'].strftime("%Y-%m-%d %H:%M %p"))
					dato['caja']=Cp.nombre
					dato['operador']=Cp.id_usuario.nombre +' '+ Cp.id_usuario.Apellido_paterno + ' ' +Cp.id_usuario.Apellido_materno
					dato['moneda']=obj['moneda']
					dato['monto']=str(obj['cantidadDinero'])
					dato['obs']=obj['observaciones']
					lista.append(dato)
				data= json.dumps(lista)
			else:
				data='error'
		except:
			data='error en consulta'
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
def listaSaldoRecibidas_ajax_view(request):
	if request.is_ajax:
		usr = request.user.username
		data=''
		lista=[]
		try:
			C= Cajas.objects.get(id_usuario__usuario=usr)	
			consulta2 = list(EnvioCajaCaja.objects.filter(id_CajaDestino= C.pk,estado='enviado').values('pk','fecha','monto','moneda','observaciones','conceptoDetalle','idCajaHaber'))
			for obj in consulta2:
				auxOri= TCajaHaber.objects.get(pk=obj['idCajaHaber'])
				dato={}
				dato['pk']=obj['pk']
				dato['fecha']=str(obj['fecha'].strftime("%d-%m-%Y %H:%M"))
				dato['concepto']=obj['conceptoDetalle']
				dato['monto']=str(obj['monto'])
				dato['ori']='<span style="color:blue;">'+auxOri.id_oficina.nombre_oficina+'</span> /'+auxOri.id_caja.id_usuario.nombre +' '+auxOri.id_caja.id_usuario.Apellido_paterno
				dato['comi']=''
				if ComisionEnvio.objects.filter(tabla='EnvioCajaCaja',id_envio=obj['pk']).exists():
					com= ComisionEnvio.objects.get(tabla='EnvioCajaCaja',id_envio=obj['pk'])
					dato['comi']=float(com.idCajaHaber.cantidadDinero)
				dato['moneda']= obj['moneda']
				dato['obs']=obj['observaciones']
				dato['tabla']= 'enviocaja'
				lista.append(dato)
			data= json.dumps(lista)
		except:
			data='error en consulta'
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
def listaSaldoRecibidas_de_CajaAlterna_ajax_view(request):
	if request.is_ajax:
		usr = request.user.username
		data=''
		lista=[]
		try:
			C= Cajas.objects.get(id_usuario__usuario=usr)
			if C.id_usuario.pk == C.id_oficina.id_usuario.pk:#caja prinsipal	
				consulta = list(EnvioCajaAlternaPrinsipal.objects.filter(id_cajaPrinsipal= C.pk,id_oficina=C.id_oficina.pk,estado='enviado').values('pk','fecha','monto','moneda','id_cajaPrinsipal','id_cajaAlterna','observaciones','conceptoDetalle'))
				for obj in consulta:
					C_aux = Cajas.objects.get(pk=obj['id_cajaAlterna'])
					dato={}
					dato['pk']=obj['pk']
					dato['fecha']=str(obj['fecha'].strftime("%d-%m-%Y %H:%M"))
					dato['concepto']=obj['conceptoDetalle']
					dato['monto']=str(obj['monto'])
					dato['moneda']= obj['moneda']
					dato['obs']=obj['observaciones']
					dato['CA'] =C_aux.nombre
					lista.append(dato)
			data= json.dumps(lista)
		except:
			data='error en consulta'
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
def listaSaldoRec_de_CajaAlt_pag_ajax_view(request):
	if request.is_ajax:
		usr = request.user.username
		data=''
		lista=[]
		try:
			C= Cajas.objects.get(id_usuario__usuario=usr)
			if C.id_usuario.pk == C.id_oficina.id_usuario.pk:#caja prinsipal	
				consulta = list(EnvioCajaAlternaPrinsipal.objects.filter(id_cajaPrinsipal= C.pk,id_oficina=C.id_oficina.pk,estado='recibido').values('pk','fecha','monto','moneda','id_cajaPrinsipal','id_cajaAlterna','observaciones','conceptoDetalle'))
				for obj in consulta:
					C_aux = Cajas.objects.get(pk=obj['id_cajaAlterna'])
					dato={}
					dato['pk']=obj['pk']
					dato['fecha']=str(obj['fecha'].strftime("%d-%m-%Y %H:%M"))
					dato['concepto']=obj['conceptoDetalle']
					dato['monto']=str(obj['monto'])
					dato['moneda']= obj['moneda']
					dato['obs']=obj['observaciones']
					dato['CA'] =C_aux.nombre
					lista.append(dato)
			data= json.dumps(lista)
		except:
			data='error en consulta'
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
def listaHabilitacion_aCajaAlt_ajax_view(request):
	if request.is_ajax:
		usr = request.user.username
		data=''
		lista=[]
		try:
			C= Cajas.objects.get(id_usuario__usuario=usr)
			if C.id_usuario.pk == C.id_oficina.id_usuario.pk:#caja prinsipal	
				consulta = list(EnvioCajaAlterna.objects.filter(id_usuario= C.id_usuario.pk,id_oficina=C.id_oficina.pk).values('pk','fecha','monto','moneda','id_cajaAlterna','observaciones','conceptoDetalle','estado'))
				for obj in consulta:
					C_aux = Cajas.objects.get(pk=obj['id_cajaAlterna'])
					dato={}
					dato['pk']=obj['pk']
					dato['fecha']=str(obj['fecha'].strftime("%d-%m-%Y %H:%M"))
					dato['concepto']=obj['conceptoDetalle']
					dato['monto']=str(obj['monto'])
					dato['moneda']= obj['moneda']
					dato['est']= obj['estado']
					dato['obs']=obj['observaciones']
					dato['CA'] =C_aux.nombre
					lista.append(dato)
			data= json.dumps(lista)
		except:
			data='error en consulta'
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
def listaSaldoRecibidas_de_CajaAlternaAlterna_ajax_view(request):
	if request.is_ajax:
		usr = request.user.username
		data=''
		lista=[]
		try:
			C= Cajas.objects.get(id_usuario__usuario=usr)
			if C.id_usuario.pk != C.id_oficina.id_usuario.pk:#caja alterna	
				consulta = list(EnvioCajaAlternaAlterna.objects.filter(id_cajaAlternaReceptor= C.pk,id_oficina=C.id_oficina.pk,estado='enviado').values('pk','fecha','monto','moneda','id_cajaAlternaEmisor','id_cajaAlternaReceptor','observaciones','conceptoDetalle'))
				for obj in consulta:
					C_aux = Cajas.objects.get(pk=obj['id_cajaAlternaEmisor'])
					dato={}
					dato['pk']=obj['pk']
					dato['fecha']=str(obj['fecha'].strftime("%d-%m-%Y %H:%M"))
					dato['concepto']=obj['conceptoDetalle']
					dato['monto']=str(obj['monto'])
					dato['moneda']= obj['moneda']
					dato['obs']=obj['observaciones']
					dato['CA'] =C_aux.nombre
					lista.append(dato)
			data= json.dumps(lista)
		except:
			data='error en consulta'
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
def listaSaldoRecibidas_conforme_de_CajaAlternaAlterna_ajax_view(request):
	if request.is_ajax:
		usr = request.user.username
		data=''
		lista=[]
		try:
			C= Cajas.objects.get(id_usuario__usuario=usr)
			if C.id_usuario.pk != C.id_oficina.id_usuario.pk:#caja alterna	
				consulta = list(EnvioCajaAlternaAlterna.objects.filter(id_cajaAlternaReceptor= C.pk,id_oficina=C.id_oficina.pk,estado='recibido').values('pk','fecha','monto','moneda','id_cajaAlternaEmisor','id_cajaAlternaReceptor','observaciones','conceptoDetalle'))
				for obj in consulta:
					C_aux = Cajas.objects.get(pk=obj['id_cajaAlternaEmisor'])
					dato={}
					dato['pk']=obj['pk']
					dato['fecha']=str(obj['fecha'].strftime("%d-%m-%Y %H:%M"))
					dato['concepto']=obj['conceptoDetalle']
					dato['monto']=str(obj['monto'])
					dato['moneda']= obj['moneda']
					dato['obs']=obj['observaciones']
					dato['CA'] =C_aux.nombre
					lista.append(dato)
			data= json.dumps(lista)
		except:
			data='error en consulta'
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
def listaSaldoEnviados_a_CajaAlternaAlterna_ajax_view(request):
	if request.is_ajax:
		usr = request.user.username
		data=''
		lista=[]
		try:
			C= Cajas.objects.get(id_usuario__usuario=usr)
			if C.id_usuario.pk != C.id_oficina.id_usuario.pk:#caja alterna	
				consulta = list(EnvioCajaAlternaAlterna.objects.filter(id_cajaAlternaEmisor= C.pk,id_oficina=C.id_oficina.pk).values('pk','fecha','monto','moneda','id_cajaAlternaEmisor','id_cajaAlternaReceptor','observaciones','conceptoDetalle','estado'))
				for obj in consulta:
					C_aux = Cajas.objects.get(pk=obj['id_cajaAlternaReceptor'])
					dato={}
					dato['pk']=obj['pk']
					dato['fecha']=str(obj['fecha'].strftime("%d-%m-%Y %H:%M"))
					dato['concepto']=obj['conceptoDetalle']
					dato['monto']=str(obj['monto'])
					dato['moneda']= obj['moneda']
					dato['estado']= obj['estado']
					dato['obs']=obj['observaciones']
					dato['CA'] =C_aux.nombre
					lista.append(dato)
			data= json.dumps(lista)
		except:
			data='error en consulta'
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
def listaSaldoRecibidas_total_ajax_view(request):
	if request.is_ajax:
		filtro=request.GET.get('f','')
		F1=request.GET.get('F1','')
		F2=request.GET.get('F2','')
		pag=request.GET.get('pg','')
		usr = request.user.username
		data=''
		lista=[]
		try:
			C= Cajas.objects.get(id_usuario__usuario=usr)
			pg= 1
			if pag !='':
				pg= int(pag)
			intrv=0
			if pg>1:
				intrv= ((pg-1)*5)+1
			fhoramin=None
			fhoramax=None
			if filtro == 'f':
				fecha1= datetime.datetime.strptime(F1, '%Y-%m-%d')
				fecha2= datetime.datetime.strptime(F2, '%Y-%m-%d')
				fhoramin= datetime.datetime.combine(fecha1,datetime.time.min)
				fhoramax= datetime.datetime.combine(fecha2,datetime.time.max)
			else:
				hoy= datetime.datetime.today()
				aux=hoy-timedelta(days=intrv)
				aux1=aux-timedelta(days=5)
				fhoramax= datetime.datetime.combine(aux,datetime.time.max)
				fhoramin= datetime.datetime.combine(aux1,datetime.time.min)

			consulta2 = list(EnvioCajaCaja.objects.filter(id_CajaDestino= C.pk,estado='recibido',idCajaHaber__fecha__range=(fhoramin,fhoramax)).values('pk','fecha','monto','moneda','observaciones','conceptoDetalle','idCajaHaber'))
			for obj in consulta2:
				re=RecepcionEnvioCajaCaja.objects.get(idEnvioCajaCaja=obj['pk'])
				auxOri= TCajaHaber.objects.get(pk=obj['idCajaHaber'])
				dato={}
				dato['pk']=obj['pk']
				dato['fecha']=str(obj['fecha'].strftime("%d-%m-%Y %H:%M"))
				dato['fechar']=str(re.fecha.strftime("%d-%m-%Y %H:%M"))
				dato['concepto']=obj['conceptoDetalle']
				dato['monto']=str(obj['monto'])
				dato['ori']='<span style="color:blue;">'+auxOri.id_oficina.nombre_oficina+'</span> /'+auxOri.id_caja.id_usuario.nombre + ' '+auxOri.id_caja.id_usuario.Apellido_paterno
				dato['comi']=''
				if ComisionEnvio.objects.filter(tabla='EnvioCajaCaja',id_envio=obj['pk']).exists():
					com= ComisionEnvio.objects.get(tabla='EnvioCajaCaja',id_envio=obj['pk'])
					dato['comi']=float(com.idCajaHaber.cantidadDinero)
				dato['moneda']= obj['moneda']
				dato['obs']=obj['observaciones']
				dato['obsRe']=re.observaciones
				dato['tabla']= 'enviocaja'
				lista.append(dato)
			ef={'d':str(fhoramin.strftime("%Y-%m-%d")),'h':str(fhoramax.strftime("%Y-%m-%d"))}
			lista.append(ef)
			data= json.dumps(lista)
		except:
			data='error en consulta'+ str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)


#**************************** MATERIAL ******************************
@login_required
def ListadoRecepcionHabMat_view(request):#este formulario sigue la misma logica
	usr=request.user.username
	try:
		usr= request.user.username
		cargo =''
		C= Cajas.objects.get(id_usuario__usuario=usr)
		if C.id_usuario.pk == C.id_oficina.id_usuario.pk:
			cargo='administrador'
	except:
		cargo =''
	return render(request,"RecepcioHabiliMat.html",{"cargo":cargo} )

@login_required
def listaSaldoRecibidasMat_total_ajax_view(request):
	if request.is_ajax:
		usr = request.user.username
		data=''
		lista=[]
		try:
			C= Cajas.objects.get(id_usuario__usuario=usr)
			consulta = list(EnvioMaterialCajaCaja.objects.filter(id_CajaDestino= C.pk,estado='enviado').values('pk','fecha','idCajaMaterialHaber','Peso_gramos','observaciones','conceptoDetalle'))
			for obj in consulta:
				dato={}
				dato['pk']=obj['pk']
				dato['fecha']=str(obj['fecha'].strftime("%d-%m-%Y %H:%M"))
				dato['concepto']=obj['conceptoDetalle']
				haber = TCajaMaterialHaber.objects.get(pk=obj['idCajaMaterialHaber'])
				dato['origen']='<span style="color:blue;">'+haber.id_oficina.nombre_oficina+'</span> '+haber.id_caja.nombre +' <span style="color:#3c763d;">'+haber.id_personal.nombre + ' '+haber.id_personal.Apellido_paterno+'</span>'
				dato['peso']=str(obj['Peso_gramos'])
				dato['obs']=obj['observaciones']
				dato['tabla']= 'enviocaja'
				lista.append(dato)
			data= json.dumps(lista)
		except:
			data='error en consulta'
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

#********************************************************************
#-----------------------------------------------------------------------------------
@login_required
def lista_enviosOficina_para_descuento_ajax_view(request):
	if request.is_ajax:
		usr = request.user.username
		data=''
		lista=[]
		try:
			C= Cajas.objects.get(id_usuario__usuario=usr)
			consulta1 = list(TCajaHaber.objects.filter(tablaRelacional='EnvioOficinaOficina',aux1="falta_descontar",id_caja=C.pk).values('pk','fecha','cantidadDinero','moneda','observaciones','conceptoDetalle','nroRecibo'))
			for obj in consulta1:
				dato={}
				dato['pk']=obj['pk']
				dato['fecha']=str(obj['fecha'].strftime("%d-%m-%Y %H:%M"))
				dato['concepto']=obj['conceptoDetalle']
				dato['monto']=str(obj['cantidadDinero'])
				dato['moneda']= obj['moneda']
				dato['obs']=obj['observaciones']
				dato['nroR']= obj['nroRecibo']
				lista.append(dato)
			data= json.dumps(lista)
		except:
			data='error en consulta'
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)
#-----------------------------------------------------------------------------------

@login_required
@permission_required('Main.add_oficina')
def CajasTotalPersonalSaldo_ajax_view(request):
	if request.is_ajax:
		data=''
		lista=[]
		try:
			consulta1 = list(Cajas.objects.all().values('pk','nombre','estado','id_oficina','id_usuario'))
			for obj in consulta1:
				IdC = str(obj['pk'])
				IdP= str(obj['id_usuario'])
				consulta2= list(Personal.objects.filter(pk=IdP).values('nombre','Apellido_paterno','Apellido_materno'))
				#consulta3=list(SaldoDisponibleCajas.objects.filter(id_caja=IdC).values('saldo_soles','saldo_dolares'))
				dato={}
				dato['c_id']=obj['pk']
				dato['c_nombre']=obj['nombre']
				dato['c_estado']=obj['estado']
				dato['p_nombre']=consulta2[0]['nombre']
				dato['p_ap']=consulta2[0]['Apellido_paterno']
				dato['p_am']=consulta2[0]['Apellido_materno']
				dato['saldo_soles_do']=0
				dato['saldo_dolares_do']=0
				dato['saldo_soles_ma']=0
				dato['saldo_dolares_ma']=0
				dato['saldo_material_ma']=0
				S= SaldoDisponibleCajas.objects.filter(id_caja=IdC).values('saldo_soles','saldo_dolares')
				if S.exists():
					consulta3=list(S)
					dato['saldo_soles']=str(consulta3[0]['saldo_soles'])
					dato['saldo_dolares']=str(consulta3[0]['saldo_dolares'])
				else:
					dato['saldo_soles']=0
					dato['saldo_dolares']=0
				if SaldoDisponibleCajaCambio.objects.filter(id_caja=IdC).exists():
					saldod= SaldoDisponibleCajaCambio.objects.get(id_caja=IdC)
					dato['saldo_soles_do']=normalizar(saldod.saldo_soles)
					dato['saldo_dolares_do']=normalizar(saldod.saldo_dolares)
				if SaldoDisponibleCajaMaterial.objects.filter(id_caja=IdC).exists():
					saldom= SaldoDisponibleCajaMaterial.objects.get(id_caja=IdC)
					dato['saldo_soles_ma']=normalizar(saldom.saldo_soles)
					dato['saldo_dolares_ma']=normalizar(saldom.saldo_dolares)
					dato['saldo_material_ma']=normalizar(saldom.saldo_material)
				lista.append(dato)
			data= json.dumps(lista)
		except:
			data='error en consulta'+idO
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
def listaCierresPersonal_ajax_view(request):
	if request.is_ajax:
		usr = request.user.username
		data=''
		lista=[]
		try:
			consulta = list(CajaCierre.objects.filter(id_caja__id_usuario__usuario=usr).order_by('-pk').values('fecha','totalDebeSoles','totalDebeDolares','totalHaberSoles','totalHaberDolares','observaciones','saldo_soles','saldo_dolares','saldoInicial_soles','saldoInicial_dolares','fechaDesde','fechaHasta','estado','soles_sistema','dolares_sistema'))
			for obj in consulta:
				dato={}
				dato['fecha']=str(obj['fecha'].strftime("%d-%m-%Y %H:%M %p"))
				dato['is']=str(round(float(obj['totalDebeSoles']),2))
				dato['ide']=str(round(float(obj['totalDebeDolares']),2))
				dato['es']=str(round(float(obj['totalHaberSoles']),2))
				dato['ed']=str(round(float(obj['totalHaberDolares']),2))
				dato['ss']=str(round(float(obj['saldo_soles']),2))
				dato['sd']=str(round(float(obj['saldo_dolares']),2))
				dato['sis']=str(round(float(obj['saldoInicial_soles']),2))
				dato['sid']=str(round(float(obj['saldoInicial_dolares']),2))
				dato['fd']=str(obj['fechaDesde'].strftime("%Y-%m-%d"))
				dato['fh']=str(obj['fechaHasta'].strftime("%Y-%m-%d"))
				dato['est']=str(obj['estado'])
				dato['obs']=obj['observaciones']
				dato['soles_sistema']=str(round(float(obj['soles_sistema']),2))
				dato['dolares_sistema']=str(round(float(obj['dolares_sistema']),2))
				lista.append(dato)
			data= json.dumps(lista)
		except:
			data='error en consulta'
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)
@login_required
def datosPersonal_ajax_view(request):
	if request.is_ajax:
		usr = request.user.username
		data=''
		lista=[]
		try:
			p = Personal.objects.get(usuario=usr)
			dato={}
			dato['dni']=p.dni
			dato['nom']=p.nombre
			dato['ap']=p.Apellido_paterno
			dato['am']=p.Apellido_materno
			dato['dire']=p.direccion
			dato['tel']=p.telefono
			dato['fn']=str(p.fecha_nacimiento)
			dato['email']=p.email
			lista.append(dato)
			data= json.dumps(lista)
		except:
			data='error en consulta'
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
def notificacionesCreadas_ajax_view(request):
	if request.is_ajax:
		usr = request.user.username
		data=''
		lista=[]
		try:
			consulta = list(Notificacion.objects.filter(usuario=usr).values('pk','descripcion','fecha','archivo','permisos'))
			for obj in consulta:
				dato={}
				dato['pk']=obj['pk']
				dato['des']=obj['descripcion']
				dato['prm']=obj['permisos']
				dato['f']=str(obj['fecha'])
				dato['arc']=obj['archivo']
				lista.append(dato)
			data= json.dumps(lista)
		except:
			data='error en consulta'
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
def notificacionesRecibidasOperador_ajax_view(request):
	if request.is_ajax:
		usr = request.user.username
		data=''
		lista=[]	
		try:
			C = Cajas.objects.get(id_usuario__usuario=usr)
			consulta = list(Notificacion.objects.filter(Q(permisos__in=["operador","todos"])|Q(usuario=usr,permisos="yo")|Q(permisos=C.id_oficina.nombre_oficina)).order_by('-pk').values('pk','descripcion','fecha','archivo'))
			for obj in consulta:
				dato={}
				dato['pk']=str(obj['pk'])
				dato['des']=obj['descripcion']
				dato['f']=str(obj['fecha'].strftime("%d-%m-%Y %H:%M"))
				dato['arc']=obj['archivo']
				lista.append(dato)
			data= json.dumps(lista)
		except:
			data='error en consulta'
		
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
@permission_required('Main.add_oficina')
def notificacionesRecibidasGerente_ajax_view(request):
	if request.is_ajax:
		usr = request.user.username
		data=''
		lista=[]
		try:
			consulta = list(Notificacion.objects.filter(Q(permisos__in=["gerente","todos"])|Q(usuario=usr,permisos="yo")).values('pk','descripcion','fecha','archivo'))
			for obj in consulta:
				dato={}
				dato['pk']=str(obj['pk'])
				dato['des']=obj['descripcion']
				dato['f']=str(obj['fecha'])
				dato['arc']=obj['archivo']
				lista.append(dato)
			data= json.dumps(lista)
		except:
			data='error en consulta'
		
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
@permission_required('Main.add_oficina')
def datosGerente_ajax_view(request):
	if request.is_ajax:
		usr = request.user.username
		data=''
		lista=[]
		try:
			p = Gerente.objects.get(usuario=usr)
			dato={}
			dato['dni']=p.dni
			dato['nom']=p.nombre
			dato['ap']=p.Apellido_paterno
			dato['am']=p.Apellido_materno
			dato['dire']=p.direccion
			dato['tel']=p.telefono
			dato['fn']=str(p.fecha_nacimiento)
			dato['email']=p.email
			lista.append(dato)
			data= json.dumps(lista)
		except:
			data='error en consulta'
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)


@login_required
@permission_required('Main.add_oficina')
def Configuracion_peticiones_ajax_view(request):
	if request.is_ajax:
		data=''
		lista=[]
		try:
			consulta = list(ConfiguracionPeticiones.objects.exclude(id_oficina__nombre_oficina="Gerencia").values('pk','id_oficina','estadoConfCtaCte','montoSolesCtaCte','montoDolaresCtaCte','estadoConfCtaAhorros','montoSolesCtaAhorros','montoDolaresCtaAhorros'))
			 
			for obj in consulta:
				dato={}
				dato['pk']=obj['pk']
				dato['estadoConfCtaCte']=obj['estadoConfCtaCte']
				dato['montoSolesCtaCte']=str(obj['montoSolesCtaCte'])
				dato['montoDolaresCtaCte']=str(obj['montoDolaresCtaCte'])
				dato['estadoConfCtaAhorros']=obj['estadoConfCtaAhorros']
				dato['montoSolesCtaAhorros']=str(obj['montoSolesCtaAhorros'])
				dato['montoDolaresCtaAhorros']=str(obj['montoDolaresCtaAhorros'])
				O = Oficina.objects.get(pk=str(obj['id_oficina']))
				dato['oficina']=O.nombre_oficina
				lista.append(dato)
			data= json.dumps(lista)
		except:
			data='error en consulta'+str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)



@login_required
@permission_required('Main.add_oficina')
def NroRecibo_cajas_ajax_view(request):
	if request.is_ajax:
		idO = request.GET.get('idOfi')
		data=''
		lista=[]
		try:
			consulta1 = list(Cajas.objects.filter(id_oficina=idO,estado=True).values('pk','nombre','estado','id_oficina','id_usuario'))
			for obj in consulta1:
				IdP= str(obj['id_usuario'])
				Per= Personal.objects.get(pk=IdP)
				ONR=NroReciboCaja.objects.get(id_caja=obj['pk']) 
				dato={}
				dato['c_id']=obj['pk']
				dato['c_nombre']=obj['nombre']
				dato['c_estado']=obj['estado']
				dato['p_nombre']=Per.nombre
				dato['p_ap']=Per.Apellido_paterno
				dato['p_am']=Per.Apellido_materno
				dato['re']=ONR.nroRE
				dato['ri']=ONR.nroRI
				dato['st']=ONR.nroST
				dato['pt']=ONR.nroPT
				lista.append(dato)
			data= json.dumps(lista)
		except:
			data='fail'+str(sys.exc_info()[1])
	else:
		data='fail'+str(sys.exc_info()[1])
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
@permission_required('Main.add_oficina')
def comision_omonto_ajax_view(request):
	if request.is_ajax:
		data=''
		lista=[]
		try:
			consulta = list(ConfiguracionExtra_caja.objects.exclude(id_oficina__nombre_oficina="Gerencia").values('pk','id_oficina','monto_tope','comision_minima','otros_conceptos_minimo','extorno_total'))
			for obj in consulta:
				dato={}
				dato['pk']=obj['pk']
				dato['mt']=obj['monto_tope']
				dato['cm']=obj['comision_minima']
				dato['ocm']=obj['otros_conceptos_minimo']#config_extr.otros_conceptos_minimo
				dato['ce']=obj['extorno_total']#config_extr.extorno_total
				O = Oficina.objects.get(pk=str(obj['id_oficina']))
				dato['of']=O.nombre_oficina
				lista.append(dato)
			data= json.dumps(lista)
		except:
			data='error en consulta'
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
@permission_required('Main.add_oficina')
def cierre_forzado_ajax_view(request):
	if request.is_ajax:
		data=''
		lista=[]
		try:
			consulta = list(ConfiguracionExtra_oficina.objects.all().values('pk','id_oficina','cierreObligatorio','Prj_comicion_queda','aux1','aux2','aux3'))
			for obj in consulta:
				dato={}
				dato['pk']=obj['pk']
				dato['cf']=obj['cierreObligatorio']
				dato['xqd']=obj['Prj_comicion_queda']
				dato['ofc']=obj['aux1']
				dato['tpO']=obj['aux2']
				dato['verS']=obj['aux3']
				O = Oficina.objects.get(pk=str(obj['id_oficina']))
				dato['of']=O.nombre_oficina
				dato['pko']=O.pk
				lista.append(dato)
			data= json.dumps(lista)
		except:
			data='error en consulta'
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
def balance_personal_view(request):
	try:
		usr= request.user.username
		cargo =''
		C= Cajas.objects.get(id_usuario__usuario=usr)
		if C.id_usuario.pk == C.id_oficina.id_usuario.pk:
			cargo='administrador'
	except:
		cargo =''
	return render(request,'balance.html',{"cargo":cargo} )
@login_required
def NotifiRecibidas_personal_view(request):
	try:
		usr= request.user.username
		cargo =''
		C= Cajas.objects.get(id_usuario__usuario=usr)
		if C.id_usuario.pk == C.id_oficina.id_usuario.pk:
			cargo='administrador'
	except:
		cargo =''
	return render(request,'NotificacionesRecibidas.html',{"cargo":cargo} )

@login_required
def cierre_caja_view(request):
	try:
		usr= request.user.username
		cargo =''
		C= Cajas.objects.get(id_usuario__usuario=usr)
		if C.id_usuario.pk == C.id_oficina.id_usuario.pk:
			cargo='administrador'
	except:
		cargo =''
	return render(request,'cierre.html',{"cargo":cargo} )
@login_required
def listaCierres_caja_view(request):
	try:
		usr= request.user.username
		cargo =''
		C= Cajas.objects.get(id_usuario__usuario=usr)
		if C.id_usuario.pk == C.id_oficina.id_usuario.pk:
			cargo='administrador'
	except:
		cargo =''
	return render(request,'Cierres.html',{"cargo":cargo} )
@login_required
def listaSaldos_oficina_view(request):
	try:
		usr= request.user.username
		cargo =''
		C= Cajas.objects.get(id_usuario__usuario=usr)
		if C.id_usuario.pk == C.id_oficina.id_usuario.pk:
			cargo='administrador'
	except:
		cargo =''
	return render(request,'consultaSaldoCajas.html',{"cargo":cargo} )


@login_required
def listaSaldoRecibidos_view(request):
	try:
		usr= request.user.username
		cargo =''
		C= Cajas.objects.get(id_usuario__usuario=usr)
		if C.id_usuario.pk == C.id_oficina.id_usuario.pk:
			cargo='administrador'
	except:
		cargo =''
	return render(request,'saldoRecibido.html',{"cargo":cargo} )

@login_required
def listaSaldoRecibidos_deCajaAlterna_view(request):
	try:
		usr= request.user.username
		cargo =''
		C= Cajas.objects.get(id_usuario__usuario=usr)
		if C.id_usuario.pk == C.id_oficina.id_usuario.pk:
			cargo='administrador'
	except:
		cargo =''
	return render(request,'saldoRecibidoDeCajaAlterna.html',{"cargo":cargo} )

@login_required
def listaSaldoRecibidos_deCajaAlterna_conforme_view(request):
	try:
		usr= request.user.username
		cargo =''
		C= Cajas.objects.get(id_usuario__usuario=usr)
		if C.id_usuario.pk == C.id_oficina.id_usuario.pk:
			cargo='administrador'
	except:
		cargo =''
	return render(request,'listaSaldorecibido_caja_Alt.html',{"cargo":cargo} )


@login_required
def listaSaldoEnviado_AltAlt_view(request):
	try:
		usr= request.user.username
		cargo =''
		C= Cajas.objects.get(id_usuario__usuario=usr)
		if C.id_usuario.pk == C.id_oficina.id_usuario.pk:
			cargo='administrador'
	except:
		cargo =''
	return render(request,'ListadoSaldoEnviadoAltAlt.html',{"cargo":cargo} )


@login_required
@permission_required('Main.add_oficina')
def Deposito_view(request):
	return render(request,'Depositos.html' )

@login_required
@permission_required('Main.add_oficina')
def DepositoMaterial_view(request):
	return render(request,'DepositosMaterial.html' )

@login_required
@permission_required('Main.add_oficina')
def EstBarras_view(request):
	return render(request,'BarraAdmi.html' )
@login_required
@permission_required('Main.add_oficina')
def Personales_view(request):
	return render(request,'Personales.html' )

@login_required
@permission_required('Main.add_oficina')
def Gerentes_view(request):
	return render(request,'Gerentes.html' )

@login_required
@permission_required('Main.add_oficina')
def BalanceDT_view(request):
	return render(request,'BalanceDT.html' )
@login_required
@permission_required('Main.add_oficina')
def Reporte_view(request):
	return render(request,'Reporte.html' )

@login_required
@permission_required('Main.add_oficina')
def ClientesAdmin_view(request):
	return render(request,'ClientesAdmin.html' )

@login_required
@permission_required('Main.add_oficina')
def NotificacionesRecibidasGere_view(request):
	return render(request,'NotificacionesRecibidasAdmin.html' )
"""
@login_required
@transaction.atomic
def ActualizarEstadoPeticionCtaCte_ajax(request):
	data=''
	if request.is_ajax:
		id=request.GET.get('id','')
		estado=request.GET.get('estado','')
		usr = request.user.username
		u= Personal.objects.get(usuario=usr)
		try:
			with transaction.atomic():
				if PeticionesCtaCtes.objects.filter(pk=id,estado="ESPERANDO").exists():
					aux= PeticionesCtaCtes.objects.select_for_update().filter(pk=id).update(estado=estado,id_autorizado=u.pk)
					data='exito'
				else:
					if PeticionesCtaCtes.objects.filter(pk=id,estado="CONFIRMADO").exists():
						data='Autorización ya realizada'
					else:
						data='Autorización ya realizada'

		except IntegrityError:
			data='fail'
	else:
		data='fail'+ str(sys.exc_info()[1])

	exito={'resultado':data}
	resultado= json.dumps(exito)
	mimetype="application/json"
	return HttpResponse(resultado,mimetype)



@login_required
def ListadoCtaCtes_ajax(request):
	data=''
	if request.is_ajax:
		pag=request.GET.get('pg','')
		pg= 1
		if pag !='':
			pg= int(pag)
		desde= (pg-1)*20
		hasta= pg*20
		try:
			lista=[]
			#consulta1= list(Cliente.objects.all().values('pk','nombre','Apellido_paterno','Apellido_materno'))
			consulta1= list(CtaCte.objects.all().values('pk','id_cliente','idCajaDebe','saldo','estado','privadoOficina','fechaApertura','observaciones','tipoCuenta','claveAcceso'))
			for obj in consulta1:
				dato={}
				idCli= str(obj['id_cliente'])
				idCD= str(obj['idCajaDebe'])
				consulta2=Cliente.objects.filter(pk=idCli).values('pk','dni','nombre','Apellido_paterno','Apellido_materno','email','telefono','direccion','drem')
				consulta3=TCajaDebe.objects.filter(pk=idCD).values('id_oficina','id_personal','moneda')
				consulta4=Oficina.objects.filter(pk=consulta3[0]['id_oficina']).values('nombre_oficina')
				consulta5=Personal.objects.filter(pk=consulta3[0]['id_personal']).values('usuario')
				dato['ID']= obj['pk']
				dato['dni']= consulta2[0]['dni']
				dato['email']= consulta2[0]['email']
				dato['telefono']= consulta2[0]['telefono']
				dato['direccion']= consulta2[0]['direccion']
				dato['drem']= consulta2[0]['drem']
				dato['nombre']= consulta2[0]['nombre']
				dato['Apellido_paterno']=consulta2[0]['Apellido_paterno']
				dato['Apellido_materno']=consulta2[0]['Apellido_materno']
				dato['estado']=obj['estado']
				dato['observaciones']=obj['observaciones']
				dato['tipo_cuenta']=obj['tipoCuenta']
				dato['clave']=obj['claveAcceso']
				dato['oficina_apertura']= consulta4[0]['nombre_oficina']
				dato['usuario_apertura']= consulta5[0]['usuario']
				dato['fecha_apertura']=str(obj['fechaApertura'].strftime("%Y-%m-%d %H:%M %p"))
				dato['privado_oficina']= obj['privadoOficina']
				dato['moneda']= consulta3[0]['moneda']
				dato['saldo']= str(obj['saldo']) 
				lista.append(dato)

			data= json.dumps(lista)
		except:
			data='fail'+str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)


@login_required
def ListadoCtaCtes_op_ajax(request):
	data=''
	if request.is_ajax:
		pag=request.GET.get('pg','')
		pg= 1
		if pag !='':
			pg= int(pag)
		desde= (pg-1)*20
		hasta= pg*20
		usr= request.user.username
		C= Cajas.objects.get(id_usuario__usuario=usr)
		try:
			lista=[]
			#consulta1= list(Cliente.objects.all().values('pk','nombre','Apellido_paterno','Apellido_materno'))
			consulta1= list(CtaCte.objects.filter(idCajaDebe__id_oficina=C.id_oficina.pk).values('pk','id_cliente','idCajaDebe','saldo','estado','privadoOficina','fechaApertura','observaciones','tipoCuenta','claveAcceso'))
			for obj in consulta1:
				dato={}
				idCli= str(obj['id_cliente'])
				idCD= str(obj['idCajaDebe'])
				consulta2=Cliente.objects.filter(pk=idCli).values('pk','dni','nombre','Apellido_paterno','Apellido_materno','email','telefono','direccion','drem')
				consulta3=TCajaDebe.objects.filter(pk=idCD).values('id_oficina','id_personal','moneda')
				consulta4=Oficina.objects.filter(pk=consulta3[0]['id_oficina']).values('nombre_oficina')
				consulta5=Personal.objects.filter(pk=consulta3[0]['id_personal']).values('usuario')
				dato['ID']= obj['pk']
				dato['dni']= consulta2[0]['dni']
				dato['email']= consulta2[0]['email']
				dato['telefono']= consulta2[0]['telefono']
				dato['direccion']= consulta2[0]['direccion']
				dato['drem']= consulta2[0]['drem']
				dato['nombre']= consulta2[0]['nombre']
				dato['Apellido_paterno']=consulta2[0]['Apellido_paterno']
				dato['Apellido_materno']=consulta2[0]['Apellido_materno']
				dato['estado']=obj['estado']
				dato['observaciones']=obj['observaciones']
				dato['tipo_cuenta']=obj['tipoCuenta']
				dato['clave']=obj['claveAcceso']
				dato['oficina_apertura']= consulta4[0]['nombre_oficina']
				dato['usuario_apertura']= consulta5[0]['usuario']
				dato['fecha_apertura']=str(obj['fechaApertura'].strftime("%Y-%m-%d %H:%M %p"))
				dato['privado_oficina']= obj['privadoOficina']
				dato['moneda']= consulta3[0]['moneda']
				dato['saldo']= str(obj['saldo']) 
				lista.append(dato)

			data= json.dumps(lista)
		except:
			data='fail'+str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)


@login_required
def ListadoCtaCte_movimientos_ajax_view(request):
	if request.is_ajax:
		usr = request.user.username
		pk=request.GET.get('pk')
		totalM=0
		data=''
		try:
			mov= CtaCteMovimientos.objects.filter(id_ctacte=pk).values('pk','fechaHora','id_usuario','montoDeposito','montoRetiro','saldo','montoSobregiro','interesSobregiro','nroDiasSobregiro','observacionesMovimientos','comision','tabla','tipoDocumento','nroRecibo','aux1')
			consulta = list(mov)
			lista=[]
			for obj in consulta:
				dato={}
				dato['pk']= obj['pk']
				dato['usuario']=obj['id_usuario']
				if obj['comision']!=None and obj['comision']!='': 
					dato['comision']= str(obj['comision'])
				else:
					dato['comision']=0

				dato['tabla']=obj['tabla']
				dato['ofi']=''
				usu= Personal.objects.get(pk=obj['id_usuario'])
				dato['user']=usu.nombre +' '+ usu.Apellido_paterno
				if obj['tabla']!=None and obj['tabla']!='':
					if str(obj['tabla'])=='TCajaDebe':
						OCD=TCajaDebe.objects.get(pk=int(obj['aux1']))
						dato['moneda']=OCD.moneda
						dato['obs1']=OCD.observaciones
						dato['ofi']=OCD.id_oficina.nombre_oficina+' / '+ OCD.id_caja.nombre
					else:
						OCH=TCajaHaber.objects.get(pk=int(obj['aux1']))
						dato['moneda']=OCH.moneda
						dato['obs1']=OCH.observaciones
						dato['ofi']=OCH.id_oficina.nombre_oficina+' / '+ OCH.id_caja.nombre
				else:
					dato['moneda']=''
					dato['obs1']=''
				
				dato['tipo']=obj['tipoDocumento']
				dato['nro']=obj['nroRecibo']
				dato['f']= str(obj['fechaHora'].strftime("%Y-%m-%d %H:%M %p"))
				if obj['montoDeposito']!=None and obj['montoDeposito']!='':
					dato['md']=str(obj['montoDeposito'])
				else:
					dato['md']=0

				if obj['montoRetiro']!=None and obj['montoRetiro']!='':
					dato['mr']=str(obj['montoRetiro'])
				else:
					dato['mr']=0

				if obj['montoSobregiro']!=None and obj['montoSobregiro']!='':
					dato['msb']=str(obj['montoSobregiro'])
				else:
					dato['msb']=0

				if obj['interesSobregiro']!=None and obj['interesSobregiro']!='':
					dato['isb']=str(obj['interesSobregiro'])
				else:
					dato['isb']=0

				if obj['nroDiasSobregiro']!=None and obj['nroDiasSobregiro']!='':
					dato['ndsb']=str(obj['nroDiasSobregiro'])
				else:
					dato['ndsb']=0

				dato['s']=str(obj['saldo'])
				dato['obs']=obj['observacionesMovimientos']

				lista.append(dato)
			data= json.dumps(lista)
		except:
			data=str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
def ListadoCtaCteAhorros_movimientos_ajax_view(request):
	if request.is_ajax:
		usr = request.user.username
		pk=request.GET.get('pk')
		totalM=0
		data=''
		try:
			mov= CtaAhorrosMovimientos.objects.filter(id_ctaahorros=pk).values('pk','fechaHora','montoDeposito','montoRetiro','saldo','montoSobregiro','interesSobregiro','nroDiasSobregiro','observacionesMovimientos')
			consulta = list(mov)
			lista=[]
			for obj in consulta:
				dato={}
				dato['pk']= obj['pk']
				dato['f']= str(obj['fechaHora'].strftime("%Y-%m-%d %H:%M %p"))
				dato['md']= str(obj['montoDeposito'])
				dato['mr']=str(obj['montoRetiro'])
				dato['s']=str(obj['saldo'])
				dato['msb']=str(obj['montoSobregiro'])
				dato['isb']=str(obj['interesSobregiro'])
				dato['ndsb']=str(obj['nroDiasSobregiro'])
				dato['obs']=obj['observacionesMovimientos']
				lista.append(dato)
			data= json.dumps(lista)
		except:
			data='fail'+str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)


@login_required
def ListadoCtaAhorrosTXPK(request):
	data=''
	if request.is_ajax:
		IdCtaAhorros=request.GET.get('idctaahorros','')
		fecha = time.strftime("%Y-%m-%d")
		usr= request.user.username
		try:
			dato={}
			lista=[]
			data=''
			data= CtaAhorrosActualizarSaldo(IdCtaAhorros,fecha) 
			consulta_n = CtaAhorrosMovimientos.objects.filter(id_ctaahorros=IdCtaAhorros).aggregate(Sum('interesGanado'))
			totalInteres=consulta_n['interesGanado__sum']
			if totalInteres=='' or totalInteres==None:
				totalInteres=0

			if data=='exito':
				consulta1= CtaAhorros.objects.filter(pk=IdCtaAhorros).values('pk','id_cliente','idCajaDebe','saldo','estado','interes','nroDias','frecNroDias','frecInteres','privadoOficina','fechaApertura','observaciones','tipoCuenta','claveAcceso')
				consulta2= Cliente.objects.filter(pk=consulta1[0]['id_cliente']).values('pk','dni','nombre','Apellido_paterno','Apellido_materno','email','telefono','direccion','drem')
				consulta3= TCajaDebe.objects.filter(pk=consulta1[0]['idCajaDebe']).values('id_oficina','id_personal','moneda')
				consulta4= Oficina.objects.filter(pk=consulta3[0]['id_oficina']).values('nombre_oficina')
				consulta5= Personal.objects.filter(pk=consulta3[0]['id_personal']).values('usuario')
				dato['ID']= consulta1[0]['pk']
				dato['interes']= str(consulta1[0]['interes'])
				dato['nroDias']= str(consulta1[0]['nroDias'])
				dato['frecNroDias']= str(consulta1[0]['frecNroDias'])
				dato['frecInteres']= str(consulta1[0]['frecInteres'])
				dato['dni']= consulta2[0]['dni']
				dato['email']= consulta2[0]['email']
				dato['telefono']= consulta2[0]['telefono']
				dato['direccion']= consulta2[0]['direccion']
				dato['drem']= consulta2[0]['drem']
				dato['nombre']= consulta2[0]['nombre']
				dato['Apellido_paterno']=consulta2[0]['Apellido_paterno']
				dato['Apellido_materno']=consulta2[0]['Apellido_materno']
				dato['estado']=consulta1[0]['estado']
				dato['observaciones']=consulta1[0]['observaciones']
				dato['tipo_cuenta']=consulta1[0]['tipoCuenta']
				dato['clave']=consulta1[0]['claveAcceso']
				dato['oficina_apertura']= consulta4[0]['nombre_oficina']
				dato['usuario_apertura']= consulta5[0]['usuario']
				dato['fecha_apertura']=str(consulta1[0]['fechaApertura'].strftime("%Y-%m-%d %H:%M %p"))
				dato['privado_oficina']= consulta1[0]['privadoOficina']
				dato['moneda']= consulta3[0]['moneda']
				dato['saldo']= str(consulta1[0]['saldo'])
				dato['interesGenerado']= str(totalInteres) 
				lista.append(dato)
				data= json.dumps(lista)
			else:
				data='fail' 
		except:
			data='fail'+str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)



@login_required
def ListadoCtaCtesTXPK(request):
	data=''
	if request.is_ajax:
		IdCtaCte=request.GET.get('idctacte','')
		fecha = time.strftime("%Y-%m-%d")
		try:
			dato={}
			lista=[] 
			consulta1= CtaCte.objects.filter(pk=IdCtaCte).values('pk','id_cliente','idCajaDebe','saldo','estado','privadoOficina','fechaApertura','observaciones','tipoCuenta','claveAcceso')
			consulta2= Cliente.objects.filter(pk=consulta1[0]['id_cliente']).values('pk','dni','nombre','Apellido_paterno','Apellido_materno','email','telefono','direccion','drem')
			consulta3= TCajaDebe.objects.filter(pk=consulta1[0]['idCajaDebe']).values('id_oficina','id_personal','moneda')
			consulta4= Oficina.objects.filter(pk=consulta3[0]['id_oficina']).values('nombre_oficina')
			consulta5= Personal.objects.filter(pk=consulta3[0]['id_personal']).values('usuario')
			dato['ID']= consulta1[0]['pk']
			dato['dni']= consulta2[0]['dni']
			dato['email']= consulta2[0]['email']
			dato['telefono']= consulta2[0]['telefono']
			dato['direccion']= consulta2[0]['direccion']
			dato['drem']= consulta2[0]['drem']
			dato['nombre']= consulta2[0]['nombre']
			dato['Apellido_paterno']=consulta2[0]['Apellido_paterno']
			dato['Apellido_materno']=consulta2[0]['Apellido_materno']
			dato['estado']=consulta1[0]['estado']
			dato['observaciones']=consulta1[0]['observaciones']
			dato['tipo_cuenta']=consulta1[0]['tipoCuenta']
			dato['clave']=consulta1[0]['claveAcceso']
			dato['oficina_apertura']= consulta4[0]['nombre_oficina']
			dato['usuario_apertura']= consulta5[0]['usuario']
			dato['fecha_apertura']=str(consulta1[0]['fechaApertura'].strftime("%Y-%m-%d %H:%M %p"))
			dato['privado_oficina']= consulta1[0]['privadoOficina']
			dato['moneda']= consulta3[0]['moneda']
			dato['saldo']= str(consulta1[0]['saldo']) 
			lista.append(dato)
			data= json.dumps(lista)
		except:
			data='fail'+str(sys.exc_info()[1])
	else:
		data='fail'++str(sys.exc_info()[1])
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@transaction.atomic
def CtaCteActualizarSaldo(idCtaCte,fecha):
	data=''
	fechaActual = time.strftime("%Y-%m-%d %H:%M:%S")
	fechaActual_ = time.strftime("%d-%m-%Y")
	try:
		with transaction.atomic():
			consulta1=CtaCte.objects.filter(pk=idCtaCte).values('pk','id_cliente','idCajaDebe','saldo','estado','privadoOficina','fechaApertura','fechaCierre','observaciones','tipoCuenta','claveAcceso')[:1]
			saldoCtaCte=consulta1[0]['saldo']
			fechaCierre=consulta1[0]['fechaCierre'].strftime("%d-%m-%Y")
			aux= CtaCte.objects.select_for_update().filter(pk=idCtaCte).update(fechaCierre=fechaActual)
			
			if float(saldoCtaCte)<0:
				consulta2 = CtaCteMovimientos.objects.filter(id_ctacte=idCtaCte).values('pk','saldo','interesSobregiro','nroDiasSobregiro','fechaHora','sobregiroNro','montoSobregiro').order_by('sobregiroNro','pk')[:1]
				saldoUMov=consulta2[0]['saldo']
				montoSobregiroRestante=consulta2[0]['montoSobregiro']

				if montoSobregiroRestante ==''or montoSobregiroRestante == None:
					montoSobregiroRestante=0
				else:
					montoSobregiroRestante = ConvertirDecimal(montoSobregiroRestante)
				idCteCteMovimiento=consulta2[0]['pk']

				if montoSobregiroRestante<=0:
					montoSobregiroRestante=abs(saldoUMov)
				f1=fechaCierre
				f2=fechaActual_
				if f1!=f2:
					consulta3 = CtaCteMovimientos.objects.filter(id_ctacte=idCtaCte).values('pk','saldo','interesSobregiro','nroDiasSobregiro','fechaHora','sobregiroNro','montoSobregiro').order_by('sobregiroNro','pk')[:1]
					sobregiroNro=consulta3[0]['sobregiroNro']
					interesSobregiro=consulta3[0]['interesSobregiro']
					nroDiasSobregiro=consulta3[0]['nroDiasSobregiro']
					if nroDiasSobregiro=='' or nroDiasSobregiro==None:
						nroDiasSobregiro=0
					if interesSobregiro=='' or interesSobregiro==None:
						interesSobregiro=0
					fechaDelSobregiro=consulta3[0]['fechaHora'].strftime("%d-%m-%Y")
					formato_fecha = "%d-%m-%Y"
					fecha_inicial = datetime.datetime.strptime(str(fechaDelSobregiro), formato_fecha)
					fecha_final = datetime.datetime.strptime(str(fechaActual_), formato_fecha)
					diferencia = fecha_final-fecha_inicial
					nroDiasExcedidosSobregiro=diferencia.days-nroDiasSobregiro
					if 0<nroDiasExcedidosSobregiro:
						interesMoraSobregiro=montoSobregiroRestante*(interesSobregiro/100)
						interesMoraSobregiro=interesMoraSobregiro*nroDiasExcedidosSobregiro
						aux_= CtaCte.objects.select_for_update().filter(pk=IdCtaCte).update(saldo=float(saldoUMov)-float(interesMoraSobregiro))
						data='exito'
				data='exito'
			data='exito'

	except IntegrityError:
		data='fail'+ str(sys.exc_info()[1])
	except:
		data='fail'+ str(sys.exc_info()[1])

	return data


@transaction.atomic
def CtaAhorrosActualizarSaldo(idCtaAhorros,fecha):
	data=''
	fechaActual = time.strftime("%Y-%m-%d %H:%M:%S")
	fechaActual_ = time.strftime("%d-%m-%Y")
	NroDias=0
	NroMeses=0
	gano=0
	try:
		with transaction.atomic():
			consulta1=CtaAhorros.objects.filter(pk=idCtaAhorros).values('pk','id_cliente','idCajaDebe','saldo','interes','estado','privadoOficina','fechaApertura','fechaCierre','observaciones','tipoCuenta','claveAcceso')[:1]
			interes=consulta1[0]['interes']
			saldoCtaAhorros=consulta1[0]['saldo']
			fechaCierre=consulta1[0]['fechaCierre'].strftime("%d-%m-%Y")
			aux= CtaAhorros.objects.select_for_update().filter(pk=idCtaAhorros).update(fechaCierre=fechaActual)
			
			if float(saldoCtaAhorros)>=0:
				sumaSubMontoDeposito_ = CtaAhorrosMovimientos.objects.filter(id_ctaahorros=idCtaAhorros,montoDeposito__gt=0,subMontoDeposito__gt=0).aggregate(Sum('subMontoDeposito'))
				sumaSubMontoDeposito=sumaSubMontoDeposito_['subMontoDeposito__sum']
				if sumaSubMontoDeposito ==''or sumaSubMontoDeposito == None:
					sumaSubMontoDeposito=0

				consulta1= list(CtaAhorrosMovimientos.objects.filter(id_ctaahorros=idCtaAhorros,montoDeposito__gt=0,subMontoDeposito__gt=0).values('pk','fechaAux','subMontoDeposito','interesGanado'))
				for obj in consulta1:
					consulta2=InteresesCtaAhorros.objects.filter(pk=obj['pk'],estado='activo').values('fecha').order_by('fecha').reverse()[:1]
					if consulta2.count()==0:
						fechaAux=obj['fechaAux'].strftime("%d-%m-%Y")
						formato_fecha = "%d-%m-%Y"
						fecha_inicial = datetime.datetime.strptime(str(fechaAux), formato_fecha)
						fecha_final = datetime.datetime.strptime(str(fechaActual_), formato_fecha)
						diferencia = fecha_final-fecha_inicial
						NroDias=diferencia.days
					else:
						ultimaFecha=consulta2[0]['fecha'].strftime("%d-%m-%Y")
						formato_fecha = "%d-%m-%Y"
						fecha_inicial = datetime.datetime.strptime(str(ultimaFecha), formato_fecha)
						fecha_final = datetime.datetime.strptime(str(fechaActual_), formato_fecha)
						diferencia = fecha_final-fecha_inicial
						NroDias=diferencia.days
					
					if NroDias>=30:
						NroMeses=NroDias/30
						gano=(float(obj['subMontoDeposito'])*(float(interes)/100))*NroMeses
						#falta sumar 30 dias a la fecha aux
						aux= CtaAhorrosMovimientos.objects.select_for_update().filter(pk=obj['pk']).update(interesGanado=gano,auxIG=float(obj['interesGanado'])+float(gano))
						 
				SIG=CtaAhorrosMovimientos.objects.filter(id_ctaahorros=idCtaAhorros,interesGanado__gt=0).aggregate(Sum('interesGanado'))
				sumaInteresGanado= SIG['interesGanado__sum']
				if sumaInteresGanado ==''or sumaInteresGanado == None:
					sumaInteresGanado=0
				
				aux_= CtaAhorros.objects.select_for_update().filter(pk=idCtaAhorros).update(tipoCuenta=sumaInteresGanado)
				data='exito'
			else:
				consulta3 = CtaAhorrosMovimientos.objects.filter(id_ctaahorros=idCtaAhorros).values('pk','saldo','interesSobregiro','nroDiasSobregiro','fechaHora','sobregiroNro','montoSobregiro').order_by('sobregiroNro','pk')[:1]
				sobregiroNro=consulta3[0]['sobregiroNro']
				interesSobregiro=consulta3[0]['interesSobregiro']
				nroDiasSobregiro=consulta3[0]['nroDiasSobregiro']
				if nroDiasSobregiro=='' or nroDiasSobregiro==None:
					nroDiasSobregiro=0

				if interesSobregiro=='' or interesSobregiro==None:
					interesSobregiro=0

				fechaDelSobregiro=consulta3[0]['fechaHora'].strftime("%d-%m-%Y")
				interesMoraSobregiro=0
				formato_fecha = "%d-%m-%Y"
				fecha_inicial = datetime.datetime.strptime(str(fechaDelSobregiro), formato_fecha)
				fecha_final = datetime.datetime.strptime(str(fechaActual_), formato_fecha)
				diferencia = fecha_final-fecha_inicial
				nroDiasExcedidosSobregiro=diferencia.days
				nroDiasExcedidosSobregiro=nroDiasExcedidosSobregiro-nroDiasSobregiro
				if 0<nroDiasExcedidosSobregiro:
					interesMoraSobregiro=float(saldoCtaAhorros)*(float(interesSobregiro)/100)
					interesMoraSobregiro=abs(interesMoraSobregiro*nroDiasExcedidosSobregiro)
				aux_= CtaAhorros.objects.select_for_update().filter(pk=idCtaAhorros).update(tipoCuenta=interesMoraSobregiro)
				data='exito'

	except IntegrityError:
		data='fail'+ str(sys.exc_info()[1])
	except:
		data='fail'+ str(sys.exc_info()[1])

	return data


@login_required
def ListadoCtaCtes_positivas(request):
	data=''
	if request.is_ajax:
		usr= request.user.username
		pag=request.GET.get('pg','')
		pg= 1
		if pag !='':
			pg= int(pag)
		desde= (pg-1)*20
		hasta= pg*20
		try:
			lista=[]
			#consulta1= list(Cliente.objects.all().values('pk','nombre','Apellido_paterno','Apellido_materno'))
			consulta1= list(CtaCte.objects.all().values('pk','id_cliente','idCajaDebe','saldo','estado','privadoOficina','fechaApertura','observaciones','tipoCuenta','claveAcceso'))
			for obj in consulta1:
				if (str(obj['estado'])=='activo' or str(obj['estado'])=='bloqueado') and obj['saldo']>0:
					dato={}
					idCli= str(obj['id_cliente'])
					idCD= str(obj['idCajaDebe'])
					consulta2=Cliente.objects.filter(pk=idCli).values('pk','dni','nombre','Apellido_paterno','Apellido_materno','email','telefono','direccion','drem')
					consulta3=TCajaDebe.objects.filter(pk=idCD).values('id_oficina','id_personal','moneda')
					consulta4=Oficina.objects.filter(pk=consulta3[0]['id_oficina']).values('nombre_oficina')
					consulta5=Personal.objects.filter(pk=consulta3[0]['id_personal']).values('usuario')
					dato['ID']= obj['pk']
					dato['dni']= consulta2[0]['dni']
					dato['email']= consulta2[0]['email']
					dato['telefono']= consulta2[0]['telefono']
					dato['direccion']= consulta2[0]['direccion']
					dato['drem']= consulta2[0]['drem']
					dato['nombre']= consulta2[0]['nombre']
					dato['Apellido_paterno']=consulta2[0]['Apellido_paterno']
					dato['Apellido_materno']=consulta2[0]['Apellido_materno']
					dato['estado']=obj['estado']
					dato['observaciones']=obj['observaciones']
					dato['tipo_cuenta']=obj['tipoCuenta']
					dato['clave']=obj['claveAcceso']
					dato['oficina_apertura']= consulta4[0]['nombre_oficina']
					dato['usuario_apertura']= consulta5[0]['usuario']
					dato['fecha_apertura']=str(obj['fechaApertura'])
					dato['privado_oficina']= obj['privadoOficina']
					dato['moneda']= consulta3[0]['moneda']
					dato['saldo']= str(obj['saldo']) 
					lista.append(dato)

			data= json.dumps(lista)
		except:
			data='fail'+str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
def ListadoCtaCtes_op_positivas(request):
	data=''
	if request.is_ajax:
		pag=request.GET.get('pg','')
		pg= 1
		if pag !='':
			pg= int(pag)
		desde= (pg-1)*20
		hasta= pg*20
		usr= request.user.username
		C= Cajas.objects.get(id_usuario__usuario=usr)
		try:
			lista=[]
			#consulta1= list(Cliente.objects.all().values('pk','nombre','Apellido_paterno','Apellido_materno'))
			consulta1= list(CtaCte.objects.filter(idCajaDebe__id_oficina=C.id_oficina.pk).values('pk','id_cliente','idCajaDebe','saldo','estado','privadoOficina','fechaApertura','observaciones','tipoCuenta','claveAcceso'))
			for obj in consulta1:
				if (str(obj['estado'])=='activo' or str(obj['estado'])=='bloqueado') and obj['saldo']>0:
					dato={}
					idCli= str(obj['id_cliente'])
					idCD= str(obj['idCajaDebe'])
					consulta2=Cliente.objects.filter(pk=idCli).values('pk','dni','nombre','Apellido_paterno','Apellido_materno','email','telefono','direccion','drem')
					consulta3=TCajaDebe.objects.filter(pk=idCD).values('id_oficina','id_personal','moneda')
					consulta4=Oficina.objects.filter(pk=consulta3[0]['id_oficina']).values('nombre_oficina')
					consulta5=Personal.objects.filter(pk=consulta3[0]['id_personal']).values('usuario')
					dato['ID']= obj['pk']
					dato['dni']= consulta2[0]['dni']
					dato['email']= consulta2[0]['email']
					dato['telefono']= consulta2[0]['telefono']
					dato['direccion']= consulta2[0]['direccion']
					dato['drem']= consulta2[0]['drem']
					dato['nombre']= consulta2[0]['nombre']
					dato['Apellido_paterno']=consulta2[0]['Apellido_paterno']
					dato['Apellido_materno']=consulta2[0]['Apellido_materno']
					dato['estado']=obj['estado']
					dato['observaciones']=obj['observaciones']
					dato['tipo_cuenta']=obj['tipoCuenta']
					dato['clave']=obj['claveAcceso']
					dato['oficina_apertura']= consulta4[0]['nombre_oficina']
					dato['usuario_apertura']= consulta5[0]['usuario']
					dato['fecha_apertura']=str(obj['fechaApertura'])
					dato['privado_oficina']= obj['privadoOficina']
					dato['moneda']= consulta3[0]['moneda']
					dato['saldo']= str(obj['saldo']) 
					lista.append(dato)

			data= json.dumps(lista)
		except:
			data='fail'+str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
def ListadoCtaAhorros_positivas(request):
	data=''
	if request.is_ajax:
		usr= request.user.username
		pag=request.GET.get('pg','')
		pg= 1
		if pag !='':
			pg= int(pag)
		desde= (pg-1)*20
		hasta= pg*20
		try:
			lista=[]
			#consulta1= list(Cliente.objects.all().values('pk','nombre','Apellido_paterno','Apellido_materno'))
			consulta1= list(CtaAhorros.objects.all().values('pk','id_cliente','idCajaDebe','saldo','interes','estado','privadoOficina','fechaApertura','observaciones','tipoCuenta','claveAcceso'))
			for obj in consulta1:
				if (str(obj['estado'])=='activo' or str(obj['estado'])=='bloqueado') and obj['saldo']>0:
					dato={}
					idCli= str(obj['id_cliente'])
					idCD= str(obj['idCajaDebe'])
					consulta2=Cliente.objects.filter(pk=idCli).values('pk','dni','nombre','Apellido_paterno','Apellido_materno','email','telefono','direccion','drem')
					consulta3=TCajaDebe.objects.filter(pk=idCD).values('id_oficina','id_personal','moneda')
					consulta4=Oficina.objects.filter(pk=consulta3[0]['id_oficina']).values('nombre_oficina')
					consulta5=Personal.objects.filter(pk=consulta3[0]['id_personal']).values('usuario')
					dato['ID']= obj['pk']
					dato['dni']= consulta2[0]['dni']
					dato['email']= consulta2[0]['email']
					dato['telefono']= consulta2[0]['telefono']
					dato['direccion']= consulta2[0]['direccion']
					dato['drem']= consulta2[0]['drem']
					dato['nombre']= consulta2[0]['nombre']
					dato['Apellido_paterno']=consulta2[0]['Apellido_paterno']
					dato['Apellido_materno']=consulta2[0]['Apellido_materno']
					dato['estado']=obj['estado']
					dato['observaciones']=obj['observaciones']
					dato['tipo_cuenta']=obj['tipoCuenta']
					dato['clave']=obj['claveAcceso']
					dato['oficina_apertura']= consulta4[0]['nombre_oficina']
					dato['usuario_apertura']= consulta5[0]['usuario']
					dato['fecha_apertura']=str(obj['fechaApertura'])
					dato['privado_oficina']= obj['privadoOficina']
					dato['moneda']= consulta3[0]['moneda']
					dato['saldo']= str(obj['saldo']) 
					dato['interes']= str(obj['interes']) 
					lista.append(dato)

			data= json.dumps(lista)
		except:
			data='fail'+str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
def ListadoCtaAhorros_op_positivas(request):
	data=''
	if request.is_ajax:
		pag=request.GET.get('pg','')
		pg= 1
		if pag !='':
			pg= int(pag)
		desde= (pg-1)*20
		hasta= pg*20
		usr= request.user.username
		C= Cajas.objects.get(id_usuario__usuario=usr)
		try:
			lista=[]
			#consulta1= list(Cliente.objects.all().values('pk','nombre','Apellido_paterno','Apellido_materno'))
			consulta1= list(CtaAhorros.objects.filter(idCajaDebe__id_oficina=C.id_oficina.pk).values('pk','id_cliente','idCajaDebe','saldo','interes','estado','privadoOficina','fechaApertura','observaciones','tipoCuenta','claveAcceso'))
			for obj in consulta1:
				if (str(obj['estado'])=='activo' or str(obj['estado'])=='bloqueado') and obj['saldo']>0:
					dato={}
					idCli= str(obj['id_cliente'])
					idCD= str(obj['idCajaDebe'])
					consulta2=Cliente.objects.filter(pk=idCli).values('pk','dni','nombre','Apellido_paterno','Apellido_materno','email','telefono','direccion','drem')
					consulta3=TCajaDebe.objects.filter(pk=idCD).values('id_oficina','id_personal','moneda')
					consulta4=Oficina.objects.filter(pk=consulta3[0]['id_oficina']).values('nombre_oficina')
					consulta5=Personal.objects.filter(pk=consulta3[0]['id_personal']).values('usuario')
					dato['ID']= obj['pk']
					dato['dni']= consulta2[0]['dni']
					dato['email']= consulta2[0]['email']
					dato['telefono']= consulta2[0]['telefono']
					dato['direccion']= consulta2[0]['direccion']
					dato['drem']= consulta2[0]['drem']
					dato['nombre']= consulta2[0]['nombre']
					dato['Apellido_paterno']=consulta2[0]['Apellido_paterno']
					dato['Apellido_materno']=consulta2[0]['Apellido_materno']
					dato['estado']=obj['estado']
					dato['observaciones']=obj['observaciones']
					dato['tipo_cuenta']=obj['tipoCuenta']
					dato['clave']=obj['claveAcceso']
					dato['oficina_apertura']= consulta4[0]['nombre_oficina']
					dato['usuario_apertura']= consulta5[0]['usuario']
					dato['fecha_apertura']=str(obj['fechaApertura'])
					dato['privado_oficina']= obj['privadoOficina']
					dato['moneda']= consulta3[0]['moneda']
					dato['saldo']= str(obj['saldo']) 
					dato['interes']= str(obj['interes']) 
					lista.append(dato)

			data= json.dumps(lista)
		except:
			data='fail'+str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
def ListadoCtaAhorros_sobregiradas(request):
	data=''
	if request.is_ajax:
		usr= request.user.username
		pag=request.GET.get('pg','')
		pg= 1
		if pag !='':
			pg= int(pag)
		desde= (pg-1)*20
		hasta= pg*20
		try:
			lista=[]
			#consulta1= list(Cliente.objects.all().values('pk','nombre','Apellido_paterno','Apellido_materno'))
			consulta1= list(CtaAhorros.objects.all().values('pk','id_cliente','idCajaDebe','saldo','interes','estado','privadoOficina','fechaApertura','observaciones','tipoCuenta','claveAcceso'))
			for obj in consulta1:
				if (str(obj['estado'])=='activo' or str(obj['estado'])=='bloqueado') and obj['saldo']<0:
					dato={}
					idCli= str(obj['id_cliente'])
					idCD= str(obj['idCajaDebe'])
					consulta2=Cliente.objects.filter(pk=idCli).values('pk','dni','nombre','Apellido_paterno','Apellido_materno','email','telefono','direccion','drem')
					consulta3=TCajaDebe.objects.filter(pk=idCD).values('id_oficina','id_personal','moneda')
					consulta4=Oficina.objects.filter(pk=consulta3[0]['id_oficina']).values('nombre_oficina')
					consulta5=Personal.objects.filter(pk=consulta3[0]['id_personal']).values('usuario')
					dato['ID']= obj['pk']
					dato['dni']= consulta2[0]['dni']
					dato['email']= consulta2[0]['email']
					dato['telefono']= consulta2[0]['telefono']
					dato['direccion']= consulta2[0]['direccion']
					dato['drem']= consulta2[0]['drem']
					dato['nombre']= consulta2[0]['nombre']
					dato['Apellido_paterno']=consulta2[0]['Apellido_paterno']
					dato['Apellido_materno']=consulta2[0]['Apellido_materno']
					dato['estado']=obj['estado']
					dato['observaciones']=obj['observaciones']
					dato['tipo_cuenta']=obj['tipoCuenta']
					dato['clave']=obj['claveAcceso']
					dato['oficina_apertura']= consulta4[0]['nombre_oficina']
					dato['usuario_apertura']= consulta5[0]['usuario']
					dato['fecha_apertura']=str(obj['fechaApertura'])
					dato['privado_oficina']= obj['privadoOficina']
					dato['moneda']= consulta3[0]['moneda']
					dato['saldo']= str(obj['saldo'])
					dato['interes']= str(obj['interes']) 
					lista.append(dato)

			data= json.dumps(lista)
		except:
			data='fail'+str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
def ListadoCtaAhorros_op_sobregiradas(request):
	data=''
	if request.is_ajax:
		usr= request.user.username
		pag=request.GET.get('pg','')
		pg= 1
		if pag !='':
			pg= int(pag)
		desde= (pg-1)*20
		hasta= pg*20
		C= Cajas.objects.get(id_usuario__usuario=usr)
		try:
			lista=[]
			#consulta1= list(Cliente.objects.all().values('pk','nombre','Apellido_paterno','Apellido_materno'))
			consulta1= list(CtaAhorros.objects.filter(idCajaDebe__id_oficina=C.id_oficina.pk).values('pk','id_cliente','idCajaDebe','saldo','interes','estado','privadoOficina','fechaApertura','observaciones','tipoCuenta','claveAcceso'))
			for obj in consulta1:
				if (str(obj['estado'])=='activo' or str(obj['estado'])=='bloqueado') and obj['saldo']<0:
					dato={}
					idCli= str(obj['id_cliente'])
					idCD= str(obj['idCajaDebe'])
					consulta2=Cliente.objects.filter(pk=idCli).values('pk','dni','nombre','Apellido_paterno','Apellido_materno','email','telefono','direccion','drem')
					consulta3=TCajaDebe.objects.filter(pk=idCD).values('id_oficina','id_personal','moneda')
					consulta4=Oficina.objects.filter(pk=consulta3[0]['id_oficina']).values('nombre_oficina')
					consulta5=Personal.objects.filter(pk=consulta3[0]['id_personal']).values('usuario')
					dato['ID']= obj['pk']
					dato['dni']= consulta2[0]['dni']
					dato['email']= consulta2[0]['email']
					dato['telefono']= consulta2[0]['telefono']
					dato['direccion']= consulta2[0]['direccion']
					dato['drem']= consulta2[0]['drem']
					dato['nombre']= consulta2[0]['nombre']
					dato['Apellido_paterno']=consulta2[0]['Apellido_paterno']
					dato['Apellido_materno']=consulta2[0]['Apellido_materno']
					dato['estado']=obj['estado']
					dato['observaciones']=obj['observaciones']
					dato['tipo_cuenta']=obj['tipoCuenta']
					dato['clave']=obj['claveAcceso']
					dato['oficina_apertura']= consulta4[0]['nombre_oficina']
					dato['usuario_apertura']= consulta5[0]['usuario']
					dato['fecha_apertura']=str(obj['fechaApertura'])
					dato['privado_oficina']= obj['privadoOficina']
					dato['moneda']= consulta3[0]['moneda']
					dato['saldo']= str(obj['saldo'])
					dato['interes']= str(obj['interes']) 
					lista.append(dato)

			data= json.dumps(lista)
		except:
			data='fail'+str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
def ListadoCtaAhorros_nrocuenta(request):
	data=''
	if request.is_ajax:
		usr= request.user.username
		pag=request.GET.get('pg','')
		id=request.GET.get('id','')
		pg= 1
		if pag !='':
			pg= int(pag)
		desde= (pg-1)*20
		hasta= pg*20
		try:
			lista=[]
			#consulta1= list(Cliente.objects.all().values('pk','nombre','Apellido_paterno','Apellido_materno'))
			consulta1= list(CtaAhorros.objects.filter(pk=id).values('pk','id_cliente','idCajaDebe','saldo','interes','estado','privadoOficina','fechaApertura','observaciones','tipoCuenta','claveAcceso'))
			for obj in consulta1:
				dato={}
				idCli= str(obj['id_cliente'])
				idCD= str(obj['idCajaDebe'])
				consulta2=Cliente.objects.filter(pk=idCli).values('pk','dni','nombre','Apellido_paterno','Apellido_materno','email','telefono','direccion','drem')
				consulta3=TCajaDebe.objects.filter(pk=idCD).values('id_oficina','id_personal','moneda')
				consulta4=Oficina.objects.filter(pk=consulta3[0]['id_oficina']).values('nombre_oficina')
				consulta5=Personal.objects.filter(pk=consulta3[0]['id_personal']).values('usuario')
				dato['ID']= obj['pk']
				dato['dni']= consulta2[0]['dni']
				dato['email']= consulta2[0]['email']
				dato['telefono']= consulta2[0]['telefono']
				dato['direccion']= consulta2[0]['direccion']
				dato['drem']= consulta2[0]['drem']
				dato['nombre']= consulta2[0]['nombre']
				dato['Apellido_paterno']=consulta2[0]['Apellido_paterno']
				dato['Apellido_materno']=consulta2[0]['Apellido_materno']
				dato['estado']=obj['estado']
				dato['observaciones']=obj['observaciones']
				dato['tipo_cuenta']=obj['tipoCuenta']
				dato['clave']=obj['claveAcceso']
				dato['oficina_apertura']= consulta4[0]['nombre_oficina']
				dato['usuario_apertura']= consulta5[0]['usuario']
				dato['fecha_apertura']=str(obj['fechaApertura'])
				dato['privado_oficina']= obj['privadoOficina']
				dato['moneda']= consulta3[0]['moneda']
				dato['saldo']= str(obj['saldo']) 
				dato['interes']= str(obj['interes']) 
				lista.append(dato)

			data= json.dumps(lista)
		except:
			data='fail'+str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
def ListadoCtaAhorros_op_nrocuenta(request):
	data=''
	if request.is_ajax:
		usr= request.user.username
		pag=request.GET.get('pg','')
		id=request.GET.get('id','')
		pg= 1
		if pag !='':
			pg= int(pag)
		desde= (pg-1)*20
		hasta= pg*20
		C= Cajas.objects.get(id_usuario__usuario=usr)
		try:
			lista=[]
			#consulta1= list(Cliente.objects.all().values('pk','nombre','Apellido_paterno','Apellido_materno'))
			consulta1= list(CtaAhorros.objects.filter(pk=id,idCajaDebe__id_oficina=C.id_oficina.pk).values('pk','id_cliente','idCajaDebe','saldo','interes','estado','privadoOficina','fechaApertura','observaciones','tipoCuenta','claveAcceso'))
			for obj in consulta1:
				dato={}
				idCli= str(obj['id_cliente'])
				idCD= str(obj['idCajaDebe'])
				consulta2=Cliente.objects.filter(pk=idCli).values('pk','dni','nombre','Apellido_paterno','Apellido_materno','email','telefono','direccion','drem')
				consulta3=TCajaDebe.objects.filter(pk=idCD).values('id_oficina','id_personal','moneda')
				consulta4=Oficina.objects.filter(pk=consulta3[0]['id_oficina']).values('nombre_oficina')
				consulta5=Personal.objects.filter(pk=consulta3[0]['id_personal']).values('usuario')
				dato['ID']= obj['pk']
				dato['dni']= consulta2[0]['dni']
				dato['email']= consulta2[0]['email']
				dato['telefono']= consulta2[0]['telefono']
				dato['direccion']= consulta2[0]['direccion']
				dato['drem']= consulta2[0]['drem']
				dato['nombre']= consulta2[0]['nombre']
				dato['Apellido_paterno']=consulta2[0]['Apellido_paterno']
				dato['Apellido_materno']=consulta2[0]['Apellido_materno']
				dato['estado']=obj['estado']
				dato['observaciones']=obj['observaciones']
				dato['tipo_cuenta']=obj['tipoCuenta']
				dato['clave']=obj['claveAcceso']
				dato['oficina_apertura']= consulta4[0]['nombre_oficina']
				dato['usuario_apertura']= consulta5[0]['usuario']
				dato['fecha_apertura']=str(obj['fechaApertura'])
				dato['privado_oficina']= obj['privadoOficina']
				dato['moneda']= consulta3[0]['moneda']
				dato['saldo']= str(obj['saldo']) 
				dato['interes']= str(obj['interes']) 
				lista.append(dato)

			data= json.dumps(lista)
		except:
			data='fail'+str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
def ListadoCtaCtes_sobregiradas(request):
	data=''
	if request.is_ajax:
		usr= request.user.username
		pag=request.GET.get('pg','')
		pg= 1
		if pag !='':
			pg= int(pag)
		desde= (pg-1)*20
		hasta= pg*20
		try:
			lista=[]
			#consulta1= list(Cliente.objects.all().values('pk','nombre','Apellido_paterno','Apellido_materno'))
			consulta1= list(CtaCte.objects.all().values('pk','id_cliente','idCajaDebe','saldo','estado','privadoOficina','fechaApertura','observaciones','tipoCuenta','claveAcceso'))
			for obj in consulta1:
				if (str(obj['estado'])=='activo' or str(obj['estado'])=='bloqueado') and obj['saldo']<0:
					dato={}
					idCli= str(obj['id_cliente'])
					idCD= str(obj['idCajaDebe'])
					consulta2=Cliente.objects.filter(pk=idCli).values('pk','dni','nombre','Apellido_paterno','Apellido_materno','email','telefono','direccion','drem')
					consulta3=TCajaDebe.objects.filter(pk=idCD).values('id_oficina','id_personal','moneda')
					consulta4=Oficina.objects.filter(pk=consulta3[0]['id_oficina']).values('nombre_oficina')
					consulta5=Personal.objects.filter(pk=consulta3[0]['id_personal']).values('usuario')
					dato['ID']= obj['pk']
					dato['dni']= consulta2[0]['dni']
					dato['email']= consulta2[0]['email']
					dato['telefono']= consulta2[0]['telefono']
					dato['direccion']= consulta2[0]['direccion']
					dato['drem']= consulta2[0]['drem']
					dato['nombre']= consulta2[0]['nombre']
					dato['Apellido_paterno']=consulta2[0]['Apellido_paterno']
					dato['Apellido_materno']=consulta2[0]['Apellido_materno']
					dato['estado']=obj['estado']
					dato['observaciones']=obj['observaciones']
					dato['tipo_cuenta']=obj['tipoCuenta']
					dato['clave']=obj['claveAcceso']
					dato['oficina_apertura']= consulta4[0]['nombre_oficina']
					dato['usuario_apertura']= consulta5[0]['usuario']
					dato['fecha_apertura']=str(obj['fechaApertura'])
					dato['privado_oficina']= obj['privadoOficina']
					dato['moneda']= consulta3[0]['moneda']
					dato['saldo']= str(obj['saldo']) 
					lista.append(dato)

			data= json.dumps(lista)
		except:
			data='fail'+str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
def ListadoCtaCtes_op_sobregiradas(request):
	data=''
	if request.is_ajax:
		usr= request.user.username
		pag=request.GET.get('pg','')
		pg= 1
		if pag !='':
			pg= int(pag)
		desde= (pg-1)*20
		hasta= pg*20
		C= Cajas.objects.get(id_usuario__usuario=usr)
		try:
			lista=[]
			#consulta1= list(Cliente.objects.all().values('pk','nombre','Apellido_paterno','Apellido_materno'))
			consulta1= list(CtaCte.objects.filter(idCajaDebe__id_oficina=C.id_oficina.pk).values('pk','id_cliente','idCajaDebe','saldo','estado','privadoOficina','fechaApertura','observaciones','tipoCuenta','claveAcceso'))
			for obj in consulta1:
				if (str(obj['estado'])=='activo' or str(obj['estado'])=='bloqueado') and obj['saldo']<0:
					dato={}
					idCli= str(obj['id_cliente'])
					idCD= str(obj['idCajaDebe'])
					consulta2=Cliente.objects.filter(pk=idCli).values('pk','dni','nombre','Apellido_paterno','Apellido_materno','email','telefono','direccion','drem')
					consulta3=TCajaDebe.objects.filter(pk=idCD).values('id_oficina','id_personal','moneda')
					consulta4=Oficina.objects.filter(pk=consulta3[0]['id_oficina']).values('nombre_oficina')
					consulta5=Personal.objects.filter(pk=consulta3[0]['id_personal']).values('usuario')
					dato['ID']= obj['pk']
					dato['dni']= consulta2[0]['dni']
					dato['email']= consulta2[0]['email']
					dato['telefono']= consulta2[0]['telefono']
					dato['direccion']= consulta2[0]['direccion']
					dato['drem']= consulta2[0]['drem']
					dato['nombre']= consulta2[0]['nombre']
					dato['Apellido_paterno']=consulta2[0]['Apellido_paterno']
					dato['Apellido_materno']=consulta2[0]['Apellido_materno']
					dato['estado']=obj['estado']
					dato['observaciones']=obj['observaciones']
					dato['tipo_cuenta']=obj['tipoCuenta']
					dato['clave']=obj['claveAcceso']
					dato['oficina_apertura']= consulta4[0]['nombre_oficina']
					dato['usuario_apertura']= consulta5[0]['usuario']
					dato['fecha_apertura']=str(obj['fechaApertura'])
					dato['privado_oficina']= obj['privadoOficina']
					dato['moneda']= consulta3[0]['moneda']
					dato['saldo']= str(obj['saldo']) 
					lista.append(dato)

			data= json.dumps(lista)
		except:
			data='fail'+str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)


@login_required
def ListadoCtaCtes_nrocuenta(request):
	data=''
	if request.is_ajax:
		usr= request.user.username
		pag=request.GET.get('pg','')
		id=request.GET.get('id','')
		pg= 1
		if pag !='':
			pg= int(pag)
		desde= (pg-1)*20
		hasta= pg*20
		try:
			lista=[]
			#consulta1= list(Cliente.objects.all().values('pk','nombre','Apellido_paterno','Apellido_materno'))
			consulta1= list(CtaCte.objects.filter(pk=id).values('pk','id_cliente','idCajaDebe','saldo','estado','privadoOficina','fechaApertura','observaciones','tipoCuenta','claveAcceso'))
			for obj in consulta1:
				dato={}
				idCli= str(obj['id_cliente'])
				idCD= str(obj['idCajaDebe'])
				consulta2=Cliente.objects.filter(pk=idCli).values('pk','dni','nombre','Apellido_paterno','Apellido_materno','email','telefono','direccion','drem')
				consulta3=TCajaDebe.objects.filter(pk=idCD).values('id_oficina','id_personal','moneda')
				consulta4=Oficina.objects.filter(pk=consulta3[0]['id_oficina']).values('nombre_oficina')
				consulta5=Personal.objects.filter(pk=consulta3[0]['id_personal']).values('usuario')
				dato['ID']= obj['pk']
				dato['dni']= consulta2[0]['dni']
				dato['email']= consulta2[0]['email']
				dato['telefono']= consulta2[0]['telefono']
				dato['direccion']= consulta2[0]['direccion']
				dato['drem']= consulta2[0]['drem']
				dato['nombre']= consulta2[0]['nombre']
				dato['Apellido_paterno']=consulta2[0]['Apellido_paterno']
				dato['Apellido_materno']=consulta2[0]['Apellido_materno']
				dato['estado']=obj['estado']
				dato['observaciones']=obj['observaciones']
				dato['tipo_cuenta']=obj['tipoCuenta']
				dato['clave']=obj['claveAcceso']
				dato['oficina_apertura']= consulta4[0]['nombre_oficina']
				dato['usuario_apertura']= consulta5[0]['usuario']
				dato['fecha_apertura']=str(obj['fechaApertura'])
				dato['privado_oficina']= obj['privadoOficina']
				dato['moneda']= consulta3[0]['moneda']
				dato['saldo']= str(obj['saldo']) 
				lista.append(dato)

			data= json.dumps(lista)
		except:
			data='fail'+str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
def ListadoCtaCtes_op_nrocuenta(request):
	data=''
	if request.is_ajax:
		usr= request.user.username
		pag=request.GET.get('pg','')
		id=request.GET.get('id','')
		pg= 1
		if pag !='':
			pg= int(pag)
		desde= (pg-1)*20
		hasta= pg*20
		C= Cajas.objects.get(id_usuario__usuario=usr)
		try:
			lista=[]
			#consulta1= list(Cliente.objects.all().values('pk','nombre','Apellido_paterno','Apellido_materno'))
			consulta1= list(CtaCte.objects.filter(pk=id,idCajaDebe__id_oficina=C.id_oficina.pk,privadoOficina='NO').values('pk','id_cliente','idCajaDebe','saldo','estado','privadoOficina','fechaApertura','observaciones','tipoCuenta','claveAcceso'))
			for obj in consulta1:
				dato={}
				idCli= str(obj['id_cliente'])
				idCD= str(obj['idCajaDebe'])
				consulta2=Cliente.objects.filter(pk=idCli).values('pk','dni','nombre','Apellido_paterno','Apellido_materno','email','telefono','direccion','drem')
				consulta3=TCajaDebe.objects.filter(pk=idCD).values('id_oficina','id_personal','moneda')
				consulta4=Oficina.objects.filter(pk=consulta3[0]['id_oficina']).values('nombre_oficina')
				consulta5=Personal.objects.filter(pk=consulta3[0]['id_personal']).values('usuario')
				dato['ID']= obj['pk']
				dato['dni']= consulta2[0]['dni']
				dato['email']= consulta2[0]['email']
				dato['telefono']= consulta2[0]['telefono']
				dato['direccion']= consulta2[0]['direccion']
				dato['drem']= consulta2[0]['drem']
				dato['nombre']= consulta2[0]['nombre']
				dato['Apellido_paterno']=consulta2[0]['Apellido_paterno']
				dato['Apellido_materno']=consulta2[0]['Apellido_materno']
				dato['estado']=obj['estado']
				dato['observaciones']=obj['observaciones']
				dato['tipo_cuenta']=obj['tipoCuenta']
				dato['clave']=obj['claveAcceso']
				dato['oficina_apertura']= consulta4[0]['nombre_oficina']
				dato['usuario_apertura']= consulta5[0]['usuario']
				dato['fecha_apertura']=str(obj['fechaApertura'])
				dato['privado_oficina']= obj['privadoOficina']
				dato['moneda']= consulta3[0]['moneda']
				dato['saldo']= str(obj['saldo']) 
				lista.append(dato)

			data= json.dumps(lista)
		except:
			data='fail'+str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
@permission_required('Main.add_oficina')
def ListadoCtaCtes_view(request):
	try:
		usr= request.user.username
		cargo ='administrador'
		C= Cajas.objects.get(id_usuario__usuario=usr)
		if C.id_usuario.pk == C.id_oficina.id_usuario.pk:
			cargo='administrador'
	except:
		cargo =''
	return render(request,'ListadoCtasCtes.html',{"cargo":cargo} )


@login_required
@permission_required('Main.add_oficina')
def ListadoAutorizarCtaCtes_view(request):
	try:
		usr= request.user.username
		cargo ='administrador'
		C= Cajas.objects.get(id_usuario__usuario=usr)
		if C.id_usuario.pk == C.id_oficina.id_usuario.pk:
			cargo='administrador'
	except:
		cargo =''
	return render(request,'ListadoPeticionesCtasCtes.html',{"cargo":cargo} )


@login_required
@permission_required('Main.add_oficina')
def ListadoCtaAhorros_view(request):
	try:
		usr= request.user.username
		cargo =''
		G= Gerente.objects.get(usuario=usr)
		C= Cajas.objects.get(id_usuario=G.id_usuario.pk)
		#C= Cajas.objects.get(id_usuario__usuario=usr)'
	except:
		cargo =''
	return render(request,'ListadoCtaSAhorros.html' )

@login_required
@permission_required('Main.add_oficina')
def ListadoAutorizarCtaAhorros_view(request):
	try:
		usr= request.user.username
		cargo =''
		G= Gerente.objects.get(usuario=usr)
		C= Cajas.objects.get(id_usuario=G.id_usuario.pk)
		#C= Cajas.objects.get(id_usuario__usuario=usr)'
	except:
		cargo =''
	return render(request,'ListadoPeticionesCtasAhorros.html' )


@login_required
def ListadoAutorizarCtaAhorros_ajax(request):
	data=''
	if request.is_ajax:
		pag=request.GET.get('pg','')
		pg= 1
		if pag !='':
			pg= int(pag)
		desde= (pg-1)*20
		hasta= pg*20
		try:
			lista=[]
			#consulta1= list(Cliente.objects.all().values('pk','nombre','Apellido_paterno','Apellido_materno'))
			consulta1= list(PeticionesCtaAhorros.objects.all().values('id','idctaahorros','estado','monto','tipoMoneda','fechaHora','id_personal','saldo','esSobregiro','montoSobregiro','interesSobregiro','nroDiasSobregiro'))
			for obj in consulta1:
				dato={}
				idPers= str(obj['id_personal'])
				idCta= str(obj['idctaahorros'])
				consulta2=CtaCte.objects.filter(pk=idCta).values('id_cliente','idCajaDebe')
				consulta3=Cliente.objects.filter(pk=consulta2[0]['id_cliente']).values('nombre','Apellido_paterno','Apellido_materno')
				consulta4=TCajaDebe.objects.filter(pk=consulta2[0]['idCajaDebe']).values('id_oficina','id_personal')
				consulta5=Oficina.objects.filter(pk=consulta4[0]['id_oficina']).values('nombre_oficina')
				consulta6=Personal.objects.filter(pk=consulta4[0]['id_personal']).values('usuario')
				dato['id']= obj['id']
				dato['usuario']= consulta6[0]['usuario']
				dato['oficina']= consulta5[0]['nombre_oficina']
				dato['nombre']= consulta3[0]['nombre']
				dato['ap']= consulta3[0]['Apellido_paterno']
				dato['am']= consulta3[0]['Apellido_materno']
				dato['idCta']= idCta
				dato['fechaHora']= str(obj['fechaHora'].strftime("%Y-%m-%d %H:%M %p"))
				dato['estado']=obj['estado']
				dato['monto']=str(obj['monto'])
				dato['saldo']=str(obj['saldo'])
				dato['moneda']=obj['tipoMoneda']
				lista.append(dato)

			data= json.dumps(lista)
		except:
			data='fail'+str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)


@login_required
def ListadoCtaAhorros_ajax(request):
	data=''
	if request.is_ajax:
		usr= request.user.username
		pag=request.GET.get('pg','')
		pg= 1
		if pag !='':
			pg= int(pag)
		desde= (pg-1)*20
		hasta= pg*20
		try:
			lista=[]
			#consulta1= list(Cliente.objects.all().values('pk','nombre','Apellido_paterno','Apellido_materno'))
			consulta1= list(CtaAhorros.objects.all().values('pk','id_cliente','idCajaDebe','saldo','interes','estado','privadoOficina','fechaApertura','observaciones','tipoCuenta','claveAcceso'))
			for obj in consulta1:
				dato={}
				idCli= str(obj['id_cliente'])
				idCD= str(obj['idCajaDebe'])
				consulta2=Cliente.objects.filter(pk=idCli).values('pk','dni','nombre','Apellido_paterno','Apellido_materno','email','telefono','direccion','drem')
				consulta3=TCajaDebe.objects.filter(pk=idCD).values('id_oficina','id_personal','moneda')
				consulta4=Oficina.objects.filter(pk=consulta3[0]['id_oficina']).values('nombre_oficina')
				consulta5=Personal.objects.filter(pk=consulta3[0]['id_personal']).values('usuario')
				dato['ID']= obj['pk']
				dato['dni']= consulta2[0]['dni']
				dato['email']= consulta2[0]['email']
				dato['telefono']= consulta2[0]['telefono']
				dato['direccion']= consulta2[0]['direccion']
				dato['drem']= consulta2[0]['drem']
				dato['nombre']= consulta2[0]['nombre']
				dato['Apellido_paterno']=consulta2[0]['Apellido_paterno']
				dato['Apellido_materno']=consulta2[0]['Apellido_materno']
				dato['estado']=obj['estado']
				dato['observaciones']=obj['observaciones']
				dato['tipo_cuenta']=obj['tipoCuenta']
				dato['clave']=obj['claveAcceso']
				dato['oficina_apertura']= consulta4[0]['nombre_oficina']
				dato['usuario_apertura']= consulta5[0]['usuario']
				dato['fecha_apertura']=str(obj['fechaApertura'].strftime("%Y-%m-%d %H:%M %p"))
				dato['privado_oficina']= obj['privadoOficina']
				dato['moneda']= consulta3[0]['moneda']
				dato['saldo']= str(obj['saldo']) 
				dato['interes']= str(obj['interes']) 
				lista.append(dato)

			data= json.dumps(lista)
		except:
			data='fail'+str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)


@login_required
def ListadoCtaAhorros_op_ajax(request):
	data=''
	if request.is_ajax:
		usr= request.user.username
		pag=request.GET.get('pg','')
		pg= 1
		if pag !='':
			pg= int(pag)
		desde= (pg-1)*20
		hasta= pg*20
		C= Cajas.objects.get(id_usuario__usuario=usr)
		try:
			lista=[]
			#consulta1= list(Cliente.objects.all().values('pk','nombre','Apellido_paterno','Apellido_materno'))
			consulta1= list(CtaAhorros.objects.filter(idCajaDebe__id_oficina=C.id_oficina.pk).values('pk','id_cliente','idCajaDebe','saldo','interes','estado','privadoOficina','fechaApertura','observaciones','tipoCuenta','claveAcceso'))
			for obj in consulta1:
				dato={}
				idCli= str(obj['id_cliente'])
				idCD= str(obj['idCajaDebe'])
				consulta2=Cliente.objects.filter(pk=idCli).values('pk','dni','nombre','Apellido_paterno','Apellido_materno','email','telefono','direccion','drem')
				consulta3=TCajaDebe.objects.filter(pk=idCD).values('id_oficina','id_personal','moneda')
				consulta4=Oficina.objects.filter(pk=consulta3[0]['id_oficina']).values('nombre_oficina')
				consulta5=Personal.objects.filter(pk=consulta3[0]['id_personal']).values('usuario')
				dato['ID']= obj['pk']
				dato['dni']= consulta2[0]['dni']
				dato['email']= consulta2[0]['email']
				dato['telefono']= consulta2[0]['telefono']
				dato['direccion']= consulta2[0]['direccion']
				dato['drem']= consulta2[0]['drem']
				dato['nombre']= consulta2[0]['nombre']
				dato['Apellido_paterno']=consulta2[0]['Apellido_paterno']
				dato['Apellido_materno']=consulta2[0]['Apellido_materno']
				dato['estado']=obj['estado']
				dato['observaciones']=obj['observaciones']
				dato['tipo_cuenta']=obj['tipoCuenta']
				dato['clave']=obj['claveAcceso']
				dato['oficina_apertura']= consulta4[0]['nombre_oficina']
				dato['usuario_apertura']= consulta5[0]['usuario']
				dato['fecha_apertura']=str(obj['fechaApertura'].strftime("%Y-%m-%d %H:%M %p"))
				dato['privado_oficina']= obj['privadoOficina']
				dato['moneda']= consulta3[0]['moneda']
				dato['saldo']= str(obj['saldo']) 
				dato['interes']= str(obj['interes']) 
				lista.append(dato)

			data= json.dumps(lista)
		except:
			data='fail'+str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@transaction.atomic
def NroDias(idCtaAhorrosMovimiento):
	data=''
	NroDias=0
	fechaActual_ = time.strftime("%d-%m-%Y")
	ultimaFecha=fechaActual_
	try:
		with transaction.atomic(): 
			consulta1=InteresesMensuales.objects.filter(id_ctaahorrosmovimientos=idCtaAhorrosMovimiento).values('fecha').order_by('fecha').reverse()[:1]
			if consulta1.count()==0:
				consulta2=CtaAhorrosMovimientos.objects.filter(pk=idCtaAhorrosMovimiento).values('fechaHora')
				ultimaFecha=consulta2[0]['fechaHora'].strftime("%d-%m-%Y")
			else:
				ultimaFecha=consulta1[0]['fecha'].strftime("%d-%m-%Y")

			formato_fecha = "%d-%m-%Y"
			fecha_inicial = datetime.datetime.strptime(str(ultimaFecha), formato_fecha)
			fecha_final = datetime.datetime.strptime(str(fechaActual_), formato_fecha)
			diferencia = fecha_final-fecha_inicial
			NroDias=diferencia.days
			data=NroDias

	except IntegrityError:
		data='fail'
	except:
		data='fail'+ str(sys.exc_info()[1])

	return data

@login_required
@permission_required('Main.add_oficina')
def traerResumenAbonos(request):
	if request.is_ajax:
		usr = request.user.username
		IdCtaAhorros = request.GET.get('idctaahorros')
		data=''
		lista=[]
		try:
			consulta = list(CtaAhorrosMovimientos.objects.filter(Q(id_ctaahorros=IdCtaAhorros),(Q(interesGanado__gt=0)|Q(subMontoDeposito__gt=0))).values('pk','montoDeposito','fechaHora','subMontoDeposito','interesGanado'))
			for obj in consulta:
				dato={}
				dato['pk']=str(obj['pk'])
				dato['fecha']=str(obj['fechaHora'].strftime("%d/%m/%Y"))
				dato['montoDeposito']=str(obj['montoDeposito'])
				dato['subMontoDeposito']=str(obj['subMontoDeposito'])
				dato['interesGanado']=str(obj['interesGanado'])
				dato['nroDias']=NroDias(obj['pk'])
				lista.append(dato)
			data= json.dumps(lista)
		except:
			data='error en consulta'+str(sys.exc_info()[1])
		
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
def ListadoCtaCtes_operador(request):
	try:
		usr= request.user.username
		cargo =''
		C= Cajas.objects.get(id_usuario__usuario=usr)

		if Oficina.objects.filter(id_usuario=C.id_usuario).exists():
			cargo='administrador'
	except:
		cargo =''
	return render(request,'ListadoCtaCtes_operador.html',{"cargo":cargo} )


@login_required
def ListadoCtaAhorros_operador(request):
	try:
		usr= request.user.username
		cargo ='administrador'
		C= Cajas.objects.get(id_usuario__usuario=usr)
		if C.id_usuario.pk == C.id_oficina.id_usuario.pk:
			cargo='administrador'
	except:
		cargo =''
	return render(request,'ListadoCtaAhorros_operador.html',{"cargo":cargo} )
"""


@login_required
def ListadoIngresoEgreso_operador_view(request):
	try:
		usr= request.user.username
		cargo =''
		C= Cajas.objects.get(id_usuario__usuario=usr)
		if C.id_usuario.pk == C.id_oficina.id_usuario.pk:
			cargo='administrador'
	except:
		cargo =''
	return render(request,'ListadoIngresoEgreso.html',{"cargo":cargo} )

#----------------------- servicios para sistema escritorio ------------------------------------
def escritorio_oficinas_ajax_view(request):
	if request.is_ajax:
		data=''
		usr= request.GET.get('user')
		pasw = request.GET.get('pass')
		lista=[]
		try:
			G=Gerente.objects.get(usuario=usr,password=pasw)
			consulta=list(Oficina.objects.exclude(nombre_oficina="Gerencia").values('pk','nombre_oficina'))
			for obj in consulta:
				lista.append(obj)
			data= json.dumps(lista)
		except:
			data='error en consulta'
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)
#****************************************************************************************
def calcular_pagos_para_descuento(usr):
	t_soles=0
	t_dolares=0
	C = Cajas.objects.get(id_usuario__usuario=usr)
	consulta1 = list(PagoTransferencia.objects.filter(idCajaHaber__id_caja=C.pk).exclude(idCajaHaber__aux1="descontado").exclude(id_solicitud_transferencia__idCajaDebe__id_caja=C.pk).values('pk','idCajaHaber','id_solicitud_transferencia'))
	for obj in consulta1:
		Ch= TCajaHaber.objects.get(pk=obj['idCajaHaber'])
		if Ch.moneda=='soles':
			t_soles=t_soles+float(Ch.cantidadDinero)
		elif Ch.moneda=='dolares':
			t_dolares=t_dolares+float(Ch.cantidadDinero)
	return t_soles,t_dolares

def calcular_egreso_para_descuento(usr):
	t_soles=0
	t_dolares=0
	C = Cajas.objects.get(id_usuario__usuario=usr)
	consulta1 = list(TCajaHaber.objects.filter(tablaRelacional='EnvioOficinaOficina',aux1="falta_descontar",id_caja=C.pk).values('pk','cantidadDinero','moneda'))
	for obj in consulta1:
		if obj['moneda']=='soles':
			t_soles=t_soles+float(obj['cantidadDinero'])
		elif obj['moneda']=='dolares':
			t_dolares=t_dolares+float(obj['cantidadDinero'])
	return t_soles,t_dolares

#-----------------------------------------------------------------
#****************************** EGRESO INGRESO **********************************
def calcular_egreso_para_descuento_envio_aux(usr):# id haber (desde hasta)
	t_soles=0
	t_dolares=0
	C = Cajas.objects.get(id_usuario__usuario=usr)
	consulta1 = list(TCajaHaber.objects.filter(id_oficina=C.id_oficina.pk,id_caja=C.pk).exclude(tablaRelacional__in=['PagoTransferencia','TtransferenciaExtorno','EnvioOficinaOficina','CompraDolar','VentaDolar','CtaAhorros','CtaAhorrosMovimientos','CtaCte','CtaCteMovimientos']).exclude(aux2="pagado").values('pk','cantidadDinero','moneda'))
	for obj in consulta1:
		if obj['moneda']=='soles':
			t_soles=t_soles+float(obj['cantidadDinero'])
		elif obj['moneda']=='dolares':
			t_dolares=t_dolares+float(obj['cantidadDinero'])
	return t_soles,t_dolares

def calcular_ingreso_para_descuento_envio_aux(usr):# id debe (desde hasta)
	t_soles=0
	t_dolares=0
	C = Cajas.objects.get(id_usuario__usuario=usr)
	consulta1 = list(TCajaDebe.objects.filter(id_oficina=C.id_oficina.pk,id_caja=C.pk).exclude(tablaRelacional__in=['SolicitudTransferencia','CompraDolar','VentaDolar','CtaAhorros','CtaAhorrosMovimientos','CtaCte','CtaCteMovimientos']).exclude(aux2="pagado").values('pk','cantidadDinero','moneda'))
	for obj in consulta1:
		if obj['moneda']=='soles':
			t_soles=t_soles+float(obj['cantidadDinero'])
		elif obj['moneda']=='dolares':
			t_dolares=t_dolares+float(obj['cantidadDinero'])
	return t_soles,t_dolares
#****************************************************************
#-----------------------------------------------------------------
"""
def calcular_deuda(usr):
	lista=[]
	C = Cajas.objects.get(id_usuario__usuario=usr)
	ofs= Oficina.objects.exclude(nombre_oficina="Gerencia").exclude(pk=C.id_oficina.pk).values('pk','nombre_oficina')
	for obj1 in ofs:
		conf= ConfiguracionExtra_oficina.objects.get(id_oficina=obj1['pk'])
		ofi= Oficina.objects.get(pk=obj1['pk'])
		Cjs= Cajas.objects.filter(id_oficina=ofi.pk).values('pk','nombre')
		for obj2 in Cjs:
			C_aux= Cajas.objects.get(pk=obj2['pk'])
			c_soles=0
			c_dolares=0
			t_soles=0
			t_dolares=0
			if conf.aux3 =='si':#ver saldo?
				saldo= SaldoDisponibleCajas.objects.get(id_oficina=ofi.pk,id_caja=C_aux.pk)
				dato={}
				dato['oficina']=obj1['nombre_oficina']
				dato['caja']= obj2['nombre']
				dato['op'] = C_aux.id_usuario.nombre + ' ' + C_aux.id_usuario.Apellido_paterno +' '+C_aux.id_usuario.Apellido_materno
				dato['totals']=normalizar(saldo.saldo_soles)
				dato['totald']=normalizar(saldo.saldo_dolares)
				dato['estado']=conf.aux2
				dato['ver_saldo']=conf.aux3
				lista.append(dato)
			else:
				if conf.aux2 =='enviador':#si  se puede ver el saldo
					consulta1 = list(SolicitudTransferencia.objects.filter(idCajaDebe__aux2='activo',idCajaDebe__id_oficina=obj1['pk'],idCajaDebe__id_caja=C_aux.pk).values('pk','idCajaDebe','comision','monto_conceptos'))
					for obj in consulta1:
						sq= PagoTransferencia.objects.filter(id_solicitud_transferencia=str(obj['pk']),idCajaHaber__id_caja=C_aux.pk)
						Cd= TCajaDebe.objects.get(pk=obj['idCajaDebe'])
						if Cd.moneda=='soles':
							#c_soles=c_soles+float(obj['comision'])
							if Cd.estadoTransaccion=='extornado' or sq.count()>0:
								if Cd.aux1=='todo':
									c_soles=c_soles
									t_soles=t_soles
								else:
									c_soles=c_soles+float(obj['comision'])
									t_soles=t_soles+float(obj['monto_conceptos'])+float(obj['comision'])
							else:
								c_soles=c_soles+float(obj['comision'])
								t_soles=t_soles+float(Cd.cantidadDinero)
						elif Cd.moneda=='dolares':
							#c_dolares= c_dolares+float(obj['comision'])
							if Cd.estadoTransaccion=='extornado' or sq.count()>0:
								if Cd.aux1=='todo':
									c_dolares= c_dolares
									t_dolares=t_dolares
								else:
									c_dolares= c_dolares+float(obj['comision'])
									t_dolares=t_dolares+float(obj['monto_conceptos'])+float(obj['comision'])
							else:
								c_dolares= c_dolares+float(obj['comision'])
								t_dolares=t_dolares+float(Cd.cantidadDinero)
					t_soles=t_soles-c_soles
					t_dolares= t_dolares - c_dolares
					
					tps=0
					tpd=0
					tps,tpd=calcular_pagos_para_descuento(C_aux.id_usuario.usuario)
					Es,Ed=0,0
					Es,Ed=calcular_egreso_para_descuento(C_aux.id_usuario.usuario)
					InS,InD=0,0
					InS,InD=calcular_ingreso_para_descuento_envio_aux(C_aux.id_usuario.usuario)
					EgS,EgD=0,0
					EgS,EgD=calcular_egreso_para_descuento_envio_aux(C_aux.id_usuario.usuario)
					dato={}
					dato['oficina']=obj1['nombre_oficina']
					dato['caja']= obj2['nombre']
					dato['op'] = C_aux.id_usuario.nombre + ' ' + C_aux.id_usuario.Apellido_paterno +' '+C_aux.id_usuario.Apellido_materno
					dato['ts']=t_soles
					dato['td']=t_dolares
					dato['cs']=c_soles
					dato['cd']=c_dolares
					dato['tps']=tps
					dato['tpd']=tpd
					dato['Es']=Es
					dato['Ed']=Ed
					#sin divicion de comision
					dato['totals']=normalizar(t_soles +c_soles -tps - Es + InS -EgS)
					dato['totald']=normalizar(t_dolares +c_dolares -tpd -Ed + InD - EgD)
					#con divicion de comision
					comision_dividida_s= round((1- float(conf.Prj_comicion_queda)/100)*c_soles,2)
					comision_dividida_d= round((1- float(conf.Prj_comicion_queda)/100)*c_dolares,2)
					dato['cs_div']=comision_dividida_s
					dato['cd_div']=comision_dividida_d
					dato['totals_div']=normalizar(t_soles +comision_dividida_s -tps- Es + InS -EgS)
					dato['totald_div']=normalizar(t_dolares +comision_dividida_d -tpd - Ed + InD - EgD)
					dato['estado']=conf.aux2
					dato['ver_saldo']=conf.aux3
					lista.append(dato)
	return lista"""

def monto_trans_por_pagar(pk):
	m=0
	try:
		C = Cajas.objects.get(pk=pk)
		if C.id_usuario == C.id_oficina.id_usuario:
			consulta= list(SolicitudTransferencia.objects.filter(id_oficina=C.id_oficina.pk,idCajaDebe__estadoTransaccion='activo').values('pk','idCajaDebe','comision','monto_conceptos'))
			for obj in consulta:
				d= TCajaDebe.objects.get(pk=obj['idCajaDebe'])
				oc=0
				if obj['monto_conceptos'] !='' and obj['monto_conceptos']!= None:
					oc= float(obj['monto_conceptos'])
				m=m+ float(d.cantidadDinero) -float(obj['comision']) -oc
		else:
			if caja_independiente.objects.filter(id_caja=pk,independiente='si').exists():
				consulta= list(SolicitudTransferencia.objects.filter(id_oficina=C.id_oficina.pk,idCajaDebe__estadoTransaccion='activo',observaciones__startswith=C.nombre).values('pk','idCajaDebe','comision','monto_conceptos'))
				for obj in consulta:
					d= TCajaDebe.objects.get(pk=obj['idCajaDebe'])
					oc=0
					if obj['monto_conceptos'] !='' and obj['monto_conceptos']!= None:
						oc= float(obj['monto_conceptos'])
					m=m+ float(d.cantidadDinero) -float(obj['comision']) -oc
	except:
		m=0
	return m

def monto_interc_por_pagar(pk):
	m=0
	try:
		C = Cajas.objects.get(pk=pk)
		if C.id_usuario == C.id_oficina.id_usuario:
			consulta= list(Intercambio.objects.filter(id_oficina=C.id_oficina.pk,idCajaDebe__estadoTransaccion='activo').values('pk','idCajaDebe','comision','monto_conceptos'))
			for obj in consulta:
				if PagoAdelantoIntercambio.objects.filter(id_intercambio=obj['pk']).exists():
					ui=PagoAdelantoIntercambio.objects.filter(id_intercambio=obj['pk']).latest("pk")
					m = m + float(ui.saldo)
				else:
					d= TCajaDebe.objects.get(pk=obj['idCajaDebe'])
					oc=0
					if obj['monto_conceptos'] !='' and obj['monto_conceptos']!= None:
						oc= float(obj['monto_conceptos'])
					m=m+ float(d.cantidadDinero) -float(obj['comision']) -oc
	except:
		m=0
	return m

#ctas corrientes
def monto_saldo_CtaCtes_ajax_view(pk):
	m=0
	try:
		C = Cajas.objects.get(pk=pk)
		consulta= list(CtaCte_main.objects.filter(id_caja=C.pk,moneda='soles').values('pk','saldo'))
		for obj in consulta:
			sld= float(obj['saldo'])
			if sld>0:
				m=m+sld
	except:
		m=0
	return m


def trans_leidos(pk):
	m=0
	try:
		C = Cajas.objects.get(pk=pk)
		if C.id_usuario == C.id_oficina.id_usuario:
			consulta= list(SolicitudTransferencia.objects.filter(id_oficina=C.id_oficina.pk,idCajaDebe__estadoTransaccion='activo',idCajaDebe__observaciones2='leido').values('pk','idCajaDebe','comision','monto_conceptos'))
			for obj in consulta:
				d= TCajaDebe.objects.get(pk=obj['idCajaDebe'])
				oc=0
				if obj['monto_conceptos'] !='' and obj['monto_conceptos']!= None:
					oc= float(obj['monto_conceptos'])
				m=m+ float(d.cantidadDinero) -float(obj['comision']) -oc
	except:
		m=0
	return m

def monto_por_recepcionar(pk):
	ms=0
	md=0
	try:
		C = Cajas.objects.get(pk=pk)
		depo = DepositoCaja.objects.filter(id_caja= C.pk,estado='enviado')
		depod= depo.filter(moneda='dolares').aggregate(Sum('monto'))
		depos= depo.filter(moneda='soles').aggregate(Sum('monto'))
		if depod['monto__sum']== None:
			depod=0
		else:
			depod=round(float(depod['monto__sum']),2)
		if depos['monto__sum']== None:
			depos=0
		else:
			depos=round(float(depos['monto__sum']),2)
		envOfd=0
		envOfs=0
		
		envCa = EnvioCajaCaja.objects.filter(id_CajaDestino= C.pk,estado='enviado')
		envCad= envCa.filter(moneda='dolares').aggregate(Sum('monto'))
		envCas= envCa.filter(moneda='soles').aggregate(Sum('monto'))
		if envCad['monto__sum']== None:
			envCad=0
		else:
			envCad=round(float(envCad['monto__sum']),2)
		if envCas['monto__sum']== None:
			envCas=0
		else:
			envCas=round(float(envCas['monto__sum']),2)
		md= depod + envOfd + envCad
		ms= depos + envOfs + envCas
	except:
		#print("ocurrio un error",str(sys.exc_info()[1]))
		ms=0
		md=0
	return ms,md

def monto_tope_cajas_global_ajax_view(pkC):
	data=''
	try:
		est=''
		msj=''
		ss=''
		sd=''
		mt=''
		C= Cajas.objects.get(pk=pkC)
		if oficinas_por_asociado.objects.filter(id_caja=C.pk,estado='activo').exists() or asociado.objects.filter(id_caja=C.pk).exists():
			Asoc=None
			asoc=None
			s1=None
			TM=None
			if asociado.objects.filter(id_caja=C.pk).exists():
				Asoc=asociado.objects.get(id_caja=C.pk)
				asoc= oficinas_por_asociado.objects.filter(id_asociado=Asoc.pk,estado='activo').values('pk','id_caja')
				s1= SaldoDisponibleCajas.objects.get(id_caja=Asoc.id_caja.pk)
				TM= ConfiguracionExtra_caja.objects.get(id_caja=Asoc.id_caja.pk)
			else:
				ofiAsoc=oficinas_por_asociado.objects.get(id_caja=C.pk,estado='activo')
				asoc= oficinas_por_asociado.objects.filter(id_asociado=ofiAsoc.id_asociado.pk,estado='activo').values('pk','id_caja')
				s1= SaldoDisponibleCajas.objects.get(id_caja=ofiAsoc.id_asociado.id_caja.pk)
				TM= ConfiguracionExtra_caja.objects.get(id_caja=ofiAsoc.id_asociado.id_caja.pk)
			saldos = s1.saldo_soles
			saldod = s1.saldo_dolares
			for obj in asoc:
				s= SaldoDisponibleCajas.objects.get(id_caja=obj['id_caja'])
				saldos= saldos +s.saldo_soles
				saldod= saldod +s.saldo_dolares
			
			ss=saldos
			sd=saldod
			mt=TM.monto_tope
			if (saldos > TM.monto_tope) or (saldod>TM.monto_tope):
				est='danger'
				msj='ESTE ASOCIADO YA PASO EL MONTO TOPE  EN TRANSFERENCIAS.'
			elif (saldos >= (TM.monto_tope-2000)) or (saldod >= (TM.monto_tope-2000)):
				est='warning'
				msj='ESTE ASOCIADO ESTA CERCA DE ALCANZAR EL MONTO TOPE EN TRANSFERENCIAS'
			else:
				est='success'
				msj='ASOCIADO'
		else:
			TM= ConfiguracionExtra_caja.objects.get(id_caja=C.pk)
			S= SaldoDisponibleCajas.objects.get(id_caja=C.pk)
			ss=S.saldo_soles
			sd=S.saldo_dolares
			mt=TM.monto_tope
			if (S.saldo_soles > TM.monto_tope) or (S.saldo_dolares>TM.monto_tope):
				est='danger'
				msj='ESTA CAJA YA PASO EL MONTO TOPE  EN TRANSFERENCIAS.'
			elif (S.saldo_soles >= (TM.monto_tope-2000)) or (S.saldo_dolares >= (TM.monto_tope-2000)):
				est='warning'
				msj='ESTA CAJA ESTA CERCA DE ALCANZAR EL MONTO TOPE EN TRANSFERENCIAS'
			else:
				est='success'
		#dato={'e':est,'me':msj,'ss':ss,'sd':sd,'mt':mt}
		#data= json.dumps(dato)
	except:
		data='error en consulta '+str(sys.exc_info()[1])
	return est,msj,ss,sd,mt

def calcular_deuda(usr):
	lista=[]
	C = Cajas.objects.get(id_usuario__usuario=usr)
	ca= Cajas.objects.filter(estado=True).exclude(id_oficina__nombre_oficina="Gerencia").order_by('id_oficina').values('pk','nombre')
	for obj1 in ca:
		est,msj,ss,sd,mto=monto_tope_cajas_global_ajax_view(obj1['pk'])
		mt=monto_trans_por_pagar(obj1['pk'])
		mrs,mrd=monto_por_recepcionar(obj1['pk'])
		mi=monto_interc_por_pagar(obj1['pk'])
		mcta_s=monto_saldo_CtaCtes_ajax_view(obj1['pk'])
		conf= ConfiguracionExtra_caja.objects.get(id_caja=obj1['pk'])
		confs= TConfiguracionSistema.objects.get(id_caja=obj1['pk'])
		ml=''
		if confs.conf2=='externa':
			ml=trans_leidos(obj1['pk'])
		C_aux= Cajas.objects.get(pk=obj1['pk'])
		c_soles=0
		c_dolares=0
		t_soles=0
		t_dolares=0
		dato={}
		if conf.ver_saldo =='si':#ver saldo?
			saldo= SaldoDisponibleCajas.objects.get(id_caja=C_aux.pk)
			dato['oficina']=C_aux.id_oficina.nombre_oficina
			dato['caja']= C_aux.nombre
			dato['op'] = C_aux.id_usuario.nombre + ' ' + C_aux.id_usuario.Apellido_paterno
			dato['totals']=normalizar(saldo.saldo_soles)
			dato['totald']=normalizar(saldo.saldo_dolares)
			dato['ver_saldo']=conf.ver_saldo
			dato['mt']= mt
			dato['mrs']= mrs
			dato['mrd']= mrd
			dato['ml']= ml
			dato['mi']= mi
			dato['moto']= normalizar(mto)
			dato['mcta_s']= normalizar(mcta_s)
			dato['est']= est
		lista.append(dato)

	return lista

@login_required
def deuda_oficinas_ajax_view(request):
	if request.is_ajax:
		usr = request.user.username
		try:
			l= calcular_deuda(usr)
			data= json.dumps(l)
		except:
			data='fail'+ str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

#----------------- asociado --------------
def calcular_deuda_asociado(usr):
	lista=[]
	C = Cajas.objects.get(id_usuario__usuario=usr)
	ca= oficinas_por_asociado.objects.filter(id_asociado__id_caja=C.pk,estado='activo').order_by('id_caja').values('pk','id_caja')
	for obj1 in ca:
		mt=monto_trans_por_pagar(obj1['id_caja'])
		mrs,mrd=monto_por_recepcionar(obj1['id_caja'])
		mi=monto_interc_por_pagar(obj1['id_caja'])
		mcta=monto_saldo_CtaCtes_ajax_view(obj1['id_caja'])
		conf= ConfiguracionExtra_caja.objects.get(id_caja=obj1['id_caja'])
		C_aux= Cajas.objects.get(pk=obj1['id_caja'])
		c_soles=0
		c_dolares=0
		t_soles=0
		t_dolares=0
		dato={}
		if conf.ver_saldo =='si':#ver saldo?
			saldo= SaldoDisponibleCajas.objects.get(id_caja=C_aux.pk)
			dato['oficina']=C_aux.id_oficina.nombre_oficina
			dato['caja']= C_aux.nombre
			dato['op'] = C_aux.id_usuario.nombre + ' ' + C_aux.id_usuario.Apellido_paterno +' '+C_aux.id_usuario.Apellido_materno
			dato['totals']=normalizar(saldo.saldo_soles)
			dato['totald']=normalizar(saldo.saldo_dolares)
			dato['ver_saldo']=conf.ver_saldo
			dato['mt']= mt
			dato['mrs']= mrs
			dato['mrd']= mrd
			dato['mi']= mi
			dato['mcta']= mcta
		lista.append(dato)

	return lista

@login_required
def deuda_oficinas_asociado_ajax_view(request):
	if request.is_ajax:
		usr = request.user.username
		try:
			l= calcular_deuda_asociado(usr)
			data= json.dumps(l)
		except:
			data='fail'+ str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)
#-------------------------------------end asociado------------------

@login_required
def Deuda_Oficinas_view(request):
	try:
		usr= request.user.username
		cargo =''
		C= Cajas.objects.get(id_usuario__usuario=usr)
		if C.id_usuario.pk == C.id_oficina.id_usuario.pk:
			cargo='administrador'
	except:
		cargo =''
	return render(request,"DeudaOficinas.html",{"cargo":cargo} )

#****************************** SUBGERENCIA *************************************
def calcular_deudaAdmin(usr):
	lista=[]
	ca= Cajas.objects.filter(estado=True).exclude(id_oficina__nombre_oficina="Gerencia").order_by('id_oficina').values('pk','nombre')
	for obj1 in ca:
		est,msj,ss,sd,mto=monto_tope_cajas_global_ajax_view(obj1['pk'])
		mt=monto_trans_por_pagar(obj1['pk'])
		mrs,mrd=monto_por_recepcionar(obj1['pk'])
		mi=monto_interc_por_pagar(obj1['pk'])
		mcta=monto_saldo_CtaCtes_ajax_view(obj1['pk'])
		conf= ConfiguracionExtra_caja.objects.get(id_caja=obj1['pk'])
		confs= TConfiguracionSistema.objects.get(id_caja=obj1['pk'])
		ml=''
		if confs.conf2=='externa':
			ml=trans_leidos(obj1['pk'])
		C_aux= Cajas.objects.get(pk=obj1['pk'])
		c_soles=0
		c_dolares=0
		t_soles=0
		t_dolares=0
		dato={}
		if conf.ver_saldo =='si':#ver saldo?
			saldo= SaldoDisponibleCajas.objects.get(id_caja=C_aux.pk)
			saldom= SaldoDisponibleCajaMaterial.objects.get(id_caja=C_aux.pk)
			dato['oficina']=C_aux.id_oficina.nombre_oficina
			dato['caja']= C_aux.nombre
			dato['op'] = C_aux.id_usuario.nombre + ' ' + C_aux.id_usuario.Apellido_paterno
			dato['totals']=normalizar(saldo.saldo_soles)
			dato['totald']=normalizar(saldo.saldo_dolares)
			dato['totalm']=normalizar(saldom.saldo_Material)
			dato['ver_saldo']=conf.ver_saldo
			dato['mt']= mt
			dato['mrs']= mrs
			dato['mrd']= mrd
			dato['ml']= ml
			dato['mi']= mi
			dato['mcta']= mcta
			dato['moto']= normalizar(mto)
			dato['est']= est
		lista.append(dato)

	return lista



@login_required
@permission_required('Main.add_oficina')
def deuda_oficinasAdmin_ajax_view(request):
	if request.is_ajax:
		usr = request.user.username
		try:
			l= calcular_deudaAdmin(usr)
			data= json.dumps(l)
		except:
			data='fail'+ str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
@permission_required('Main.add_oficina')
def Deuda_Oficinas_Admin_view(request):
	return render(request,"DeudaOficinasAdmin.html" )
#********************************************************************************
@login_required
@permission_required('Main.add_oficina')
def Balance_oficinas_ajax_view(request):
	if request.is_ajax:
		data=''
		lista=[]
		consulta=list(Oficina.objects.exclude(nombre_oficina="Gerencia").values('pk','nombre_oficina'))
		for obj in consulta:
			debe= TCajaDebe.objects.filter(id_oficina=obj['pk']).values('pk','cantidadDinero')
			DebeSoles= debe.filter(moneda='soles').aggregate(Sum('cantidadDinero'))
			DebeDolares= debe.filter(moneda='dolares').aggregate(Sum('cantidadDinero'))
			haber= TCajaHaber.objects.filter(id_oficina=obj['pk']).values('pk','cantidadDinero')
			HaberSoles= haber.filter(moneda='soles').aggregate(Sum('cantidadDinero'))
			HaberDolares= haber.filter(moneda='dolares').aggregate(Sum('cantidadDinero'))
			dato={}
			dato['oficina']=obj['nombre_oficina']
			if DebeSoles['cantidadDinero__sum'] == None:
				dato['is']=0
			else:
				dato['is']=float(DebeSoles['cantidadDinero__sum'])
			if DebeDolares['cantidadDinero__sum']== None:
				dato['id']=0
			else:
				dato['id']=float(DebeDolares['cantidadDinero__sum'])
			if HaberSoles['cantidadDinero__sum'] == None:
				dato['es']=0
			else:
				dato['es']=float(HaberSoles['cantidadDinero__sum'])
			if HaberDolares['cantidadDinero__sum']==None:
				dato['ed']=0
			else:
				dato['ed']=float(HaberDolares['cantidadDinero__sum'])
		lista.append(dato)
		data= json.dumps(lista)
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

#********************* BALANCE ST ********************
@login_required
@permission_required('Main.add_oficina')
def Balance_fechas_todo_oficinas_ajax_view(request):
	if request.is_ajax:
		data=''
		lista=[]
		fre= request.GET.get('fre')
		F1= request.GET.get('F1')
		F2 = request.GET.get('F2')
		consulta=list(Oficina.objects.exclude(nombre_oficina="Gerencia").values('pk','nombre_oficina'))
		if fre == "d":
			fecha1= datetime.datetime.strptime(F1, '%Y-%m-%d')
			fecha2= datetime.datetime.strptime(F2, '%Y-%m-%d')
			fhoramin= datetime.datetime.combine(fecha1,datetime.time.min)
			fhoramax= datetime.datetime.combine(fecha2,datetime.time.max)
			for obj in consulta:
				debe= TCajaDebe.objects.filter(id_oficina=obj['pk'],tablaRelacional= 'SolicitudTransferencia',fecha__range=(fhoramin,fhoramax)).values('pk','cantidadDinero')
				DebeSoles= debe.filter(moneda='soles').aggregate(Sum('cantidadDinero'))
				DebeDolares= debe.filter(moneda='dolares').aggregate(Sum('cantidadDinero'))
				haber= TCajaHaber.objects.filter(id_oficina=obj['pk'], tablaRelacional__in=['TtransferenciaExtorno','PagoTransferencia'] ,fecha__range=(fhoramin,fhoramax)).values('pk','cantidadDinero')
				HaberSoles= haber.filter(moneda='soles').aggregate(Sum('cantidadDinero'))
				HaberDolares= haber.filter(moneda='dolares').aggregate(Sum('cantidadDinero'))
				dato={}
				dato['oficina']=obj['nombre_oficina']
				if DebeSoles['cantidadDinero__sum'] == None:
					dato['is']=0
				else:
					dato['is']=float(DebeSoles['cantidadDinero__sum'])
				if DebeDolares['cantidadDinero__sum']== None:
					dato['id']=0
				else:
					dato['id']=float(DebeDolares['cantidadDinero__sum'])
				if HaberSoles['cantidadDinero__sum'] == None:
					dato['es']=0
				else:
					dato['es']=float(HaberSoles['cantidadDinero__sum'])
				if HaberDolares['cantidadDinero__sum']==None:
					dato['ed']=0
				else:
					dato['ed']=float(HaberDolares['cantidadDinero__sum'])
				lista.append(dato)
		elif fre =="a":
			fecha1= datetime.datetime.strptime(str(F1)+"-01-01", '%Y-%m-%d')
			fecha2= datetime.datetime.strptime(str(F2)+"-12-31", '%Y-%m-%d')
			fhoramin= datetime.datetime.combine(fecha1,datetime.time.min)
			fhoramax= datetime.datetime.combine(fecha2,datetime.time.max)
			for obj in consulta:
				debe= TCajaDebe.objects.filter(id_oficina=obj['pk'],tablaRelacional= 'SolicitudTransferencia',fecha__range=(fhoramin,fhoramax)).values('pk','cantidadDinero')
				DebeSoles= debe.filter(moneda='soles').aggregate(Sum('cantidadDinero'))
				DebeDolares= debe.filter(moneda='dolares').aggregate(Sum('cantidadDinero'))
				haber= TCajaHaber.objects.filter(id_oficina=obj['pk'], tablaRelacional__in=['TtransferenciaExtorno','PagoTransferencia'],fecha__range=(fhoramin,fhoramax)).values('pk','cantidadDinero')
				HaberSoles= haber.filter(moneda='soles').aggregate(Sum('cantidadDinero'))
				HaberDolares= haber.filter(moneda='dolares').aggregate(Sum('cantidadDinero'))
				dato={}
				dato['oficina']=obj['nombre_oficina']
				if DebeSoles['cantidadDinero__sum'] == None:
					dato['is']=0
				else:
					dato['is']=float(DebeSoles['cantidadDinero__sum'])
				if DebeDolares['cantidadDinero__sum']== None:
					dato['id']=0
				else:
					dato['id']=float(DebeDolares['cantidadDinero__sum'])
				if HaberSoles['cantidadDinero__sum'] == None:
					dato['es']=0
				else:
					dato['es']=float(HaberSoles['cantidadDinero__sum'])
				if HaberDolares['cantidadDinero__sum']==None:
					dato['ed']=0
				else:
					dato['ed']=float(HaberDolares['cantidadDinero__sum'])
				lista.append(dato)
		elif fre =="m":
			aux2= str(F2).split("-")
			f2=calendar.monthrange(int(aux2[0]),int(aux2[1]))
			fecha1= datetime.datetime.strptime(str(F1)+"-01", '%Y-%m-%d')
			fecha2= datetime.datetime.strptime(str(F2)+"-"+str(f2[1]), '%Y-%m-%d')
			fhoramin= datetime.datetime.combine(fecha1,datetime.time.min)
			fhoramax= datetime.datetime.combine(fecha2,datetime.time.max)
			for obj in consulta:
				debe= TCajaDebe.objects.filter(id_oficina=obj['pk'],tablaRelacional= 'SolicitudTransferencia',fecha__range=(fhoramin,fhoramax)).values('pk','cantidadDinero')
				DebeSoles= debe.filter(moneda='soles').aggregate(Sum('cantidadDinero'))
				DebeDolares= debe.filter(moneda='dolares').aggregate(Sum('cantidadDinero'))
				haber= TCajaHaber.objects.filter(id_oficina=obj['pk'], tablaRelacional__in=['TtransferenciaExtorno','PagoTransferencia'],fecha__range=(fhoramin,fhoramax)).values('pk','cantidadDinero')
				HaberSoles= haber.filter(moneda='soles').aggregate(Sum('cantidadDinero'))
				HaberDolares= haber.filter(moneda='dolares').aggregate(Sum('cantidadDinero'))
				dato={}
				dato['oficina']=obj['nombre_oficina']
				if DebeSoles['cantidadDinero__sum'] == None:
					dato['is']=0
				else:
					dato['is']=float(DebeSoles['cantidadDinero__sum'])
				if DebeDolares['cantidadDinero__sum']== None:
					dato['id']=0
				else:
					dato['id']=float(DebeDolares['cantidadDinero__sum'])
				if HaberSoles['cantidadDinero__sum'] == None:
					dato['es']=0
				else:
					dato['es']=float(HaberSoles['cantidadDinero__sum'])
				if HaberDolares['cantidadDinero__sum']==None:
					dato['ed']=0
				else:
					dato['ed']=float(HaberDolares['cantidadDinero__sum'])
				lista.append(dato)
		data= json.dumps(lista)
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

#******************* BALANCE DT *********************
@login_required
@permission_required('Main.add_oficina')
def BalanceDT_fechas_todo_oficinas_ajax_view(request):
	if request.is_ajax:
		data=''
		lista=[]
		fre= request.GET.get('fre')
		F1= request.GET.get('F1')
		F2 = request.GET.get('F2')
		consulta=list(Oficina.objects.exclude(nombre_oficina="Gerencia").values('pk','nombre_oficina'))
		if fre == "d":
			fecha1= datetime.datetime.strptime(F1, '%Y-%m-%d')
			fecha2= datetime.datetime.strptime(F2, '%Y-%m-%d')
			fhoramin= datetime.datetime.combine(fecha1,datetime.time.min)
			fhoramax= datetime.datetime.combine(fecha2,datetime.time.max)
			for obj in consulta:
				debe= SolicitudTransferencia.objects.filter(idCajaDebe__id_oficina=obj['pk'],idCajaDebe__fecha__range=(fhoramin,fhoramax)).exclude(idCajaDebe__aux1='todo').values('pk','comision')
				DebeSoles= debe.filter(idCajaDebe__moneda='soles').aggregate(Sum('comision'))
				DebeDolares= debe.filter(idCajaDebe__moneda='dolares').aggregate(Sum('comision'))
				
				dato={}
				dato['oficina']=obj['nombre_oficina']
				if DebeSoles['comision__sum'] == None:
					dato['is']=0
				else:
					dato['is']=float(DebeSoles['comision__sum'])
				if DebeDolares['comision__sum']== None:
					dato['id']=0
				else:
					dato['id']=float(DebeDolares['comision__sum'])
				lista.append(dato)
		elif fre =="a":
			fecha1= datetime.datetime.strptime(str(F1)+"-01-01", '%Y-%m-%d')
			fecha2= datetime.datetime.strptime(str(F2)+"-12-31", '%Y-%m-%d')
			fhoramin= datetime.datetime.combine(fecha1,datetime.time.min)
			fhoramax= datetime.datetime.combine(fecha2,datetime.time.max)
			for obj in consulta:
				debe= SolicitudTransferencia.objects.filter(idCajaDebe__id_oficina=obj['pk'],idCajaDebe__fecha__range=(fhoramin,fhoramax)).exclude(idCajaDebe__aux1='todo').values('pk','comision')
				DebeSoles= debe.filter(idCajaDebe__moneda='soles').aggregate(Sum('comision'))
				DebeDolares= debe.filter(idCajaDebe__moneda='dolares').aggregate(Sum('comision'))
				
				dato={}
				dato['oficina']=obj['nombre_oficina']
				if DebeSoles['comision__sum'] == None:
					dato['is']=0
				else:
					dato['is']=float(DebeSoles['comision__sum'])
				if DebeDolares['comision__sum']== None:
					dato['id']=0
				else:
					dato['id']=float(DebeDolares['comision__sum'])
				lista.append(dato)
		elif fre =="m":
			aux2= str(F2).split("-")
			f2=calendar.monthrange(int(aux2[0]),int(aux2[1]))
			fecha1= datetime.datetime.strptime(str(F1)+"-01", '%Y-%m-%d')
			fecha2= datetime.datetime.strptime(str(F2)+"-"+str(f2[1]), '%Y-%m-%d')
			fhoramin= datetime.datetime.combine(fecha1,datetime.time.min)
			fhoramax= datetime.datetime.combine(fecha2,datetime.time.max)
			for obj in consulta:
				debe= SolicitudTransferencia.objects.filter(idCajaDebe__id_oficina=obj['pk'],idCajaDebe__fecha__range=(fhoramin,fhoramax)).exclude(idCajaDebe__aux1='todo').values('pk','comision')
				DebeSoles= debe.filter(idCajaDebe__moneda='soles').aggregate(Sum('comision'))
				DebeDolares= debe.filter(idCajaDebe__moneda='dolares').aggregate(Sum('comision'))
				
				dato={}
				dato['oficina']=obj['nombre_oficina']
				if DebeSoles['comision__sum'] == None:
					dato['is']=0
				else:
					dato['is']=float(DebeSoles['comision__sum'])
				if DebeDolares['comision__sum']== None:
					dato['id']=0
				else:
					dato['id']=float(DebeDolares['comision__sum'])
				lista.append(dato)
		data= json.dumps(lista)
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

#*************************FUNCIONES CON FECHAS**********************
def lista_anios(f1,f2):
	lista=[]
	i=int(f1)
	j=int(f2)
	while i<=j:
		lista.append(i)
		i=i+1
	return lista

def lista_meses(f1,f2):
	lista=[]
	f1= str(f1).split("-")#[anios,meses]
	f2= str(f2).split("-")
	anio1=int(f1[0])
	mes1= int(f1[1])
	anio2=int(f2[0])
	mes2= int(f2[1])
	while (anio1*100+mes1)<=(anio2*100+mes2):
		lista.append([anio1,mes1])
		m=calendar.monthrange(anio1,mes1)#(anio,mes)-->(mes,ud)
		f= datetime.datetime.strptime(str(anio1)+"-"+str(mes1)+"-"+str(m[1]) , '%Y-%m-%d')
		nf= f + timedelta(days=1)
		anio1=nf.year
		mes1=nf.month
	return lista

def lista_dias(f1,f2):
	lista=[]
	fecha1= datetime.datetime.strptime(f1, '%Y-%m-%d')
	fecha2= datetime.datetime.strptime(f2, '%Y-%m-%d')
	while fecha1<=fecha2:
		lista.append([fecha1.year,fecha1.month,fecha1.day])
		nf= fecha1 + timedelta(days=1)
		fecha1= nf
	return lista

#*******************************************************************
@login_required
@permission_required('Main.add_oficina')
def Balance_fechas_oficina_ajax_view(request):
	if request.is_ajax:
		data=''
		lista=[]
		fre= request.GET.get('fre')
		F1= request.GET.get('F1')
		F2 = request.GET.get('F2')
		of = request.GET.get('of')
		ofi=Oficina.objects.get(pk=of)
		if fre == "d":
			ld=lista_dias(F1,F2)
			for obj in ld:
				debe= TCajaDebe.objects.filter(id_oficina=ofi,fecha__year=obj[0],fecha__month=obj[1],fecha__day=obj[2]).values('pk','cantidadDinero')
				DebeSoles= debe.filter(moneda='soles').aggregate(Sum('cantidadDinero'))
				DebeDolares= debe.filter(moneda='dolares').aggregate(Sum('cantidadDinero'))
				haber= TCajaHaber.objects.filter(id_oficina=ofi,fecha__year=obj[0],fecha__month=obj[1],fecha__day=obj[2]).values('pk','cantidadDinero')
				HaberSoles= haber.filter(moneda='soles').aggregate(Sum('cantidadDinero'))
				HaberDolares= haber.filter(moneda='dolares').aggregate(Sum('cantidadDinero'))
				dato={}
				dato['f']=str(obj[0])+"-"+str(obj[1])+"-"+str(obj[2])
				if DebeSoles['cantidadDinero__sum'] == None:
					dato['is']=0
				else:
					dato['is']=float(DebeSoles['cantidadDinero__sum'])
				if DebeDolares['cantidadDinero__sum']== None:
					dato['id']=0
				else:
					dato['id']=float(DebeDolares['cantidadDinero__sum'])
				if HaberSoles['cantidadDinero__sum'] == None:
					dato['es']=0
				else:
					dato['es']=float(HaberSoles['cantidadDinero__sum'])
				if HaberDolares['cantidadDinero__sum']==None:
					dato['ed']=0
				else:
					dato['ed']=float(HaberDolares['cantidadDinero__sum'])
				lista.append(dato)
		elif fre =="a":
			la=lista_anios(F1,F2)
			for obj in la:
				debe= TCajaDebe.objects.filter(id_oficina=ofi,fecha__year=obj).values('pk','cantidadDinero')
				DebeSoles= debe.filter(moneda='soles').aggregate(Sum('cantidadDinero'))
				DebeDolares= debe.filter(moneda='dolares').aggregate(Sum('cantidadDinero'))
				haber= TCajaHaber.objects.filter(id_oficina=ofi,fecha__year=obj).values('pk','cantidadDinero')
				HaberSoles= haber.filter(moneda='soles').aggregate(Sum('cantidadDinero'))
				HaberDolares= haber.filter(moneda='dolares').aggregate(Sum('cantidadDinero'))
				dato={}
				dato['f']=obj
				if DebeSoles['cantidadDinero__sum'] == None:
					dato['is']=0
				else:
					dato['is']=float(DebeSoles['cantidadDinero__sum'])
				if DebeDolares['cantidadDinero__sum']== None:
					dato['id']=0
				else:
					dato['id']=float(DebeDolares['cantidadDinero__sum'])
				if HaberSoles['cantidadDinero__sum'] == None:
					dato['es']=0
				else:
					dato['es']=float(HaberSoles['cantidadDinero__sum'])
				if HaberDolares['cantidadDinero__sum']==None:
					dato['ed']=0
				else:
					dato['ed']=float(HaberDolares['cantidadDinero__sum'])
				lista.append(dato)
		elif fre =="m":
			lm=lista_meses(F1,F2)
			for obj in lm:
				debe= TCajaDebe.objects.filter(id_oficina=ofi,fecha__year=obj[0],fecha__month=obj[1]).values('pk','cantidadDinero')
				DebeSoles= debe.filter(moneda='soles').aggregate(Sum('cantidadDinero'))
				DebeDolares= debe.filter(moneda='dolares').aggregate(Sum('cantidadDinero'))
				haber= TCajaHaber.objects.filter(id_oficina=ofi,fecha__year=obj[0],fecha__month=obj[1]).values('pk','cantidadDinero')
				HaberSoles= haber.filter(moneda='soles').aggregate(Sum('cantidadDinero'))
				HaberDolares= haber.filter(moneda='dolares').aggregate(Sum('cantidadDinero'))
				dato={}
				dato['f']=str(obj[0])+"-"+str(obj[1])
				if DebeSoles['cantidadDinero__sum'] == None:
					dato['is']=0
				else:
					dato['is']=float(DebeSoles['cantidadDinero__sum'])
				if DebeDolares['cantidadDinero__sum']== None:
					dato['id']=0
				else:
					dato['id']=float(DebeDolares['cantidadDinero__sum'])
				if HaberSoles['cantidadDinero__sum'] == None:
					dato['es']=0
				else:
					dato['es']=float(HaberSoles['cantidadDinero__sum'])
				if HaberDolares['cantidadDinero__sum']==None:
					dato['ed']=0
				else:
					dato['ed']=float(HaberDolares['cantidadDinero__sum'])
				lista.append(dato)
		data= json.dumps(lista)
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)
#*********************** BALANCE DT *****************************
@login_required
@permission_required('Main.add_oficina')
def BalanceDT_fechas_oficina_ajax_view(request):
	if request.is_ajax:
		data=''
		lista=[]
		fre= request.GET.get('fre')
		F1= request.GET.get('F1')
		F2 = request.GET.get('F2')
		of = request.GET.get('of')
		ofi=Oficina.objects.get(pk=of)
		if fre == "d":
			ld=lista_dias(F1,F2)
			for obj in ld:
				debe= SolicitudTransferencia.objects.filter(idCajaDebe__id_oficina=ofi,idCajaDebe__fecha__year=obj[0],idCajaDebe__fecha__month=obj[1],idCajaDebe__fecha__day=obj[2]).exclude(idCajaDebe__aux1='todo').values('pk','comision')
				DebeSoles= debe.filter(idCajaDebe__moneda='soles').aggregate(Sum('comision'))
				DebeDolares= debe.filter(idCajaDebe__moneda='dolares').aggregate(Sum('comision'))
				
				dato={}
				dato['f']=str(obj[0])+"-"+str(obj[1])+"-"+str(obj[2])
				if DebeSoles['comision__sum'] == None:
					dato['is']=0
				else:
					dato['is']=float(DebeSoles['comision__sum'])
				if DebeDolares['comision__sum']== None:
					dato['id']=0
				else:
					dato['id']=float(DebeDolares['comision__sum'])
				lista.append(dato)
		elif fre =="a":
			la=lista_anios(F1,F2)
			for obj in la:
				debe= SolicitudTransferencia.objects.filter(idCajaDebe__id_oficina=ofi,idCajaDebe__fecha__year=obj).exclude(idCajaDebe__aux1='todo').values('pk','comision')
				DebeSoles= debe.filter(idCajaDebe__moneda='soles').aggregate(Sum('comision'))
				DebeDolares= debe.filter(idCajaDebe__moneda='dolares').aggregate(Sum('comision'))
				dato={}
				dato['f']=obj
				if DebeSoles['comision__sum'] == None:
					dato['is']=0
				else:
					dato['is']=float(DebeSoles['comision__sum'])
				if DebeDolares['comision__sum']== None:
					dato['id']=0
				else:
					dato['id']=float(DebeDolares['comision__sum'])
				lista.append(dato)
		elif fre =="m":
			lm=lista_meses(F1,F2)
			for obj in lm:
				debe= SolicitudTransferencia.objects.filter(idCajaDebe__id_oficina=ofi,idCajaDebe__fecha__year=obj[0],idCajaDebe__fecha__month=obj[1]).exclude(idCajaDebe__aux1='todo').values('pk','comision')
				DebeSoles= debe.filter(idCajaDebe__moneda='soles').aggregate(Sum('comision'))
				DebeDolares= debe.filter(idCajaDebe__moneda='dolares').aggregate(Sum('comision'))
				dato={}
				dato['f']=str(obj[0])+"-"+str(obj[1])
				if DebeSoles['comision__sum'] == None:
					dato['is']=0
				else:
					dato['is']=float(DebeSoles['comision__sum'])
				if DebeDolares['comision__sum']== None:
					dato['id']=0
				else:
					dato['id']=float(DebeDolares['comision__sum'])
				lista.append(dato)
		data= json.dumps(lista)
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

#------------------ comunicacion con martpsystem-------------------------
@login_required
def listado_envios_martp_view(request):
	try:
		usr= request.user.username
		cargo =''
		C= Cajas.objects.get(id_usuario__usuario=usr)
		if C.id_usuario.pk == C.id_oficina.id_usuario.pk:
			cargo='administrador'
	except:
		cargo =''
	return render(request,"listadoEnviosMartp.html",{"cargo":cargo} )

@login_required
def lista_envios_martp_ajax_view(request):
	if request.is_ajax:
		pag=request.GET.get('pg','')
		pg= 1
		if pag !='':
			pg= int(pag)
		desde= (pg-1)*20
		hasta= pg*20
		usr = request.user.username
		try:
			ts= TSincronizacion.objects.get(id_usuario__usuario=usr)
			consulta=list(Envio_dinero_martp.objects.filter(id_sincronizacion=ts.pk)[desde:hasta].values('pk','id_sincronizacion','fecha','monto','moneda','observaciones','estado'))
			lista=[]
			for obj in consulta:
				dato={}
				dato['pk']=obj['pk']
				dato['ui']=ts.usuario_martp 
				dato['f']=str(obj['fecha'].strftime("%d-%m-%Y %I:%M %p"))
				dato['m']=str(obj['monto'])
				dato['md']=obj['moneda']
				dato['obs']=obj['observaciones']
				dato['est']=obj['estado']
				lista.append(dato)
			data= json.dumps(lista)
		except:
			data='fail'+ str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)
 

@login_required
def lista_recepcion_envios_martp_ajax_view(request):
	if request.is_ajax:
		pag=request.GET.get('pg','')
		pg= 1
		if pag !='':
			pg= int(pag)
		desde= (pg-1)*20
		hasta= pg*20
		usr = request.user.username
		try:
			ts= TSincronizacion.objects.get(id_usuario__usuario=usr)
			consulta=list(Recepcion_dinero_martp.objects.filter(id_sincronizacion=ts.pk).exclude(estado='recibido')[desde:hasta].values('pk','id_sincronizacion','fecha','monto','moneda','observaciones','estado'))
			lista=[]
			for obj in consulta:
				dato={}
				dato['pk']=obj['pk']
				dato['ui']=ts.usuario_martp
				dato['f']=str(obj['fecha'].strftime("%d-%m-%Y %I:%M %p"))
				dato['m']=str(obj['monto'])
				dato['md']=obj['moneda']
				dato['obs']=obj['observaciones']
				dato['est']=obj['estado']
				lista.append(dato)
			data= json.dumps(lista)
		except:
			data='fail'+ str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
def recepcion_envios_conforme_martp_view(request):
	try:
		usr= request.user.username
		cargo =''
		C= Cajas.objects.get(id_usuario__usuario=usr)
		if C.id_usuario.pk == C.id_oficina.id_usuario.pk:
			cargo='administrador'
	except:
		cargo =''
	return render(request,"listadoRecepcionesConformeMartp.html",{"cargo":cargo} )

@login_required
def lista_recepcionados_conforme_envios_martp_ajax_view(request):
	if request.is_ajax:
		pag=request.GET.get('pg','')
		pg= 1
		if pag !='':
			pg= int(pag)
		desde= (pg-1)*20
		hasta= pg*20
		usr = request.user.username
		try:
			ts= TSincronizacion.objects.get(id_usuario__usuario=usr)
			consulta=list(Recepcion_dinero_martp.objects.filter(id_sincronizacion=ts.pk,estado='recibido')[desde:hasta].values('pk','id_sincronizacion','fecha','monto','moneda','observaciones','estado'))
			lista=[]
			for obj in consulta:
				dato={}
				dato['pk']=obj['pk']
				dato['ui']=ts.usuario_martp
				dato['f']=str(obj['fecha'].strftime("%d-%m-%Y %I:%M %p"))
				dato['m']=str(obj['monto'])
				dato['md']=obj['moneda']
				dato['obs']=obj['observaciones']
				dato['est']=obj['estado']
				lista.append(dato)
			data= json.dumps(lista)
		except:
			data='fail'+ str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

 
#*************************************************************************************************************
#view inicio
@login_required
def Inicio_view(request):
	if request.user.has_perm("Main.add_oficina"):
		usr = request.user.username
		if Gerente_conf.objects.filter(id_gerente__usuario=usr,subGerente="si").exists():
			return HttpResponseRedirect('/Movimientos_admin_tem/')
		else:
			return HttpResponseRedirect('/Personales/')
	else:
		try:
			usr= request.user.username
			cargo =''
			C= Cajas.objects.get(id_usuario__usuario=usr)
			if C.id_usuario.pk == C.id_oficina.id_usuario.pk:
				cargo='administrador'
		except:
			cargo =''
		return render(request,'inicio.html',{"cargo":cargo} )

@login_required
def Detalle_envio_oficina_ajax_view(request):
	if request.is_ajax:
		usr = request.user.username
		pk = request.GET.get('pk')
		data=''
		lista=[]
		try:
			if DetalleEnvioOficina.objects.filter(id_EnvioOficina=pk).exists():
				DetEnvio= DetalleEnvioOficina.objects.get(id_EnvioOficina=pk)
				dato={}
				dato['pk'] = DetEnvio.pk
				dato['desde_debe'] = DetEnvio.DesdeIdDebe
				dato['hasta_debe'] = DetEnvio.HastaIdDebe
				dato['desde_haber'] = DetEnvio.DesdeIdHaber
				dato['hasta_haber'] = DetEnvio.HastaIdHaber
				dato['mcap'] = float(DetEnvio.monto_capital)
				dato['mcomi'] = float(DetEnvio.monto_comision)
				dato['mtp'] = DetEnvio.aux1
				lista.append(dato)
			data= json.dumps(lista)
		except:
			data='error en consulta'+ str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)
#------------------------------------------------
@login_required
def ListadoEnviosSaldo_view(request):
	return render(request,"ListadoSaldoEnviado.html",{} )

@login_required
def listaSaldoEnviado_total_ajax_view(request):
	if request.is_ajax:
		filtro=request.GET.get('f','')
		F1=request.GET.get('F1','')
		F2=request.GET.get('F2','')
		pag=request.GET.get('pg','')
		usr = request.user.username
		data=''
		lista=[]
		try:
			C= Cajas.objects.get(id_usuario__usuario=usr)
			pg= 1
			if pag !='':
				pg= int(pag)
			intrv=0
			if pg>1:
				intrv= ((pg-1)*5)+1
			fhoramin=None
			fhoramax=None
			if filtro == 'f':
				fecha1= datetime.datetime.strptime(F1, '%Y-%m-%d')
				fecha2= datetime.datetime.strptime(F2, '%Y-%m-%d')
				fhoramin= datetime.datetime.combine(fecha1,datetime.time.min)
				fhoramax= datetime.datetime.combine(fecha2,datetime.time.max)
			else:
				hoy= datetime.datetime.today()
				aux=hoy-timedelta(days=intrv)
				aux1=aux-timedelta(days=5)
				fhoramax= datetime.datetime.combine(aux,datetime.time.max)
				fhoramin= datetime.datetime.combine(aux1,datetime.time.min)
			
			consulta2 = list(EnvioCajaCaja.objects.filter(idCajaHaber__id_caja= C.pk,idCajaHaber__fecha__range=(fhoramin,fhoramax)).values('pk','fecha','monto','moneda','observaciones','conceptoDetalle','estado','id_CajaDestino'))
			for obj in consulta2:
				cd= Cajas.objects.get(pk=obj['id_CajaDestino'])
				dato={}
				dato['pk']=obj['pk']
				dato['fecha']=str(obj['fecha'].strftime("%d-%m-%Y %H:%M"))
				dato['concepto']=obj['conceptoDetalle']
				dato['monto']=normalizar(obj['monto'])
				dato['moneda']= obj['moneda']
				dato['des']='<span style="color:blue;">'+cd.id_oficina.nombre_oficina+' </span><span style="color:green;"> '+cd.nombre+' </span> '+cd.id_usuario.nombre+' '+cd.id_usuario.Apellido_paterno
				dato['comi']=''
				if ComisionEnvio.objects.filter(tabla='EnvioCajaCaja',id_envio=obj['pk']).exists():
					com= ComisionEnvio.objects.get(tabla='EnvioCajaCaja',id_envio=obj['pk'])
					dato['comi']=float(com.idCajaHaber.cantidadDinero)
				dato['obs']=obj['observaciones']
				dato['est']=obj['estado']
				dato['tabla']= 'enviocaja'
				act="no"
				if obj['estado'] == 'enviado':
					act='si'
				dato['act'] = act
				lista.append(dato)
			ef={'d':str(fhoramin.strftime("%Y-%m-%d")),'h':str(fhoramax.strftime("%Y-%m-%d"))}
			lista.append(ef)
			data= json.dumps(lista)
			#else:
			#	data= json.dumps(lista)
		except:
			data='error en consulta '+ str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
def ListadoHabilitaciones_view(request):#este formulario sigue la misma logica
	return render(request,"listaHabilitaciones.html",{} )

@login_required
@permission_required('Main.add_oficina')
def ListadoHabilitaciones_act_subG_view(request):
	return render(request,"ListaHabilitacionesAct.html" )

@login_required
def listaSaldoEnviado_activos_total_ajax_view(request):
	if request.is_ajax:
		data=''
		lista=[]
		try:
			
			consulta2 = list(EnvioCajaCaja.objects.filter(estado= 'enviado').values('pk','fecha','monto','moneda','observaciones','conceptoDetalle','estado','idCajaHaber','id_CajaDestino'))
			for obj in consulta2:
				auxOri= TCajaHaber.objects.get(pk=obj['idCajaHaber'])
				auxDes= Cajas.objects.get(pk=obj['id_CajaDestino'])
				dato={}
				dato['pk']=obj['pk']
				dato['fecha']=str(obj['fecha'].strftime("%d-%m-%Y %H:%M"))
				dato['concepto']=obj['conceptoDetalle']
				dato['monto']=normalizar(obj['monto'])
				dato['moneda']= obj['moneda']
				dato['ori']='<span style="color:blue;">'+auxOri.id_oficina.nombre_oficina+'</span> '+auxOri.id_caja.nombre
				dato['des']='<span style="color:blue;">'+auxDes.id_oficina.nombre_oficina+'</span> '+auxDes.nombre
				dato['obs']=obj['observaciones']
				dato['est']=obj['estado']
				dato['tabla']= 'enviocaja'
				act="no"
				if obj['estado'] == 'enviado':
					act='si'
				dato['act'] = act
				lista.append(dato)
			data= json.dumps(lista)
			#else:
			#	data= json.dumps(lista)
		except:
			data='error en consulta'
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)


@login_required
def Detalle_envio_enviado_oficina_ajax_view(request):
	if request.is_ajax:
		usr = request.user.username
		pk = request.GET.get('pk')
		data=''
		lista=[]
		try:
			dato={}
			if DetalleEnvioOficina.objects.filter(id_EnvioOficina=pk).exists():
				DetEnvio= DetalleEnvioOficina.objects.get(id_EnvioOficina=pk)
				dato['pk'] = DetEnvio.pk
				dato['desde_debe'] = DetEnvio.DesdeIdDebe
				dato['hasta_debe'] = DetEnvio.HastaIdDebe
				dato['desde_haber'] = DetEnvio.DesdeIdHaber
				dato['hasta_haber'] = DetEnvio.HastaIdHaber
				dato['mcap'] = normalizar(DetEnvio.monto_capital)
				dato['mcomi'] = normalizar(DetEnvio.monto_comision)
				dato['mtp'] = DetEnvio.aux1
				egreso_envio=0
				if DetalleEgresoEnvioOficina.objects.filter(id_EnvioOficina=pk).exists():
					DetEgresoEnvio= DetalleEgresoEnvioOficina.objects.get(id_EnvioOficina=pk)
					egreso_envio = normalizar(DetEgresoEnvio.monto_Egreso)
				dato['egreso_envio'] = egreso_envio
				egreso_ex =0
				ingreso_ex=0
				if DetalleIngresoEgresoEnvioOficina.objects.filter(id_EnvioOficina=pk).exists():
					DetInEgEnvio = DetalleIngresoEgresoEnvioOficina.objects.get(id_EnvioOficina=pk)
					if DetInEgEnvio.monto_Egreso != None and DetInEgEnvio.monto_Egreso != '':
						egreso_ex = normalizar(DetInEgEnvio.monto_Egreso)
					if DetInEgEnvio.monto_Ingreso != None and DetInEgEnvio.monto_Ingreso != '':
						ingreso_ex = normalizar(DetInEgEnvio.monto_Ingreso)
				dato['egreso_ex'] = egreso_ex
				dato['ingreso_ex'] = ingreso_ex
				lista.append(dato)
			data= json.dumps(lista)
		except:
			data='error en consulta'+ str(sys.exc_info()[0])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
def listaTrans_enviados_division_ajax_view(request):#creados
	if request.is_ajax:
		usr= request.user.username
		id1= request.GET.get('id1')
		id2= request.GET.get('id2')
		try:
			C = Cajas.objects.get(id_usuario__usuario=usr)
			consulta1= list(SolicitudTransferencia.objects.filter(id__range=(id1,id2),idCajaDebe__id_personal=C.id_usuario.pk,idCajaDebe__id_oficina=C.id_oficina.pk,idCajaDebe__id_caja=C.pk,idCajaDebe__aux2='dividido').values('pk','idCajaDebe','id_cliente','id_oficina','comision','nombre_beneficiado','Apellido_paterno_beneficiado','Apellido_materno_beneficiado','dni_beneficiado','observaciones','monto_conceptos'))
			lista=[]
			for obj in consulta1:
				idCajaD= str(obj['idCajaDebe'])
				sq1=TCajaDebe.objects.filter(pk=idCajaD).values('pk','fecha','nroRecibo','estadoTransaccion','id_personal','cantidadDinero','moneda')
				if sq1.count()>0:
					consulta2= list(sq1)
					idCli= str(obj['id_cliente'])
					consulta3=list(Cliente.objects.filter(pk=idCli).values('nombre','Apellido_paterno','Apellido_materno','dni'))
					consulta4= list(Oficina.objects.filter(pk=str(obj['id_oficina'])).values('nombre_oficina'))
					cantidaEnvio= ConvertirDecimal(str(consulta2[0]['cantidadDinero']))-ConvertirDecimal(str(obj['comision'])) -ConvertirDecimal(obj['monto_conceptos'])
					sq= PagoTransferencia.objects.filter(id_solicitud_transferencia=str(obj['pk']),idCajaHaber__id_personal=C.id_usuario.pk)
					dato={}	
					dato['fecha']=str(consulta2[0]['fecha'].strftime("%d-%m-%Y %H:%M"))
					dato['nroRecibo']=consulta2[0]['nroRecibo']
					dato['estado']= consulta2[0]['estadoTransaccion']
					dato['id_personal']=str(consulta2[0]['id_personal'])
					dato['monto']=cantidaEnvio
					dato['moneda']= str(consulta2[0]['moneda'])
					dato['id_trans']=str(obj['pk'])
					dato['oficina_des']= consulta4[0]['nombre_oficina']
					dato['comicion']= obj['comision']
					dato['nombre_bnf']=obj['nombre_beneficiado']
					dato['dni_bnf']=obj['dni_beneficiado']
					dato['paterno_bnf']=obj['Apellido_paterno_beneficiado']
					dato['materno_bnf']= obj['Apellido_materno_beneficiado']
					dato['obs']=obj['observaciones']
					dato['nombre_rmt']=consulta3[0]['nombre']
					dato['paterno_rmt']=consulta3[0]['Apellido_paterno']
					dato['materno_rmt']=consulta3[0]['Apellido_materno']
					dato['dni_rmt']=consulta3[0]['dni']
					dato['monto_conceptos']= obj['monto_conceptos']
					dato['pago_forzado']=''
					if sq.count()>0:
						dato['pago_forzado']= 'si'
					lista.append(dato)
			data= json.dumps(lista)
		except:
			data=str(sys.exc_info()[0])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
def listaTransferenciasPagadas_enviados_division_ajax_view(request):
	if request.is_ajax:
		usr= request.user.username
		idp1= request.GET.get('idp1')
		idp2= request.GET.get('idp2')
		try:
			lista=[]
			C = Cajas.objects.get(id_usuario__usuario=usr)
			consulta1= list(SolicitudTransferencia.objects.filter(id__range=(idp1,idp2),id_oficina=C.id_oficina.pk,idCajaDebe__estadoTransaccion='pagado').values('pk','idCajaDebe','id_cliente','id_oficina','comision','nombre_beneficiado','Apellido_paterno_beneficiado','Apellido_materno_beneficiado','dni_beneficiado','observaciones','monto_conceptos','otros_conceptos'))
			for obj in consulta1:
				dato={}
				idSt= str(obj['pk'])
				idCajaD= str(obj['idCajaDebe'])
				CajaDebe= TCajaDebe.objects.get(pk=idCajaD)
				sq= PagoTransferencia.objects.filter(id_solicitud_transferencia=idSt,idCajaHaber__id_caja=C.pk,idCajaHaber__aux1="descontado")
				if sq.count()>0:
					PagoTr = PagoTransferencia.objects.get(id_solicitud_transferencia=idSt)
					idCli= str(obj['id_cliente'])
					consulta3=list(Cliente.objects.filter(pk=idCli).values('nombre','Apellido_paterno','Apellido_materno','dni'))
					cantidaEnvio= ConvertirDecimal(str(CajaDebe.cantidadDinero))-ConvertirDecimal(str(obj['comision']))-ConvertirDecimal(str(obj['monto_conceptos']))
					dato['fecha']=str(PagoTr.idCajaHaber.fecha.strftime("%d-%m-%Y %H:%M"))
					dato['nroRecibo']=PagoTr.idCajaHaber.nroRecibo
					dato['estado']= PagoTr.idCajaHaber.estadoTransaccion
					dato['pagador']=PagoTr.idCajaHaber.id_personal.nombre+' '+PagoTr.idCajaHaber.id_personal.Apellido_paterno+' '+PagoTr.idCajaHaber.id_personal.Apellido_materno
					dato['monto']=normalizar(cantidaEnvio)
					dato['id_trans']=obj['pk']
					dato['oficina_ori']= CajaDebe.id_oficina.nombre_oficina
					dato['comicion']= obj['comision']
					dato['moneda']= PagoTr.idCajaHaber.moneda
					dato['nombre_bnf']=obj['nombre_beneficiado']
					dato['paterno_bnf']=obj['Apellido_paterno_beneficiado']
					dato['materno_bnf']= obj['Apellido_materno_beneficiado']
					dato['dni_bnf']=obj['dni_beneficiado']
					dato['obs']=obj['observaciones']
					dato['nombre_rmt']=consulta3[0]['nombre']
					dato['paterno_rmt']=consulta3[0]['Apellido_paterno']
					dato['materno_rmt']=consulta3[0]['Apellido_materno']
					dato['dni_rmt']=consulta3[0]['dni']
					dato['monto_conceptos']= obj['monto_conceptos']
					dato['otros_conceptos']= obj['otros_conceptos']
					lista.append(dato)
			data= json.dumps(lista)	
		except:
			data='fail'
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
@permission_required('Main.add_oficina')
def ver_saldo_oficinas_admin_ajax_view(request):
	if request.is_ajax:
		lista=[]
		try:
			ofic=list(Oficina.objects.exclude(nombre_oficina="Gerencia").values('pk','nombre_oficina','id_usuario','categoria_oficina'))
			for obj in ofic:
				dato={}
				saldo = SaldoDisponibleCajas.objects.get(id_caja__id_usuario=obj['id_usuario'])
				dato['pk']=obj['pk']
				dato['of']=obj['nombre_oficina']
				dato['be']=''
				dato['conf']=0
				o= Oficina.objects.get(pk=obj['pk'])
				if TConfiguracionSistema.objects.filter(id_caja__id_usuario= o.id_usuario.pk,conf2='externa').exists():
					tconf=TConfiguracionSistema.objects.get(id_caja__id_usuario= o.id_usuario.pk,conf2='externa')
					dato['be']='si'
					dato['conf']=tconf.pk

				if obj['categoria_oficina']==None:
					dato['categoria']=''
				else:
					dato['categoria']=obj['categoria_oficina']

				dato['saldos']=normalizar(saldo.saldo_soles)
				dato['saldod']=normalizar(saldo.saldo_dolares)

				lista.append(dato)
			data= json.dumps(lista)		
		except:
			data=str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)


@login_required
@permission_required('Main.add_oficina')
def Saldo_oficnas_admin_tem_view(request):
	return render(request,"SaldoOficinas.html" )

@login_required
@permission_required('Main.add_oficina')
def oficnas_externa_admin_tem_view(request):#money
	return render(request,"ListaOficinasMoney.html" )

#************************************* Compra y Venta de Dolar ********************************************
@login_required
def listaComprasDolar_ajax_view(request):#creados#cambiar este filtrado
	if request.is_ajax:
		pag=request.GET.get('pg','')
		pg= 1
		if pag !='':
			pg= int(pag)
		desde= (pg-1)*20
		hasta= pg*20
		usr= request.user.username
		try:
			C = Cajas.objects.get(id_usuario__usuario=usr)
			#consulta1= list(TCajaDebe.objects.filter(id_personal=C.id_usuario.pk,id_oficina=C.id_oficina.pk,id_caja=C.pk,tablaRelacional='CompraDolar',moneda='dolares').order_by('-pk')[desde:hasta].values('pk'))
			consulta1= list(CompraDolarSt.objects.filter(idCajaDebe__id_oficina=C.id_oficina.pk,idCajaDebe__id_caja=C.pk).order_by('-pk')[desde:hasta].values('pk','idCajaDebe','fecha','tipo_persona_cliente','dni_ruc_cliente','nombre_razon_cliente','Apellido_paterno_cliente','Apellido_materno_cliente','observaciones','tipo_cambio_compra','monto_dolar_comprado','monto_soles_pagado'))
			lista=[]
			for obj in consulta1:
				#if CompraDolar.objects.filter(idCajaDebe=obj['pk']).exists():
					#compra = CompraDolar.objects.get(idCajaDebe=obj['pk'])
				debe= TCajaDebe.objects.get(pk=obj['idCajaDebe'])
				dato={}	
				dato['pk'] = obj['pk']
				dato['fecha']=str(obj['fecha'].strftime("%d-%m-%Y %H:%M %p"))
				dato['cliente']=''
				if str(obj['tipo_persona_cliente']) =="Natural":
					dato['cliente'] = obj['nombre_razon_cliente'] +', '+obj['Apellido_paterno_cliente']+' '+obj['Apellido_materno_cliente']
				elif str(obj['tipo_persona_cliente']) =="Juridica":
					dato['cliente'] = obj['nombre_razon_cliente']
				dato['dniruc']=obj['dni_ruc_cliente']
				dato['tipo_cambio']=str(debe.tipo_cambio)
				dato['monto_dolar']=str(obj['monto_dolar_comprado'])
				dato['monto_soles']= normalizar(obj['monto_soles_pagado'])
				dato['obs']=obj['observaciones']
				dato['estado']=debe.estadoTransaccion
				lista.append(dato)
			data= json.dumps(lista)
		except:
			data=str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
def listaComprasDolar_entre_ajax_view(request):#creados
	if request.is_ajax:
		ini=request.GET.get('idIni')
		fin=request.GET.get('idFin')
		usr= request.user.username
		try:
			C = Cajas.objects.get(id_usuario__usuario=usr)
			consulta1= list(DebeDolar.objects.filter(pk__range=(ini,fin),idCajaDebe__id_caja=C.pk).values('pk','fecha','tipo_cambio','monto'))
			lista=[]
			for obj in consulta1:
				dato={}	
				dato['fecha']=str(obj['fecha'].strftime("%d-%m-%Y %H:%M %p"))
				dato['tipo_cambio']=str(obj['tipo_cambio'])
				dato['monto_dolar']=str(obj['monto'])
				lista.append(dato)
			data= json.dumps(lista)
		except:
			data=str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
def listaVentasDolar_ajax_view(request):#creados #esta mal
	if request.is_ajax:
		pag=request.GET.get('pg','')
		pg= 1
		if pag !='':
			pg= int(pag)
		desde= (pg-1)*20
		hasta= pg*20
		usr= request.user.username
		try:
			C = Cajas.objects.get(id_usuario__usuario=usr)
			#consulta1= list(TCajaDebe.objects.filter(id_personal=C.id_usuario.pk,id_oficina=C.id_oficina.pk,id_caja=C.pk,tablaRelacional='VentaDolar',moneda='soles').order_by('-pk')[desde:hasta].values('pk'))
			consulta1= list(VentaDolarSt.objects.filter(idCajaDebe__id_oficina=C.id_oficina.pk,idCajaDebe__id_caja=C.pk).order_by('-pk')[desde:hasta].values('pk','idCajaHaber','fecha','tipo_persona_cliente','dni_ruc_cliente','nombre_razon_cliente','Apellido_paterno_cliente','Apellido_materno_cliente','observaciones','tipo_cambio_venta','monto_dolar_vendido','monto_soles_cobrado'))
			lista=[]
			for obj in consulta1:
				#if VentaDolar.objects.filter(idCajaDebe=obj['pk']).exists():
					#venta = VentaDolar.objects.get(idCajaDebe=obj['pk'])
				haber= TCajaHaber.objects.get(pk=obj['idCajaHaber'])
				dato={}	
				dato['pk']=obj['pk']
				dato['fecha']=str(obj['fecha'].strftime("%d-%m-%Y %H:%M %p"))
				dato['cliente']=''
				if str(obj['tipo_persona_cliente']) =="Natural":
					dato['cliente'] = obj['nombre_razon_cliente'] +', '+obj['Apellido_paterno_cliente']+' '+obj['Apellido_materno_cliente']
				elif str(obj['tipo_persona_cliente']) =="Juridica":
					dato['cliente'] = obj['nombre_razon_cliente']
				dato['dniruc']=obj['dni_ruc_cliente']
				dato['tipo_cambio']=str(haber.tipo_cambio)
				dato['monto_dolar']=str(obj['monto_dolar_vendido'])
				dato['monto_soles']= normalizar(obj['monto_soles_cobrado'])
				dato['obs']=obj['observaciones']
				dato['estado']=haber.estadoTransaccion
				lista.append(dato)
			data= json.dumps(lista)
		except:
			data=str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
def tipo_cambio_ajax_view(request):#creados
	if request.is_ajax:
		try:
			import urllib2
			fecha= datetime.date.today()
			aux= "0"+str(fecha.month)
			mes= aux[-2:]
			url_WebService = "http://code.staffsystems.us/webservices/tipo-de-cambio/serverside.php?work=get_sunat&mes="+mes+"&anho="+str(fecha.year)
			rq= urllib2.Request(url_WebService)
			hnd = urllib2.urlopen(rq)
			contenido = hnd.read()
			data =contenido
		except:
			data=str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="text"
	return HttpResponse(data,mimetype)

@login_required
def oficinas_pagador_ajax_view(request):
	if request.is_ajax:
		usr= request.user.username
		data=''
		lista=[]
		try:
			C= Cajas.objects.get(id_usuario__usuario=usr)
			consulta=list(ConfiguracionExtra_oficina.objects.filter(aux2="pagador").exclude(id_oficina=C.id_oficina.pk).exclude(id_oficina__nombre_oficina="Gerencia").values('pk','id_oficina'))
			for obj in consulta:
				o= Oficina.objects.get(pk=obj['id_oficina']) 
				aux={'pk':o.pk,'nombre_oficina':o.nombre_oficina}
				lista.append(aux)
			data= json.dumps(lista)
		except:
			data='error en consulta'
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)


@login_required
def archivos_subidos_ajax_view(request):
	if request.is_ajax:
		usr = request.user.username
		data=''
		lista=[]
		try:
			u= Personal.objects.get(usuario=usr)
			consulta = list(Foto.objects.filter(id_usuario=u.pk).values('pk','titulo','descripcion','fecha','foto','estado'))
			for obj in consulta:
				dato={}
				dato['pk']=obj['pk']
				dato['tit']=obj['titulo']
				dato['des']=obj['descripcion']
				dato['est']=obj['estado']
				dato['f']=str(obj['fecha'].strftime("%d-%m-%Y %H:%M"))
				dato['fo']=obj['foto']
				lista.append(dato)
			data= json.dumps(lista)
		except:
			data='error en consulta'
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)


@login_required
def evolucion_caja_view(request):
	if request.is_ajax: 
		fechaActual = datetime.datetime.now().strftime("%Y-%m-%d")
		try:
			data=''
			usr = request.user.username 
			promedio_compra=0
			
			saldoSoles=0
			saldoDolares=0
			saldoMaterial=0
			solesMaterial=0

			solesHabilitacionesMaterial=0
			saldoCtaCteMaterial=0

			totalSTXPSoles=0
			totalSTXPDolares=0

			totalSTCreadasSoles=0
			totalSTCreadasDolares=0

			totalSTComisionSoles=0
			totalSTComisionDolares=0

			totalEDMCSoles=0
			totalIDMVSoles=0

			totalEDMCDolares=0
			totalIDMVDolares=0

			totalMaterialComprado=0
			totalMaterialVendido=0

			saldoCtaCteDebemosDolares=0
			saldoCtaCteDebemosSoles=0
			saldoCtaCteNosDebenDolares=0
			saldoCtaCteNosDebenSoles=0

			habilitacionesDolares=0
			habilitacionesSoles=0
			habilitacionesMaterial=0

			habilitacionesDolaresO=0
			habilitacionesSolesO=0
			habilitacionesMaterialO=0
 

			CauxCtaCteDolares=0
			CauxCtaCteSoles=0
			CauxCtaCteDolaresN=0
			CauxCtaCteSolesN=0

			CauxCtaCteMaterial=0
			CauxCtaCteMaterialN=0

			saldoSolesReal=0
			saldoDolaresReal=0
			saldoMaterialReal=0

			totalHaberSTSoles=0
			totalHaberSTDolares=0

			totalHaberSTTotalSoles=0
			totalHaberSTTotalDolares=0

			totalHaberOtrosSoles=0
			totalHaberOtrosDolares=0

			totalHaberOtrosSolesTotal=0
			totalHaberOtrosDolaresTotal=0

			totalSTComisionSolesTotal=0
			totalSTComisionDolaresTotal=0

			capital=0

			promedio_compraOro=TCompraMaterial.objects.filter(Precio_gramo__gt=0,fecha=fechaActual).aggregate(Avg('Precio_gramo'))

			if promedio_compraOro['Precio_gramo__avg']==None:
				promedio_compra=0
			else:
				promedio_compra=promedio_compraOro['Precio_gramo__avg']
			

			#egresos por transferencia realizados
			haberST= TCajaHaber.objects.filter(tablaRelacional__in=['TtransferenciaExtorno','PagoTransferencia'],fecha=fechaActual).values('pk','cantidadDinero')
			HaberSolesST= haberST.filter(moneda='soles').aggregate(Sum('cantidadDinero'))
			HaberDolaresST= haberST.filter(moneda='dolares').aggregate(Sum('cantidadDinero'))
			
			#egresos otros
			haberOtros= TCajaHaber.objects.filter(tablaRelacional__in=['Egreso','ComisionEnvio'],fecha=fechaActual).values('pk','cantidadDinero')
			HaberSolesOtros= haberOtros.filter(moneda='soles').aggregate(Sum('cantidadDinero'))
			HaberDolaresOtros= haberOtros.filter(moneda='dolares').aggregate(Sum('cantidadDinero'))


			haberSTTotal= TCajaHaber.objects.filter(tablaRelacional__in=['TtransferenciaExtorno','PagoTransferencia']).values('pk','cantidadDinero')
			HaberSolesSTTotal= haberSTTotal.filter(moneda='soles').aggregate(Sum('cantidadDinero'))
			HaberDolaresSTTotal= haberSTTotal.filter(moneda='dolares').aggregate(Sum('cantidadDinero'))
			
			haberOtrosTotal= TCajaHaber.objects.filter(tablaRelacional__in=['Egreso','ComisionEnvio']).values('pk','cantidadDinero')
			HaberSolesOtrosTotal= haberOtrosTotal.filter(moneda='soles').aggregate(Sum('cantidadDinero'))
			HaberDolaresOtrosTotal= haberOtrosTotal.filter(moneda='dolares').aggregate(Sum('cantidadDinero'))			



			if HaberSolesSTTotal['cantidadDinero__sum'] == None:
				totalHaberSTTotalSoles=0
			else:
				totalHaberSTTotalSoles=ConvertirDecimal(HaberSolesSTTotal['cantidadDinero__sum'])

			if HaberDolaresSTTotal['cantidadDinero__sum']==None:
				totalHaberSTTotalDolares=0
			else:
				totalHaberSTTotalDolares=ConvertirDecimal(HaberDolaresSTTotal['cantidadDinero__sum'])

			if HaberSolesOtrosTotal['cantidadDinero__sum'] == None:
				totalHaberOtrosSolesTotal=0
			else:
				totalHaberOtrosSolesTotal=ConvertirDecimal(HaberSolesOtrosTotal['cantidadDinero__sum'])

			if HaberDolaresOtrosTotal['cantidadDinero__sum']==None:
				totalHaberOtrosDolaresTotal=0
			else:
				totalHaberOtrosDolaresTotal=ConvertirDecimal(HaberDolaresOtrosTotal['cantidadDinero__sum'])



			if HaberSolesST['cantidadDinero__sum'] == None:
				totalHaberSTSoles=0
			else:
				totalHaberSTSoles=ConvertirDecimal(HaberSolesST['cantidadDinero__sum'])

			if HaberDolaresST['cantidadDinero__sum']==None:
				totalHaberSTDolares=0
			else:
				totalHaberSTDolares=ConvertirDecimal(HaberDolaresST['cantidadDinero__sum'])

			if HaberSolesOtros['cantidadDinero__sum'] == None:
				totalHaberOtrosSoles=0
			else:
				totalHaberOtrosSoles=ConvertirDecimal(HaberSolesOtros['cantidadDinero__sum'])

			if HaberDolaresOtros['cantidadDinero__sum']==None:
				totalHaberOtrosDolares=0
			else:
				totalHaberOtrosDolares=ConvertirDecimal(HaberDolaresOtros['cantidadDinero__sum'])

			#transferencias por pagar
			ST1=SolicitudTransferencia.objects.filter(idCajaDebe__estadoTransaccion='activo',idCajaDebe__moneda='soles',idCajaDebe__fecha=fechaActual).aggregate(Sum('idCajaDebe__cantidadDinero'))
			ST2=SolicitudTransferencia.objects.filter(idCajaDebe__estadoTransaccion='activo',idCajaDebe__moneda='dolares',idCajaDebe__fecha=fechaActual).aggregate(Sum('idCajaDebe__cantidadDinero'))
			
			STC1=SolicitudTransferencia.objects.filter(idCajaDebe__moneda='soles',idCajaDebe__fecha=fechaActual).aggregate(Sum('idCajaDebe__cantidadDinero'))
			STC2=SolicitudTransferencia.objects.filter(idCajaDebe__moneda='dolares',idCajaDebe__fecha=fechaActual).aggregate(Sum('idCajaDebe__cantidadDinero'))


			STComisionSoles=SolicitudTransferencia.objects.filter(idCajaDebe__moneda='soles',idCajaDebe__fecha=fechaActual).aggregate(Sum('comision'))
			STComisionDolares=SolicitudTransferencia.objects.filter(idCajaDebe__moneda='dolares',idCajaDebe__fecha=fechaActual).aggregate(Sum('comision'))
			
			STComisionSolesTotal=SolicitudTransferencia.objects.filter(idCajaDebe__moneda='soles').aggregate(Sum('comision'))
			STComisionDolaresTotal=SolicitudTransferencia.objects.filter(idCajaDebe__moneda='dolares').aggregate(Sum('comision'))
			

			if ST1['idCajaDebe__cantidadDinero__sum']==None:
				totalSTXPSoles=0
			else:
				totalSTXPSoles=ST1['idCajaDebe__cantidadDinero__sum']

			
			if STC1['idCajaDebe__cantidadDinero__sum']==None:
				totalSTCreadasSoles=0
			else:
				totalSTCreadasSoles=STC1['idCajaDebe__cantidadDinero__sum']
			
			if STC2['idCajaDebe__cantidadDinero__sum']==None:
				totalSTCreadasDolares=0
			else:
				totalSTCreadasDolares=STC2['idCajaDebe__cantidadDinero__sum']

			if ST2['idCajaDebe__cantidadDinero__sum']==None:
				totalSTXPDolares=0
			else:
				totalSTXPDolares=ST2['idCajaDebe__cantidadDinero__sum']


			if STComisionSoles['comision__sum']==None:
				totalSTComisionSoles=0
			else:
				totalSTComisionSoles=STComisionSoles['comision__sum']

			if STComisionDolares['comision__sum']==None:
				totalSTComisionDolares=0
			else:
				totalSTComisionDolares=STComisionDolares['comision__sum']	

			if STComisionSolesTotal['comision__sum']==None:
				totalSTComisionSolesTotal=0
			else:
				totalSTComisionSolesTotal=STComisionSolesTotal['comision__sum']

			if STComisionDolaresTotal['comision__sum']==None:
				totalSTComisionDolaresTotal=0
			else:
				totalSTComisionDolaresTotal=STComisionDolaresTotal['comision__sum']		


			#suma de material comprado hasta la fecha
			materialComprado=TCompraMaterial.objects.filter(fecha=fechaActual).aggregate(Sum('Peso_gramos'))

			#suma de material vendido hasta la fecha
			materialVendido=TVentaMaterial.objects.filter(fecha=fechaActual).aggregate(Sum('Peso_gramos'))


			if materialComprado['Peso_gramos__sum']==None:
				totalMaterialComprado=0
			else:
				totalMaterialComprado=materialComprado['Peso_gramos__sum']

			if materialVendido['Peso_gramos__sum']==None:
				totalMaterialVendido=0
			else:
				totalMaterialVendido=materialVendido['Peso_gramos__sum']


			dineroEgresadoMaterialComprado=list(TCompraMaterial.objects.filter(fecha=fechaActual).values('idCajaHaber'))	
			dineroIngresadoMaterialVendido=list(TVentaMaterial.objects.filter(fecha=fechaActual).all().values('idCajaDebe'))	

			for objEgreso in dineroEgresadoMaterialComprado:
				OCajaHaber=TCajaHaber.objects.get(pk=objEgreso['idCajaHaber'])
				if OCajaHaber.moneda=='soles':
					totalEDMCSoles=totalEDMCSoles+ConvertirDecimal(OCajaHaber.cantidadDinero)
				else:
					totalEDMCDolares=totalEDMCDolares+ConvertirDecimal(OCajaHaber.cantidadDinero)



			for objIngreso in dineroIngresadoMaterialVendido:
				OCajaDebe=TCajaDebe.objects.get(pk=objIngreso['idCajaDebe'])
				if OCajaDebe.moneda=='soles':
					totalIDMVSoles=totalIDMVSoles+ConvertirDecimal(OCajaDebe.cantidadDinero)
				else:
					totalIDMVDolares=totalIDMVDolares+ConvertirDecimal(OCajaDebe.cantidadDinero)




			# suma de todas las habilitaciones pendientes de recepcion

			habilitacionesDolaresOficina=TCajaHaber.objects.filter(fecha=fechaActual,moneda='dolares',estadoTransaccion='enviado',tablaRelacional__in=['EnvioOficinaOficina','EnvioCajaCaja','DepositoCaja']).aggregate(Sum('cantidadDinero'))
			habilitacionesSolesOficina=TCajaHaber.objects.filter(fecha=fechaActual,moneda='soles',estadoTransaccion='enviado',tablaRelacional__in=['EnvioOficinaOficina','EnvioCajaCaja','DepositoCaja']).aggregate(Sum('cantidadDinero'))
			habilitacionesMaterialOficina=TCajaMaterialHaber.objects.filter(fecha=fechaActual,estadoTransaccion='enviado',tablaRelacional__in=['EnvioMaterialOficinaOficina','EnvioMaterialCajaCaja','DepositoCajaMaterial']).aggregate(Sum('pesoGramos'))		


			if habilitacionesDolaresOficina['cantidadDinero__sum']==None:
				habilitacionesDolaresO=0
			else:
				habilitacionesDolaresO=habilitacionesDolaresOficina['cantidadDinero__sum']

			if habilitacionesSolesOficina['cantidadDinero__sum']==None:
				habilitacionesSolesO=0
			else:
				habilitacionesSolesO=habilitacionesSolesOficina['cantidadDinero__sum']

			if habilitacionesMaterialOficina['pesoGramos__sum']==None:
				habilitacionesMaterialO=0
			else:
				habilitacionesMaterialO=habilitacionesMaterialOficina['pesoGramos__sum']


			solesHabilitacionesMaterial=promedio_compra*habilitacionesMaterialO
 
			#suma de montos positivos de las cuentas corrientes 


			consulta=list(CtaCte.objects.exclude(Q(pk=1)|Q(pk=13)).values('idCajaDebe','saldo'))
			for obj in consulta:
				
				OCajaDebe=TCajaDebe.objects.get(pk=obj['idCajaDebe'])

				if OCajaDebe.moneda=='soles':
					if ConvertirDecimal(obj['saldo'])>0:
						saldoCtaCteDebemosSoles=saldoCtaCteDebemosSoles+ConvertirDecimal(obj['saldo'])
					else:
						saldoCtaCteNosDebenSoles=saldoCtaCteNosDebenSoles+ConvertirDecimal(obj['saldo'])

				else:
					if ConvertirDecimal(obj['saldo'])>0:
						saldoCtaCteDebemosDolares=saldoCtaCteDebemosDolares+ConvertirDecimal(obj['saldo'])
					else:
						saldoCtaCteNosDebenDolares=saldoCtaCteNosDebenDolares+ConvertirDecimal(obj['saldo'])
		 

			#suma de gramos positivos de las cuentas material
			CtaCteMaterialP=CtaCteMaterial.objects.filter(idCajaDebeMaterial__fecha=fechaActual,saldo__gt=0).aggregate(Sum('saldo')) 

			#suma de gramos negativos de las cuentas material
			CtaCteMaterialN=CtaCteMaterial.objects.filter(idCajaDebeMaterial__fecha=fechaActual,saldo__lt=0).aggregate(Sum('saldo')) 


			if CtaCteMaterialP['saldo__sum']==None:
				CauxCtaCteMaterial=0
			else:
				CauxCtaCteMaterial=CtaCteMaterialP['saldo__sum']

			if CtaCteMaterialN['saldo__sum']==None:
				CauxCtaCteMaterialN=0
			else:
				CauxCtaCteMaterialN=CtaCteMaterialN['saldo__sum']



			saldoSolesTotal=SaldoDisponibleCajas.objects.all().aggregate(Sum('saldo_soles'))
			saldoDolaresTotal=SaldoDisponibleCajas.objects.all().aggregate(Sum('saldo_dolares'))
			saldoMaterialTotal=SaldoDisponibleCajaMaterial.objects.all().aggregate(Sum('saldo_Material'))

			if saldoMaterialTotal['saldo_Material__sum']==None:
				saldoMaterial=0
			else:
				saldoMaterial=saldoMaterialTotal['saldo_Material__sum']

			solesMaterial=promedio_compra*saldoMaterial

			if saldoSolesTotal['saldo_soles__sum']==None:
				saldoSoles=0
			else:
				saldoSoles=saldoSolesTotal['saldo_soles__sum']

			if saldoDolaresTotal['saldo_dolares__sum']==None:
				saldoDolares=0
			else:
				saldoDolares=saldoDolaresTotal['saldo_dolares__sum']

			OCtaCteC1=CtaCte.objects.get(pk=1)
			ODebe=TCajaDebe.objects.get(pk=OCtaCteC1.idCajaDebe.pk)
			capital=str(OCtaCteC1.saldo)

			saldoSolesReal=ConvertirDecimal(totalSTComisionSolesTotal)+ConvertirDecimal(saldoCtaCteNosDebenSoles)- ConvertirDecimal(totalHaberOtrosSolesTotal)
			saldoDolaresReal=ConvertirDecimal(totalSTComisionDolaresTotal)+ConvertirDecimal(saldoCtaCteNosDebenDolares)-ConvertirDecimal(totalHaberOtrosDolaresTotal)
			
			if ODebe.moneda=='soles':
				saldoSolesReal=saldoSolesReal+ConvertirDecimal(OCtaCteC1.saldo)
			else:
				saldoDolaresReal=saldoDolaresReal+ConvertirDecimal(OCtaCteC1.saldo)

			saldoMaterialReal=ConvertirDecimal(saldoMaterial) - ConvertirDecimal(CauxCtaCteMaterial) 

		except:
			data='fail'+ str(sys.exc_info()[1])
	else:
		data='fail'+ str(sys.exc_info()[1])
	return render(request,"evolucion.html",{"titulo":"Evolución Empresa","capital":capital,"promedio":promedio_compra,"habilitacionesDolares":habilitacionesDolaresO,"habilitacionesSoles":habilitacionesSolesO,"habilitacionesMaterial":habilitacionesMaterialO,'solesHabilitacionesMaterial':solesHabilitacionesMaterial,"data":data,"debemosSolesCtaCte":saldoCtaCteDebemosSoles,"nosdebenSolesCtaCte":saldoCtaCteNosDebenSoles,"debemosDolaresCtaCte":saldoCtaCteDebemosDolares,"nosdebenDolaresCtaCte":saldoCtaCteNosDebenDolares,"debemosMaterialCtaCte":CauxCtaCteMaterial,"nosdebenMaterialCtaCte":CauxCtaCteMaterialN,"saldoSoles":saldoSoles,"saldoDolares":saldoDolares,"saldoMaterial":saldoMaterial,"solesMaterial":solesMaterial,"STXPSoles":totalSTXPSoles,"STXPDolares":totalSTXPDolares,"STCSoles":totalSTCreadasSoles,"STCDolares":totalSTCreadasDolares,"haberSTSoles":totalHaberSTSoles,"haberSTDolares":totalHaberSTDolares,"haberOtrosSoles":totalHaberOtrosSoles,"haberOtrosDolares":totalHaberOtrosDolares,"ComisionSoles":totalSTComisionSoles,"ComisionDolares":totalSTComisionDolares,"materialComprado":totalMaterialComprado,"materialVendido":totalMaterialVendido,"totalEgresoMS":totalEDMCSoles,"totalEgresoMD":totalEDMCDolares,"totalIngresoMS":totalIDMVSoles,"totalIngresoMD":totalIDMVDolares,"saldoSolesReal":saldoSolesReal,"saldoDolaresReal":saldoDolaresReal,"saldoMaterialReal":saldoMaterialReal} )



 
"""
@login_required
def CuentaCorriente_Material_view(request):
	return render(request,"CtaCorrienteMaterial.html" )

@login_required
def CuentaCorriente_Material_operador_view(request):
	return render(request,"CtaCorrienteMaterialOperador.html" )


@login_required
def ListadoCtaCtes_material_ajax_view(request):
	data=''
	if request.is_ajax:
		pag=request.GET.get('pg','')
		pg= 1
		if pag !='':
			pg= int(pag)
		desde= (pg-1)*20
		hasta= pg*20
		try:
			lista=[] 
			consulta1= list(CtaCteMaterial.objects.all().values('pk','id_cliente','saldo','estado','privadoOficina','fechaApertura','observaciones','tipoCuenta'))
			for obj in consulta1:
				dato={}
				idCli= str(obj['id_cliente'])
				Cli= Cliente.objects.get(pk=idCli)
				dato['ID']= obj['pk']
				dato['dni']= Cli.dni
				dato['nom']= Cli.nombre
				dato['ap']=Cli.Apellido_paterno
				dato['am']=Cli.Apellido_materno
				dato['estado']=obj['estado']
				dato['obs']=obj['observaciones']
				dato['tipo_cuenta']=obj['tipoCuenta']
				dato['fa']=str(obj['fechaApertura'].strftime("%Y-%m-%d %H:%M %p"))
				dato['privado_oficina']= obj['privadoOficina']
				dato['saldo']= str(obj['saldo']) 
				lista.append(dato)
			data= json.dumps(lista)
		except:
			data='fail'+str(sys.exc_info()[0])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
def ListadoCtaCtes_material_Xcliente_ajax_view(request):
	data=''
	if request.is_ajax:
		filtro=request.GET.get('filtro','')
		try:
			lista=[]
			if Cliente.objects.filter(dni=filtro).exists():
				Cli=Cliente.objects.get(dni=filtro)
				consulta1= list(CtaCteMaterial.objects.filter(id_cliente=Cli.pk).values('pk','id_cliente','saldo','estado','privadoOficina','fechaApertura','observaciones','tipoCuenta'))
				for obj in consulta1:
					dato={}
					idCli= str(obj['id_cliente'])
					Cli= Cliente.objects.get(pk=idCli)
					dato['ID']= obj['pk']
					dato['dni']= Cli.dni
					dato['nom']= Cli.nombre
					dato['ap']=Cli.Apellido_paterno
					dato['am']=Cli.Apellido_materno
					dato['estado']=obj['estado']
					dato['obs']=obj['observaciones']
					dato['tipo_cuenta']=obj['tipoCuenta']
					dato['fa']=str(obj['fechaApertura'].strftime("%Y-%m-%d %H:%M %p"))
					dato['privado_oficina']= obj['privadoOficina']
					dato['saldo']= str(obj['saldo']) 
					lista.append(dato)
				data= json.dumps(lista)
		except:
			data='fail'+str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
def ListadoCtaCtes_material_positivas_view(request):
	data=''
	if request.is_ajax:
		usr= request.user.username
		pag=request.GET.get('pg','')
		pg= 1
		if pag !='':
			pg= int(pag)
		desde= (pg-1)*20
		hasta= pg*20
		try:
			lista=[]
			consulta1= list(CtaCteMaterial.objects.filter(estado__in=["activo","bloqueado"],saldo__gt=0).values('pk','id_cliente','saldo','estado','privadoOficina','fechaApertura','observaciones','tipoCuenta'))
			for obj in consulta1:
				dato={}
				idCli= str(obj['id_cliente'])
				Cli= Cliente.objects.get(pk=idCli)
				dato['ID']= obj['pk']
				dato['dni']= Cli.dni
				dato['nom']= Cli.nombre
				dato['ap']=Cli.Apellido_paterno
				dato['am']=Cli.Apellido_materno
				dato['estado']=obj['estado']
				dato['obs']=obj['observaciones']
				dato['tipo_cuenta']=obj['tipoCuenta']
				dato['fa']=str(obj['fechaApertura'].strftime("%Y-%m-%d %H:%M %p"))
				dato['privado_oficina']= obj['privadoOficina']
				dato['saldo']= str(obj['saldo']) 
				lista.append(dato)
			data= json.dumps(lista)
		except:
			data='fail'+str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
def ListadoCtaCtes_material_sobregiradas_view(request):
	data=''
	if request.is_ajax:
		usr= request.user.username
		pag=request.GET.get('pg','')
		pg= 1
		if pag !='':
			pg= int(pag)
		desde= (pg-1)*20
		hasta= pg*20
		try:
			lista=[]
			consulta1= list(CtaCteMaterial.objects.filter(estado__in=["activo","bloqueado"],saldo__lt=0).values('pk','id_cliente','saldo','estado','privadoOficina','fechaApertura','observaciones','tipoCuenta'))
			for obj in consulta1:
				dato={}
				idCli= str(obj['id_cliente'])
				Cli= Cliente.objects.get(pk=idCli)
				dato['ID']= obj['pk']
				dato['dni']= Cli.dni
				dato['nom']= Cli.nombre
				dato['ap']=Cli.Apellido_paterno
				dato['am']=Cli.Apellido_materno
				dato['estado']=obj['estado']
				dato['obs']=obj['observaciones']
				dato['tipo_cuenta']=obj['tipoCuenta']
				dato['fa']=str(obj['fechaApertura'].strftime("%Y-%m-%d %H:%M %p"))
				dato['privado_oficina']= obj['privadoOficina']
				dato['saldo']= str(obj['saldo']) 
				lista.append(dato)
			data= json.dumps(lista)
		except:
			data='fail'+str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
def ListadoCtaCtes_material_nrocuenta_view(request):
	data=''
	if request.is_ajax:
		usr= request.user.username
		pag=request.GET.get('pg','')
		id=request.GET.get('id','')
		try:
			lista=[]
			consulta1= list(CtaCteMaterial.objects.filter(pk=id).values('pk','id_cliente','saldo','estado','privadoOficina','fechaApertura','observaciones','tipoCuenta'))
			for obj in consulta1:
				dato={}
				idCli= str(obj['id_cliente'])
				Cli= Cliente.objects.get(pk=idCli)
				dato['ID']= obj['pk']
				dato['dni']= Cli.dni
				dato['nom']= Cli.nombre
				dato['ap']=Cli.Apellido_paterno
				dato['am']=Cli.Apellido_materno
				dato['estado']=obj['estado']
				dato['obs']=obj['observaciones']
				dato['tipo_cuenta']=obj['tipoCuenta']
				dato['fa']=str(obj['fechaApertura'].strftime("%Y-%m-%d %H:%M %p"))
				dato['privado_oficina']= obj['privadoOficina']
				dato['saldo']= str(obj['saldo']) 
				lista.append(dato)
			data= json.dumps(lista)
		except:
			data='fail'+str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

 
@login_required
def ListadoCtaCteMaterial_movimientos_view(request):
	if request.is_ajax:
		usr = request.user.username
		pk=request.GET.get('pk')
		filtro=request.GET.get('filtro','')
		F1=request.GET.get('F1','')
		F2=request.GET.get('F2','')
		if filtro=='h':
			F1= str(datetime.date.today())
			filtro= 'f'
		totalM=0
		data=''
		try:
			if F1 != '':
				if filtro =='f':
					if F1 !='':
						fecha= datetime.datetime.strptime(F1, '%Y-%m-%d')
						horamin= datetime.datetime.combine(fecha,datetime.time.min)
						horamax= datetime.datetime.combine(fecha,datetime.time.max)
						mov= CtaCteMovimientosMaterial.objects.filter(id_ctactematerial=pk,fechaHora__range=(horamin,horamax)).values('pk','fechaHora','montoDeposito','montoRetiro','saldo','montoSobregiro','interesSobregiro','nroDiasSobregiro','observacionesMovimientos')
						consulta = list(mov)
					else:
						data='fail s'
				elif filtro=='ef':
					fecha1= datetime.datetime.strptime(F1, '%Y-%m-%d')
					fecha2= datetime.datetime.strptime(F2, '%Y-%m-%d')
					fhoramin= datetime.datetime.combine(fecha1,datetime.time.min)
					fhoramax= datetime.datetime.combine(fecha2,datetime.time.max)
					mov= CtaCteMovimientosMaterial.objects.filter(id_ctactematerial=pk,fechaHora__range=(fhoramin,fhoramax)).values('pk','fechaHora','montoDeposito','montoRetiro','saldo','montoSobregiro','interesSobregiro','nroDiasSobregiro','observacionesMovimientos')
					consulta = list(mov)
				elif filtro=='hs':
					fecha1= datetime.datetime.strptime(F1, '%Y-%m-%d %I:%M %p')
					fecha2= datetime.datetime.strptime(F2, '%Y-%m-%d %I:%M %p')
					fhoramin= fecha1
					fhoramax= fecha2
					mov= CtaCteMovimientosMaterial.objects.filter(id_ctactematerial=pk,fechaHora__range=(fhoramin,fhoramax)).values('pk','fechaHora','montoDeposito','montoRetiro','saldo','montoSobregiro','interesSobregiro','nroDiasSobregiro','observacionesMovimientos')
					consulta = list(mov)
				else:
					data='fail'
			else:
				data='fail'
			lista=[]
			for obj in consulta:
				dato={}
				dato['pk']= obj['pk']
				dato['f']= str(obj['fechaHora'].strftime("%Y-%m-%d %H:%M %p"))
				dato['md']= str(obj['montoDeposito'])
				dato['mr']=str(obj['montoRetiro'])
				dato['s']=str(obj['saldo'])
				dato['msb']=str(obj['montoSobregiro'])
				dato['isb']=str(obj['interesSobregiro'])
				dato['ndsb']=str(obj['nroDiasSobregiro'])
				dato['obs']=obj['observacionesMovimientos']
				lista.append(dato)
			data= json.dumps(lista)
		except:
			data='fail'+str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)
"""

@login_required
@permission_required('Main.add_oficina')
def Movimientos_admin_tem_view(request):
	return render(request,"Movimientos.html" )


@login_required
@permission_required('Main.add_oficina')
def CajasPersonalSaldo_ajax_view(request):
	if request.is_ajax:
		idO = request.GET.get('idOfi')
		data=''
		lista=[]
		try:
			consulta1 = list(Cajas.objects.filter(id_oficina=idO).values('pk','nombre','estado','id_oficina','id_usuario'))
			for obj in consulta1:
				IdC = str(obj['pk'])
				IdP= str(obj['id_usuario'])
				Per= Personal.objects.get(pk=IdP)
				#consulta3=list(SaldoDisponibleCajas.objects.filter(id_caja=IdC).values('saldo_soles','saldo_dolares'))
				dato={}
				dato['c_id']=obj['pk']
				dato['c_nombre']=obj['nombre']
				dato['c_estado']=obj['estado']
				dato['p_nombre']=Per.nombre
				dato['p_ap']=Per.Apellido_paterno
				dato['p_am']=Per.Apellido_materno
				dato['p_est']=Per.estado

				dato['saldo_soles_do']=0
				dato['saldo_dolares_do']=0
				dato['saldo_soles_ma']=0
				dato['saldo_dolares_ma']=0
				dato['saldo_material_ma']=0
				S= SaldoDisponibleCajas.objects.filter(id_caja=IdC).values('saldo_soles','saldo_dolares')
				if S.exists():
					consulta3=list(S)
					dato['saldo_soles']=normalizar(consulta3[0]['saldo_soles'])
					dato['saldo_dolares']=normalizar(consulta3[0]['saldo_dolares'])
				else:
					dato['saldo_soles']=0
					dato['saldo_dolares']=0
				if SaldoDisponibleCajaCambio.objects.filter(id_caja=IdC).exists():
					saldod= SaldoDisponibleCajaCambio.objects.get(id_caja=IdC)
					dato['saldo_soles_do']=normalizar(saldod.saldo_soles)
					dato['saldo_dolares_do']=normalizar(saldod.saldo_dolares)
				if SaldoDisponibleCajaMaterial.objects.filter(id_caja=IdC).exists():
					saldom= SaldoDisponibleCajaMaterial.objects.get(id_caja=IdC)
					dato['saldo_soles_ma']=normalizar(saldom.saldo_soles)
					dato['saldo_dolares_ma']=normalizar(saldom.saldo_dolares)
					dato['saldo_material_ma']=normalizar(saldom.saldo_material)
				
				lista.append(dato)
			data= json.dumps(lista)
		except:
			data='error en consulta'+str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)


@login_required
@permission_required('Main.add_oficina')
def MovimientosCaja_admin_tem_view(request):
	pkc = request.POST.get('pkC')
	f = request.POST.get('mf','')
	c= Cajas.objects.get(pk=pkc)
	oficina = c.id_oficina.nombre_oficina
	caja= c.nombre
	operador = c.id_usuario.nombre +' '+c.id_usuario.Apellido_paterno+' '+c.id_usuario.Apellido_materno
	fechad=''
	fechah=''
	if f != None and f!='':
		fechad= f
		fechah= f
	else:
		fechad = str(date.today())
		fechah = str(date.today())
	return render(request,"MovimientoCaja.html",{"pkc":pkc,"caja":caja,"oficina":oficina,"operador":operador,"fd":fechad,"fh":fechah} )

"""
@login_required
def ListadoCtaCtes_dni(request):
	data=''
	if request.is_ajax:
		usr= request.user.username
		pag=request.GET.get('pg','')
		dni=request.GET.get('dni','')
		pg= 1
		if pag !='':
			pg= int(pag)
		desde= (pg-1)*20
		hasta= pg*20
		try:
			lista=[]
			#consulta1= list(Cliente.objects.all().values('pk','nombre','Apellido_paterno','Apellido_materno'))
			if Cliente.objects.filter(dni=dni).exists():
				consulta2=list(Cliente.objects.filter(dni=dni).values('pk','dni','nombre','Apellido_paterno','Apellido_materno','email','telefono','direccion','drem'))	
				#consulta1= list(CtaCte.objects.filter(id_cliente__dni=dni,privadoOficina='NO').values('pk','id_cliente','idCajaDebe','saldo','estado','privadoOficina','fechaApertura','observaciones','tipoCuenta','claveAcceso'))
				#if CtaCte.objects.filter(id_cliente=consulta2[0]['pk']).exists():
				
				for obj in consulta2:
					if CtaCte.objects.filter(id_cliente=obj['pk']).exists():
						consulta1= list(CtaCte.objects.filter(id_cliente=obj['pk']).values('pk','id_cliente','idCajaDebe','saldo','estado','privadoOficina','fechaApertura','observaciones','tipoCuenta','claveAcceso'))
						for obj1 in consulta1:
							dato={}
							idCD= obj1['idCajaDebe']
							consulta3=TCajaDebe.objects.filter(pk=idCD).values('id_oficina','id_personal','moneda')
							consulta4=Oficina.objects.filter(pk=consulta3[0]['id_oficina']).values('nombre_oficina')
							consulta5=Personal.objects.filter(pk=consulta3[0]['id_personal']).values('usuario')
							dato['ID']= obj1['pk']
							dato['dni']= obj['dni']
							dato['email']= obj['email']
							dato['telefono']= obj['telefono']
							dato['direccion']= obj['direccion']
							dato['drem']= obj['drem']
							dato['nombre']= obj['nombre']
							dato['Apellido_paterno']=obj['Apellido_paterno']
							dato['Apellido_materno']=obj['Apellido_materno']
							dato['estado']=obj1['estado']
							dato['observaciones']=obj1['observaciones']
							dato['tipo_cuenta']=obj1['tipoCuenta']
							dato['clave']=obj1['claveAcceso']
							dato['oficina_apertura']= consulta4[0]['nombre_oficina']
							dato['usuario_apertura']= consulta5[0]['usuario']
							dato['fecha_apertura']=str(obj1['fechaApertura'])
							dato['privado_oficina']= obj1['privadoOficina']
							dato['moneda']= consulta3[0]['moneda']
							dato['saldo']= str(obj1['saldo']) 
							lista.append(dato)
 
				data= json.dumps(lista)
			else:
				data='C200'
		except:
			data='fail'+str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)



@login_required
def ListadoCtaCtes_op_dni(request):
	data=''
	if request.is_ajax:
		usr= request.user.username
		pag=request.GET.get('pg','')
		dni=request.GET.get('dni','')
		pg= 1
		if pag !='':
			pg= int(pag)
		desde= (pg-1)*20
		hasta= pg*20
		try:
			lista=[]
			#consulta1= list(Cliente.objects.all().values('pk','nombre','Apellido_paterno','Apellido_materno'))
			if Cliente.objects.filter(dni=dni).exists():
				consulta2=list(Cliente.objects.filter(dni=dni).values('pk','dni','nombre','Apellido_paterno','Apellido_materno','email','telefono','direccion','drem'))	
				#consulta1= list(CtaCte.objects.filter(id_cliente__dni=dni,privadoOficina='NO').values('pk','id_cliente','idCajaDebe','saldo','estado','privadoOficina','fechaApertura','observaciones','tipoCuenta','claveAcceso'))
				#if CtaCte.objects.filter(id_cliente=consulta2[0]['pk']).exists():
				
				for obj in consulta2:
					if CtaCte.objects.filter(id_cliente=obj['pk']).exists():
						consulta1= list(CtaCte.objects.filter(id_cliente=obj['pk']).values('pk','id_cliente','idCajaDebe','saldo','estado','privadoOficina','fechaApertura','observaciones','tipoCuenta','claveAcceso'))
						for obj1 in consulta1:
							dato={}
							idCD= obj1['idCajaDebe']
							consulta3=TCajaDebe.objects.filter(pk=idCD).values('id_oficina','id_personal','moneda')
							consulta4=Oficina.objects.filter(pk=consulta3[0]['id_oficina']).values('nombre_oficina')
							consulta5=Personal.objects.filter(pk=consulta3[0]['id_personal']).values('usuario')
							dato['ID']= obj1['pk']
							dato['dni']= obj['dni']
							dato['email']= obj['email']
							dato['telefono']= obj['telefono']
							dato['direccion']= obj['direccion']
							dato['drem']= obj['drem']
							dato['nombre']= obj['nombre']
							dato['Apellido_paterno']=obj['Apellido_paterno']
							dato['Apellido_materno']=obj['Apellido_materno']
							dato['estado']=obj1['estado']
							dato['observaciones']=obj1['observaciones']
							dato['tipo_cuenta']=obj1['tipoCuenta']
							dato['clave']=obj1['claveAcceso']
							dato['oficina_apertura']= consulta4[0]['nombre_oficina']
							dato['usuario_apertura']= consulta5[0]['usuario']
							dato['fecha_apertura']=str(obj1['fechaApertura'])
							dato['privado_oficina']= obj1['privadoOficina']
							dato['moneda']= consulta3[0]['moneda']
							dato['saldo']= str(obj1['saldo']) 
							lista.append(dato)
 
				data= json.dumps(lista)
			else:
				data='C200'
		except:
			data='fail'+str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)



@login_required
def ListadoCtaAhorros_dni(request):
	data=''
	if request.is_ajax:
		usr= request.user.username
		pag=request.GET.get('pg','')
		dni=request.GET.get('dni','')
		pg= 1
		if pag !='':
			pg= int(pag)
		desde= (pg-1)*20
		hasta= pg*20
		try:
			lista=[]
			#consulta1= list(Cliente.objects.all().values('pk','nombre','Apellido_paterno','Apellido_materno'))
			if Cliente.objects.filter(dni=dni).exists():
				consulta2=Cliente.objects.filter(dni=dni).values('pk','dni','nombre','Apellido_paterno','Apellido_materno','email','telefono','direccion','drem')	
				consulta1= list(CtaAhorros.objects.filter(id_cliente=consulta2[0]['pk']).values('pk','id_cliente','idCajaDebe','saldo','interes','estado','privadoOficina','fechaApertura','observaciones','tipoCuenta','claveAcceso'))
				if CtaAhorros.objects.filter(id_cliente=consulta2[0]['pk']).exists():
					for obj in consulta1:
						dato={}
						idCli= str(obj['id_cliente'])
						idCD= str(obj['idCajaDebe'])
						consulta3=TCajaDebe.objects.filter(pk=idCD).values('id_oficina','id_personal','moneda')
						consulta4=Oficina.objects.filter(pk=consulta3[0]['id_oficina']).values('nombre_oficina')
						consulta5=Personal.objects.filter(pk=consulta3[0]['id_personal']).values('usuario')
						dato['ID']= obj['pk']
						dato['dni']= consulta2[0]['dni']
						dato['email']= consulta2[0]['email']
						dato['telefono']= consulta2[0]['telefono']
						dato['direccion']= consulta2[0]['direccion']
						dato['drem']= consulta2[0]['drem']
						dato['nombre']= consulta2[0]['nombre']
						dato['Apellido_paterno']=consulta2[0]['Apellido_paterno']
						dato['Apellido_materno']=consulta2[0]['Apellido_materno']
						dato['estado']=obj['estado']
						dato['observaciones']=obj['observaciones']
						dato['tipo_cuenta']=obj['tipoCuenta']
						dato['clave']=obj['claveAcceso']
						dato['oficina_apertura']= consulta4[0]['nombre_oficina']
						dato['usuario_apertura']= consulta5[0]['usuario']
						dato['fecha_apertura']=str(obj['fechaApertura'])
						dato['privado_oficina']= obj['privadoOficina']
						dato['moneda']= consulta3[0]['moneda']
						dato['saldo']= str(obj['saldo']) 
						dato['interes']= str(obj['interes'])
						lista.append(dato)

					data= json.dumps(lista)
				else:
					data='CC200'
			else:
				data='C200'
		except:
			data='fail'+str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)



@login_required
def ListadoCtaAhorros_op_dni(request):
	data=''
	if request.is_ajax:
		usr= request.user.username
		pag=request.GET.get('pg','')
		dni=request.GET.get('dni','')
		pg= 1
		if pag !='':
			pg= int(pag)
		desde= (pg-1)*20
		hasta= pg*20
		C= Cajas.objects.get(id_usuario__usuario=usr)
		try:
			lista=[]
			#consulta1= list(Cliente.objects.all().values('pk','nombre','Apellido_paterno','Apellido_materno'))
			if Cliente.objects.filter(dni=dni).exists():
				consulta2=Cliente.objects.filter(dni=dni).values('pk','dni','nombre','Apellido_paterno','Apellido_materno','email','telefono','direccion','drem')	
				consulta1= list(CtaAhorros.objects.filter(id_cliente=consulta2[0]['pk']).values('pk','id_cliente','idCajaDebe','saldo','interes','estado','privadoOficina','fechaApertura','observaciones','tipoCuenta','claveAcceso'))
				if CtaAhorros.objects.filter(id_cliente=consulta2[0]['pk']).exists():
					for obj in consulta1:
						dato={}
						idCli= str(obj['id_cliente'])
						idCD= str(obj['idCajaDebe'])
						consulta3=TCajaDebe.objects.filter(pk=idCD).values('id_oficina','id_personal','moneda')
						consulta4=Oficina.objects.filter(pk=consulta3[0]['id_oficina']).values('nombre_oficina')
						consulta5=Personal.objects.filter(pk=consulta3[0]['id_personal']).values('usuario')
						dato['ID']= obj['pk']
						dato['dni']= consulta2[0]['dni']
						dato['email']= consulta2[0]['email']
						dato['telefono']= consulta2[0]['telefono']
						dato['direccion']= consulta2[0]['direccion']
						dato['drem']= consulta2[0]['drem']
						dato['nombre']= consulta2[0]['nombre']
						dato['Apellido_paterno']=consulta2[0]['Apellido_paterno']
						dato['Apellido_materno']=consulta2[0]['Apellido_materno']
						dato['estado']=obj['estado']
						dato['observaciones']=obj['observaciones']
						dato['tipo_cuenta']=obj['tipoCuenta']
						dato['clave']=obj['claveAcceso']
						dato['oficina_apertura']= consulta4[0]['nombre_oficina']
						dato['usuario_apertura']= consulta5[0]['usuario']
						dato['fecha_apertura']=str(obj['fechaApertura'])
						dato['privado_oficina']= obj['privadoOficina']
						dato['moneda']= consulta3[0]['moneda']
						dato['saldo']= str(obj['saldo']) 
						dato['interes']= str(obj['interes'])
						lista.append(dato)

					data= json.dumps(lista)
				else:
					data='CC200'
			else:
				data='C200'
		except:
			data='fail'+str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)


@login_required
def ListadoAutorizarCtaCtes_ajax(request):
	data=''
	if request.is_ajax:
		pag=request.GET.get('pg','')
		pg= 1
		if pag !='':
			pg= int(pag)
		desde= (pg-1)*20
		hasta= pg*20
		try:
			lista=[]
			#consulta1= list(Cliente.objects.all().values('pk','nombre','Apellido_paterno','Apellido_materno'))
			consulta1= list(PeticionesCtaCtes.objects.all().values('id','idctacte','estado','monto','tipoMoneda','fechaHora','id_personal','saldo','esSobregiro','montoSobregiro','interesSobregiro','nroDiasSobregiro'))
			for obj in consulta1:
				dato={}
				idPers= str(obj['id_personal'])
				idCta= str(obj['idctacte'])
				consulta2=CtaCte.objects.filter(pk=idCta).values('id_cliente','idCajaDebe')
				consulta3=Cliente.objects.filter(pk=consulta2[0]['id_cliente']).values('nombre','Apellido_paterno','Apellido_materno')
				consulta4=TCajaDebe.objects.filter(pk=consulta2[0]['idCajaDebe']).values('id_oficina','id_personal')
				consulta5=Oficina.objects.filter(pk=consulta4[0]['id_oficina']).values('nombre_oficina')
				consulta6=Personal.objects.filter(pk=consulta4[0]['id_personal']).values('usuario')
				dato['id']= obj['id']
				dato['usuario']= consulta6[0]['usuario']
				dato['oficina']= consulta5[0]['nombre_oficina']
				dato['nombre']= consulta3[0]['nombre']
				dato['ap']= consulta3[0]['Apellido_paterno']
				dato['am']= consulta3[0]['Apellido_materno']
				dato['idCta']= idCta
				dato['fechaHora']= str(obj['fechaHora'].strftime("%Y-%m-%d %H:%M %p"))
				dato['estado']=obj['estado']
				dato['monto']=str(obj['monto'])
				dato['saldo']=str(obj['saldo'])
				dato['moneda']=obj['tipoMoneda']
				lista.append(dato)

			data= json.dumps(lista)
		except:
			data='fail'+str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

 #cierre material fino

"""
@login_required
@transaction.atomic
def recuperarCierreCompraCliente(request):
	lista=[]
	if request.is_ajax:
		idCliente=request.GET.get('idCliente','')
		idCierre=request.GET.get('idCierre','')
		html_cierres='<thead><tr><td style="text-align: center;">Fecha</td><td style="text-align: center;">Cantidad (Grs)</td><td style="text-align: center;">Precio Oz</td><td style="text-align: center;">Ley (%)</td><td style="text-align: center;">Descuento</td></tr></thead>'
		sumaCantidad=0
		sumaPrecio=0
		sumaLey=0
		sumaDescuento=0


		try:
			lista=[]
			consulta= list(BarrasCompraMaterial.objects.filter(id_cliente=idCliente,id_cierre_compra_cliente=idCierre).values('pk','fechaCierre','precio','descuento','ley','cantidadInicial','observaciones'))
			
			html_cierres=html_cierres+'<tr class="even warning">'
			html_cierres=html_cierres+'<td><button type="button" id="btnAgregarFila" class="btn btn-success btn-sm"><i class="fa fa-plus"></i> Agregar Fila</button></td>'
			html_cierres=html_cierres+'<td></td>'
			html_cierres=html_cierres+'<td></td>'
			html_cierres=html_cierres+'<td></td>'
			html_cierres=html_cierres+'<td></td>'
			html_cierres=html_cierres+'<td hidden></td>'
			html_cierres=html_cierres+'</tr>'

			for obj in consulta:
				html_cierres=html_cierres+'<tr class="even warning">'
				html_cierres=html_cierres+'<td><span class="editable editable-click fecha" id="tbfecha" data-type="date" data-format="YYYY-MM-DD" data-viewformat="YYYY-MM-DD" style="display: inline;">'+str(obj['fechaCierre'].strftime("%Y-%m-%d"))+'</span></td>'
				html_cierres=html_cierres+'<td><input class="clickedit cantidad" type="text" value="'+str(obj['cantidadInicial'])+'"/></td>'
				html_cierres=html_cierres+'<td><input class="clickedit precio" type="text" value="'+str(obj['precio'])+'"/></td>'
				html_cierres=html_cierres+'<td><input class="clickedit ley" type="text" value="'+str(obj['ley'])+'"/></td>'
				html_cierres=html_cierres+'<td><input class="clickedit descuento" type="text" value="'+str(obj['descuento'])+'"/></td>'
				html_cierres=html_cierres+'<td hidden><span class="spanId">'+str(obj['pk'])+'</span></td>'
				html_cierres=html_cierres+'</tr>'
				sumaCantidad=sumaCantidad+float(str(obj['cantidadInicial']))
				sumaPrecio=sumaPrecio+float(str(obj['precio']))
				sumaLey=sumaLey+float(str(obj['ley']))
				sumaDescuento=sumaDescuento+float(str(obj['descuento']))




			html_cierres=html_cierres+'<tr class="even warning">'
			html_cierres=html_cierres+'<td></td>'
			html_cierres=html_cierres+'<td>'+str(sumaCantidad)+'</td>'
			html_cierres=html_cierres+'<td>'+str(sumaPrecio)+'</td>'
			html_cierres=html_cierres+'<td>'+str(sumaLey)+'</td>'
			html_cierres=html_cierres+'<td>'+str(sumaDescuento)+'</td>'
			html_cierres=html_cierres+'<td hidden></td>'
			html_cierres=html_cierres+'</tr>'


			lista.append(html_cierres)
			dato={'lista':lista}
		except:
			data='fail'+str(sys.exc_info()[1])
	else:
		data='fail'

	data= json.dumps(dato)
	mimetype="application/json"
	return HttpResponse(data,mimetype)


@login_required
@transaction.atomic
def recuperarCierreCompraClienteAll(request):
	data=''
	lista=[]
	if request.is_ajax:
		try:
			consulta=list(CierreCompraCliente.objects.filter(estado='PENDIENTE').values('pk','id_cliente'))
			for obj in consulta:
				consulta1=list(BarrasCompraMaterial.objects.filter(id_cierre_compra_cliente=obj['pk']).values('id_cliente','cantidadInicial','cantidad','fechaCierre','precio','ley','descuento','observaciones')) 
				#print consulta1.count()
				for obj1 in consulta1:
					dato={}
					OC=Cliente.objects.get(pk=obj1['id_cliente'])
					dato['nombre']=OC.nombre+' '+OC.Apellido_paterno+' '+OC.Apellido_materno
					dato['cantidad']=str(obj1['cantidadInicial'])
					dato['fecha']=str(obj1['fechaCierre'].strftime("%Y-%m-%d"))
					dato['precio']=str(obj1['precio'])
					dato['ley']=str(obj1['ley'])
					dato['descuento']=str(obj1['descuento'])
					dato['observaciones']=obj1['observaciones']
					lista.append(dato)
			data= json.dumps(lista)
		except:
			data='fail'+str(sys.exc_info()[1])
	else:
		data='fail'+str(sys.exc_info()[1])

	mimetype="application/json"
	return HttpResponse(data,mimetype)


@login_required
@transaction.atomic
def recuperarCierreVentaClienteAll(request):
	data=''
	lista=[]
	if request.is_ajax:
		try:
			consulta=list(CierreVentaCliente.objects.filter(estado='PENDIENTE').values('pk','id_cliente'))
			for obj in consulta:
				consulta1=list(BarrasVentaMaterial.objects.filter(id_cierre_venta_cliente=obj['pk']).values('id_cliente','cantidadInicial','cantidad','fechaCierre','precio','ley','descuento','observaciones')) 
				#print consulta1.count()
				for obj1 in consulta1:
					dato={}
					OC=Cliente.objects.get(pk=obj1['id_cliente'])
					dato['nombre']=OC.nombre+' '+OC.Apellido_paterno+' '+OC.Apellido_materno
					dato['cantidad']=str(obj1['cantidadInicial'])
					dato['fecha']=str(obj1['fechaCierre'].strftime("%Y-%m-%d"))
					dato['precio']=str(obj1['precio'])
					dato['ley']=str(obj1['ley'])
					dato['descuento']=str(obj1['descuento'])
					dato['observaciones']=obj1['observaciones']
					lista.append(dato)
			data= json.dumps(lista)
		except:
			data='fail'+str(sys.exc_info()[1])
	else:
		data='fail'+str(sys.exc_info()[1])

	mimetype="application/json"
	return HttpResponse(data,mimetype)



@login_required
@transaction.atomic
def recuperarCierreCompraClienteCaja(request):
	data=''
	if request.is_ajax:
		try:
			idCliente=request.GET.get('idCliente','')
			lista=[]
			consulta=list(CierreCompraCliente.objects.filter(id_cliente=idCliente,estado='PENDIENTE').values('pk','id_cliente'))
			for obj in consulta:
				dato={}
				OC=Cliente.objects.get(pk=obj['id_cliente'])
				SCI=BarrasCompraMaterial.objects.filter(id_cierre_compra_cliente=obj['pk'],estado='PENDIENTE').aggregate(Sum('cantidadInicial'))
				STB=BarrasCompraMaterial.objects.filter(id_cierre_compra_cliente=obj['pk'],estado='PENDIENTE').aggregate(Count('pk'))
				if SCI['cantidadInicial__sum']!=None and STB['pk__count']!=0:
					dato['pk']=OC.pk
					dato['pkCierre']=obj['pk']
					dato['nombre']=OC.nombre+' '+OC.Apellido_paterno+' '+OC.Apellido_materno
					dato['total']=str(SCI['cantidadInicial__sum'])
					dato['totalBarras']=str(STB['pk__count'])
					lista.append(dato)

			data= json.dumps(lista)
		except:
			data='fail'+str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)



@login_required
@transaction.atomic
def recuperarCliente(request):
	if request.is_ajax:
		param=request.GET.get('parametro')
		usr = request.user.username
		try:
			consulta=list(Cliente.objects.filter(Q(dni__icontains=param)|Q(nombre__icontains=param)|Q(Apellido_paterno__icontains=param)|Q(Apellido_materno__icontains=param)).values('pk','dni','nombre','Apellido_paterno','Apellido_materno','telefono','direccion','fecha_nacimiento','email','drem','tipo_persona'))
			lista=[]
			for obj in consulta:
				aux={}
				OC=Cliente.objects.get(pk=obj['pk'])
				if CierreCompraCliente.objects.filter(id_cliente=OC,estado='PENDIENTE').exists():
					consulta1=list(CierreCompraCliente.objects.filter(id_cliente=OC,estado='PENDIENTE').values('pk'))
					aux['pk']=obj['pk']
					aux['pkCierre']=consulta1[0]['pk']
					aux['nombre']=obj['nombre']
					aux['Apellido_paterno']=obj['Apellido_paterno']
					aux['Apellido_materno']=obj['Apellido_materno']
					lista.append(aux)
				else:
					aux['pk']=obj['pk']
					aux['pkCierre']='-1'
					aux['nombre']=obj['nombre']
					aux['Apellido_paterno']=obj['Apellido_paterno']
					aux['Apellido_materno']=obj['Apellido_materno']
					lista.append(aux)

			data= json.dumps(lista)
		except:
			data='fail'
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)


@login_required
@transaction.atomic
def recuperarClienteVenta(request):
	if request.is_ajax:
		param=request.GET.get('parametro')
		usr = request.user.username
		try:
			consulta=list(Cliente.objects.filter(Q(dni__icontains=param)|Q(nombre__icontains=param)|Q(Apellido_paterno__icontains=param)|Q(Apellido_materno__icontains=param)).values('pk','dni','nombre','Apellido_paterno','Apellido_materno','telefono','direccion','fecha_nacimiento','email','drem','tipo_persona'))
			lista=[]
			for obj in consulta:
				aux={}
				OC=Cliente.objects.get(pk=obj['pk'])
				if CierreVentaCliente.objects.filter(id_cliente=OC,estado='PENDIENTE').exists():
					consulta1=list(CierreCompraCliente.objects.filter(id_cliente=OC,estado='PENDIENTE').values('pk'))
					aux['pk']=obj['pk']
					aux['pkCierre']=consulta1[0]['pk']
					aux['nombre']=obj['nombre']
					aux['Apellido_paterno']=obj['Apellido_paterno']
					aux['Apellido_materno']=obj['Apellido_materno']
					lista.append(aux)
				else:
					aux['pk']=obj['pk']
					aux['pkCierre']='-1'
					aux['nombre']=obj['nombre']
					aux['Apellido_paterno']=obj['Apellido_paterno']
					aux['Apellido_materno']=obj['Apellido_materno']
					lista.append(aux)

			data= json.dumps(lista)
		except:
			data='fail'
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)




@login_required
@transaction.atomic
def recuperarPromediosCaja(request):
	if request.is_ajax:
		usr=request.user.username
		G= Gerente.objects.get(usuario=usr)
		C= Cajas.objects.get(id_usuario=G.id_usuario.pk)
		try:
			saldoMaterialCajaTotal=SaldoDisponibleCajaMaterial.objects.filter(id_oficina=C.id_oficina.pk,id_caja=C.pk).aggregate(Sum('saldo_Material'))
			if saldoMaterialCajaTotal['saldo_Material__sum']==None:
				data=0
			else:
				data=saldoMaterialCajaTotal['saldo_Material__sum']
		except:
			data='fail'
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)


@login_required
@transaction.atomic
def recuperarConfiguracionDecimalesCompra(request):
	data=''
	lista=[]
	if request.is_ajax:
		idCierre=request.GET.get('idCierre')
		idCliente=request.GET.get('idCliente')
		html_config='<thead><tr><td class="td-center">Peso Bruto Inicial</td><td class="td-center">Peso Bruto(Grs)</td><td class="td-center">Merma (%)</td><td class="td-center">Ley (%)</td><td class="td-center">Peso Fino (Grs)</td><td class="td-center">Peso Fino Cierre (Grs)</td><td class="td-center">Peso Fino Cierre (Oz)</td><td class="td-center">Precio US$/OZ</td><td class="td-center">Descuento Compra %</td><td class="td-center">Precio Gramo</td><td class="td-center">Precio Onza</td><td class="td-center">Retencion 1.50%</td><td class="td-center">Neto a Pagar US$</td><td class="td-center">Monto Pagado</td><td class="td-center">Saldo a Pagar US$</td></tr></thead>'

		try: 
			consulta=ConfiguracionCompraMaterial.objects.get(id_cierre_compra_cliente=idCierre,id_cliente=idCliente) 
			cadena=str(consulta.configDecimales).split('/')
			html_config=html_config+'<tr>'
			html_config=html_config+'<td><span class="editable editable-click" style="display: inline;">'+cadena[0]+'</span></td>'
			html_config=html_config+'<td><span class="editable editable-click" style="display: inline;">'+cadena[1]+'</span></td>'
			html_config=html_config+'<td><span class="editable editable-click" style="display: inline;">'+cadena[2]+'</span></td>'
			html_config=html_config+'<td><span class="editable editable-click" style="display: inline;">'+cadena[3]+'</span></td>'
			html_config=html_config+'<td><span class="editable editable-click" style="display: inline;">'+cadena[4]+'</span></td>'
			html_config=html_config+'<td><span class="editable editable-click" style="display: inline;">'+cadena[5]+'</span></td>'
			html_config=html_config+'<td><span class="editable editable-click" style="display: inline;">'+cadena[6]+'</span></td>'
			html_config=html_config+'<td><span class="editable editable-click" style="display: inline;">'+cadena[7]+'</span></td>'
			html_config=html_config+'<td><span class="editable editable-click" style="display: inline;">'+cadena[8]+'</span></td>'
			html_config=html_config+'<td><span class="editable editable-click" style="display: inline;">'+cadena[9]+'</span></td>'
			html_config=html_config+'<td><span class="editable editable-click" style="display: inline;">'+cadena[10]+'</span></td>'
			html_config=html_config+'<td><span class="editable editable-click" style="display: inline;">'+cadena[11]+'</span></td>'
			html_config=html_config+'<td><span class="editable editable-click" style="display: inline;">'+cadena[12]+'</span></td>'
			html_config=html_config+'<td><span class="editable editable-click" style="display: inline;">'+cadena[13]+'</span></td>'
			html_config=html_config+'<td><span class="editable editable-click" style="display: inline;">'+cadena[14]+'</span></td>'
			html_config=html_config+'</tr>'
			lista.append(html_config)	
			data= json.dumps(lista)
		except:
			data='fail'+str(sys.exc_info()[1])
	else:
		data='fail'+str(sys.exc_info()[1])

	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
@transaction.atomic
def recuperarConfiguracionDecimalesCompraGeneral(request):
	data=''
	lista=[]
	if request.is_ajax:
		idCierre=request.GET.get('idCierre')
		idCliente=request.GET.get('idCliente')
		html_config='<thead><tr><td class="td-center">Peso Bruto Inicial</td><td class="td-center">Peso Bruto(Grs)</td><td class="td-center">Merma (%)</td><td class="td-center">Ley (%)</td><td class="td-center">Peso Fino (Grs)</td><td class="td-center">Peso Fino Cierre (Grs)</td><td class="td-center">Peso Fino Cierre (Oz)</td><td class="td-center">Precio US$/OZ</td><td class="td-center">Descuento Compra %</td><td class="td-center">Precio Gramo</td><td class="td-center">Precio Onza</td><td class="td-center">Retencion 1.50%</td><td class="td-center">Neto a Pagar US$</td><td class="td-center">Monto Pagado</td><td class="td-center">Saldo a Pagar US$</td></tr></thead>'
		html_config=html_config+'<tr>'
		html_config=html_config+'<td><span class="editable editable-click" style="display: inline;">0</span></td>'
		html_config=html_config+'<td><span class="editable editable-click" style="display: inline;">0</span></td>'
		html_config=html_config+'<td><span class="editable editable-click" style="display: inline;">0</span></td>'
		html_config=html_config+'<td><span class="editable editable-click" style="display: inline;">0</span></td>'
		html_config=html_config+'<td><span class="editable editable-click" style="display: inline;">0</span></td>'
		html_config=html_config+'<td><span class="editable editable-click" style="display: inline;">0</span></td>'
		html_config=html_config+'<td><span class="editable editable-click" style="display: inline;">0</span></td>'
		html_config=html_config+'<td><span class="editable editable-click" style="display: inline;">0</span></td>'
		html_config=html_config+'<td><span class="editable editable-click" style="display: inline;">0</span></td>'
		html_config=html_config+'<td><span class="editable editable-click" style="display: inline;">0</span></td>'
		html_config=html_config+'<td><span class="editable editable-click" style="display: inline;">0</span></td>'
		html_config=html_config+'<td><span class="editable editable-click" style="display: inline;">0</span></td>'
		html_config=html_config+'<td><span class="editable editable-click" style="display: inline;">0</span></td>'
		html_config=html_config+'<td><span class="editable editable-click" style="display: inline;">0</span></td>'
		html_config=html_config+'<td><span class="editable editable-click" style="display: inline;">0</span></td>'
		html_config=html_config+'</tr>'
		lista.append(html_config)	
		data= json.dumps(lista)
	else:
		data='fail'+str(sys.exc_info()[1])

	mimetype="application/json"
	return HttpResponse(data,mimetype)


@login_required
@transaction.atomic
def imprimirPagoCompra_view(request):
	data=''
	lista=[]
	if request.is_ajax:
		idPago=request.GET.get('idPago')
		try: 
			OCP=ControlPagoCompra.objects.get(pk=idPago,estado='CONFIRMADO') 
			OCXP=CuentaXPagarCierreCompraMaterial.objects.get(pk=OCP.id_cuentaxpagar.pk)
			OC=Cliente.objects.get(pk=OCXP.id_cliente.pk)
			OCC=CierreCompraCliente.objects.get(pk=OCXP.id_cierre_compra_cliente.pk)
			aux={}
			aux['fecha']=str(datetime.date.today())
			aux['cliente']=OC.nombre+' '+OC.Apellido_paterno+' '+OC.Apellido_materno
			aux['montoPagado']=str(OCP.montoPagado)
			aux['moneda']=str(OCP.moneda)
			aux['lote']=str(OCC.lote)
			aux['observaciones']=OCP.observaciones
			lista.append(aux)	
			data= json.dumps(lista)
		except:
			data='fail'+str(sys.exc_info()[1])
	else:
		data='fail'+str(sys.exc_info()[1])

	mimetype="application/json"
	return HttpResponse(data,mimetype)


@login_required
@permission_required('Main.add_oficina')
def MovimientosOficina_admin_tem_view(request):
	pko = request.POST.get('pkO')
	o= Oficina.objects.get(pk=pko)
	oficina = o.nombre_oficina
	fechad = str(date.today())
	fechah = str(date.today())
	return render(request,"MovimientoOficina.html",{"pko":pko,"oficina":oficina,"fd":fechad,"fh":fechah} )


@login_required
@permission_required('Main.add_oficina')
def ArqueCaja_admin_tem_view(request):
	pkc = request.POST.get('pkC1')
	c= Cajas.objects.get(pk=pkc)
	oficina = c.id_oficina.nombre_oficina
	caja= c.nombre
	operador = c.id_usuario.nombre +' '+c.id_usuario.Apellido_paterno+' '+c.id_usuario.Apellido_materno
	fechad = str(date.today())
	fechah = str(date.today())
	return render(request,"ArqueoCaja.html",{"pkc":pkc,"oficina":oficina,"operador":operador,"fd":fechad,"fh":fechah} )

@login_required
@permission_required('Main.add_oficina')
def ArqueCaja_dolares_admin_tem_view(request):
	pkc = request.POST.get('pkC1')
	c= Cajas.objects.get(pk=pkc)
	oficina = c.id_oficina.nombre_oficina
	caja= c.nombre
	operador = c.id_usuario.nombre +' '+c.id_usuario.Apellido_paterno+' '+c.id_usuario.Apellido_materno
	fechad = str(date.today())
	fechah = str(date.today())
	return render(request,"ArqueoCajaDolar.html",{"pkc":pkc,"oficina":oficina,"operador":operador,"fd":fechad,"fh":fechah} )


#***************************************************************************
@login_required
@permission_required('Main.add_oficina')
def consulta_tras_creadas_oficina_report_ajax_view(request):
	if request.is_ajax:
		filtro=request.GET.get('filtro','')
		pko=request.GET.get('pkO')
		F1=request.GET.get('F1','')
		F2=request.GET.get('F2','')
		if filtro=='h':
			F1= str(datetime.date.today())
			filtro= 'f'
		totalD=0
		totalS=0
		UtilD = 0
		UtilS=0
		data=''
		try:
			o= Oficina.objects.get(pk=pko)
			if F1 != '':
				if filtro =='f':
					if F1 !='':
						fecha= datetime.datetime.strptime(F1, '%Y-%m-%d')
						horamin= datetime.datetime.combine(fecha,datetime.time.min)
						horamax= datetime.datetime.combine(fecha,datetime.time.max)
						st= SolicitudTransferencia.objects.filter(idCajaDebe__id_oficina=o.pk,idCajaDebe__fecha__range=(horamin,horamax)).values('pk','id_oficina','idCajaDebe','comision','id_cliente','monto_conceptos','nombre_beneficiado','Apellido_paterno_beneficiado','Apellido_materno_beneficiado')
						UtilD= st.filter(idCajaDebe__moneda='dolares').aggregate(Sum('comision'))
						UtilS= st.filter(idCajaDebe__moneda='soles').aggregate(Sum('comision'))
						consulta = list(st)
					else:
						data='fail'
				elif filtro=='ef':
					fecha1= datetime.datetime.strptime(F1, '%Y-%m-%d')
					fecha2= datetime.datetime.strptime(F2, '%Y-%m-%d')
					fhoramin= datetime.datetime.combine(fecha1,datetime.time.min)
					fhoramax= datetime.datetime.combine(fecha2,datetime.time.max)
					st=SolicitudTransferencia.objects.filter(idCajaDebe__id_oficina=o.pk,idCajaDebe__fecha__range=(fhoramin,fhoramax)).values('pk','id_oficina','idCajaDebe','comision','id_cliente','monto_conceptos','nombre_beneficiado','Apellido_paterno_beneficiado','Apellido_materno_beneficiado')
					UtilD= st.filter(idCajaDebe__moneda='dolares').aggregate(Sum('comision'))
					UtilS= st.filter(idCajaDebe__moneda='soles').aggregate(Sum('comision'))
					consulta = list(st)
				else:
					data='fail'
			else:
				F1= str(datetime.date.today())
				fecha= datetime.datetime.strptime(F1, '%Y-%m-%d')
				horamin= datetime.datetime.combine(fecha,datetime.time.min)
				horamax= datetime.datetime.combine(fecha,datetime.time.max)
				st= SolicitudTransferencia.objects.filter(idCajaDebe__id_oficina=o.pk,idCajaDebe__fecha__range=(horamin,horamax)).values('pk','id_oficina','idCajaDebe','comision','id_cliente','monto_conceptos','nombre_beneficiado','Apellido_paterno_beneficiado','Apellido_materno_beneficiado')
				UtilD= st.filter(idCajaDebe__moneda='dolares').aggregate(Sum('comision'))
				UtilS= st.filter(idCajaDebe__moneda='soles').aggregate(Sum('comision'))
				consulta = list(st)
			lista=[]
			tbancoD=0
			tbancoS=0
			tcapiD=0
			tcapiS=0
			for obj in consulta:
				dato={}
				CD= TCajaDebe.objects.get(pk=str(obj['idCajaDebe']))
				Cl= Cliente.objects.get(pk=str(obj['id_cliente']))
				O_aux = Oficina.objects.get(pk= obj['id_oficina'])
				#dato['concepto']= CD.conceptoDetalle +' departe de '+Cl.nombre+' '+Cl.Apellido_paterno
				dato['concepto']= 'Para: '+ obj['nombre_beneficiado'] +' '+ obj['Apellido_paterno_beneficiado']+' '+obj['Apellido_materno_beneficiado']+'<b style="color: #2e6da4;"> / '+O_aux.nombre_oficina+'</b>'
				dato['fecha'] = str(CD.fecha.strftime("%d-%m-%Y %H:%M %p"))
				dato['tipodoc']= str(CD.tipoDocumento)
				dato['ope']= CD.id_personal.nombre + ' ' +CD.id_personal.Apellido_paterno +' '+CD.id_personal.Apellido_materno
				dato['moneda']= str(CD.moneda)
				dato['monto']= normalizar(float(CD.cantidadDinero))
				dato['comision']= str(obj['comision'])
				dato['comi_banco']= str(obj['monto_conceptos'])
				dato['nroR']= str(CD.nroRecibo)
				dato['capi']= 0
				if str(CD.moneda)=='soles':
					totalS= totalS+ConvertirDecimal(CD.cantidadDinero)
					if obj['monto_conceptos'] != None and obj['monto_conceptos']!='':
						cap= float(CD.cantidadDinero) -float(obj['comision']) -float(obj['monto_conceptos'])
						dato['capi'] = cap
						tcapiS= tcapiS + cap
						tbancoS = tbancoS + float(obj['monto_conceptos'])
					else:
						cap= float(CD.cantidadDinero) -float(obj['comision'])
						dato['capi'] = cap
						tcapiS= tcapiS + cap
				if str(CD.moneda)=='dolares':
					totalD= totalD+ConvertirDecimal(CD.cantidadDinero)
					if obj['monto_conceptos'] != None and obj['monto_conceptos']!='':
						cap= float(CD.cantidadDinero) -float(obj['comision']) -float(obj['monto_conceptos'])
						dato['capi'] = cap
						tcapiD= tcapiD + cap
						tbancoD = tbancoD + float(obj['monto_conceptos'])
					else:
						cap= float(CD.cantidadDinero) -float(obj['comision'])
						dato['capi'] = cap
						tcapiD= tcapiD + cap
				lista.append(dato)
			total={}
			total['util_soles']= str(UtilS['comision__sum'])
			total['util_dolares']=str(UtilD['comision__sum'])
			total['total_soles']=float(totalS)
			total['total_dolares']=float(totalD)
			total['tcapid']=float(tcapiD)
			total['tbancod']=float(tbancoD)
			total['tcapis']=float(tcapiS)
			total['tbancos']=float(tbancoS)
			lista.append(total)
			data= json.dumps(lista)
		except:
			data='fail'+ str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
@permission_required('Main.add_oficina')
def consulta_tras_pagadas_oficina_report_ajax_view(request):
	if request.is_ajax:
		filtro=request.GET.get('filtro','')
		pko=request.GET.get('pkO')
		F1=request.GET.get('F1','')
		F2=request.GET.get('F2','')
		if filtro=='h':
			F1= str(datetime.date.today())
			filtro= 'f'
		totalD=0
		totalS=0
		data=''
		try:
			o= Oficina.objects.get(pk=pko)
			if F1 != '':
				if filtro =='f':
					if F1 !='':
						fecha= datetime.datetime.strptime(F1, '%Y-%m-%d')
						horamin= datetime.datetime.combine(fecha,datetime.time.min)
						horamax= datetime.datetime.combine(fecha,datetime.time.max)
						consulta = list(TCajaHaber.objects.filter(id_oficina=o.pk,fecha__range=(horamin,horamax),tablaRelacional__in=['TtransferenciaExtorno','PagoTransferencia']).values('pk','fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo','id_personal'))
					else:
						#consulta = list(TCajaHaber.objects.filter(id_personal__usuario=usr).exclude(tablaRelacional='CajaCierre').values('pk','fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo'))
						data='fail'
				elif filtro=='ef':
					fecha1= datetime.datetime.strptime(F1, '%Y-%m-%d')
					fecha2= datetime.datetime.strptime(F2, '%Y-%m-%d')
					fhoramin= datetime.datetime.combine(fecha1,datetime.time.min)
					fhoramax= datetime.datetime.combine(fecha2,datetime.time.max)
					consulta = list(TCajaHaber.objects.filter(id_oficina=o.pk,fecha__range=(fhoramin,fhoramax),tablaRelacional__in=['TtransferenciaExtorno','PagoTransferencia']).values('pk','fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo','id_personal'))
				else:
					#consulta = list(TCajaHaber.objects.filter(id_personal__usuario=usr).exclude(tablaRelacional='CajaCierre').values('pk','fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo'))
					data='fail'
			else:
				#consulta = list(TCajaHaber.objects.filter(id_personal__usuario=usr).exclude(tablaRelacional='CajaCierre').values('pk','fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo'))
				F1= str(datetime.date.today())
				fecha= datetime.datetime.strptime(F1, '%Y-%m-%d')
				horamin= datetime.datetime.combine(fecha,datetime.time.min)
				horamax= datetime.datetime.combine(fecha,datetime.time.max)
				consulta = list(TCajaHaber.objects.filter(id_oficina=o.pk,fecha__range=(horamin,horamax),tablaRelacional__in=['TtransferenciaExtorno','PagoTransferencia']).values('pk','fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo','id_personal'))
			lista=[]
			for obj in consulta:
				dato={}
				if str(obj['moneda'])=='soles':
					totalS= totalS+obj['cantidadDinero']
				if str(obj['moneda'])=='dolares':
					totalD= totalD+obj['cantidadDinero']
				dato['concepto']= obj['conceptoDetalle']
				dato['st']= ''
				dato['comision']= ''
				if obj['conceptoDetalle']=='Pago transferencia':
					pt = PagoTransferencia.objects.get(idCajaHaber=obj['pk'])
					dato['concepto']= 'A: '+pt.id_solicitud_transferencia.nombre_beneficiado +' '+pt.id_solicitud_transferencia.Apellido_paterno_beneficiado+' '+pt.id_solicitud_transferencia.Apellido_materno_beneficiado+'<b style="color: #4cae4c;"> De: '+pt.id_solicitud_transferencia.idCajaDebe.id_oficina.nombre_oficina+ '</b> /<b  style="color: #d58512;">'+pt.id_solicitud_transferencia.idCajaDebe.id_personal.nombre +' '+pt.id_solicitud_transferencia.idCajaDebe.id_personal.Apellido_paterno+'<b>'
					dato['st'] = pt.id_solicitud_transferencia.idCajaDebe.nroRecibo
					dato['comision']=pt.id_solicitud_transferencia.comision
				dato['fecha'] = str(obj['fecha'].strftime("%d-%m-%Y %H:%M %p"))
				dato['tipodoc']= str(obj['tipoDocumento'])
				p= Personal.objects.get(pk=obj['id_personal'])
				dato['ope']= p.nombre + ' ' +p.Apellido_paterno +' '+p.Apellido_materno
				dato['moneda']= str(obj['moneda'])
				dato['monto']= normalizar(float(obj['cantidadDinero']))
				dato['nroR']= str(obj['nroRecibo'])
				
				lista.append(dato)
			total={}
			total['total_soles']=float(totalS)
			total['total_dolares']=float(totalD)
			lista.append(total)
			data= json.dumps(lista)
		except:
			data='fail'+ str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)
#***************************************************************************


@login_required
@permission_required('Main.add_oficina')
def consulta_material_comprado_caja_report_ajax_view(request):
	if request.is_ajax:
		filtro=request.GET.get('filtro','')
		pkc=request.GET.get('pkC')
		F1=request.GET.get('F1','')
		F2=request.GET.get('F2','')
		if filtro=='h':
			F1= str(datetime.date.today())
			filtro= 'f'
		totalD=0
		totalS=0
		UtilMC = 0
		data=''
		try:
			C= Cajas.objects.get(pk=pkc)
			usr=C.id_usuario.usuario
			if F1 != '':
				if filtro =='f':
					if F1 !='':
						fecha= datetime.datetime.strptime(F1, '%Y-%m-%d')
						horamin= datetime.datetime.combine(fecha,datetime.time.min)
						horamax= datetime.datetime.combine(fecha,datetime.time.max)
						cm= TCompraMaterial.objects.filter(idCajaMaterialDebe__id_caja=C.pk,idCajaMaterialDebe__fecha__range=(horamin,horamax)).values('pk','idCajaMaterialDebe','id_cliente','Peso_gramos','Precio_gramo','Total_pagar')
						UtilMC= cm.aggregate(Sum('Peso_gramos'))
						consulta = list(cm)
					else:
						data='fail'
				elif filtro=='ef':
					fecha1= datetime.datetime.strptime(F1, '%Y-%m-%d')
					fecha2= datetime.datetime.strptime(F2, '%Y-%m-%d')
					fhoramin= datetime.datetime.combine(fecha1,datetime.time.min)
					fhoramax= datetime.datetime.combine(fecha2,datetime.time.max)
					cm= TCompraMaterial.objects.filter(idCajaMaterialDebe__id_caja=C.pk,idCajaMaterialDebe__fecha__range=(fhoramin,fhoramax)).values('pk','idCajaMaterialDebe','id_cliente','Peso_gramos','Precio_gramo','Total_pagar')
					UtilMC= cm.aggregate(Sum('Peso_gramos'))
					consulta = list(cm)

				else:
					data='fail'
			else:
				F1= str(datetime.date.today())
				fecha= datetime.datetime.strptime(F1, '%Y-%m-%d')
				horamin= datetime.datetime.combine(fecha,datetime.time.min)
				horamax= datetime.datetime.combine(fecha,datetime.time.max)
				cm= TCompraMaterial.objects.filter(idCajaMaterialDebe__id_caja=C.pk,idCajaMaterialDebe__fecha__range=(horamin,horamax)).values('pk','idCajaMaterialDebe','id_cliente','Peso_gramos','Precio_gramo','Total_pagar')
				UtilMC= cm.aggregate(Sum('Peso_gramos'))
				consulta = list(cm)				

			lista=[]
			for obj in consulta:
				dato={}
				CMD= TCajaMaterialDebe.objects.get(pk=str(obj['idCajaMaterialDebe']))
				dato['concepto']= CMD.conceptoDetalle
				dato['fecha'] = str(CMD.fecha.strftime("%d-%m-%Y %H:%M %p"))
				dato['tipodoc']= str(CMD.tipoDocumento)
				dato['ope']= CMD.id_personal.nombre + ' ' +CMD.id_personal.Apellido_paterno +' '+CMD.id_personal.Apellido_materno
				dato['pesoGramos']= str(CMD.pesoGramos)
				dato['nroR']= str(CMD.nroRecibo)
				lista.append(dato)
			total={}
			total['total_material']= str(UtilMC['Peso_gramos__sum'])
			lista.append(total)
			data= json.dumps(lista)
		except:
			data='fail'+ str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)



@login_required
@permission_required('Main.add_oficina')
def consulta_material_vendido_caja_report_ajax_view(request):
	if request.is_ajax:
		filtro=request.GET.get('filtro','')
		pkc=request.GET.get('pkC')
		F1=request.GET.get('F1','')
		F2=request.GET.get('F2','')
		if filtro=='h':
			F1= str(datetime.date.today())
			filtro= 'f'
		totalD=0
		totalS=0
		UtilMV = 0
		data=''
		try:
			C= Cajas.objects.get(pk=pkc)
			usr=C.id_usuario.usuario
			if F1 != '':
				if filtro =='f':
					if F1 !='':
						fecha= datetime.datetime.strptime(F1, '%Y-%m-%d')
						horamin= datetime.datetime.combine(fecha,datetime.time.min)
						horamax= datetime.datetime.combine(fecha,datetime.time.max)
						vm= TVentaMaterial.objects.filter(idCajaMaterialHaber__id_caja=C.pk,idCajaMaterialHaber__fecha__range=(horamin,horamax)).values('pk','idCajaMaterialHaber','id_cliente','Peso_gramos','Precio_gramo','Total_cobrar')
						UtilMV= vm.aggregate(Sum('Peso_gramos'))
						consulta = list(vm)
					else:
						data='fail'
				elif filtro=='ef':
					fecha1= datetime.datetime.strptime(F1, '%Y-%m-%d')
					fecha2= datetime.datetime.strptime(F2, '%Y-%m-%d')
					fhoramin= datetime.datetime.combine(fecha1,datetime.time.min)
					fhoramax= datetime.datetime.combine(fecha2,datetime.time.max)
					vm= TVentaMaterial.objects.filter(idCajaMaterialHaber__id_caja=C.pk,idCajaMaterialHaber__fecha__range=(fhoramin,fhoramax)).values('pk','idCajaMaterialHaber','id_cliente','Peso_gramos','Precio_gramo','Total_cobrar')
					UtilMV= vm.aggregate(Sum('Peso_gramos'))
					consulta = list(vm)

				else:
					data='fail'
			else:
				F1= str(datetime.date.today())
				fecha= datetime.datetime.strptime(F1, '%Y-%m-%d')
				horamin= datetime.datetime.combine(fecha,datetime.time.min)
				horamax= datetime.datetime.combine(fecha,datetime.time.max)
				vm= TVentaMaterial.objects.filter(idCajaMaterialHaber__id_caja=C.pk,idCajaMaterialHaber__fecha__range=(horamin,horamax)).values('pk','idCajaMaterialHaber','id_cliente','Peso_gramos','Precio_gramo','Total_cobrar')
				UtilMV= vm.aggregate(Sum('Peso_gramos'))
				consulta = list(vm)				

			lista=[]
			for obj in consulta:
				dato={}
				VMD= TCajaMaterialHaber.objects.get(pk=str(obj['idCajaMaterialHaber']))
				dato['concepto']= VMD.conceptoDetalle
				dato['fecha'] = str(VMD.fecha.strftime("%d-%m-%Y %H:%M %p"))
				dato['tipodoc']= str(VMD.tipoDocumento)
				dato['ope']= VMD.id_personal.nombre + ' ' +VMD.id_personal.Apellido_paterno +' '+VMD.id_personal.Apellido_materno
				dato['pesoGramos']= str(VMD.pesoGramos)
				dato['nroR']= str(VMD.nroRecibo)
				lista.append(dato)
			total={}
			total['total_material']= str(UtilMV['Peso_gramos__sum'])
			lista.append(total)
			data= json.dumps(lista)
		except:
			data='fail'+ str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)



@login_required
@permission_required('Main.add_oficina')
def consulta_tras_creadas_caja_report_ajax_view(request):
	if request.is_ajax:
		filtro=request.GET.get('filtro','')
		pkc=request.GET.get('pkC')
		F1=request.GET.get('F1','')
		F2=request.GET.get('F2','')
		if filtro=='h':
			F1= str(datetime.date.today())
			filtro= 'f'
		totalD=0
		totalS=0
		UtilD = 0
		UtilS=0
		data=''
		try:
			C= Cajas.objects.get(pk=pkc)
			usr=C.id_usuario.usuario
			if F1 != '':
				if filtro =='f':
					if F1 !='':
						fecha= datetime.datetime.strptime(F1, '%Y-%m-%d')
						horamin= datetime.datetime.combine(fecha,datetime.time.min)
						horamax= datetime.datetime.combine(fecha,datetime.time.max)
						st= SolicitudTransferencia.objects.filter(idCajaDebe__id_caja=C.pk,idCajaDebe__fecha__range=(horamin,horamax)).values('pk','id_oficina','idCajaDebe','comision','id_cliente','monto_conceptos','nombre_beneficiado','Apellido_paterno_beneficiado','Apellido_materno_beneficiado')
						UtilD= st.filter(idCajaDebe__moneda='dolares').aggregate(Sum('comision'))
						UtilS= st.filter(idCajaDebe__moneda='soles').aggregate(Sum('comision'))
						consulta = list(st)
					else:
						data='fail'
				elif filtro=='ef':
					fecha1= datetime.datetime.strptime(F1, '%Y-%m-%d')
					fecha2= datetime.datetime.strptime(F2, '%Y-%m-%d')
					fhoramin= datetime.datetime.combine(fecha1,datetime.time.min)
					fhoramax= datetime.datetime.combine(fecha2,datetime.time.max)
					st=SolicitudTransferencia.objects.filter(idCajaDebe__id_caja=C.pk,idCajaDebe__fecha__range=(fhoramin,fhoramax)).values('pk','id_oficina','idCajaDebe','comision','id_cliente','monto_conceptos','nombre_beneficiado','Apellido_paterno_beneficiado','Apellido_materno_beneficiado')
					UtilD= st.filter(idCajaDebe__moneda='dolares').aggregate(Sum('comision'))
					UtilS= st.filter(idCajaDebe__moneda='soles').aggregate(Sum('comision'))
					consulta = list(st)
				else:
					data='fail'
			else:
				F1= str(datetime.date.today())
				fecha= datetime.datetime.strptime(F1, '%Y-%m-%d')
				horamin= datetime.datetime.combine(fecha,datetime.time.min)
				horamax= datetime.datetime.combine(fecha,datetime.time.max)
				st= SolicitudTransferencia.objects.filter(idCajaDebe__id_caja=C.pk,idCajaDebe__fecha__range=(horamin,horamax)).values('pk','id_oficina','idCajaDebe','comision','id_cliente','monto_conceptos','nombre_beneficiado','Apellido_paterno_beneficiado','Apellido_materno_beneficiado')
				UtilD= st.filter(idCajaDebe__moneda='dolares').aggregate(Sum('comision'))
				UtilS= st.filter(idCajaDebe__moneda='soles').aggregate(Sum('comision'))
				consulta = list(st)
			lista=[]
			tbancoD=0
			tbancoS=0
			tcapiD=0
			tcapiS=0
			for obj in consulta:
				dato={}
				CD= TCajaDebe.objects.get(pk=str(obj['idCajaDebe']))
				Cl= Cliente.objects.get(pk=str(obj['id_cliente']))
				O_aux = Oficina.objects.get(pk= obj['id_oficina'])
				#dato['concepto']= CD.conceptoDetalle +' departe de '+Cl.nombre+' '+Cl.Apellido_paterno
				dato['concepto']= 'Para: '+ obj['nombre_beneficiado'] +' '+ obj['Apellido_paterno_beneficiado']+' '+obj['Apellido_materno_beneficiado']+'<b style="color: #2e6da4;"> / '+O_aux.nombre_oficina+'</b>'
				dato['fecha'] = str(CD.fecha.strftime("%d-%m-%Y %H:%M %p"))
				dato['tipodoc']= str(CD.tipoDocumento)
				dato['ope']= CD.id_personal.nombre + ' ' +CD.id_personal.Apellido_paterno +' '+CD.id_personal.Apellido_materno
				dato['moneda']= str(CD.moneda)
				dato['monto']= normalizar(float(CD.cantidadDinero))
				dato['comision']= str(obj['comision'])
				dato['comi_banco']= str(obj['monto_conceptos'])
				dato['nroR']= str(CD.nroRecibo)
				dato['capi']= 0
				if str(CD.moneda)=='soles':
					totalS= totalS+ConvertirDecimal(CD.cantidadDinero)
					if obj['monto_conceptos'] != None and obj['monto_conceptos']!='':
						cap= float(CD.cantidadDinero) -float(obj['comision']) -float(obj['monto_conceptos'])
						dato['capi'] = cap
						tcapiS= tcapiS + cap
						tbancoS = tbancoS + float(obj['monto_conceptos'])
					else:
						cap= float(CD.cantidadDinero) -float(obj['comision'])
						dato['capi'] = cap
						tcapiS= tcapiS + cap
				if str(CD.moneda)=='dolares':
					totalD= totalD+ConvertirDecimal(CD.cantidadDinero)
					if obj['monto_conceptos'] != None and obj['monto_conceptos']!='':
						cap= float(CD.cantidadDinero) -float(obj['comision']) -float(obj['monto_conceptos'])
						dato['capi'] = cap
						tcapiD= tcapiD + cap
						tbancoD = tbancoD + float(obj['monto_conceptos'])
					else:
						cap= float(CD.cantidadDinero) -float(obj['comision'])
						dato['capi'] = cap
						tcapiD= tcapiD + cap
				lista.append(dato)
			total={}
			total['util_soles']= str(UtilS['comision__sum'])
			total['util_dolares']=str(UtilD['comision__sum'])
			total['total_soles']=float(totalS)
			total['total_dolares']=float(totalD)
			total['tcapid']=float(tcapiD)
			total['tbancod']=float(tbancoD)
			total['tcapis']=float(tcapiS)
			total['tbancos']=float(tbancoS)
			lista.append(total)
			data= json.dumps(lista)
		except:
			data='fail'+ str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)



@login_required
@permission_required('Main.add_oficina')
def consulta_tras_pagadas_caja_report_ajax_view(request):
	if request.is_ajax:
		filtro=request.GET.get('filtro','')
		pkc=request.GET.get('pkC')
		F1=request.GET.get('F1','')
		F2=request.GET.get('F2','')
		if filtro=='h':
			F1= str(datetime.date.today())
			filtro= 'f'
		totalD=0
		totalS=0
		data=''
		try:
			C= Cajas.objects.get(pk=pkc)
			usr=C.id_usuario.usuario
			if F1 != '':
				if filtro =='f':
					if F1 !='':
						fecha= datetime.datetime.strptime(F1, '%Y-%m-%d')
						horamin= datetime.datetime.combine(fecha,datetime.time.min)
						horamax= datetime.datetime.combine(fecha,datetime.time.max)
						consulta = list(TCajaHaber.objects.filter(id_caja=C.pk,fecha__range=(horamin,horamax),tablaRelacional__in=['TtransferenciaExtorno','PagoTransferencia']).values('pk','fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo'))
					else:
						#consulta = list(TCajaHaber.objects.filter(id_personal__usuario=usr).exclude(tablaRelacional='CajaCierre').values('pk','fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo'))
						data='fail'
				elif filtro=='ef':
					fecha1= datetime.datetime.strptime(F1, '%Y-%m-%d')
					fecha2= datetime.datetime.strptime(F2, '%Y-%m-%d')
					fhoramin= datetime.datetime.combine(fecha1,datetime.time.min)
					fhoramax= datetime.datetime.combine(fecha2,datetime.time.max)
					consulta = list(TCajaHaber.objects.filter(id_caja=C.pk,fecha__range=(fhoramin,fhoramax),tablaRelacional__in=['TtransferenciaExtorno','PagoTransferencia']).values('pk','fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo'))
				else:
					#consulta = list(TCajaHaber.objects.filter(id_personal__usuario=usr).exclude(tablaRelacional='CajaCierre').values('pk','fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo'))
					data='fail'
			else:
				#consulta = list(TCajaHaber.objects.filter(id_personal__usuario=usr).exclude(tablaRelacional='CajaCierre').values('pk','fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo'))
				F1= str(datetime.date.today())
				fecha= datetime.datetime.strptime(F1, '%Y-%m-%d')
				horamin= datetime.datetime.combine(fecha,datetime.time.min)
				horamax= datetime.datetime.combine(fecha,datetime.time.max)
				consulta = list(TCajaHaber.objects.filter(id_caja=C.pk,fecha__range=(horamin,horamax),tablaRelacional__in=['TtransferenciaExtorno','PagoTransferencia']).values('pk','fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo'))
			lista=[]
			comi=0
			for obj in consulta:
				dato={}
				if str(obj['moneda'])=='soles':
					totalS= totalS+obj['cantidadDinero']
				if str(obj['moneda'])=='dolares':
					totalD= totalD+obj['cantidadDinero']
				dato['concepto']= obj['conceptoDetalle']
				dato['st']= ''
				dato['comision']= ''
				dato['egreso']= ''
				dato['egreso_re']= ''
				if obj['conceptoDetalle']=='Pago transferencia':
					pt = PagoTransferencia.objects.get(idCajaHaber=obj['pk'])
					dato['concepto']= 'A: '+pt.id_solicitud_transferencia.nombre_beneficiado +' '+pt.id_solicitud_transferencia.Apellido_paterno_beneficiado+' '+pt.id_solicitud_transferencia.Apellido_materno_beneficiado+'<b style="color: #4cae4c;"> De: '+pt.id_solicitud_transferencia.idCajaDebe.id_oficina.nombre_oficina+ '</b> /<b  style="color: #d58512;">'+pt.id_solicitud_transferencia.idCajaDebe.id_personal.nombre +' '+pt.id_solicitud_transferencia.idCajaDebe.id_personal.Apellido_paterno+'<b>'
					dato['st'] = pt.id_solicitud_transferencia.idCajaDebe.nroRecibo
					dato['comision']=str(pt.id_solicitud_transferencia.comision)
					comi=comi+float(pt.id_solicitud_transferencia.comision)
					if EgresoExtraTransferencia.objects.filter(id_pago_transferencia=pt.pk).exists():
						egre = EgresoExtraTransferencia.objects.get(id_pago_transferencia=pt.pk)
						dato['egreso']=str(egre.monto)
						dato['egreso_re']= egre.idCajaHaber.nroRecibo
				dato['fecha'] = str(obj['fecha'].strftime("%d-%m-%Y %H:%M %p"))
				dato['tipodoc']= str(obj['tipoDocumento'])
				dato['moneda']= str(obj['moneda'])
				dato['monto']= normalizar(float(obj['cantidadDinero']))
				dato['nroR']= str(obj['nroRecibo'])
				lista.append(dato)
			total={}
			total['total_soles']=float(totalS)
			total['util_soles']=comi
			total['total_dolares']=float(totalD)
			lista.append(total)
			data= json.dumps(lista)
		except:
			data='fail'+ str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)


@login_required
@permission_required('Main.add_oficina')
def consulta_extraxt_caja_report_ajax_view(request):
	if request.is_ajax:
		filtro=request.GET.get('filtro','')
		pkc=request.GET.get('pkC')
		F1=request.GET.get('F1','')
		F2=request.GET.get('F2','')
		if filtro=='h':
			F1= str(datetime.date.today())
			filtro= 'f'
		totalD=0
		totalS=0
		totalDe=0
		totalSe=0
		UtilD = 0
		UtilS=0
		data=''
		try:
			C= Cajas.objects.get(pk=pkc)
			usr=C.id_usuario.usuario
			if F1 != '':
				if filtro =='f':
					if F1 !='':
						fecha= datetime.datetime.strptime(F1, '%Y-%m-%d')
						horamin= datetime.datetime.combine(fecha,datetime.time.min)
						horamax= datetime.datetime.combine(fecha,datetime.time.max)
						st= TCajaDebe.objects.filter(id_caja=C.pk,fecha__range=(horamin,horamax),tablaRelacional='SolicitudTransferencia')
						tD= st.filter(moneda='dolares').aggregate(Sum('cantidadDinero'))
						tS= st.filter(moneda='soles').aggregate(Sum('cantidadDinero'))
						consulta2= list(TCajaDebe.objects.filter(id_caja=C.pk,fecha__range=(horamin,horamax)).exclude(tablaRelacional='SolicitudTransferencia').values('pk','fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo'))
						pt=TCajaHaber.objects.filter(id_caja=C.pk,fecha__range=(horamin,horamax),tablaRelacional__in=['TtransferenciaExtorno','PagoTransferencia'])
						ptD= pt.filter(moneda='dolares').aggregate(Sum('cantidadDinero'))
						ptS= pt.filter(moneda='soles').aggregate(Sum('cantidadDinero'))
						consulta3 = list(TCajaHaber.objects.filter(id_caja=C.pk,fecha__range=(horamin,horamax)).exclude(tablaRelacional__in=['TtransferenciaExtorno','PagoTransferencia']).values('pk','fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo'))
					else:
						data='fail'
				elif filtro=='ef':
					fecha1= datetime.datetime.strptime(F1, '%Y-%m-%d')
					fecha2= datetime.datetime.strptime(F2, '%Y-%m-%d')
					fhoramin= datetime.datetime.combine(fecha1,datetime.time.min)
					fhoramax= datetime.datetime.combine(fecha2,datetime.time.max)
					st= TCajaDebe.objects.filter(id_caja=C.pk,fecha__range=(fhoramin,fhoramax),tablaRelacional='SolicitudTransferencia')
					tD= st.filter(moneda='dolares').aggregate(Sum('cantidadDinero'))
					tS= st.filter(moneda='soles').aggregate(Sum('cantidadDinero'))
					consulta2= list(TCajaDebe.objects.filter(id_caja=C.pk,fecha__range=(fhoramin,fhoramax)).exclude(tablaRelacional='SolicitudTransferencia').values('pk','fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo'))
					pt=TCajaHaber.objects.filter(id_caja=C.pk,fecha__range=(fhoramin,fhoramax),tablaRelacional__in=['TtransferenciaExtorno','PagoTransferencia'])
					ptD= pt.filter(moneda='dolares').aggregate(Sum('cantidadDinero'))
					ptS= pt.filter(moneda='soles').aggregate(Sum('cantidadDinero'))
					consulta3 = list(TCajaHaber.objects.filter(id_caja=C.pk,fecha__range=(fhoramin,fhoramax)).exclude(tablaRelacional__in=['TtransferenciaExtorno','PagoTransferencia']).values('pk','fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo'))
				else:
					data='fail'
			else:
				F1= str(datetime.date.today())
				fecha= datetime.datetime.strptime(F1, '%Y-%m-%d')
				horamin= datetime.datetime.combine(fecha,datetime.time.min)
				horamax= datetime.datetime.combine(fecha,datetime.time.max)
				st= TCajaDebe.objects.filter(id_caja=C.pk,fecha__range=(horamin,horamax),tablaRelacional='SolicitudTransferencia')
				tD= st.filter(moneda='dolares').aggregate(Sum('cantidadDinero'))
				tS= st.filter(moneda='soles').aggregate(Sum('cantidadDinero'))
				consulta2= list(TCajaDebe.objects.filter(id_caja=C.pk,fecha__range=(horamin,horamax)).exclude(tablaRelacional='SolicitudTransferencia').values('pk','fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo'))
				pt=TCajaHaber.objects.filter(id_caja=C.pk,fecha__range=(horamin,horamax),tablaRelacional__in=['TtransferenciaExtorno','PagoTransferencia'])
				ptD= pt.filter(moneda='dolares').aggregate(Sum('cantidadDinero'))
				ptS= pt.filter(moneda='soles').aggregate(Sum('cantidadDinero'))
				consulta3 = list(TCajaHaber.objects.filter(id_caja=C.pk,fecha__range=(horamin,horamax)).exclude(tablaRelacional__in=['TtransferenciaExtorno','PagoTransferencia']).values('pk','fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo'))
			lista=[]
			for obj1 in consulta2:
				CD= TCajaDebe.objects.get(pk=obj1['pk'])
				dato={}
				if str(obj1['moneda'])=='soles':
					totalS= totalS+ConvertirDecimal(obj1['cantidadDinero'])
				if str(obj1['moneda'])=='dolares':
					totalD= totalD+ConvertirDecimal(obj1['cantidadDinero'])
				dato['concepto']= obj1['conceptoDetalle']
				dato['fecha'] = str(obj1['fecha'].strftime("%d-%m-%Y %H:%M %p"))
				dato['tipodoc']= obj1['tipoDocumento']
				dato['ope']= CD.id_personal.nombre + ' ' +CD.id_personal.Apellido_paterno +' '+CD.id_personal.Apellido_materno
				dato['moneda']= obj1['moneda']
				dato['montoi']= normalizar(float(obj1['cantidadDinero']))
				dato['montoe']= ''
				dato['comision']= ''
				dato['comi_banco']= ''
				dato['capi']= ''
				dato['nroR']= obj1['nroRecibo']
				lista.append(dato)
			for obj in consulta3:
				if not EgresoExtraTransferencia.objects.filter(idCajaHaber=obj['pk']).exists():
					dato={}
					if str(obj['moneda'])=='soles':
						totalSe= totalSe+obj['cantidadDinero']
					if str(obj['moneda'])=='dolares':
						totalDe= totalDe+obj['cantidadDinero']
					dato['concepto']= obj['conceptoDetalle']
					dato['st']= ''
					dato['comision']= ''
					if obj['conceptoDetalle']=='Pago transferencia':
						pt = PagoTransferencia.objects.get(idCajaHaber=obj['pk'])
						dato['concepto']= 'A: '+pt.id_solicitud_transferencia.nombre_beneficiado +' '+pt.id_solicitud_transferencia.Apellido_paterno_beneficiado+' '+pt.id_solicitud_transferencia.Apellido_materno_beneficiado+'<b style="color: #4cae4c;"> De: '+pt.id_solicitud_transferencia.idCajaDebe.id_oficina.nombre_oficina+ '</b> /<b  style="color: #d58512;">'+pt.id_solicitud_transferencia.idCajaDebe.id_personal.nombre +' '+pt.id_solicitud_transferencia.idCajaDebe.id_personal.Apellido_paterno+'<b>'
						dato['st'] = pt.id_solicitud_transferencia.idCajaDebe.nroRecibo
						dato['comision']=pt.id_solicitud_transferencia.comision
					dato['fecha'] = str(obj['fecha'].strftime("%d-%m-%Y %H:%M %p"))
					dato['tipodoc']= str(obj['tipoDocumento'])
					dato['moneda']= str(obj['moneda'])
					dato['montoi']= ''
					dato['montoe']= normalizar(float(obj['cantidadDinero']))
					dato['nroR']= str(obj['nroRecibo'])
					lista.append(dato)
			total={}
			total['totale_soles']=float(totalSe)
			total['totale_dolares']=float(totalDe)
			total['tp_soles']=0
			if ptS['cantidadDinero__sum'] !=None:
				total['tp_soles']= normalizar(ptS['cantidadDinero__sum'])
			total['tp_dolares']=0
			if ptD['cantidadDinero__sum']!=None:
				total['tp_dolares']=normalizar(ptD['cantidadDinero__sum'])
			total['tc_soles']= 0
			if tS['cantidadDinero__sum']!= None:
				total['tc_soles']= normalizar(tS['cantidadDinero__sum'])
			total['tc_dolares']=0
			if tD['cantidadDinero__sum']!= None:
				total['tc_dolares']=normalizar(tD['cantidadDinero__sum'])
			total['totali_soles']=float(totalS)
			total['totali_dolares']=float(totalD)
			lista.append(total)
			data= json.dumps(lista)
		except:
			data='fail'+ str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)




@login_required
@transaction.atomic
def recuperarCierreVentaCliente(request):
	data=''
	if request.is_ajax:
		idCliente=request.GET.get('idCliente','')
		idCierre=request.GET.get('idCierre','')
		try:
			lista=[]
			consulta= list(BarrasVentaMaterial.objects.filter(id_cliente=idCliente,id_cierre_venta_cliente=idCierre).values('pk','fechaCierre','precio','descuento','ley','cantidadInicial','observaciones'))
			for obj in consulta:
				dato={} 
				dato['idBarra']= obj['pk']
				dato['fechaCierre']= str(obj['fechaCierre'].strftime("%Y-%m-%d %H:%M %p"))
				dato['precio']= str(obj['precio'])
				dato['descuento']= str(obj['descuento'])
				dato['ley']= str(obj['ley'])
				dato['cantidad']= str(obj['cantidadInicial'])
				dato['observaciones']= obj['observaciones']
				lista.append(dato)

			data= json.dumps(lista)
		except:
			data='fail'+str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
@transaction.atomic
def recuperarCierreVentaClienteCaja(request):
	data=''
	if request.is_ajax:
		try:
			idCliente=request.GET.get('idCliente','')
			lista=[]
			consulta=list(CierreVentaCliente.objects.filter(id_cliente=idCliente,estado='PENDIENTE').values('pk','id_cliente'))
			for obj in consulta:
				dato={}
				OC=Cliente.objects.get(pk=obj['id_cliente'])
				SCI=BarrasVentaMaterial.objects.filter(id_cierre_venta_cliente=obj['pk'],estado='PENDIENTE').aggregate(Sum('cantidadInicial'))
				STB=BarrasVentaMaterial.objects.filter(id_cierre_venta_cliente=obj['pk'],estado='PENDIENTE').aggregate(Count('pk'))
				if SCI['cantidadInicial__sum']!=None and STB['pk__count']!=0:
					dato['pk']=OC.pk
					dato['pkCierre']=obj['pk']
					dato['nombre']=OC.nombre+' '+OC.Apellido_paterno+' '+OC.Apellido_materno
					dato['total']=str(SCI['cantidadInicial__sum'])
					dato['totalBarras']=str(STB['pk__count'])
					lista.append(dato)

			data= json.dumps(lista)
		except:
			data='fail'#+str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)


@login_required
@transaction.atomic
def imprimirPagoVenta_view(request):
	data=''
	lista=[]
	if request.is_ajax:
		idPago=request.GET.get('idPago')
		try: 
			OCP=ControlPagoVenta.objects.get(pk=idPago,estado='CONFIRMADO') 
			OCXC=CuentaXCobrarCierreVentaMaterial.objects.get(pk=OCP.id_cuentaxcobrar.pk)
			OC=Cliente.objects.get(pk=OCXC.id_cliente.pk)
			OCC=CierreVentaCliente.objects.get(pk=OCXC.id_cierre_venta_cliente.pk)
			aux={}
			aux['fecha']=str(datetime.date.today())
			aux['cliente']=OC.nombre+' '+OC.Apellido_paterno+' '+OC.Apellido_materno
			aux['montoPagado']=str(OCP.montoPagado)
			aux['moneda']=str(OCP.moneda)
			aux['lote']=str(OCC.lote)
			aux['observaciones']=OCP.observaciones
			lista.append(aux)	
			data= json.dumps(lista)
		except:
			data='fail'+str(sys.exc_info()[1])
	else:
		data='fail'+str(sys.exc_info()[1])

	mimetype="application/json"
	return HttpResponse(data,mimetype)


@login_required
@transaction.atomic
def recuperarConfiguracionDecimalesVenta(request):
	data=''
	lista=[]
	if request.is_ajax:
		idCierre=request.GET.get('idCierre')
		idCliente=request.GET.get('idCliente')
		html_config='<thead><tr><td class="td-center">Peso Bruto Inicial</td><td class="td-center">Peso Bruto(Grs)</td><td class="td-center">Merma (%)</td><td class="td-center">Ley (%)</td><td class="td-center">Peso Fino (Grs)</td><td class="td-center">Peso Fino Cierre (Grs)</td><td class="td-center">Peso Fino Cierre (Oz)</td><td class="td-center">Precio US$/OZ</td><td class="td-center">Descuento Compra %</td><td class="td-center">Precio Gramo</td><td class="td-center">Precio Onza</td><td class="td-center">Retencion 1.50%</td><td class="td-center">Neto a Pagar US$</td><td class="td-center">Monto Pagado</td><td class="td-center">Saldo a Pagar US$</td></tr></thead>'

		try: 
			consulta=ConfiguracionVentaMaterial.objects.get(id_cierre_venta_cliente=idCierre,id_cliente=idCliente) 
			cadena=str(consulta.configDecimales).split('/')
			html_config=html_config+'<tr>'
			html_config=html_config+'<td><span class="editable editable-click" style="display: inline;">'+cadena[0]+'</span></td>'
			html_config=html_config+'<td><span class="editable editable-click" style="display: inline;">'+cadena[1]+'</span></td>'
			html_config=html_config+'<td><span class="editable editable-click" style="display: inline;">'+cadena[2]+'</span></td>'
			html_config=html_config+'<td><span class="editable editable-click" style="display: inline;">'+cadena[3]+'</span></td>'
			html_config=html_config+'<td><span class="editable editable-click" style="display: inline;">'+cadena[4]+'</span></td>'
			html_config=html_config+'<td><span class="editable editable-click" style="display: inline;">'+cadena[5]+'</span></td>'
			html_config=html_config+'<td><span class="editable editable-click" style="display: inline;">'+cadena[6]+'</span></td>'
			html_config=html_config+'<td><span class="editable editable-click" style="display: inline;">'+cadena[7]+'</span></td>'
			html_config=html_config+'<td><span class="editable editable-click" style="display: inline;">'+cadena[8]+'</span></td>'
			html_config=html_config+'<td><span class="editable editable-click" style="display: inline;">'+cadena[9]+'</span></td>'
			html_config=html_config+'<td><span class="editable editable-click" style="display: inline;">'+cadena[10]+'</span></td>'
			html_config=html_config+'<td><span class="editable editable-click" style="display: inline;">'+cadena[11]+'</span></td>'
			html_config=html_config+'<td><span class="editable editable-click" style="display: inline;">'+cadena[12]+'</span></td>'
			html_config=html_config+'<td><span class="editable editable-click" style="display: inline;">'+cadena[13]+'</span></td>'
			html_config=html_config+'<td><span class="editable editable-click" style="display: inline;">'+cadena[14]+'</span></td>'
			html_config=html_config+'</tr>'
			lista.append(html_config)	
			data= json.dumps(lista)
		except:
			data='fail'+str(sys.exc_info()[1])
	else:
		data='fail'+str(sys.exc_info()[1])

	mimetype="application/json"
	return HttpResponse(data,mimetype)



@login_required
@transaction.atomic
def recuperarConfiguracionDecimalesVentaGeneral(request):
	data=''
	lista=[]
	if request.is_ajax:
		idCierre=request.GET.get('idCierre')
		idCliente=request.GET.get('idCliente')
		html_config='<thead><tr><td class="td-center">Peso Bruto Inicial</td><td class="td-center">Peso Bruto(Grs)</td><td class="td-center">Merma (%)</td><td class="td-center">Ley (%)</td><td class="td-center">Peso Fino (Grs)</td><td class="td-center">Peso Fino Cierre (Grs)</td><td class="td-center">Peso Fino Cierre (Oz)</td><td class="td-center">Precio US$/OZ</td><td class="td-center">Descuento Compra %</td><td class="td-center">Precio Gramo</td><td class="td-center">Precio Onza</td><td class="td-center">Retencion 1.50%</td><td class="td-center">Neto a Pagar US$</td><td class="td-center">Monto Pagado</td><td class="td-center">Saldo a Pagar US$</td></tr></thead>'
		html_config=html_config+'<tr>'
		html_config=html_config+'<td><span class="editable editable-click" style="display: inline;">0</span></td>'
		html_config=html_config+'<td><span class="editable editable-click" style="display: inline;">0</span></td>'
		html_config=html_config+'<td><span class="editable editable-click" style="display: inline;">0</span></td>'
		html_config=html_config+'<td><span class="editable editable-click" style="display: inline;">0</span></td>'
		html_config=html_config+'<td><span class="editable editable-click" style="display: inline;">0</span></td>'
		html_config=html_config+'<td><span class="editable editable-click" style="display: inline;">0</span></td>'
		html_config=html_config+'<td><span class="editable editable-click" style="display: inline;">0</span></td>'
		html_config=html_config+'<td><span class="editable editable-click" style="display: inline;">0</span></td>'
		html_config=html_config+'<td><span class="editable editable-click" style="display: inline;">0</span></td>'
		html_config=html_config+'<td><span class="editable editable-click" style="display: inline;">0</span></td>'
		html_config=html_config+'<td><span class="editable editable-click" style="display: inline;">0</span></td>'
		html_config=html_config+'<td><span class="editable editable-click" style="display: inline;">0</span></td>'
		html_config=html_config+'<td><span class="editable editable-click" style="display: inline;">0</span></td>'
		html_config=html_config+'<td><span class="editable editable-click" style="display: inline;">0</span></td>'
		html_config=html_config+'<td><span class="editable editable-click" style="display: inline;">0</span></td>'
		html_config=html_config+'</tr>'
		lista.append(html_config)	
		data= json.dumps(lista)
	else:
		data='fail'+str(sys.exc_info()[1])

	mimetype="application/json"
	return HttpResponse(data,mimetype)



""""

@login_required
def listaSaldoRecibidos_view(request):
	try:
		usr= request.user.username
		cargo =''
		C= Cajas.objects.get(id_usuario__usuario=usr)
		if C.id_usuario.pk == C.id_oficina.id_usuario.pk:
			cargo='administrador'
	except:
		cargo =''
	return render(request,'saldoRecibido.html',{"cargo":cargo} )

@login_required
def ListadoRecepcionSaldo_view(request):#este formulario sigue la misma logica
	usr=request.user.username
	try:
		usr= request.user.username
		cargo =''
		C= Cajas.objects.get(id_usuario__usuario=usr)
		if C.id_usuario.pk == C.id_oficina.id_usuario.pk:
			cargo='administrador'
	except:
		cargo =''
	return render(request,"ListadoSAldoRecibido.html",{"cargo":cargo} )
"""

@login_required
def ListadoEnvioMaterial_view(request):
	usr=request.user.username
	try:
		usr= request.user.username
		cargo =''
		C= Cajas.objects.get(id_usuario__usuario=usr)
		if C.id_usuario.pk == C.id_oficina.id_usuario.pk:
			cargo='administrador'
	except:
		cargo =''
	return render(request,"listadoEnviosMat.html",{"cargo":cargo} )


@login_required
def ListadoRecepcionHabMat_view(request):#este formulario sigue la misma logica
	usr=request.user.username
	try:
		usr= request.user.username
		cargo =''
		C= Cajas.objects.get(id_usuario__usuario=usr)
		if C.id_usuario.pk == C.id_oficina.id_usuario.pk:
			cargo='administrador'
	except:
		cargo =''
	return render(request,"RecepcioHabiliMat.html",{"cargo":cargo} )


@login_required
def ListadoMaterialRecepcionado_view(request):#este formulario sigue la misma logica
	usr=request.user.username
	try:
		usr= request.user.username
		cargo =''
		C= Cajas.objects.get(id_usuario__usuario=usr)
		if C.id_usuario.pk == C.id_oficina.id_usuario.pk:
			cargo='administrador'
	except:
		cargo =''
	return render(request,"listadoMaterialRecepcionado.html",{"cargo":cargo} )


@login_required
def CajasPersonal_ajax_view(request):
	if request.is_ajax:
		idO = request.GET.get('idOfi')
		data=''
		lista=[]
		try:
			consulta=list(Cajas.objects.filter(id_oficina = idO,estado=True).values('pk','nombre','estado','id_usuario'))
			for obj in consulta:
				dato={}
				dato['pk']=obj['pk']
				dato['nombre']=obj['nombre']
				p= Personal.objects.get(pk=obj['id_usuario'])
				dato['op']=p.nombre.capitalize()+' '+p.Apellido_paterno.capitalize() +' '+p.Apellido_materno.capitalize()
				lista.append(dato)
			data= json.dumps(lista)
		except:
			data='error en consulta'
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
def CajasPersonalMaterial_ajax_view(request):
	if request.is_ajax:
		idO = request.GET.get('idOfi')
		data=''
		lista=[]
		try:
			consulta=list(Cajas.objects.filter(id_oficina = idO,estado=True).values('pk','nombre','estado','id_usuario'))
			for obj in consulta:
				if TConfiguracionSistema.objects.filter(id_caja=obj['pk'],id_oficina=idO,tipoSistema__in=['hibrido','material']).exists():
					dato={}
					dato['pk']=obj['pk']
					dato['nombre']=obj['nombre']
					p= Personal.objects.get(pk=obj['id_usuario'])
					dato['op']=p.nombre.capitalize()+' '+p.Apellido_paterno.capitalize() +' '+p.Apellido_materno.capitalize()
					lista.append(dato)
			data= json.dumps(lista)
		except:
			data='error en consulta'+ str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
def CajasPersonalDolar_ajax_view(request):
	if request.is_ajax:
		idO = request.GET.get('idOfi')
		data=''
		lista=[]
		try:
			consulta=list(Cajas.objects.filter(id_oficina = idO,estado=True).values('pk','nombre','estado','id_usuario'))
			for obj in consulta:
				if TConfiguracionSistema.objects.filter(id_caja=obj['pk'],id_oficina=idO,cajaDolar='si').exists():
					dato={}
					dato['pk']=obj['pk']
					dato['nombre']=obj['nombre']
					p= Personal.objects.get(pk=obj['id_usuario'])
					dato['op']=p.nombre.capitalize()+' '+p.Apellido_paterno.capitalize() +' '+p.Apellido_materno.capitalize()
					lista.append(dato)
			data= json.dumps(lista)
		except:
			data='error en consulta'+ str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
def listaEnviosMat_total_ajax_view(request):
	if request.is_ajax:
		usr = request.user.username
		data=''
		lista=[]
		try:
			C= Cajas.objects.get(id_usuario__usuario=usr)
			consulta = list(EnvioMaterialCajaCaja.objects.filter(idCajaMaterialHaber__id_caja= C.pk).values('pk','idCajaMaterialHaber','id_CajaDestino','fecha','Peso_gramos','observaciones','conceptoDetalle','estado'))
			for obj in consulta:
				dato={}
				dato['pk']=obj['pk']
				haber= TCajaMaterialHaber.objects.get(pk=obj['idCajaMaterialHaber'])
				dato['fecha']=str(obj['fecha'].strftime("%d-%m-%Y %H:%M"))
				dato['nroR']=haber.nroRecibo
				dato['td']=haber.tipoDocumento
				dato['concepto']=obj['conceptoDetalle']
				dato['peso']=str(obj['Peso_gramos'])
				destino = Cajas.objects.get(pk=obj['id_CajaDestino'])
				dato['destino'] = '<span style="color:blue;">'+destino.id_oficina.nombre_oficina+'</span> '+destino.nombre
				dato['obs']=obj['observaciones']
				dato['tabla']= 'enviocaja'
				lista.append(dato)
			data= json.dumps(lista)
		except:
			data='error en consulta'+ str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)


@login_required
def listaRecibidoConformeMat_total_ajax_view(request):
	if request.is_ajax:
		usr = request.user.username
		data=''
		lista=[]
		try:
			C= Cajas.objects.get(id_usuario__usuario=usr)
			consulta = list(RecepcionMaterialCajaCaja.objects.filter(idCajaMaterialDebe__id_caja= C.pk,estado='recibido').values('pk','fecha','idCajaMaterialDebe','Peso_gramos','id_EnvioCaja','observaciones','conceptoDetalle'))
			for obj in consulta:
				dato={}
				dato['pk']=obj['pk']
				dato['fecha']=str(obj['fecha'].strftime("%d-%m-%Y %H:%M"))
				dato['concepto']=obj['conceptoDetalle']
				dato['peso']=str(obj['Peso_gramos'])
				dato['obs']=obj['observaciones']
				dato['tabla']= 'enviocaja'
				debe = TCajaMaterialDebe.objects.get(pk=obj['idCajaMaterialDebe'])
				dato['nroR'] = debe.nroRecibo
				dato['td'] = debe.tipoDocumento
				envio = EnvioMaterialCajaCaja.objects.get(pk= obj['id_EnvioCaja'])
				dato['origen'] = '<span style="color:blue;">'+envio.idCajaMaterialHaber.id_oficina.nombre_oficina+'</span> '+envio.idCajaMaterialHaber.id_caja.nombre+' <span style="color:#3c763d;">'+envio.idCajaMaterialHaber.id_personal.nombre+' '+envio.idCajaMaterialHaber.id_personal.Apellido_paterno+'</span>'
				dato['fechae'] = (envio.fecha.strftime("%d-%m-%Y %H:%M"))
				lista.append(dato)
			data= json.dumps(lista)
		except:
			data='error en consulta'+ str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)


@login_required
@permission_required('Main.add_oficina')
def configuracionGeneralCajas_view(request):
	return render(request,"configGeneralCajas.html" )


@login_required
@permission_required('Main.add_oficina')
def CajasConfigSistema_ajax_view(request):
	if request.is_ajax:
		idO = request.GET.get('idOfi')
		data=''
		lista=[]
		try:
			consulta1 = list(Cajas.objects.filter(id_oficina=idO,estado=True).values('pk','nombre','estado','id_oficina','id_usuario'))
			for obj in consulta1:
				IdP= str(obj['id_usuario'])
				Per= Personal.objects.get(pk=IdP)
				dato={}
				dato['c_id']=obj['pk']
				dato['c_nombre']=obj['nombre']
				dato['p_nombre']=Per.nombre
				dato['p_ap']=Per.Apellido_paterno
				dato['p_am']=Per.Apellido_materno
				dato['cd']=''
				dato['ts']=''
				dato['te']=''
				dato['cota']=''
				if TConfiguracionSistema.objects.filter(id_oficina=idO,id_caja=obj['pk']).exists():
					cs = TConfiguracionSistema.objects.get(id_oficina=idO,id_caja=obj['pk'])
					dato['ts']=cs.tipoSistema
					dato['cd']=cs.cajaDolar
					dato['te']=cs.conf3
					dato['cota']=cs.compra_tactil
				lista.append(dato)
			data= json.dumps(lista)
		except:
			data='fail'+str(sys.exc_info()[1])
	else:
		data='fail'+str(sys.exc_info()[1])
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
@permission_required('Main.add_oficina')
def CajasPersonalConfig_ajax_view(request):
	if request.is_ajax:
		idO = request.GET.get('idOfi')
		data=''
		lista=[]
		try:
			consulta1 = list(Cajas.objects.filter(id_oficina=idO,estado=True).values('pk','nombre','estado','id_oficina','id_usuario'))
			for obj in consulta1:
				#('pk','id_oficina','cierreObligatorio','Prj_comicion_queda','aux1','aux2','aux3'))
				IdP= str(obj['id_usuario'])
				Per= Personal.objects.get(pk=IdP)
				#consulta3=list(SaldoDisponibleCajas.objects.filter(id_caja=IdC).values('saldo_soles','saldo_dolares'))
				dato={}
				dato['c_id']=obj['pk']
				dato['c_nombre']=obj['nombre']
				dato['c_estado']=obj['estado']
				dato['p_nombre']=Per.nombre
				dato['p_ap']=Per.Apellido_paterno
				dato['p_am']=Per.Apellido_materno
				dato['transGl']='no'
				dato['transCGl']='no'
				dato['rta']='no'
				dato['mt']=''
				dato['mt_st']=''
				dato['cm']=''
				dato['pkConfigExtra']=''
				dato['pkConfigPermisos']=''
				dato['ocm']=''
				dato['vs']=''
				dato['as']=''
				dato['et']=''
				dato['cf']=''
				dato['vso']=''
				dato['cajaI']=''
				dato['eg']=''
				dato['egsub']=''
				dato['saldoalt']=''
				dato['ptsindni']=''
				dato['comiCambioD']=''
				dato['filtrodesdeReinicio']=''
				dato['egreso_pt']=''
				dato['egreso_hb']=''
				dato['verinterre']=''

				if ConfiguracionExtra_caja.objects.filter(id_oficina=idO,id_caja=obj['pk']).exists():
					OCE = ConfiguracionExtra_caja.objects.get(id_oficina=idO,id_caja=obj['pk'])
					#dato['transGl']=OCE.Trans_global
					dato['mt']=float(OCE.monto_tope)
					dato['mt_st']=float(OCE.monto_tope_st)
					dato['cm']=float(OCE.comision_minima)
					dato['pkConfigExtra']=OCE.pk
					if OCE.aux5!=None and OCE.aux5!='':
						dato['transCGl']=OCE.aux5
					else:
						dato['transCGl']='no'
					dato['ocm']=float(OCE.otros_conceptos_minimo)
					dato['et']=OCE.extorno_total
					dato['cf']=OCE.cierreObligatorio
					dato['vs']=OCE.ver_saldo
					dato['as']=OCE.aux4
					dato['vso']=OCE.aux1
					dato['eg']=OCE.aux3
					dato['egsub']=OCE.aux7
					dato['ptsindni']=OCE.aux8
					dato['comiCambioD']=str(OCE.cambioO)
					dato['filtrodesdeReinicio']=OCE.aux9
					dato['saldoalt']=OCE.aux6
					dato['egreso_pt']=OCE.aux10
					dato['egreso_hb']=OCE.egreso_hab
					dato['verinterre']=OCE.aux11
						
				if conf_permisos_Cajas.objects.filter(id_caja=obj['pk']).exists():
					OPC = conf_permisos_Cajas.objects.get(id_caja=obj['pk'])
					dato['pkConfigPermisos']=OPC.pk
					dato['rta']=OPC.aux2
					dato['transGl']=OPC.Trans_global
					dato['prST']=OPC.aux3

				if caja_independiente.objects.filter(id_caja=obj['pk']).exists():
					ci = caja_independiente.objects.get(id_caja=obj['pk'])
					dato['cajaI']=ci.independiente
				lista.append(dato)
			data= json.dumps(lista)
		except:
			data='fail'+str(sys.exc_info()[1])
	else:
		data='fail'+str(sys.exc_info()[1])
	mimetype="application/json"
	return HttpResponse(data,mimetype)


@login_required
@permission_required('Main.add_oficina')
def ver_oficinas_TransfGlobal_ajax_view(request):
	pkConf = request.GET.get('pkConf','')
	if request.is_ajax:
		lista=[]
		try:
			ofic=list(Oficina.objects.exclude(nombre_oficina="Gerencia").values('pk','nombre_oficina','id_usuario'))
			for obj in ofic:
				dato={}
				dato['pk']=obj['pk']
				dato['of']=obj['nombre_oficina']
				dato['trG']= ''
				if conf_oficinas_para_TransGlobal.objects.filter(id_conf=pkConf,id_oficina=obj['pk'],aux1='si').exists():
					dato['trG']= 'si'
				lista.append(dato)
			data= json.dumps(lista)	
		except:
			data=str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)



@login_required
@permission_required('Main.add_oficina')
def Autorizaciones_ret_st_view(request):
	return render(request,'ListadoAut.html' )

@login_required
def Autorizaciones_ret_st_personal_view(request):
	return render(request,'AutorizarRetiro.html' )

@login_required
def autorizaciones_ajax_view(request):#consulta autorizaciones Retiro Transferencia
	if request.is_ajax:
		try:
			consulta=list(Sol_Aut_Ret_Transferencias.objects.all().order_by('-pk').values('pk','fecha','id_st','codigo_aut','estado','id_user_solicitante','usuario_autorizador','id_usuario_aut','fecha_aut','fecha_ret','observaciones'))
			lista=[]
			for obj in consulta:
				dato={}
				dato['pk']=obj['pk']
				dato['fecha']=str(obj['fecha'].strftime("%d-%m-%Y %H:%M"))
				dato['id_st']= obj['id_st']
				dato['cod']=obj['codigo_aut']
				dato['estado']=obj['estado']
				per= Personal.objects.get(pk=obj['id_user_solicitante'])
				dato['soli']= per.nombre.capitalize() +' '+ per.Apellido_paterno.capitalize()+' '+per.Apellido_materno.capitalize()
				fa=""
				if obj['fecha_aut'] !=None:
					fa= str(obj['fecha_aut'].strftime("%d-%m-%Y %H:%M"))
				dato['fecha_aut']=fa
				fr=""
				if obj['fecha_ret'] !=None:
					fr= str(obj['fecha_ret'].strftime("%d-%m-%Y %H:%M"))
				dato['fecha_ret']=fr
				dato['obs']=obj['observaciones']
				dato['user_aut']=''
				dato['cargo_aut']=''
				if obj['usuario_autorizador']=='Gerente':
					g= Gerente.objects.get(pk=obj['id_usuario_aut'])
					dato['user_aut']=g.nombre.capitalize() +' '+g.Apellido_paterno.capitalize()+' '+g.Apellido_materno.capitalize()
					dato['cargo_aut']='Gerente'
				elif obj['usuario_autorizador']=='Personal':
					p= Personal.objects.get(pk=obj['id_usuario_aut'])
					dato['user_aut']=p.nombre.capitalize() +' '+p.Apellido_paterno.capitalize()+' '+p.Apellido_materno.capitalize()
					dato['cargo_aut']='Personal'

				lista.append(dato)
			data= json.dumps(lista)
		except:
			data='Error en consulta'
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)


@login_required
def oficinas_tg_ajax_view(request):
	if request.is_ajax:
		usr= request.user.username
		data=''
		lista=[]
		try:
			consulta=list(Oficina.objects.exclude(estado_oficina=False).exclude(nombre_oficina="Gerencia").values('pk','nombre_oficina','estado_oficina'))
			for obj in consulta:
				dato={}
				dato['pk']= obj['pk']
				dato['nombre_oficina']= obj['nombre_oficina']
				if Oficina_externa.objects.filter(id_oficina_imperial=obj['pk']).exists():
					dato['es_ofi_money']= 'si'
				else:
					dato['es_ofi_money']= 'no'
				lista.append(dato)
			data= json.dumps(lista)
		except:
			data='error en consulta'
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)


@login_required
def oficinas_tg_ori_ajax_view(request):
	if request.is_ajax:
		usr= request.user.username
		data=''
		lista=[]
		try:
			C= Cajas.objects.get(id_usuario__usuario=usr)
			conf = conf_permisos_Cajas.objects.get(id_caja=C.pk,Trans_global='si')
			lo=[]
			consu= conf_oficinas_para_TransGlobal.objects.filter(id_conf=conf.pk,aux1="si").values('id_oficina')
			for o1 in consu:
				lo.append(o1['id_oficina'])
			if len(lo)>0:
				consulta=list(Oficina.objects.filter(pk__in=lo).exclude(estado_oficina=False).exclude(nombre_oficina="Gerencia").values('pk','nombre_oficina','estado_oficina'))
				for obj in consulta:
					if TConfiguracionSistema.objects.filter(id_oficina=obj['pk'],conf2='externa').exists():
						tconf= TConfiguracionSistema.objects.filter(id_oficina=obj['pk'],conf2='externa').values('pk')
						bases= list(Base_Ext.objects.filter(id_confSis=tconf[0]['pk'],estado_base=True).values('pk','nombre_base'))
						for b in bases:
							dato={}
							dato['pk']= 'b'+str(b['pk'])
							dato['nombre_oficina']= b['nombre_base']
							dato['bx']='si'
							lista.append(dato)
					else:
						dato={}
						dato['pk']= obj['pk']
						dato['nombre_oficina']= obj['nombre_oficina']
						lista.append(dato)
			data= json.dumps(lista)
		except:
			data='error en consulta'
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)


@login_required
def Transfe_Recibidas_global_view(request):
	try:
		usr= request.user.username
		cargo =''
		C= Cajas.objects.get(id_usuario__usuario=usr)
		if C.id_usuario.pk == C.id_oficina.id_usuario.pk:
			cargo='administrador'
	except:
		cargo =''
	return render(request,'TransRecibidasGlobales.html',{"cargo":cargo} )



@login_required
def listaTransfereciasRecibidas_globaFiltro_ajax_view(request):
	if request.is_ajax:
		pag=request.GET.get('pg','')
		valor=request.GET.get('filtro')
		pg= 1
		if pag !='':
			pg= int(pag)
		desde= (pg-1)*20
		hasta= pg*20
		usr= request.user.username
		try:
			lista=[]
			if valor != None and valor != "":
				C = Cajas.objects.get(id_usuario__usuario=usr)
				fil= QuitarEspacios(valor).split(' ')
				no=fil[0]
				am=''
				ap=''
				if len(fil)>1:
					ap=fil[1]
					if len(fil)>2:
						am=fil[2]
				conf = conf_permisos_Cajas.objects.get(id_caja=C.pk,Trans_global='si')
				lo=[]
				consu= conf_oficinas_para_TransGlobal.objects.filter(id_conf=conf.pk,aux1="si").values('id_oficina')
				for o1 in consu:
					lo.append(o1['id_oficina'])
				if len(lo)>0:
					consulta1=[]
					if len(fil)>1:
						consulta1= list(SolicitudTransferencia.objects.filter(Q(id_oficina__in=lo,nombre_beneficiado__icontains=no,Apellido_paterno_beneficiado__icontains=ap,Apellido_materno_beneficiado__icontains=am) | Q(id_oficina__in=lo,id_cliente__nombre__icontains=no,id_cliente__Apellido_paterno__icontains=ap,id_cliente__Apellido_materno__icontains=am)).order_by('-pk')[desde:hasta].values('pk','idCajaDebe','id_cliente','id_oficina','comision','nombre_beneficiado','Apellido_paterno_beneficiado','Apellido_materno_beneficiado','dni_beneficiado','observaciones','monto_conceptos','otros_conceptos','dniMenor','nroCta'))
					else:
						consulta1= list(SolicitudTransferencia.objects.filter(Q(id_oficina__in=lo,nombre_beneficiado__icontains=no) | Q(id_oficina__in=lo,Apellido_paterno_beneficiado__icontains=no) |Q(id_oficina__in=lo,Apellido_materno_beneficiado__icontains=no) | Q(id_oficina__in=lo,id_cliente__nombre__icontains=no) | Q(id_oficina__in=lo,id_cliente__Apellido_paterno__icontains=no) | Q(id_oficina__in=lo,id_cliente__Apellido_materno__icontains=no)).order_by('-pk')[desde:hasta].values('pk','idCajaDebe','id_cliente','id_oficina','comision','nombre_beneficiado','Apellido_paterno_beneficiado','Apellido_materno_beneficiado','dni_beneficiado','observaciones','monto_conceptos','otros_conceptos','dniMenor','nroCta'))
					for obj in consulta1:
						dato={}
						idCajaD= str(obj['idCajaDebe'])
						CajaDebe= TCajaDebe.objects.get(pk=idCajaD)
						idCli= str(obj['id_cliente'])
						idSt= str(obj['pk'])
						sq= PagoTransferencia.objects.filter(id_solicitud_transferencia=idSt,idCajaHaber__id_caja=C.pk)
						consulta3=list(Cliente.objects.filter(pk=idCli).values('nombre','Apellido_paterno','Apellido_materno','dni'))
						cantidaEnvio= ConvertirDecimal(str(CajaDebe.cantidadDinero))-ConvertirDecimal(str(obj['comision']))-ConvertirDecimal(str(obj['monto_conceptos']))
						dato['fecha']=str(CajaDebe.fecha.strftime("%d-%m-%Y %H:%M"))
						dato['nroRecibo']=CajaDebe.nroRecibo
						dato['estado']= CajaDebe.estadoTransaccion
						dato['monto']=normalizar(cantidaEnvio)
						dato['id_trans']=obj['pk']
						od= Oficina.objects.get(pk=obj['id_oficina'])
						dato['oficina_des']= od.nombre_oficina
						dato['oficina_ori']= CajaDebe.id_oficina.nombre_oficina
						if ST_BaseExterna.objects.filter(id_transferencia=obj['pk']).exists():
							stbe= ST_BaseExterna.objects.get(id_transferencia=obj['pk'])
							if stbe.id_base_ori!= None and stbe.id_base_ori!='':
								be1= Base_Ext.objects.get(pk=stbe.id_base_ori)
								dato['oficina_ori']= be1.nombre_base
							if stbe.id_base_des!= None and stbe.id_base_des!='':
								be2= Base_Ext.objects.get(pk=stbe.id_base_des)
								dato['oficina_des']= be2.nombre_base
						dato['op_emisor']= CajaDebe.id_personal.nombre +' '+CajaDebe.id_personal.Apellido_paterno +' '+CajaDebe.id_personal.Apellido_materno
						dato['comicion']= str(obj['comision'])
						dato['moneda']= CajaDebe.moneda
						dato['nombre_bnf']=obj['nombre_beneficiado']
						dato['paterno_bnf']=obj['Apellido_paterno_beneficiado']
						dato['materno_bnf']= obj['Apellido_materno_beneficiado']
						dato['dni_bnf']=obj['dni_beneficiado']
						if obj['dniMenor']!=None and obj['dniMenor']!='':
							dato['dniMenor']=obj['dniMenor']
						else:
							dato['dniMenor']='no'

						if obj['nroCta']!=None:
							if str(obj['nroCta']).strip()!='':
								dato['nroCta']=str(obj['nroCta']).strip()
							else:
								dato['nroCta']=str(-1)
						else:
							dato['nroCta']=str(-1)	
						dato['obs']=obj['observaciones']
						dato['nombre_rmt']=consulta3[0]['nombre']
						dato['paterno_rmt']=consulta3[0]['Apellido_paterno']
						dato['materno_rmt']=consulta3[0]['Apellido_materno']
						dato['dni_rmt']=consulta3[0]['dni']
						dato['monto_conceptos']= str(obj['monto_conceptos'])
						dato['Ule']=''
						leid= CajaDebe.observaciones2.split('-')
						if len(leid) ==2:
							p=Personal.objects.get(pk=leid[1])
							dato['Ule']=p.nombre +' '+p.Apellido_paterno
						dato['estGlo']=leid[0]
						dato['dtd']=CajaDebe.aux1
						dato['otros_conceptos']= obj['otros_conceptos']
						dato['pago_forzado']= ''
						if sq.count() ==0:
							dato['pago_forzado']= 'si'
						lista.append(dato)
				data= json.dumps(lista)
			else:
				data= json.dumps(lista)
		except:
			data='fail'
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)


@login_required
def listaTransfereciasRecibidas_globales_ajax_view(request):
	if request.is_ajax:
		usr= request.user.username
		pag=request.GET.get('pg','')
		pg= 1
		if pag !='':
			pg= int(pag)
		desde= (pg-1)*20
		hasta= pg*20
		usr= request.user.username
		try:
			lista=[]
			C = Cajas.objects.get(id_usuario__usuario=usr)
			conf = conf_permisos_Cajas.objects.get(id_caja=C.pk,Trans_global='si')
			lo=[]
			consu= conf_oficinas_para_TransGlobal.objects.filter(id_conf=conf.pk,aux1="si").values('id_oficina')
			for o1 in consu:
				lo.append(o1['id_oficina'])
			if len(lo)>0:
				consulta1= list(SolicitudTransferencia.objects.filter(id_oficina__in=lo).order_by('-pk')[desde:hasta].values('pk','idCajaDebe','id_cliente','id_oficina','comision','nombre_beneficiado','Apellido_paterno_beneficiado','Apellido_materno_beneficiado','dni_beneficiado','observaciones','monto_conceptos','otros_conceptos','dniMenor','nroCta'))
				for obj in consulta1:
					dato={}
					idCajaD= str(obj['idCajaDebe'])
					CajaDebe= TCajaDebe.objects.get(pk=idCajaD)
					idCli= str(obj['id_cliente'])
					idSt= str(obj['pk'])
					sq= PagoTransferencia.objects.filter(id_solicitud_transferencia=idSt,idCajaHaber__id_caja=C.pk)
					consulta3=list(Cliente.objects.filter(pk=idCli).values('nombre','Apellido_paterno','Apellido_materno','dni'))
					cantidaEnvio= ConvertirDecimal(str(CajaDebe.cantidadDinero))-ConvertirDecimal(str(obj['comision']))-ConvertirDecimal(str(obj['monto_conceptos']))
					dato['fecha']=str(CajaDebe.fecha.strftime("%d-%m-%Y %H:%M"))
					dato['nroRecibo']=CajaDebe.nroRecibo
					dato['estado']= CajaDebe.estadoTransaccion
					dato['monto']=normalizar(cantidaEnvio)
					dato['id_trans']=obj['pk']
					od= Oficina.objects.get(pk=obj['id_oficina'])
					dato['oficina_des']= od.nombre_oficina
					dato['oficina_ori']= CajaDebe.id_oficina.nombre_oficina
					if ST_BaseExterna.objects.filter(id_transferencia=obj['pk']).exists():
						stbe= ST_BaseExterna.objects.get(id_transferencia=obj['pk'])
						if stbe.id_base_ori!= None and stbe.id_base_ori!='':
							be1= Base_Ext.objects.get(pk=stbe.id_base_ori)
							dato['oficina_ori']= be1.nombre_base
						if stbe.id_base_des!= None and stbe.id_base_des!='':
							be2= Base_Ext.objects.get(pk=stbe.id_base_des)
							dato['oficina_des']= be2.nombre_base
					dato['op_emisor']= CajaDebe.id_personal.nombre +' '+CajaDebe.id_personal.Apellido_paterno +' '+CajaDebe.id_personal.Apellido_materno
					dato['comicion']= str(obj['comision'])
					dato['moneda']= CajaDebe.moneda
					dato['nombre_bnf']=obj['nombre_beneficiado']
					dato['paterno_bnf']=obj['Apellido_paterno_beneficiado']
					dato['materno_bnf']= obj['Apellido_materno_beneficiado']
					dato['dni_bnf']=obj['dni_beneficiado']
					if obj['dniMenor']!=None and obj['dniMenor']!='':
						dato['dniMenor']=obj['dniMenor']
					else:
						dato['dniMenor']='no'

					if obj['nroCta']!=None:
						if str(obj['nroCta']).strip()!='':
							dato['nroCta']=str(obj['nroCta']).strip()
						else:
							dato['nroCta']=str(-1)
					else:
						dato['nroCta']=str(-1)	
					dato['obs']=obj['observaciones']
					dato['nombre_rmt']=consulta3[0]['nombre']
					dato['paterno_rmt']=consulta3[0]['Apellido_paterno']
					dato['materno_rmt']=consulta3[0]['Apellido_materno']
					dato['dni_rmt']=consulta3[0]['dni']
					dato['monto_conceptos']= str(obj['monto_conceptos'])
					dato['Ule']=''
					leid= CajaDebe.observaciones2.split('-')
					if len(leid) ==2:
						p=Personal.objects.get(pk=leid[1])
						dato['Ule']=p.nombre +' '+p.Apellido_paterno
					dato['estGlo']=leid[0]
					dato['dtd']=CajaDebe.aux1
					dato['otros_conceptos']= obj['otros_conceptos']
					dato['pago_forzado']= ''
					if sq.count() ==0:
						dato['pago_forzado']= 'si'

					lista.append(dato)
			data= json.dumps(lista)
		except:
			data='fail'
	else:
		data='fail'+str(sys.exc_info()[1])
	mimetype="application/json"
	return HttpResponse(data,mimetype)


@login_required
def ListaTransfereciasRecibidasActiva_Glob_ajax_view(request):
	if request.is_ajax:
		usr= request.user.username
		pag=request.GET.get('pg','')
		pg= 1
		if pag !='':
			pg= int(pag)
		desde= (pg-1)*20
		hasta= pg*20
		usr= request.user.username
		try:
			lista=[]
			C = Cajas.objects.get(id_usuario__usuario=usr)
			conf = conf_permisos_Cajas.objects.get(id_caja=C.pk,Trans_global='si')
			lo=[]
			consu= conf_oficinas_para_TransGlobal.objects.filter(id_conf=conf.pk,aux1="si").values('id_oficina')
			for o1 in consu:
				lo.append(o1['id_oficina'])
			if len(lo)>0:
				consulta1= list(SolicitudTransferencia.objects.filter(id_oficina__in=lo,idCajaDebe__estadoTransaccion='activo').order_by('-pk')[desde:hasta].values('pk','idCajaDebe','id_cliente','id_oficina','comision','nombre_beneficiado','Apellido_paterno_beneficiado','Apellido_materno_beneficiado','dni_beneficiado','observaciones','monto_conceptos','otros_conceptos','dniMenor','nroCta'))
				for obj in consulta1:
					dato={}
					idCajaD= str(obj['idCajaDebe'])
					CajaDebe= TCajaDebe.objects.get(pk=idCajaD)
					idCli= str(obj['id_cliente'])
					idSt= str(obj['pk'])
					sq= PagoTransferencia.objects.filter(id_solicitud_transferencia=idSt,idCajaHaber__id_caja=C.pk)
					consulta3=list(Cliente.objects.filter(pk=idCli).values('nombre','Apellido_paterno','Apellido_materno','dni'))
					cantidaEnvio= ConvertirDecimal(str(CajaDebe.cantidadDinero))-ConvertirDecimal(str(obj['comision']))-ConvertirDecimal(str(obj['monto_conceptos']))
					dato['fecha']=str(CajaDebe.fecha.strftime("%d-%m-%Y %H:%M"))
					dato['nroRecibo']=CajaDebe.nroRecibo
					dato['estado']= CajaDebe.estadoTransaccion
					dato['monto']=normalizar(cantidaEnvio)
					dato['id_trans']=obj['pk']
					od= Oficina.objects.get(pk=obj['id_oficina'])
					dato['oficina_des']= od.nombre_oficina
					dato['oficina_ori']= CajaDebe.id_oficina.nombre_oficina
					if ST_BaseExterna.objects.filter(id_transferencia=obj['pk']).exists():
						stbe= ST_BaseExterna.objects.get(id_transferencia=obj['pk'])
						if stbe.id_base_ori!= None and stbe.id_base_ori!='':
							be1= Base_Ext.objects.get(pk=stbe.id_base_ori)
							dato['oficina_ori']= be1.nombre_base
						if stbe.id_base_des!= None and stbe.id_base_des!='':
							be2= Base_Ext.objects.get(pk=stbe.id_base_des)
							dato['oficina_des']= be2.nombre_base
					dato['op_emisor']= CajaDebe.id_personal.nombre +' '+CajaDebe.id_personal.Apellido_paterno +' '+CajaDebe.id_personal.Apellido_materno
					dato['comicion']= str(obj['comision'])
					dato['moneda']= CajaDebe.moneda
					dato['nombre_bnf']=obj['nombre_beneficiado']
					dato['paterno_bnf']=obj['Apellido_paterno_beneficiado']
					dato['materno_bnf']= obj['Apellido_materno_beneficiado']
					dato['dni_bnf']=obj['dni_beneficiado']
					dato['obs']=obj['observaciones']
					dato['nombre_rmt']=consulta3[0]['nombre']
					dato['paterno_rmt']=consulta3[0]['Apellido_paterno']
					dato['materno_rmt']=consulta3[0]['Apellido_materno']
					dato['dni_rmt']=consulta3[0]['dni']
					if obj['dniMenor']!=None and obj['dniMenor']!='':
						dato['dniMenor']=obj['dniMenor']
					else:
						dato['dniMenor']='no'

					if obj['nroCta']!=None:
						if str(obj['nroCta']).strip()!='':
							dato['nroCta']=str(obj['nroCta']).strip()
						else:
							dato['nroCta']=str(-1)
					else:
						dato['nroCta']=str(-1)	
					dato['monto_conceptos']= str(obj['monto_conceptos'])
					dato['Ule']=''
					leid= CajaDebe.observaciones2.split('-')
					if len(leid) ==2:
						p=Personal.objects.get(pk=leid[1])
						dato['Ule']=p.nombre +' '+p.Apellido_paterno
					dato['estGlo']=leid[0]
					dato['dtd']=CajaDebe.aux1
					dato['otros_conceptos']= obj['otros_conceptos']
					dato['pago_forzado']= ''
					if sq.count() ==0:
						dato['pago_forzado']= 'si'

					lista.append(dato)
			data= json.dumps(lista)
		except:
			data='fail'
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
def ListaBalances_ajax_view(request):
	usr= request.user.username
	if request.is_ajax:
		data=''
		lista=[]
		try:
			C = Cajas.objects.get(id_usuario__usuario=usr)
			consulta1 = list(BalanceDolar.objects.filter(id_caja=C.pk).values('pk','fecha','id_debeDolar','id_haberDolar','id_debeDolarIni','id_haberDolarIni','saldo_debe','id_caja','id_personal','prom_TC_debe','prom_TC_haber'))
			for obj in consulta1:
				v= HaberDolar.objects.get(pk=obj['id_haberDolar'])
				dato={}
				dato['pk']= obj['pk']
				dato['fecha']= str(obj['fecha'].strftime("%d-%m-%Y %H:%M"))
				dato['id_debe']=obj['id_debeDolar']
				dato['id_haber']=obj['id_haberDolar']
				dato['id_debeIni']=obj['id_debeDolarIni']
				dato['id_haberIni']=obj['id_haberDolarIni']
				dato['sd']=str(obj['saldo_debe'])
				dato['pd']=str(obj['prom_TC_debe'])
				dato['ph']=str(obj['prom_TC_haber'])
				dato['monto']=str(v.monto)
				dato['es']= 'no'
				if float(obj['saldo_debe'])>0:
					dato['es']= 'si'
				lista.append(dato)
			data= json.dumps(lista)
		except:
			data='fail'+str(sys.exc_info()[1])
	else:
		data='fail'+str(sys.exc_info()[1])
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
def Balances_dolar_tem_view(request):
	try:
		usr= request.user.username
		cargo =''
		C= Cajas.objects.get(id_usuario__usuario=usr)
		if C.id_usuario.pk == C.id_oficina.id_usuario.pk:
			cargo='administrador'
	except:
		cargo =''
	return render(request,'BalanceDolar.html',{"cargo":cargo} )

#************************* SERVICIOS DEKSTOP *******************************
def listaTransfereciasRecibidasDesktop_activas_view(request):
	if request.is_ajax:
		idCaja=request.GET.get('idCaja')
		mac=request.GET.get('mac')
		dato={}
		error=''
		exito=''
		try:
			if idCaja != None and idCaja != "":
				C = Cajas.objects.get(pk=idCaja)
				if Usuario_Desktop.objects.filter(id_usuario=C.id_usuario.pk,mac=mac).count()==1:
					obj=[]
					if Transferencias_recibidas_Desktop.objects.filter(id_solicitud_transferencia__id_oficina=C.id_oficina,aux2__icontains='.'+str(idCaja)+'.').exists():
						Ust=Transferencias_recibidas_Desktop.objects.filter(id_solicitud_transferencia__id_oficina=C.id_oficina,aux2__icontains='.'+str(idCaja)+'.').latest("pk")
						obj=list(SolicitudTransferencia.objects.filter(pk__gt=Ust.id_solicitud_transferencia.pk,id_oficina=C.id_oficina,idCajaDebe__estadoTransaccion='activo')[:1].values('pk','idCajaDebe','id_cliente','id_oficina','comision','nombre_beneficiado','Apellido_paterno_beneficiado','Apellido_materno_beneficiado','dni_beneficiado','observaciones','monto_conceptos','otros_conceptos'))
					else:
						obj=list(SolicitudTransferencia.objects.filter(id_oficina=C.id_oficina,idCajaDebe__estadoTransaccion='activo')[:1].values('pk','idCajaDebe','id_cliente','id_oficina','comision','nombre_beneficiado','Apellido_paterno_beneficiado','Apellido_materno_beneficiado','dni_beneficiado','observaciones','monto_conceptos','otros_conceptos'))
					if len(obj)>0:
						idCajaD= str(obj[0]['idCajaDebe'])
						CajaDebe= TCajaDebe.objects.get(pk=idCajaD)
						idCli= str(obj[0]['id_cliente'])
						idSt= str(obj[0]['pk'])
						consulta3=list(Cliente.objects.filter(pk=idCli).values('nombre','Apellido_paterno','Apellido_materno','dni'))
						cantidaEnvio= ConvertirDecimal(str(CajaDebe.cantidadDinero))-ConvertirDecimal(str(obj[0]['comision']))-ConvertirDecimal(str(obj[0]['monto_conceptos']))
						dato['fecha']=str(CajaDebe.fecha.strftime("%d-%m-%Y %H:%M"))
						dato['nroRecibo']=CajaDebe.nroRecibo
						dato['estado']= CajaDebe.estadoTransaccion
						dato['monto']=cantidaEnvio
						dato['id_trans']=obj[0]['pk']
						dato['oficinaOrg']= CajaDebe.id_oficina.pk
						dato['usuarioOrg']= CajaDebe.id_personal.pk
						dato['cajaOrg']= CajaDebe.id_caja.pk
						#base externas
						dato['baseOrg']=None
						dato['baseDst']=None
						if ST_BaseExterna.objects.filter(id_transferencia=obj[0]['pk']).exists():
							stbe= ST_BaseExterna.objects.get(id_transferencia=obj[0]['pk'])
							if stbe.id_base_ori!= None and stbe.id_base_ori!='':
								be1= Base_Ext.objects.get(pk=stbe.id_base_ori)
								dato['baseOrg']= be1.pk
							if stbe.id_base_des!= None and stbe.id_base_des!='':
								be2= Base_Ext.objects.get(pk=stbe.id_base_des)
								dato['baseDst']= be2.pk
						#
						dato['comicion']= obj[0]['comision']
						dato['moneda']= CajaDebe.moneda
						dato['nombre_bnf']=obj[0]['nombre_beneficiado']
						dato['paterno_bnf']=obj[0]['Apellido_paterno_beneficiado']
						dato['materno_bnf']= obj[0]['Apellido_materno_beneficiado']
						dato['dni_bnf']=obj[0]['dni_beneficiado']
						dato['obs']=obj[0]['observaciones']
						dato['nombre_rmt']=consulta3[0]['nombre']
						dato['paterno_rmt']=consulta3[0]['Apellido_paterno']
						dato['materno_rmt']=consulta3[0]['Apellido_materno']
						dato['dni_rmt']=consulta3[0]['dni']
						dato['monto_conceptos']= obj[0]['monto_conceptos']
						dato['otros_conceptos']= obj[0]['otros_conceptos']
						exito='1'
					else:
						exito='-1'
						error='No hay transferncias'
				else:
					exito='-1'
					error='error en autentificacion'
			else:
				exito='-1'
				error= 'error en consulta'
		except:
			exito='-1'
			error= str(sys.exc_info()[1])
	else:
		exito='-1'
		error='fail'
	data= json.dumps({'exito':exito,'data':dato,'error':error})
	mimetype="application/json"
	return HttpResponse(data,mimetype)

def estadoTransferenciaDesktop_view(request):
	if request.is_ajax:
		idCaja=request.GET.get('idCaja')
		idTr=request.GET.get('idSTRemoto')
		idTrDesktop=request.GET.get('idSTLocal')
		mac=request.GET.get('mac')
		dato={}
		error=''
		exito=''
		try:
			if (idCaja != None and idCaja != "") and (idTr != None and idTr != "") and(idTrDesktop != None and idTrDesktop != ""):
				C = Cajas.objects.get(pk=idCaja)
				if Usuario_Desktop.objects.filter(id_usuario=C.id_usuario.pk,mac=mac).count()==1:
					st_desktop=Transferencias_Desktop.objects.get(id_solicitud_transferencia=int(idTr),id_solicitud_desktop=idTrDesktop)
					dato={'idSTRemoto':idTr,'idSTLocal':idTrDesktop,'estado':st_desktop.id_solicitud_transferencia.idCajaDebe.estadoTransaccion}
					exito='1'
				else:
					exito='-1'
					error='error en autentificacion'
			else:
				exito='-1'
				error='consulta invalida'
		except:
			exito='-1'
			error= str(sys.exc_info()[1])
	else:
		exito='-1'
		error='fail'
	data= json.dumps({'exito':exito,'data':dato,'error':error})
	mimetype="application/json"
	return HttpResponse(data,mimetype)

def EnviosDineroRecibidasDesktop_activas_view(request):
	if request.is_ajax:
		idCaja=request.GET.get('idCaja')
		mac=request.GET.get('mac')
		dato={}
		error=''
		exito=''
		try:
			if idCaja != None and idCaja != "":
				C = Cajas.objects.get(pk=idCaja)
				adm=False
				if C.id_usuario.pk==C.id_oficina.id_usuario.pk:
					adm=True
				if Usuario_Desktop.objects.filter(id_usuario=C.id_usuario.pk,mac=mac).count()==1:
					obj=[]
					t=''
					if Recepcion_dinero_Desktop.objects.filter(id_caja=C.pk,tabla='deposito').exists():
						Ued=Recepcion_dinero_Desktop.objects.filter(id_oficina=C.id_oficina.pk,id_caja=C.pk,tabla='deposito').latest("pk")
						obj =list(DepositoCaja.objects.filter(pk__gt=Ued.id_envio,id_caja= C.pk,estado='enviado')[:1].values('pk','fecha','monto','moneda','id_caja','observaciones','conceptoDetalle','idCajaHaber'))
						t='deposito'
						if adm:
							if len(obj)==0:
								if Recepcion_dinero_Desktop.objects.filter(id_caja=C.pk,tabla='enviooficina').exists():
									Ued=Recepcion_dinero_Desktop.objects.filter(id_oficina=C.id_oficina.pk,id_caja=C.pk,tabla='enviooficina').latest("pk")
									obj = list(EnvioOficinaOficina.objects.filter(pk__gt=Ued.id_envio,id_oficinaDestino= C.id_oficina.pk,estado='enviado')[:1].values('pk','fecha','monto','moneda','observaciones','conceptoDetalle','idCajaHaber'))
									t= 'enviooficina'
								#else:
								#	obj = list(EnvioOficinaOficina.objects.filter(id_oficinaDestino= C.id_oficina.pk,estado='enviado')[:1].values('pk','fecha','monto','moneda','observaciones','conceptoDetalle','idCajaHaber'))
								#t='enviooficina'
						if len(obj)==0:
							if Recepcion_dinero_Desktop.objects.filter(id_caja=C.pk,tabla='enviocaja').exists():
								Ued=Recepcion_dinero_Desktop.objects.filter(id_oficina=C.id_oficina.pk,id_caja=C.pk,tabla='enviocaja').latest("pk")
								obj = list(EnvioCajaCaja.objects.filter(pk__gt=Ued.id_envio,id_CajaDestino= C.pk,estado='enviado')[:1].values('pk','fecha','monto','moneda','observaciones','conceptoDetalle','idCajaHaber'))
								t='enviocaja'
							#else:
							#	obj = list(EnvioCajaCaja.objects.filter(id_CajaDestino= C.pk,estado='enviado')[:1].values('pk','fecha','monto','moneda','observaciones','conceptoDetalle','idCajaHaber'))
							#	t='enviocaja'
					else:
						obj =list(DepositoCaja.objects.filter(id_caja= C.pk,estado='enviado')[:1].values('pk','fecha','monto','moneda','id_caja','observaciones','conceptoDetalle','idCajaHaber'))
						t='deposito'
					if adm:
						if len(obj)==0:
							if Recepcion_dinero_Desktop.objects.filter(id_caja=C.pk,tabla='enviooficina').exists():
								Ued=Recepcion_dinero_Desktop.objects.filter(id_oficina=C.id_oficina.pk,id_caja=C.pk,tabla='enviooficina').latest("pk")
								obj = list(EnvioOficinaOficina.objects.filter(pk__gt=Ued.id_envio,id_oficinaDestino= C.id_oficina.pk,estado='enviado')[:1].values('pk','fecha','monto','moneda','observaciones','conceptoDetalle','idCajaHaber'))
								t= 'enviooficina'
								if len(obj)==0:
									if Recepcion_dinero_Desktop.objects.filter(id_caja=C.pk,tabla='deposito').exists():
										Ued=Recepcion_dinero_Desktop.objects.filter(id_oficina=C.id_oficina.pk,id_caja=C.pk,tabla='deposito').latest("pk")
										obj =list(DepositoCaja.objects.filter(pk__gt=Ued.id_envio,id_caja= C.pk,estado='enviado')[:1].values('pk','fecha','monto','moneda','id_caja','observaciones','conceptoDetalle','idCajaHaber'))
										t='deposito'
									#else:
										#obj =list(DepositoCaja.objects.filter(id_caja= C.pk,estado='enviado')[:1].values('pk','fecha','monto','moneda','id_caja','observaciones','conceptoDetalle','idCajaHaber'))
										#t='deposito'
								if len(obj)==0:
									if Recepcion_dinero_Desktop.objects.filter(id_caja=C.pk,tabla='enviocaja').exists():
										Ued=Recepcion_dinero_Desktop.objects.filter(id_oficina=C.id_oficina.pk,id_caja=C.pk,tabla='enviocaja').latest("pk")
										obj = list(EnvioCajaCaja.objects.filter(pk__gt=Ued.id_envio,id_CajaDestino= C.pk,estado='enviado')[:1].values('pk','fecha','monto','moneda','observaciones','conceptoDetalle','idCajaHaber'))
										t='enviocaja'
									#else:
										#obj = list(EnvioCajaCaja.objects.filter(id_CajaDestino= C.pk,estado='enviado')[:1].values('pk','fecha','monto','moneda','observaciones','conceptoDetalle','idCajaHaber'))
										#t='enviocaja'
							else:
								obj = list(EnvioOficinaOficina.objects.filter(id_oficinaDestino= C.id_oficina.pk,estado='enviado')[:1].values('pk','fecha','monto','moneda','observaciones','conceptoDetalle','idCajaHaber'))
								t='enviooficina'
					if len(obj)==0:
						if Recepcion_dinero_Desktop.objects.filter(id_caja=C.pk,tabla='enviocaja').exists():
							Ued=Recepcion_dinero_Desktop.objects.filter(id_oficina=C.id_oficina.pk,id_caja=C.pk,tabla='enviocaja').latest("pk")
							obj = list(EnvioCajaCaja.objects.filter(pk__gt=Ued.id_envio,id_CajaDestino= C.pk,estado='enviado')[:1].values('pk','fecha','monto','moneda','observaciones','conceptoDetalle','idCajaHaber'))
							t='enviocaja'
							if len(obj)==0:
								if Recepcion_dinero_Desktop.objects.filter(id_caja=C.pk,tabla='deposito').exists():
									Ued=Recepcion_dinero_Desktop.objects.filter(id_oficina=C.id_oficina.pk,id_caja=C.pk,tabla='deposito').latest("pk")
									obj =list(DepositoCaja.objects.filter(pk__gt=Ued.id_envio,id_caja= C.pk,estado='enviado')[:1].values('pk','fecha','monto','moneda','id_caja','observaciones','conceptoDetalle','idCajaHaber'))
									t='deposito'
								#else:
								#	obj =list(DepositoCaja.objects.filter(id_caja= C.pk,estado='enviado')[:1].values('pk','fecha','monto','moneda','id_caja','observaciones','conceptoDetalle','idCajaHaber'))
								#	t='deposito'

							if adm:
								if len(obj)==0:
									if Recepcion_dinero_Desktop.objects.filter(id_caja=C.pk,tabla='enviooficina').exists():
										Ued=Recepcion_dinero_Desktop.objects.filter(id_oficina=C.id_oficina.pk,id_caja=C.pk,tabla='enviooficina').latest("pk")
										obj = list(EnvioOficinaOficina.objects.filter(pk__gt=Ued.id_envio,id_oficinaDestino= C.id_oficina.pk,estado='enviado')[:1].values('pk','fecha','monto','moneda','observaciones','conceptoDetalle','idCajaHaber'))
										t= 'enviooficina'
									#else:
									#	obj = list(EnvioOficinaOficina.objects.filter(id_oficinaDestino= C.id_oficina.pk,estado='enviado')[:1].values('pk','fecha','monto','moneda','observaciones','conceptoDetalle','idCajaHaber'))
									#	t= 'enviooficina'
						else:
							obj = list(EnvioCajaCaja.objects.filter(id_CajaDestino= C.pk,estado='enviado')[:1].values('pk','fecha','monto','moneda','observaciones','conceptoDetalle','idCajaHaber'))
							t='enviocaja'
					if len(obj)>0:
						haber= TCajaHaber.objects.get(pk=obj[0]['idCajaHaber'])
						dato['idUsuarioOrg']=haber.id_personal.pk
						dato['idOficinaOrg']=haber.id_oficina.pk
						dato['idCajaOrg']=haber.id_caja.pk
						dato['idEnvioRemoto']=str(obj[0]['pk'])
						dato['fecha']=str(obj[0]['fecha'].strftime("%Y-%m-%d %H:%M"))
						dato['concepto']=obj[0]['conceptoDetalle']
						dato['monto']=str(obj[0]['monto'])
						dato['moneda']= str(obj[0]['moneda']).upper()
						dato['obs']=obj[0]['observaciones']
						dato['tabla']= t
						exito='1'
					else:
						exito='-1'
						error='No hay envios'
				else:
					exito='-1'
					error='error en autentificacion'
			else:
				exito='-1'
				error= 'error en consulta'
		except:
			exito='-1'
			error= str(sys.exc_info()[1])
	else:
		exito='-1'
		error='fail'
	data= json.dumps({'exito':exito,'data':dato,'error':error})
	mimetype="application/json"
	return HttpResponse(data,mimetype)

def estadoEnviosDesktop_view(request):
	if request.is_ajax:
		idCaja=request.GET.get('idCaja')
		idEnvio=request.GET.get('idEnvioRemoto')
		idEnvioDesktop=request.GET.get('idEnvioLocal')
		mac=request.GET.get('mac')
		dato={}
		error=''
		exito=''
		try:
			if (idCaja != None and idCaja != "") and (idEnvio != None and idEnvio != "") and(idEnvioDesktop != None and idEnvioDesktop != ""):
				C = Cajas.objects.get(pk=idCaja)
				if Usuario_Desktop.objects.filter(id_usuario=C.id_usuario.pk,mac=mac).count()==1:
					if Envios_dinero_Desktop.objects.filter(id_envio=int(idEnvio),id_envioDesktop=idEnvioDesktop).exists():
						Envios=Envios_dinero_Desktop.objects.get(id_envio=int(idEnvio),id_envioDesktop=idEnvioDesktop)
						Env=0
						if Envios.tabla=='enviocaja':
							Env= EnvioCajaCaja.objects.get(pk=idEnvio)
						if Envios.tabla=='enviooficina':
							Env = EnvioOficinaOficina.objects.get(pk=idEnvio)
						dato={'idEnvioRemoto':idEnvio,'idEnvioLocal':idEnvioDesktop,'estado':Env.estado}
						exito='1'
					else:
						exito='-1'
						error='Lo sentimos este envio no existe'
				else:
					exito='-1'
					error='error en autentificacion'
			else:
				exito='-1'
				error='consulta invalida'
		except:
			exito='-1'
			error= str(sys.exc_info()[1])
	else:
		exito='-1'
		error='fail'
	data= json.dumps({'exito':exito,'data':dato,'error':error})
	mimetype="application/json"
	return HttpResponse(data,mimetype)


def SaldoCaja_desktop_view(request):
	idCaja=request.GET.get('idCaja')
	mac=request.GET.get('mac')
	dato={}
	error=''
	exito=''
	try:
		if idCaja != None and idCaja != "":
			C = Cajas.objects.get(pk=idCaja)
			if Usuario_Desktop.objects.filter(id_usuario=C.id_usuario.pk,mac=mac).count()==1:
				sd= SaldoDisponibleCajas.objects.get(id_caja=idCaja)
				dato={'saldoSoles':sd.saldo_soles,'saldoDolares':sd.saldo_dolares}
				exito='1'
			else:
				exito='-1'
				error='error en autentificacion'
		else:
			exito='-1'
			error='consulta invalida'
	except:
		exito='-1'
		error= str(sys.exc_info()[1])
	data= json.dumps({'exito':exito,'data':dato,'error':error})
	mimetype="application/json"
	return HttpResponse(data,mimetype)

#----------- intercambio ---------------
def listaIntercambioRecibidasDesktop_activas_view(request):
	if request.is_ajax:
		idCaja=request.GET.get('idCaja')
		mac=request.GET.get('mac')
		dato={}
		error=''
		exito=''
		try:
			if idCaja != None and idCaja != "":
				C = Cajas.objects.get(pk=idCaja)
				if Usuario_Desktop.objects.filter(id_usuario=C.id_usuario.pk,mac=mac).count()==1:
					obj=[]
					if Intercambio_recibidas_Desktop.objects.filter(id_intercambio__id_oficina=C.id_oficina).exists():
						Ust=Intercambio_recibidas_Desktop.objects.filter(id_intercambio__id_oficina=C.id_oficina).latest("pk")
						obj=list(Intercambio.objects.filter(pk__gt=Ust.id_intercambio.pk,id_oficina=C.id_oficina,idCajaDebe__estadoTransaccion='activo')[:1].values('pk','idCajaDebe','id_cliente','id_oficina','comision','nombre_beneficiado','Apellido_paterno_beneficiado','Apellido_materno_beneficiado','dni_beneficiado','observaciones','monto_conceptos','otros_conceptos'))
					else:
						obj=list(Intercambio.objects.filter(id_oficina=C.id_oficina,idCajaDebe__estadoTransaccion='activo')[:1].values('pk','idCajaDebe','id_cliente','id_oficina','comision','nombre_beneficiado','Apellido_paterno_beneficiado','Apellido_materno_beneficiado','dni_beneficiado','observaciones','monto_conceptos','otros_conceptos'))
					if len(obj)>0:
						idCajaD= str(obj[0]['idCajaDebe'])
						CajaDebe= TCajaDebe.objects.get(pk=idCajaD)
						idCli= str(obj[0]['id_cliente'])
						idSt= str(obj[0]['pk'])
						consulta3=list(Cliente.objects.filter(pk=idCli).values('nombre','Apellido_paterno','Apellido_materno','dni'))
						cantidaEnvio= ConvertirDecimal(str(CajaDebe.cantidadDinero))-ConvertirDecimal(str(obj[0]['comision']))-ConvertirDecimal(str(obj[0]['monto_conceptos']))
						dato['fecha']=str(CajaDebe.fecha.strftime("%d-%m-%Y %H:%M"))
						dato['nroRecibo']=CajaDebe.nroRecibo
						dato['estado']= CajaDebe.estadoTransaccion
						dato['monto']=cantidaEnvio
						dato['id_int']=obj[0]['pk']
						dato['oficinaOrg']= CajaDebe.id_oficina.pk
						dato['usuarioOrg']= CajaDebe.id_personal.pk
						dato['cajaOrg']= CajaDebe.id_caja.pk
						dato['comicion']= obj[0]['comision']
						dato['moneda']= CajaDebe.moneda
						dato['nombre_bnf']=obj[0]['nombre_beneficiado']
						dato['paterno_bnf']=obj[0]['Apellido_paterno_beneficiado']
						dato['materno_bnf']= obj[0]['Apellido_materno_beneficiado']
						dato['dni_bnf']=str(obj[0]['dni_beneficiado'])
						dato['obs']=obj[0]['observaciones']
						dato['nombre_rmt']=consulta3[0]['nombre']
						dato['paterno_rmt']=consulta3[0]['Apellido_paterno']
						dato['materno_rmt']=consulta3[0]['Apellido_materno']
						dato['dni_rmt']=consulta3[0]['dni']
						dato['monto_conceptos']= obj[0]['monto_conceptos']
						dato['otros_conceptos']= obj[0]['otros_conceptos']
						exito='1'
					else:
						exito='-1'
						error='No hay intercambios'
				else:
					exito='-1'
					error='error en autentificacion'
			else:
				exito='-1'
				error= 'error en consulta'
		except:
			exito='-1'
			error= str(sys.exc_info()[1])
	else:
		exito='-1'
		error='fail'
	data= json.dumps({'exito':exito,'data':dato,'error':error})
	mimetype="application/json"
	return HttpResponse(data,mimetype)

def estadoIntercambioDesktop_view(request):
	if request.is_ajax:
		idCaja=request.GET.get('idCaja')
		idTr=request.GET.get('idSIRemoto')
		idTrDesktop=request.GET.get('idSILocal')
		mac=request.GET.get('mac')
		dato={}
		error=''
		exito=''
		try:
			if (idCaja != None and idCaja != "") and (idTr != None and idTr != "") and(idTrDesktop != None and idTrDesktop != ""):
				C = Cajas.objects.get(pk=idCaja)
				if Usuario_Desktop.objects.filter(id_usuario=C.id_usuario.pk,mac=mac).count()==1:
					st_desktop=Intercambio_Desktop.objects.get(id_intercambio=int(idTr),id_intercambio_desktop=idTrDesktop)
					dato={'idSIRemoto':idTr,'idSILocal':idTrDesktop,'estado':st_desktop.id_intercambio.idCajaDebe.estadoTransaccion}
					exito='1'
				else:
					exito='-1'
					error='error en autentificacion'
			else:
				exito='-1'
				error='consulta invalida'
		except:
			exito='-1'
			error= str(sys.exc_info()[1])
	else:
		exito='-1'
		error='fail'
	data= json.dumps({'exito':exito,'data':dato,'error':error})
	mimetype="application/json"
	return HttpResponse(data,mimetype)


#************************** END SERVICIOS DESKTOP ***************************
#----------- agregado integral

@login_required
@transaction.atomic
def recuperarPromediosCajaOperador(request):
	if request.is_ajax:
		usr=request.user.username
		C= Cajas.objects.get(id_usuario__usuario=usr)
		try:
			saldoMaterialCajaTotal=SaldoDisponibleCajaMaterial.objects.filter(id_oficina=C.id_oficina.pk,id_caja=C.pk).aggregate(Sum('saldo_Material'))
			if saldoMaterialCajaTotal['saldo_Material__sum']==None:
				data=0
			else:
				data=saldoMaterialCajaTotal['saldo_Material__sum']
		except:
			data='fail'
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)


@login_required
@transaction.atomic
def recuperarCierreCompraClienteCajaOperador(request):
	data=''
	if request.is_ajax:
		usr=request.user.username
		C= Cajas.objects.get(id_usuario__usuario=usr)
		idCliente=request.GET.get('idCliente')
		try:
			lista=[]
			consulta=list(CierreCompraCliente.objects.filter(id_cliente=idCliente,estado='PENDIENTE',id_oficina=C.id_oficina.pk,id_caja=C.pk).values('pk','id_cliente'))
			for obj in consulta:
				dato={}
				OC=Cliente.objects.get(pk=obj['id_cliente'])
				SCI=BarrasCompraMaterial.objects.filter(id_cierre_compra_cliente=obj['pk'],estado='PENDIENTE').aggregate(Sum('cantidadInicial'))
				STB=BarrasCompraMaterial.objects.filter(id_cierre_compra_cliente=obj['pk'],estado='PENDIENTE').aggregate(Count('pk'))
				if SCI['cantidadInicial__sum']!=None and STB['pk__count']!=0:
					dato['pk']=OC.pk
					dato['pkCierre']=obj['pk']
					dato['nombre']=OC.nombre+' '+OC.Apellido_paterno+' '+OC.Apellido_materno
					dato['total']=str(SCI['cantidadInicial__sum'])
					dato['totalBarras']=str(STB['pk__count'])
					lista.append(dato)

			data= json.dumps(lista)
		except:
			data='fail'+str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)



@login_required
@transaction.atomic
def recuperarCierreCompraClienteAllOperador(request):
	data=''
	lista=[]
	if request.is_ajax:
		usr=request.user.username
		C= Cajas.objects.get(id_usuario__usuario=usr)
		try:
			consulta=list(CierreCompraCliente.objects.filter(estado='PENDIENTE',id_oficina=C.id_oficina.pk,id_caja=C.pk).values('pk','id_cliente'))
			for obj in consulta:
				consulta1=list(BarrasCompraMaterial.objects.filter(id_cierre_compra_cliente=obj['pk']).values('id_cliente','cantidadInicial','cantidad','fechaCierre','precio','ley','descuento','observaciones')) 
				#print consulta1.count()
				for obj1 in consulta1:
					dato={}
					OC=Cliente.objects.get(pk=obj1['id_cliente'])
					dato['nombre']=OC.nombre+' '+OC.Apellido_paterno+' '+OC.Apellido_materno
					dato['cantidad']=str(obj1['cantidadInicial'])
					dato['fecha']=str(obj1['fechaCierre'].strftime("%Y-%m-%d"))
					dato['precio']=str(obj1['precio'])
					dato['ley']=str(obj1['ley'])
					dato['descuento']=str(obj1['descuento'])
					dato['observaciones']=obj1['observaciones']
					lista.append(dato)
			data= json.dumps(lista)
		except:
			data='fail'+str(sys.exc_info()[1])
	else:
		data='fail'+str(sys.exc_info()[1])

	mimetype="application/json"
	return HttpResponse(data,mimetype)



@login_required
@transaction.atomic
def recuperarCierreVentaClienteAllOperador(request):
	data=''
	lista=[]
	if request.is_ajax:
		usr=request.user.username
		C= Cajas.objects.get(id_usuario__usuario=usr)
		try:
			consulta=list(CierreVentaCliente.objects.filter(estado='PENDIENTE',id_oficina=C.id_oficina.pk,id_caja=C.pk).values('pk','id_cliente'))
			for obj in consulta:
				consulta1=list(BarrasVentaMaterial.objects.filter(id_cierre_venta_cliente=obj['pk']).values('id_cliente','cantidadInicial','cantidad','fechaCierre','precio','ley','descuento','observaciones')) 
				#print consulta1.count()
				for obj1 in consulta1:
					dato={}
					OC=Cliente.objects.get(pk=obj1['id_cliente'])
					dato['nombre']=OC.nombre+' '+OC.Apellido_paterno+' '+OC.Apellido_materno
					dato['cantidad']=str(obj1['cantidadInicial'])
					dato['fecha']=str(obj1['fechaCierre'].strftime("%Y-%m-%d"))
					dato['precio']=str(obj1['precio'])
					dato['ley']=str(obj1['ley'])
					dato['descuento']=str(obj1['descuento'])
					dato['observaciones']=obj1['observaciones']
					lista.append(dato)
			data= json.dumps(lista)
		except:
			data='fail'+str(sys.exc_info()[1])
	else:
		data='fail'+str(sys.exc_info()[1])

	mimetype="application/json"
	return HttpResponse(data,mimetype)


@login_required
@transaction.atomic
def recuperarCompraClienteOperador(request):
	if request.is_ajax:
		param=request.GET.get('parametro')
		usr=request.user.username
		C= Cajas.objects.get(id_usuario__usuario=usr)
		try:
			consulta=list(Cliente.objects.filter(Q(dni__icontains=param)|Q(nombre__icontains=param)|Q(Apellido_paterno__icontains=param)|Q(Apellido_materno__icontains=param)).values('pk','dni','nombre','Apellido_paterno','Apellido_materno','telefono','direccion','fecha_nacimiento','email','drem','tipo_persona'))
			lista=[]
			for obj in consulta:
				aux={}
				OC=Cliente.objects.get(pk=obj['pk'])
				if CierreCompraCliente.objects.filter(id_cliente=OC,estado='PENDIENTE',id_oficina=C.id_oficina.pk,id_caja=C.pk).exists():
					consulta1=list(CierreCompraCliente.objects.filter(id_cliente=OC,estado='PENDIENTE').values('pk'))
					aux['pk']=obj['pk']
					aux['pkCierre']=consulta1[0]['pk']
					aux['nombre']=obj['nombre']
					aux['Apellido_paterno']=obj['Apellido_paterno']
					aux['Apellido_materno']=obj['Apellido_materno']
					lista.append(aux)
				else:
					aux['pk']=obj['pk']
					aux['pkCierre']='-1'
					aux['nombre']=obj['nombre']
					aux['Apellido_paterno']=obj['Apellido_paterno']
					aux['Apellido_materno']=obj['Apellido_materno']
					lista.append(aux)

			data= json.dumps(lista)
		except:
			data='fail'
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)



@login_required
@transaction.atomic
def recuperarClienteVentaOperador(request):
	if request.is_ajax:
		param=request.GET.get('parametro')
		usr = request.user.username
		C= Cajas.objects.get(id_usuario__usuario=usr)
		try:
			consulta=list(Cliente.objects.filter(Q(dni__icontains=param)|Q(nombre__icontains=param)|Q(Apellido_paterno__icontains=param)|Q(Apellido_materno__icontains=param)).values('pk','dni','nombre','Apellido_paterno','Apellido_materno','telefono','direccion','fecha_nacimiento','email','drem','tipo_persona'))
			lista=[]
			for obj in consulta:
				aux={}
				OC=Cliente.objects.get(pk=obj['pk'])
				if CierreVentaCliente.objects.filter(id_cliente=OC,estado='PENDIENTE',id_oficina=C.id_oficina.pk,id_caja=C.pk).exists():
					consulta1=list(CierreCompraCliente.objects.filter(id_cliente=OC,estado='PENDIENTE').values('pk'))
					aux['pk']=obj['pk']
					aux['pkCierre']=consulta1[0]['pk']
					aux['nombre']=obj['nombre']
					aux['Apellido_paterno']=obj['Apellido_paterno']
					aux['Apellido_materno']=obj['Apellido_materno']
					lista.append(aux)
				else:
					aux['pk']=obj['pk']
					aux['pkCierre']='-1'
					aux['nombre']=obj['nombre']
					aux['Apellido_paterno']=obj['Apellido_paterno']
					aux['Apellido_materno']=obj['Apellido_materno']
					lista.append(aux)

			data= json.dumps(lista)
		except:
			data='fail'
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)



@login_required
@transaction.atomic
def recuperarCierreVentaClienteCajaOperador(request):
	data=''
	if request.is_ajax:
		usr=request.user.username
		C= Cajas.objects.get(id_usuario__usuario=usr)
		idCliente=request.GET.get('idCliente')
		try:
			lista=[]
			consulta=list(CierreVentaCliente.objects.filter(id_cliente=idCliente,estado='PENDIENTE',id_oficina=C.id_oficina.pk,id_caja=C.pk).values('pk','id_cliente'))
			for obj in consulta:
				dato={}
				OC=Cliente.objects.get(pk=obj['id_cliente'])
				SCI=BarrasVentaMaterial.objects.filter(id_cierre_venta_cliente=obj['pk'],estado='PENDIENTE').aggregate(Sum('cantidadInicial'))
				STB=BarrasVentaMaterial.objects.filter(id_cierre_venta_cliente=obj['pk'],estado='PENDIENTE').aggregate(Count('pk'))
				if SCI['cantidadInicial__sum']!=None and STB['pk__count']!=0:
					dato['pk']=OC.pk
					dato['pkCierre']=obj['pk']
					dato['nombre']=OC.nombre+' '+OC.Apellido_paterno+' '+OC.Apellido_materno
					dato['total']=str(SCI['cantidadInicial__sum'])
					dato['totalBarras']=str(STB['pk__count'])
					lista.append(dato)

			data= json.dumps(lista)
		except:
			data='fail'+str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)


@login_required
@permission_required('Main.add_oficina')
def LiquidacionCaja_admin_tem_view(request):
	pkc = request.POST.get('pkC1')
	c= Cajas.objects.get(pk=pkc)
	oficina = c.id_oficina.nombre_oficina
	caja= c.nombre
	operador = c.id_usuario.nombre +' '+c.id_usuario.Apellido_paterno+' '+c.id_usuario.Apellido_materno
	fechad = str(date.today())
	fechah = str(date.today())
	return render(request,"LiquidacionCaja.html",{"pkc":pkc,"nomCaja":caja,"oficina":oficina,"operador":operador,"fd":fechad,"fh":fechah} )

@login_required
@permission_required('Main.add_oficina')
def Lista_liquidaciones_admin_tem_view(request):
	return render(request,"ListaLiquidacion.html" )


#***************************** transferencias para liquidacion *********************
@login_required
@permission_required('Main.add_oficina')
def consulta_tras_creadas_caja_liquid_ajax_view(request):
	if request.is_ajax:
		filtro=request.GET.get('filtro','')
		pkc=request.GET.get('pkC')
		F1=request.GET.get('F1','')
		F2=request.GET.get('F2','')
		if filtro=='h':
			F1= str(datetime.date.today())
			filtro= 'f'
		totalD=0
		totalS=0
		UtilD = 0
		UtilS=0
		data=''
		try:
			C= Cajas.objects.get(pk=pkc)
			usr=C.id_usuario.usuario
			if F1 != '':
				if filtro =='f':
					if F1 !='':
						fecha= datetime.datetime.strptime(F1, '%Y-%m-%d')
						horamin= datetime.datetime.combine(fecha,datetime.time.min)
						horamax= datetime.datetime.combine(fecha,datetime.time.max)
						st= SolicitudTransferencia.objects.filter(idCajaDebe__id_caja=C.pk,idCajaDebe__fecha__range=(horamin,horamax)).exclude(idCajaDebe__aux2__startswith='bal').values('pk','id_oficina','idCajaDebe','comision','id_cliente','monto_conceptos','nombre_beneficiado','Apellido_paterno_beneficiado','Apellido_materno_beneficiado')
						UtilD= st.filter(idCajaDebe__moneda='dolares').aggregate(Sum('comision'))
						UtilS= st.filter(idCajaDebe__moneda='soles').aggregate(Sum('comision'))
						consulta = list(st)
					else:
						data='fail'
				elif filtro=='ef':
					fecha1= datetime.datetime.strptime(F1, '%Y-%m-%d')
					fecha2= datetime.datetime.strptime(F2, '%Y-%m-%d')
					fhoramin= datetime.datetime.combine(fecha1,datetime.time.min)
					fhoramax= datetime.datetime.combine(fecha2,datetime.time.max)
					st=SolicitudTransferencia.objects.filter(idCajaDebe__id_caja=C.pk,idCajaDebe__fecha__range=(fhoramin,fhoramax)).exclude(idCajaDebe__aux2__startswith='bal').values('pk','id_oficina','idCajaDebe','comision','id_cliente','monto_conceptos','nombre_beneficiado','Apellido_paterno_beneficiado','Apellido_materno_beneficiado')
					UtilD= st.filter(idCajaDebe__moneda='dolares').aggregate(Sum('comision'))
					UtilS= st.filter(idCajaDebe__moneda='soles').aggregate(Sum('comision'))
					consulta = list(st)
				else:
					data='fail'
			else:
				F1= str(datetime.date.today())
				fecha= datetime.datetime.strptime(F1, '%Y-%m-%d')
				horamin= datetime.datetime.combine(fecha,datetime.time.min)
				horamax= datetime.datetime.combine(fecha,datetime.time.max)
				st= SolicitudTransferencia.objects.filter(idCajaDebe__id_caja=C.pk,idCajaDebe__fecha__range=(horamin,horamax)).exclude(idCajaDebe__aux2__startswith='bal').values('pk','id_oficina','idCajaDebe','comision','id_cliente','monto_conceptos','nombre_beneficiado','Apellido_paterno_beneficiado','Apellido_materno_beneficiado')
				UtilD= st.filter(idCajaDebe__moneda='dolares').aggregate(Sum('comision'))
				UtilS= st.filter(idCajaDebe__moneda='soles').aggregate(Sum('comision'))
				consulta = list(st)
			lista=[]
			tComis=0
			tComid=0
			tbancoD=0
			tbancoS=0
			tcapiD=0
			tcapiS=0
			os=0#comision para la oficina  soles
			cs=0#comision para central   soles
			es=0#comision para la otra oficina soles
			od=0
			cd=0
			ed=0
			conf= conf_liquid_Cajas.objects.get(id_caja=C.pk)
			for obj in consulta:
				dato={}
				sq= PagoTransferencia.objects.filter(id_solicitud_transferencia=str(obj['pk']),idCajaHaber__id_personal=C.id_usuario.pk)
				CD= TCajaDebe.objects.get(pk=str(obj['idCajaDebe']))
				Cl= Cliente.objects.get(pk=str(obj['id_cliente']))
				O_aux = Oficina.objects.get(pk= obj['id_oficina'])
				oori=''
				odest=O_aux.nombre_oficina
				if ST_BaseExterna.objects.filter(id_transferencia=obj['pk']).exists():
					stbe= ST_BaseExterna.objects.get(id_transferencia=obj['pk'])
					if stbe.id_base_des!= None and stbe.id_base_des!='':
						be2= Base_Ext.objects.get(pk=stbe.id_base_des)
						odest= be2.nombre_base
					if stbe.id_base_ori!= None and stbe.id_base_ori!='':
						be1= Base_Ext.objects.get(pk=stbe.id_base_ori)
						oori=' | De: '+'<b style="color: #d43f3a;">'+be1.nombre_base+'</b>' 
				#C_aux= Cajas.objects.get(id_usuario=O_aux.id_usuario.pk)
				#dato['concepto']= CD.conceptoDetalle +' departe de '+Cl.nombre+' '+Cl.Apellido_paterno
				if CD.estadoTransaccion!='extornado' and sq.count()==0:
					dato['concepto']= 'Para: '+ obj['nombre_beneficiado'] +' '+ obj['Apellido_paterno_beneficiado']+' '+obj['Apellido_materno_beneficiado']+'<b style="color: #2e6da4;"> / '+odest+'</b>'+oori
					dato['fecha'] = str(CD.fecha.strftime("%d-%m-%Y %H:%M %p"))
					dato['tipodoc']= str(CD.tipoDocumento)
					#dato['ope']= CD.id_personal.nombre + ' ' +CD.id_personal.Apellido_paterno +' '+CD.id_personal.Apellido_materno
					dato['ope']= CD.id_personal.nombre
					dato['moneda']= str(CD.moneda)
					dato['monto']= normalizar(float(CD.cantidadDinero))
					dato['comision']= str(obj['comision'])
					dato['comi_banco']= str(obj['monto_conceptos'])
					dato['nroR']= str(CD.nroRecibo)
					dato['capi']= 0
					dato['st_ca']= 0
					dato['st_ce']= 0
					dato['st_ot']= 0
					dato['ex_to']= 'n'
					dato['x']= 'n'
					if str(CD.moneda)=='soles':
						tComis=tComis+float(obj['comision'])
						if CD.estadoTransaccion=='extornado' or sq.count()>0:
							dato['x']= 's'
							if CD.aux1=='todo':
								dato['ex_to']= 's'
							else:
								arq= conf_prj_arqueo.objects.get(id_conf=conf.pk,id_caja__id_usuario=O_aux.id_usuario.pk)
								if arq.tipo_caja=='p':
									dato['st_ca']= float(obj['comision'])*float(arq.prj_caja)/100
									dato['st_ce']= float(obj['comision'])*float(arq.prj_otra_oficina)/100
								else: # destino es compartido
									dato['st_ca']= float(obj['comision'])*float(arq.prj_caja)/100
									dato['st_ce']= float(obj['comision'])*float(arq.prj_oficina_central)/100
									dato['st_ot']= float(obj['comision'])*float(arq.prj_otra_oficina)/100
						else:
							arq=None
							if CD.estadoTransaccion=='pagado':
								pt= PagoTransferencia.objects.get(id_solicitud_transferencia=str(obj['pk']))
								if conf_prj_arqueo.objects.filter(id_conf=conf.pk,id_caja=pt.idCajaHaber.id_caja.pk).exists():
									arq= conf_prj_arqueo.objects.get(id_conf=conf.pk,id_caja=pt.idCajaHaber.id_caja.pk)
									if arq.prj_caja == None or arq.prj_caja== 0 or arq.prj_caja== '':
										arq= conf_prj_arqueo.objects.get(id_conf=conf.pk,id_caja__id_usuario=O_aux.id_usuario.pk)
								else:
									arq= conf_prj_arqueo.objects.get(id_conf=conf.pk,id_caja__id_usuario=O_aux.id_usuario.pk)
							else:
								arq= conf_prj_arqueo.objects.get(id_conf=conf.pk,id_caja__id_usuario=O_aux.id_usuario.pk)
							if arq.tipo_caja=='p':
								dato['st_ca']= float(obj['comision'])*float(arq.prj_caja)/100
								dato['st_ce']= float(obj['comision'])*float(arq.prj_otra_oficina)/100
							else: # destino es compartido
								dato['st_ca']= float(obj['comision'])*float(arq.prj_caja)/100
								dato['st_ce']= float(obj['comision'])*float(arq.prj_oficina_central)/100
								dato['st_ot']= float(obj['comision'])*float(arq.prj_otra_oficina)/100
						totalS= totalS+ConvertirDecimal(CD.cantidadDinero)
						if obj['monto_conceptos'] != None and obj['monto_conceptos']!='':
							cap= float(CD.cantidadDinero) -float(obj['comision']) -float(obj['monto_conceptos'])
							dato['capi'] = cap
							tcapiS= tcapiS + cap
							tbancoS = tbancoS + float(obj['monto_conceptos'])
						else:
							cap= float(CD.cantidadDinero) -float(obj['comision'])
							dato['capi'] = cap
							tcapiS= tcapiS + cap
						os=os+dato['st_ca']
						cs=cs+dato['st_ce']
						es=es+dato['st_ot']
					if str(CD.moneda)=='dolares':
						tComid=tComid+float(obj['comision'])
						if CD.estadoTransaccion=='extornado' or sq.count()>0:
							if CD.aux1=='todo':
								dato['ex_to']= 'si'
							else:
								arq= conf_prj_arqueo.objects.get(id_conf=conf.pk,id_caja__id_usuario=O_aux.id_usuario.pk)
								if arq.tipo_caja=='p':
									dato['st_ca']= float(obj['comision'])*float(arq.prj_caja)/100
									dato['st_ce']= float(obj['comision'])*float(arq.prj_otra_oficina)/100
								else: # destino es compartido
									dato['st_ca']= float(obj['comision'])*float(arq.prj_caja)/100
									dato['st_ce']= float(obj['comision'])*float(arq.prj_oficina_central)/100
									dato['st_ot']= float(obj['comision'])*float(arq.prj_otra_oficina)/100
						else:
							arq=None
							if CD.estadoTransaccion=='pagado':
								pt= PagoTransferencia.objects.get(id_solicitud_transferencia=str(obj['pk']))
								if conf_prj_arqueo.objects.filter(id_conf=conf.pk,id_caja=pt.idCajaHaber.id_caja.pk).exists():
									arq= conf_prj_arqueo.objects.get(id_conf=conf.pk,id_caja=pt.idCajaHaber.id_caja.pk)
									if arq.prj_caja == None or arq.prj_caja== 0 or arq.prj_caja== '':
										arq= conf_prj_arqueo.objects.get(id_conf=conf.pk,id_caja__id_usuario=O_aux.id_usuario.pk)
								else:
									arq= conf_prj_arqueo.objects.get(id_conf=conf.pk,id_caja__id_usuario=O_aux.id_usuario.pk)
							else:
								#arq= conf_prj_arqueo.objects.get(id_conf=conf.pk,id_caja__id_usuario=O_aux.id_usuario.pk)
								if conf_prj_arqueo.objects.filter(id_conf=conf.pk,id_caja__id_usuario=O_aux.id_usuario.pk).exists():
									arq= conf_prj_arqueo.objects.get(id_conf=conf.pk,id_caja__id_usuario=O_aux.id_usuario.pk)
								else:
									arq= conf_prj_arqueo.objects.get(id_conf__id_caja__id_usuario=conf.id_caja.id_oficina.id_usuario.pk,id_caja__id_usuario=O_aux.id_usuario.pk)
							if arq.tipo_caja=='p':
								dato['st_ca']= float(obj['comision'])*float(arq.prj_caja)/100
								dato['st_ce']= float(obj['comision'])*float(arq.prj_otra_oficina)/100
							else: # destino es compartido
								dato['st_ca']= float(obj['comision'])*float(arq.prj_caja)/100
								dato['st_ce']= float(obj['comision'])*float(arq.prj_oficina_central)/100
								dato['st_ot']= float(obj['comision'])*float(arq.prj_otra_oficina)/100
						totalD= totalD+ConvertirDecimal(CD.cantidadDinero)
						if obj['monto_conceptos'] != None and obj['monto_conceptos']!='':
							cap= float(CD.cantidadDinero) -float(obj['comision']) -float(obj['monto_conceptos'])
							dato['capi'] = cap
							tcapiD= tcapiD + cap
							tbancoD = tbancoD + float(obj['monto_conceptos'])
						else:
							cap= float(CD.cantidadDinero) -float(obj['comision'])
							dato['capi'] = cap
							tcapiD= tcapiD + cap
						od=od+dato['st_ca']
						cd=cd+dato['st_ce']
						ed=ed+dato['st_ot']
					lista.append(dato)
			total={}
			total['util_soles']= tComis
			#total['util_soles']= 0
			#if UtilS['comision__sum'] != None:
			#	total['util_soles']= round(float(UtilS['comision__sum']),2)
			#total['util_dolares']=str(UtilD['comision__sum'])
			total['util_dolares']=tComid
			total['total_soles']=round(float(totalS),2)
			total['total_dolares']=float(totalD)
			total['tcapid']=float(tcapiD)
			total['tbancod']=float(tbancoD)
			total['tcapis']=round(float(tcapiS),2)
			total['tbancos']=round(float(tbancoS),2)
			total['tcof']=round(os,2)
			total['tcce']=round(cs,2)
			total['tcot']=round(es,2)
			lista.append(total)
			data= json.dumps(lista)
		except:
			data='fail'+ str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)



@login_required
@permission_required('Main.add_oficina')
def consulta_tras_pagadas_caja_liquid_ajax_view(request):
	if request.is_ajax:
		filtro=request.GET.get('filtro','')
		pkc=request.GET.get('pkC')
		F1=request.GET.get('F1','')
		F2=request.GET.get('F2','')
		ver=''
		if filtro=='h':
			F1= str(datetime.date.today())
			filtro= 'f'
		totalD=0
		totalS=0
		data=''
		try:
			C= Cajas.objects.get(pk=pkc)
			usr=C.id_usuario.usuario
			if F1 != '':
				if filtro =='f':
					if F1 !='':
						fecha= datetime.datetime.strptime(F1, '%Y-%m-%d')
						horamin= datetime.datetime.combine(fecha,datetime.time.min)
						horamax= datetime.datetime.combine(fecha,datetime.time.max)
						consulta = list(TCajaHaber.objects.filter(id_caja=C.pk,fecha__range=(horamin,horamax),tablaRelacional='PagoTransferencia').exclude(aux2__startswith='bal').values('pk','fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo','id_personal'))
					else:
						#consulta = list(TCajaHaber.objects.filter(id_personal__usuario=usr).exclude(tablaRelacional='CajaCierre').values('pk','fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo'))
						data='fail'
				elif filtro=='ef':
					fecha1= datetime.datetime.strptime(F1, '%Y-%m-%d')
					fecha2= datetime.datetime.strptime(F2, '%Y-%m-%d')
					fhoramin= datetime.datetime.combine(fecha1,datetime.time.min)
					fhoramax= datetime.datetime.combine(fecha2,datetime.time.max)
					consulta = list(TCajaHaber.objects.filter(id_caja=C.pk,fecha__range=(fhoramin,fhoramax),tablaRelacional='PagoTransferencia').exclude(aux2__startswith='bal').values('pk','fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo','id_personal'))
				else:
					#consulta = list(TCajaHaber.objects.filter(id_personal__usuario=usr).exclude(tablaRelacional='CajaCierre').values('pk','fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo'))
					data='fail'
			else:
				#consulta = list(TCajaHaber.objects.filter(id_personal__usuario=usr).exclude(tablaRelacional='CajaCierre').values('pk','fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo'))
				F1= str(datetime.date.today())
				fecha= datetime.datetime.strptime(F1, '%Y-%m-%d')
				horamin= datetime.datetime.combine(fecha,datetime.time.min)
				horamax= datetime.datetime.combine(fecha,datetime.time.max)
				consulta = list(TCajaHaber.objects.filter(id_caja=C.pk,fecha__range=(horamin,horamax),tablaRelacional='PagoTransferencia').exclude(aux2__startswith='bal').values('pk','fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo','id_personal'))
			lista=[]
			conf= conf_liquid_Cajas.objects.get(id_caja=C.pk)
			os=0#comision para la oficina  soles
			cs=0#comision para central   soles
			es=0#comision para la otra oficina soles
			od=0
			cd=0
			ed=0
			comis=0
			comid=0
			for obj in consulta:
				dato={}
				if str(obj['moneda'])=='soles':
					totalS= totalS+obj['cantidadDinero']
				if str(obj['moneda'])=='dolares':
					totalD= totalD+obj['cantidadDinero']
				pt = PagoTransferencia.objects.get(idCajaHaber=obj['pk'])
				oori=pt.id_solicitud_transferencia.idCajaDebe.id_oficina.nombre_oficina
				odest=''
				if ST_BaseExterna.objects.filter(id_transferencia=pt.id_solicitud_transferencia.pk).exists():
					stbe= ST_BaseExterna.objects.get(id_transferencia=pt.id_solicitud_transferencia.pk)
					if stbe.id_base_ori!= None and stbe.id_base_ori!='':
						be2= Base_Ext.objects.get(pk=stbe.id_base_ori)
						oori= be2.nombre_base
					if stbe.id_base_des!= None and stbe.id_base_des!='':
						be1= Base_Ext.objects.get(pk=stbe.id_base_des)
						odest=' /'+'<b style="color: #d43f3a;">'+be1.nombre_base+'</b> | '
				C_aux= Cajas.objects.get(pk=pt.id_solicitud_transferencia.idCajaDebe.id_caja.pk)
				O_aux = Oficina.objects.get(pk= pt.id_solicitud_transferencia.idCajaDebe.id_oficina.pk)
				dato['concepto']= 'A: '+pt.id_solicitud_transferencia.nombre_beneficiado +' '+pt.id_solicitud_transferencia.Apellido_paterno_beneficiado+' '+pt.id_solicitud_transferencia.Apellido_materno_beneficiado+odest+'<b style="color: #4cae4c;"> De: '+oori+ '</b> /<b  style="color: #d58512;">'+pt.id_solicitud_transferencia.idCajaDebe.id_personal.nombre +' '+pt.id_solicitud_transferencia.idCajaDebe.id_personal.Apellido_paterno+'<b>'
				dato['st'] = pt.id_solicitud_transferencia.idCajaDebe.nroRecibo
				dtd=pt.id_solicitud_transferencia.idCajaDebe.aux1
				comi=0
				if esReal(dtd)>0:
					comi=esReal(dtd)
				else:
					comi=pt.id_solicitud_transferencia.comision
				dato['comision']=str(comi)
				#dato['comision']=pt.id_solicitud_transferencia.comision
				dato['fecha'] = str(obj['fecha'].strftime("%d-%m-%Y %H:%M %p"))
				dato['tipodoc']= str(obj['tipoDocumento'])
				dato['moneda']= str(obj['moneda'])
				p= Personal.objects.get(pk=obj['id_personal'])
				dato['ope']= p.nombre
				#dato['ope']= p.nombre + ' ' +p.Apellido_paterno +' '+p.Apellido_materno
				dato['monto']= normalizar(float(obj['cantidadDinero']))
				dato['nroR']= str(obj['nroRecibo'])
				dato['st_ca']= 0
				dato['st_ce']= 0
				dato['st_ot']= 0
				#comi=pt.id_solicitud_transferencia.comision
				arq=None
				if conf_prj_arqueo.objects.filter(id_conf=conf.pk,id_caja=C_aux.pk).exists():
					arq= conf_prj_arqueo.objects.get(id_conf=conf.pk,id_caja=C_aux.pk)
					ver=' arq caja'
					if arq.prj_caja == None or arq.prj_caja== 0 or arq.prj_caja== '':
						arq= conf_prj_arqueo.objects.get(id_conf=conf.pk,id_caja__id_usuario=O_aux.id_usuario.pk)
				else:
					ver=' arq of confi' +str(conf.pk)+' ofi '+ O_aux.nombre_oficina+ ' usr '+ str(O_aux.id_usuario.pk)
					#arq= conf_prj_arqueo.objects.get(id_conf=conf.pk,id_caja__id_usuario=O_aux.id_usuario.pk)
					if conf_prj_arqueo.objects.filter(id_conf=conf.pk,id_caja__id_usuario=O_aux.id_usuario.pk).exists():
						arq= conf_prj_arqueo.objects.get(id_conf=conf.pk,id_caja__id_usuario=O_aux.id_usuario.pk)
					else:
						arq= conf_prj_arqueo.objects.get(id_conf__id_caja__id_usuario=conf.id_caja.id_oficina.id_usuario.pk,id_caja__id_usuario=O_aux.id_usuario.pk)
				if arq.tipo_caja=='p':
					dato['st_ca']= float(comi)*float(arq.prj_caja)/100
					dato['st_ce']= float(comi)*float(arq.prj_otra_oficina)/100
				else: # destino es compartido
					dato['st_ca']= float(comi)*float(arq.prj_caja)/100
					dato['st_ce']= float(comi)*float(arq.prj_oficina_central)/100
					dato['st_ot']= float(comi)*float(arq.prj_otra_oficina)/100
				if str(obj['moneda'])=='soles':
					os=os+dato['st_ca']
					cs=cs+dato['st_ce']
					es=es+dato['st_ot']
					comis=comis+float(dato['comision'])
				if str(obj['moneda'])=='dolares':
					od=od+dato['st_ca']
					cd=cd+dato['st_ce']
					ed=ed+dato['st_ot']
					comid=comid+float(dato['comision'])
				lista.append(dato)
			total={}
			total['total_soles']=round(float(totalS),2)
			total['total_dolares']=float(totalD)
			total['util_soles']= round(comis,2)
			total['util_dolares']=str(comid)
			total['tcof']=round(os,2)
			total['tcce']=round(cs,2)
			total['tcot']=round(es,2)
			lista.append(total)
			data= json.dumps(lista)
		except:
			data='fail'+ str(sys.exc_info()[1]) +ver
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)


@login_required
@transaction.atomic
def GurdarLiquidCaja_admin_view(request):
	exito=''
	pkc = request.GET.get('pkC')
	fdesde = request.GET.get('fd','')
	fhasta = request.GET.get('fh','')
	obs = request.GET.get('obs','')
	try:
		with transaction.atomic():
			C= Cajas.objects.get(pk=pkc)
			if fhasta == None or fhasta=='':
				fhasta=fdesde
			fecha1= datetime.datetime.strptime(fdesde, '%Y-%m-%d')
			fecha2= datetime.datetime.strptime(fhasta, '%Y-%m-%d')
			if fecha1 <= fecha2:
				if not liquidacionCaja.objects.filter(id_caja=C.pk,fechaHasta__gte=fdesde,estado='liquidado').exists():
					fhoramin= datetime.datetime.combine(fecha1,datetime.time.min)
					fhoramax= datetime.datetime.combine(fecha2,datetime.time.max)
					lc= liquidacionCaja(id_caja=C,observaciones=obs,fechaDesde=fdesde,fechaHasta=fhasta,estado='liquidado')
					lc.save()
					TCajaDebe.objects.filter(id_caja=C.pk,tablaRelacional='SolicitudTransferencia',moneda='soles',fecha__range=(fhoramin,fhoramax)).exclude(aux2__startswith='bal').update(aux2='bal'+str(lc.pk))
					TCajaHaber.objects.filter(id_caja=C.pk,fecha__range=(fhoramin,fhoramax),moneda='soles',tablaRelacional='PagoTransferencia',conceptoDetalle='Pago transferencia').exclude(aux2__startswith='bal').update(aux2='bal'+str(lc.pk))
					exito='exito'
				else:
					exito='Rango de fechas incorrecto'
			else:
				exito='Rango de fechas incorrecto'
	except IntegrityError:
		exito='fail'
	except:
		exito='fail1'+ str(sys.exc_info()[1])
	mimetype="text"
	return HttpResponse(exito,mimetype)

@login_required
@transaction.atomic
def AnularLiquidCaja_admin_view(request):
	exito=''
	pkL = request.GET.get('pkL')
	try:
		with transaction.atomic():
			if pkL !=  None and pkL.isdigit():
				L=liquidacionCaja.objects.get(pk=pkL)
				C= L.id_caja
				if liquidacionCaja.objects.filter(pk=pkL,id_caja=C.pk,estado="liquidado").exists():
					TCajaDebe.objects.filter(id_caja=C.pk,aux2='bal'+str(pkL)).update(aux2='')
					TCajaHaber.objects.filter(id_caja=C.pk,aux2='bal'+str(pkL)).update(aux2='')
					liquidacionCaja.objects.filter(pk=pkL,id_caja=C.pk,estado="liquidado").update(estado='anulado')
					exito='exito'
				else:
					exito='seleccione una liquidacion valida'
			else:
				exito='seleccione la liquidacion'
	except IntegrityError:
		exito='fail'
	except:
		exito='fail1'+ str(sys.exc_info()[1])
	mimetype="text"
	return HttpResponse(exito,mimetype)


@login_required
def lista_liquidacion_ajax_view(request):
	if request.is_ajax:
		data=''
		lista=[]
		try:
			consulta=list(liquidacionCaja.objects.all().order_by('-pk').values('pk','fecha','id_caja','observaciones','fechaDesde','fechaHasta','estado'))
			for obj in consulta:
				c= Cajas.objects.get(pk=obj['id_caja'])
				dato={}
				dato['pk']= obj['pk']
				dato['f']= str(obj['fecha'].strftime("%d-%m-%Y %H:%M"))
				dato['base']= '<b style="color: #2e6da4;"> '+c.id_oficina.nombre_oficina+'</b>'+c.nombre
				dato['op']=c.id_usuario.nombre+' '+c.id_usuario.Apellido_paterno+' '+c.id_usuario.Apellido_materno
				dato['fd']=str(obj['fechaDesde'])
				dato['fh']=str(obj['fechaHasta'])
				dato['est']= obj['estado']
				dato['obs']= obj['observaciones']
				dato['pkC']= obj['id_caja']

				lista.append(dato)
			data= json.dumps(lista)
		except:
			data='error en consulta'+ str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
def VerLiquidacionCaja_admin_tem_view(request):
	pkl = request.POST.get('pkLi')
	li= liquidacionCaja.objects.get(pk=pkl)
	c= Cajas.objects.get(pk=li.id_caja.pk) 
	pkc=c.pk
	oficina = c.id_oficina.nombre_oficina
	caja= c.nombre
	operador = c.id_usuario.nombre +' '+c.id_usuario.Apellido_paterno+' '+c.id_usuario.Apellido_materno
	fechad = str(li.fechaDesde)
	fechah = str(li.fechaHasta)
	obs = li.observaciones
	return render(request,"ReimpresionLiquid.html",{"obs":obs,"pkl":pkl,"pkc":pkc,"nomCaja":caja,"oficina":oficina,"operador":operador,"fd":fechad,"fh":fechah} )

@login_required
@permission_required('Main.add_oficina')
def consulta_tras_creadas_caja_liquidado_ajax_view(request):
	if request.is_ajax:
		filtro=request.GET.get('filtro','')
		pkc=request.GET.get('pkC')
		pkl=request.GET.get('pkL')
		F1=request.GET.get('F1','')
		F2=request.GET.get('F2','')
		if filtro=='h':
			F1= str(datetime.date.today())
			filtro= 'f'
		totalD=0
		totalS=0
		UtilD = 0
		UtilS=0
		data=''
		try:
			C= Cajas.objects.get(pk=pkc)
			usr=C.id_usuario.usuario
			if F1 != '':
				if filtro =='f':
					if F1 !='':
						fecha= datetime.datetime.strptime(F1, '%Y-%m-%d')
						horamin= datetime.datetime.combine(fecha,datetime.time.min)
						horamax= datetime.datetime.combine(fecha,datetime.time.max)
						st= SolicitudTransferencia.objects.filter(idCajaDebe__id_caja=C.pk,idCajaDebe__fecha__range=(horamin,horamax),idCajaDebe__aux2='bal'+str(pkl)).values('pk','id_oficina','idCajaDebe','comision','id_cliente','monto_conceptos','nombre_beneficiado','Apellido_paterno_beneficiado','Apellido_materno_beneficiado')
						UtilD= st.filter(idCajaDebe__moneda='dolares').aggregate(Sum('comision'))
						UtilS= st.filter(idCajaDebe__moneda='soles').aggregate(Sum('comision'))
						consulta = list(st)
					else:
						data='fail'
				elif filtro=='ef':
					fecha1= datetime.datetime.strptime(F1, '%Y-%m-%d')
					fecha2= datetime.datetime.strptime(F2, '%Y-%m-%d')
					fhoramin= datetime.datetime.combine(fecha1,datetime.time.min)
					fhoramax= datetime.datetime.combine(fecha2,datetime.time.max)
					st=SolicitudTransferencia.objects.filter(idCajaDebe__id_caja=C.pk,idCajaDebe__fecha__range=(fhoramin,fhoramax),idCajaDebe__aux2='bal'+str(pkl)).values('pk','id_oficina','idCajaDebe','comision','id_cliente','monto_conceptos','nombre_beneficiado','Apellido_paterno_beneficiado','Apellido_materno_beneficiado')
					UtilD= st.filter(idCajaDebe__moneda='dolares').aggregate(Sum('comision'))
					UtilS= st.filter(idCajaDebe__moneda='soles').aggregate(Sum('comision'))
					consulta = list(st)
				else:
					data='fail'
			else:
				F1= str(datetime.date.today())
				fecha= datetime.datetime.strptime(F1, '%Y-%m-%d')
				horamin= datetime.datetime.combine(fecha,datetime.time.min)
				horamax= datetime.datetime.combine(fecha,datetime.time.max)
				st= SolicitudTransferencia.objects.filter(idCajaDebe__id_caja=C.pk,idCajaDebe__fecha__range=(horamin,horamax),idCajaDebe__aux2='bal'+str(pkl)).values('pk','id_oficina','idCajaDebe','comision','id_cliente','monto_conceptos','nombre_beneficiado','Apellido_paterno_beneficiado','Apellido_materno_beneficiado')
				UtilD= st.filter(idCajaDebe__moneda='dolares').aggregate(Sum('comision'))
				UtilS= st.filter(idCajaDebe__moneda='soles').aggregate(Sum('comision'))
				consulta = list(st)
			lista=[]
			tbancoD=0
			tbancoS=0
			tcapiD=0
			tcapiS=0
			tcomis=0
			tcomid=0
			os=0#comision para la oficina  soles
			cs=0#comision para central   soles
			es=0#comision para la otra oficina soles
			od=0
			cd=0
			ed=0
			conf= conf_liquid_Cajas.objects.get(id_caja=C.pk)
			for obj in consulta:
				dato={}
				sq= PagoTransferencia.objects.filter(id_solicitud_transferencia=str(obj['pk']),idCajaHaber__id_personal=C.id_usuario.pk)
				CD= TCajaDebe.objects.get(pk=str(obj['idCajaDebe']))
				Cl= Cliente.objects.get(pk=str(obj['id_cliente']))
				O_aux = Oficina.objects.get(pk= obj['id_oficina'])
				#C_aux= Cajas.objects.get(id_usuario=O_aux.id_usuario.pk)
				#dato['concepto']= CD.conceptoDetalle +' departe de '+Cl.nombre+' '+Cl.Apellido_paterno
				if CD.estadoTransaccion!='extornado' and sq.count()==0:
					dato['concepto']= 'Para: '+ obj['nombre_beneficiado'] +' '+ obj['Apellido_paterno_beneficiado']+' '+obj['Apellido_materno_beneficiado']+'<b style="color: #2e6da4;"> / '+O_aux.nombre_oficina+'</b>'
					dato['fecha'] = str(CD.fecha.strftime("%d-%m-%Y %H:%M %p"))
					dato['tipodoc']= str(CD.tipoDocumento)
					#dato['ope']= CD.id_personal.nombre + ' ' +CD.id_personal.Apellido_paterno +' '+CD.id_personal.Apellido_materno
					dato['ope']= CD.id_personal.nombre
					dato['moneda']= str(CD.moneda)
					dato['monto']= normalizar(float(CD.cantidadDinero))
					dato['comision']= str(obj['comision'])
					dato['comi_banco']= str(obj['monto_conceptos'])
					dato['nroR']= str(CD.nroRecibo)
					dato['capi']= 0
					dato['st_ca']= 0
					dato['st_ce']= 0
					dato['st_ot']= 0
					dato['ex_to']= 'n'
					dato['x']= 'n'
					if str(CD.moneda)=='soles':
						if CD.estadoTransaccion=='extornado' or sq.count()>0:
							dato['x']= 's'
							if CD.aux1=='todo':
								dato['ex_to']= 's'
							else:
								arq= conf_prj_arqueo.objects.get(id_conf=conf.pk,id_caja__id_usuario=O_aux.id_usuario.pk)
								if arq.tipo_caja=='p':
									dato['st_ca']= float(obj['comision'])*float(arq.prj_caja)/100
									dato['st_ce']= float(obj['comision'])*float(arq.prj_otra_oficina)/100
								else: # destino es compartido
									dato['st_ca']= float(obj['comision'])*float(arq.prj_caja)/100
									dato['st_ce']= float(obj['comision'])*float(arq.prj_oficina_central)/100
									dato['st_ot']= float(obj['comision'])*float(arq.prj_otra_oficina)/100
						else:
							arq=None
							if CD.estadoTransaccion=='pagado':
								pt= PagoTransferencia.objects.get(id_solicitud_transferencia=str(obj['pk']))
								if conf_prj_arqueo.objects.filter(id_conf=conf.pk,id_caja=pt.idCajaHaber.id_caja.pk).exists():
									arq= conf_prj_arqueo.objects.get(id_conf=conf.pk,id_caja=pt.idCajaHaber.id_caja.pk)
									if arq.prj_caja == None or arq.prj_caja== 0 or arq.prj_caja== '':
										arq= conf_prj_arqueo.objects.get(id_conf=conf.pk,id_caja__id_usuario=O_aux.id_usuario.pk)
								else:
									arq= conf_prj_arqueo.objects.get(id_conf=conf.pk,id_caja__id_usuario=O_aux.id_usuario.pk)
							else:
								arq= conf_prj_arqueo.objects.get(id_conf=conf.pk,id_caja__id_usuario=O_aux.id_usuario.pk)
							if arq.tipo_caja=='p':
								dato['st_ca']= float(obj['comision'])*float(arq.prj_caja)/100
								dato['st_ce']= float(obj['comision'])*float(arq.prj_otra_oficina)/100
							else: # destino es compartido
								dato['st_ca']= float(obj['comision'])*float(arq.prj_caja)/100
								dato['st_ce']= float(obj['comision'])*float(arq.prj_oficina_central)/100
								dato['st_ot']= float(obj['comision'])*float(arq.prj_otra_oficina)/100
						totalS= totalS+ConvertirDecimal(CD.cantidadDinero)
						tcomis = tcomis + float(obj['comision'])
						if obj['monto_conceptos'] != None and obj['monto_conceptos']!='':
							cap= float(CD.cantidadDinero) -float(obj['comision']) -float(obj['monto_conceptos'])
							dato['capi'] = cap
							tcapiS= tcapiS + cap
							tbancoS = tbancoS + float(obj['monto_conceptos'])
						else:
							cap= float(CD.cantidadDinero) -float(obj['comision'])
							dato['capi'] = cap
							tcapiS= tcapiS + cap
						os=os+dato['st_ca']
						cs=cs+dato['st_ce']
						es=es+dato['st_ot']
					if str(CD.moneda)=='dolares':
						if CD.estadoTransaccion=='extornado' or sq.count()>0:
							if CD.aux1=='todo':
								dato['ex_to']= 'si'
							else:
								arq= conf_prj_arqueo.objects.get(id_conf=conf.pk,id_caja__id_usuario=O_aux.id_usuario.pk)
								if arq.tipo_caja=='p':
									dato['st_ca']= float(obj['comision'])*float(arq.prj_caja)/100
									dato['st_ce']= float(obj['comision'])*float(arq.prj_otra_oficina)/100
								else: # destino es compartido
									dato['st_ca']= float(obj['comision'])*float(arq.prj_caja)/100
									dato['st_ce']= float(obj['comision'])*float(arq.prj_oficina_central)/100
									dato['st_ot']= float(obj['comision'])*float(arq.prj_otra_oficina)/100
						else:
							arq=None
							if CD.estadoTransaccion=='pagado':
								pt= PagoTransferencia.objects.get(id_solicitud_transferencia=str(obj['pk']))
								if conf_prj_arqueo.objects.filter(id_conf=conf.pk,id_caja=pt.idCajaHaber.id_caja.pk).exists():
									arq= conf_prj_arqueo.objects.get(id_conf=conf.pk,id_caja=pt.idCajaHaber.id_caja.pk)
									if arq.prj_caja == None or arq.prj_caja== 0 or arq.prj_caja== '':
										arq= conf_prj_arqueo.objects.get(id_conf=conf.pk,id_caja__id_usuario=O_aux.id_usuario.pk)
								else:
									arq= conf_prj_arqueo.objects.get(id_conf=conf.pk,id_caja__id_usuario=O_aux.id_usuario.pk)
							else:
								arq= conf_prj_arqueo.objects.get(id_conf=conf.pk,id_caja__id_usuario=O_aux.id_usuario.pk)
							if arq.tipo_caja=='p':
								dato['st_ca']= float(obj['comision'])*float(arq.prj_caja)/100
								dato['st_ce']= float(obj['comision'])*float(arq.prj_otra_oficina)/100
							else: # destino es compartido
								dato['st_ca']= float(obj['comision'])*float(arq.prj_caja)/100
								dato['st_ce']= float(obj['comision'])*float(arq.prj_oficina_central)/100
								dato['st_ot']= float(obj['comision'])*float(arq.prj_otra_oficina)/100
						totalD= totalD+ConvertirDecimal(CD.cantidadDinero)
						tcomid = tcomid + float(obj['comision'])
						if obj['monto_conceptos'] != None and obj['monto_conceptos']!='':
							cap= float(CD.cantidadDinero) -float(obj['comision']) -float(obj['monto_conceptos'])
							dato['capi'] = cap
							tcapiD= tcapiD + cap
							tbancoD = tbancoD + float(obj['monto_conceptos'])
						else:
							cap= float(CD.cantidadDinero) -float(obj['comision'])
							dato['capi'] = cap
							tcapiD= tcapiD + cap
						od=od+dato['st_ca']
						cd=cd+dato['st_ce']
						ed=ed+dato['st_ot']
					lista.append(dato)
			total={}
			total['util_soles']= round(tcomis,2)
			#if UtilS['comision__sum'] != None:
			#	total['util_soles']= round(float(UtilS['comision__sum']),2)
			total['util_dolares']=round(tcomid,2)
			total['total_soles']=round(float(totalS),2)
			total['total_dolares']=float(totalD)
			total['tcapid']=float(tcapiD)
			total['tbancod']=float(tbancoD)
			total['tcapis']=round(float(tcapiS),2)
			total['tbancos']=round(float(tbancoS),2)
			total['tcof']=round(os,2)
			total['tcce']=round(cs,2)
			total['tcot']=round(es,2)
			lista.append(total)
			data= json.dumps(lista)
		except:
			data='fail'+ str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
@permission_required('Main.add_oficina')
def consulta_tras_pagadas_caja_liquidado_ajax_view(request):
	if request.is_ajax:
		filtro=request.GET.get('filtro','')
		pkc=request.GET.get('pkC')
		pkl=request.GET.get('pkL')
		F1=request.GET.get('F1','')
		F2=request.GET.get('F2','')
		if filtro=='h':
			F1= str(datetime.date.today())
			filtro= 'f'
		totalD=0
		totalS=0
		data=''
		try:
			C= Cajas.objects.get(pk=pkc)
			usr=C.id_usuario.usuario
			if F1 != '':
				if filtro =='f':
					if F1 !='':
						fecha= datetime.datetime.strptime(F1, '%Y-%m-%d')
						horamin= datetime.datetime.combine(fecha,datetime.time.min)
						horamax= datetime.datetime.combine(fecha,datetime.time.max)
						consulta = list(TCajaHaber.objects.filter(id_caja=C.pk,fecha__range=(horamin,horamax),tablaRelacional='PagoTransferencia',conceptoDetalle='Pago transferencia',aux2='bal'+str(pkl)).values('pk','fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo','id_personal'))
					else:
						#consulta = list(TCajaHaber.objects.filter(id_personal__usuario=usr).exclude(tablaRelacional='CajaCierre').values('pk','fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo'))
						data='fail'
				elif filtro=='ef':
					fecha1= datetime.datetime.strptime(F1, '%Y-%m-%d')
					fecha2= datetime.datetime.strptime(F2, '%Y-%m-%d')
					fhoramin= datetime.datetime.combine(fecha1,datetime.time.min)
					fhoramax= datetime.datetime.combine(fecha2,datetime.time.max)
					consulta = list(TCajaHaber.objects.filter(id_caja=C.pk,fecha__range=(fhoramin,fhoramax),tablaRelacional='PagoTransferencia',conceptoDetalle='Pago transferencia',aux2='bal'+str(pkl)).values('pk','fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo','id_personal'))
				else:
					#consulta = list(TCajaHaber.objects.filter(id_personal__usuario=usr).exclude(tablaRelacional='CajaCierre').values('pk','fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo'))
					data='fail'
			else:
				#consulta = list(TCajaHaber.objects.filter(id_personal__usuario=usr).exclude(tablaRelacional='CajaCierre').values('pk','fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo'))
				F1= str(datetime.date.today())
				fecha= datetime.datetime.strptime(F1, '%Y-%m-%d')
				horamin= datetime.datetime.combine(fecha,datetime.time.min)
				horamax= datetime.datetime.combine(fecha,datetime.time.max)
				consulta = list(TCajaHaber.objects.filter(id_caja=C.pk,fecha__range=(horamin,horamax),tablaRelacional='PagoTransferencia',conceptoDetalle='Pago transferencia',aux2='bal'+str(pkl)).values('pk','fecha','conceptoDetalle','tipoDocumento','cantidadDinero','moneda','nroRecibo','id_personal'))
			lista=[]
			conf= conf_liquid_Cajas.objects.get(id_caja=C.pk)
			os=0#comision para la oficina  soles
			cs=0#comision para central   soles
			es=0#comision para la otra oficina soles
			od=0
			cd=0
			ed=0
			comis=0
			comid=0
			for obj in consulta:
				dato={}
				if str(obj['moneda'])=='soles':
					totalS= totalS+obj['cantidadDinero']
				if str(obj['moneda'])=='dolares':
					totalD= totalD+obj['cantidadDinero']
				pt = PagoTransferencia.objects.get(idCajaHaber=obj['pk'])
				oori=pt.id_solicitud_transferencia.idCajaDebe.id_oficina.nombre_oficina
				odest=''
				if ST_BaseExterna.objects.filter(id_transferencia=pt.id_solicitud_transferencia.pk).exists():
					stbe= ST_BaseExterna.objects.get(id_transferencia=pt.id_solicitud_transferencia.pk)
					if stbe.id_base_ori!= None and stbe.id_base_ori!='':
						be2= Base_Ext.objects.get(pk=stbe.id_base_ori)
						oori= be2.nombre_base
					if stbe.id_base_des!= None and stbe.id_base_des!='':
						be1= Base_Ext.objects.get(pk=stbe.id_base_des)
						odest=' /'+'<b style="color: #d43f3a;">'+be1.nombre_base+'</b> | '
				C_aux= Cajas.objects.get(pk=pt.id_solicitud_transferencia.idCajaDebe.id_caja.pk)
				O_aux = Oficina.objects.get(pk= pt.id_solicitud_transferencia.idCajaDebe.id_oficina.pk)
				dato['concepto']= 'A: '+pt.id_solicitud_transferencia.nombre_beneficiado +' '+pt.id_solicitud_transferencia.Apellido_paterno_beneficiado+' '+pt.id_solicitud_transferencia.Apellido_materno_beneficiado+odest+'<b style="color: #4cae4c;"> De: '+oori+ '</b> /<b  style="color: #d58512;">'+pt.id_solicitud_transferencia.idCajaDebe.id_personal.nombre +' '+pt.id_solicitud_transferencia.idCajaDebe.id_personal.Apellido_paterno+'<b>'
				dato['st'] = pt.id_solicitud_transferencia.idCajaDebe.nroRecibo
				dtd=pt.id_solicitud_transferencia.idCajaDebe.aux1
				comi=0
				if esReal(dtd)>0:
					comi=esReal(dtd)
				else:
					comi=pt.id_solicitud_transferencia.comision
				dato['comision']=float(comi)
				#dato['comision']=pt.id_solicitud_transferencia.comision
				dato['fecha'] = str(obj['fecha'].strftime("%d-%m-%Y %H:%M %p"))
				dato['tipodoc']= str(obj['tipoDocumento'])
				dato['moneda']= str(obj['moneda'])
				p= Personal.objects.get(pk=obj['id_personal'])
				dato['ope']= p.nombre
				#dato['ope']= p.nombre + ' ' +p.Apellido_paterno +' '+p.Apellido_materno
				dato['monto']= normalizar(float(obj['cantidadDinero']))
				dato['nroR']= str(obj['nroRecibo'])
				dato['st_ca']= 0
				dato['st_ce']= 0
				dato['st_ot']= 0
				#comi=pt.id_solicitud_transferencia.comision
				arq=None
				if conf_prj_arqueo.objects.filter(id_conf=conf.pk,id_caja=C_aux.pk).exists():
					arq= conf_prj_arqueo.objects.get(id_conf=conf.pk,id_caja=C_aux.pk)
					if arq.prj_caja == None or arq.prj_caja== 0 or arq.prj_caja== '':
						arq= conf_prj_arqueo.objects.get(id_conf=conf.pk,id_caja__id_usuario=O_aux.id_usuario.pk)
				else:
					if conf_prj_arqueo.objects.filter(id_conf=conf.pk,id_caja__id_usuario=O_aux.id_usuario.pk).exists():
						arq= conf_prj_arqueo.objects.get(id_conf=conf.pk,id_caja__id_usuario=O_aux.id_usuario.pk)
					else:
						arq= conf_prj_arqueo.objects.get(id_conf__id_caja__id_usuario=conf.id_caja.id_oficina.id_usuario.pk,id_caja__id_usuario=O_aux.id_usuario.pk)
				if arq.tipo_caja=='p':
					dato['st_ca']= float(comi)*float(arq.prj_caja)/100
					dato['st_ce']= float(comi)*float(arq.prj_otra_oficina)/100
				else: # destino es compartido
					dato['st_ca']= float(comi)*float(arq.prj_caja)/100
					dato['st_ce']= float(comi)*float(arq.prj_oficina_central)/100
					dato['st_ot']= float(comi)*float(arq.prj_otra_oficina)/100
				if str(obj['moneda'])=='soles':
					os=os+dato['st_ca']
					cs=cs+dato['st_ce']
					es=es+dato['st_ot']
					comis=comis+float(dato['comision'])
				if str(obj['moneda'])=='dolares':
					od=od+dato['st_ca']
					cd=cd+dato['st_ce']
					ed=ed+dato['st_ot']
					comid=comid+float(dato['comision'])
				lista.append(dato)
			total={}
			total['total_soles']=round(float(totalS),2)
			total['total_dolares']=float(totalD)
			total['util_soles']= round(comis,2)
			total['util_dolares']=str(comid)
			total['tcof']=round(os,2)
			total['tcce']=round(cs,2)
			total['tcot']=round(es,2)
			lista.append(total)
			data= json.dumps(lista)
		except:
			data='fail'+ str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
@permission_required('Main.add_oficina')
def CajasPersonalConfigArqueo_ajax_view(request):
	if request.is_ajax:
		idc = request.GET.get('idCa')#caja para configurar(caja que realizara el arqueo)
		idO = request.GET.get('idOfi')
		data=''
		lista=[]
		try:
			conf=None
			if conf_liquid_Cajas.objects.filter(id_caja=idc).exists():
				conf= conf_liquid_Cajas.objects.get(id_caja=idc)
			else:
				c1= Cajas.objects.get(pk=idc)
				conf = conf_liquid_Cajas(id_caja=c1)
				conf.save()
			consulta1 = list(Cajas.objects.filter(id_oficina=idO).values('pk','nombre','estado','id_oficina','id_usuario'))
			for obj in consulta1:
				IdP= str(obj['id_usuario'])
				Per= Personal.objects.get(pk=IdP)
				#consulta3=list(SaldoDisponibleCajas.objects.filter(id_caja=IdC).values('saldo_soles','saldo_dolares'))
				dato={}
				dato['c_id']=obj['pk']
				dato['c_nombre']=obj['nombre']
				dato['c_estado']=obj['estado']
				dato['p_nombre']=Per.nombre
				dato['p_ap']=Per.Apellido_paterno
				dato['p_am']=Per.Apellido_materno
				dato['pkConf']=''
				dato['tc']=''
				dato['po']=''#porcentaje de oficina (es la oficina q saca la cuenta)
				dato['pc']=''#porcentaje para oficina central(imperial)
				dato['pe']=''#porcentaje para la otra oficina
				if conf_prj_arqueo.objects.filter(id_conf=conf.pk,id_caja=obj['pk']).exists():
					aux=conf_prj_arqueo.objects.get(id_conf=conf.pk,id_caja=obj['pk'])
					dato['pkConf']= aux.pk
					dato['tc']=aux.tipo_caja
					dato['po']=str(aux.prj_caja)
					dato['pc']=str(aux.prj_oficina_central)
					dato['pe']=str(aux.prj_otra_oficina)
				else:
					c2= Cajas.objects.get(pk=obj['pk'])
					conf_prj= conf_prj_arqueo(id_conf=conf,id_caja=c2,tipo_caja='p')
					conf_prj.save()
					dato['pkConf']= conf_prj.pk
					dato['tc']=conf_prj.tipo_caja
				lista.append(dato)
			data= json.dumps(lista)
		except:
			data='error en consulta' + str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

"""
@login_required
def ListaPeticionesCtaAhorrosFiltro(request):
	if request.is_ajax:
		idCta=request.GET.get('idctaahorros','')
		consulta=list(PeticionesCtaAhorros.objects.filter(idctaahorros=idCta).values('id','idctaahorros','estado','monto','tipoMoneda','fechaHora','id_personal','saldo','esSobregiro','montoSobregiro','interesSobregiro','nroDiasSobregiro'))
		lista=[]
		for obj in consulta:
			dato={}
			idPers= str(obj['id_personal'])
			idCta= str(obj['idctaahorros'])
			consulta2=CtaCte.objects.filter(pk=idCta).values('id_cliente','idCajaDebe')
			consulta3=Cliente.objects.filter(pk=consulta2[0]['id_cliente']).values('nombre','Apellido_paterno','Apellido_materno')
			consulta4=TCajaDebe.objects.filter(pk=consulta2[0]['idCajaDebe']).values('id_oficina','id_personal')
			consulta5=Oficina.objects.filter(pk=consulta4[0]['id_oficina']).values('nombre_oficina')
			consulta6=Personal.objects.filter(pk=consulta4[0]['id_personal']).values('usuario')
			dato['id']= obj['id']
			dato['usuario']= consulta6[0]['usuario']
			dato['oficina']= consulta5[0]['nombre_oficina']
			dato['nombre']= consulta3[0]['nombre']
			dato['ap']= consulta3[0]['Apellido_paterno']
			dato['am']= consulta3[0]['Apellido_materno']
			dato['idCta']= idCta
			dato['fechaHora']= str(obj['fechaHora'].strftime("%Y-%m-%d %H:%M %p"))
			dato['estado']=obj['estado']
			dato['monto']=str(obj['monto'])
			dato['saldo']=str(obj['saldo'])
			dato['moneda']=obj['tipoMoneda'] 
			lista.append(dato)
		data= json.dumps(lista)
	else:
		data='fail' 
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
@transaction.atomic
def ActualizarEstadoPeticionCtaAhorros_ajax(request):
	data=''
	if request.is_ajax:
		id=request.GET.get('id','')
		estado=request.GET.get('estado','')
		usr = request.user.username
		if Personal.objects.filter(usuario=usr).exists():
			u= Personal.objects.get(usuario=usr)
			cargo=u.cargo
		else:
			u=Gerente.objects.get(usuario=usr)
			cargo='gerentegeneral'
		try:
			with transaction.atomic():
				if PeticionesCtaAhorros.objects.filter(pk=id,estado="ESPERANDO").exists():
					aux= PeticionesCtaAhorros.objects.select_for_update().filter(pk=id).update(estado=estado,id_autorizado=u.pk,cargo=cargo)
					data='exito'
				else:
					if PeticionesCtaAhorros.objects.filter(pk=id,estado="CONFIRMADO").exists():
						data='Autorización ya realizada'
					else:
						data='Autorización ya realizada'

		except IntegrityError:
			data='fail'
	else:
		data='fail'+ str(sys.exc_info()[1])

	exito={'resultado':data}
	resultado= json.dumps(exito)
	mimetype="application/json"
	return HttpResponse(resultado,mimetype)

"""
@login_required
def Transfe_Autorizacion_view(request):
	try:
		usr= request.user.username
		cargo =''
		C= Cajas.objects.get(id_usuario__usuario=usr)
		if C.id_usuario.pk == C.id_oficina.id_usuario.pk:
			cargo='administrador'
	except:
		cargo =''
	return render(request,'TransfereciaAutorizacion.html',{"cargo":cargo} )


@login_required
def listaSolicitudesAutorizacion_ajax_view(request):#creados
	if request.is_ajax:
		tipo=request.GET.get('tipo','f')
		dni_razon=request.GET.get('razon','')
		filtro=request.GET.get('filtro','')
		F1=request.GET.get('F1','')
		F2=request.GET.get('F2','')
		if filtro=='h':
			F1= str(datetime.date.today())
			filtro= 'f'
		
		usr= request.user.username
		try:
			C = Cajas.objects.get(id_usuario__usuario=usr)
			horamin = None
			horamax = None
			if tipo=="f":
				if filtro =='f':
					if F1 !='':
						fecha= datetime.datetime.strptime(F1, '%Y-%m-%d')
						horamin= datetime.datetime.combine(fecha,datetime.time.min)
						horamax= datetime.datetime.combine(fecha,datetime.time.max)
						consulta= SolicitudDesbloqueoST.objects.filter(fecha__range=(horamin,horamax)).order_by('-pk').values('pk')
				elif filtro=='ef':
					if F1 !='' and F2 !='':
						fecha1= datetime.datetime.strptime(F1, '%Y-%m-%d')
						fecha2= datetime.datetime.strptime(F2, '%Y-%m-%d')
						horamin= datetime.datetime.combine(fecha1,datetime.time.min)
						horamax= datetime.datetime.combine(fecha2,datetime.time.max)
						consulta = SolicitudDesbloqueoST.objects.filter(fecha__range=(horamin,horamax)).order_by('-pk').values('pk')
				else:
					consulta=[]
			elif tipo=="n":
				consulta= SolicitudDesbloqueoST.objects.filter(Q(id_solicitud__nombre_beneficiado__icontains=dni_razon)|Q(id_solicitud__Apellido_paterno_beneficiado__icontains=dni_razon)|Q(id_solicitud__Apellido_materno_beneficiado__icontains=dni_razon)|Q(id_solicitud__dni_beneficiado__icontains=dni_razon)|Q(id_solicitud__id_cliente__dni__icontains=dni_razon)|Q(id_solicitud__id_cliente__nombre__icontains=dni_razon)|Q(id_solicitud__id_cliente__Apellido_materno__icontains=dni_razon)|Q(id_solicitud__id_cliente__Apellido_paterno__icontains=dni_razon)).order_by('-pk').values('pk')
				
			elif tipo=="a":
				consulta= SolicitudDesbloqueoST.objects.filter(id_solicitud__idCajaDebe__estadoTransaccion="activo").order_by('-pk').values('pk')
			else:
				consulta = []
			#consulta1= list(SolicitudTransferencia.objects.filter(idCajaDebe__id_oficina=C.id_oficina.pk,idCajaDebe__id_caja=C.pk,idCajaDebe__fecha__range=(horamin,horamax)).order_by('-pk').values('pk','idCajaDebe','id_cliente','id_oficina','comision','nombre_beneficiado','Apellido_paterno_beneficiado','Apellido_materno_beneficiado','dni_beneficiado','observaciones','monto_conceptos','otros_conceptos','dniMenor','banco','id_beneficiario','nroCta','tipo_operacion','cel_referencia','nro_operacion','nro_giro','clave'))
			lista=[]
			for obj in consulta:
				soli_d = SolicitudDesbloqueoST.objects.get(pk=obj['pk'])
				debe= TCajaDebe.objects.get(pk=soli_d.id_solicitud.idCajaDebe.pk)
				cli=Cliente.objects.get(pk=soli_d.id_solicitud.id_cliente.pk)
				ofi = Oficina.objects.get(pk=soli_d.id_solicitud.id_oficina.pk)
				sq_ex=ExtornoTransferencia.objects.filter(id_solicitud_transferencia=soli_d.id_solicitud.pk)
				sq2=PagoTransferencia.objects.filter(id_solicitud_transferencia=soli_d.id_solicitud.pk)

				be=Cliente.objects.get(pk=soli_d.id_solicitud.id_beneficiario)

				cantidaEnvio= ConvertirDecimal(debe.cantidadDinero)-ConvertirDecimal(soli_d.id_solicitud.comision) -ConvertirDecimal(soli_d.id_solicitud.monto_conceptos)
				dato={}	
				#---------
				dato['so_fecha']=str(soli_d.fecha.strftime("%d-%m-%Y %H:%M"))
				dato['so_pk']= obj['pk']
				dato['so_oficina'] = soli_d.id_oficina.nombre_oficina
				dato['so_caja']=soli_d.id_caja.nombre
				dato['so_personal'] = soli_d.id_personal.nombre +' ' +soli_d.id_personal.Apellido_paterno
				dato['so_tabla'] = soli_d.tabla
				dato['so_autorizador'] = soli_d.autorizado_por
				dato['so_estado_au'] = soli_d.estadoAutorizacion

				#---------
				usuGlo=''
				if debe.conceptoDetalle[2] =='-':
					usuGlo= debe.conceptoDetalle.split('-')[2]

				delta= datetime.datetime.today() - debe.fecha
				dato['dias']= delta.days
				dato['transEx']='no'
				if delta.days >1:
					dato['transEx']= 'si'
				dato['usuGlo']= usuGlo

				dato['fecha']=str(debe.fecha.strftime("%d-%m-%Y %H:%M"))
				dato['AutEx']=debe.aux1
				dato['nroRecibo']=debe.nroRecibo
				dato['estado']= debe.estadoTransaccion
				dato['personal']=debe.id_personal.nombre+" "+ debe.id_personal.Apellido_paterno+" "+debe.id_personal.Apellido_materno
				dato['monto']=normalizar(cantidaEnvio)
				dato['moneda']= debe.moneda
				dato['id_trans']=str(soli_d.id_solicitud.pk)
				dato['origen']= debe.id_oficina.nombre_oficina
				dato['destino']= ofi.nombre_oficina
				dato['comision']= str(soli_d.id_solicitud.comision)
				dato['nombre_bnf']=soli_d.id_solicitud.nombre_beneficiado
				dato['dni_bnf']=soli_d.id_solicitud.dni_beneficiado
				dato['paterno_bnf']=soli_d.id_solicitud.Apellido_paterno_beneficiado
				dato['materno_bnf']= soli_d.id_solicitud.Apellido_materno_beneficiado
				dato['obs']=soli_d.id_solicitud.observaciones
				dato['nombre_rmt']=cli.nombre
				dato['paterno_rmt']=cli.Apellido_paterno
				dato['materno_rmt']=cli.Apellido_materno
				dato['dni_rmt']=cli.dni
				dato['monto_conceptos']= str(soli_d.id_solicitud.monto_conceptos)
				dato['otros_conceptos']= soli_d.id_solicitud.otros_conceptos
				dato['banco']= soli_d.id_solicitud.banco
				dato['nroCta']= soli_d.id_solicitud.nroCta
				dato['tipo_operacion']= soli_d.id_solicitud.tipo_operacion
				dato['cel_referencia']= soli_d.id_solicitud.cel_referencia
				dato['nro_operacion']= soli_d.id_solicitud.nro_operacion
				dato['nro_giro']= soli_d.id_solicitud.nro_giro
				dato['clave']= soli_d.id_solicitud.clave
				
				dato['fp']=''
				dato['nropt']=''
				dato['personalpt']=''

				dato['fe']=''
				dato['obs_e']=''

				if sq2.count()>0:
					sqpt=PagoTransferencia.objects.get(id_solicitud_transferencia=soli_d.id_solicitud.pk)
					dato['fp']=str(sqpt.idCajaHaber.fecha.strftime("%d-%m-%Y %H:%M"))
					dato['nropt']=sqpt.idCajaHaber.nroRecibo
					#dato['personalpt']=sqpt.idCajaHaber.id_personal.nombre+' '+sqpt.idC
				
				if sq_ex.count()>0:
					sqex=ExtornoTransferencia.objects.get(id_solicitud_transferencia=soli_d.id_solicitud.pk)
					dato['fe']=str(sqex.idCajaHaber.fecha.strftime("%d-%m-%Y %H:%M"))
					dato['obs_e'] =sqex.observaciones

				lista.append(dato)
			data= json.dumps(lista)
		except:
			data='fail'+ str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)


@login_required
def listaSolicitudesAutorizacion_bancos_ajax_view(request):#creados
	if request.is_ajax:
		tipo=request.GET.get('tipo','f')
		dni_razon=request.GET.get('razon','')
		filtro=request.GET.get('filtro','')
		F1=request.GET.get('F1','')
		F2=request.GET.get('F2','')
		if filtro=='h':
			F1= str(datetime.date.today())
			filtro= 'f'
		
		usr= request.user.username
		try:
			C = Cajas.objects.get(id_usuario__usuario=usr)
			horamin = None
			horamax = None
			if tipo=="f":
				if filtro =='f':
					if F1 !='':
						fecha= datetime.datetime.strptime(F1, '%Y-%m-%d')
						horamin= datetime.datetime.combine(fecha,datetime.time.min)
						horamax= datetime.datetime.combine(fecha,datetime.time.max)
						consulta= SolicitudDesbloqueoSTBancos.objects.filter(fecha__range=(horamin,horamax)).order_by('-pk').values('pk')
				elif filtro=='ef':
					if F1 !='' and F2 !='':
						fecha1= datetime.datetime.strptime(F1, '%Y-%m-%d')
						fecha2= datetime.datetime.strptime(F2, '%Y-%m-%d')
						horamin= datetime.datetime.combine(fecha1,datetime.time.min)
						horamax= datetime.datetime.combine(fecha2,datetime.time.max)
						consulta = SolicitudDesbloqueoSTBancos.objects.filter(fecha__range=(horamin,horamax)).order_by('-pk').values('pk')
				else:
					consulta=[]
			elif tipo=="n":
				consulta= SolicitudDesbloqueoSTBancos.objects.filter(Q(id_solicitud__nombre_beneficiado__icontains=dni_razon)|Q(id_solicitud__paterno_beneficiado__icontains=dni_razon)|Q(id_solicitud__materno_beneficiado__icontains=dni_razon)|Q(id_solicitud__dni_beneficiado__icontains=dni_razon)|Q(id_solicitud__id_cliente__dni__icontains=dni_razon)|Q(id_solicitud__id_cliente__nombre__icontains=dni_razon)|Q(id_solicitud__id_cliente__Apellido_materno__icontains=dni_razon)|Q(id_solicitud__id_cliente__Apellido_paterno__icontains=dni_razon)).order_by('-pk').values('pk')
				
			elif tipo=="a":
				consulta= SolicitudDesbloqueoSTBancos.objects.filter(id_solicitud__idCajaDebe__estadoTransaccion="activo").order_by('-pk').values('pk')
			else:
				consulta = []
			#consulta1= list(SolicitudTransferencia.objects.filter(idCajaDebe__id_oficina=C.id_oficina.pk,idCajaDebe__id_caja=C.pk,idCajaDebe__fecha__range=(horamin,horamax)).order_by('-pk').values('pk','idCajaDebe','id_cliente','id_oficina','comision','nombre_beneficiado','Apellido_paterno_beneficiado','Apellido_materno_beneficiado','dni_beneficiado','observaciones','monto_conceptos','otros_conceptos','dniMenor','banco','id_beneficiario','nroCta','tipo_operacion','cel_referencia','nro_operacion','nro_giro','clave'))
			lista=[]
			for obj in consulta:
				soli_d = SolicitudDesbloqueoSTBancos.objects.get(pk=obj['pk'])
				debe= TCajaDebe.objects.get(pk=soli_d.id_solicitud.idCajaDebe.pk)
				cli=Cliente.objects.get(pk=soli_d.id_solicitud.id_cliente.pk)
				sq_ex=ExtornoTransferenciaBancos.objects.filter(id_solicitud_transferencia=soli_d.id_solicitud.pk)
				sq2=TransferenciaBancoProcesado.objects.filter(id_solicitud_transferencia=soli_d.id_solicitud.pk)

				be=Cliente.objects.get(pk=soli_d.id_solicitud.id_beneficiario)
				dato={}	
				#---------
				dato['so_fecha']=str(soli_d.fecha.strftime("%d-%m-%Y %H:%M"))
				dato['so_pk']= obj['pk']
				dato['so_oficina'] = soli_d.id_oficina.nombre_oficina
				dato['so_caja']=soli_d.id_caja.nombre
				dato['so_personal'] = soli_d.id_personal.nombre +' ' +soli_d.id_personal.Apellido_paterno
				dato['so_tabla'] = soli_d.tabla
				dato['so_autorizador'] = soli_d.autorizado_por
				dato['so_estado_au'] = soli_d.estadoAutorizacion

				#---------
				usuGlo=''
				if debe.conceptoDetalle[2] =='-':
					usuGlo= debe.conceptoDetalle.split('-')[2]

				delta= datetime.datetime.today() - debe.fecha
				dato['dias']= delta.days
				dato['transEx']='no'
				if delta.days >1:
					dato['transEx']= 'si'
				dato['usuGlo']= usuGlo

				dato['fecha']=str(debe.fecha.strftime("%d-%m-%Y %H:%M"))
				dato['AutEx']=debe.aux1
				dato['nroRecibo']=debe.nroRecibo
				dato['estado']= debe.estadoTransaccion
				dato['obs_re']=''
				dato['id_personal']=debe.id_personal.nombre+' ' + debe.id_personal.Apellido_paterno
				dato['monto']=normalizar(soli_d.id_solicitud.monto)
				dato['moneda']= debe.moneda
				dato['id_trans']=str(soli_d.id_solicitud.pk)
				dato['origen']= debe.id_oficina.nombre_oficina
				dato['comicion']= str(soli_d.id_solicitud.comision)
				dato['nombre_bnf']=soli_d.id_solicitud.nombre_beneficiado
				dato['dni_bnf']=soli_d.id_solicitud.dni_beneficiado
				dato['paterno_bnf']=soli_d.id_solicitud.paterno_beneficiado
				dato['materno_bnf']= soli_d.id_solicitud.materno_beneficiado
				dato['obs']=soli_d.id_solicitud.observaciones
				dato['nombre_rmt']=cli.nombre
				dato['paterno_rmt']=cli.Apellido_paterno
				dato['materno_rmt']=cli.Apellido_materno
				dato['dni_rmt']=cli.dni
				dato['monto_conceptos']= str(soli_d.id_solicitud.monto_conceptos)
				dato['otros_conceptos']= soli_d.id_solicitud.otros_conceptos
				dato['banco']= soli_d.id_solicitud.banco
				dato['id_banco']= soli_d.id_solicitud.id_banco
				dato['nroCta']= soli_d.id_solicitud.nroCta
				dato['tipo_operacion']= soli_d.id_solicitud.tipo_operacion
				dato['cel_referencia']= soli_d.id_solicitud.cel_referencia
				dato['nro_operacion']= soli_d.id_solicitud.nro_operacion
				dato['nro_giro']= soli_d.id_solicitud.nro_giro
				dato['clave']= soli_d.id_solicitud.clave
				dato['estado_trans']= soli_d.id_solicitud.estado_transferencia


				dato['fp']=''
				dato['nropt']=''
				dato['personalpt']=''

				dato['fe']=''
				dato['obs_e']=''

				if sq2.count()>0:
					sqpt=TransferenciaBancoProcesado.objects.get(id_solicitud_transferencia=soli_d.id_solicitud.pk)
					dato['fp']=str(sqpt.fecha.strftime("%d-%m-%Y %H:%M"))
					#dato['personalpt']=sqpt.idCajaHaber.id_personal.nombre+' '+sqpt.idC
				
				if sq_ex.count()>0:
					sqex=ExtornoTransferenciaBancos.objects.get(id_solicitud_transferencia=soli_d.id_solicitud.pk)
					dato['fe']=str(sqex.idCajaHaber.fecha.strftime("%d-%m-%Y %H:%M"))
					dato['obs_e'] =sqex.observaciones

				lista.append(dato)
			data= json.dumps(lista)
		except:
			data='fail'+ str(sys.exc_info()[1])
	else:
		data='fail'
	mimetype="application/json"
	return HttpResponse(data,mimetype)

@login_required
def transfe_autorizacion_banco_view(request):
	try:
		usr= request.user.username
		cargo =''
		C= Cajas.objects.get(id_usuario__usuario=usr)
		if C.id_usuario.pk == C.id_oficina.id_usuario.pk:
			cargo='administrador'
	except:
		cargo =''
	return render(request,'TransfereciaAutorizacionBancos.html',{"cargo":cargo} )

@login_required
def cuenta_cte_main_autorizacion_view(request):
	try:
		usr= request.user.username
		cargo =''
		C= Cajas.objects.get(id_usuario__usuario=usr)
		if C.id_usuario.pk == C.id_oficina.id_usuario.pk:
			cargo='administrador'
	except:
		cargo =''
	return render(request,'ListaCuentasCorrienteAutorizacion_main.html',{"cargo":cargo} )
	