<?php
//define("wordpressDB", "namishop_wp54460");
//define("Prefijo","".$Prefijo."");
$HostWord ="";
$UserHostWord="";
$PassHostWord ="";

function BuscarWoo($SKU = ''){
  
    $CI = & get_instance();
    $CI->load->library('Consultas');
    $CI->load->model('ConfigModels');
    $HostWord = $CI->ConfigModels->Value("HostWord",TRUE);
    $UserHostWord = $CI->ConfigModels->Value("UserHostWord",TRUE);
    $PassHostWord = $CI->ConfigModels->Value("PassHostWord",TRUE);
    $wordpressDB = $CI->ConfigModels->Value("wordpressDB",TRUE);
    $Prefijo = $CI->ConfigModels->Value("PrefijoWord",TRUE);
    $consultas=null;
    $Datos3=null;
   
    if($SKU ===''){
    $sql = " SELECT  aux.meta_id as ID, ".$Prefijo."postmeta.post_id as Codigo, ".$Prefijo."postmeta.meta_value as SKU, aux.meta_value as Cantidad, ".$Prefijo."wc_product_meta_lookup.product_id AS ID2 
    FROM  ".$Prefijo."postmeta 
    JOIN  ".$Prefijo."postmeta aux ON aux.post_id = binary ".$Prefijo."postmeta.post_id AND aux.meta_key = :Key
    LEFT JOIN  ".$Prefijo."wc_product_meta_lookup ON ".$Prefijo."wc_product_meta_lookup.sku = binary ".$Prefijo."postmeta.meta_value
    WHERE ".$Prefijo."postmeta.meta_key = :Key2 ";
    $Datos3['Key']="_stock";
    $Datos3['Key2']="_sku";
    }else{
      $sql = " SELECT  aux.meta_id as ID, ".$Prefijo."postmeta.post_id as Codigo, ".$Prefijo."postmeta.meta_value as SKU, aux.meta_value as Cantidad, ".$Prefijo."wc_product_meta_lookup.product_id AS ID2 
    FROM  ".$Prefijo."postmeta 
    JOIN  ".$Prefijo."postmeta aux ON aux.post_id = binary ".$Prefijo."postmeta.post_id AND aux.meta_key = :Key
    LEFT JOIN  ".$Prefijo."wc_product_meta_lookup ON ".$Prefijo."wc_product_meta_lookup.sku = binary  ".$Prefijo."postmeta.meta_value
    WHERE ".$Prefijo."postmeta.meta_key = :Key2 AND ".$Prefijo."postmeta.meta_value = :sku ";
    $Datos3['Key']="_stock";
    $Datos3['Key2']="_sku";
    $Datos3['sku']=$SKU;
    }

    $consultas = new Consultas();
    $stmt=$consultas->BuscarPDO($sql,$Datos3,$wordpressDB,$UserHostWord,$PassHostWord,$HostWord);
    $consultas=null;
    $Datos3=null;
    return $stmt;
    }

    function VerificarWoo($SKU = '',$Tienda=5,$MOV = null){
 
        $Produc = BuscarWoo($SKU);
        
         if($Produc != null){
           for ($i = 0; $i <  count($Produc); $i++) {
             $arryStopPrecio = BuscarExistencia2($Produc[$i]['SKU'],$Tienda,$MOV) ;
             $Stock =   $arryStopPrecio[0];
             $Produc[$i]["Precio"] =$arryStopPrecio[1];
              $Produc[$i]["Exis"] = $Stock === -1 ? $Produc[$i]['Cantidad'] : $Stock;
            }
         }
         return $Produc;
      }
    

      function Actualizar($Datos){


     
        $CI = & get_instance();
        $CI->load->library('Consultas');
        $CI->load->model('ConfigModels');
        $HostWord = $CI->ConfigModels->Value("HostWord",TRUE);
        $UserHostWord = $CI->ConfigModels->Value("UserHostWord",TRUE);
        $PassHostWord = $CI->ConfigModels->Value("PassHostWord",TRUE);
        $wordpressDB = $CI->ConfigModels->Value("wordpressDB",TRUE);
        $Prefijo = $CI->ConfigModels->Value("PrefijoWord",TRUE);
        if ($Datos != null){
          for ($i = 0; $i <  count($Datos); $i++) {
            EditMeta2($Datos[$i]['Codigo'],'_regular_price',$Datos[$i]['Precio']);
            EditMeta2($Datos[$i]['Codigo'],'_price',$Datos[$i]['Precio']);
            MaxMin($Datos[$i]['Codigo']);
             if($Datos[$i]['Cantidad'] != $Datos[$i]['Exis']) ;
              $consultas4=null;
                  $Datos5=null;
                  $CodigoSql4="UPDATE ".$Prefijo."postmeta SET meta_value = :Existencia WHERE (meta_id= :Stock )";
                  $Datos5['Existencia']=$Datos[$i]['Exis'];
                  $Datos5['Stock']=$Datos[$i]['ID'];
                  $consultas4 = new Consultas();
                  $stmt4=$consultas4->AgregarPDO($Datos5,$CodigoSql4,$wordpressDB,$UserHostWord,$PassHostWord,$HostWord );
                  $consultas4=null;
                  $Datos5=null;
                  if($Datos[$i]['ID2']!= null){
                  $CodigoSql4="UPDATE ".$Prefijo."wc_product_meta_lookup SET stock_quantity = :Existencia WHERE (product_id= :Stock )";
                  $Datos5['Existencia']=$Datos[$i]['Exis'];
                  $Datos5['Stock']=$Datos[$i]['ID2'];
                  $consultas4 = new Consultas();
                  $stmt4=$consultas4->AgregarPDO($Datos5,$CodigoSql4,$wordpressDB,$UserHostWord,$PassHostWord,$HostWord );
                  $consultas4=null;
                  $Datos5=null;
                  }
                 
          
            }
        }
        return $Datos;
      }
      
      function BuscarCodigo($MOVI ){
        $CI = & get_instance();
        $CI->load->library('Consultas');
        $consultas=null;
        $Datos3=null;
        $sql = "SELECT movimientop.CodigoP as Codigo FROM movimientop WHERE (movimientop.CodigoM = :CodigoM ) LIMIT 1";
        $Datos3['CodigoM']=$MOVI;
        
        $consultas = new Consultas();
        $stmt=$consultas->BuscarPDO($sql,$Datos3);
        $consultas=null;
        $Datos3=null;
        $exi = $stmt === null ? -1: $stmt[0]["Codigo"];
        return $exi;
        }
        function BuscarExistencia2($Codigo,$Tienda=5,$MOVI = null){
            $CI = & get_instance();
            $CI->load->library('Consultas');
            $consultas=null;
            $Datos3=null;
            if ($MOVI != null){
            $sql = "SELECT movimientop.Existencia as existencia, CostoD AS Precio FROM movimientop WHERE (movimientop.CodigoM = :CodigoM ) LIMIT 1";
            $Datos3['CodigoM']=$MOVI;
            }else{
            $sql = "SELECT movimientop.Existencia as existencia, CostoD AS Precio  FROM movimientop WHERE (movimientop.CodigoP = :CodigoP AND movimientop.CodigoT = :CodigoT ) LIMIT 1";
            $Datos3['CodigoP']=$Codigo;
            $Datos3['CodigoT']=$Tienda;
            }
            
            $consultas = new Consultas();
            $stmt=$consultas->BuscarPDO($sql,$Datos3);
            $consultas=null;
            $Datos3=null;

            $exi = $stmt === null ? -1: $stmt[0]["existencia"];
            $Precio = $stmt === null ? -1: $stmt[0]["Precio"];
            $Arreglo = array($exi,$Precio);
            return $Arreglo;
            }     
