<?php
class Configuracion extends CI_Controller
{
    private $_template;
    protected $_fechaActual;
    protected $_iduser;
    protected $_csstyle;
	protected $base;
	protected $idLicencia;
	protected $idRol;

    function __construct()
	{
		parent::__construct();
			//verificar si el el usuario ha iniciado sesion
		if( ! $this->redux_auth->logged_in() )
		{
			redirect(base_url().'login');
		}
	
		$this->config->load('style', TRUE);
		$this->config->load('js',TRUE);
		
		$this->_fechaActual 	= mdate("%Y-%m-%d %H:%i:%s",now());
		$this->_iduser		 	= $this->session->userdata('id');
		$this->_csstyle 		= $this->config->item('style');
		$this->_jss				= $this->config->item('js');
		$this->idRol			= $this->session->userdata('rol');
		
		$this->idLicencia 		= $this->session->userdata('idLicencia');
		
		$this->load->model("modelousuario","modelousuario");
		$this->load->model("modeloclientes","modeloclientes");
		$this->load->model("proveedores_model","modeloproveedores");
		$this->load->model("inventario_model","modeloinventario");
		$this->load->model("modelo_configuracion","configuracion");
		
		
    }

 	public function index()
	{ 
		if($this->session->userdata('matriz')=='1')
		{
			redirect('reportes/lista','refresh');
		}
		
		$Data['title']			= "Panel de Administración";
		$Data['cassadmin']		= $this->_csstyle["cassadmin"];
		$Data['csmenu']			= $this->_csstyle["csmenu"];  
		$Data['csvalidate']		= $this->_csstyle["csvalidate"];
		$Data['csui']			= $this->_csstyle["csui"];
		$Data['nameusuario']	= $this->modelousuario->getUsuarios($this->_iduser);
		$Data['Fecha_actual']	= $this->_fechaActual;
		$Data['Jry']			= $this->_jss['jquery'];
		$Data['Jqui']			= $this->_jss['jqueryui'];
		$Data['permisos']		= $this->configuracion->obtenerRolPermisos($this->session->userdata('rol'));
		$Data['menuActivo']		= 'configuracion'; 
		
		$this->load->view("cabezera",$Data);
		$this->load->view('header',$Data);
		$this->load->view("principal",$Data);
		
		#----------------------------------PERMISOS------------------------------------#
		$data['permiso']=$this->configuracion->obtenerPermisosId('19',$this->session->userdata('rol'));
		
		if($data['permiso']->leer=='0' and $data['permiso']->escribir=='0')
		{
			redirect('principal/permisosUsuario','refresh');
			return;
		}

		$data['configuracion']	= $this->configuracion->obtenerConfiguraciones($this->session->userdata('idLicencia'));

		$this->load->view("configuracion/index",$data);
		$this->load->view("pie",$Data);
	}

