<?php
function getComentariosEmpleado($idEdit, $conexion){
    $sqlExiste = "SELECT * FROM cat_empleado_comentario WHERE id_empleado=? ORDER BY id DESC";                                        
    $conexion->prepare($sqlExiste);  
    $conexion->bind("s", $idEdit);

    $conexion->execute(); 
    $comentarios = $conexion->fetch();  

    if(sizeof($comentarios) > 0)
    {
        foreach ($comentarios as $key => $doc) {
            $comentarios[$key]['fechaM'] = fechaYMDaDMY($doc['fecha']);        
        }
    }

    return $comentarios;
}

function getPerfiles($conexion){   
    //
    $sql = "SELECT * FROM cat_perfil ORDER BY nombre ASC";                                        
    $conexion->prepare($sql);                                             

    $conexion->execute(); 
    $perfiles = $conexion->fetch();

    return $perfiles;
}

function getReceta($idProducto, $conexion){
    $sqlInsumos = "SELECT cat_receta.*,(SELECT codigo_producto FROM cat_producto WHERE id_producto=cat_receta.id_insumo) AS 'clave',(SELECT nombre_producto FROM cat_producto WHERE id_producto=cat_receta.id_insumo) AS 'nombre',(SELECT (SELECT nombre_unidad from cat_unidad WHERE id=cat_producto.id_unidad) as 'unidad_base' FROM cat_producto WHERE id_producto=cat_receta.id_insumo) AS 'ab_unidad',(SELECT (SELECT ab_unidad from cat_unidad WHERE id=cat_producto.id_unidad_produccion) as 'unidad_base' FROM cat_producto WHERE id_producto=cat_receta.id_insumo) AS 'unidad_produccion',(SELECT precio FROM cat_producto WHERE id_producto=cat_receta.id_insumo) AS 'precio',(SELECT rendimiento FROM cat_producto WHERE id_producto=cat_receta.id_insumo) AS 'rendimiento',(SELECT inventario FROM cat_producto WHERE id_producto=cat_receta.id_insumo) AS 'inventario' FROM cat_receta WHERE cat_receta.id_producto=?";                                        
    $conexion->prepare($sqlInsumos);   
    $conexion->bind("s", $idProducto);                                          

    $conexion->execute(); 
    $productosEdit = $conexion->fetch(); 

    return $productosEdit;
}

function getProductosCliente($idEdit, $conexion){    
    $sqlExiste = "SELECT DISTINCT id_tipo_sucursal FROM cat_sucursal WHERE id_cliente=?";                                        
    $conexion->prepare($sqlExiste);  
    $conexion->bind("s", $idEdit);

    $conexion->execute(); 
    $tiposSucursal = $conexion->fetch();  

    $idsTipos = array();

    foreach ($tiposSucursal as $key => $value) {
        $idsTipos[$value['id_tipo_sucursal']] = $value['id_tipo_sucursal'];
    }

    //sacar los ids de productos
    $sqlProductos = "SELECT cat_producto.*,(SELECT ab_unidad FROM cat_unidad WHERE id = cat_producto.id_unidad_venta) AS 'ab_unidad_venta',(SELECT factor FROM cat_cliente_factor WHERE id_cliente=? AND id_producto=cat_producto.id_producto) AS 'factor' FROM cat_tipo_sucursal_producto INNER JOIN cat_producto ON cat_producto.id_producto=cat_tipo_sucursal_producto.id_producto WHERE cat_tipo_sucursal_producto.id_tipo_sucursal in (" . implode(',', $idsTipos) . ") GROUP BY cat_tipo_sucursal_producto.id_producto"; 
    $conexion->prepare($sqlProductos);  
    $conexion->bind("s", $idEdit);

    $conexion->execute(); 
    $productosCliente = $conexion->fetch();  

    if(is_array($productosCliente))
    {
        foreach ($productosCliente as $key => $value) {
            $aux = ($value['precio'] * $value['factor']) / 100;
            $precio_factor = $value['precio'] + $aux;


            $productosCliente[$key]['precio_factor'] = $precio_factor;
        }
    }

    return $productosCliente;
}

function getSucursalesCliente($idEdit, $conexion){
    $sqlExiste = "SELECT cat_sucursal.*, (SELECT nombre FROM cat_tipo_sucursal WHERE cat_sucursal.id_tipo_sucursal=cat_tipo_sucursal.id) AS 'tipo' FROM cat_sucursal WHERE id_cliente=? ORDER BY cat_sucursal.id DESC";                                        
    $conexion->prepare($sqlExiste);  
    $conexion->bind("s", $idEdit);

    $conexion->execute(); 
    $sucursalesCliente = $conexion->fetch();  

    return $sucursalesCliente;
}

function getRFCCliente($idEdit, $conexion){
    $sqlExiste = "SELECT cat_cliente_rfc.* FROM cat_cliente_rfc WHERE id_cliente=? ORDER BY cat_cliente_rfc.id DESC";                                        
    $conexion->prepare($sqlExiste);  
    $conexion->bind("s", $idEdit);

    $conexion->execute(); 
    $rfcCliente = $conexion->fetch();  

    return $rfcCliente;
}