function worpress($WOOR,$d,$TiendaOnline= 5, $CODMOVIMIENTO = null){
  
   if($WOOR === true){
  
    Actualizar(VerificarWoo(BuscarCodigo($d),$TiendaOnline,$CODMOVIMIENTO));
    return true;
   }else{
   return false;
   }
    
}

function PruebaWoorpress(){
  $CI = & get_instance();
  $CI->load->library('Consultas');
  $CI->load->model('ConfigModels');
  $HostWord = $CI->ConfigModels->Value("HostWord",TRUE);
  $UserHostWord = $CI->ConfigModels->Value("UserHostWord",TRUE);
  $PassHostWord = $CI->ConfigModels->Value("PassHostWord",TRUE);
  $wordpressDB = $CI->ConfigModels->Value("wordpressDB",TRUE);
  $Prefijo = $CI->ConfigModels->Value("PrefijoWord",TRUE);
  $consultas=null;
  $Datos3=null;
  $sql = " SELECT  aux.meta_id as ID, ".$Prefijo."postmeta.post_id as Codigo, ".$Prefijo."postmeta.meta_value as SKU, aux.meta_value as Cantidad, ".$Prefijo."wc_product_meta_lookup.product_id AS ID2 
  FROM  ".$Prefijo."postmeta 
  JOIN  ".$Prefijo."postmeta aux ON aux.post_id = binary ".$Prefijo."postmeta.post_id AND aux.meta_key = :Key
  LEFT JOIN  ".$Prefijo."wc_product_meta_lookup ON ".$Prefijo."wc_product_meta_lookup.sku = binary ".$Prefijo."postmeta.meta_value
  WHERE ".$Prefijo."postmeta.meta_key = :Key2 ";
  $Datos3['Key']="_stock";
  $Datos3['Key2']="_sku";
  $consultas = new Consultas();
    $stmt=$consultas->BuscarPDO($sql,$Datos3,$wordpressDB,$UserHostWord,$PassHostWord,$HostWord);
    $consultas=null;
    $Datos3=null;
    return $stmt;

 
}
function Editwoocomerce($id,$Cam,$Value){
  $CI = & get_instance();
  $CI->load->library('Consultas');
  $CI->load->model('ConfigModels');
  $HostWord = $CI->ConfigModels->Value("HostWord",TRUE);
  $UserHostWord = $CI->ConfigModels->Value("UserHostWord",TRUE);
  $PassHostWord = $CI->ConfigModels->Value("PassHostWord",TRUE);
  $wordpressDB = $CI->ConfigModels->Value("wordpressDB",TRUE);
  $Prefijo = $CI->ConfigModels->Value("PrefijoWord",TRUE);
  $consultas=null;
  $Datos3=null;
 // $Datos3['Camp']=$Cam;
  $Datos3['ID']=$id ;
  $Datos3['value']=$Value ;
  $sql =  "UPDATE ".$Prefijo."wc_product_meta_lookup SET ".$Cam." = :value WHERE (product_id= :ID )";
  $consultas = new Consultas();

  $stmt4=$consultas->AgregarPDO($Datos3,$sql,$wordpressDB,$UserHostWord,$PassHostWord,$HostWord );


 return $stmt4;

} 
function addMeta($IDPost,$key,$Value){
  $CI = & get_instance();
  $CI->load->library('Consultas');
  $CI->load->model('ConfigModels');
  $HostWord = $CI->ConfigModels->Value("HostWord",TRUE);
  $UserHostWord = $CI->ConfigModels->Value("UserHostWord",TRUE);
  $PassHostWord = $CI->ConfigModels->Value("PassHostWord",TRUE);
  $wordpressDB = $CI->ConfigModels->Value("wordpressDB",TRUE);
  $Prefijo = $CI->ConfigModels->Value("PrefijoWord",TRUE);
  $consultas=null;
  $Datos3=null;
  $Datos3['Post']=$IDPost;
  $Datos3['key']=$key;
  $Datos3['value']=$Value;
  $Sql = "INSERT INTO  ".$Prefijo."postmeta ( post_id, meta_key, meta_value) VALUES (:Post,:key,:value)";
  $consultas = new Consultas();
  $stmt4=$consultas->AgregarPDO($Datos3,$Sql,$wordpressDB,$UserHostWord,$PassHostWord,$HostWord );
 return $stmt4;
}
function EditMeta($IdMeta,$Dato){
  $CI = & get_instance();
  $CI->load->library('Consultas');
  $CI->load->model('ConfigModels');
  $HostWord = $CI->ConfigModels->Value("HostWord",TRUE);
  $UserHostWord = $CI->ConfigModels->Value("UserHostWord",TRUE);
  $PassHostWord = $CI->ConfigModels->Value("PassHostWord",TRUE);
  $wordpressDB = $CI->ConfigModels->Value("wordpressDB",TRUE);
  $Prefijo = $CI->ConfigModels->Value("PrefijoWord",TRUE);
  $consultas=null;
  $Datos3=null;
  $Datos3['Dato']=$Dato;
  $Datos3['ID']=$IdMeta ;

  $sql =  "UPDATE ".$Prefijo."postmeta SET meta_value = :Dato  WHERE meta_id = :ID";
  $consultas = new Consultas();
   $stmt4=$consultas->AgregarPDO($Datos3,$sql,$wordpressDB,$UserHostWord,$PassHostWord,$HostWord );

  return $stmt4;
}
function EditMeta2($idPos,$keymeta,$Dato){
  $CI = & get_instance();
  $CI->load->library('Consultas');
  $CI->load->model('ConfigModels');
  $HostWord = $CI->ConfigModels->Value("HostWord",TRUE);
  $UserHostWord = $CI->ConfigModels->Value("UserHostWord",TRUE);
  $PassHostWord = $CI->ConfigModels->Value("PassHostWord",TRUE);
  $wordpressDB = $CI->ConfigModels->Value("wordpressDB",TRUE);
  $Prefijo = $CI->ConfigModels->Value("PrefijoWord",TRUE);
  $consultas=null;
  $Datos3=null;
  $Datos3['Dato']=$Dato;
  $Datos3['Key']=$keymeta ;
  $Datos3['Post']=$idPos ;

  $sql =  "UPDATE ".$Prefijo."postmeta SET meta_value = :Dato  WHERE (meta_key = :Key AND post_id = :Post)";
  $consultas = new Consultas();
   $stmt4=$consultas->AgregarPDO($Datos3,$sql,$wordpressDB,$UserHostWord,$PassHostWord,$HostWord );

  return $stmt4;
}
function GetProduct($Filtro ="",$Desde=-1, $Cant=0){
  //funcion que permite Buscar los productos de woorpres
  /*
  $Filtro: resivimos un string con el nombre del producto
  $Desde: valor que indica desde que posicicion comenzara la busqueda
  $Cant: Cantida de productos a buscar
  */
  //Cargamos la instancia de codeignier

  $CI = & get_instance();
  $CI->load->library('Consultas');
  $CI->load->model('ConfigModels');
  // Buscamos los datos de acceso a la base de datos
  $HostWord = $CI->ConfigModels->Value("HostWord",TRUE);
  $UserHostWord = $CI->ConfigModels->Value("UserHostWord",TRUE);
  $PassHostWord = $CI->ConfigModels->Value("PassHostWord",TRUE);
  $wordpressDB = $CI->ConfigModels->Value("wordpressDB",TRUE);
  $Prefijo = $CI->ConfigModels->Value("PrefijoWord",TRUE);
  $wordHost = $CI->ConfigModels->Value("wordHost");

  // inicializamos
  $consultas=null;
  $Datos3=null;
  $sql = "SELECT
  ".$Prefijo."posts.ID,
  ".$Prefijo."posts.post_title,
  ".$Prefijo."posts.post_content,
  ".$Prefijo."wc_product_meta_lookup.sku,
  ".$Prefijo."wc_product_meta_lookup.min_price,
  ".$Prefijo."wc_product_meta_lookup.max_price,
  ".$Prefijo."wc_product_meta_lookup.stock_quantity,
  Sku2.meta_id AS 'id_Sku',
  _price.meta_id As 'id_Price',
  _stock.meta_id AS 'id_Stock',
  _regular_price.meta_id AS 'id_regular_price',
  Sku2.meta_value AS '_Sku',
  _price.meta_value As '_Price',
  _stock.meta_value AS '_Stock',
  _regular_price.meta_value AS '_regular_price',
  (SELECT CONCAT('".$wordHost.'wp-content/uploads/'."' ,".$Prefijo."postmeta.meta_value )FROM ".$Prefijo."postmeta WHERE ".$Prefijo."postmeta.post_id = img.meta_value AND ".$Prefijo."postmeta.meta_key = '_wp_attached_file' LIMIT 1 ) as 'imgP'
FROM
  ".$Prefijo."posts
LEFT JOIN ".$Prefijo."postmeta AS Sku2 ON Sku2.post_id = ".$Prefijo."posts.ID AND(
      Sku2.meta_key = '_sku' )
LEFT JOIN ".$Prefijo."postmeta AS _price ON _price.post_id = ".$Prefijo."posts.ID AND(
      _price.meta_key = '_price' )
LEFT JOIN ".$Prefijo."postmeta AS _stock ON _stock.post_id = ".$Prefijo."posts.ID AND(
      _stock.meta_key = '_stock' )
LEFT JOIN ".$Prefijo."postmeta AS _regular_price ON _regular_price.post_id = ".$Prefijo."posts.ID AND(
      _regular_price.meta_key = '_regular_price' )
LEFT JOIN ".$Prefijo."postmeta AS img ON img.post_id = ".$Prefijo."posts.ID AND(
  img.meta_key = '_thumbnail_id' )
LEFT JOIN ".$Prefijo."wc_product_meta_lookup ON ".$Prefijo."wc_product_meta_lookup.product_id = ".$Prefijo."posts.ID
WHERE
  post_type = 'product' ";

  $MiFiltro = "";
  if($Filtro!= ""){
    $Filtros= str_replace('ø','/',$Filtro);
        $arr1 = explode(" ",$Filtros);
        $array_num = count($arr1);
        for ($i = 0; $i < $array_num; ++$i){
          if($arr1[$i]!== ""){
            if($i==0){
              $MiFiltro = $MiFiltro .$Prefijo."posts.post_title LIKE " ."'%%".$arr1[$i]."%%'";
            }else{
              $MiFiltro = $MiFiltro. ' AND ' .$Prefijo."posts.post_title LIKE " ."'%%".$arr1[$i]."%%'";
            }
          }
          
        }
        if($MiFiltro !=""){
          $MiFiltro = " AND (".$MiFiltro.") ";
          $sql = $sql.$MiFiltro;
        }
        
  }
  $Limit = "";
        if($Desde>-1 AND $Cant>0 ){
          $Limit = "LIMIT ".$Desde. ','.$Cant;
          $sql = $sql .$Limit;
        }

  $consultas = new Consultas();
  $stmt=$consultas->BuscarPDO($sql,$Datos3,$wordpressDB,$UserHostWord,$PassHostWord,$HostWord);
  $consultas=null;
  $Datos3=null;
  return $stmt;
}