	public function guardar()
	{
		if(!empty ($_POST))
		{
			$logo =$_FILES['userfile']['name'];
			
			$idConfiguracion	= $this->input->post('id');

			$uploaddir  = "img/logos/";
			$uploadfile = $uploaddir . basename($idConfiguracion."_".$logo);
			
			move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile);
			
			if(strlen($logo)<2)
			{
				$logo="nada";
			}
			
			if($this->configuracion->guardar($logo) != NULL)
			{
				$this->session->set_flashdata('message', 
				array('messageType' => 'success','Message' => 'Los datos se han almacenado correctamente.'));
			}
			else
			{
				$this->session->set_flashdata('message', 
				array('messageType' => 'success','Message' => 'Los datos se han almacenado correctamente.'));
			}
			
			redirect('configuracion','refresh');
		}
		else 
		{
			redirect('configuracion','refresh');
		}
	}
	
	#========================================================================================================#
	#=============================================AUTOCOMPLETADOS============================================#
	#========================================================================================================#
	
	public function autoCompletadoUsuarios()
	{
		if(!empty ($_POST))
		{
			$usuarios=$this->configuracion->autoCompletadoUsuarios();
			
			if ($usuarios!=NULL)
			{
				foreach ($usuarios as $row)
				{
					echo '<li onClick="datoEncontrado(\''.$row->id.'\',\''.$row->name.' '.$row->paterno.'\');">'.
					$row->name.' '.$row->paterno.'</li>';
				}
			}
		}
	}
	
	public function autoCompletadoIdentificador()
	{
		if(!empty ($_POST))
		{
			$identificadores=$this->configuracion->autoCompletadoIdentificador();
			
			if ($identificadores!=NULL)
			{
				foreach ($identificadores as $row)
				{
					echo '<li onClick="datoEncontrado(\''.$row->idZona.'\',\''.str_replace("'","",$row->descripcion).'\');">'.
					$row->descripcion.'</li>';
				}
			}
		}
	}
	
	#----------------------------------------------------------------------------#
	#						     AGREGAR UN NUEVO COLOR							 #
	#----------------------------------------------------------------------------#
	public function agregarColor()
	{
		if (!empty($_POST))
		{
			$color=$this->configuracion->colorAgregar();
			print($color);
		}
	}
	
	#----------------------------------------------------------------------------#
	#						         BORRAR UN COLOR							 #
	#----------------------------------------------------------------------------#
	public function borrarColor($idColor)
	{
			$color=$this->configuracion->colorBorrar($idColor);
			redirect('configuracion/colores','refresh');
	}
	
	#----------------------------------------------------------------------------#
	#						    AGREGAR UNA NUEVA UNIDAD						 #
	#----------------------------------------------------------------------------#
	public function agregarUnidad()
	{
		if (!empty($_POST))
		{
			$unidad=$this->configuracion->unidadAgregar();
			print($unidad);
		}
	}
	public function obtenerUnidad()
	{
		$idUnidad	=$this->input->post('idUnidad');	
		$unidad		=$this->configuracion->obtenerUnidad($idUnidad);
		
		echo'
		<table class="admintable" width="100%">
			<tr>
				<td class="key">Nombre:</td>
				<td>
					<input style="width:300px" type="text" class="cajas" id="txtUnidad" value="'.$unidad->descripcion.'" />
					<input type="hidden" class="cajas" id="txtIdUnidad" value="'.$idUnidad.'" />
				</td>
			</tr>
		</table>';
	}
	
	public function editarUnidad()
	{
		if (!empty($_POST))
		{
			$unidad=$this->configuracion->editarUnidad();
			
			$unidad=="1"?
				$this->session->set_userdata('notificacion','La unidad se ha editado correctamente'):'';
				
			echo $unidad;
		}
	}
	
	#----------------------------------------------------------------------------#
	#						      BORAR UNA UNIDAD								 #
	#----------------------------------------------------------------------------#
	public function borrarUnidad($idUnidad)
	{
		#----------------------------------PERMISOS------------------------------------#
		$data['permiso']=$this->configuracion->obtenerPermisosId('19',$this->session->userdata('rol'));
		
		if($data['permiso']->escribir=='0')
		{
			redirect('principal/permisosUsuario','refresh');
			return;
		}
		
		$unidad	=$this->configuracion->unidadBorrar($idUnidad);
		
		$unidad=="1"?
				$this->session->set_userdata('notificacion','La unidad se ha borrado correctamente'):
				$this->session->set_userdata('errorNotificacion','Error al borrar la unidad porque esta asociada a materia prima o conversiones');
				
		redirect('configuracion/unidades','refresh');
	}
	
	#----------------------------------------------------------------------------#
	#						    AGREGAR UNA NUEVA ZONA							 #
	#----------------------------------------------------------------------------#
	public function agregarZona()
	{
		if (!empty($_POST))
		{
			$unidad=$this->configuracion->zonaAgregar();
			print($unidad);
		}
	}
	
	#----------------------------------------------------------------------------#
	#						      BORRAR UNA ZONA								 #
	#----------------------------------------------------------------------------#
	public function borrarZona($idZona)
	{
		#----------------------------------PERMISOS------------------------------------#
		$data['permiso']=$this->configuracion->obtenerPermisosId('19',$this->session->userdata('rol'));
		
		if($data['permiso']->escribir=='0')
		{
			redirect('principal/permisosUsuario','refresh');
			return;
		}
		
		$zona=$this->configuracion->zonaBorrar($idZona);
		
		$zona=="1"?
				$this->session->set_userdata('notificacion','El registro se ha borrado correctamente'):
				$this->session->set_userdata('errorNotificacion','Error al borrar el registro, se encuentra asociado a clientes');
				
		redirect('configuracion/zonas','refresh');
	}
	
	#----------------------------------------------------------------------------#
	#						    AGREGAR UNA NUEVA CAJA							 #
	#----------------------------------------------------------------------------#
	public function agregarCaja()
	{
		if (!empty($_POST))
		{
			$caja=$this->configuracion->cajaAgregar();
			print($caja);
		}
	}
	
	#----------------------------------------------------------------------------#
	#						      BORRAR UNA CAJA								 #
	#----------------------------------------------------------------------------#
	public function borrarCaja($idCaja)
	{
		$caja=$this->configuracion->cajaBorrar($idCaja);
		redirect('configuracion/cajas','refresh');
	}
	
	#----------------------------------------------------------------------------#
	#						    ADMINISTRACION DE ROLES							 #
	#----------------------------------------------------------------------------#
	public function agregarRol()
	{
		if (!empty($_POST))
		{
			$roles=$this->configuracion->agregarRol();
			print($roles);
		}
	}
	
	public function editarRol()
	{
		if (!empty($_POST))
		{
			$roles=$this->configuracion->editarRol();
			print($roles);
		}
	}
	
	public function borrarRol($idRol)
	{
		#----------------------------------PERMISOS------------------------------------#
		$data['permiso']=$this->configuracion->obtenerPermisosId('19',$this->session->userdata('rol'));
		
		if($data['permiso']->escribir=='0')
		{
			redirect('principal/permisosUsuario','refresh');
			return;
		}
		
		$roles=$this->configuracion->borrarRol($idRol);
		
		$roles=="1"?
				$this->session->set_userdata('notificacion','El rol se ha borrado correctamente'):
				$this->session->set_userdata('errorNotificacion','Error al borrar el rol, se encuentra asociado a usuarios');
				
		redirect('configuracion/roles','refresh');
	}
	
	public function obtenerRol()
	{
		if (!empty($_POST))
		{
			$idRol		=$this->input->post('idRol');
			
			$rol		=$this->configuracion->obtenerRol($idRol);
			$permisos	=$this->configuracion->obtenerPermisos();
			
			echo'
			<script>
			$(document).ready(function()
			{
				$("#tablaEditarRol tr:even").addClass("sombreado");
				$("#tablaEditarRol tr:odd").addClass("sinSombra");  
			});
			</script>
			<table class="admintable" width="100%;" id="tablaEditarRol">
				<tr>
					<td class="key">Nombre:</td>
					<td colspan="3">
						<input name="txtEditar" id="txtEditar" type="text"  style="width:200px" class="cajasSelect" value="'.$rol->nombre.'" />
					</td>
				</tr>
				<tr>
					<th colspan="4">Permisos</th>
				</tr>
				<tr>
					<th style="width:55%">Descripcion</th>
					<th width="15%">Leer</th>
					<th width="15%">Escribir</th>
					<!--<th width="15%">Ver todo</th>-->
				</tr>';
			
			$i=1;
			foreach($permisos as $row)
			{
				$sql="select *from rel_rol_permiso
				where idRol=$idRol
				and idPermiso='$row->idPermiso'";
				
				$query		=$this->db->query($sql);
				
				$escribir	='';
				$leer		='';
				$todos		='';
				
				if($query->row()->leer=="1")
				{
					$leer='checked="checked"';
				}
				
				if($query->row()->escribir=="1")
				{
					$escribir='checked="checked"';
				}
				
				if($query->row()->todos=="1")
				{
					$todos='checked="checked"';
				}
				
				$mostrado="";
				
				if($row->idPermiso>=6 and $row->idPermiso<=10)
				{
					$mostrado='style="display:none"';
				}
				
				echo 
				'<tr '.$mostrado.'>
					<td>'.$row->descripcion.'</td>
					<td align="center">
						<input type="checkbox"'.$leer.' value="'.$row->idPermiso.'" id="chkLeerEditar'.$i.'" />
					</td>
					<td align="center">
						<input type="checkbox"'.$escribir.' value="'.$row->idPermiso.'" id="chkEscribirEditar'.$i.'" />
					</td>
					<td align="center" style="display:none">
						<input type="checkbox" '.$todos.' value="'.$row->idPermiso.'" id="chkTodoEditar'.$i.'" />
					</td>
				</tr>';
				
				$i++;
			}
			
			echo'    
			<input type="hidden" value="'.$i.'" id="indiceEditar" />
			</table>';
		}
	}

	public function adduser()
	{
		$Data['title']= "Panel de Administración";
		$Data['cassadmin']=$this->_csstyle["cassadmin"];
		$Data['csmenu']=$this->_csstyle["csmenu"];
		$Data['csvalidate']=$this->_csstyle["csvalidate"];
		$Data['csui']=$this->_csstyle["csui"];
		$Data['Jry']=$this->_jss['jquery'];
		$Data['Jqui']=$this->_jss['jqueryui'];
		$Data['jvalidate']=$this->_jss['jvalidate'];
		$Data['nameusuario']=$this->modelousuario->getUsuarios($this->_iduser);
		$Data['Fecha_actual']=$this->_fechaActual;
		$Data['permisos']=$this->configuracion->obtenerRolPermisos($this->session->userdata('rol'));
		$Data['menuActivo']='configuracion'; 
		
		$this->load->view("cabezera",$Data);
		$this->load->view('header',$Data);
		$this->load->view("principal",$Data);
		
		#----------------------------------PERMISOS------------------------------------#
		$data['permiso']=$this->configuracion->obtenerPermisosId('19',$this->session->userdata('rol'));
		
		if($data['permiso']->escribir=='0')
		{
			redirect('principal/permisosUsuario','refresh');
			return;
		}
		
		$data['Configuraciones']=$this->configuracion->getAllVariables();
		$data['roles']=$this->configuracion->obtenerRoles();

		$this->load->view("configuracion/adduser",$data);
		$this->load->view("pie",$Data);
	}
	
	public function registrarUsuario()
	{
		if(!empty ($_POST))
		{
			$usuario=$this->configuracion->registrarUsuario();
			
			/*$usuario=="1"?
				$this->session->set_userdata('notificacion','El usuario se ha registrado correctamente'):'';*/
				
			echo $usuario;
		}
	}
	
	public function editarUsuario()
	{
		if(!empty ($_POST))
		{
			$usuario=$this->configuracion->editarUsuario();
			
			/*$usuario=="1"?
				$this->session->set_userdata('notificacion','El usuario se ha editado correctamente'):'';*/
				
			echo $usuario;
		}
	}
	
	public function obtenerUsuario()
	{
		$idUsuario=$this->input->post('idUsuario');
		
		$data['roles']		= $this->configuracion->obtenerRoles();
		$data['usuario']	= $this->configuracion->obtenerUsuario($idUsuario);
		$data['permisos']	= $this->configuracion->obtenerPermisosUsuario();
		$data['licencias']	= $this->configuracion->obtenerLicenciasFirestone(0,1,0);

		$this->load->view("configuracion/usuarios/editarUsuario",$data);
	}
	
	public function formularioUsuarios()
	{
		$data['roles']		= $this->configuracion->obtenerRoles();
		$data['permisos']	= $this->configuracion->obtenerPermisosUsuario();
		$data['licencias']	= $this->configuracion->obtenerLicenciasFirestone(0,1,0);

		$this->load->view("configuracion/usuarios/agregarUsuario",$data);
	}
	
	public function borrarUsuario($idUsuario)
	{
		#----------------------------------PERMISOS------------------------------------#
		$data['permiso']=$this->configuracion->obtenerPermisosId('19',$this->session->userdata('rol'));
		
		if($data['permiso']->escribir=='0')
		{
			redirect('principal/permisosUsuario','refresh');
			return;
		}
		
		$usuario=$this->configuracion->borrarUsuario($idUsuario);
		
		$usuario=="1"?
				$this->session->set_userdata('notificacion','El usuario se ha borrado correctamente'):
				$this->session->set_userdata('errorNotificacion','Error al borrar el usuario porque esta asociado a diversos modulos del sistema');
		
		redirect('configuracion/listauser','refresh');
	}	

	public function listauser()
	{
		if($this->idLicencia!=1)
		{
			redirect('principal/permisosUsuario','refresh');
			return;
		}
		
		$Data['title']			= "Panel de Administración";
		$Data['cassadmin']		= $this->_csstyle["cassadmin"];
		$Data['csmenu']			= $this->_csstyle["csmenu"];   
		$Data['csvalidate']		= $this->_csstyle["csvalidate"];
		$Data['csui']			= $this->_csstyle["csui"];
		$Data['Jry']			= $this->_jss['jquery'];
		$Data['Jqui']			= $this->_jss['jqueryui'];
		$Data['jvalidate']		= $this->_jss['jvalidate'];
		$Data['nameusuario']	= $this->modelousuario->getUsuarios($this->_iduser);
		$Data['Fecha_actual']	= $this->_fechaActual;    
		$Data['permisos']		= $this->configuracion->obtenerRolPermisos($this->session->userdata('rol'));
		$Data['menuActivo']		= 'configuracion'; 
		
		$this->load->view("cabezera",$Data);
		$this->load->view('header',$Data);
		$this->load->view("principal",$Data);
		
		#----------------------------------PERMISOS------------------------------------#
		$data['permiso']=$this->configuracion->obtenerPermisosId('19',$this->session->userdata('rol'));
		
		if($data['permiso']->leer=='0' and $data['permiso']->escribir=='0')
		{
			redirect('principal/permisosUsuario','refresh');
			return;
		}
		
		$data['usuarios']		= '';
		
		$this->load->view("configuracion/usuarios/listauser",$data);
		$this->load->view("pie",$Data);
	}
	
	public function obtenerUsuarios($limite=0)
	{
		$criterio				= $this->input->post('criterio');
		
		$Pag["base_url"]		= base_url()."configuracion/obtenerUsuarios/";
		$Pag["total_rows"]		= $this->configuracion->contarUsuarios($criterio);//Total de Registros
		$Pag["per_page"]		= 20;
		$Pag["num_links"]		= 5;
		
		$this->pagination->initialize($Pag);
		
		$data['permiso']				= $this->configuracion->obtenerPermisosId('19',$this->session->userdata('rol'));
		$data['permisoEditarUsuario']	= $this->idRol!=1?$this->configuracion->comprobarPermisoAsignado($this->_iduser,32):1;
		$data['permisoBorrarUsuario']	= $this->idRol!=1?$this->configuracion->comprobarPermisoAsignado($this->_iduser,44):1;
		$data['usuarios'] 				= $this->configuracion->obtenerUsuarios($Pag["per_page"],$limite,$criterio);
		$data['inicio']  				= $limite+1;

		$this->load->view("configuracion/usuarios/obtenerUsuarios",$data);
	}

	public function colores()
	{
		$Data['title']			= "Panel de Administración";
		$Data['cassadmin']		=$this->_csstyle["cassadmin"];
		$Data['csmenu']			=$this->_csstyle["csmenu"];   
		$Data['csvalidate']		=$this->_csstyle["csvalidate"];
		$Data['csui']			=$this->_csstyle["csui"];
		////$Data['csuidemo']=$this->_csstyle["csuidemo"];
		$Data['Jry']			=$this->_jss['jquery'];
		$Data['Jqui']			=$this->_jss['jqueryui'];
		//$Data['Jquical']=$this->_jss['jquerycal'];
		$Data['jvalidate']		=$this->_jss['jvalidate'];
		$Data['nameusuario']	=$this->modelousuario->getUsuarios($this->_iduser);
		$Data['Fecha_actual']	=$this->_fechaActual;    
		$Data['permisos']		=$this->configuracion->obtenerRolPermisos($this->session->userdata('rol'));
		
		$this->load->view("cabezera",$Data);
		$this->load->view('header',$Data);
		$this->load->view("principal",$Data);
		
		$Data['Categoria']=$this->uri->segment(1);
		$Data['colores']=$this->configuracion->obtenerColores();
		
		$this->load->view("configuracion/colores",$Data);
		$this->load->view("pie",$Data);
	}
	
	
	
	#----------------------------------------------------------------------------------------------------------#
	#---------------------------------------------------TIENDAS------------------------------------------------#
	#----------------------------------------------------------------------------------------------------------#
	
	public function tiendas()
	{
		$Data['title']				= "Panel de Administración";
		$Data['cassadmin']			=$this->_csstyle["cassadmin"];
		$Data['csmenu']				=$this->_csstyle["csmenu"];   
		$Data['csvalidate']			=$this->_csstyle["csvalidate"];
		$Data['csui']				=$this->_csstyle["csui"];
		$Data['Jry']				=$this->_jss['jquery'];
		$Data['Jqui']				=$this->_jss['jqueryui'];
		$Data['jvalidate']			=$this->_jss['jvalidate'];
		$Data['nameusuario']		=$this->modelousuario->getUsuarios($this->_iduser);
		$Data['Fecha_actual']		=$this->_fechaActual;    
		$Data['permisos']			=$this->configuracion->obtenerRolPermisos($this->session->userdata('rol'));
		$Data['menuActivo']			='configuracion'; 
		
		$this->load->view("cabezera",$Data);
		$this->load->view('header',$Data);
		$this->load->view("principal",$Data);
		
		#----------------------------------PERMISOS------------------------------------#
		$data['permiso']=$this->configuracion->obtenerPermisosId('19',$this->session->userdata('rol'));
		
		if($data['permiso']->leer=='0' and $data['permiso']->escribir=='0')
		{
			redirect('principal/permisosUsuario','refresh');
			return;
		}
		
		$data['tiendas']=$this->configuracion->obtenerTiendas();
		
		$this->load->view("configuracion/tiendas",$data);
		$this->load->view("pie",$Data);
	}
	
	public function agregarTienda()
	{
		if(!empty ($_POST))
		{
			$tienda=$this->configuracion->agregarTienda();
			echo $tienda;
		}
	}
	
	#----------------------------------------------------------------------------------------------------------#
	#---------------------------------------------------PROCESO------------------------------------------------#
	#----------------------------------------------------------------------------------------------------------#
	
	public function procesos()
	{
		$Data['title']				= "Panel de Administración";
		$Data['cassadmin']			=$this->_csstyle["cassadmin"];
		$Data['csmenu']				=$this->_csstyle["csmenu"];   
		$Data['csvalidate']			=$this->_csstyle["csvalidate"];
		$Data['csui']				=$this->_csstyle["csui"];
		$Data['Jry']				=$this->_jss['jquery'];
		$Data['Jqui']				=$this->_jss['jqueryui'];
		$Data['jvalidate']			=$this->_jss['jvalidate'];
		$Data['nameusuario']		=$this->modelousuario->getUsuarios($this->_iduser);
		$Data['Fecha_actual']		=$this->_fechaActual;    
		$Data['permisos']			=$this->configuracion->obtenerRolPermisos($this->session->userdata('rol'));
		$Data['menuActivo']			='configuracion'; 
		
		$this->load->view("cabezera",$Data);
		$this->load->view('header',$Data);
		$this->load->view("principal",$Data);
		
		#----------------------------------PERMISOS------------------------------------#
		$data['permiso']=$this->configuracion->obtenerPermisosId('19',$this->session->userdata('rol'));
		
		if($data['permiso']->leer=='0' and $data['permiso']->escribir=='0')
		{
			redirect('principal/permisosUsuario','refresh');
			return;
		}
		
		$data['procesos']=$this->configuracion->obtenerProcesos();
		
		$this->load->view("configuracion/procesos",$data);
		$this->load->view("pie",$Data);
	}
	
	public function agregarProceso()
	{
		if(!empty ($_POST))
		{
			$proceso=$this->configuracion->agregarProceso();
			
			$proceso=="1"?
				$this->session->set_userdata('notificacion','El proceso se registro correctamente'):
				$this->session->set_userdata('errorNotificacion','Error al registrar el proceso');
				
			echo $proceso;
		}
	}
	
	public function obtenerProceso()
	{
		if(!empty ($_POST))
		{
			$proceso	=$this->configuracion->obtenerProceso($this->input->post('idProceso'));

			echo '
			<table class="admintable" width="100%" >
				<tr>
					<td class="key">Nombre: </td>
					<td>
						<input type="text" class="cajas" id="txtNombreProcesoEditar" value="'.$proceso->nombre.'"  style="width:250px"/>
						<input type="hidden" id="txtIdProceso" value="'.$proceso->idProceso.'" />
					</td>
				</tr>
			</table>';
		}
	}
	
	public function editarProceso()
	{
		if(!empty ($_POST))
		{
			$proceso=$this->configuracion->editarProceso();
			
			$proceso=="1"?
				$this->session->set_userdata('notificacion','El proceso se editado correctamente'):'';
				
			echo $proceso;
		}
	}
	
	public function borrarProceso($idProceso)
	{
		#----------------------------------PERMISOS------------------------------------#
		$data['permiso']=$this->configuracion->obtenerPermisosId('19',$this->session->userdata('rol'));
		
		if($data['permiso']->escribir=='0')
		{
			redirect('principal/permisosUsuario','refresh');
			return;
		}
		
		$proceso=$this->configuracion->borrarProceso($idProceso);
		
		$proceso=="1"?
				$this->session->set_userdata('notificacion','El proceso se ha borrado correctamente'):
				$this->session->set_userdata('errorNotificacion','Error al borrar el proceso porque esta asociado a ordenes de producción');
		
		redirect('configuracion/procesos','refresh');
	}

	#----------------------------------------------------------------------------------------------------------#
	
	public function zonas()
	{
		$Data['title']				= "Panel de Administración";
		$Data['cassadmin']			=$this->_csstyle["cassadmin"];
		$Data['csmenu']				=$this->_csstyle["csmenu"];   
		$Data['csvalidate']			=$this->_csstyle["csvalidate"];
		$Data['csui']				=$this->_csstyle["csui"];
		$Data['Jry']				=$this->_jss['jquery'];
		$Data['Jqui']				=$this->_jss['jqueryui'];
		$Data['jvalidate']			=$this->_jss['jvalidate'];
		$Data['nameusuario']		=$this->modelousuario->getUsuarios($this->_iduser);
		$Data['Fecha_actual']		=$this->_fechaActual;    
		$Data['permisos']			=$this->configuracion->obtenerRolPermisos($this->session->userdata('rol'));
		$Data['menuActivo']			='configuracion'; 
		
		$this->load->view("cabezera",$Data);
		$this->load->view('header',$Data);
		$this->load->view("principal",$Data);
		
		#----------------------------------PERMISOS------------------------------------#
		$data['permiso']=$this->configuracion->obtenerPermisosId('19',$this->session->userdata('rol'));
		
		if($data['permiso']->leer=='0' and $data['permiso']->escribir=='0')
		{
			redirect('principal/permisosUsuario','refresh');
			return;
		}
		
		$data['zonas']=$this->configuracion->obtenerZonas();
		
		$this->load->view("configuracion/zonas",$data);
		$this->load->view("pie",$Data);
	}
	
	public function obtenerZona()
	{
		$idZona	=$this->input->post('idZona');
		$zona	=$this->configuracion->obtenerZona($idZona);
		
		echo '
		<table class="admintable" width="100%">
			<tr>
				<td class="key">Descripción:</td>
				<td>
					<input type="text" class="cajas" id="txtDescripcion" value="'.$zona->descripcion.'" style="width:300px" />
					<input type="hidden" id="txtIdZona" value="'.$idZona.'" />
				</td>
			</tr>
		</table>';
	}
	
	public function editarZona()
	{
		if(!empty ($_POST))
		{
			$zona=$this->configuracion->editarZona();
			
			$zona=="1"?
				$this->session->set_userdata('notificacion','El registro se ha editado correctamente'):'';
			
			echo $zona;
		}
	}
	
	public function editarComision()
	{
		if(!empty ($_POST))
		{
			$comision=$this->configuracion->editarComision();

			echo $comision;
		}
	}
	
	public function roles()
	{
		$Data['title']			= "Panel de Administración";
		$Data['cassadmin']		=$this->_csstyle["cassadmin"];
		$Data['csmenu']			=$this->_csstyle["csmenu"];   
		$Data['csvalidate']		=$this->_csstyle["csvalidate"];
		$Data['csui']			=$this->_csstyle["csui"];
		$Data['Jry']			=$this->_jss['jquery'];
		$Data['Jqui']			=$this->_jss['jqueryui'];
		$Data['jvalidate']		=$this->_jss['jvalidate'];
		$Data['nameusuario']	=$this->modelousuario->getUsuarios($this->_iduser);
		$Data['Fecha_actual']	=$this->_fechaActual;    
		$Data['permisos']		=$this->configuracion->obtenerRolPermisos($this->session->userdata('rol'));
		$Data['menuActivo']		='configuracion'; 
		
		$this->load->view("cabezera",$Data);
		$this->load->view('header',$Data);
		$this->load->view("principal",$Data);
		
		#----------------------------------PERMISOS------------------------------------#
		$data['permiso']=$this->configuracion->obtenerPermisosId('19',$this->session->userdata('rol'));
		
		if($data['permiso']->leer=='0' and $data['permiso']->escribir=='0')
		{
			redirect('principal/permisosUsuario','refresh');
			return;
		}
		
		$data['roles']		=$this->configuracion->obtenerRoles();
		$data['comision']	=$this->configuracion->obtenerComision();
		$data['permisos']	=$this->configuracion->obtenerPermisos();
		
		$this->load->view("configuracion/roles",$data);
		$this->load->view("pie",$Data);
	}

	public function borrauser($id)
	{
		#----------------------------------PERMISOS------------------------------------#
		$data['permiso']=$this->configuracion->obtenerPermisosId('19',$this->session->userdata('rol'));
		
		if($data['permiso']->escribir=='0')
		{
			redirect('principal/permisosUsuario','refresh');
			return;
		}
		
		if($this->configuracion->borrauser($id))
		{
			$this->session->set_flashdata('message', array('messageType' => 'success','Message' => 'El usuario se ha eliminado correctamente.'));
			redirect('configuracion/listauser','refresh');
		}
		else
		{
			//       $this->session->set_flashdata('message', array('messageType' => 'success','Message' => 'Los datos se han almacenado correctamente.'));
			$this->session->set_flashdata('message', array('messageType' => 'error','Message' => 'Ocurrio un error al borrar el usuario.'));
			redirect('configuracion/listauser','refresh');
		}
	}	

	public function updateuser($id)
	{
		#----------------------------------PERMISOS------------------------------------#
		$data['permiso']=$this->configuracion->obtenerPermisosId('19',$this->session->userdata('rol'));
		
		if($data['permiso']->escribir=='0')
		{
			redirect('principal/permisosUsuario','refresh');
			return;
		}
		
		if($this->configuracion->editauser($id))
		{
			$this->session->set_flashdata('message', array('messageType' => 'success','Message' => 'El usuario se ha editado correctamente.'));
			redirect('configuracion/listauser','refresh');
		}
		else
		{
			$this->session->set_flashdata('message', array('messageType' => 'error','Message' => 'Ocurrio un error al editar el usuario.'));
			redirect('configuracion/listauser','refresh');
		
		}
	}

	public function camaras()
	{
		$Data['title']			= "Panel de Administración";	
		$Data['cassadmin']		=$this->_csstyle["cassadmin"];
		$Data['csmenu']			=$this->_csstyle["csmenu"];
		$Data['Jry']			=$this->_jss['jquery'];	  	 	
		$Data['Jqui']			=$this->_jss['jqueryui'];
		$Data['nameusuario']	=$this->modelousuario->getUsuarios($this->_iduser);
		$Data['Fecha_actual']	=$this->_fechaActual;
		$Data['permisos']		=$this->configuracion->obtenerRolPermisos($this->session->userdata('rol'));
		$Data['menuActivo']		='camaras'; 
		
		#----------------------------------PERMISOS------------------------------------#
		$data['permiso']=$this->configuracion->obtenerPermisosId('19',$this->session->userdata('rol'));
		
		if($data['permiso']->leer=='0' and $data['permiso']->escribir=='0')
		{
			redirect('principal/permisosUsuario','refresh');
			return;
		}
		
		$data['vigilancia']=$this->configuracion->obtenerFel();
		$this->load->view("cabezera",$Data);
		$this->load->view('header',$Data);
		$this->load->view("principal",$Data);
		$this->load->view('configuracion/camaras',$data);
		$this->load->view("pie",$Data);	
	}
	
	public function activarEstilo($color)
	{
		#----------------------------------PERMISOS------------------------------------#
		$data['permiso']=$this->configuracion->obtenerPermisosId('19',$this->session->userdata('rol'));
		
		if($data['permiso']->leer=='0' and $data['permiso']->escribir=='0')
		{
			redirect('principal/permisosUsuario','refresh');
			return;
		}
		
		$this->session->set_userdata('estilo',$color);   
		$estilo=$this->configuracion->activarEstilo($color);
		
		redirect('configuracion/estilo','refresh');
	}
	
	public function estilo()
	{
		$Data['title']			= "Panel de Administración";	
		$Data['cassadmin']		=$this->_csstyle["cassadmin"];
		$Data['csmenu']			=$this->_csstyle["csmenu"];
		$Data['Jry']			=$this->_jss['jquery'];	  
		$Data['Jqui']			=$this->_jss['jqueryui'];	 	
		$Data['nameusuario']	=$this->modelousuario->getUsuarios($this->_iduser);
		$Data['Fecha_actual']	=$this->_fechaActual;
		$Data['permisos']		=$this->configuracion->obtenerRolPermisos($this->session->userdata('rol'));
		$Data['menuActivo']		='configuracion'; 
		
		#----------------------------------PERMISOS------------------------------------#
		$data['permiso']=$this->configuracion->obtenerPermisosId('19',$this->session->userdata('rol'));
		
		if($data['permiso']->leer=='0' and $data['permiso']->escribir=='0')
		{
			redirect('principal/permisosUsuario','refresh');
			return;
		}
		
		$this->load->view("cabezera",$Data);
		$this->load->view('header',$Data);
		$this->load->view("principal",$Data);
		$this->load->view('configuracion/estilo',$data);
		$this->load->view("pie",$Data);	
	}
	
	public function actualizarVigilancia()
	{
		if(!empty ($_POST))
		{
			$factura=$this->configuracion->actualizarVigilancia();
			redirect('configuracion/vigilancia','refresh');
		}
	}
	
	function vigilancia()
	{ 
		$Data['title']			= "Panel de Administración";
		$Data['cassadmin']		=$this->_csstyle["cassadmin"];
		$Data['csmenu']			=$this->_csstyle["csmenu"];  
		$Data['csvalidate']		=$this->_csstyle["csvalidate"];
		$Data['csui']			=$this->_csstyle["csui"];
		$Data['nameusuario']	=$this->modelousuario->getUsuarios($this->_iduser);
		$Data['Fecha_actual']	=$this->_fechaActual;
		$Data['Jry']			=$this->_jss['jquery'];
		$Data['Jqui']			=$this->_jss['jqueryui'];
		$Data['permisos']		=$this->configuracion->obtenerRolPermisos($this->session->userdata('rol'));
		$Data['menuActivo']		='configuracion'; 
		
		$this->load->view("cabezera",$Data);
		$this->load->view('header',$Data);
		$this->load->view("principal",$Data);
		
		#----------------------------------PERMISOS------------------------------------#
		$data['permiso']=$this->configuracion->obtenerPermisosId('19',$this->session->userdata('rol'));
		
		if($data['permiso']->leer=='0' and $data['permiso']->escribir=='0')
		{
			redirect('principal/permisosUsuario','refresh');
			return;
		}
		
		$data['vigilancia']=$this->configuracion->obtenerFel();
		$this->load->view("configuracion/vigilancia",$data);
		
		$this->load->view("pie",$Data);
	}//Index

	public function actualizarFEL()
	{
		if(!empty ($_POST))
		{
			$factura=$this->configuracion->actualizarFEL();
			redirect('configuracion/facturacion','refresh');
		}
	}
	
	#----------------------------------------------------------------------------------------------------------#
	#--------------------------------------------------CONVERSION----------------------------------------------#
	#----------------------------------------------------------------------------------------------------------#
	
	public function unidades()
	{
		$Data['title']			= "Panel de Administración";
		$Data['cassadmin']		=$this->_csstyle["cassadmin"];
		$Data['csmenu']			=$this->_csstyle["csmenu"];   
		$Data['csvalidate']		=$this->_csstyle["csvalidate"];
		$Data['csui']			=$this->_csstyle["csui"];
		$Data['Jry']			=$this->_jss['jquery'];
		$Data['Jqui']			=$this->_jss['jqueryui'];
		$Data['jvalidate']		=$this->_jss['jvalidate'];
		$Data['nameusuario']	=$this->modelousuario->getUsuarios($this->_iduser);
		$Data['Fecha_actual']	=$this->_fechaActual;    
		$Data['permisos']		=$this->configuracion->obtenerRolPermisos($this->session->userdata('rol'));
		$Data['menuActivo']		='configuracion'; 
		
		$this->load->view("cabezera",$Data);
		$this->load->view('header',$Data);
		$this->load->view("principal",$Data);
		
		#----------------------------------PERMISOS------------------------------------#
		$data['permiso']=$this->configuracion->obtenerPermisosId('19',$this->session->userdata('rol'));
		
		if($data['permiso']->leer=='0' and $data['permiso']->escribir=='0')
		{
			redirect('principal/permisosUsuario','refresh');
			return;
		}
		
		$data['unidades']	=$this->configuracion->seleccionarUnidades();
		
		$this->load->view("configuracion/unidades",$data);
		$this->load->view("pie",$Data);
	}
	
	public function registrarConversion()
	{
		if(!empty ($_POST))
		{
			$conversion=$this->configuracion->registrarConversion();
			echo $conversion;
		}
	}
	
	public function obtenerConversionesProduccion()
	{
		if(!empty ($_POST))
		{
			$idUnidad		=$this->input->post('idUnidad');
			$conversiones	=$this->configuracion->obtenerConversiones($idUnidad);
			
			echo'
			<select class="cajas" style="width:300px" id="selectConversiones">
				<option value="0">Seleccione</option>';
			
			foreach($conversiones as $row)
			{
				echo'<option value="'.$row->idConversion.'">'.$row->nombre.' ('.$row->referencia.'), '.$row->valor.'</option>';
			}
			
			echo '</select>';
		}
	}
	public function obtenerConversiones()
	{
		if(!empty ($_POST))
		{
			$idUnidad		=$this->input->post('idUnidad');
			$conversiones	=$this->configuracion->obtenerConversiones($idUnidad);
			$unidad			=$this->configuracion->obtenerUnidad($idUnidad);
			
			echo'
			<table class="admintable" width="100%">
				<tr>
					<th colspan="2">Registrar nueva conversión de la unidad "'.$unidad->descripcion.'"</th>
				</tr>
				<tr>
					<td class="key">Nombre</td>
					<td><input type="text" class="cajas" id="txtNombre"></td>
				</tr>
				
				<tr>
					<td class="key">Referencia</td>
					<td><input type="text" class="cajas" id="txtReferencia"></td>
				</tr>
				
				<tr>
					<td class="key">Valor</td>
					<td>
						<input type="text" class="cajas" id="txtValor">
						<input type="hidden" class="cajas" id="txtIdUnidad" value="'.$idUnidad.'">
					</td>
				</tr>
			</table>
			
			<table class="admintable" width="99%">
				<tr>
					<th colspan="5">Lista de conversiones</th>
				</tr>
				<tr>
					<th>#</th>
					<th width="50%">Nombre</th>
					<th width="">Referencia</th>
					<th>Valor</th>
					<th>Acciones</th>
				</tr>';
			
			$i=1;
			foreach($conversiones as $row)
			{
				$estilo=$i%2>0?'class="sombreado"':'class="sinSombra"';
				
				echo'
				<tr '.$estilo.'>
					<td>'.$i.'</td>
					<td>'.$row->nombre.'</td>
					<td>'.$row->referencia.'</td>
					<td align="right">'.$row->valor.'</td>
					<td align="center">
						 <img src="'.base_url().'img/editar.png" width="22" height="22" 
						 	title="Editar" onClick="obtenerConversion('.$row->idConversion.')" >
						&nbsp;
						
						<img src="'.base_url().'img/borrar.png" width="22" height="22" 
						 	title="Editar" onClick="borrarConversion('.$row->idConversion.')" >
							<br />
						<a>Editar</a>
						<a>Borrar</a>
					</td>
				</tr>';
				
				$i++;
			}
			
			echo'</table>';
		}
	}
	
	public function obtenerConversion()
	{
		$idConversion	=$this->input->post('idConversion');	
		$conversion		=$this->configuracion->obtenerConversion($idConversion);
		
		echo'
		<table class="admintable" width="100%">
			<tr>
				<td class="key">Nombre:</td>
				<td>
					<input style="width:200px" type="text" class="cajas" id="txtConversionEditar" value="'.$conversion->nombre.'" />
					<input type="hidden" class="cajas" id="txtIdConversion" value="'.$idConversion.'" />
				</td>
			</tr>
			<tr>
				<td class="key">Referencia:</td>
				<td>
					<input style="width:200px" type="text" class="cajas" id="txtReferenciaEditar" value="'.$conversion->referencia.'" />
				</td>
			</tr>
			
			<tr>
				<td class="key">Valor:</td>
				<td>
					<input style="width:200px" type="text" class="cajas" id="txtValorEditar" value="'.$conversion->valor.'" />
				</td>
			</tr>
		</table>';
	}
	
	public function editarConversion()
	{
		if (!empty($_POST))
		{
			$unidad=$this->configuracion->editarConversion();
			echo $unidad;
		}
	}
	
	public function borrarConversion()
	{
		#----------------------------------PERMISOS------------------------------------#
		$data['permiso']=$this->configuracion->obtenerPermisosId('19',$this->session->userdata('rol'));
		
		if($data['permiso']->escribir=='0')
		{
			echo "0";
			return;
		}
		
		$idConversion	=$this->input->post('idConversion');
		$conversion		=$this->configuracion->borrarConversion($idConversion);
		
		echo $conversion;
	}
	
	public function cuentasContables()
	{
		$Data['title']				= "Panel de Administración";
		$Data['cassadmin']			=$this->_csstyle["cassadmin"];
		$Data['csmenu']				=$this->_csstyle["csmenu"];
		$Data['csvalidate']			=$this->_csstyle["csvalidate"];
		$Data['csui']				=$this->_csstyle["csui"];
		$Data['nameusuario']		=$this->modelousuario->getUsuarios($this->_iduser);
		$Data['Fecha_actual']		=$this->_fechaActual;
		$Data['Jry']				=$this->_jss['jquery'];
		$Data['JFuntBuscaClientes']	=$this->_jss['JFuntBuscaClientes'];
		$Data['jvalidate']			=$this->_jss['jvalidate'];
		$Data['Jqui']				=$this->_jss['jqueryui'];
		$Data['permisos']			=$this->configuracion->obtenerRolPermisos($this->session->userdata('rol'));
		$Data['menuActivo']			='configuracion'; 
		
		$this->load->view("cabezera",$Data);
		$this->load->view('header',$Data);
		$this->load->view("principal",$Data);
		
		#----------------------------------PERMISOS------------------------------------#
		$data['permiso']=$this->configuracion->obtenerPermisosId('19',$this->session->userdata('rol'));
		
		if($data['permiso']->leer=='0' and $data['permiso']->escribir=='0')
		{
			redirect('principal/permisosUsuario','refresh');
			return;
		}
		
		$data['cuentas'] = $this->configuracion->obtenerCuentasContables();
		
		$this->load->view("configuracion/cuentas",$data);
		$this->load->view("pie",$data);
	}
	
	public function agregarCuentaContable()
	{
		if(!empty ($_POST))
		{
			$cuenta=$this->configuracion->agregarCuentaContable();
			
			$cuenta=="1"?
				$this->session->set_userdata('notificacion','La cuenta se ha registrado correctamente'):
				$this->session->set_userdata('errorNotificacion','Error al registrar la cuenta');
			
			echo $cuenta;
		}
	}
	
	public function editarCuentaContable()
	{
		if(!empty ($_POST))
		{
			$cuenta=$this->configuracion->editarCuentaContable();
			
			$cuenta=="1"?
				$this->session->set_userdata('notificacion','La cuenta se ha editado correctamente'):
				$this->session->set_userdata('errorNotificacion','Error al editar la cuenta');
			
			echo $cuenta;
		}
	}
	
	public function obtenerCuentaContable()
	{
		if(!empty ($_POST))
		{
			$idCuenta=$this->input->post('idCuenta');
			$cuenta=$this->configuracion->obtenerCuentaContable($idCuenta);
			
			echo '<input name="txtIdCuenta" id="txtIdCuenta" value="'.$idCuenta.'" type="hidden" />';
			echo'
			<table class="admintable" width="99%;">
				 <tr>
					<td style="width:15%" class="key">Nivel 1:</td>
					<td>
						<input value="'.$cuenta->nivel1.'" name="txtNivel11" id="txtNivel11" type="text" class="cajasSelect"  />
					</td>
					<td style="width:15%" class="key">Clave:</td>
					<td>
					   <input value="'.$cuenta->clave1.'" name="txtClave11" id="txtClave11" type="text" class="cajasSelect"  />
					</td>
				</tr>	
				
				<tr>
					<td width="10%" class="key">Nivel 2:</td>
					<td>
						<input value="'.$cuenta->nivel2.'" name="txtNivel21" id="txtNivel21" type="text" class="cajasSelect"  />
					</td>
					<td  class="key">Clave:</td>
					<td>
					   <input value="'.$cuenta->clave2.'" name="txtClave21" id="txtClave21" type="text" class="cajasSelect"  />
					</td>
				</tr>	
				
				<tr>
					<td  width="10%" class="key">Nivel 3:</td>
					<td>
						<input value="'.$cuenta->nivel3.'" name="txtNivel31" id="txtNivel31" type="text" class="cajasSelect"  />
					</td>
					<td class="key">Clave:</td>
					<td>
					   <input value="'.$cuenta->clave3.'" name="txtClave31" id="txtClave31" type="text" class="cajasSelect"  />
					</td>
				</tr>	
				
				 <tr>
					<td width="10%" class="key">Nivel 4:</td>
					<td>
						<input value="'.$cuenta->nivel4.'" name="txtNivel41" id="txtNivel41" type="text" class="cajasSelect"  />
					</td>
					<td class="key">Clave:</td>
					<td>
					   <input value="'.$cuenta->clave4.'" name="txtClave41" id="txtClave41" type="text" class="cajasSelect"  />
					</td>
				</tr>	
				 <tr>
					<td width="10%" class="key">Descripcion:</td>
					<td colspan="3">
						<input value="'.$cuenta->nombre.'" name="txtCuentaEditar" style="width:300px" id="txtCuentaEditar" type="text" class="cajasSelect"  />
					</td>
				</tr>	
			</table>';
		}
	}
	
	public function borrarCuentaContable($idCuenta)
	{
		#----------------------------------PERMISOS------------------------------------#
		$data['permiso']=$this->configuracion->obtenerPermisosId('19',$this->session->userdata('rol'));
		
		if($data['permiso']->escribir=='0')
		{
			redirect('principal/permisosUsuario','refresh');
			return;
		}
		
		$cuenta=$this->configuracion->borrarCuentaContable($idCuenta);
		
		$cuenta=="1"?
				$this->session->set_userdata('notificacion','La cuenta se ha borrado correctamente'):
				$this->session->set_userdata('errorNotificacion','Error al borrar la cuenta porque esta asociada a gastos administrativos');
				
		redirect('configuracion/cuentasContables','refresh');
	}
	
	
	#RESPALDO Y RESTAURACIÓN DE BASE DE DATOS
	#---------------------------------------------------------------------------------------------------------------------#
	public function respaldoBD()
	{
		#----------------------------------PERMISOS------------------------------------#
		$data['permiso']=$this->configuracion->obtenerPermisosId('19',$this->session->userdata('rol'));
		
		if($data['permiso']->escribir=='0')
		{
			redirect('principal/permisosUsuario','refresh');
			return;
		}
		
		$this->load->dbutil();
		
		$prefs = array
		(
			'format'      => 'gzip',             // gzip, zip, txt
			'filename'    => 'redisoftsystems'.date('Y-m-d').'.sql',    // File name - NEEDED ONLY WITH ZIP FILES
			'newline'     => "\n"               // Newline character used in backup file
        );


		$copiaSeguridad =& $this->dbutil->backup($prefs); 
		
		$base='redisoftsystems'.date('Y-m-d').".gz";
		
		$this->load->helper('download');
		force_download($base, $copiaSeguridad); 
	}
	
	public function subirFichero()
	{
		$directorio  	= "media/";
		$fichero 		= $directorio . basename($_FILES['userfile']['name']);

		if (move_uploaded_file($_FILES['userfile']['tmp_name'], $fichero)) 
		{
			$this->restaurarBase($fichero);
			echo "success";
		} 
		else 
		{
		  	echo "error";
		}
	}

	public function vaciarTablas()
	{
		$sql="SHOW TABLE STATUS FROM redisofs_redisoft;";
		#$sql="SHOW TABLE STATUS FROM producsoft;";
		
		foreach($this->db->query($sql)->result() as $row)
		{
			$this->db->query('truncate table '.$row->Name);
		}
	}
	
	public function restaurarBase($fichero)
	{
		redirect('configuracion','refresh');
		return;
		#$fichero='media/redisoftsystems2013-01-10.gz';
		ob_start();
		readgzfile($fichero);
		$data	=ob_get_clean();
		#ob_end_clean();

		$this->db->trans_start();
		$this->db->query('set foreign_key_checks=0;');
		
		$this->vaciarTablas();

		//estas dos lineas me permitieron individualizar las consultas
		$data 		= nl2br($data);
		$data_arr 	= explode('<br />', $data); 

		foreach($data_arr as $query)
		{
			//Solo ejecutar los puros inserts
			$pos = stripos($query, 'INSERT');
						
			if($pos!==false && $pos<5) 
			{
			   $this->db->query($query);
			}
		}
		
		$this->db->query('set foreign_key_checks=1;');

		if ($this->db->trans_status() === FALSE)
		{
			$this->db->trans_rollback();
			$this->db->trans_complete();
			
			return "0";
		}
		else
		{
			$this->db->trans_commit();
			$this->db->trans_complete();
			
			return "1";
		}
	}
	
	//AUTOCOMPLETADOS ACTUALIZADOS
	public function obtenerClientes($contactos=1)
	{
		$clientes = $this->configuracion->obtenerClientes($this->input->get('term'),$contactos);
		
		if($contactos==0)
		{
			$result[]= array('idCliente'=>'0','idForma'=>'0','idVendedor'=>'0','topeCredito'=>'0','credito'=>'0','email'=>'','telefono'=>'','value'=>'Todos los clientes');
		}
		
		if($clientes!=null)
		{
			foreach ($clientes as $row)
			{
				$result[]= $row;
			}
			
			echo json_encode($result);
		}
	}
	
	//AUTOCOMPLETADOS ACTUALIZADOS
	public function obtenerClientesReportes()
	{
		$clientes = $this->configuracion->obtenerClientesReportes($this->input->get('term'));
		
		if($clientes!=null)
		{
			$result[]=array('idCliente'=>0,'value'=>'TODOS LOS CLIENTES');
			
			foreach ($clientes as $row)
			{
				$result[]= $row;
			}
			
			echo json_encode($result);
		}
	}
	
	public function obtenerProveedores()
	{
		$proveedores = $this->configuracion->obtenerProveedores($this->input->get('term'));
		
		if($proveedores!=null)
		{
			foreach ($proveedores as $row)
			{
				$result[]= $row;
			}
			
			echo json_encode($result);
		}
	}
	
	public function obtenerMateriales()
	{
		$materiales = $this->configuracion->obtenerMateriales($this->input->get('term'));
		
		if($materiales!=null)
		{
			foreach ($materiales as $row)
			{
				$result[]= $row;
			}
			
			echo json_encode($result);
		}
	}
	
	public function obtenerProductosInventario()
	{
		$productos = $this->configuracion->obtenerProductosInventario($this->input->get('term'));
		
		if($productos!=null)
		{
			foreach ($productos as $row)
			{
				$result[]= $row;
			}
			
			echo json_encode($result);
		}
	}
	
	public function obtenerListaServicios()
	{
		$servicios = $this->configuracion->obtenerListaServicios($this->input->get('term'));
		
		if($servicios!=null)
		{
			foreach ($servicios as $row)
			{
				$result[]= $row;
			}
			
			echo json_encode($result);
		}
	}
	
	public function obtenerProductosInventarioRepetido()
	{
		$productos = $this->configuracion->obtenerProductosInventarioRepetido($this->input->get('term'));
		
		if($productos!=null)
		{
			foreach ($productos as $row)
			{
				$result[]= $row;
			}
			
			echo json_encode($result);
		}
	}
	
	public function obtenerProductosServicios()
	{
		$productos = $this->configuracion->obtenerProductosServicios($this->input->get('term'));
		
		if($productos!=null)
		{
			foreach ($productos as $row)
			{
				$result[]= $row;
			}
			
			echo json_encode($result);
		}
	}
	
	public function obtenerProductosPedido()
	{
		$productos = $this->configuracion->obtenerProductosPedido($this->input->get('term'));
		
		if($productos!=null)
		{
			foreach ($productos as $row)
			{
				$result[]= $row;
			}
			
			echo json_encode($result);
		}
	}
	
	public function obtenerInventarioProduccion()
	{
		$productos = $this->configuracion->obtenerInventarioProduccion($this->input->get('term'));
		
		if($productos!=null)
		{
			foreach ($productos as $row)
			{
				$result[]= $row;
			}
			
			echo json_encode($result);
		}
	}
	
	public function obtenerInventarioRefacciones()
	{
		$productos = $this->configuracion->obtenerInventarioRefacciones($this->input->get('term'));
		
		if($productos!=null)
		{
			foreach ($productos as $row)
			{
				$result[]= $row;
			}
			
			echo json_encode($result);
		}
	}
	
	#PARA COTIZACIONES
	public function obtenerCotizaciones() 
	{
		$cotizaciones = $this->configuracion->obtenerCotizaciones($this->input->get('term'));
		
		if($cotizaciones!=null)
		{
			foreach ($cotizaciones as $row)
			{
				$result[]= $row;
			}
			
			echo json_encode($result);
		}
	}
	
	#PARA COTIZACIONES
	public function obtenerListaCotizaciones() 
	{
		$cotizaciones = $this->configuracion->obtenerListaCotizaciones($this->input->get('term'));
		
		if($cotizaciones!=null)
		{
			foreach ($cotizaciones as $row)
			{
				$result[]= $row;
			}
			
			echo json_encode($result);
		}
	}
	
	#PARA VENTAS
	public function obtenerVentasClientes($todas=1) 
	{
		$ventas = $this->configuracion->obtenerVentasClientes($this->input->get('term'));
		
		if($todas==0)
		{
			$result[]= array('idCotizacion'=>'0','idCliente'=>'0','value'=>'Todos las ventas');
		}
		
		if($ventas!=null)
		{
			foreach ($ventas as $row)
			{
				$result[]= $row;
			}
			
			echo json_encode($result);
		}
		
		if($ventas==null and $todas==0)
		{
			echo json_encode($result);
		}
	}
	
	public function obtenerVentas() 
	{
		$ventas = $this->configuracion->obtenerVentas($this->input->get('term'));
		
		if($ventas!=null)
		{
			foreach ($ventas as $row)
			{
				$result[]= $row;
			}
			
			echo json_encode($result);
		}
	}
	
	#PARA FACTURAS
	public function obtenerFacturas($todas=1) 
	{
		$facturas = $this->configuracion->obtenerFacturas($this->input->get('term'));
		
		if($todas==0)
		{
			$result[]= array('idFactura'=>'0','idCliente'=>'0','value'=>'Todos las facturas');
		}
		
		if($facturas!=null)
		{
			foreach ($facturas as $row)
			{
				$result[]= $row;
			}
			
			echo json_encode($result);
		}
		
		if($facturas==null and $todas==0)
		{
			echo json_encode($result);
		}
	}
	
	#PARA ZONAS
	public function obtenerZonas() 
	{
		$zonas = $this->configuracion->obtenerZonasBusqueda($this->input->get('term'));
		
		if($zonas!=null)
		{
			foreach ($zonas as $row)
			{
				$result[]= $row;
			}
			
			echo json_encode($result);
		}
	}
	
	#PARA PERSONAL
	public function obtenerPersonal() 
	{
		$personal = $this->configuracion->obtenerPersonal($this->input->get('term'));
		
		if($personal!=null)
		{
			foreach ($personal as $row)
			{
				$result[]= $row;
			}
			
			echo json_encode($result);
		}
	}
	
	public function obtenerRolesRepetidos()
	{
		$roles = $this->configuracion->obtenerRolesRepetidos($this->input->get('term'));
		
		if($roles!=null)
		{
			foreach ($roles as $row)
			{
				$result[]= $row;
			}
			
			echo json_encode($result);
		}
	}
	
	public function obtenerBancosRepetidos()
	{
		$bancos = $this->configuracion->obtenerBancosRepetidos($this->input->get('term'));
		
		if($bancos!=null)
		{
			foreach ($bancos as $row)
			{
				$result[]= $row;
			}
			
			echo json_encode($result);
		}
	}
	
	public function obtenerUnidadesRepetidas()
	{
		$unidades = $this->configuracion->obtenerUnidadesRepetidas($this->input->get('term'));
		
		if($unidades!=null)
		{
			foreach ($unidades as $row)
			{
				$result[]= $row;
			}
			
			echo json_encode($result);
		}
	}
	
	public function obtenerTipoCliente()
	{
		$tipoCliente = $this->configuracion->obtenerTipoCliente($this->input->get('term'));
		
		if($tipoCliente!=null)
		{
			foreach ($tipoCliente as $row)
			{
				$result[]= $row;
			}
			
			echo json_encode($result);
		}
	}
	
	public function obtenerProcesosRepetidos()
	{
		$procesos = $this->configuracion->obtenerProcesosRepetidos($this->input->get('term'));
		
		if($procesos!=null)
		{
			foreach ($procesos as $row)
			{
				$result[]= $row;
			}
			
			echo json_encode($result);
		}
	}
	
	public function obtenerDepartamentosRepetidos()
	{
		$departamentos = $this->configuracion->obtenerDepartamentosRepetidos($this->input->get('term'));
		
		if($departamentos!=null)
		{
			foreach ($departamentos as $row)
			{
				$result[]= $row;
			}
			
			echo json_encode($result);
		}
	}
	
	public function obtenerProductosRepetidos()
	{
		$productos = $this->configuracion->obtenerProductosRepetidos($this->input->get('term'));
		
		if($productos!=null)
		{
			foreach ($productos as $row)
			{
				$result[]= $row;
			}
			
			echo json_encode($result);
		}
	}
	
	public function obtenerGastosRepetidos()
	{
		$gastos = $this->configuracion->obtenerGastosRepetidos($this->input->get('term'));
		
		if($gastos!=null)
		{
			foreach ($gastos as $row)
			{
				$result[]= $row;
			}
			
			echo json_encode($result);
		}
	}
	
	public function obtenerNombresRepetidos()
	{
		$nombres = $this->configuracion->obtenerNombresRepetidos($this->input->get('term'));
		
		if($nombres!=null)
		{
			foreach ($nombres as $row)
			{
				$result[]= $row;
			}
			
			echo json_encode($result);
		}
	}
	
	public function obtenerLineasRepetidas()
	{
		$lineas = $this->configuracion->obtenerLineasRepetidas($this->input->get('term'));
		
		if($lineas!=null)
		{
			foreach ($lineas as $row)
			{
				$result[]= $row;
			}
			
			echo json_encode($result);
		}
	}
	
	//AUTOCOMPLETADOS DE PLACAS
	public function obtenerPlacas()
	{
		$datos = $this->configuracion->obtenerPlacas($this->input->get('term'));
		
		if($datos!=null)
		{
			foreach ($datos as $row)
			{
				$result[]= $row;
			}
			
			echo json_encode($result);
		}
	}
	
	//AUTOCOMPLETADOS DE MARCAS
	public function obtenerMarcasCotizacion()
	{
		$datos = $this->configuracion->obtenerMarcasCotizacion($this->input->get('term'));
		
		if($datos!=null)
		{
			foreach ($datos as $row)
			{
				$result[]= $row;
			}
			
			echo json_encode($result);
		}
	}
	
	//AUTOCOMPLETADOS DE MODELOS
	public function obtenerModelosCotizacion()
	{
		$datos = $this->configuracion->obtenerModelosCotizacion($this->input->get('term'));
		
		if($datos!=null)
		{
			foreach ($datos as $row)
			{
				$result[]= $row;
			}
			
			echo json_encode($result);
		}
	}
	
	//AUTOCOMPLETADOS DE AÑOS
	public function obtenerAnios()
	{
		$datos = $this->configuracion->obtenerAnios($this->input->get('term'));
		
		if($datos!=null)
		{
			foreach ($datos as $row)
			{
				$result[]= $row;
			}
			
			echo json_encode($result);
		}
	}
	
	//AUTOCOMPLETADOS DE MOTORES
	public function obtenerMotores()
	{
		$datos = $this->configuracion->obtenerMotores($this->input->get('term'));
		
		if($datos!=null)
		{
			foreach ($datos as $row)
			{
				$result[]= $row;
			}
			
			echo json_encode($result);
		}
	}
	
	//AUTOCOMPLETADOS DE KILOMETRAJE
	public function obtenerKilometraje()
	{
		$datos = $this->configuracion->obtenerKilometraje($this->input->get('term'));
		
		if($datos!=null)
		{
			foreach ($datos as $row)
			{
				$result[]= $row;
			}
			
			echo json_encode($result);
		}
	}
	
	//AUTOCOMPLETADOS DE COLORES
	public function obtenerColores()
	{
		$datos = $this->configuracion->obtenerColores($this->input->get('term'));
		
		if($datos!=null)
		{
			foreach ($datos as $row)
			{
				$result[]= $row;
			}
			
			echo json_encode($result);
		}
	}
	
	//AUTOCOMPLETADOS DE NÚMERO DE SERIE
	public function obtenerNumeroSerie()
	{
		$datos = $this->configuracion->obtenerNumeroSerie($this->input->get('term'));
		
		if($datos!=null)
		{
			foreach ($datos as $row)
			{
				$result[]= $row;
			}
			
			echo json_encode($result);
		}
	}
	
	//AUTOCOMPLETADOS DE CELULARES
	public function obtenerCelulares()
	{
		$datos = $this->configuracion->obtenerCelulares($this->input->get('term'));
		
		if($datos!=null)
		{
			foreach ($datos as $row)
			{
				$result[]= $row;
			}
			
			echo json_encode($result);
		}
	}
	
	//AUTOCOMPLETADOS DE TELÉFONOS
	public function obtenerTelefonos()
	{
		$datos = $this->configuracion->obtenerTelefonos($this->input->get('term'));
		
		if($datos!=null)
		{
			foreach ($datos as $row)
			{
				$result[]= $row;
			}
			
			echo json_encode($result);
		}
	}
	
	//AUTOCOMPLETADOS DE NOMBRES
	public function obtenerNombresCotizacion()
	{
		$datos = $this->configuracion->obtenerNombresCotizacion($this->input->get('term'));
		
		if($datos!=null)
		{
			foreach ($datos as $row)
			{
				$result[]= $row;
			}
			
			echo json_encode($result);
		}
	}
	
	//--------------------------------------------------------------------------------------------------------//
	//AUTOCOMPLETADOS PARA EL CATÁLOGO DE LOS PRODUCTOS
	//--------------------------------------------------------------------------------------------------------//
	
	//AUTOCOMPLETADOS DE MEDIDAS
	public function obtenerMedidas()
	{
		$datos = $this->configuracion->obtenerMedidas($this->input->get('term'));
		
		if($datos!=null)
		{
			foreach ($datos as $row)
			{
				$result[]= $row;
			}
			
			echo json_encode($result);
		}
	}
	
	//AUTOCOMPLETADOS DE RINES
	public function obtenerRines()
	{
		$datos = $this->configuracion->obtenerRines($this->input->get('term'));
		
		if($datos!=null)
		{
			foreach ($datos as $row)
			{
				$result[]= $row;
			}
			
			echo json_encode($result);
		}
	}
	
	//AUTOCOMPLETADOS DE MARCAS
	public function obtenerMarcasProductos()
	{
		$datos = $this->configuracion->obtenerMarcasProductos($this->input->get('term'));
		
		if($datos!=null)
		{
			foreach ($datos as $row)
			{
				$result[]= $row;
			}
			
			echo json_encode($result);
		}
	}
	
	//AUTOCOMPLETADOS DE SERIES
	public function obtenerSeries()
	{
		$datos = $this->configuracion->obtenerSeries($this->input->get('term'));
		
		if($datos!=null)
		{
			foreach ($datos as $row)
			{
				$result[]= $row;
			}
			
			echo json_encode($result);
		}
	}
	
	//AUTOCOMPLETADOS DE DS
	public function obtenerDs()
	{
		$datos = $this->configuracion->obtenerDs($this->input->get('term'));
		
		if($datos!=null)
		{
			foreach ($datos as $row)
			{
				$result[]= $row;
			}
			
			echo json_encode($result);
		}
	}
	
	//AUTOCOMPLETADOS DE ANCHOS
	public function obtenerAnchos()
	{
		$datos = $this->configuracion->obtenerAnchos($this->input->get('term'));
		
		if($datos!=null)
		{
			foreach ($datos as $row)
			{
				$result[]= $row;
			}
			
			echo json_encode($result);
		}
	}
	
	//AUTOCOMPLETADOS DE SBU
	public function obtenerSbu()
	{
		$datos = $this->configuracion->obtenerSbu($this->input->get('term'));
		
		if($datos!=null)
		{
			foreach ($datos as $row)
			{
				$result[]= $row;
			}
			
			echo json_encode($result);
		}
	}
	
	
	public function obtenerLineaNueva($nombre)
	{
		$sql="select idLinea
		from productos_lineas
		where nombre='$nombre'";	
		
		$query=$this->db->query($sql)->row();
		
		if($query!=null)
		{
			return $query->idLinea;
		}
		else
		{
			$data['nombre']	=$nombre;
			$this->db->insert('productos_lineas',$data);
			
			return $this->db->insert_id();
		}
	}
	
	public function corregirPrecios()
	{
		$this->db->trans_start();
		
		$sql="select * from exporta";
		
		foreach($this->db->query($sql)->result() as $row)
		{
			$data=array
			(
				'precioA'			=>$row->precioA,
				'precioB'			=>$row->precioB,
				#'precioC'			=>$row->precioC,
				#'precioD'			=>$row->precioD,
			);
			
			$this->db->where('codigoInterno',$row->codigoInterno);
			$this->db->update('produccion_productos',$data);
			
			
			$data=array
			(
				'precioA'			=>$row->precioA,
				'precioB'			=>$row->precioB,
				#'precioC'			=>$row->precioC,
				#'precioD'			=>$row->precioD,
			);
			
			$this->db->where('codigoInterno',$row->codigoInterno);
			$this->db->update('productos',$data);
			
			
			/*$sql="select idProducto
			from productos
			where codigoInterno='$row->codigoInterno'";
			
			$producto=$this->db->query($sql)->row();
				
			if($producto!=null)
			{
				$data=array
				(
					''
				);
			}*/
		}
		
		if ($this->db->trans_status() === FALSE)
		{
			$this->db->trans_rollback(); 
			$this->db->trans_complete();
		}
		else
		{
			$this->db->trans_commit();
			$this->db->trans_complete();
	  	}
		
		redirect('configuracion/index','refresh');
	}

	public function importarProductos()
	{
		$this->db->trans_start();
		
		$sql="select * from exportar";
		
		foreach($this->db->query($sql)->result() as $row)
		{
			$data=array
			(
				'nombre'			=>$row->diseño,
				'fechaRegistro'		=>date('Y-m-d H:i:s'),
				'precioA'			=>$row->precioA,
				'precioB'			=>$row->precioB,
				'precioC'			=>$row->precioC,
				'precioD'			=>$row->precioD,
				'precioE'			=>0,
				'reventa'			=>1,
				'piezas'			=>1,
				'unidad'			=>'PZA',
				'codigoInterno'		=>$row->codigoInterno,
				#'diseno'			=>$row->diseno,
				#'medida'			=>$row->talla,
				'idLinea'			=>$this->obtenerLineaNueva($row->categoria),
			);
			
			$this->db->insert('produccion_productos',$data);
			$idProducto		=$this->db->insert_id();
			
			$data=array
			(
				'nombre'			=>$row->diseño,
				'sbu'				=>$row->nombre,
				'fecha'				=>date('Y-m-d H:i:s'),
				'precioA'			=>$row->precioA,
				'precioB'			=>$row->precioB,
				'precioC'			=>$row->precioC,
				'precioD'			=>$row->precioD,
				'precioE'			=>0,
				'reventa'			=>1,
				'codigoInterno'		=>$row->codigoInterno,
				'unidad'			=>'PZA',
				'codigoBarras'		=>'',
				'idUsuario'			=>1,
				'diseno'			=>$row->diseño,
				'medida'			=>$row->medida,
				'marca'				=>$row->marca,
				'ancho'				=>$row->ancho,
				'serie'				=>$row->serie,
				'rin'				=>$row->rin,
				'ds'				=>$row->ds,
				'tc'				=>$row->tc,
				'idLinea'			=>$this->obtenerLineaNueva($row->categoria),
			);
			
			$this->db->insert('productos',$data);
			$idProductoCaja		=$this->db->insert_id();
			
			$data=array
			(
				'idProductoProduccion'	=>$idProducto,
				'idProducto'			=>$idProductoCaja,
				'cantidad'				=>1,
				'fecha'					=>date('Y-m-d H:i:s')
			);
			
			$this->db->insert('rel_producto_produccion',$data);
			
			$data=array
			(
				'idProducto'			=>$idProductoCaja,
				'precio'				=>$row->costo,
				'idProveedor'			=>1
			);
			
			$this->db->insert('rel_producto_proveedor',$data);
		}
		
		if ($this->db->trans_status() === FALSE)
		{
			$this->db->trans_rollback(); 
			$this->db->trans_complete();
		}
		else
		{
			$this->db->trans_commit();
			$this->db->trans_complete();
	  	}
		
		redirect('configuracion/index','refresh');
	}
	
	public function importarBaby()
	{
		$this->db->trans_start();
		
		$sql="select * from exportar";
		
		foreach($this->db->query($sql)->result() as $row)
		{
			$data=array
			(
				'nombre'			=>$row->nombre,
				'fechaRegistro'		=>date('Y-m-d H:i:s'),
				'precioA'			=>$row->precio,
				'precioB'			=>$row->precio,
				'precioC'			=>$row->precio,
				'precioD'			=>$row->precio,
				'precioE'			=>$row->precio,
				'reventa'			=>1,
				'piezas'			=>1,
				'unidad'			=>'PZA',
				'codigoInterno'		=>$row->codigoInterno,
				'diseno'			=>'Pendiente',
				'talla'				=>'Pendiente',
				'idLinea'			=>1,
			);
			
			$this->db->insert('produccion_productos',$data);
			$idProducto		=$this->db->insert_id();
			
			$data=array
			(
				'nombre'			=>$row->nombre,
				'fecha'				=>date('Y-m-d H:i:s'),
				'precioA'			=>$row->precio,
				'precioB'			=>$row->precio,
				'precioC'			=>$row->precio,
				'precioD'			=>$row->precio,
				'precioE'			=>$row->precio,
				'reventa'			=>1,
				'codigoInterno'		=>$row->codigoInterno,
				'unidad'			=>'PZA',
				'codigoBarras'		=>$row->codigoBarras,
				'idUsuario'			=>1,
				'diseno'			=>'Pendiente',
				'talla'				=>'Pendiente',
				'idLinea'			=>1,
			);
			
			$this->db->insert('productos',$data);
			$idProductoCaja		=$this->db->insert_id();
			
			$data=array
			(
				'idProductoProduccion'	=>$idProducto,
				'idProducto'			=>$idProductoCaja,
				'cantidad'				=>1,
				'fecha'					=>date('Y-m-d H:i:s')
			);
			
			$this->db->insert('rel_producto_produccion',$data);
			
			$data=array
			(
				'idProducto'			=>$idProductoCaja,
				'precio'				=>$row->costo,
				'idProveedor'			=>6
			);
			
			$this->db->insert('rel_producto_proveedor',$data);
		}
		
		if ($this->db->trans_status() === FALSE)
		{
			$this->db->trans_rollback(); 
			$this->db->trans_complete();
		}
		else
		{
			$this->db->trans_commit();
			$this->db->trans_complete();
	  	}
		
		redirect('configuracion/index','refresh');
	}
	
	public function exportarClientes()
	{
		$this->db->trans_start();
		
		$sql="select * from expor";
		
		foreach($this->db->query($sql)->result() as $row)
		{
			$data=array
			(
				'email'				=>$row->email,
				'fechaRegistro'		=>date('Y-m-d H:i:s'),
				'telefono'			=>$row->telefono,
				'idUsuario'			=>1,
				'rfc'				=>$row->rfc,
				'empresa'			=>$row->empresa,
				'calle'				=>$row->calle,
				'estado'			=>$row->estado,
				'municipio'			=>$row->municipio,
				'pais'				=>'MÉXICO',
				'idZona'			=>$row->idZona,
			);
			
			$this->db->insert('clientes',$data);
			$idCliente		=$this->db->insert_id();
			
			$data=array
			(
				'nombre'			=>$row->contacto,
				'fechaRegistro'		=>date('Y-m-d H:i:s'),
				'idCliente'			=>$idCliente,
				'direccion'			=>$row->departamento,
				'email'				=>$row->email,
				'telefono'			=>$row->telefono,
			);
			
			$this->db->insert('clientes_contactos',$data);
			
		}
		
		if ($this->db->trans_status() === FALSE)
		{
			$this->db->trans_rollback(); 
			$this->db->trans_complete();
		}
		else
		{
			$this->db->trans_commit();
			$this->db->trans_complete();
	  	}
		
		redirect('configuracion/index','refresh');
	}
	
	#----------------------------------------------------------------------------------------------------------#
	#---------------------------------------------------DIVISAS------------------------------------------------#
	#----------------------------------------------------------------------------------------------------------#
	
	public function divisas()
	{
		$Data['title']			= "Panel de Administración";
		$Data['cassadmin']		=$this->_csstyle["cassadmin"];
		$Data['csmenu']			=$this->_csstyle["csmenu"];   
		$Data['csvalidate']		=$this->_csstyle["csvalidate"];
		$Data['csui']			=$this->_csstyle["csui"];
		$Data['Jry']			=$this->_jss['jquery'];
		$Data['Jqui']			=$this->_jss['jqueryui'];
		//$Data['jvalidate']		=$this->_jss['jvalidate'];
		$Data['nameusuario']	=$this->modelousuario->getUsuarios($this->_iduser);
		$Data['Fecha_actual']	=$this->_fechaActual;    
		$Data['permisos']		=$this->configuracion->obtenerRolPermisos($this->session->userdata('rol'));
		$Data['menuActivo']		='configuracion'; 
		
		$this->load->view("cabezera",$Data);
		$this->load->view('header',$Data);
		$this->load->view("principal",$Data);
		
		#----------------------------------PERMISOS------------------------------------#
		$data['permiso']=$this->configuracion->obtenerPermisosId('19',$this->session->userdata('rol'));
		
		if($data['permiso']->leer=='0' and $data['permiso']->escribir=='0')
		{
			redirect('principal/permisosUsuario','refresh');
			return;
		}
		
		$data['divisas']	=$this->configuracion->obtenerDivisas();
		
		$this->load->view("configuracion/divisas",$data);
		$this->load->view("pie",$Data);
	}
	
	public function formularioDivisas()
	{
		echo '
		<table class="admintable" width="100%;">
			<tr>
				<td class="key">Nombre:</td>
				<td>
					<input name="txtNombre" id="txtNombre" type="text" class="cajas"  />
				</td>
			</tr>	
			
			<tr>
				<td class="key">Clave:</td>
				<td>
					<input name="txtClave" id="txtClave" type="text" class="cajas"  />
				</td>
			</tr>	
			
			<tr>
				<td class="key">Tipo de cambio:</td>
				<td>
					<input name="txtTipoCambio" id="txtTipoCambio" type="text" class="cajas"  />
				</td>
			</tr>	
		</table>';
	}
	
	public function obtenerDivisa()
	{
		$idDivisa=$this->input->post('idDivisa');
		
		$divisa=$this->configuracion->obtenerDivisa($idDivisa);
		
		echo '
		<table class="admintable" width="100%;">
			<tr>
				<td class="key">Nombre:</td>
				<td>
					<input name="txtNombre" value="'.$divisa->nombre.'" id="txtNombre" type="text" class="cajas"  />
					<input value="'.$divisa->idDivisa.'" id="txtIdDivisa" type="hidden" />
				</td>
			</tr>	
			
			<tr>
				<td class="key">Clave:</td>
				<td>
					<input name="txtClave" value="'.$divisa->clave.'" id="txtClave" type="text" class="cajas"  />
				</td>
			</tr>	
			
			<tr>
				<td class="key">Tipo de cambio:</td>
				<td>
					<input name="txtTipoCambio" value="'.$divisa->tipoCambio.'" id="txtTipoCambio" type="text" class="cajas"  />
				</td>
			</tr>	
		</table>';
	}
	
	public function registrarDivisa()
	{
		if(!empty ($_POST))
		{
			$divisa=$this->configuracion->registrarDivisa();
			
			$divisa=="1"?
				$this->session->set_userdata('notificacion','La divisa se ha registrado correctamente'):'';
			
			echo $divisa;
		}
	}
	
	public function editarDivisa()
	{
		if(!empty ($_POST))
		{
			$divisa=$this->configuracion->editarDivisa();
			
			$divisa=="1"?
				$this->session->set_userdata('notificacion','La divisa se ha editado correctamente'):'';
			
			echo $divisa;
		}
	}
	
	public function borrarDivisa($idDivisa)
	{
		#----------------------------------PERMISOS------------------------------------#
		$data['permiso']=$this->configuracion->obtenerPermisosId('19',$this->session->userdata('rol'));
		
		if($data['permiso']->escribir=='0')
		{
			redirect('principal/permisosUsuario','refresh');
			return;
		}
		
		$cuenta=$this->configuracion->borrarDivisa($idDivisa);
		
		$cuenta=="1"?
				$this->session->set_userdata('notificacion','La divisa se ha borrado correctamente'):
				$this->session->set_userdata('errorNotificacion','Error al borrar la divisa, esta asociada a cotizaciones y ventas');
				
		redirect('configuracion/divisas','refresh');
	}
	
	#----------------------------------------------------------------------------------------------------------#
	#-------------------------------------PARA LOS CATALOGOS CONTABLES-----------------------------------------#
	#----------------------------------------------------------------------------------------------------------#
	public function catalogosContables()
	{
		$Data['title']			= "Panel de Administración";
		$Data['cassadmin']		=$this->_csstyle["cassadmin"];
		$Data['csmenu']			=$this->_csstyle["csmenu"];   
		$Data['csvalidate']		=$this->_csstyle["csvalidate"];
		$Data['csui']			=$this->_csstyle["csui"];
		$Data['Jry']			=$this->_jss['jquery'];
		$Data['Jqui']			=$this->_jss['jqueryui'];
		//$Data['jvalidate']		=$this->_jss['jvalidate'];
		$Data['nameusuario']	=$this->modelousuario->getUsuarios($this->_iduser);
		$Data['Fecha_actual']	=$this->_fechaActual;    
		$Data['permisos']		=$this->configuracion->obtenerRolPermisos($this->session->userdata('rol'));
		$Data['menuActivo']		='configuracion'; 
		
		$this->load->view("cabezera",$Data);
		$this->load->view('header',$Data);
		$this->load->view("principal",$Data);
		
		#----------------------------------PERMISOS------------------------------------#
		$data['permiso']=$this->configuracion->obtenerPermisosId('19',$this->session->userdata('rol'));
		
		if($data['permiso']->leer=='0' and $data['permiso']->escribir=='0')
		{
			redirect('principal/permisosUsuario','refresh');
			return;
		}
		
		$data['departamentos']	=$this->configuracion->obtenerDepartamentos();
		$data['productos']		=$this->configuracion->obtenerProductos();
		$data['gastos']			=$this->configuracion->obtenerGastos();
		$data['nombres']		=$this->configuracion->obtenerNombres();
		$data['puestos']		=$this->configuracion->obtenerPuestos();
		
		$this->load->view("configuracion/catalogosContables",$data);
		$this->load->view("pie",$Data);
	}
	
	public function formularioDepartamentos()
	{
		echo '
		<script>
		$(document).ready(function()
		{
			$("#txtNombre").autocomplete(
			{
				source:"'.base_url().'configuracion/obtenerDepartamentosRepetidos",
				
				select:function( event, ui)
				{
					notify("El departamento ya esta registrado",500,5000,"error",5,5);
					document.getElementById("txtNombre").reset();
				}
			});
		});
		</script>
		<table class="admintable" width="100%;">
			<tr>
				<td class="key">Nombre:</td>
				<td>
					<input style="width:300px;"  name="txtNombre" id="txtNombre" type="text" class="cajas"  />
				</td>
			</tr>	
		</table>';
	}
	
	public function obtenerDepartamento()
	{
		$idDepartamento	=$this->input->post('idDepartamento');
		$departamento	=$this->configuracion->obtenerDepartamento($idDepartamento);
		
		echo '
		<table class="admintable" width="100%;">
			<tr>
				<td class="key">Nombre:</td>
				<td>
					<input  style="width:300px;" name="txtNombre" value="'.$departamento->nombre.'" id="txtNombre" type="text" class="cajas"  />
					<input value="'.$departamento->idDepartamento.'" id="txtIdDepartamento" type="hidden" />
				</td>
			</tr>	
		</table>';
	}
	
	public function registrarDepartamento()
	{
		if(!empty ($_POST))
		{
			$departamento=$this->configuracion->registrarDepartamento();
			
			$departamento=="1"?
				$this->session->set_userdata('notificacion','El departamento se ha registrado correctamente'):'';
			
			echo $departamento;
		}
	}
	
	public function editarDepartamento()
	{
		if(!empty ($_POST))
		{
			$departamento=$this->configuracion->editarDepartamento();
			
			$departamento=="1"?
				$this->session->set_userdata('notificacion','El departamento se ha editado correctamente'):'';
			
			echo $departamento;
		}
	}
	
	public function borrarDepartamento($idDepartamento)
	{
		#----------------------------------PERMISOS------------------------------------#
		$data['permiso']=$this->configuracion->obtenerPermisosId('19',$this->session->userdata('rol'));
		
		if($data['permiso']->escribir=='0')
		{
			redirect('principal/permisosUsuario','refresh');
			return;
		}
		
		$departamento=$this->configuracion->borrarDepartamento($idDepartamento);
		
		$departamento=="1"?
				$this->session->set_userdata('notificacion','El departamento se ha borrado correctamente'):
				$this->session->set_userdata('errorNotificacion','Error al borrar el departamento, esta asociado a cotizaciones y ventas');
				
		redirect('configuracion/catalogosContables','refresh');
	}
	
	//PARA LOS PRODUCTOS
	public function formularioProductos()
	{
		echo '
		<script>
		$(document).ready(function()
		{
			$("#txtNombre").autocomplete(
			{
				source:"'.base_url().'configuracion/obtenerProductosRepetidos",
				
				select:function( event, ui)
				{
					notify("El producto ya esta registrado",500,5000,"error",5,5);
					document.getElementById("txtNombre").reset();
				}
			});
		});
		</script>
		<table class="admintable" width="100%;">
			<tr>
				<td class="key">Nombre:</td>
				<td>
					<input style="width:300px;"  name="txtNombre" id="txtNombre" type="text" class="cajas"  />
				</td>
			</tr>	
		</table>';
	}
	
	public function obtenerProducto()
	{
		$idProducto	=$this->input->post('idProducto');
		$producto	=$this->configuracion->obtenerProducto($idProducto);
		
		echo '
		<table class="admintable" width="100%;">
			<tr>
				<td class="key">Nombre:</td>
				<td>
					<input  style="width:300px;" name="txtNombre" value="'.$producto->nombre.'" id="txtNombre" type="text" class="cajas"  />
					<input value="'.$producto->idProducto.'" id="txtIdProducto" type="hidden" />
				</td>
			</tr>	
		</table>';
	}
	
	public function registrarProducto()
	{
		if(!empty ($_POST))
		{
			$producto=$this->configuracion->registrarProducto();
			
			$producto=="1"?
				$this->session->set_userdata('notificacion','El producto se ha registrado correctamente'):'';
			
			echo $producto;
		}
	}
	
	public function editarProducto()
	{
		if(!empty ($_POST))
		{
			$producto=$this->configuracion->editarProducto();
			
			$producto=="1"?
				$this->session->set_userdata('notificacion','El producto se ha editado correctamente'):'';
			
			echo $producto;
		}
	}
	
	public function borrarProducto($idProducto)
	{
		#----------------------------------PERMISOS------------------------------------#
		$data['permiso']=$this->configuracion->obtenerPermisosId('19',$this->session->userdata('rol'));
		
		if($data['permiso']->escribir=='0')
		{
			redirect('principal/permisosUsuario','refresh');
			return;
		}
		
		$producto=$this->configuracion->borrarProducto($idProducto);
		
		$producto=="1"?
				$this->session->set_userdata('notificacion','El producto se ha borrado correctamente'):
				$this->session->set_userdata('errorNotificacion','Error al borrar el producto, esta asociado a cotizaciones y ventas');
				
		redirect('configuracion/catalogosContables','refresh');
	}
	
	//PARA LOS GASTOS
	public function formularioGastos()
	{
		echo '
		<script>
		$(document).ready(function()
		{
			$("#txtNombre").autocomplete(
			{
				source:"'.base_url().'configuracion/obtenerGastosRepetidos",
				
				select:function( event, ui)
				{
					notify("El gasto ya esta registrado",500,5000,"error",5,5);
					document.getElementById("txtNombre").reset();
				}
			});
		});
		</script>
		<table class="admintable" width="100%;">
			<tr>
				<td class="key">Nombre:</td>
				<td>
					<input style="width:300px;"  name="txtNombre" id="txtNombre" type="text" class="cajas"  />
				</td>
			</tr>	
		</table>';
	}
	
	public function obtenerGasto()
	{
		$idGasto	=$this->input->post('idGasto');
		$gasto		=$this->configuracion->obtenerGasto($idGasto);
		
		echo '
		<table class="admintable" width="100%;">
			<tr>
				<td class="key">Nombre:</td>
				<td>
					<input  style="width:300px;" name="txtNombre" value="'.$gasto->nombre.'" id="txtNombre" type="text" class="cajas"  />
					<input value="'.$gasto->idGasto.'" id="txtIdGasto" type="hidden" />
				</td>
			</tr>	
		</table>';
	}
	
	public function registrarGasto()
	{
		if(!empty ($_POST))
		{
			$gasto=$this->configuracion->registrarGasto();
			
			$gasto=="1"?
				$this->session->set_userdata('notificacion','El gasto se ha registrado correctamente'):'';
			
			echo $gasto;
		}
	}
	
	public function editarGasto()
	{
		if(!empty ($_POST))
		{
			$gasto=$this->configuracion->editarGasto();
			
			$gasto=="1"?
				$this->session->set_userdata('notificacion','El gasto se ha editado correctamente'):'';
			
			echo $gasto;
		}
	}
	
	public function borrarGasto($idGasto)
	{
		#----------------------------------PERMISOS------------------------------------#
		$data['permiso']=$this->configuracion->obtenerPermisosId('19',$this->session->userdata('rol'));
		
		if($data['permiso']->escribir=='0')
		{
			redirect('principal/permisosUsuario','refresh');
			return;
		}
		
		$gasto=$this->configuracion->borrarGasto($idGasto);
		
		$gasto=="1"?
				$this->session->set_userdata('notificacion','El gasto se ha borrado correctamente'):
				$this->session->set_userdata('errorNotificacion','Error al borrar el gasto, esta asociado a cotizaciones y ventas');
				
		redirect('configuracion/catalogosContables','refresh');
	}
	
	//PARA LOS NOMBRES
	public function formularioNombres()
	{
		echo '
		<script>
		$(document).ready(function()
		{
			$("#txtNombre").autocomplete(
			{
				source:"'.base_url().'configuracion/obtenerNombresRepetidos",
				
				select:function( event, ui)
				{
					notify("El nombre ya esta registrado",500,5000,"error",5,5);
					document.getElementById("txtNombre").reset();
				}
			});
		});
		</script>
		<table class="admintable" width="100%;">
			<tr>
				<td class="key">Nombre:</td>
				<td>
					<input style="width:300px;"  name="txtNombre" id="txtNombre" type="text" class="cajas"  />
				</td>
			</tr>	
		</table>';
	}
	
	public function obtenerNombre()
	{
		$idNombre	=$this->input->post('idNombre');
		$nombre		=$this->configuracion->obtenerNombre($idNombre);
		
		echo '
		<table class="admintable" width="100%;">
			<tr>
				<td class="key">Nombre:</td>
				<td>
					<input  style="width:300px;" name="txtNombre" value="'.$nombre->nombre.'" id="txtNombre" type="text" class="cajas"  />
					<input value="'.$nombre->idNombre.'" id="txtIdNombre" type="hidden" />
				</td>
			</tr>	
		</table>';
	}
	
	public function registrarNombre()
	{
		if(!empty ($_POST))
		{
			$nombre=$this->configuracion->registrarNombre();
			
			$nombre=="1"?
				$this->session->set_userdata('notificacion','El nombre se ha registrado correctamente'):'';
			
			echo $nombre;
		}
	}
	
	public function editarNombre()
	{
		if(!empty ($_POST))
		{
			$nombre=$this->configuracion->editarNombre();
			
			$nombre=="1"?
				$this->session->set_userdata('notificacion','El nombre se ha editado correctamente'):'';
			
			echo $nombre;
		}
	}
	
	public function borrarNombre($idNombre)
	{
		#----------------------------------PERMISOS------------------------------------#
		$data['permiso']=$this->configuracion->obtenerPermisosId('19',$this->session->userdata('rol'));
		
		if($data['permiso']->escribir=='0')
		{
			redirect('principal/permisosUsuario','refresh');
			return;
		}
		
		$nombre=$this->configuracion->borrarNombre($idNombre);
		
		$nombre=="1"?
				$this->session->set_userdata('notificacion','El nombre se ha borrado correctamente'):
				$this->session->set_userdata('errorNotificacion','Error al borrar el nombre, esta asociado a cotizaciones y ventas');
				
		redirect('configuracion/catalogosContables','refresh');
	}
	
	#----------------------------------------------------------------------------------------------------------#
	#---------------------------------------------------LINEAS ------------------------------------------------#
	#----------------------------------------------------------------------------------------------------------#
	
	public function lineas()
	{
		$Data['title']			= "Panel de Administración";
		$Data['cassadmin']		=$this->_csstyle["cassadmin"];
		$Data['csmenu']			=$this->_csstyle["csmenu"];   
		$Data['csvalidate']		=$this->_csstyle["csvalidate"];
		$Data['csui']			=$this->_csstyle["csui"];
		$Data['Jry']			=$this->_jss['jquery'];
		$Data['Jqui']			=$this->_jss['jqueryui'];
		//$Data['jvalidate']		=$this->_jss['jvalidate'];
		$Data['nameusuario']	=$this->modelousuario->getUsuarios($this->_iduser);
		$Data['Fecha_actual']	=$this->_fechaActual;    
		$Data['permisos']		=$this->configuracion->obtenerRolPermisos($this->session->userdata('rol'));
		$Data['menuActivo']		='configuracion'; 
		
		$this->load->view("cabezera",$Data);
		$this->load->view('header',$Data);
		$this->load->view("principal",$Data);
		
		#----------------------------------PERMISOS------------------------------------#
		$data['permiso']=$this->configuracion->obtenerPermisosId('19',$this->session->userdata('rol'));
		
		if($data['permiso']->leer=='0' and $data['permiso']->escribir=='0')
		{
			redirect('principal/permisosUsuario','refresh');
			return;
		}
		
		$data['lineas']	=$this->configuracion->obtenerLineas();
		
		$this->load->view("configuracion/lineas",$data);
		$this->load->view("pie",$Data);
	}
	
	public function formularioLineas()
	{
		echo '
		<script>
		$(document).ready(function()
		{
			$("#txtNombre").autocomplete(
			{
				source:"'.base_url().'configuracion/obtenerLineasRepetidas",
				
				select:function( event, ui)
				{
					notify("La línea ya esta registrada",500,5000,"error",5,5);
					document.getElementById("txtNombre").reset();
				}
			});
		});
		</script>
		<table class="admintable" width="100%;">
			<tr>
				<td class="key">Nombre:</td>
				<td>
					<input name="txtNombre" style="width:300px" id="txtNombre" type="text" class="cajas"  />
				</td>
			</tr>	
		</table>';
	}
	
	public function obtenerLinea()
	{
		$idLinea=$this->input->post('idLinea');
		
		$linea=$this->configuracion->obtenerLinea($idLinea);
		
		echo '
		<table class="admintable" width="100%;">
			<tr>
				<td class="key">Nombre:</td>
				<td>
					<input name="txtNombre" style="width:300px" value="'.$linea->nombre.'" id="txtNombre" type="text" class="cajas"  />
					<input value="'.$linea->idLinea.'" id="txtIdLinea" type="hidden" />
				</td>
			</tr>	
		</table>';
	}
	
	public function registrarLinea()
	{
		if(!empty ($_POST))
		{
			$linea=$this->configuracion->registrarLinea();
			
			$linea=="1"?
				$this->session->set_userdata('notificacion','La categoría se ha registrado correctamente'):'';
			
			echo $linea;
		}
	}
	
	public function editarLinea()
	{
		if(!empty ($_POST))
		{
			$linea=$this->configuracion->editarLinea();
			
			$linea=="1"?
				$this->session->set_userdata('notificacion','La categoría se ha editado correctamente'):'';
			
			echo $linea;
		}
	}
	
	public function borrarLinea($idLinea)
	{
		#----------------------------------PERMISOS------------------------------------#
		$data['permiso']=$this->configuracion->obtenerPermisosId('19',$this->session->userdata('rol'));
		
		if($data['permiso']->escribir=='0')
		{
			redirect('principal/permisosUsuario','refresh');
			return;
		}
		
		$linea=$this->configuracion->borrarLinea($idLinea);
		
		$linea=="1"?
				$this->session->set_userdata('notificacion','La categoría se ha borrado correctamente'):
				$this->session->set_userdata('errorNotificacion','Error al borrar la categoría, esta asociada a productos');
				
		redirect('configuracion/lineas','refresh');
	}
	
	
	public function formularioSubCategorias()
	{
		if(!empty ($_POST))
		{
			$idLinea		=$this->input->post('idLinea');
			$subCategorias	=$this->configuracion->obtenerSubCategorias($idLinea);
			$linea			=$this->configuracion->obtenerLinea($idLinea);
			
			echo'
			<input type="hidden" class="cajas" id="txtIdLinea" value="'.$idLinea.'">
			<table class="admintable" width="100%">
				<tr>
					<th colspan="2">Registrar nueva subcategoría de la categoría "'.$linea->nombre.'"</th>
				</tr>
				<tr>
					<td class="key">Nombre</td>
					<td><input type="text" class="cajas" id="txtNombre" style="width:250px"></td>
				</tr>
			</table>
			
			<table class="admintable" width="99%">
				<tr>
					<th colspan="5">Lista de subcategorías</th>
				</tr>
				<tr>
					<th>#</th>
					<th width="50%">Nombre</th>
					<th>Acciones</th>
				</tr>';
			
			$i=1;
			foreach($subCategorias as $row)
			{
				$estilo=$i%2>0?'class="sombreado"':'class="sinSombra"';
				
				echo'
				<tr '.$estilo.'>
					<td align="center">'.$i.'</td>
					<td>'.$row->nombre.'</td>
					<td align="center">
						 <img src="'.base_url().'img/editar.png" width="22" height="22" 
						 	title="Editar" onClick="obtenerSubCategoria('.$row->idSubCategoria.')" >
						&nbsp;
						
						<img src="'.base_url().'img/borrar.png" width="22" height="22" 
						 	title="Editar" onClick="borrarSubCategoria('.$row->idSubCategoria.')" >
							<br />
						<a>Editar</a>
						<a>Borrar</a>
					</td>
				</tr>';
				
				$i++;
			}
			
			echo'</table>';
		}
	}
	
	public function obtenerSubCategorias()
	{
		$idCategoria	=$this->input->post('idCategoria');
		$subCategorias	=$this->configuracion->obtenerSubCategorias($idCategoria);
		
		echo'
		<select class="cajas" id="selectSubCategoriasRegistro" name="selectSubCategorias" onchange="obtenerConsecutivoLinea()" style="width:280px" required="true">
			<option value="">Seleccione</option>';
				
		foreach($subCategorias as $row)
		{
			echo '<option value="'.$row->idSubCategoria.'">'.$row->nombre.'</option>';
		}
		
		echo'</select>';
	}
	
	public function obtenerSubCategoria()
	{
		$idSubCategoria	=$this->input->post('idSubCategoria');
		$subCategoria	=$this->configuracion->obtenerSubCategoria($idSubCategoria);
		
		echo'
		<input type="hidden" class="cajas" id="txtIdSubCategoria" value="'.$idSubCategoria.'">
		<table class="admintable" width="100%">
			<tr>
				<td class="key">Nombre</td>
				<td><input type="text" class="cajas" value="'.$subCategoria->nombre.'" id="txtNombreEditar" style="width:250px" ></td>
			</tr>
		</table>';
	}
	
	public function borrarSubCategoria()
	{
		if(!empty ($_POST))
		{
			$idSubCategoria	=$this->input->post('idSubCategoria');
			$subCategoria	=$this->configuracion->borrarSubCategoria($idSubCategoria);
			
			echo $subCategoria;
		}
	}
	
	public function editarSubCategoria()
	{
		if(!empty ($_POST))
		{
			$subCategoria	=$this->configuracion->editarSubCategoria();
			
			echo $subCategoria;
		}
	}
	
	public function registrarSubCategoria()
	{
		if(!empty ($_POST))
		{
			$subCategoria	=$this->configuracion->registrarSubCategoria();
			
			echo $subCategoria;
		}
	}
	
	public function quitarNotificacionCobro()
	{
		if(!empty ($_POST))
		{
			$notificacion=$this->configuracion->quitarNotificacionCobro();
			echo $notificacion;
		}
	}
	
	public function quitarNotificacionPago()
	{
		if(!empty ($_POST))
		{
			$notificacion=$this->configuracion->quitarNotificacionPago();
			echo $notificacion;
		}
	}
	
	
	#----------------------------------------------------------------------------------------------------------#
	#---------------------------------------------------MODELOS ------------------------------------------------#
	#----------------------------------------------------------------------------------------------------------#
	
	public function modelos()
	{
		$Data['title']			= "Panel de Administración";
		$Data['cassadmin']		=$this->_csstyle["cassadmin"];
		$Data['csmenu']			=$this->_csstyle["csmenu"];   
		$Data['csvalidate']		=$this->_csstyle["csvalidate"];
		$Data['csui']			=$this->_csstyle["csui"];
		$Data['Jry']			=$this->_jss['jquery'];
		$Data['Jqui']			=$this->_jss['jqueryui'];
		//$Data['jvalidate']		=$this->_jss['jvalidate'];
		$Data['nameusuario']	=$this->modelousuario->getUsuarios($this->_iduser);
		$Data['Fecha_actual']	=$this->_fechaActual;    
		$Data['permisos']		=$this->configuracion->obtenerRolPermisos($this->session->userdata('rol'));
		$Data['menuActivo']		='configuracion'; 
		
		$this->load->view("cabezera",$Data);
		$this->load->view('header',$Data);
		$this->load->view("principal",$Data);
		
		#----------------------------------PERMISOS------------------------------------#
		$data['permiso']=$this->configuracion->obtenerPermisosId('19',$this->session->userdata('rol'));
		
		if($data['permiso']->leer=='0' and $data['permiso']->escribir=='0')
		{
			redirect('principal/permisosUsuario','refresh');
			return;
		}
		
		$data['modelos']	=$this->configuracion->obtenerModelos();
		
		$this->load->view("configuracion/modelos",$data);
		$this->load->view("pie",$Data);
	}
	
	public function formularioModelos()
	{
		echo '
		<table class="admintable" width="100%;">
			<tr>
				<td class="key">Nombre:</td>
				<td>
					<input name="txtNombre" style="width:300px" id="txtNombre" type="text" class="cajas"  />
				</td>
			</tr>	
		</table>';
	}
	
	public function obtenerModelo()
	{
		$idModelo	=$this->input->post('idModelo');
		$modelo		=$this->configuracion->obtenerModelo($idModelo);
		
		echo '
		<table class="admintable" width="100%;">
			<tr>
				<td class="key">Nombre:</td>
				<td>
					<input name="txtNombre" style="width:300px" value="'.$modelo->nombre.'" id="txtNombre" type="text" class="cajas"  />
					<input value="'.$modelo->idModelo.'" id="txtIdModelo" type="hidden" />
				</td>
			</tr>	
		</table>';
	}
	
	public function registrarModelo()
	{
		if(!empty ($_POST))
		{
			$modelo=$this->configuracion->registrarModelo();
			
			$modelo=="1"?
				$this->session->set_userdata('notificacion','El modelo se ha registrado correctamente'):'';
			
			echo $modelo;
		}
	}
	
	public function editarModelo()
	{
		if(!empty ($_POST))
		{
			$modelo=$this->configuracion->editarModelo();
			
			$modelo=="1"?
				$this->session->set_userdata('notificacion','El modelo se ha editado correctamente'):'';
			
			echo $modelo;
		}
	}
	
	public function borrarModelo($idModelo)
	{
		#----------------------------------PERMISOS------------------------------------#
		$data['permiso']=$this->configuracion->obtenerPermisosId('19',$this->session->userdata('rol'));
		
		if($data['permiso']->escribir=='0')
		{
			redirect('principal/permisosUsuario','refresh');
			return;
		}
		
		$modelo=$this->configuracion->borrarModelo($idModelo);
		
		$modelo=="1"?
				$this->session->set_userdata('notificacion','El modelo se ha borrado correctamente'):
				$this->session->set_userdata('errorNotificacion','Error al borrar el modelo, esta asociado a productos');
				
		redirect('configuracion/modelos','refresh');
	}
	
	
	#----------------------------------------------------------------------------------------------------------#
	#---------------------------------------------------MARCAS ------------------------------------------------#
	#----------------------------------------------------------------------------------------------------------#
	
	public function marcas()
	{
		$Data['title']			= "Panel de Administración";
		$Data['cassadmin']		=$this->_csstyle["cassadmin"];
		$Data['csmenu']			=$this->_csstyle["csmenu"];   
		$Data['csvalidate']		=$this->_csstyle["csvalidate"];
		$Data['csui']			=$this->_csstyle["csui"];
		$Data['Jry']			=$this->_jss['jquery'];
		$Data['Jqui']			=$this->_jss['jqueryui'];
		//$Data['jvalidate']		=$this->_jss['jvalidate'];
		$Data['nameusuario']	=$this->modelousuario->getUsuarios($this->_iduser);
		$Data['Fecha_actual']	=$this->_fechaActual;    
		$Data['permisos']		=$this->configuracion->obtenerRolPermisos($this->session->userdata('rol'));
		$Data['menuActivo']		='configuracion'; 
		
		$this->load->view("cabezera",$Data);
		$this->load->view('header',$Data);
		$this->load->view("principal",$Data);
		
		#----------------------------------PERMISOS------------------------------------#
		$data['permiso']=$this->configuracion->obtenerPermisosId('19',$this->session->userdata('rol'));
		
		if($data['permiso']->leer=='0' and $data['permiso']->escribir=='0')
		{
			redirect('principal/permisosUsuario','refresh');
			return;
		}
		
		$data['marcas']	=$this->configuracion->obtenerMarcas();
		
		$this->load->view("configuracion/marcas",$data);
		$this->load->view("pie",$Data);
	}
	
	public function formularioMarcas()
	{
		echo '
		<table class="admintable" width="100%;">
			<tr>
				<td class="key">Nombre:</td>
				<td>
					<input name="txtNombre" style="width:300px" id="txtNombre" type="text" class="cajas"  />
				</td>
			</tr>	
		</table>';
	}
	
	public function obtenerMarca()
	{
		$idMarca	=$this->input->post('idMarca');
		$marca		=$this->configuracion->obtenerMarca($idMarca);
		
		echo '
		<table class="admintable" width="100%;">
			<tr>
				<td class="key">Nombre:</td>
				<td>
					<input name="txtNombre" style="width:300px" value="'.$marca->nombre.'" id="txtNombre" type="text" class="cajas"  />
					<input value="'.$marca->idMarca.'" id="txtIdMarca" type="hidden" />
				</td>
			</tr>	
		</table>';
	}
	
	public function registrarMarca()
	{
		if(!empty ($_POST))
		{
			$marca=$this->configuracion->registrarMarca();
			
			$marca=="1"?
				$this->session->set_userdata('notificacion','La marca se ha registrado correctamente'):'';
			
			echo $marca;
		}
	}
	
	public function editarMarca()
	{
		if(!empty ($_POST))
		{
			$marca=$this->configuracion->editarMarca();
			
			$marca=="1"?
				$this->session->set_userdata('notificacion','La marca se ha editado correctamente'):'';
			
			echo $marca;
		}
	}
	
	public function borrarMarca($idMarca)
	{
		#----------------------------------PERMISOS------------------------------------#
		$data['permiso']=$this->configuracion->obtenerPermisosId('19',$this->session->userdata('rol'));
		
		if($data['permiso']->escribir=='0')
		{
			redirect('principal/permisosUsuario','refresh');
			return;
		}
		
		$marca=$this->configuracion->borrarMarca($idMarca);
		
		$marca=="1"?
				$this->session->set_userdata('notificacion','La marca se ha borrado correctamente'):
				$this->session->set_userdata('errorNotificacion','Error al borrar la marca, esta asociada a productos');
				
		redirect('configuracion/marcas','refresh');
	}
	
	#----------------------------------------------------------------------------------------------------------#
	#---------------------------------------------------FORMAS DE PAGO-----------------------------------------#
	#----------------------------------------------------------------------------------------------------------#
	
	public function formasPago()
	{
		$Data['title']			= "Panel de Administración";
		$Data['cassadmin']		=$this->_csstyle["cassadmin"];
		$Data['csmenu']			=$this->_csstyle["csmenu"];   
		$Data['csvalidate']		=$this->_csstyle["csvalidate"];
		$Data['csui']			=$this->_csstyle["csui"];
		$Data['Jry']			=$this->_jss['jquery'];
		$Data['Jqui']			=$this->_jss['jqueryui'];
		//$Data['jvalidate']		=$this->_jss['jvalidate'];
		$Data['Jquical']		=$this->_jss['jquerycal'];
		$Data['nameusuario']	=$this->modelousuario->getUsuarios($this->_iduser);
		$Data['Fecha_actual']	=$this->_fechaActual;    
		$Data['permisos']		=$this->configuracion->obtenerRolPermisos($this->session->userdata('rol'));
		$Data['menuActivo']		='configuracion'; 
		
		$this->load->view("cabezera",$Data);
		$this->load->view('header',$Data);
		$this->load->view("principal",$Data);
		
		#----------------------------------PERMISOS------------------------------------#
		$data['permiso']=$this->configuracion->obtenerPermisosId('19',$this->session->userdata('rol'));
		
		if($data['permiso']->leer=='0' and $data['permiso']->escribir=='0')
		{
			redirect('principal/permisosUsuario','refresh');
			return;
		}
		
		$data['formas']	=$this->configuracion->obtenerFormas();
		
		$this->load->view("configuracion/formas",$data);
		$this->load->view("pie",$Data);
	}
	
	public function formularioFormas()
	{
		echo '
		<table class="admintable" width="100%;">
			<tr>
				<td class="key">Nombre:</td>
				<td>
					<input name="txtNombre" style="width:300px" id="txtNombre" type="text" class="cajas"  />
				</td>
			</tr>
			<tr>
				<td class="key">Fecha:</td>
				<td>
					<input name="txtFecha" style="width:100px" id="txtFecha" type="text" class="cajas" readonly="readonly"  />
					<script>
						$("#txtFecha").datepicker();
					</script>
				</td>
			</tr>
			<tr>
				<td class="key">Porcentaje:</td>
				<td>
					<input name="txtPorcentaje" style="width:100px" id="txtPorcentaje" type="text" class="cajas"  />
				</td>
			</tr>	
		</table>';
	}
	
	public function obtenerForma()
	{
		$idForma	=$this->input->post('idForma');
		$forma		=$this->configuracion->obtenerForma($idForma);
		
		echo '
		<input value="'.$forma->idForma.'" id="txtIdForma" type="hidden" />
		<table class="admintable" width="100%;">
			<tr>
				<td class="key">Nombre:</td>
				<td>
					<input name="txtNombre" style="width:300px" value="'.$forma->nombre.'" id="txtNombre" type="text" class="cajas"  />
				</td>
			</tr>
			
			<tr>
				<td class="key">Fecha:</td>
				<td>
					<input name="txtFecha" style="width:100px" value="'.$forma->fecha.'"  id="txtFecha" type="text" class="cajas"  readonly="readonly" />
					<script>
						$("#txtFecha").datepicker();
					</script>
				</td>
			</tr>
			
			<tr>
				<td class="key">Porcentaje:</td>
				<td>
					<input name="txtNombre" style="width:100px" value="'.$forma->porcentaje.'" id="txtPorcentaje" type="text" class="cajas"  />
				</td>
			</tr>	
		</table>';
	}
	
	public function registrarForma()
	{
		if(!empty ($_POST))
		{
			$forma=$this->configuracion->registrarForma();
			
			$forma=="1"?
				$this->session->set_userdata('notificacion','La forma de pago se ha registrado correctamente'):'';
			
			echo $forma;
		}
	}
	
	public function editarForma()
	{
		if(!empty ($_POST))
		{
			$forma=$this->configuracion->editarForma();
			
			$forma=="1"?
				$this->session->set_userdata('notificacion','La forma de pago se ha editado correctamente'):'';
			
			echo $forma;
		}
	}
	
	public function borrarForma($idForma)
	{
		#----------------------------------PERMISOS------------------------------------#
		$data['permiso']=$this->configuracion->obtenerPermisosId('19',$this->session->userdata('rol'));
		
		if($data['permiso']->escribir=='0')
		{
			redirect('principal/permisosUsuario','refresh');
			return;
		}
		
		$forma=$this->configuracion->borrarForma($idForma);
		
		$forma=="1"?
				$this->session->set_userdata('notificacion','La forma de pago se ha borrado correctamente'):
				$this->session->set_userdata('errorNotificacion','Error al borrar la forma de pago, esta asociada a ventas y/o compras');
				
		redirect('configuracion/formasPago','refresh');
	}
	
	//CÓDIGO AGRUPADOR
	
	public function obtenerCodigoAgrupador()
	{
		$codigo =$this->configuracion->obtenerCodigoAgrupador($this->input->get('term'));
		
		if($codigo!=null)
		{
			foreach ($codigo as $row)
			{
				$result[]= $row;
			}
			
			echo json_encode($result);
		}
	}
	
	//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
	//EMISORES
	//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
	public function facturacion()
	{ 
		$Data['title']				= "Panel de Administración";
		$Data['cassadmin']			= $this->_csstyle["cassadmin"];
		$Data['csmenu']				= $this->_csstyle["csmenu"];  
		$Data['csvalidate']			= $this->_csstyle["csvalidate"];
		$Data['csui']				= $this->_csstyle["csui"];
		$Data['nameusuario']		= $this->modelousuario->getUsuarios($this->_iduser);
		$Data['Fecha_actual']		= $this->_fechaActual;
		$Data['Jry']				= $this->_jss['jquery'];
		$Data['Jqui']				= $this->_jss['jqueryui'];
		$Data['permisos']			= $this->configuracion->obtenerRolPermisos($this->session->userdata('rol'));
		$Data['menuActivo']			= 'configuracion'; 
		
		$this->load->view("cabezera",$Data);
		$this->load->view('header',$Data);
		$this->load->view("principal",$Data);

		#----------------------------------PERMISOS------------------------------------#
		$data['permiso']	= $this->configuracion->obtenerPermisosId('19',$this->session->userdata('rol'));
		
		if($data['permiso']->leer=='0' and $data['permiso']->escribir=='0')
		{
			redirect('principal/permisosUsuario','refresh');
			return;
		}
			
		$data['emisores']			= $this->configuracion->obtenerEmisoresAdministracion();
		
		$data['consumidos']			= $this->configuracion->obtenerFoliosConsumidos();
		$data['errores']			= $this->configuracion->obtenerFoliosErrores();
		$data['comprados']			= $this->configuracion->obtenerFoliosComprados();
		#$data['folios']				= $this->configuracion->obtenerFoliosConsumidosEmpresas();
		
		$data['detalles']			= $this->configuracion->obtenerFoliosConsumidosDetalles();

		#$this->load->view("configuracion/facturacion",$data);
		$this->load->view("configuracion/emisores/index",$data);
		$this->load->view("pie",$Data);
	}
	
	public function formularioEmisores()
	{
		$data['regimen']	= $this->configuracion->obtenerRegimenFiscal();
		
		$this->load->view("configuracion/emisores/formularioEmisores",$data);
	}
	
	public function obtenerEmisor()
	{
		if (!empty($_POST))
		{
			$data['emisor']		= $this->configuracion->obtenerEmisor($this->input->post('idEmisor'));
			$data['regimen']	= $this->configuracion->obtenerRegimenFiscal();
			
			$this->load->view("configuracion/emisores/obtenerEmisor",$data);
		}
	}
	
	public function registrarEmisor()
	{
		if (!empty($_POST))
		{
			$emisor=$this->configuracion->registrarEmisor();
			
			$emisor=="1"?
				$this->session->set_userdata('notificacion','El emisor se ha registrado correctamente'):
				$this->session->set_userdata('errorNotificacion','Error al registrar al emisor');
		}
		
		redirect('configuracion/facturacion','refresh');
	}
	
	public function editarEmisor()
	{
		if (!empty($_POST))
		{
			$emisor=$this->configuracion->editarEmisor();
			
			$emisor=="1"?
				$this->session->set_userdata('notificacion','El emisor se ha editado correctamente'):
				$this->session->set_userdata('errorNotificacion','Error al editar al emisor o el registro no tuvo cambios');
		}
		
		redirect('configuracion/facturacion','refresh');
	}
	
	public function borrarEmisor()
	{
		if (!empty($_POST))
		{
			$emisor=$this->configuracion->borrarEmisor($this->input->post('idEmisor'));
			echo $emisor;
		}
	}
	
	public function subirCertificado()
	{
		if (!empty($_FILES)) 
		{
			ini_set("memory_limit","1500M");
			set_time_limit(0); 
		
			$archivoTemporal	= $_FILES['file']['tmp_name'];

			//Validar tipos de archivos
			$extensiones 		= array('cer');
			$archivo 			= pathinfo($_FILES['file']['name']);

			if (in_array($archivo['extension'],$extensiones)) 
			{
				move_uploaded_file($archivoTemporal,carpetaCfdi.$_FILES['file']['name']);

				if(file_exists(carpetaCfdi.$_FILES['file']['name']))
				{
					echo "1";
				}
				else
				{
					echo 'El archivo no se ha cargado correctamente';
				}
			} 
			else 
			{
				echo 'Solo se permiten archivos de certificado(cer)';
			}
		}
	} 
	
	public function procesarCertificado()
	{
		$carpeta 	= 'media/fel/';
		$archivo	=$this->input->post('archivo');
		
		exec("openssl x509 -inform DER -outform PEM -in ".$carpeta.$archivo." -pubkey > ".$carpeta."certificado.txt");
		exec("openssl x509 -in ".$carpeta."certificado.txt -noout -sha1 -startdate >".$carpeta."fechaInicio.txt");
		exec("openssl x509 -in ".$carpeta."certificado.txt -noout -sha1 -enddate >".$carpeta."fechaFin.txt");
		exec("openssl x509 -in ".$carpeta."certificado.txt -noout -sha1 -serial >".$carpeta."serial.txt");
		exec("openssl x509 -in ".$carpeta."certificado.txt -noout -sha1 -subject >".$carpeta."empresa.txt");
		
		//PARA OBTENER EL NUMERO DE CERTIFICADO
		$serial			=leerFichero($carpeta.'serial.txt',"READ","");
		$serial			=str_replace("serial=","",$serial);
		$certificado	="";
		
		for($i=0;$i<strlen($serial);$i++)
		{
			$certificado.=	$i%2>0?$serial[$i]:'';
		}
		
		//PARA OBTENER LA FECHA DE INICIO DEL CERTIFICADO
		$fecha			=leerFichero($carpeta.'fechaInicio.txt',"READ","");
		$fecha			=str_replace("notBefore=","",$fecha);
		$fecha			=explode(" ",$fecha);
		
		$fechaInicio	=$fecha[3]."-".obtenerNumeroMes($fecha[0])."-".$fecha[1];
		
		if($fecha[1]=="")
		{
			$fechaInicio	=$fecha[4]."-".obtenerNumeroMes($fecha[0])."-".$fecha[2];
		}
		
		//PARA OBTENER LA FECHA FINAL DEL CERTIFICADO
		$fecha			=leerFichero($carpeta.'fechaFin.txt',"READ","");
		$fecha			=str_replace("notAfter=","",$fecha);
		$fecha			=explode(" ",$fecha);
		
		$fechaFin	=$fecha[3]."-".obtenerNumeroMes($fecha[0])."-".$fecha[1];
		
		if($fecha[1]=="")
		{
			$fechaFin	=$fecha[4]."-".obtenerNumeroMes($fecha[0])."-".$fecha[2];
		}
		
		$data=array
		(
			0	=>$certificado,
			1	=>$fechaInicio,
			2	=>$fechaFin,
		);
		
		echo json_encode($data);
	}
	
	//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
	//PARA CFDI 3.3
	//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
	public function autoCompletadoUnidades()
	{
		$catalogos=$this->configuracion->autoCompletadoUnidades($this->input->get('term'));
		
		if($catalogos!=null)
		{
			foreach ($catalogos as $row)
			{
				$result[]= $row;
			}
			
			echo json_encode($result);
		}
	}
	
	public function autoCompletadoProductoServicios($mercancia=0)
	{
		$catalogos=$this->configuracion->autoCompletadoProductoServicios($this->input->get('term'),$mercancia);
		
		if($catalogos!=null)
		{
			foreach ($catalogos as $row)
			{
				$result[]= $row;
			}
			
			echo json_encode($result);
		}
	}

	public function autoCompletadoUuid()
	{
		$catalogos=$this->configuracion->autoCompletadoUuid($this->input->get('term'));

		if($catalogos!=null)
		{
			foreach ($catalogos as $row)
			{
				$result[]= $row;
			}

			echo json_encode($result);
		}
	}

	public function obtenerUnidadesPeso()
	{
		$catalogos=$this->configuracion->obtenerUnidadesPeso($this->input->get('term'));
		
		if($catalogos!=null)
		{
			foreach ($catalogos as $row)
			{
				$result[]= $row;
			}
			
			echo json_encode($result);
		}
	}
}
?>