function getContactosCliente($idEdit, $conexion){
    $sqlExiste = "SELECT cat_cliente_contacto.* FROM cat_cliente_contacto WHERE id_cliente=? ORDER BY cat_cliente_contacto.id DESC";                                        
    $conexion->prepare($sqlExiste);  
    $conexion->bind("s", $idEdit);

    $conexion->execute(); 
    $contactosCliente = $conexion->fetch();  

    return $contactosCliente;
}

function CompletaCeros($num,$dig)
{
	$result='';
	for($i=0;$i<($dig-strlen($num));$i++)
		$result=$result.'0';
	$result=$result.$num;
	return $result;
}

function getProductosProveedor($idEdit, $conexion){
    $sqlExiste = "SELECT cat_proveedor_producto.*, CONCAT(cat_producto.codigo_producto , ' | ', cat_producto.nombre_producto) AS 'producto', cat_unidad.ab_unidad AS 'unidad' FROM cat_proveedor_producto INNER JOIN cat_producto ON cat_producto.id_producto=cat_proveedor_producto.id_producto INNER JOIN cat_unidad ON cat_unidad.id=cat_producto.id_unidad WHERE id_proveedor=? ORDER BY cat_proveedor_producto.id DESC";                                        
    $conexion->prepare($sqlExiste);  
    $conexion->bind("s", $idEdit);

    $conexion->execute(); 
    $productosEmpleados = $conexion->fetch();  

    return $productosEmpleados;
}

function getCuentasProveedor($idEdit, $conexion){
    $sqlExiste = "SELECT cat_proveedor_cuenta.* FROM cat_proveedor_cuenta WHERE id_proveedor=? ORDER BY cat_proveedor_cuenta.id DESC";                                        
    $conexion->prepare($sqlExiste);  
    $conexion->bind("s", $idEdit);

    $conexion->execute(); 
    $cuentasProveedor = $conexion->fetch();  

    return $cuentasProveedor;
}

function getContactosProveedor($idEdit, $conexion){
    $sqlExiste = "SELECT cat_proveedor_contacto.* FROM cat_proveedor_contacto WHERE id_proveedor=? ORDER BY cat_proveedor_contacto.id DESC";                                        
    $conexion->prepare($sqlExiste);  
    $conexion->bind("s", $idEdit);

    $conexion->execute(); 
    $contactosProveedor = $conexion->fetch();  

    return $contactosProveedor;
}

function getEmpleados($conexion){	
	//
	$sql = "SELECT * FROM cat_empleado ORDER BY nombre ASC";                                        
	$conexion->prepare($sql);                                             

	$conexion->execute(); 
	$empleados = $conexion->fetch();

	return $empleados;
}

function getCode(){
	return 'kapital';
}

function getDocumentosEmpleado($idEdit, $conexion){
    $sqlExiste = "SELECT cat_empleado_documento.*,(SELECT nombre FROM cat_documento WHERE cat_empleado_documento.id_documento=cat_documento.id) AS 'documento' FROM cat_empleado_documento WHERE id_empleado=? ORDER BY cat_empleado_documento.id DESC";                                        
    $conexion->prepare($sqlExiste);  
    $conexion->bind("s", $idEdit);

    $conexion->execute(); 
    $documentosEmpleado = $conexion->fetch();  

    $documentosEmpleadoRegresar = array();

    if(sizeof($documentosEmpleado) > 0)
    {
      foreach ($documentosEmpleado as $key => $doc) {
	        $documentosEmpleado[$key]['fechaM'] = fechaYMDaDMY($doc['fecha']);
	        $documentosEmpleado[$key]['venceM'] = '';

	        if($doc['vence'] != '0000-00-00')
	          $documentosEmpleado[$key]['venceM'] = fechaYMDaDMY($doc['vence']);

	      	if(!isset($documentosEmpleadoRegresar[$doc['id_documento']] ))
				$documentosEmpleadoRegresar[$doc['id_documento']] = $documentosEmpleado[$key];
      }
    }

    return $documentosEmpleadoRegresar;
}

function getDepartamentos($conexion){	
	//
	$sql = "SELECT * FROM cat_departamento ORDER BY nombre ASC";                                        
	$conexion->prepare($sql);                                             

	$conexion->execute(); 
	$departamentos = $conexion->fetch();

	return $departamentos;
}

function getPuestos($conexion){	
	//
	$sql = "SELECT * FROM cat_puesto ORDER BY nombre ASC";                                        
	$conexion->prepare($sql);                                             

	$conexion->execute(); 
	$puestos = $conexion->fetch();

	return $puestos;
}

function getDocumentos($conexion){	
	//
	$sql = "SELECT * FROM cat_documento ORDER BY nombre ASC";                                        
	$conexion->prepare($sql);                                             

	$conexion->execute(); 
	$documentos = $conexion->fetch();

	return $documentos;
}