function MaxMin($id){
  $CI = & get_instance();
  $CI->load->library('Consultas');
  $CI->load->model('ConfigModels');
  $HostWord = $CI->ConfigModels->Value("HostWord",TRUE);
  $UserHostWord = $CI->ConfigModels->Value("UserHostWord",TRUE);
  $PassHostWord = $CI->ConfigModels->Value("PassHostWord",TRUE);
  $wordpressDB = $CI->ConfigModels->Value("wordpressDB",TRUE);
  $Prefijo = $CI->ConfigModels->Value("PrefijoWord",TRUE);
  $consultas=null;
  $Datos3=null;
  $Datos3["ID"] = $id;
  $Sql = " SELECT meta_value AS mini FROM wp_postmeta WHERE meta_key = '_price' AND  post_id = :ID  ORDER BY meta_value ASC   LIMIT 1 ";
  $consultas = new Consultas();
  $stmt=$consultas->BuscarPDO($Sql,$Datos3,$wordpressDB,$UserHostWord,$PassHostWord,$HostWord);
  $consultas=null;
 $Min=$stmt != null ? $stmt[0]["mini"]:0;
 $Sql = " SELECT meta_value AS MAXI FROM wp_postmeta WHERE meta_key = '_price' AND  post_id = :ID  ORDER BY meta_value DESC   LIMIT 1 ";
 $consultas = new Consultas();
 $stmt=$consultas->BuscarPDO($Sql,$Datos3,$wordpressDB,$UserHostWord,$PassHostWord,$HostWord);
 $consultas=null;
 $MAX=  $stmt != null ? $stmt[0]["MAXI"]:0;
 Editwoocomerce($id,'min_price', $Min);
 Editwoocomerce($id,'max_price', $MAX);
}

