var Devoluciones = function(){
	this.baseUrl=null;
	this.devoltionToolsObj=null;
	this.setUrl=function(url){
		this.baseUrl=url;
	}	
	this.test=function(){
		console.log('La clase Devoluciones ha sido instanciado correctamente');
	}
	this.validador={
		productos:function(){
			return {
				result:$("#devolucion-productos-wrapper table tr").size()>0,
				msg:"Por favor agregue productos a la lista de devolucion",
				type:1,
				action:function(){
					
				}
			}
		},
		clienteNombre:function(){
			return {
				result:($.trim($("#devolucion-venta-cliente-nombre").val())!=""?true:false),
				msg:"Por favor ingrese el nombre del cliente",
				type:2,
				action:function(){
					$('#nueva-devolucion-cliente-info').on('shown.bs.modal', function (){
						$("#devolucion-venta-cliente-nombre").focus();
					});
					$('#nueva-devolucion-cliente-info').modal("show");
					$("#devolucion-venta-cliente-nombre").focus();
				}
			}
		},
		clienteDUIoNIT:function(){
			return {
				result:($.trim($("#devolucion-venta-cliente-dui").inputmask('unmaskedvalue')).length == 9 || $.trim($("#devolucion-venta-cliente-nit").inputmask('unmaskedvalue')).length == 14?true:false),
				msg:"Por favor ingrese el N&uacute;mero de Documento Unico de Identidad (DUI) o el N&uacute;mero de Identificaci&oacute;n tributaria (NIT) v&aacute;lido",
				type:2,
				action:function(){
					$('#nueva-devolucion-cliente-info').on('shown.bs.modal', function (){
						$("#devolucion-venta-cliente-dui").focus();
					});
					$('#nueva-devolucion-cliente-info').modal("show");
					$("#devolucion-venta-cliente-dui").focus();
				}
			}
		},
		credito:function(){
			return {
				result:($.trim($("#credito-devolucion").val())!=''?true:false),
				type:3,
				action:function(){
					if(!($("#nueva-venta-credito").data('bs.modal') || {}).isShown){
						$("#devolucion-sel-credito").modal("show");
						$("#devolucion-sel-credito").on('shown.bs.modal', function () {
							$("#creditos-cliente-list").html("<div style='text-align:center;margin-top:21px;'><i class='fa fa-spinner'></i><br><small class='text-muted'>Cargando creditos...</small></div>");
							$.get(window.location.protocol+"//"+window.location.host+"/"+window.location.pathname.split('/')[1]+"/clientes/creditosxclientedevmin",{cliente:$.trim($("#devolucion-venta-cliente").val()),id:$("#dev-detalles-venta-info-credito").attr("data-value")},function(creditos){
									$("#creditos-cliente-list").html(creditos);
							});
						});
					}
				}
			}
		}
	},	
	this.validarDevolucion=function($sender){
		if($sender){
			$sender.attr('disabled','disabled');
		}
		var _this=this;
		var reglasTipo1=1;
		var reglasTipo2=2;
		var reglasTipo3=0;
		var reglas={productos:this.validador.productos(),clienteNombre:this.validador.clienteNombre(),clienteDUIoNIT:this.validador.clienteDUIoNIT()}
		/*Devolucion con abono a credito*/
		if($("#devolucion-venta-forma").val()==0){
			reglas.credito=this.validador.credito();
			reglasTipo3+=1;
		}
		var valid=true;
		var reglasCountTipo1=0;
		var reglasCountTipo2=0;
		var reglasCountTipo3=0;
		var errorInType=null;
		$.each(reglas,function(i,regla){
			if(regla.type){
				if(regla.type==1)
					reglasCountTipo1+=1;
				else if(regla.type==2)
					reglasCountTipo2+=1;
				else if(regla.type==3)
					reglasCountTipo3+=1;
			}
			if(!regla.result){
				valid=regla.result;
				if(regla.msg)
					_this.showMsgDevolucion('error',regla.msg);
				if(regla.action)
					regla.action();
				if(regla.type)
					errorInType=regla.type;
			}else{
				if(reglasCountTipo2==reglasTipo2)
					$('#nueva-devolucion-cliente-info').modal("hide");
				if(reglasCountTipo3==reglasTipo3)
					$('#devolucion-sel-credito').modal("hide"); 
			}
			return valid;
		});
		if(valid){
			$("#devolucion-confirm-total").text("("+$('#devolucion-totales-wrapper tbody tr.totalTotal td.totalval').attr('data-value')+")");
			$('#devolucion-confirmar').on('shown.bs.modal', function () {
				$("#devolucion-confirmar-guardar-btn").focus();
				$("#guardar-devolucion-btn").attr('disabled','disabled');
			});
			$("#devolucion-confirmar").modal({backdrop: 'static', keyboard: false});
			$("#devolucion-confirmar").modal("show");
		}else{
			if(errorInType==1)
				$("#guardar-devolucion-btn").removeAttr('disabled');
			else if(errorInType==2)
				$("#nueva-devolucion-doc-guardar-btn").removeAttr('disabled');
			else if(errorInType==3)
				$("#devolucion-credito-guardar-btn").removeAttr('disabled');
		}
	}
	this.processDevolucion=function(){
		var _this=this;
		$("#devolucion-cancelar-guardar-btn").attr('disabled','disabled');
		$("#devolucion-confirmar-guardar-btn").attr('disabled','disabled');
		$("#devolucion-procesar-status-text").text('Guardando devoluci&oacute;n...');
		$("#devolucion-procesar-status-icon").html("<i class='fa fa-spinner fa-5x'></i>");
		var productos=[];
		var totales=[];
		var products=$("#devolucion-productos-wrapper table tr");
		var totals=$("#devolucion-totales-wrapper tr");
		$.each(products,function(index,product){
			productos.push({descarga:true,id:$(product).attr('data-id'),pre:$(product).attr('data-pre'),tipo:$(product).attr('data-tipo'),interno:$(product).attr('data-interno'),uequiv:$(product).attr('data-uequiv'),desc:$(product).find('.table-desc').attr('data-value'),cant:$(product).find('.table-cant').attr('data-value'),costo:$(product).find('.table-precio').attr('data-value'),tipoventa:$(product).find('.table-tipoventa').attr('data-value')});
		});
		$.each(totals,function(index,total){
			switch($(total).attr('class')){
				case 'totalSumas':totales.push({totalSumas:$(total).find('.totalval').attr('data-value')});break;
				case 'totalGrabadas':totales.push({totalGrabadas:$(total).find('.totalval').attr('data-value')});break;
				case 'totalIVA':totales.push({totalIVA:$(total).find('.totalval').attr('data-value')});break;
				case 'totalIVApercibido':totales.push({totalIVApercibido:$(total).find('.totalval').attr('data-value')});break;
				case 'totalIVAretenido':totales.push({totalIVAretenido:$(total).find('.totalval').attr('data-value')});break;
				case 'totalSubtotal':totales.push({totalSubtotal:$(total).find('.totalval').attr('data-value')});break;
				case 'totalNS':totales.push({totalNS:$(total).find('.totalval').attr('data-value')});break;
				case 'totalExento':totales.push({totalExento:$(total).find('.totalval').attr('data-value')});break;
				case 'totalTotal':totales.push({totalTotal:$(total).find('.totalval').attr('data-value')});break;
			}
		});
		var serieid=$('#dev-detalles-venta-info-serieid').attr('data-value');
		var serie=$('#dev-detalles-venta-info-serie').attr('data-value');
		var num=$('#dev-detalles-venta-info-numdoc').attr('data-value');
		if($("#devolucion-documento").val()=="8"){
			serieid=$('#devolucion-doc-ncred-serie option:selected').attr('data-id');
			serie=$('#devolucion-doc-ncred-serie').val();
			num=$('#devolucion-doc-ncred-numero').val();
		}
		var dataDev={
			venta:$('#dev-detalles-venta-info-id').attr('data-value'),
			documento:$("#devolucion-documento").val(),
			serieid:serieid,
			docserie:serie,
			numero:num,
			cliente:$("#devolucion-venta-cliente").val(),
			clientenombre:$("#devolucion-venta-cliente-nombre").val(),
			clientedui:$("#devolucion-venta-cliente-dui").val(),
			clientenit:$("#devolucion-venta-cliente-nit").val(),
			condicion:$("#devolucion-venta-condicion").val(),
			devforma:$("#devolucion-venta-forma").val(),
			credito:$('#credito-devolucion').val(),
			motivo:$('#devolucion-motivo').val(),
			productos:JSON.stringify(productos),
			totales:JSON.stringify(totales)
		};
		$.post(_this.baseUrl+'transacciones/guardardevolucion',dataDev).done(function(saved){
			if(saved){
				$("#devolucion-procesar-status-text").text('¡La devolución se ha guardado!');
				$("#devolucion-procesar-status-icon").html("<i style='color:#1AB394;' class='fa fa-check-circle fa-5x'></i>");
				$("#devolucion-confirmar-guardar-btn").hide();
				$("#devolucion-cancelar-guardar-btn").hide();
				$("#devolucion-confirmar-salir-btn").show();
				$("#devolucion-confirmar-salir-btn").focus();
			}
		});
	}
	this.setCredito=function(id){
		Custombox.open({
			target:this.baseUrl+'clientes/creditosxclientedevmin?cliente='+id, 
			effect: 'fadein',
			complete:function(){
				$(".modal-body input:text").first().focus();
			}
		});
	}
	this.showMsgDevolucion=function(tipo, mensaje){
		toastr.options = {
			"closeButton": true,
			"progressBar": true,
			"positionClass": "toast-top-right"
		}
		toastr[tipo](mensaje);
	}
}
/* var devoluciones = new Devoluciones(); */