function getEstados(){
	$estados = array(
	      '1' => 'Aguascalientes',
	      '2' => 'Baja California',
	      '3' => 'Baja California Sur',
	      '4' => 'Campeche',
	      '5' => 'Chiapas',
	      '6' => 'Chihuahua',
	      '7' => 'Coahuila de Zaragoza',
	      '8' => 'Colima',
	      '9' => 'Ciudad de México',
	      '10' => 'Durango',
	      '11' => 'Guanajuato',
	      '12' => 'Guerrero',
	      '13' => 'Hidalgo',
	      '14' => 'Jalisco',
	      '15' => 'Mexico',
	      '16' => 'Michoacan de Ocampo',
	      '17' => 'Morelos',
	      '18' => 'Nayarit',
	      '19' => 'Nuevo Leon',
	      '20' => 'Oaxaca',
	      '21' => 'Puebla',
	      '22' => 'Queretaro de Arteaga',
	      '23' => 'Quintana Roo',
	      '24' => 'San Luis Potosi',
	      '25' => 'Sinaloa',
	      '26' => 'Sonora',
	      '27' => 'Tabasco',
	      '28' => 'Tamaulipas',
	      '29' => 'Tlaxcala',
	      '30' => 'Veracruz-Llave',
	      '31' => 'Yucatan',
	      '32' => 'Zacatecas'
	);

	return $estados;
}

function obtenCaracterAleatorio($arreglo) 
{
    $clave_aleatoria = array_rand($arreglo, 1);	//obtén clave aleatoria
    return $arreglo[ $clave_aleatoria ];	//devolver ítem aleatorio
}

function obtenCaracterMd5($car) 
{
    $md5Car = md5($car.Time());	//Codificar el carácter y el tiempo POSIX (timestamp) en md5
    $arrCar = str_split(strtoupper($md5Car));	//Convertir a array el md5
    $carToken = obtenCaracterAleatorio($arrCar);	//obtén un ítem aleatoriamente
    return $carToken;
}

function obtenToken($longitud) 
{
    //crear alfabeto
    $mayus = "ABCDEFGHIJKMNPQRSTUVWXYZ";
    $mayusculas = str_split($mayus);	//Convertir a array
    //crear array de numeros 0-9
    $numeros = range(0,9);
    //revolver arrays
    shuffle($mayusculas);
    shuffle($numeros);
    //Unir arrays
    $arregloTotal = array_merge($mayusculas,$numeros);
    $newToken = "";

    for($i=0;$i<=$longitud;$i++) 
    {
        $miCar = obtenCaracterAleatorio($arregloTotal);
        $newToken .= obtenCaracterMd5($miCar);
    }
    return $newToken;
}

//funcion para converti fecha YYYY-MM-DD a DD/MM/YYY
function fechaYMDaDMY($fecha)
{
    $f=explode('-',$fecha);
    if( sizeof($f) == 3 )
	$resultado=$f[2]."/".$f[1]."/".$f[0];
    else
        $resultado = '';

    return $resultado;
}
//funcion para converti fecha DD/MM/YYY a YYYY-MM-DD
function fechaDMYaYMD($fecha)
{
    $f=explode('/',$fecha);
    if( sizeof($f) == 3 )
	$resultado=$f[2]."-".$f[1]."-".$f[0];
    else
        $resultado = '';
    
    return $resultado;
}

function DiasTranscurridos($fechaInicio, $fechaFin, $diasInhabiles = array())
{
    //Obtiene las fechas recibidas
    $timestamp1 = $fechaFin;
    //$timestamp2 = mktime(0, 0, 0, date('m', $fechaInicio), ( date('d', $fechaInicio) - 1 ), date('Y', $fechaInicio) );
    $timestamp2 = mktime(0, 0, 0, date('m', $fechaInicio), ( date('d', $fechaInicio) ), date('Y', $fechaInicio) );
        //var miFecha2 = new Date(fechaini.getFullYear(), fechaini.getMonth(), fechaini.getDate() - 1);

    //resto a una fecha la otra
    $segundos_diferencia = $timestamp1 - $timestamp2;
    //echo $segundos_diferencia;

    //convierto segundos en días
    $dias_diferencia = $segundos_diferencia / (60 * 60 * 24);

    //obtengo el valor absoulto de los días (quito el posible signo negativo)
    $dias_diferencia = abs($dias_diferencia);

    //quito los decimales a los días de diferencia
    $dias_diferencia = floor($dias_diferencia);

    // quito los días inhábiles
    $habil = $dias_diferencia;
    for($x = 1; $x <= $dias_diferencia; $x ++)
    {
        $dfecha = mktime(0, 0, 0, date('m', $timestamp2), ( date('d', $timestamp2) + $x ), date('Y', $timestamp2));
        foreach( $diasInhabiles as $dinhabil )
            if(date('w', $dfecha) == $dinhabil)
            {
                $habil --;
                break;
            }
    }
    $dias_diferencia = $habil;

    return $dias_diferencia;
}
?>