// aqui vamos a porogramar las funciones que usaremos  
// para que cuando se comunique el CMS se actualizen los datos
function BuscarUser(){
  $CI = & get_instance();
  $CI->load->library('Consultas');
  $sql = "SELECT Codigo FROM usuarios   ORDER BY Codigo   LIMIT 1 ";
   $Datos=[];
    $consultas = new Consultas();
 $stmt=$consultas->BuscarPDO($sql,$Datos);
  return $stmt[0]["Codigo"];
 }
function VerificarCodigo($Codigo){
  $CI = & get_instance();
  $CI->load->library('Consultas');
  $Datos=null;
   $sql = "SELECT producto.CodigoAux FROM producto where( producto.CodigoP = :Codigo  and producto.Status = :Status )  LIMIT 1 ";
  $Datos['Codigo']= $Codigo;
  $Datos['Status']='Auxiliar' ;
  $consultas = new Consultas();
  $stmt=$consultas->BuscarPDO($sql,$Datos);
  $Datos=null;
  if($stmt==null   ){
   return $Codigo;
  }
  if( count($stmt) == 0 ){
   return $Codigo;
  }
  return $stmt[0]['CodigoAux'];
  
} 
function BuscarMovimiento($Cod){
  $CI = & get_instance();
  $CI->load->library('Consultas');
  $CI->load->model('ConfigModels');
  $Codigo= VerificarCodigo($Cod);
 $Datos3=null;
 $sql = "SELECT movimientop.CodigoM FROM movimientop where( movimientop.CodigoP = :Codigo  and movimientop.CodigoT = :CodigoT )  LIMIT 1 ";
 $Datos3['Codigo']= $Codigo;
 $Datos3['CodigoT']=$CI->ConfigModels->Value("MiTienda");
 $consultas = new Consultas();
 $stmt=$consultas->BuscarPDO($sql,$Datos3);
 $Datos3=null;

 if ($stmt!=null){
 while (current($stmt)!==false) {
          $mostrar = current($stmt); 
    $d= $mostrar["CodigoM"];
  next($stmt);
 }
 $consultas = null;

 return $d;
 }else{
  
   $consultas = null;
   return null;
 }

}
function descontarLote($Cod){
  $CI = & get_instance();
  $CI->load->library('Consultas');
  $Datos=null;
  $sql = "SELECT detallemov.CodigoD FROM detallemov where( detallemov.CodigoAux = :Cod )  LIMIT 1 ";
   $Datos['Cod']= $Cod;

   $consultas = new Consultas();
   $stmt=$consultas->BuscarPDO($sql,$Datos);
   $Datos=null;
    if($stmt!=null   ){
      if (count($stmt) > 0){
        return $stmt[0]['CodigoD'];
      }
  
   }
    $codigo = BuscarMovimiento($Cod);
   
    if ($codigo == null){
      return null;
    }
       $Datos=null;
   $sql = "SELECT detallemov.CodigoD FROM detallemov where( detallemov.CodigoMo = :Cod AND detallemov.CantidadActual > :Canti AND detallemov.Status = :Status )   ORDER BY CodigoD LIMIT 1 ";    
   $Datos['Cod']= $codigo;
   $Datos['Status']='Entrada' ;
   $Datos['Canti']=0 ;
     $stmt=$consultas->BuscarPDO($sql,$Datos);
     
     if($stmt!=null   ){
         if (count($stmt) > 0){
        return $stmt[0]['CodigoD'];
         }
     }
     return null;

 }
 function ActualizarLote($Codigo,$Cantidad){
  $CI = & get_instance();
  $CI->load->library('Consultas');
  $Datos6 = null;
 $Cod= descontarLote($Codigo);

 if( $Cod== null){
  return ;
 }
 $sql = "UPDATE detallemov SET CantidadActual = CantidadActual + :Add  WHERE ( CodigoD = :Codigo )";
 $Datos6["Codigo"] = $Cod;
 $Datos6["Add"] = $Cantidad;
  $consultas5 = new Consultas();
 $stmt6=$consultas5->AgregarPDO($Datos6,$sql);

 }
 function Buscarexistencia($Cod){
  $CI = & get_instance();
  $CI->load->library('Consultas');
  $CI->load->model('ConfigModels');
  $Codigo= VerificarCodigo($Cod);
 
   $Datos3=null;
   $sql = "SELECT movimientop.Existencia AS Existencia  FROM movimientop where( movimientop.CodigoP = :Codigo  and movimientop.CodigoT = :CodigoT )  LIMIT 1 ";
   $Datos3['Codigo']= $Codigo;
   $Datos3['CodigoT']=$CI->ConfigModels->Value("MiTienda");
   $consultas = new Consultas();
   $stmt=$consultas->BuscarPDO($sql,$Datos3);
   $Datos3=null;
 
   if ($stmt!=null){
   while (current($stmt)!==false) {
            $mostrar = current($stmt); 
      $d= $mostrar["Existencia"];
    next($stmt);
   }
   $consultas = null;
  
   return $d;
   }else{
    
     $consultas = null;
     return null;
   }
 
 }

 // vamos conlas funcione redi
 function Consulta_woocommerce($Hola){ 
  $CI = & get_instance();
  $CI->load->library('Consultas');
  $CI->load->model('ConfigModels');
  $HostWord = $CI->ConfigModels->Value("HostWord",TRUE);
        $UserHostWord = $CI->ConfigModels->Value("UserHostWord",TRUE);
        $PassHostWord = $CI->ConfigModels->Value("PassHostWord",TRUE);
        $wordpressDB = $CI->ConfigModels->Value("wordpressDB",TRUE);
        $Prefijo = $CI->ConfigModels->Value("PrefijoWord",TRUE);
  // este modulo mantendra la base de datos actualizada segun los cambios hechos en woocommerce
  $consultas=null;
  $Datos3=null;
  $feca1= "2021-09-09 22:20:13";// fecha en la cual deseamos comenzar el analicis varia segun los registros en la base de datos
  /* 
  los pasos a seguir son:
  1) consultamos el pedido con la fecha mas reciente de modificacion 

  2) luegop realizamos la consulta en woocomerce indicando que me traiga todos los productos que tengan codigo de barras 
   y que esten despues de la fecha de modificacion obtenida, que a demas me traiga todos los datos relevantes para hacer las verificaciones
   

   luego de traerme los regustriso comienzo a analizar 
   si el registro ya existe y los estatus son distinto singnifica un cambio y realizamos la operacion de agregar o quitar del stop en funcion al tipo 
   de cambio realizado

   si es un nuevo registro y los estatus son pendiente en espera  procesado se realiza la actualizacion en la base de datos descontando los productos


  
  */
   

  /*
$sql = "SELECT  MAX(wc_pedido.fecha) as fecha FROM wc_pedido LIMIT 1";


$consultas = new Consultas();

$stmt=$consultas->BuscarPDO($sql,$Datos3);
if ($stmt!=null){
  while (current($stmt)!==false) {
           $mostrar = current($stmt); 
           $feca1 = $mostrar["fecha"] !=null ? $mostrar["fecha"] : $feca1 ;
           
   next($stmt);
  }
  } 
*/

  $consultas=null;
  $Datos3=null;
  $sql = "SELECT ".$Prefijo."woocommerce_order_items.order_item_id as CodigoP, ".$Prefijo."woocommerce_order_items.order_id  As Pedido, ".$Prefijo."woocommerce_order_itemmeta.meta_value as Cantidad, codp.meta_value as producto, ".$Prefijo."postmeta.meta_value as SKU, ".$Prefijo."posts.post_status as Status, ".$Prefijo."posts.post_modified as Fecha FROM ".$Prefijo."woocommerce_order_items
  LEFT JOIN ".$Prefijo."woocommerce_order_itemmeta ON ( ".$Prefijo."woocommerce_order_itemmeta.order_item_id = binary ".$Prefijo."woocommerce_order_items.order_item_id AND (".$Prefijo."woocommerce_order_itemmeta.meta_key = :Key))
  LEFT JOIN ".$Prefijo."woocommerce_order_itemmeta codp ON ( codp.order_item_id = binary ".$Prefijo."woocommerce_order_items.order_item_id AND (codp.meta_key = :Key2))
  LEFT JOIN ".$Prefijo."postmeta ON ( ".$Prefijo."postmeta.post_id = binary codp.meta_value  AND (".$Prefijo."postmeta.meta_key = :Key3))
  LEFT JOIN ".$Prefijo."posts ON ( ".$Prefijo."posts.ID = ".$Prefijo."woocommerce_order_items.order_id)
  WHERE( ".$Prefijo."postmeta.meta_value <> ''  AND ".$Prefijo."woocommerce_order_items.order_id = :ID   ) ";
  $Datos3['Key']="_qty";
  $Datos3['Key2']="_product_id";
  $Datos3['Key3']="_sku";
    $Datos3['ID']= $Hola;

    
  $consultas = new Consultas();
 
  $stmt=$consultas->BuscarPDO($sql,$Datos3,$wordpressDB,$UserHostWord,$PassHostWord,$HostWord);

  if ($stmt!=null){
    while (current($stmt)!==false) {
      $mostrar = current($stmt);
      if (BuscarMovimiento($mostrar["SKU"])!=null){ 
       $wc_Cpedido= $mostrar["Pedido"];
       $Datos4=null;
       $sql1 = "SELECT  wc_status FROM wc_pedido  WHERE ( wc_Cpedido= :wc_Cpedido and codigoP =:codigoP )";
       $Datos4['wc_Cpedido']=$wc_Cpedido;
       $Datos4['codigoP']=BuscarMovimiento($mostrar["SKU"]);
       $consultas2=null;
       $consultas2 = new Consultas();
       $stmt2=$consultas2->BuscarPDO($sql1,$Datos4);
      
       if ($stmt2!=null){
           
         while (current($stmt2)!==false) {
                  $mostrar2 = current($stmt2); 
                if ( $mostrar2['wc_status'] != $mostrar['Status']   ){
            
                  if ( ($mostrar2['wc_status'] == 'wc-pendiente' OR $mostrar2['wc_status'] == 'wc-on-hold' OR $mostrar2['wc_status'] == 'wc-processing' OR $mostrar2['wc_status'] == 'wc-complete' OR $mostrar2['wc_status'] == 'wc-failure' ) AND ($mostrar['Status']== "wc-refunded" OR $mostrar['Status']== "wc-cancelled")  ){
                     
                      $CodigoSql4="UPDATE movimientop SET Existencia = Existencia + :Existencia WHERE (CodigoM= :CodigoM )";
                      $Datos5['Existencia']=$mostrar["Cantidad"];
                      $Datos5['CodigoM']=BuscarMovimiento($mostrar["SKU"]);
                      $consultas4 = new Consultas();
                      $stmt4=$consultas4->AgregarPDO($Datos5,$CodigoSql4 );
                      $consultas4=null;
                      $Datos5=null;
                      
                      $sql5 ="INSERT INTO detallemov (CodigoMo, Fecha, Cantidad, CodigoU, Vencimiento, Status, Costo, Hora,Observacion, ExistenciaAntes) VALUES (:CodigoMo, :Fecha, :Cantidad, :CodigoU, :Vencimiento, :Status, :Costo, :Hora, :Observacion, :ExistenciaAntes)";
            
            $Datos6=null;+
            $Datos6['CodigoMo']=BuscarMovimiento($mostrar["SKU"]);
            $Datos6['Fecha']=date("Y-m-d");
$Datos6['Cantidad']=$mostrar["Cantidad"];
$Datos6['CodigoU']=10;
$Datos6['Vencimiento']="0000-00-00";
$Datos6['Status']="Entrada";
$Datos6['Costo']=0;
$Datos6['Hora']=date("H:i:s");
$Datos6['Observacion']="Reintegro de Venta Online se paso de " . $mostrar2['wc_status']. " Al " . $mostrar['Status']. " Segun Pedido: ". $mostrar["Pedido"] ;
$Datos6['ExistenciaAntes']=Buscarexistencia($mostrar["SKU"]) - $mostrar["Cantidad"];
$consultas5 = new Consultas();
$stmt6=$consultas5->AgregarPDO($Datos6,$sql5);
$consultas5=null;
$Datos6=null;
$sql5="";

       ActualizarLote($mostrar["SKU"],$mostrar["Cantidad"]);


                    }

                    if ( ($mostrar['Status'] == 'wc-pendiente' OR $mostrar['Status'] == 'wc-on-hold' OR $mostrar['Status'] == 'wc-processing' OR $mostrar['Status'] == 'wc-complete' OR $mostrar['Status'] == 'wc-failure' ) AND ($mostrar2['wc_status']== "wc-refunded" OR $mostrar2['wc_status']== "wc-cancelled")  ){
                      $CodigoSql4="UPDATE movimientop SET Existencia = Existencia - :Existencia WHERE (CodigoM= :CodigoM )";
                      $Datos5['Existencia']=$mostrar["Cantidad"];
                      $Datos5['CodigoM']=BuscarMovimiento($mostrar["SKU"]);
                      $consultas4 = new Consultas();
                      $stmt4=$consultas4->AgregarPDO($Datos5,$CodigoSql4 );
                      $consultas4=null;
                      $Datos5=null;
                      $sql5 ="INSERT INTO detallemov (CodigoMo, Fecha, Cantidad, CodigoU, Vencimiento, Status, Costo, Hora,Observacion, ExistenciaAntes) VALUES (:CodigoMo, :Fecha, :Cantidad, :CodigoU, :Vencimiento, :Status, :Costo, :Hora, :Observacion, :ExistenciaAntes)";
            
            $Datos6=null;
            $Datos6['CodigoMo']=BuscarMovimiento($mostrar["SKU"]);
            $Datos6['Fecha']=date("Y-m-d");
$Datos6['Cantidad']=$mostrar["Cantidad"];
$Datos6['CodigoU']=10;
$Datos6['Vencimiento']="0000-00-00";
$Datos6['Status']="Salida";
$Datos6['Costo']=0;
$Datos6['Hora']=date("H:i:s");
$Datos6['Observacion']= "Venta Online se paso de " . $mostrar2['wc_status'] . " Al " . $mostrar['Status']. " Segun Pedido: ". $mostrar["Pedido"] ;
$Datos6['ExistenciaAntes']=Buscarexistencia($mostrar["SKU"]) + $mostrar["Cantidad"];
$consultas5 = new Consultas();
$stmt6=$consultas5->AgregarPDO($Datos6,$sql5);
$consultas5=null;
$Datos6=null;
$sql5="";
ActualizarLote($mostrar["SKU"],($mostrar["Cantidad"] *-1));
         


                    }
                    $Datos5['codigoP']=BuscarMovimiento($mostrar["SKU"]);
                    
                    $Datos5['wc_status']=$mostrar["Status"];
                    $Datos5['wc_Cpedido']=$mostrar["Pedido"];
                    $Datos5['fecha']=$mostrar["Fecha"];
                   
                    $sql2="UPDATE wc_pedido SET wc_status = :wc_status , fecha = :fecha WHERE (codigoP= :codigoP  and  wc_Cpedido = :wc_Cpedido)";
                    $consultas3 = new Consultas();
                    $stmt3=$consultas3->AgregarPDO($Datos5,$sql2 );
                    $consultas3=null;
                    $Datos5=null;
                   
                }





         
          next($stmt2);
         }
         }else{
          $Datos5['codigoP']=BuscarMovimiento($mostrar["SKU"]);
          $Datos5['cantida']=$mostrar["Cantidad"];
          $Datos5['wc_status']=$mostrar["Status"];
          $Datos5['wc_Cpedido']=$mostrar["Pedido"];
          $Datos5['fecha']=$mostrar["Fecha"];
          $sql2 ="INSERT INTO wc_pedido (codigoP, cantida, wc_status, wc_Cpedido, fecha) VALUES (:codigoP, :cantida, :wc_status, :wc_Cpedido, :fecha )";
          $consultas3 = new Consultas();
          $stmt3=$consultas3->AgregarPDO($Datos5,$sql2 );
          $consultas3=null;
          $Datos5=null;

          if($mostrar["Status"]=="wc-pendiente" OR $mostrar["Status"]=='wc-on-hold' OR $mostrar["Status"]=='wc-processing' OR  $mostrar["Status"]=='wc-complete' OR  $mostrar["Status"]=='wc-failure' ){
            $CodigoSql4="UPDATE movimientop SET Existencia = Existencia - :Existencia WHERE (CodigoM= :CodigoM )";
            $Datos5['Existencia']=$mostrar["Cantidad"];
            $Datos5['CodigoM']=BuscarMovimiento($mostrar["SKU"]);
            $consultas4 = new Consultas();
            $stmt4=$consultas4->AgregarPDO($Datos5,$CodigoSql4 );
            $consultas4=null;
            $Datos5=null;

            $sql5 ="INSERT INTO detallemov (CodigoMo, Fecha, Cantidad, CodigoU, Vencimiento, Status, Costo, Hora,Observacion, ExistenciaAntes) VALUES (:CodigoMo, :Fecha, :Cantidad, :CodigoU, :Vencimiento, :Status, :Costo, :Hora, :Observacion, :ExistenciaAntes)";
            
            $Datos6=null;
            $Datos6['CodigoMo']=BuscarMovimiento($mostrar["SKU"]);
            $Datos6['Fecha']=date("Y-m-d");
$Datos6['Cantidad']=$mostrar["Cantidad"];
$Datos6['CodigoU']=10;
$Datos6['Vencimiento']="0000-00-00";
$Datos6['Status']="Salida";
$Datos6['Costo']=0;
$Datos6['Hora']=date("H:i:s");
$Datos6['Observacion']="Venta Online estatus del pedido: " .$mostrar["Status"]. " Segun Pedido: ". $mostrar["Pedido"] ; 
$Datos6['ExistenciaAntes']=Buscarexistencia($mostrar["SKU"]) + $mostrar["Cantidad"];
$consultas5 = new Consultas();
$stmt6=$consultas5->AgregarPDO($Datos6,$sql5);
$consultas5=null;
$Datos6=null;
$sql5="";
ActualizarLote($mostrar["SKU"],($mostrar["Cantidad"] *-1));

          }

         }
        } 
next($stmt);
}
    
   
 }else{
  $jsondata="Error";
 }
 return 'ok';
}

function BuscarWoo2($SKU = ''){
  $CI = & get_instance();
  $CI->load->library('Consultas');
  $CI->load->model('ConfigModels');
  $HostWord = $CI->ConfigModels->Value("HostWord",TRUE);
        $UserHostWord = $CI->ConfigModels->Value("UserHostWord",TRUE);
        $PassHostWord = $CI->ConfigModels->Value("PassHostWord",TRUE);
        $wordpressDB = $CI->ConfigModels->Value("wordpressDB",TRUE);
        $Prefijo = $CI->ConfigModels->Value("PrefijoWord",TRUE);
  $consultas=null;
  $Datos3=null;
  if($SKU ===''){
  $sql = " SELECT  aux.meta_id as ID, ".$Prefijo."_postmeta.post_id as Codigo, _postmeta.meta_value as SKU, aux.meta_value as Cantidad, ".$Prefijo."wc_product_meta_lookup.product_id AS ID2 
  FROM  ".$Prefijo."postmeta 
  JOIN  ".$Prefijo."postmeta aux ON aux.post_id =  ".$Prefijo."postmeta.post_id AND aux.meta_key = :Key
  LEFT JOIN  ".$Prefijo."wc_product_meta_lookup ON ".$Prefijo."wc_product_meta_lookup.sku = binary ".$Prefijo."postmeta.meta_value
  WHERE ".$Prefijo."postmeta.meta_key = :Key2 ";
  $Datos3['Key']="_stock";
  $Datos3['Key2']="_sku";
  }else{
    $sql = " SELECT  aux.meta_id as ID, ".$Prefijo."postmeta.post_id as Codigo, ".$Prefijo."postmeta.meta_value as SKU, aux.meta_value as Cantidad, ".$Prefijo."wc_product_meta_lookup.product_id AS ID2 
  FROM  ".$Prefijo."postmeta 
  JOIN  ".$Prefijo."postmeta aux ON aux.post_id = binary ".$Prefijo."postmeta.post_id AND aux.meta_key = :Key
  LEFT JOIN  ".$Prefijo."wc_product_meta_lookup ON ".$Prefijo."wc_product_meta_lookup.sku = binary ".$Prefijo."postmeta.meta_value
  WHERE ".$Prefijo."postmeta.meta_key = :Key2 AND ".$Prefijo."postmeta.meta_value = :sku ";
  $Datos3['Key']="_stock";
  $Datos3['Key2']="_sku";
  $Datos3['sku']=$SKU;
  }
  $consultas = new Consultas();
  $stmt=$consultas->BuscarPDO($sql,$Datos3,$wordpressDB,$UserHostWord,$PassHostWord,$HostWord);
  $consultas=null;
  $Datos3=null;
  return $stmt;
}

  function BuscarExistencia23($Cod,$Tienda=5,$MOVI = null){
    $CI = & get_instance();
  $CI->load->library('Consultas');
  $CI->load->model('ConfigModels');
    $Codigo= VerificarCodigo($Cod);
 
 
   $Tienda= $CI->ConfigModels->Value("MiTienda");
 $consultas=null;
 $Datos3=null;
 if ($MOVI != null){
 $sql = "SELECT movimientop.Existencia as existencia, CostoD AS Precio FROM movimientop WHERE (movimientop.CodigoM = :CodigoM ) LIMIT 1";
 $Datos3['CodigoM']=$MOVI;
 }else{
 $sql = "SELECT movimientop.Existencia as existencia, CostoD AS Precio FROM movimientop WHERE (movimientop.CodigoP = :CodigoP AND movimientop.CodigoT = :CodigoT ) LIMIT 1";
 $Datos3['CodigoP']=$Codigo;
 $Datos3['CodigoT']=$Tienda;
 }
 
 $consultas = new Consultas();
 $stmt=$consultas->BuscarPDO($sql,$Datos3);
 $consultas=null;
 $Datos3=null;
 $exi = $stmt === null ? -1: $stmt[0]["existencia"];
 $Precio = $stmt === null ? -1: $stmt[0]["Precio"];
 $Arreglo = array($exi,$Precio);
 return $Arreglo;
 }
  

  function VerificarWoo2($SKU = '',$Tienda=5,$MOV = null){
    $CI = & get_instance();
    $CI->load->library('Consultas');
    $CI->load->model('ConfigModels');
    $Tienda= $CI->ConfigModels->Value("MiTienda");
    $Produc = BuscarWoo2($SKU);
  
     if($Produc != null){
       for ($i = 0; $i <  count($Produc); $i++) {
        $arryStopPrecio = BuscarExistencia2($Produc[$i]['SKU'],$Tienda,$MOV) ;
        $Stock =   $arryStopPrecio[0];
        $Produc[$i]["Precio"] =$arryStopPrecio[1];
         $Produc[$i]["Exis"] = $Stock === -1 ? $Produc[$i]['Cantidad'] : $Stock;
        }
     }
  
     return $Produc;
  }
  function Actualizar2($Datos){
    $CI = & get_instance();
    $CI->load->library('Consultas');
    $CI->load->model('ConfigModels');
    $HostWord = $CI->ConfigModels->Value("HostWord",TRUE);
    $UserHostWord = $CI->ConfigModels->Value("UserHostWord",TRUE);
    $PassHostWord = $CI->ConfigModels->Value("PassHostWord",TRUE);
    $wordpressDB = $CI->ConfigModels->Value("wordpressDB",TRUE);
    $Prefijo = $CI->ConfigModels->Value("PrefijoWord",TRUE);
    if ($Datos != null){
      for ($i = 0; $i <  count($Datos); $i++) {
        EditMeta2($Datos[$i]['Codigo'],'_regular_price',$Datos[$i]['Precio']);
        EditMeta2($Datos[$i]['Codigo'],'_price',$Datos[$i]['Precio']);
        MaxMin($Datos[$i]['Codigo']);
         if($Datos[$i]['Cantidad'] != $Datos[$i]['Exis']) ;

          $consultas4=null;
              $Datos5=null;
              $CodigoSql4="UPDATE ".$Prefijo."postmeta SET meta_value = :Existencia WHERE (meta_id= :Stock )";
              $Datos5['Existencia']=$Datos[$i]['Exis'];
              $Datos5['Stock']=$Datos[$i]['ID'];
              $consultas4 = new Consultas();
              $stmt4=$consultas4->AgregarPDO($Datos5,$CodigoSql4,$wordpressDB,$UserHostWord,$PassHostWord,$HostWord );
              $consultas4=null;
              $Datos5=null;
              if ($Datos[$i]['Exis'] > 0){
                EditMeta2($Datos[$i]['Codigo'],'_stock_status','instock');
              }else{
                EditMeta2($Datos[$i]['Codigo'],'_stock_status','outofstock');
              }
              if($Datos[$i]['ID2']!= null){
              $CodigoSql4="UPDATE ".$Prefijo."wc_product_meta_lookup SET stock_quantity = :Existencia WHERE (product_id= :Stock )";
              $Datos5['Existencia']=$Datos[$i]['Exis'];
              $Datos5['Stock']=$Datos[$i]['ID2'];
              $consultas4 = new Consultas();
              $stmt4=$consultas4->AgregarPDO($Datos5,$CodigoSql4,$wordpressDB,$UserHostWord,$PassHostWord,$HostWord );
              $consultas4=null;
              $Datos5=null;
              if ($Datos[$i]['Exis'] > 0){
                $CodigoSql4="UPDATE ".$Prefijo."wc_product_meta_lookup SET stock_status = :Status WHERE (product_id= :Stock )";
                $Datos5['Status']='instock';
                $Datos5['Stock']=$Datos[$i]['ID2'];
                $consultas4 = new Consultas();
                $stmt4=$consultas4->AgregarPDO($Datos5,$CodigoSql4,$wordpressDB,$UserHostWord,$PassHostWord,$HostWord );
                $consultas4=null;
                $Datos5=null;
              }else{
                $CodigoSql4="UPDATE ".$Prefijo."wc_product_meta_lookup SET stock_status = :Status WHERE (product_id= :Stock )";
                $Datos5['Status']='outofstock';
                $Datos5['Stock']=$Datos[$i]['ID2'];
                $consultas4 = new Consultas();
                $stmt4=$consultas4->AgregarPDO($Datos5,$CodigoSql4,$wordpressDB,$UserHostWord,$PassHostWord,$HostWord );
                $consultas4=null;
                $Datos5=null;
              }

              }
             
      
        }
    }
    return $Datos;
  }
  
    function ActualalizarExistencia($postId){
      $CI = & get_instance();
      $CI->load->library('Consultas');
      $CI->load->model('ConfigModels');
      $HostWord = $CI->ConfigModels->Value("HostWord",TRUE);
      $UserHostWord = $CI->ConfigModels->Value("UserHostWord",TRUE);
      $PassHostWord = $CI->ConfigModels->Value("PassHostWord",TRUE);
      $wordpressDB = $CI->ConfigModels->Value("wordpressDB",TRUE);
      $Prefijo = $CI->ConfigModels->Value("PrefijoWord",TRUE);
        
    
       $Buscar = "SELECT meta_value AS SKU FROM ".$Prefijo."postmeta WHERE post_id = :id AND meta_key = :sku";
       
       $Datos5=null;
       $Datos5['sku']='_sku';
       $Datos5['id']=$postId;
       $consultas = new Consultas();
       $stmt=$consultas->BuscarPDO($Buscar,$Datos5,$wordpressDB,$UserHostWord,$PassHostWord,$HostWord);
        if ($stmt!=null){
       if($stmt[0]['SKU'] != ''){
           Actualizar2(VerificarWoo2($stmt[0]['SKU']));
       }
        }
       
     
   
   
    
 
 }
 
?>