<?php
class ConsultaDespacho extends Conexion1 {
public $mysqli;  public $data;
public function __construct() {$this->mysqli = parent::conectar();$this->data = array();} 
// ---------------------------------------------------------------------------------------------------------------
// ---------------------------------------------------------------------------------------------------------------
// SELECT DATE_FORMAT(STR_TO_DATE(REPLACE(REPLACE(fecha, '.m.', 'M'), ' ', ''), '%d/%m/%Y,%h:%i:%s%p' ), '%Y-%m-%d %H:%i:%s' ) AS fecha_convertida, fecha FROM ventas WHERE fecha LIKE '%/%';

// UPDATE ventas SET fecha=DATE_FORMAT(STR_TO_DATE(REPLACE(REPLACE(fecha, '.m.', 'M'), ' ', ''), '%d/%m/%Y,%h:%i:%s%p' ), '%Y-%m-%d %H:%i:%s' ) WHERE fecha LIKE '%a.m%';
// UPDATE ventas SET fecha=DATE_FORMAT(STR_TO_DATE(REPLACE(REPLACE(fecha, '.m.', 'M'), ' ', ''), '%d/%m/%Y,%h:%i:%s%p' ), '%Y-%m-%d %H:%i:%s' ) WHERE fecha LIKE '%p.m%';



// SELECT DATE_FORMAT(STR_TO_DATE(REPLACE(REPLACE(fecha, '.m.', 'M'), ' ', ''), '%d/%m/%Y,%h:%i:%s' ), '%Y-%m-%d %H:%i:%s' ) AS fecha_convertida, fecha FROM ventas WHERE fecha LIKE '%/%' AND DATE_FORMAT(STR_TO_DATE(REPLACE(REPLACE(fecha, '.m.', 'M'), ' ', ''), '%d/%m/%Y,%h:%i:%s' ), '%Y-%m-%d %H:%i:%s' ) !="NULL";


// UPDATE ventas SET fecha= STR_TO_DATE(fecha, '%d/%m/%Y, %H:%i:%s') WHERE fecha LIKE '%/%';


// UPDATE ventas SET fecha = DATE_FORMAT(STR_TO_DATE(REPLACE(REPLACE(fecha, '.m.', 'M'), ' ', ''), '%d/%m/%Y , %h:%i:%s' ), '%Y-%m-%d %H:%i:%s' ) WHERE fecha LIKE '%/%' AND IFNULL( DATE_FORMAT(STR_TO_DATE(REPLACE(REPLACE(fecha, '.m.', 'M'), ' ', ''), '%d/%m/%Y , %h:%i:%s' ), '%Y-%m-%d %H:%i:%s' ),"NULL") !="NULL";
// UPDATE ventas SET fecha=DATE_FORMAT(STR_TO_DATE(REPLACE(REPLACE(fecha, '.m.', 'M'), ' ', ''), '%d/%m/%Y,%h:%i:%s%p' ), '%Y-%m-%d %H:%i:%s' ) WHERE fecha LIKE '%/%';
// ---------------------------------------------------------------------------------------------------------------
// ---------------------------------------------------------------------------------------------------------------
// public function actuAuxPicking($auxPicking,$relArray,$idVenta,$idProducto){$paso["paso"]="no paso";
// $a=$this->mysqli->query("SELECT aux_picking FROM ventas WHERE id_venta='$idVenta';"); 
// if($a->num_rows!=0){ $aA=$a->fetch_assoc();  $auxPick=$aA["aux_picking"];  
// if($auxPick=="{}" || $auxPick=="[]" || $auxPick=="" || $auxPicking!="null"){
// $aii=$this->mysqli->query("UPDATE ventas SET aux_picking='$auxPicking' WHERE id_venta='$idVenta';"); if($aii){$paso["aux"]=$dejson; $paso["paso"]="paso";}}else{
// $jsonPick22=json_decode($auxPick,true);    
// if(isset($jsonPick22[strval($idProducto)])){
// $auxTT=array();  $auxRel=$relArray; for($i=0;$i<sizeof($auxRel);$i++){
// $auxTT[]=array("ubicacion"=>$auxRel[$i]["ubicacion"],"cant"=>$auxRel[$i]["cantidad"],"cantAux"=>$auxRel[$i]["cantidad"]);}
// $jsonPick22[strval($idProducto)]=$auxTT; }else{
// $auxRel=$relArray; $jsonPick=$jsonPick22[strval($idProducto)];
// for($i=0;$i<sizeof($jsonPick);$i++){ for($k=0;$k<sizeof($auxRel);$k++){ if($jsonPick[$i]["ubicacion"]==$auxRel[$k]["ubicacion"]){
// $jsonPick[$i]["cantAux"]=$auxRel[$k]["cantidad"]; unset($auxRel[$k]); }}} if(sizeof($auxRel)!=0){ 
// for($k=0;$k<sizeof($auxRel);$k++){$jsonPick[]=array("ubicacion"=>$auxRel[$k]["ubicacion"],"cant"=>$auxRel[$k]["cantidad"],"cantAux"=>$auxRel[$k]["cantidad"]);}}
// $jsonPick22[strval($idProducto)]=$jsonPick;}
// $dejson=json_encode($jsonPick22); $bbi=$this->mysqli->query("UPDATE ventas SET aux_picking='$dejson' WHERE id_venta='$idVenta';");
// $paso["aux"]=$dejson; }} return json_encode($paso);}

// public function agregarAuxPicking($campos,$idVenta){ $paso["paso"]="no paso";
// $a=$this->mysqli->query("UPDATE ventas SET aux_picking='$campos' WHERE id_venta='$idVenta';"); if($a){$paso["paso"]="paso";}
// return json_encode($paso);}


public function venta_por_id_compra($id_venta,$idBodega,$idEmpresa){$paso["paso"]="no paso";
$a=$this->mysqli->query("SELECT * FROM ventas WHERE id_venta='$id_venta';");   
if($a->num_rows!=0){$aA=$a->fetch_assoc();  $paso=$this->identificadorIdGeneralCompra($aA,"tienda Online",$idBodega,$idEmpresa);} return json_encode($paso);}

public function identificadorIdGeneralCompra($v,$baseVendedor,$idBodega,$idEmpresa){ $idAA=$v["id_usuario"];  $idVen[0]=$v["id_vendedor"]; $idCli[0]=$v["id_usuario"]; $idVenta[0]=$v["id_venta"];
$venta=json_decode($v["venta"],true); $articulos=0; $cantidad=0; $relCantidad=0; $conteo=0;
for($p2=0;$p2<sizeof($venta);$p2++){ $identificacion[$conteo]=$venta[$p2]["idpr"]; $conteo++;    
if($venta[$p2]["estEli"]==0){$cantidad+=$venta[$p2]["cant"]; $relCantidad+=$venta[$p2]["rel"]; $articulos++; }  } 
$venCli=array_values(array_unique(array_merge($idCli,$idVen))); $idGU=""; $idVV="";
for($u1=0;$u1<sizeof($venCli);$u1++){$idGU.="id_usuario =".$venCli[$u1]." OR ";} $idGU=substr($idGU,0,-4);
$u2=$this->mysqli->query("SELECT * FROM usuarios WHERE ".$idGU." ;"); while($fila=$u2->fetch_assoc()){$uUU[]=$fila;}
for($vi1=0;$vi1<sizeof($idVenta);$vi1++){$idVV.="id_venta = ".$idVenta[$vi1]." OR ";  } $idVV=substr($idVV,0,-4);
$coPa="SELECT * FROM pagos WHERE ".$idVV." ;";
$vv1=$this->mysqli->query($coPa);if($vv1->num_rows!=0){ while($fila=$vv1->fetch_assoc()){$vVV[]=$fila;}}else{$vVV=[];}
$identificacion=array_values(array_unique($identificacion)); $idGeneral="";
for($i=0;$i<sizeof($identificacion);$i++){ $idGeneral.="id =".$identificacion[$i]." OR "; } $idGeneral=substr($idGeneral,0,-4);
$a1="SELECT productos.*, JSON_UNQUOTE(JSON_EXTRACT(productos.datos_productos, '$.descripcion')) as descripcion,";
$a2="IFNULL(categorias.categoria, 'DISPONIBLE') as categoria, marca.marca, marca.imagen, COALESCE(JSON_UNQUOTE(JSON_EXTRACT(ubicacion_array, '$.".$idBodega."')),'') AS ubicacionAux, ";
$a3="IFNULL(modelos.modelo, 'DISPONIBLE') as modelo FROM productos "; 
$a4="LEFT JOIN categorias ON productos.id_categoria = categorias.id_categoria ";
$a5="LEFT JOIN modelos ON productos.id_modelo = modelos.id_modelo ";
$a6="LEFT JOIN marca ON productos.id_marca = marca.id_marca WHERE ";
$sel2=$this->mysqli->query($a1.$a2.$a3.$a4.$a5.$a6."(".$idGeneral.") AND productos.id_empresa='".$idEmpresa."';");
 while($fila=$sel2->fetch_assoc()){$aA[]=$fila;}
for($q1=0;$q1<sizeof($venta);$q1++){$venta[$q1]["infoProducto"]=$this->aIU($this->obProGen11($aA,$venta[$q1]["idpr"],"id","vacio"));}
$v["venta"]=json_encode($venta);
if($v["id_vendedor"]==0){$vAux["vendedor"]=$baseVendedor;}else{$vAux["vendedor"]=$this->obProGen11($uUU,$v["id_vendedor"],"id_usuario","tienda Online");}
$vAux["cliente"]=$this->obProGen11($uUU,$v["id_usuario"],"id_usuario",""); 
if(sizeof($vVV)==0){$vAux["pagos"]="null";}else{$vAux["pagos"]=$vVV; }
$ffAA=$this->mysqli->query("SELECT * FROM proveedores WHERE id_proveedor='$idAA'");
if($ffAA->num_rows!=0){$paso["proveedor"]=$ffAA->fetch_assoc();}else{$paso["proveedor"]="vacio";} 
$paso["paso"]="paso"; $paso["info"]=$v; $paso["productosTotal"]=$cantidad; $paso["relProductos"]=$relCantidad; 
$paso["articulos"]=$articulos; $paso["cliente"]=$vAux["cliente"]; $paso["vendedor"]=$vAux["vendedor"]; $paso["pagos"]=$vAux["pagos"]; 
return $paso; }



public function listadoFecha($fecha1,$fecha2,$idBodega){$paso["paso"]="no paso";
// SELECT id_venta FROM ventas WHERE (fecha between '2024-09-18 00:00:00' AND '2024-09-18 23:59:59') AND id_bodega=1;
$a=$this->mysqli->query("SELECT id_venta FROM ventas WHERE (fecha BETWEEN '$fecha1' AND '$fecha2') AND id_bodega='$idBodega';"); 
//$a=$this->mysqli->query("SELECT id_venta FROM ventas WHERE (fecha BETWEEN '".$fecha1."' AND ".$fecha2.") AND id_bodega='".$idBodega."';"); 
if($a->num_rows!=0){ while($fila=$a->fetch_assoc()){$aA[]=$fila;}  $paso["paso"]="paso"; $paso["lista"]=$aA;}
return json_encode($paso); }



public function asignacionCantidad($idVenta,$ubicacion,$idBodega){$paso["paso"]="no paso";
$a=$this->mysqli->query("SELECT * FROM ventas WHERE id_venta='$idVenta';");
if($a->num_rows!=0){  $aA=$a->fetch_assoc(); $idBodegaDestino=$aA["id_bodega_aux"];
if($idBodegaDestino!="0" && $idBodegaDestino!="null" && $idBodegaDestino!=""){ $v=json_decode($aA["venta"],true);$conteo=0;
for($i=0;$i<sizeof($v);$i++){  $idpr=$v[$i]["idpr"]; $rel=$v[$i]["cant"];
$con="UPDATE productos SET ubicacion_array = IF(JSON_UNQUOTE(REPLACE(JSON_SEARCH(ubicacion_array, 'one', '".$ubicacion."', NULL, '$.".$idBodega."[*].ubicacion'), '.ubicacion', '.cantidadAux')) IS NULL,
JSON_ARRAY_APPEND(ubicacion_array, '$.".$idBodega."', JSON_OBJECT('ubicacion', '".$ubicacion."', 'cantidad', ".$rel.", 'cantidadAux', ".$rel.")),
JSON_SET(ubicacion_array, JSON_UNQUOTE(REPLACE(JSON_SEARCH(ubicacion_array, 'one', '".$ubicacion."', NULL, '$.".$idBodega."[*].ubicacion'), '.ubicacion', '.cantidad')),
JSON_EXTRACT(ubicacion_array, JSON_UNQUOTE(REPLACE(JSON_SEARCH(ubicacion_array, 'one', '".$ubicacion."', NULL, '$.".$idBodega."[*].ubicacion'), '.ubicacion', '.cantidad'))) + ".$rel."
JSON_UNQUOTE(REPLACE(JSON_SEARCH(ubicacion_array, 'one', '".$ubicacion."', NULL, '$.".$idBodega."[*].ubicacion'), '.ubicacion', '.cantidadAux')),
JSON_EXTRACT(ubicacion_array, JSON_UNQUOTE(REPLACE(JSON_SEARCH(ubicacion_array, 'one', '".$ubicacion."', NULL, '$.".$idBodega."[*].ubicacion'), '.ubicacion', '.cantidadAux'))) + ".$rel."))
WHERE id = ".$idpr.";"; $ddzz=$this->mysqli->query($con); if(!$ddzz){$conteo++;}}
if($conteo==0){$paso["paso"]="paso";}}} return json_encode($paso); }




public function listadoProPedido($idVenta,$idBodega){$paso["paso"]="no paso"; 
$a=$this->mysqli->query("SELECT * FROM ventas WHERE id_venta='$idVenta';");
if($a->num_rows!=0){$aA=$a->fetch_assoc();  $paso["paso"]="paso";  $paso["infoVenta"]=$aA;  $paso["info"]=$this->identificadorIdListado($aA,$idBodega);    }
return json_encode($paso); }

public function identificadorIdListado($v,$idBodega){ $venta=json_decode($v["venta"],true); $articulos=0; $cantidad=0; $relCantidad=0;
$conteo=0;    for($p2=0;$p2<sizeof($venta);$p2++){ $identificacion[$conteo]=$venta[$p2]["idpr"]; $conteo++; 
if($venta[$p2]["estEli"]==0){$cantidad+=$venta[$p2]["cant"]; $relCantidad+=$venta[$p2]["rel"]; $articulos++;}}
$identificacion=array_values(array_unique($identificacion)); $idGeneral="";
for($i=0;$i<sizeof($identificacion);$i++){ $idGeneral.="id =".$identificacion[$i]." OR "; } $idGeneral=substr($idGeneral,0,-4);
$a1="SELECT productos.*, JSON_UNQUOTE(JSON_EXTRACT(productos.datos_productos, '$.descripcion')) as descripcion,";
$a2="IFNULL(categorias.categoria, 'DISPONIBLE') as categoria, marca.marca, marca.imagen, COALESCE(JSON_UNQUOTE(JSON_EXTRACT(ubicacion_array, '$.".$idBodega."')),'') AS ubicacionAux, ";
$a3="IFNULL(modelos.modelo, 'DISPONIBLE') as modelo FROM productos "; 
$a4="LEFT JOIN categorias ON JSON_UNQUOTE(JSON_EXTRACT(productos.datos_productos, '$.id_categoria')) = categorias.id_categoria ";
$a5="LEFT JOIN modelos ON JSON_UNQUOTE(JSON_EXTRACT(productos.datos_productos, '$.id_modelo')) = modelos.id_modelo ";
$a6="LEFT JOIN marca ON JSON_UNQUOTE(JSON_EXTRACT(productos.datos_productos, '$.id_marca')) = marca.id_marca WHERE ";
$sel2=$this->mysqli->query($a1.$a2.$a3.$a4.$a5.$a6.$idGeneral." ;"); while($fila=$sel2->fetch_assoc()){$aA[]=$fila;}
for($q1=0;$q1<sizeof($venta);$q1++){$venta[$q1]["infoProducto"]=$this->aIU($this->obProGen11($aA,$venta[$q1]["idpr"],"id","vacio"));} return $venta; }




// public function ventaAbonoBasico($idPago){$paso["paso"]="no paso";
// $a=$this->mysqli->query("SELECT bodegas.nombre AS nombreBodega,  ventas.control_estado, ventas.id_bodega, ventas.clave_venta , pagos.*, usuarios.usuario, usuarios.empresa, usuarios.id_usuario FROM pagos INNER JOIN ventas ON ventas.id_venta = pagos.id_venta INNER JOIN bodegas ON ventas.id_bodega = bodegas.id_bodega INNER JOIN usuarios ON usuarios.id_usuario = IFNULL(JSON_UNQUOTE(JSON_EXTRACT(pagos.aux, '$.idVerificacion')),'5') WHERE pagos.id_pago = '$idPago';");    
// if($a->num_rows!=0){$paso["paso"]="paso"; $paso["info"]=$a->fetch_assoc();} return json_encode($paso); }
public function ventaAbonoBasico($idPago,$genAbono){$paso["paso"]="no paso"; if($genAbono=="0"){    
// $a=$this->mysqli->query("SELECT pagos.resta AS restaTabla, ventas.estado, ventas.venta, ventas.id_venta, bodegas.nombre AS nombreBodega, ventas.control_estado, ventas.id_bodega, ventas.clave_venta,  pagos.*, usuarios.usuario, usuarios.empresa, usuarios.id_usuario FROM pagos INNER JOIN ventas ON ventas.id_venta = pagos.id_venta INNER JOIN bodegas ON ventas.id_bodega = bodegas.id_bodega INNER JOIN usuarios ON usuarios.id_usuario = IFNULL(JSON_UNQUOTE(JSON_EXTRACT(pagos.aux, '$.idVerificacion')),'5') WHERE pagos.id_pago = '$idPago';");    
$a=$this->mysqli->query("SELECT pagos.resta AS restaTabla, ventas.estado, ventas.venta, ventas.id_venta, bodegas.nombre AS nombreBodega, ventas.control_estado, ventas.id_bodega, ventas.clave_venta, pagos.*, usuarios.usuario, usuarios.empresa, usuarios.id_usuario AS id_usuario_pago, usuarios_venta.usuario AS usuario_venta, usuarios_venta.empresa AS empresa_venta, usuarios_venta.id_usuario AS id_usuario_venta FROM pagos INNER JOIN ventas ON ventas.id_venta = pagos.id_venta INNER JOIN bodegas ON ventas.id_bodega = bodegas.id_bodega INNER JOIN usuarios ON usuarios.id_usuario = IFNULL(JSON_UNQUOTE(JSON_EXTRACT(pagos.aux, '$.idVerificacion')),'5') INNER JOIN usuarios AS usuarios_venta ON ventas.id_usuario = usuarios_venta.id_usuario WHERE pagos.id_pago = '$idPago';");
if($a->num_rows!=0){$aux1=$a->fetch_assoc();  $idVenta=$aux1["id_venta"];
$bb=$this->mysqli->query("SELECT monto FROM pagos WHERE (estado_pago='verificado' OR estado_pago='pendiente') AND id_venta='$idVenta';");
$totalAbono=0; if($bb->num_rows!=0){while($fila=$bb->fetch_assoc()){$totalAbono=$totalAbono+$fila["monto"];}} 
$totalVenta=$this->obtenerTotalVentaGene($aux1["venta"],$this->obtenerAuxEstadoGene($aux1["estado"])); $paso["resta"]=$totalVenta["total"]-$totalAbono;    
$paso["paso"]="paso"; $paso["info"]=$aux1;} }else{
//$a=$this->mysqli->query("SELECT pagos.resta AS restaTabla, ventas.estado, ventas.venta, ventas.id_venta, bodegas.nombre AS nombreBodega, ventas.control_estado, ventas.id_bodega, ventas.clave_venta,  pagos.*, usuarios.usuario, usuarios.empresa, usuarios.id_usuario FROM pagos INNER JOIN ventas ON ventas.id_venta = pagos.id_venta INNER JOIN bodegas ON ventas.id_bodega = bodegas.id_bodega INNER JOIN usuarios ON usuarios.id_usuario = IFNULL(JSON_UNQUOTE(JSON_EXTRACT(pagos.aux, '$.idVerificacion')),'5') WHERE pagos.gen_abono = '$genAbono';");    
$a=$this->mysqli->query("SELECT pagos.resta AS restaTabla, ventas.estado, ventas.venta, ventas.id_venta, bodegas.nombre AS nombreBodega, ventas.control_estado, ventas.id_bodega, ventas.clave_venta, pagos.*, usuarios.usuario, usuarios.empresa, usuarios.id_usuario AS id_usuario_pago, usuarios_venta.usuario AS usuario_venta, usuarios_venta.empresa AS empresa_venta, usuarios_venta.id_usuario AS id_usuario_venta FROM pagos INNER JOIN ventas ON ventas.id_venta = pagos.id_venta INNER JOIN bodegas ON ventas.id_bodega = bodegas.id_bodega INNER JOIN usuarios ON usuarios.id_usuario = IFNULL(JSON_UNQUOTE(JSON_EXTRACT(pagos.aux, '$.idVerificacion')),'5') INNER JOIN usuarios AS usuarios_venta ON ventas.id_usuario = usuarios_venta.id_usuario WHERE pagos.gen_abono = '$genAbono';");
if($a->num_rows!=0){while($fila=$a->fetch_assoc()){$aA[]=$fila;} $paso["paso"]="paso";  $paso["info"]=$aA; }} return json_encode($paso); }

public function obtenerTotalVentaGene($venta, $aux){$v = json_decode($venta,true); $total = 0; $cantidad = 0; $articulos = 0;
for($i=0;$i<sizeof($v);$i++){if($v[$i]["estEli"] == "0"){
$total = $total + ($v[$i][$aux]*$v[$i]["costo"]); $cantidad = $cantidad + $v[$i][$aux]; $articulos++;}}
$aux11["cantidad"]=$cantidad; $aux11["total"]=$total; $aux11["articulos"]=$articulos; return $aux11;}
public function obtenerAuxEstadoGene($estado) { $estadoBase=["verificacion","picking","packing","facturacion","despacho","enviados"];
if($estado == $estadoBase[3] || $estado == $estadoBase[4] || $estado == $estadoBase[5]){return "rel";}else{return "cant";}}



public function ventaIdBasico($idVenta){$paso["paso"]="no paso";
$a=$this->mysqli->query("SELECT bodegas.*,ventas.* FROM ventas RIGHT JOIN bodegas ON bodegas.id_bodega=ventas.id_bodega WHERE ventas.id_venta='$idVenta'");
//$a=$this->mysqli->query("SELECT * FROM ventas WHERE id_venta='$idVenta'");
if($a->num_rows!=0){$paso["paso"]="paso"; $paso["info"]=$a->fetch_assoc();} return json_encode($paso);}
// ---------------------------------------------------------------------------------------------------------------
// ---------------------------------------------------------------------------------------------------------------
// ---------------------------------------------------------------------------------------------------------------


public function asignacionIdSiggo($codigo,$claveSiggo){$paso["paso"]="no paso";
$a=$this->mysqli->query("UPDATE productos SET clave_siggo='$claveSiggo' WHERE codigo='$codigo';"); 
if($a){$paso["paso"]="paso";} return json_encode($paso);}


public function ventaTipoCompra($pagina,$control,$tipoVentaControl,$busqueda,$idBodega){ $ancho=5; $limite=$ancho*$pagina; $paso["paso"]="no paso";   
$base1=" (ventas.tipo_venta_control='$tipoVentaControl' AND ventas.id_bodega='$idBodega' AND ventas.estado='$control') ";
$base2=" (ventas.clave_venta LIKE '%$busqueda%' OR proveedores.proveedor LIKE '%$busqueda%' OR proveedores.nit LIKE '%$busqueda%' OR proveedores.correo LIKE '%$busqueda%' OR proveedores.celular LIKE '%$busqueda%') ";
if($busqueda!=""){ $cV="SELECT ventas.* FROM ventas RIGHT JOIN proveedores ON ventas.id_usuario=usuarios.id_usuario WHERE ".$base1." AND ".$base2."  ORDER BY ventas.fecha ASC LIMIT 0,100;";    
}else{ $cV="SELECT * FROM ventas WHERE tipo_venta_control='$tipoVentaControl' AND estado='$control' AND id_bodega='$idBodega' ORDER BY fecha DESC LIMIT $limite,$ancho;";}
$aap=$this->mysqli->query($cV); if($aap->num_rows){  $paso["paso"]="paso";  while($fila=$aap->fetch_assoc()){$aA[]=$fila;} $paso["lista"]=$this->auxProCliCom($aA);}
return json_encode($paso); }

public function auxProCliCom($v){ $coo=0;
for($p1=0;$p1<sizeof($v);$p1++){ $idPro[$coo]=$v[$p1]["id_usuario"]; $idVen[$coo]=$v[$p1]["id_vendedor"]; $idVenta[$coo]=$v[$p1]["id_venta"]; $coo++; }    
$venArr=array_values(array_unique($idVen)); $proArr=array_values(array_unique($idPro));   $idVV=""; $idPP="";
for($u1=0;$u1<sizeof($venArr);$u1++){$idVV.="id_usuario =".$venArr[$u1]." OR ";} $idVV=substr($idVV,0,-4);
for($u2=0;$u2<sizeof($proArr);$u2++){$idPP.="id_proveedor =".$proArr[$u2]." OR ";} $idPP=substr($idPP,0,-4);
$aa=$this->mysqli->query("SELECT tipo_cliente, id_usuario,  perfil, email, email_empresa, usuario, empresa, archivos FROM usuarios  WHERE ".$idVV);
$bb=$this->mysqli->query("SELECT * FROM proveedores WHERE ".$idPP);
if($aa->num_rows!=0){ while($fila=$aa->fetch_assoc()){$aA[]=$fila;} $uUU=$aA; }else{$uUU=[];}
if($bb->num_rows!=0){ while($fila=$bb->fetch_assoc()){$bB[]=$fila;} $pPP=$bB; }else{$pPP=[];}
for($q1=0;$q1<sizeof($v);$q1++){ if($v[$q1]["id_vendedor"]==0){$v[$q1]["infoVendedor"]="Tienda Online";}else{
$v[$q1]["infoVendedor"]=$this->obProGen11($uUU,$v[$q1]["id_vendedor"],"id_usuario","Tienda Online");} $v[$q1]["infoCliente"]="vacio";
$v[$q1]["infoProveedor"]= $this->obProGen11($pPP,$v[$q1]["id_usuario"],"id_proveedor","vacio");}
return $v; }

//public function ventaTipoTrasladoPPO($pagina,$control,$tipoVentaControl,$busqueda,$idBodega){  $ancho=5; $limite>
//if($busqueda!=""){ $cV="SELECT usuarios.* FROM ventas RIGHT JOIN usuarios ON usuarios.id_usuario=ventas.id_usuar>
//}else{ $cV="SELECT * FROM ventas WHERE tipo_venta_control='$tipoVentaControl' AND estado='$control' AND id_bodeg>
//$cvr=$this->mysqli->query($cV); if($cvr->num_rows !=0){while($fila = $cvr->fetch_assoc()){$a[] = $fila;} 
//$paso["paso"]="paso"; $paso["lista"]=$this->auxProCliPag($a);} return json_encode($paso);}

public function ventaTipoTrasladoPPO($pagina,$control,$tipoVentaControl,$busqueda,$idBodega){  $ancho=5; $limite=$ancho*$pagina; $paso["paso"]="no paso";
if($busqueda!=""){ $cV="SELECT ventas.* FROM ventas RIGHT JOIN usuarios ON usuarios.id_usuario=ventas.id_usuario WHERE ventas.id_bodega_aux='$idBodega' AND ventas.tipo_venta_control='$tipoVentaControl' AND ventas.estado='$control' AND (ventas.metodo_pago LIKE '%$busqueda%' OR   ventas.clave_venta LIKE  '%$busqueda%' OR JSON_UNQUOTE(JSON_EXTRACT(usuarios.usuario,'$.nombre')) LIKE '%$busqueda%' OR JSON_UNQUOTE(JSON_EXTRACT(usuarios.usuario,'$.apellido')) LIKE '%$busqueda%' OR JSON_UNQUOTE(JSON_EXTRACT(usuarios.usuario,'$.departamento')) LIKE '%$busqueda%' OR JSON_UNQUOTE(JSON_EXTRACT(usuarios.usuario,'$.cedula')) LIKE '%$busqueda%') ORDER BY ventas.fecha DESC LIMIT 0,100;";
}else{ $cV="SELECT * FROM ventas WHERE tipo_venta_control='$tipoVentaControl' AND estado='$control' AND id_bodega_aux='$idBodega' ORDER BY fecha DESC LIMIT $limite,$ancho;";}
$cvr=$this->mysqli->query($cV); if($cvr->num_rows !=0){while($fila = $cvr->fetch_assoc()){$a[] = $fila;} 
$paso["paso"]="paso"; $paso["lista"]=$this->auxProCliPag($a);} return json_encode($paso);}



public function finalizarTrasladoAuxAux($idVenta,$notificacion,$estadoFinalControl,$caja){$paso["paso"]="no paso"; $hoy = date("Y-m-d H:i:s");
$estado=$this->mysqli->query("SELECT control_estado FROM ventas WHERE id_venta='$idVenta';")->fetch_assoc();
$json=json_decode($estado["control_estado"],true);  if($estadoFinalControl=="terminado"){  $json["picking"]["salida"]=$hoy;}else{$json["packing"]["salida"]=$hoy;} $jsonRespuesta=json_encode($json);
$a=$this->mysqli->query("UPDATE ventas SET embalaje='$caja', estado='$estadoFinalControl', control_estado='$jsonRespuesta', notificacion='$notificacion' WHERE id_venta='$idVenta';");     if($a){$paso["paso"]="paso";} return json_encode($paso); }




public function obtenerSerial($control,$idBodega,$actu){$paso["paso"]="no paso";
$a=$this->mysqli->query("SELECT $control FROM bodegas WHERE id_bodega='$idBodega';");
if($a->num_rows!=0){  $aA=$a->fetch_assoc();  $valor=$aA[$control]; 
if($valor=="" || $valor=="{}"){$valor11=1;}else{$valor11=intval($valor)+1;} $paso["paso"]="paso"; $paso["serial"]=$valor11;   
if($actu=="si"){ $this->mysqli->query("UPDATE bodegas SET $control='$valor11' WHERE id_bodega='$idBodega';"); }
} return json_encode($paso); }

//public function obtenerSerial($control,$idBodega){$paso["paso"]="no paso";
//$a=$this->mysqli->query("SELECT $control FROM bodegas WHERE id_bodega='$idBodega';");
//if($a->num_rows!=0){  $aA=$a->fetch_assoc();  $valor=$aA[$control]; 
//if($valor=="" || $valor=="{}"){$valor11=1;}else{$valor11=intval($valor)+1;}   
//$paso["paso"]="paso"; $paso["serial"]=$valor11;} return json_encode($paso); }


public function ventaPorIdTraslado($idVenta,$idBodega,$idEmpresa){ $paso["paso"]="no paso";
$a=$this->mysqli->query("SELECT * FROM ventas WHERE id_venta='$idVenta';");
if($a->num_rows!=0){$aA=$aA=$a->fetch_assoc();   $cEE=json_decode($aA["control_estado"],true); 
$idDespacho="0";   if($cEE["despacho"]["id"]!="0"){ $idDespacho=$cEE["despacho"]["id"];}else{
if($cEE["packing"]["id"]!="0"){$idDespacho=$cEE["packing"]["id"];}else{$idDespacho=$cEE["picking"]["id"];}} 
$aA["id_vendedor"]=$idDespacho; $paso=$this->identificadorIdGeneral($aA,"tienda Online",$idBodega,$idEmpresa);}
return json_encode($paso);  }


public function venta_tipo_traslado_aux_traslado($pagina,$control,$tipoVentaControl,$busqueda,$idBodega){  $ancho=5; $limite=$ancho*$pagina; $paso["paso"]="no paso";
if($busqueda!=""){ $cV="SELECT usuarios.* FROM ventas RIGHT JOIN usuarios ON usuarios.id_usuario=ventas.id_usuario WHERE ventas.id_bodega_aux='$idBodega' AND ventas.tipo_venta_control='$tipoVentaControl' AND ventas.estado='$control' AND (ventas.clave_venta= '$busqueda' OR JSON_UNQUOTE(JSON_EXTRACT(usuarios.usuario,'$.nombre')) LIKE '%$busqueda%' OR JSON_UNQUOTE(JSON_EXTRACT(usuarios.usuario,'$.apellido')) LIKE '%$busqueda%' OR JSON_UNQUOTE(JSON_EXTRACT(usuarios.usuario,'$.departamento')) LIKE '%$busqueda%' OR JSON_UNQUOTE(JSON_EXTRACT(usuarios.usuario,'$.cedula')) LIKE '%$busqueda%') ORDER BY ventas.fecha DESC LIMIT 0,100;";
}else{ if($control=="terminadoFinal"){
$cV="SELECT * FROM ventas WHERE tipo_venta_control='$tipoVentaControl' AND (estado='terminadoFinal' OR estado='despachoFinal') AND id_bodega_aux='$idBodega' ORDER BY fecha DESC LIMIT $limite,$ancho;";}else{    
$cV="SELECT * FROM ventas WHERE tipo_venta_control='$tipoVentaControl' AND estado='$control' AND id_bodega='$idBodega' ORDER BY fecha DESC LIMIT $limite,$ancho;";}}
$cvr=$this->mysqli->query($cV); if($cvr->num_rows !=0){while($fila = $cvr->fetch_assoc()){$a[] = $fila;} 
$paso["paso"]="paso"; $paso["lista"]=$this->auxProCliPag($a);} return json_encode($paso);}



//public function venta_tipo_traslado_aux_traslado($pagina,$control,$tipoVentaControl,$busqueda,$idBodega){  $ancho=5; $limite=$ancho*$pagina; $paso["paso"]="no paso";
//if($busqueda!=""){ $cV="SELECT usuarios.* FROM ventas RIGHT JOIN usuarios ON usuarios.id_usuario=ventas.id_usuario WHERE ventas.id_bodega_aux='$idBodega' AND ventas.tipo_venta_control='$tipoVentaControl' AND ventas.estado='$control' AND (ventas.clave_venta= '$busqueda' OR JSON_UNQUOTE(JSON_EXTRACT(usuarios.usuario,'$.nombre')) LIKE '%$busqueda%' OR JSON_UNQUOTE(JSON_EXTRACT(usuarios.usuario,'$.apellido')) LIKE '%$busqueda%' OR JSON_UNQUOTE(JSON_EXTRACT(usuarios.usuario,'$.departamento')) LIKE '%$busqueda%' OR JSON_UNQUOTE(JSON_EXTRACT(usuarios.usuario,'$.cedula')) LIKE '%$busqueda%') ORDER BY ventas.fecha DESC LIMIT 0,100;";
//}else{$cV="SELECT * FROM ventas WHERE tipo_venta_control='$tipoVentaControl' AND estado='$control' AND id_bodega_aux='$idBodega' ORDER BY fecha DESC LIMIT $limite,$ancho;";}
//$cvr=$this->mysqli->query($cV); if($cvr->num_rows !=0){while($fila = $cvr->fetch_assoc()){$a[] = $fila;} 
//$paso["paso"]="paso"; $paso["lista"]=$this->auxProCliPag($a);} return json_encode($paso);}   






public function cambio_id_general_aux($id,$control,$idVenta){ $hoy = date("Y-m-d H:i:s"); $paso["paso"]="no paso"; if($id!=0){
$info=$this->mysqli->query("SELECT archivos, usuario FROM usuarios WHERE id_usuario=$id;")->fetch_assoc();
$foto=$this->oS($info["archivos"],"foto"); $nit=$this->oS($info["usuario"],"cedula"); $nombre=$this->oS($info["usuario"],"nombre"); }else{$foto="vacio"; $nit="vacio"; $nombre="vacio";}
$estado=$this->mysqli->query("SELECT control_estado_aux FROM ventas WHERE id_venta='$idVenta'")->fetch_assoc(); $json=json_decode($estado["control_estado_aux"],true); 
if($json[$control]["id"]!=0 && $id!=0){$paso["paso"]="ya tomado";}else{ $json[$control]["id"]=$id;
$json[$control]["entrada"]=$hoy; $json[$control]["foto"]=$foto; $json[$control]["nit"]=$nit; $json[$control]["nombre"]=$nombre;
$jsonRespuesta=json_encode($json); $a=$this->mysqli->query("UPDATE ventas SET control_estado_aux='$jsonRespuesta' WHERE id_venta='$idVenta'");
if($a){$paso["paso"]="paso"; $paso["lista"]=$jsonRespuesta; }} return json_encode($paso);    }




public function ventaPorIdDirecto($id_venta,$idBodega,$idEmpresa){$paso["paso"]="no paso";
$a=$this->mysqli->query("SELECT * FROM ventas WHERE id_venta='$id_venta';");   
if($a->num_rows!=0){$aA=$a->fetch_assoc(); $aAAux=array(); $aAAux[]=$aA; $auxPaso=$this->auxVenta($aAAux);  $aA1=$auxPaso[0];   
$paso=$this->identificadorIdGeneral($aA1,"tienda Online",$idBodega,$idEmpresa);} return json_encode($paso);}


public function consultaVentaTraslado($lista){$aux=json_decode($lista,true); $idG=""; $paso["paso"]="no paso";
for($i=0;$i<sizeof($aux);$i++){ $idG.=" idTraslado  = '".$aux[$i]["idVenta"]."' OR "; }
$idG=substr($idG,0,-4);  $consulta="SELECT aux, id_venta, clave_venta FROM ventas WHERE ".$idG;
//print($consulta);

$con=$this->mysqli->query("SELECT aux, id_venta, clave_venta FROM ventas WHERE ".$idG);
if($con->num_rows){ while($fila=$con->fetch_assoc()){$aA[]=$fila;} $paso["lista"]=$aA; $paso["paso"]="paso";}
return json_encode($paso); }



public function consultaTraslado($idTraslado){$paso["paso"]="no paso";
$a=$this->mysqli->query("SELECT * FROM ventas WHERE id_venta='$idTraslado';");
if($a->num_rows!=0){  $paso["lista"]=$a->fetch_assoc(); $paso["paso"]="paso"; }
return json_encode($paso); }


public function cambioEstadoVenta($idVenta,$estado){$paso["paso"]="no paso";
$a=$this->mysqli->query("UPDATE ventas SET estado='$estado' WHERE id_venta='$idVenta';");
if($a){$paso["paso"]="paso";}  return json_encode($paso); }

//$app->post('/cambioVentaEstado',function (Request $pedido, Response $res, $args) {
//$post=$pedido->getParsedBody(); $a=new ConsultaDespacho(); $a1=$a->cambioEstadoVenta($post["idVenta"],$post["estado"]);    
///$res->getBody()->write($a1); return $res->withHeader('Content-Type', 'application/json');});

public function revisarExistenciaSigo($idVenta){ $paso["paso"]="no paso";
$a=$this->mysqli->query("SELECT clave_siggo FROM ventas WHERE id_venta='$idVenta';");
if($a->num_rows!=0){  $aA=$a->fetch_assoc(); if($aA["clave_siggo"]!="vacio" && $aA["clave_siggo"]!=""){ $paso["paso"]="paso";}  } return json_encode($paso); }


public function venta_tipo_traslado_directo($pagina,$busqueda,$idBodega,$estado){ $ancho=5; $limite=$ancho*$pagina; $paso["paso"]="no paso"; if($busqueda!=""){
$cV="SELECT ventas.* FROM ventas RIGHT JOIN usuarios ON usuarios.id_usuario=ventas.id_usuario WHERE ventas.id_bodega_aux='$idBodega' AND ventas.tipo_venta_control=6 AND ventas.metodo_pago='directo' AND ventas.estado='$estado' AND (ventas.clave_venta LIKE '%$busqueda%' OR JSON_UNQUOTE(JSON_EXTRACT(usuarios.usuario,'$.nombre')) LIKE '%$busqueda%' OR JSON_UNQUOTE(JSON_EXTRACT(usuarios.usuario,'$.apellido')) LIKE '%$busqueda%' OR JSON_UNQUOTE(JSON_EXTRACT(usuarios.usuario,'$.departamento')) LIKE '%$busqueda%' OR JSON_UNQUOTE(JSON_EXTRACT(usuarios.usuario,'$.cedula')) LIKE '%$busqueda%') ORDER BY ventas.fecha DESC LIMIT 0,100;";
}else{
$g=$this->mysqli->query("SELECT * FROM ventas WHERE id_bodega_aux='$idBodega' AND tipo_venta_control=6 AND metodo_pago='directo' AND estado='$estado' ORDER BY fecha DESC LIMIT $limite,$ancho;;");
//$g=$this->mysqli->query("SELECT  ventas.*, usuarios.*  FROM ventas RIGHT JOIN usuarios ON usuarios.id_usuario=ventas.id_usuario WHERE ventas.tipo_venta_control=6 AND ventas.metodo_pago='directo' AND ventas.estado='sin tomar';");
if($g->num_rows!=0){while($fila=$g->fetch_assoc()){$aA[]=$fila;}  $aux11=$this->auxVenta($aA);   $paso["lista"]=$this->auxProCliPag($aux11); $paso["paso"]="paso";}    }    
return json_encode($paso);}

public function auxVenta($lista){
$a=$this->mysqli->query("SELECT id_bodega, id_usuario, id_venta, clave_venta, IFNULL(JSON_UNQUOTE(JSON_EXTRACT(ventas.aux, '$.idTraslado')), 0) as idTraslado FROM ventas WHERE tipo_venta_control IN (0, 1, 2, 5)");
//$a=$this->mysqli->query("SELECT id_venta, clave_venta, IFNULL(JSON_UNQUOTE(JSON_EXTRACT(ventas.aux, '$.idTraslado')), 0) as idTraslado FROM ventas WHERE tipo_venta_control!=6;");  
if($a->num_rows!=0){$aA=array(); while($aux=$a->fetch_assoc()){if($aux["idTraslado"]!="0"){$aA[]=$aux;}}
for($i=0;$i<sizeof($lista);$i++){ for($p=0;$p<sizeof($aA);$p++){ if($aA[$p]["idTraslado"]==$lista[$i]["id_venta"]){
$lista[$i]["idVentaTraslado"]=$aA[$p]["clave_venta"]; $lista[$i]["idBodegaTraslado"]=$aA[$p]["id_bodega"];  $lista[$i]["id_vendedor"]=$aA[$p]["id_usuario"];   }}}} return $lista; }  

public function obtenerCampoSensillo($info,$campo){ $aux=json_decode($info,true); return $aux[$campo];}
// ---------------------------------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------------------------------------------
public function consultaPedido($idVendedor,$idBodega){$paso["paso"]="no paso"; 
$a=$this->mysqli->query("SELECT * FROM carrito WHERE id_usuario='$idVendedor' AND id_bodega='$idBodega';");
if($a->num_rows!=0){while($fila=$a->fetch_assoc()){$aA[]=$fila;} $paso["paso"]="paso"; $paso["lista"]=$this->auxPedido($aA);}
return json_encode($paso); }

public function auxPedido($lista){ $aux=array(); 
for($i=0;$i<sizeof($lista);$i++){$aux[]=$lista[$i]["id_cliente"];}
// $aux22=array_values(array_unique($aux));
$aux22aux=array_values(array_unique($aux)); $aux22=array(); for($p=0;$p<sizeof($aux22aux);$p++){if($aux22aux[$p]!="0"){$aux22[]=$aux22aux[$p];}}
//$aux22= array_values(array_unique(array_filter($aux, function($valor) {return $valor !== 0;})));
//var_dump($aux22);
$idGU=""; for($u1=0;$u1<sizeof($aux22);$u1++){$idGU.="id_usuario =".$aux22[$u1]." OR ";} $idGU=substr($idGU,0,-4); 
$a=$this->mysqli->query("SELECT marcas_only, email, email_empresa, archivos, id_usuario, usuario, empresa, tipo_cliente, credito FROM usuarios WHERE ".$idGU.";");
if($a->num_rows!=0){while($fila=$a->fetch_assoc()){$aA[]=$fila;} }else{$aA=array();} $conteo=0;
for($f=0;$f<sizeof($aux22);$f++){  $res[$conteo]=$this->obProGen11($aA,$aux22[$f],"id_usuario","vacio"); 
$res[$conteo]["auxCarrito"]=$this->obtenerSeriales($lista,$aux22[$f]); $conteo++; }
return $res; }

public function obtenerSeriales($lista,$idCliente){$aux22=array();  $conteoCarrito=0; $estadoGeneral="";
for($i=0;$i<sizeof($lista);$i++){if($idCliente==$lista[$i]["id_cliente"]){ $conteoCarrito++; $estadoGeneral=$lista[$i]["estado"];
if($lista[$i]["aux_venta"]!="{}" && $lista[$i]["aux_venta"]!="" && $lista[$i]["aux_venta"]!="[]"){ 
$aux21=json_decode($lista[$i]["aux_venta"],true); $aux22[]=$aux21["consecutivo"];}}}
if(sizeof($aux22)!=0){$aux44= array_values(array_unique($aux22)); }else{ $aux44= "vacio";} $rt["consecutivos"]=$aux44;
if($aux44=="vacio"){ $aux77["conteo"]=$conteoCarrito;  $aux77["estado"]=$estadoGeneral; $rt["conteoGeneCarrito"]=$aux77; }else{
$auxSer1=array(); for($l=0;$l<sizeof($aux44);$l++){$auxSer1[]=$this->conteoSeriales($lista,$aux44[$l]);    }
$rt["conteoGeneCarrito"]=$auxSer1;} return $rt; }

public function conteoSeriales($lista,$serial){ $conteoSer=0; $estado="";
for($i=0;$i<sizeof($serial);$i++){ for($k=0;$k<sizeof($lista);$k++){
if($lista[$k]["aux_venta"]!="{}" && $lista[$k]["aux_venta"]!="" && $lista[$k]["aux_venta"]!="[]"){ 
$aux21=json_decode($lista[$i]["aux_venta"],true); if($aux21["consecutivo"]==$serial){ $estado=$lista[$i]["estado"];  $conteoSer++;}}}}
$rTT["conteo"]=$conteoSer; $rTT["estado"]=$estado; return $rTT; }

//public function obtenerSeriales($lista,$idCliente){$aux22=array();  $conteoCarrito=0;
//for($i=0;$i<sizeof($lista);$i++){if($idCliente==$lista[$i]["id_cliente"]){ $conteoCarrito++;
//if($lista[$i]["aux_venta"]!="{}" && $lista[$i]["aux_venta"]!="" && $lista[$i]["aux_venta"]!="[]"){ 
//$aux21=json_decode($lista[$i]["aux_venta"],true); $aux22[]=$aux21["consecutivo"];}}}
//if(sizeof($aux22)!=0){$aux44= array_values(array_unique($aux22)); }else{ $aux44= "vacio";} $rt["consecutivos"]=$aux44;
//if($aux44=="vacio"){ $rt["conteoGeneCarrito"]=$conteoCarrito;}else{
//$auxSer1=array(); for($l=0;$l<sizeof($aux44);$l++){$auxSer1[]=$this->conteoSeriales($lista,$aux44[$l]);}
//$rt["conteoGeneCarrito"]=$auxSer1;} return $rt; }

//public function conteoSeriales($lista,$serial){ $conteoSer=0;
//for($i=0;$i<sizeof($serial);$i++){ for($k=0;$k<sizeof($lista);$k++){
//if($lista[$k]["aux_venta"]!="{}" && $lista[$k]["aux_venta"]!="" && $lista[$k]["aux_venta"]!="[]"){ 
//$aux21=json_decode($lista[$i]["aux_venta"],true); if($aux21["consecutivo"]==$serial){$conteoSer++;}}}}
//return $conteoSer; }
// -----------------------------------------------------------------------------------------------------------------
// -----------------------------------------------------------------------------------------------------------------
// -----------------------------------------------------------------------------------------------------------------
// -----------------------------------------------------------------------------------------------------------------
// -----------------------------------------------------------------------------------------------------------------
// ---------------------------------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------------------------------------------

public function cambioBodega($idUsuario,$idBodega){$paso["paso"]="paso";   
$a=$this->mysqli->query("UPDATE usuarios SET id_bodega='$idBodega' WHERE id_usuario='$idUsuario';");
if($a){$paso["paso"]="paso";} return json_encode($paso);}

public function bodegaConsulta(){$paso["paso"]="no paso";  $aa=$this->mysqli->query("SELECT * FROM empresas;");
$a=$this->mysqli->query("SELECT * FROM bodegas;"); if($aa->num_rows!=0){while($fila1=$aa->fetch_assoc()){$bB[]=$fila;} $paso["empresas"]=$bB;}
if($a->num_rows!=0){$paso["paso"]="paso"; while($fila=$a->fetch_assoc()){
$aA[]=$fila;}  $paso["lista"]=$aA;} return json_encode($paso);}


public function conteoVerificado($idEmpresa){
$a=$this->mysqli->query("SELECT SUM(CASE WHEN estado_pago = 'verificado' THEN 1 ELSE 0 END) AS sel0, SUM(CASE WHEN estado_pago != 'verificado' THEN 1 ELSE 0 END) AS sel1 FROM pagos WHERE id_empresa='$idEmpresa';")->fetch_assoc();    
$paso["verificado"]=$a["sel0"]; $paso["pendiente"]=$a["sel1"];
return json_encode($paso);}

public function paginacionCartera($pagina,$ancho,$busqueda,$idBodega,$idVendedor){ $limite=$pagina*$ancho; $paso["paso"]="no paso";
//$base="SELECT DISTINCT usuarios.* FROM usuarios INNER JOIN ventas ON usuarios.id_usuario = ventas.id_usuario INNER JOIN pagos ON pagos.id_venta = ventas.id_venta WHERE (ventas.metodo_pago LIKE '%credito%' OR pagos.estado_pago!='verificado') AND ventas.id_bodega='$idBodega' AND ventas.id_vendedor='$idVendedor' ";
// $base="SELECT DISTINCT usuarios.* FROM usuarios INNER JOIN ventas ON usuarios.id_usuario = ventas.id_usuario INNER JOIN pagos ON pagos.id_venta = ventas.id_venta WHERE (ventas.metodo_pago LIKE '%credito%' OR pagos.estado_pago!='verificado') AND ventas.id_bodega='$idBodega' AND ventas.id_vendedor='$idVendedor' ";
$base="SELECT DISTINCT usuarios.* FROM usuarios INNER JOIN ventas ON usuarios.id_usuario = ventas.id_usuario WHERE (ventas.metodo_pago LIKE '%credito%') AND ventas.id_bodega='$idBodega' AND ventas.id_vendedor='$idVendedor' ";
$baseFinal=" ORDER BY usuarios.fecha DESC LIMIT $limite,$ancho;";
if($busqueda!=""){ $baseBusqueda=" AND ((JSON_UNQUOTE(JSON_EXTRACT(usuarios.usuario,'$.nombre')) LIKE '%$busqueda%') OR (JSON_UNQUOTE(JSON_EXTRACT(usuarios.usuario,'$.cedula')) LIKE '%$busqueda%') OR (JSON_UNQUOTE(JSON_EXTRACT(usuarios.usuario,'$.direccion')) LIKE '%$busqueda%') OR (JSON_UNQUOTE(JSON_EXTRACT(usuarios.usuario,'$.telefono')) LIKE '%$busqueda%') )";}else{
$baseBusqueda="";} $consulta=$base.$baseBusqueda.$baseFinal; $a=$this->mysqli->query($consulta); 
if($a->num_rows!=0){while($fila=$a->fetch_assoc()){$aa[]=$fila;} $paso["paso"]="paso"; $paso["lista"]=$this->conteoGeneralPedido($aa,$idBodega,$idVendedor); }
return json_encode($paso);}

public function conteoGeneralPedido($lista,$idBodega,$idVendedor){$idGU=""; $hoy=new DateTime();
for($u1=0;$u1<sizeof($lista);$u1++){$lista[$u1]["totalVentas"]=0; $lista[$u1]["conteoVentas"]=0;
$lista[$u1]["totalAdeudo"]=0; $lista[$u1]["recientes"]=0; $lista[$u1]["expirar"]=0; $lista[$u1]["vencidos"]=0;
$idGU.="id_usuario =".$lista[$u1]["id_usuario"]." OR ";} $idGU="(".substr($idGU,0,-4).")";
$conss="SELECT venta, total, id_venta, clave_venta, fecha, id_usuario, credito, estado, metodo_pago FROM ventas WHERE ".$idGU." AND id_bodega='$idBodega' AND id_vendedor='$idVendedor';";
$a=$this->mysqli->query($conss);if($a->num_rows!=0){ while($fila=$a->fetch_assoc()){$ventas[]=$fila;} $idPago="";
for($u2=0;$u2<sizeof($ventas);$u2++){$idPago.="id_venta =".$ventas[$u2]["id_venta"]." OR ";} $idPago="(".substr($idPago,0,-4).")";
$conss22="SELECT monto, fecha , estado_pago, id_venta FROM pagos WHERE estado_pago='verificado' AND ".$idPago.";";
$b=$this->mysqli->query($conss22); $pagos=array(); if($b->num_rows!=0){while($dil=$b->fetch_assoc()){$pagos[]=$dil;} }

for($i=0;$i<sizeof($ventas);$i++){$total=0; $totalCredito=0;  $ve=json_decode($ventas[$i]["venta"],true); $totalGeneral=0;
for($i1=0;$i1<sizeof($pagos);$i1++){if($ventas[$i]["id_venta"]==$pagos[$i1]["id_venta"]){$total=$total+$pagos[$i1]["monto"];}}
for($i2=0;$i2<sizeof($ve);$i2++){if($ve[$i2]["estEli"]=="0"){if(strpos($ventas[$i]["metodo_pago"], "credito") !== false){
$totalCredito=$totalCredito+($ve[$i2][$this->obtenerAuxEstado($ventas[$i]["estado"])]*$ve[$i2]["costo"]);
}$totalGeneral=$totalGeneral+($ve[$i2][$this->obtenerAuxEstado($ventas[$i]["estado"])]*$ve[$i2]["costo"]);} } 
$ventas[$i]["totalPagos"]=$total; $ventas[$i]["totalGeneral"]=$totalGeneral; $ventas[$i]["totalCredito"]=$totalCredito; }

for($i3=0;$i3<sizeof($lista);$i3++){$recientes=0; $expirar=0; $vencidos=0; $totalAdeudo=0; $totalVentas=0; $conteoVentas=0;
for($i4=0;$i4<sizeof($ventas);$i4++){ if($lista[$i3]["id_usuario"]==$ventas[$i4]["id_usuario"]){
$conteoVentas++; $totalVentas=$totalVentas+$ventas[$i4]["totalGeneral"];
if(strpos($ventas[$i4]["metodo_pago"], "credito") !== false){    
$totalAdeudo=$totalAdeudo+($ventas[$i4]["totalCredito"]-$ventas[$i4]["totalPagos"]);
$diferencia = $hoy->diff(new DateTime($ventas[$i4]["fecha"]))->days; if($diferencia<7){$recientes++;}else{
$fec=json_decode($ventas[$i4]["credito"],true);  $diferencia2=$hoy->diff(new DateTime($fec["fecha"]))->days; 
if($diferencia2<0){$expirar++;}else{$vencidos++;}}}}}
$lista[$i3]["totalVentas"]=$totalVentas; $lista[$i3]["conteoVentas"]=$conteoVentas; $lista[$i3]["vencidos"]=$vencidos;
$lista[$i3]["totalAdeudo"]=$totalAdeudo; $lista[$i3]["recientes"]=$recientes; $lista[$i3]["expirar"]=$expirar; }}
return $lista;}

public function obtenerAuxEstado($estado) { $estadoBase = ["verificacion","picking","packing","facturacion","despacho","enviados"];
if($estado == $estadoBase[3] || $estado == $estadoBase[4] || $estado == $estadoBase[5]) {return "rel";} else {return "cant";}}


// -------------------------------------------------------------------------------------------------------------------------------
// -------------------------------------------------------------------------------------------------------------------------------
// -------------------------------------------------------------------------------------------------------------------------------
// -------------------------------------------------------------------------------------------------------------------------------

// ---------------------------------------------------------------------------------------------------------------
// ---------------------------------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------------------------------------------
public function clienteBase($idUsuario){$paso["paso"]="paso";
$a=$this->mysqli->query("SELECT marcas_only, email, email_empresa, archivos, id_usuario, usuario, empresa, tipo_cliente, credito FROM usuarios WHERE id_usuario='$idUsuario';")->fetch_assoc();
$paso["lista"]=$a; return json_encode($paso);}

public function clienteTotal($busqueda,$idEmpresa,$idBase){ $paso["paso"]="no paso"; if($busqueda!=""){
$a=$this->mysqli->query("SELECT marcas_only, email, email_empresa, archivos, id_usuario, usuario, empresa, tipo_cliente, credito FROM usuarios WHERE id_empresa='$idEmpresa' AND perfil='Cliente' AND (JSON_UNQUOTE(JSON_EXTRACT(usuario,'$.nombre')) LIKE '%$busqueda%' OR JSON_UNQUOTE(JSON_EXTRACT(usuario,'$.apellido')) LIKE '%$busqueda%' OR JSON_UNQUOTE(JSON_EXTRACT(usuario,'$.departamento')) LIKE '%$busqueda%' OR JSON_UNQUOTE(JSON_EXTRACT(usuario,'$.cedula')) LIKE '%$busqueda%');");
if($a->num_rows!=0){ while($fila=$a->fetch_assoc()){$aA[]=$fila;} $paso["lista"]=$aA; $paso["paso"]="paso";} }else{$paso["paso"]="paso";
$mos=$this->mysqli->query("SELECT email, email_empresa, archivos, id_usuario, usuario, empresa, tipo_cliente, credito FROM usuarios WHERE id_usuario='$idBase';")->fetch_assoc();
$a=$this->mysqli->query("SELECT email, email_empresa, archivos, id_usuario, usuario, empresa, tipo_cliente, credito FROM usuarios WHERE id_empresa='$idEmpresa' AND perfil='Cliente' AND id_usuario!='$idBase';");
while($fila=$a->fetch_assoc()){$aA[]=$fila;}   $res[0]=$mos; for($i=0;$i<sizeof($aA);$i++){$res[$i+1]=$aA[$i];} $paso["lista"]=$res;}
return json_encode($paso);}
// --------------------------------------------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------------------------------------------
// -----------------------------------------------------------------------------------------------------

// ---------------------------------------------------------------------------------------------------------------
// ---------------------------------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------------------------------------------
// ---------------------------------------------------------------------------------------------------------------

public function movimientosUnitarios($anterior,$actual,$movimiento,$array){ $res=array();
$arrayBase=array("anterior"=>$anterior, "actual"=>$actual,"movimiento"=>$movimiento);    
if($array=="[]" || $array=="" || $array=="null" || $array==NULL){ $res[0]=$arrayBase; }else{$res=$array;  $res[sizeof($array)]=$arrayBase;}    
return $res;}

public function auxCantAA($idpr,$cantidadAA,$venta){ $respuesta="no paso";
$aaxx=new Consulta(); $aaxx1=$aaxx->arregloConsultaProducto(6); $consulta=$aaxx1["general"]." WHERE id=$idpr ".$aaxx1["adicional"];
$sst=$this->mysqli->query($consulta)->fetch_assoc();  $ssttoo=new Consulta(); $stock=$ssttoo->auxStock($sst["ubicacion"]);
$dif=$cantidadAA-$venta["cant"];  $difV=$dif*(-1); if($dif<0){}else{if($stock<$dif){$respuesta="falto";}}
if($respuesta=="no paso"){$venta["cantAdic"]=$venta["cant"];$venta["cant"]=$cantidadAA; $actualAux=$venta["cantAdic"]; $idprCont=$venta["idpr"];
if($dif<0){$this->auxProductoGeneralAux("resta",$idpr,$dif*(-1),6);}else{$this->auxProductoGeneralAux("suma",$idpr,$dif,6);}}
$resAABB["respuesta"]=$respuesta; $resAABB["lista"]=$venta; return $resAABB; }

//public function generalActualizacion($campo){$paso["paso"]="no paso"; $c=json_decode($campo,true); $ventaRespaldo=array();
//$descuento=$c["descuento"]; $cantidad=$c["cantidad"]; $costo=$c["costo"]; $tipoPrecio=$c["tipoPrecio"]; 
//$idVenta=$c["idVenta"]; $idpr=$c["idpr"]; $a=$this->mysqli->query("SELECT venta FROM ventas WHERE id_venta='$idVenta';");
//if($a->num_rows!=0){ $aa=$a->fetch_assoc(); $venta=json_decode($aa["venta"],true); 
//for($i=0;$i<sizeof($venta);$i++){if($venta[$i]["idpr"]==$idpr){
//if($venta[$i]["costo"]!=$costo){$venta[$i]["movimiento"]=$this->movimientosUnitarios($venta[$i]["costo"]??"",$costo,"costo",$venta[$i]["movimiento"]??""); $venta[$i]["costo"]=$costo;}
//if($venta[$i]["descuento"]!=$descuento){$venta[$i]["movimiento"]=$this->movimientosUnitarios($venta[$i]["descuento"]??"0",$descuento,"descuento",$venta[$i]["movimiento"]??""); $venta[$i]["descuento"]=$descuento;}
//if($venta[$i]["cant"]!=$cantidad){ $anterior=$venta[$i]["cant"];  $aux33=$this->auxCantAA($idpr,$cantidad,$venta[$i]);
//if($aux33["respuesta"]=="no paso"){ $venta[$i]=$aux33["lista"]; $venta[$i]["movimiento"]=$this->movimientosUnitarios($anterior,$cantidad,"cantidad",$venta[$i]["movimiento"]??"");}else{$paso["paso"]="stock";}}
//$ventaRespaldo=$venta[$i];}}} $vvv=json_encode($venta);    $pp=$this->mysqli->query("UPDATE ventas SET venta='$vvv' WHERE id_venta='$idVenta';");
//if($pp){ $paso["lista"]=$ventaRespaldo;   if($paso["paso"]!="stock"){ $paso["paso"]="paso";}} return json_encode($paso); }

public function generalActualizacion($campo,$idEmpresa){$paso["paso"]="no paso"; $c=json_decode($campo,true); $ventaRespaldo=array();
$descuento=$c["descuento"]; $cantidad=$c["cantidad"]; $costo=$c["costo"]; $tipoPrecio=$c["tipoPrecio"]; 
$idVenta=$c["idVenta"]; $idpr=$c["idpr"]; $a=$this->mysqli->query("SELECT venta FROM ventas WHERE id_venta='$idVenta';");
if($a->num_rows!=0){ $aa=$a->fetch_assoc(); $venta=json_decode($aa["venta"],true); 
for($i=0;$i<sizeof($venta);$i++){if($venta[$i]["idpr"]==$idpr){
if($venta[$i]["costo"]!=$costo){  
// $venta[$i]["movimiento"]=$this->movimientosUnitarios($venta[$i]["costo"]??"",$costo,"costo",$venta[$i]["movimiento"]??""); 
$this->movimientoTabla($venta[$i]["costo"]??"",$costo,"costo",$idpr,$idVenta);
$venta[$i]["costo"]=$costo;}
if($venta[$i]["descuento"]??"0"!=$descuento){
// $venta[$i]["movimiento"]=$this->movimientosUnitarios($venta[$i]["descuento"]??"0",$descuento,"descuento",$venta[$i]["movimiento"]??"");
$this->movimientoTabla($venta[$i]["descuento"]??"0",$descuento,"descuento",$idpr,$idVenta);
$venta[$i]["descuento"]=$descuento;}
if($venta[$i]["cant"]!=$cantidad){ $anterior=$venta[$i]["cant"];  $aux33=$this->auxCantAA($idpr,$cantidad,$venta[$i]);
if($aux33["respuesta"]=="no paso"){ $venta[$i]=$aux33["lista"]; 
// $venta[$i]["movimiento"]=$this->movimientosUnitarios($anterior,$cantidad,"cantidad",$venta[$i]["movimiento"]??"");
$this->movimientoTabla($anterior,$cantidad,"cantidad",$idpr,$idVenta);
}else{$paso["paso"]="stock";}}
$ventaRespaldo=$venta[$i];}}} $vvv=json_encode($venta);    $pp=$this->mysqli->query("UPDATE ventas SET venta='$vvv' WHERE id_venta='$idVenta';");
if($pp){ $paso["lista"]=$ventaRespaldo; if($paso["paso"]!="stock"){ $paso["paso"]="paso";}} return json_encode($paso); }

public function movimientoTabla($anterior,$actual,$movimiento,$idpr,$idVenta){$paso["paso"]="no paso";
$a=$this->mysqli->query("INSERT INTO movimientoVenta(anterior,actual,movimiento,idpr,idVenta,id_empresa) VALUES ('$anterior','$actual','$movimiento','$idpr','$idVenta','$idEmpresa');");        
if($a){$paso["paso"]="paso";} return $paso;}

public function consultaMovimientoVenta($idVenta){$paso["paso"]="no paso";
$a=$this->mysqli->query("SELECT * FROM movimientoVenta WHERE id_venta='$idVenta';");
if($a->num_rows!=0){while($fila=$a->fecth_assoc()){$aA[]=$fila;} $paso["lista"]=$aA; $paso["paso"]="paso";}
return json_encode($paso);}

// --------------------------------------------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------------------------------------------


public function cambioDesgloseGene($descuento, $costoEnvio, $iva, $idVenta){$paso["paso"]="no paso";
$a=$this->mysqli->query("UPDATE ventas SET descuento='$descuento', aux=JSON_SET(aux,'$.costoEnvio','$costoEnvio','$.iva','$iva') WHERE id_venta='$idVenta';");    
if($a){$paso["paso"]="paso";} return json_encode($paso); }


public function actualizarDireccionGene($direccion,$idVenta){$paso["paso"]="no paso";
$a=$this->mysqli->query("UPDATE ventas SET direccion_alternativa='$direccion' WHERE id_venta='$idVenta';");
if($a){$paso["paso"]="paso";} return json_encode($paso);}


public function agregarMovimiento($idVenta,$movimiento,$anterior,$actual,$idpr){$paso["paso"]="no paso";
$a=$this->mysqli->query("INSERT movimientoVenta(movimiento,anterior,actual,idpr,idVenta) VALUES('$movimiento','$anterior','$actual','$idpr','$idVenta');");    
if($a){$paso["paso"]="paso";} return json_encode($paso);  }

public function movimientoAccion($movimiento,$anterior,$actual,$idpr,$venta){ $v=json_decode($venta);for($i=0;$i<sizeof($v);$i++){
if($idpr==$v[$i]["idpr"]){ $arrayAuc= array('movimiento'=>$movimiento,'anterior'=>$anterior,'actual'=>$actual);
$aux=$v[$i]; if(isset($aux["movimientos"])){$aux22[sizeof($aux["movimientos"])]=$arrayAuc;}else{$aux22[0]=$arrayAuc;}
$aux["movimientos"]=$aux22;  $v[$i]=$aux; }} return json_encode($v); }




public function agregarTransportadora($campos,$idEmpresa){$c=json_decode($campos,true); $paso["paso"]="no paso";
$usuario["nombre"]=$c["nombre"]; $usuario["departamento"]=$c["departamento"]; $usuario["ciudad"]=$c["ciudad"];
$usuario["barrio"]=$c["zona"]; $usuario["adicional"]=$c["detalle"]; $usuario["direccion"]=$c["direccion"];
$correo=$c["correo"]; $usuarioRes=json_encode($usuario); $perfil='Transportador'; 
$password1=crypt("117",'$2a$07$asxx54ahjppf45sd87a5a4dDDGsystemdev$');
$a=$this->mysqli->query("SELECT id_usuario FROM usuarios WHERE email='$correo' OR  email_empresa='$correo';")->num_rows;
if($a!=0){$paso["paso"]="repetido";}else{
$bb=$this->mysqli->query("INSERT INTO usuarios(id_empresa,usuario, password, perfil, email) VALUES('$idEmpresa','$usuarioRes','$password1','$perfil','$correo');");
if($bb){$paso["paso"]="paso";}} return json_encode($paso); }


public function cambio_id_aux2($id,$idVenta,$transportadora,$lugar,$guia){ 
$gg=$this->mysqli->query("SELECT mensajeria FROM ventas WHERE id_venta='$idVenta'")->fetch_assoc(); $mens=json_decode($gg["mensajeria"],true);
if($mens["id_mensajero"]=="0" || $mens["id_mensajero"]=="0" || $mens["id_mensajero"]=="null"){$paso["paso"]="no tomado"; }else{
$hoy = date("Y-m-d H:i:s"); $paso["paso"]="no paso";
$estado=$this->mysqli->query("SELECT control_estado, mensajeria FROM ventas WHERE id_venta='$idVenta';")->fetch_assoc();
$json=json_decode($estado["control_estado"],true);  $json["despacho"]["salida"]=$hoy; $controlRes=json_encode($json);
$mens=json_decode($estado["mensajeria"],true);  $auto=$mens["auto"];  $auto["paqueteria"]=$transportadora; $auto["lugar"]=$lugar;
$auto["guia"]=$guia; $mens["auto"]=$auto; $mensaRes=json_encode($mens);
$pp=$this->mysqli->query("UPDATE ventas SET control_estado='$controlRes', mensajeria='$mensaRes' WHERE id_venta='$idVenta';");
if($pp){$paso["paso"]="paso";} } return json_encode($paso);}


public function cambio_id_aux($id,$control,$idVenta,$aux){ $hoy = date("Y-m-d H:i:s"); $paso["paso"]="no paso"; if($id!=0){$aux1=json_decode($aux,true);    
$auto["lat"]=strval($aux1["lat0"]); $auto["lon"]=strval($aux1["lon0"]); $auto["latAux"]=strval($aux1["lat1"]); $auto["lonAux"]=$aux1["lon1"]; $auto["salida"]=$hoy;
$auto["distancia"]=$aux1["distancia"]; $auto["tiempo"]=$aux1["tiempo"]; $auto["paqueteria"]=""; $auto["guia"]=""; 
$info=$this->mysqli->query("SELECT archivos, usuario FROM usuarios WHERE id_usuario=$id;")->fetch_assoc();
$foto=$this->oS($info["archivos"],"foto"); $nit=$this->oS($info["usuario"],"cedula"); $nombre=$this->oS($info["usuario"],"nombre"); }else{$foto="vacio"; $nit="vacio"; $nombre="vacio";}
$estado=$this->mysqli->query("SELECT control_estado, mensajeria FROM ventas WHERE id_venta='$idVenta'")->fetch_assoc(); $json=json_decode($estado["control_estado"],true); 
if($json[$control]["id"]!=0 && $id!=0){$paso["paso"]="ya tomado";}else{ $json[$control]["id"]=$id;
$mens=json_decode($estado["mensajeria"],true);  $mens["auto"]=$auto; $mens["tipoEntrega"]="general"; $mensajeroRespuesta=json_encode($mens);    
$json[$control]["entrada"]=$hoy; $json[$control]["foto"]=$foto; $json[$control]["nit"]=$nit; $json[$control]["nombre"]=$nombre;
$jsonRespuesta=json_encode($json); $a=$this->mysqli->query("UPDATE ventas SET control_estado='$jsonRespuesta', mensajeria='$mensajeroRespuesta' WHERE id_venta='$idVenta'");
if($a){$paso["paso"]="paso"; $paso["lista"]=$jsonRespuesta; }} return json_encode($paso);    }

public function cambioCajaGeneral($campos){$paso["paso"]="paso"; $hoy22 = date("Y-m-d H:i:s"); $cam=json_decode($campos,true); 
$idVenta=$cam["idVenta"]; $idCliente=$cam["idCliente"]; $aa=new ConsultaCliente(); $aa->auxRetornoSaldo($idVenta,$idCliente); 
$a=$this->mysqli->query("UPDATE ventas SET aux=JSON_SET(aux,'$.verificacionDireccion','no verificado','$.estadoTransaccion','verificado'), metodo_pago='caja', fecha='$hoy22' WHERE id_venta='$idVenta';");
if($a){$paso["paso"]="paso";} return json_encode($paso);}

public function cambioCaja($campos,$idEmpresa){$paso["paso"]="no paso"; $hoy22 = date("Y-m-d H:i:s"); $cam=json_decode($campos,true);
$idVenta=$cam["idVenta"]; $idCliente=$cam["idCliente"]; $pagoAhorita=$cam["pagoAhorita"]; $diasCredito=$cam["diasCredito"];
$vencimiento=date("Y-m-d H:i:s",strtotime(date("Y-m-d H:i:s")."+ ".$diasCredito." days")); $credito=json_encode(array('fecha'=>strval($vencimiento), 'dias'=>strval($diasCredito)));
$aa=new ConsultaCliente(); $aa->auxRetornoSaldo($idVenta,$idCliente);
$a=$this->mysqli->query("UPDATE ventas SET aux=JSON_SET(aux,'$.verificacionDireccion','no verificado','$.estadoTransaccion','no verificado'), metodo_pago='credito caja', credito='$credito', fecha='$hoy22' WHERE id_venta='$idVenta';");
if($a){ $pag1="INSERT INTO pagos(id_empresa,monto,id_venta,metodo_pago,codigo_abono,estado_pago,fecha)"; $cod1=$this->maximoPago($idEmpresa); 
$pag2=" VALUES('$idEmpresa','$pagoAhorita','$idVenta','caja','$cod1','verificado','$hoy22')"; $paso["paso"]="paso"; $this->mysqli->query($pag1.$pag2);}
return json_encode($paso); }

public function ingresoCajaCredito($campos,$idBodega,$idVendedor,$idEmpresa){$paso["paso"]="no paso"; $hoy = date("Y-m-d H:i:s");   
$cam=json_decode($campos,true); $idCliente=$cam["idCliente"]; $direccion=$cam["direccion"]; $control=$cam["tipo"]; $claveLocal=$cam["clave"];
$pagoAhorita=$cam["pagoAhorita"]; $metodoPago="credito caja"; $cl=$this->maximo($idEmpresa);  $diasCredito=$cam["diasCredito"];
$aux=json_encode(array('verificacionDireccion'=>"no verificado", 'estadoTransaccion'=>"verificado", "pausa"=>"0", "tipoPedido"=>$control));
$r2=new ConsultaCliente(); $r=$r2->pCarrito($idCliente,$control,$idVendedor); $venta=$r["venta"]; $tipo_venta_control=$r["tipo_venta_control"]; $total=$r["total"];
$vencimiento=date("Y-m-d H:i:s",strtotime(date("Y-m-d H:i:s")."+ ".$diasCredito." days")); $credito=json_encode(array('fecha'=>strval($vencimiento), 'dias'=>strval($diasCredito)));
if($r!=NULL){ $paso["clave_venta"]=$cl; 
$tta="INSERT INTO ventas(id_empresa,id_bodega,venta,id_usuario,tipo_venta_control,metodo_pago,direccion_alternativa,aux,clave_venta,total,fecha,clave_local) ";
$ttb="VALUES('$idEmpresa','$idBodega','$venta','$idCliente','$tipo_venta_control','$metodoPago','$direccion','$aux','$cl','$total','$hoy','$claveLocal');";
$plc=$this->mysqli->query($tta.$ttb); if($plc){$this->mysqli->query("DELETE FROM carrito WHERE id_usuario=$id_usuario AND estado='$control';");
$act=$this->mysqli->query("SELECT id_venta FROM ventas WHERE clave_venta='$cl' AND id_usuario='$id_usuario';")->fetch_assoc();
$cod1=$this->maximoPago($idEmpresa); $idVenta=$act["id_venta"];  $paso["paso"]="paso"; $llk=new ConsultaCliente();  $paso["info"]=$llk->restarCantidadCredito($total,$idCliente,"cero"); 
$pag1="INSERT INTO pagos(id_empresa,monto,id_venta,metodo_pago,codigo_abono,estado_pago,fecha)";
$pag2=" VALUES('$idEmpresa','$pagoAhorita','$idVenta','caja','$cod1','verificado','$hoy')"; $this->mysqli->query($pag1.$pag2);}}return json_encode($paso);}

public function maximoPago($idEmpresa){
$maximo = $this->mysqli->query("SELECT codigo_abono FROM pagos WHERE id_empresa='$idEmpresa' ORDER BY id_pago DESC LIMIT 0,1;")->fetch_assoc(); if($maximo["codigo_abono"]==NULL){$maximo1=0;}else{ $maximo1 = $maximo['codigo_abono'];}
$clAux = $maximo1 + 1; return $clAux; }
// -------------------------------------------------------------------------------------------------------------------------
// -------------------------------------------------------------------------------------------------------------------------
// -------------------------------------------------------------------------------------------------------------------------
// -------------------------------------------------------------------------------------------------------------------------
// -------------------------------------------------------------------------------------------------------------------------

public function todosRastreo($idBodega){}


public function rastreoPedido($pagina,$busqueda,$ancho22,$idBodega){ $limite=($pagina-1)*$ancho22; $paso["paso"]="no paso";
if($busqueda!=""){
$c="SELECT ventas.*, JSON_UNQUOTE(JSON_EXTRACT(usuarios.usuario,'$.nombre')) AS nombreCliente FROM ventas RIGHT JOIN usuarios ON usuarios.id_usuario=ventas.id_usuario WHERE JSON_UNQUOTE(JSON_EXTRACT(ventas.anulacion,'$.motivo'))='null'  AND (ventas.id_venta LIKE '%$busqueda%' OR ventas.clave_venta LIKE '%$busqueda%' OR JSON_UNQUOTE(JSON_EXTRACT(usuarios.usuario,'$.nombre')) LIKE '%$busqueda%') AND ventas.estado='enviados' AND ventas.tipo_venta_control < 6 AND ventas.id_bodega='$idBodega' ORDER BY ventas.fecha DESC LIMIT $limite,$ancho22;";    
}else{$c="SELECT * FROM ventas WHERE estado='enviados' AND tipo_venta_control < 6 AND id_bodega='$idBodega'  ORDER BY fecha DESC LIMIT $limite,$ancho22";}  $a=$this->mysqli->query($c); 
if($a->num_rows!=0){while($fila=$a->fetch_assoc()){$aA[]=$fila;} $paso["paso"]="paso"; $paso["lista"]=$this->auxProCliPag($aA); }
return json_encode($paso);}

public function filtroRastreoPedido($filtros,$pagina,$ancho){ $limite=($pagina-1)*$ancho; $paso["paso"]="no paso"; $filtro=""; $f=json_decode($filtros,true);    
if($f[0]){$filtro.="estado='verificacion' OR ";} if($f[1]){$filtro.="estado='picking' OR ";} 
if($f[2]){$filtro.="estado='packing' OR ";} if($f[3]){$filtro.="estado='facturacion' OR ";} 
if($f[4]){$filtro.="estado='despacho' OR ";} if($f[5]){$filtro.="estado='enviados' OR ";} 
if($f[6]){$filtro.="(estado='enviados' AND JSON_UNQUOTE(JSON_EXTRACT(ventas.mensajeria,'$.estado_mensajero'))='entregado') OR ";} 
$filtro=substr($filtro,0,(strlen($filtro)-4));$con="SELECT * FROM ventas WHERE ".$filtro." ORDER BY fecha DESC LIMIT $limite,$ancho;"; $a=$this->mysqli->query($con);
if($a->num_rows!=0){while($fila=$a->fetch_assoc()){$aA[]=$fila;} $paso["paso"]="paso"; $paso["cantidad"]=$this->mysqli->query("SELECT id_venta FROM ventas WHERE ".$filtro)->num_rows;  $paso["lista"]=$this->auxProCliPag($aA);}
return json_encode($paso);}
// ---------------------------------------------------------------------------------------------------------------
// ---------------------------------------------------------------------------------------------------------------
// ---------------------------------------------------------------------------------------------------------------
// ---------------------------------------------------------------------------------------------------------------
// ---------------------------------------------------------------------------------------------------------------
// ---------------------------------------------------------------------------------------------------------------
// ---------------------------------------------------------------------------------------------------------------
// ---------------------------------------------------------------------------------------------------------------
// ---------------------------------------------------------------------------------------------------------------
// ---------------------------------------------------------------------------------------------------------------
function limpiarDato($valor) {
$valor = str_replace(array("'", "\"", ";", "--", "/*", "*/","OR","AND","SELECT","UPDATE","INNER","JOIN","OR","NOR"), "", $valor);
return $valor; }
// ------------------------------------------------------------------------------------------------------------------------------
// ------------------------------------------------------------------------------------------------------------------------------
public function actualizarImagenAccion($campo){$c=json_decode($campo,true); $lista=$c["lista"]; $id=$c["id"]; $paso["paso"]="no paso";
$imagenRespaldo="dependencias/img/general/imagen_base_productos.png";
for($i=0;$i<sizeof($lista);$i++){ if($lista[$i]["base64"]=="vacio"){$respuesta[$i]=$lista[$i]["archivo"];}else{
$aux=imagenAdic11($lista[$i]["base64"],"documentos","png","img_pro"); if($aux==NULL){$respuesta[$i]=$imagenRespaldo;}else{
$respuesta[$i]=$aux;}}} $respuesta=json_encode($respuesta);
$aty=$this->mysqli->query("UPDATE productos SET imagenArray='$respuesta' WHERE id='$id';");
if($aty){$paso["paso"]="paso"; $paso["info"]=$respuesta;} return json_encode($paso);}




// public function actDocumentosArray($campos){ $imagenRespaldo="dependencias/img/general/imagen_base_productos.png"; $paso["paso"]="no paso";
// $cam=json_decode($campos,true); $lista=json_decode($cam["lista"],true); $documento=$cam["documento"]; $idCliente=$cam["idCliente"];
// for($i=0; $i <sizeof($lista); $i++) { $res[$i]=imagenAdic11($lista[$i]["base64"],"documentos",$lista[$i]["ext"],$documento); if($res[$i]==NULL){$res[$i]=$imagenRespaldo;}
// $lista[$i]["archivo"]=$res[$i]; $lista[$i]["base64"]="vacio"; } $paso["paso"]="no paso";
// $aa=$this->actDocConto(json_encode($lista),$documento,$idCliente); if($aa!=NULL){$paso["paso"]="paso"; $paso["lista"]=$aa;} return json_encode($paso);}

// ------------------------------------------------------------------------------------------------------------------------------
// ------------------------------------------------------------------------------------------------------------------------------
// ------------------------------------------------------------------------------------------------------------------------------
// ------------------------------------------------------------------------------------------------------------------------------
// ------------------------------------------------------------------------------------------------------------------------------
// ------------------------------------------------------------------------------------------------------------------------------
// ------------------------------------------------------------------------------------------------------------------------------
public function ventaIdNormal($idVenta){$paso["paso"]="no paso"; $a=$this->mysqli->query("SELECT * FROM ventas WHERE id_venta='$idVenta';"); 
if($a->num_rows!=0){$paso["info"]=$a->fetch_assoc(); $paso["paso"]="paso";} return json_encode($paso);   }
// ---------------------------------------------------------------------------------------------------------------
public function procesoAbonoAA($idPago,$tipo,$motivo,$id){
if($tipo=="cancelar"){$anulacion=json_encode(array('motivo'=>$motivo,'id'=>$id)); 
$a=$this->mysqli->query("UPDATE pagos SET anulacion='$anulacion',estado_pago='anulado' WHERE id_pago='$idPago';");
if($a){$paso["paso"]="paso";}}else{ $a=$this->mysqli->query("UPDATE SET estado_pago='verificado' WHERE id_pago='$idPago';");
if($a){$paso["paso"]="paso";} }return json_encode($paso);}

public function consultaAbonosAA($pagina,$anchoAux,$busqueda,$idEmpresa){$ancho=$anchoAux; $limite=$ancho*$pagina; $paso["paso"]="no paso";
$base="SELECT pagos.*, ventas.venta, ventas.clave_venta, ventas.estado, ventas.metodo_pago AS metodoVenta, ventas.direccion_alternativa, ventas.mensajeria, ventas.credito, usuarios.perfil, usuarios.email, usuarios.tipo_cliente, usuarios.usuario, usuarios.archivos AS arcusu FROM pagos LEFT JOIN ventas ON ventas.id_venta = pagos.id_venta LEFT JOIN usuarios ON usuarios.id_usuario = ventas.id_usuario ";    
$base1="ORDER BY pagos.fecha DESC LIMIT $limite,$ancho;"; $base2=" WHERE id_empresa='$idEmpresa' ";
if($busqueda!=""){ $base2=" WHERE id_empresa='$idEmpresa' AND (ventas.clave_venta='$busqueda' OR JSON_UNQUOTE(JSON_EXTRACT(usuarios.usuario,'$.nombre')) LIKE '%$busqueda%') ";}
$consulta=$base.$base2.$base1; $a=$this->mysqli->query($consulta);
if($a->num_rows!=0){while($aa=$a->fetch_assoc()){$res[]=$aa;} $paso["paso"]="paso"; $paso["lista"]=$res;}
return json_encode($paso);}

// estadoDevolucion=activo    estadoDevolucionActual="regreso" "devuelto" "saldo"
// motivoDevolucion   estado="devuelto" motivoDevolucionCancelado
public function procesoDevolucion($idVenta,$idpr,$tipo,$saldoa,$motivo,$id){$paso["paso"]="no paso";
$a=$this->mysqli->query("SELECT aux, venta, id_usuario FROM ventas WHERE id_venta='$idVenta';"); if($a->num_rows!=0){ $aa=$a->fetch_assoc();
$aux=json_decode($aa["aux"],true); $venta=json_decode($aa["venta"],true); $idCliente=$aa["id_usuario"];
if($this->verificarDevolucion($idpr,$venta,$aux)=="desactivado"){$paso["paso"]="cancelado";}else{
if($idpr=="0"){if($aux["estadoDevolucionActual"]=="saldo"){$paso["paso"]="retornado";}else{
if($tipo=="cancelar"){$aux["motivoDevolucionCancelado"]=$motivo; $aux["estadoDevolucionActual"]="cancelado"; $aux["idDevolucionCancelado"]=$id;}else{
if($aux["estadoDevolucionActual"]=="regreso"){$aux["estadoDevolucionActual"]="devuelto";}else{ if($aux["estadoDevolucionActual"]=="devuelto"){$aux["estadoDevolucionActual"]="saldo";}}}
if($aux["estadoDevolucionActual"]=="saldo"){ $us=$this->mysqli->query("SELECT saldoafavor FROM usuarios WHERE id_usuario='$idCliente';")->fetch_assoc(); 
$saldoafavor=$us["saldoafavor"]; if($saldoafavor=="0"){$aazz=json_encode(array('credito'=>0, 'efectivo'=>$saldoa));}else{ 
$aazz=json_decode($saldoafavor,true); $aazz["efectivo"]=$aazz["efectivo"]+$saldoa; $aazz=json_encode($aazz);}
$aux1=json_encode($aux); $paso["lista"]=$aux1; $this->mysqli->query("UPDATE ventas SET aux='$aux1' WHERE id_venta='$idVenta';");
$this->mysqli->query("UPDATE usuarios SET saldoafavor='$aazz' WHERE id_usuario='$idCliente';");
}else{$aux1=json_encode($aux); $paso["lista"]=$aux1; $this->mysqli->query("UPDATE ventas SET aux='$aux1' WHERE id_venta='$idVenta';"); } $paso["paso"]="paso";} 
}else{ $estadoActualAux="vacio";
for($i=0;$i<sizeof($venta);$i++){if($idpr==$venta[$i]["idpr"]){if($venta[$i]["estadoDevolucionActual"]=="saldo"){$paso["paso"]="retornado";}else{
if($tipo=="cancelar"){$venta[$i]["motivoDevolucionCancelado"]=$motivo; $venta[$i]["estadoDevolucionActual"]="cancelado"; $aux["idDevolucionCancelado"]=$id; }else{
if($venta[$i]["estadoDevolucionActual"]=="regreso"){$venta[$i]["estadoDevolucionActual"]="devuelto";}else{ if($venta[$i]["estadoDevolucionActual"]=="devuelto"){$venta[$i]["estadoDevolucionActual"]="saldo";}}
$estadoActualAux=$venta[$i]["estadoDevolucionActual"]; }}}} $venta1=json_encode($venta);
if($paso["paso"]!="retornado"){ $paso["lista"]=$venta1; if($estadoActualAux=="saldo"){
$us=$this->mysqli->query("SELECT saldoafavor FROM usuarios WHERE id_usuario='$idCliente';")->fetch_assoc(); 
$saldoafavor=$us["saldoafavor"]; if($saldoafavor=="0"){$aazz=json_encode(array('credito'=>0, 'efectivo'=>$saldoa));}else{ 
$aazz=json_decode($saldoafavor,true); $aazz["efectivo"]=$aazz["efectivo"]+$saldoa; $aazz=json_encode($aazz);}
$this->mysqli->query("UPDATE ventas SET venta='$venta1' WHERE id_venta='$idVenta';");
$this->mysqli->query("UPDATE usuarios SET saldoafavor='$aazz' WHERE id_usuario='$idCliente';");
}else{ $this->mysqli->query("UPDATE ventas SET venta='$venta1' WHERE id_venta='$idVenta';");}
$paso["paso"]="paso";}}}} return json_encode($paso);}


public function verificarDevolucion($idpr,$venta,$aux){$paso="desactivado";if($idpr=="0"){if(isset($aux["estadoDevolucion"])){
if($aux["estadoDevolucion"]!="desactivado"){$paso="activado";}}else{$paso="activado";}  }else{
for($i=0;$i<sizeof($venta);$i++){ if($venta[$i]["idpr"]==$idpr){ if(isset($venta[$i]["estadoDevolucion"])){
if($venta[$i]["estadoDevolucion"]!="desactivado"){$paso="activado";}}else{$paso="activado";}}}}    return $paso;}
// ---------------------------------------------------------------------------------------------------------------
// ---------------------------------------------------------------------------------------------------------------
// ---------------------------------------------------------------------------------------------------------------
// ---------------------------------------------------------------------------------------------------------------
public function ingresoCajaSaldo($campos,$idBodega,$idVendedor,$idEmpresa){ $paso["paso"]="no paso"; $hoy = date("Y-m-d H:i:s");
$cam=json_decode($campos,true); $cl=$this->maximo($idEmpresa);  $indexDireccion=0; $dir=$cam["direccion"]; $id_usuario=$cam["idCliente"]; $control=$cam["tipo"]; $claveLocal=$cam["clave"]; $resta=$cam["resta"];
$aux=json_encode(array('verificacionDireccion'=>"verificado", 'estadoTransaccion'=>"verificado", "pausa"=>"0", "tipoPedido"=>$control));
$metodo_pago="caja"; $r2=new ConsultaCliente(); $r=$r2->pCarrito($id_usuario,$control,$idVendedor);
$venta=$r["venta"]; $tipo_venta_control=$r["tipo_venta_control"]; $total=$r["total"]; if($r!=NULL){ $paso["clave_venta"]=$cl;    
$con1122="INSERT INTO ventas(id_empresa,venta,id_usuario,tipo_venta_control,metodo_pago,direccion_alternativa,aux,clave_venta,total,clave_local,fecha,saldo) ";
$con2222="VALUES('$idEmpresa','$venta','$id_usuario','$tipo_venta_control','caja saldoafavor','$dir','$aux','$cl','$total','$claveLocal','$hoy','$resta');";
$plc=$this->mysqli->query($con1122.$con2222);  if($plc){ $ttpo=new ConsultaCliente(); $ttpo->saldoRestaActualizar($id_usuario,0);  
$res1=$this->mysqli->query("DELETE FROM carrito WHERE id_usuario=$id_usuario AND estado='$control';");}
if($plc){$paso["paso"]="paso";}} return json_encode($paso); }

public function saldoRegresar($id){$paso["paso"]="no paso";
$a=$this->mysqli->query("SELECT saldoafavor FROM usuarios WHERE id_usuario='$id';");
if($a->num_rows!=0){$a=$a->fetch_assoc(); $saldo=$a["saldoafavor"]; if($saldo!="0" && $saldo!="null"){
$json=json_decode($saldo,true); $json["efectivo"]="0"; $jsonRes=json_encode($json);
$rrg=$this->mysqli->query("UPDATE usuarios SET saldoafavor='$jsonRes' WHERE id_usuario='$id';");if($rrg){$paso["paso"]="paso";} }}
return json_encode($paso);}




public function saldoafavor($idVenta,$idCliente){
$v=$this->mysqli->query("SELECT venta, metodo_pago FROM ventas WHERE id_venta='$idVenta';");
if($v->num_rows!=0){ $ve=$v->fetch_assoc();  $venta=json_decode($ve["venta"],true); $total=0;  $total22=0;
for($i=0;$i<sizeof($venta);$i++){ $total22=$total22+($venta[$i]["rel"]*$venta[$i]["costo"]);
$total=$total+(($venta[$i]["cant"]-$venta[$i]["rel"])*$venta[$i]["costo"]); }  
$us=$this->mysqli->query("SELECT saldoafavor FROM usuarios WHERE id_usuario='$idCliente';")->fetch_assoc(); 
$saldoafavor=$us["saldoafavor"]; if(strpos(trim($ve["metodo_pago"]), "credito") !== false) {$credito=true;}else{$credito=false;}
if($saldoafavor=="0"){ if($credito){$aazz=json_encode(array('credito'=>$total, 'efectivo'=>0));}else{$aazz=json_encode(array('credito'=>0, 'efectivo'=>$total));}
}else{$aazz=json_decode($saldoafavor,true); if($credito){$aazz["credito"]=$aazz["credito"]+$total;}else{$aazz["efectivo"]=$aazz["efectivo"]+$total;} $aazz=json_encode($aazz);} 
$this->mysqli->query("UPDATE usuarios SET saldoafavor='$aazz' WHERE id_usuario='$idCliente';"); return $total22; }else{return 0;}}
// ---------------------------------------------------------------------------------------------------------------
// ---------------------------------------------------------------------------------------------------------------
// ---------------------------------------------------------------------------------------------------------------
// ---------------------------------------------------------------------------------------------------------------
// ---------------------------------------------------------------------------------------------------------------
public function historial_traslado_general($id,$pagina){ $ancho=5; $limite=$ancho*$pagina; $paso["paso"]="no paso";
$a=$this->mysqli->query("SELECT * FROM ventas WHERE estado='terminado' AND id_bodeguero='$id' ORDER BY fecha DESC LIMIT $limite,$ancho;");
if($a->num_row!=0){$paso["paso"]="paso"; while($fila=$a->fetch_assoc()){$aA[]=$fila;} $paso["lista"]=$this->auxProCliPag($aA); }
return json_encode($paso); }

public function venta_tipo_despacho($tipo,$estado,$idEmpresa){$paso["paso"]="no paso";
if($tipo==7){ $cV="SELECT * FROM ventas WHERE JSON_EXTRACT(anulacion, '$.motivo')='null' AND estado='$estado' AND id_empresa='$idEmpresa' ORDER BY fecha DESC;";
}else{ if($tipo==8){$cV="SELECT * FROM ventas WHERE JSON_EXTRACT(anulacion, '$.motivo')!='null' AND id_empresa='$idEmpresa' ORDER BY fecha DESC;";}else{
$cV="SELECT * FROM ventas WHERE JSON_EXTRACT(anulacion, '$.motivo')='null' AND tipo_venta_control=$tipo AND estado='$estado' AND id_empresa='$idEmpresa' ORDER BY fecha DESC;";}}	
$cvr=$this->mysqli->query($cV); if($cvr->num_rows !=0){while($fila = $cvr->fetch_assoc()){$a[] = $fila;} 
$paso["paso"]="paso"; $paso["lista"]=$this->auxProCliPag($a);} return json_encode($paso);}

public function busqueda_general_despacho($busqueda,$estado,$tipo){ $paso["paso"]="no paso";
if($tipo==12){$cV="SELECT *, JSON_UNQUOTE(JSON_EXTRACT(usuarios.usuario,'$.nombre')) AS nombreCliente FROM ventas RIGHT JOIN usuarios ON usuarios.id_usuario=ventas.id_usuarios WHERE (ventas.clave_venta='$busqueda' OR JSON_UNQUOTE(JSON_EXTRACT(usuarios.usuario,'$.nombre')) LIKE '%$busqueda%') AND (aux LIKE '%\"estadoDevolucion\":\"activo\"%' OR (venta LIKE '%\"estadoDevolucion\":\"activo\"%')) ORDER BY ventas.fecha DESC LIMIT 0,100;";}else{
if($tipo==7){$cV="SELECT *, JSON_UNQUOTE(JSON_EXTRACT(usuarios.usuario,'$.nombre')) AS nombreCliente FROM ventas RIGHT JOIN usuarios ON usuarios.id_usuario=ventas.id_usuario WHERE JSON_EXTRACT(ventas.anulacion,'$.motivo')='null' AND ventas.estado='$estado' AND (ventas.clave_venta='$busqueda' OR JSON_UNQUOTE(JSON_EXTRACT(usuarios.usuario,'$.nombre')) LIKE '%$busqueda%') ORDER BY ventas.fecha DESC LIMIT 0,100;";}else{
if($tipo==8){$cV="SELECT *, JSON_UNQUOTE(JSON_EXTRACT(usuarios.usuario,'$.nombre')) AS nombreCliente FROM ventas RIGHT JOIN usuarios ON usuarios.id_usuario=ventas.id_usuario WHERE JSON_EXTRACT(ventas.anulacion,'$.motivo')!='null' AND (ventas.clave_venta='$busqueda' OR JSON_UNQUOTE(JSON_EXTRACT(usuarios.usuario,'$.nombre')) LIKE '%$busqueda%') ORDER BY ventas.fecha DESC LIMIT 0,100;";}else{
if($estado=="enviados"){$cV="SELECT *, JSON_UNQUOTE(JSON_EXTRACT(usuarios.usuario,'$.nombre')) AS nombreCliente FROM ventas RIGHT JOIN usuarios ON usuarios.id_usuario=ventas.id_usuario WHERE JSON_UNQUOTE(JSON_EXTRACT(ventas.anulacion,'$.motivo'))='null' AND ventas.tipo_venta_control=$tipo AND JSON_UNQUOTE(JSON_EXTRACT(mensajeria,'$.estado_mensajero'))!='entregado' AND ventas.estado='enviados' AND (ventas.clave_venta='$busqueda' OR JSON_UNQUOTE(JSON_EXTRACT(usuarios.usuario,'$.nombre')) LIKE '%$busqueda%') ORDER BY ventas.fecha DESC LIMIT 0,100;";}else{
if($estado=="entregado"){$cV="SELECT *, JSON_UNQUOTE(JSON_EXTRACT(usuarios.usuario,'$.nombre')) AS nombreCliente FROM ventas RIGHT JOIN usuarios ON usuarios.id_usuario=ventas.id_usuario WHERE JSON_UNQUOTE(JSON_EXTRACT(ventas.anulacion,'$.motivo'))='null' AND ventas.tipo_venta_control=$tipo AND JSON_UNQUOTE(JSON_EXTRACT(mensajeria,'$.estado_mensajero'))='entregado' AND ventas.estado='enviados' AND (ventas.clave_venta='$busqueda' OR JSON_UNQUOTE(JSON_EXTRACT(usuarios.usuario,'$.nombre')) LIKE '%$busqueda%') ORDER BY ventas.fecha DESC LIMIT 0,100;";}else{
if($estado=="todosGeneral"){$cV="SELECT *, JSON_UNQUOTE(JSON_EXTRACT(usuarios.usuario,'$.nombre')) AS nombreCliente FROM ventas RIGHT JOIN usuarios ON usuarios.id_usuario=ventas.id_usuario WHERE JSON_UNQUOTE(JSON_EXTRACT(ventas.anulacion,'$.motivo'))='null' AND ventas.estado='$estado' AND (ventas.clave_venta= '$busqueda' OR JSON_UNQUOTE(JSON_EXTRACT(usuarios.usuario,'$.nombre')) LIKE '%$busqueda%') ORDER BY ventas.fecha DESC LIMIT 0,100;";}else{
if($tipo==0){
$cV="SELECT *, JSON_UNQUOTE(JSON_EXTRACT(usuarios.usuario,'$.nombre')) AS nombreCliente FROM ventas RIGHT JOIN usuarios ON usuarios.id_usuario=ventas.id_usuario WHERE JSON_UNQUOTE(JSON_EXTRACT(ventas.anulacion,'$.motivo'))='null' AND (ventas.tipo_venta_control=0 OR ventas.tipo_venta_control=5) AND ventas.estado='$estado' AND (ventas.clave_venta= '$busqueda' OR JSON_UNQUOTE(JSON_EXTRACT(usuarios.usuario,'$.nombre')) LIKE '%$busqueda%' OR JSON_UNQUOTE(JSON_EXTRACT(usuarios.usuario,'$.apellido')) LIKE '%$busqueda%' OR JSON_UNQUOTE(JSON_EXTRACT(usuarios.usuario,'$.departamento')) LIKE '%$busqueda%' OR JSON_UNQUOTE(JSON_EXTRACT(usuarios.usuario,'$.cedula')) LIKE '%$busqueda%') ORDER BY ventas.fecha DESC LIMIT 0,100;";
}else{
$cV="SELECT *, JSON_UNQUOTE(JSON_EXTRACT(usuarios.usuario,'$.nombre')) AS nombreCliente FROM ventas RIGHT JOIN usuarios ON usuarios.id_usuario=ventas.id_usuario WHERE JSON_UNQUOTE(JSON_EXTRACT(ventas.anulacion,'$.motivo'))='null' AND ventas.tipo_venta_control=$tipo AND ventas.estado='$estado' AND (ventas.clave_venta= '$busqueda' OR JSON_UNQUOTE(JSON_EXTRACT(usuarios.usuario,'$.nombre')) LIKE '%$busqueda%' OR JSON_UNQUOTE(JSON_EXTRACT(usuarios.usuario,'$.apellido')) LIKE '%$busqueda%' OR JSON_UNQUOTE(JSON_EXTRACT(usuarios.usuario,'$.departamento')) LIKE '%$busqueda%' OR JSON_UNQUOTE(JSON_EXTRACT(usuarios.usuario,'$.cedula')) LIKE '%$busqueda%') ORDER BY ventas.fecha DESC LIMIT 0,100;";
}

//$cV="SELECT *, JSON_UNQUOTE(JSON_EXTRACT(usuarios.usuario,'$.nombre')) AS nombreCliente FROM ventas RIGHT JOIN usuarios ON usuarios.id_usuario=ventas.id_usuario WHERE JSON_UNQUOTE(JSON_EXTRACT(ventas.anulacion,'$.motivo'))='null' AND ventas.tipo_venta_control=$tipo AND ventas.estado='$estado' AND (ventas.clave_venta= '$busqueda' OR JSON_UNQUOTE(JSON_EXTRACT(usuarios.usuario,'$.nombre')) LIKE '%$busqueda%') ORDER BY ventas.fecha DESC LIMIT 0,100;";

}}}}}   } 
$cvr=$this->mysqli->query($cV); if($cvr->num_rows !=0){while($fila = $cvr->fetch_assoc()){$a[] = $fila;} 
$paso["paso"]="paso"; $paso["lista"]=$this->auxProCliPag($a);} return json_encode($paso);}



public function venta_tipo_despacho_limite($tipo,$estado,$pagina,$idBodega,$busqueda){  $ancho=5; $limite=$ancho*$pagina; $paso["paso"]="no paso";
if($busqueda!=""){$com ="SELECT ventas.* FROM ventas RIGHT JOIN usuarios ON usuarios.id_usuario=ventas.id_usuario WHERE ";   
$baBus=" AND (ventas.metodo_pago LIKE '%$busqueda%' OR  ventas.clave_venta LIKE '%$busqueda%' OR JSON_UNQUOTE(JSON_EXTRACT(usuarios.usuario,'$.nombre')) LIKE '%$busqueda%' OR JSON_UNQUOTE(JSON_EXTRACT(usuarios.usuario,'$.apellido')) LIKE '%$busqueda%' OR JSON_UNQUOTE(JSON_EXTRACT(usuarios.usuario,'$.departamento')) LIKE '%$busqueda%' OR JSON_UNQUOTE(JSON_EXTRACT(usuarios.usuario,'$.cedula')) LIKE '%$busqueda%') ORDER BY ventas.fecha DESC LIMIT 0,100; ";    
if($tipo==12){$cV=$com." ventas.id_bodega='$idBodega' AND (ventas.aux LIKE '%\"estadoDevolucion\":\"activo\"%' OR (venta LIKE '%\"estadoDevolucion\":\"activo\"%')) ".$baBus; }else{
if($tipo==7){ $cV=$com." AND JSON_EXTRACT(ventas.anulacion, '$.motivo')='null' AND ventas.estado='$estado' ".$baBus;  }else{
if($tipo==8){$cV=$com." ventasid_bodega='$idBodega' AND JSON_EXTRACT(ventas.anulacion, '$.motivo')!='null' ".$baBus; }else{
if($estado=="enviados"){$cV=$com." ventas.id_bodega='$idBodega' AND JSON_UNQUOTE(JSON_EXTRACT(ventas.anulacion,'$.motivo'))='null' AND ventas.tipo_venta_control=$tipo AND JSON_UNQUOTE(JSON_EXTRACT(ventas.mensajeria,'$.estado_mensajero'))!='entregado' AND ventas.estado='enviados' ".$baBus;}else{
if($estado=="entregado"){$cV=$com."  ventas.id_bodega='$idBodega' AND JSON_UNQUOTE(JSON_EXTRACT(ventas.anulacion,'$.motivo'))='null' AND ventas.tipo_venta_control=$tipo AND JSON_UNQUOTE(JSON_EXTRACT(ventas.mensajeria,'$.estado_mensajero'))='entregado' AND ventas.estado='enviados' ".$baBus; }else{
if($tipo==0){
$cV=$com." ventas.id_bodega='$idBodega' AND JSON_EXTRACT(ventas.anulacion, '$.motivo')='null' AND (ventas.tipo_venta_control=0 OR ventas.tipo_venta_control=5) AND ventas.estado='$estado' ".$baBus;    
}else{ $cV=$com." ventas.id_bodega='$idBodega' AND JSON_EXTRACT(ventas.anulacion, '$.motivo')='null' AND ventas.tipo_venta_control=$tipo AND ventas.estado='$estado' ".$baBus;}    
}}}}}}else{    
if($tipo==12){$cV="SELECT * FROM ventas WHERE id_bodega='$idBodega' AND (aux LIKE '%\"estadoDevolucion\":\"activo\"%' OR (venta LIKE '%\"estadoDevolucion\":\"activo\"%')) ORDER BY fecha DESC LIMIT $limite,$ancho;";}else{
if($tipo==7){ $cV="SELECT * FROM ventas WHERE id_bodega='$idBodega' AND  JSON_EXTRACT(anulacion, '$.motivo')='null' AND estado='$estado' ORDER BY fecha DESC LIMIT $limite,$ancho;";
}else{ if($tipo==8){$cV="SELECT * FROM ventas WHERE id_bodega='$idBodega' AND JSON_EXTRACT(anulacion, '$.motivo')!='null' ORDER BY fecha DESC LIMIT $limite,$ancho;";}else{
if($estado=="enviados"){$cV="SELECT * FROM ventas WHERE  id_bodega='$idBodega' AND JSON_UNQUOTE(JSON_EXTRACT(anulacion,'$.motivo'))='null' AND tipo_venta_control=$tipo AND JSON_UNQUOTE(JSON_EXTRACT(mensajeria,'$.estado_mensajero'))!='entregado' AND estado='enviados' ORDER BY fecha DESC LIMIT $limite,$ancho;";}else{
if($estado=="entregado"){$cV="SELECT * FROM ventas WHERE  id_bodega='$idBodega' AND JSON_UNQUOTE(JSON_EXTRACT(anulacion,'$.motivo'))='null' AND tipo_venta_control=$tipo AND JSON_UNQUOTE(JSON_EXTRACT(mensajeria,'$.estado_mensajero'))='entregado' AND estado='enviados' ORDER BY fecha DESC LIMIT $limite,$ancho;";}else{
if($tipo==0){
$cV="SELECT * FROM ventas WHERE id_bodega='$idBodega' AND JSON_EXTRACT(anulacion, '$.motivo')='null' AND (tipo_venta_control=0 OR tipo_venta_control=5) AND estado='$estado' ORDER BY fecha DESC LIMIT $limite,$ancho;";
}else{
$cV="SELECT * FROM ventas WHERE id_bodega='$idBodega' AND JSON_EXTRACT(anulacion, '$.motivo')='null' AND tipo_venta_control=$tipo AND estado='$estado' ORDER BY fecha DESC LIMIT $limite,$ancho;";
}}}}}}}	$cvr=$this->mysqli->query($cV); if($cvr->num_rows !=0){while($fila = $cvr->fetch_assoc()){$a[] = $fila;} 
$paso["paso"]="paso"; $paso["lista"]=$this->auxProCliPag($a);} return json_encode($paso);}

//public function venta_tipo_despacho_limite($tipo,$estado,$pagina,$idBodega,$busqueda){  $ancho=5; $limite=$ancho*$pagina; $paso["paso"]="no paso";
//if($tipo==12){$cV="SELECT * FROM ventas WHERE id_bodega='$idBodega' AND (aux LIKE '%\"estadoDevolucion\":\"activo\"%' OR (venta LIKE '%\"estadoDevolucion\":\"activo\"%')) ORDER BY fecha DESC LIMIT $limite,$ancho;";}else{
//if($tipo==7){ $cV="SELECT * FROM ventas WHERE id_bodega='$idBodega' AND JSON_EXTRACT(anulacion, '$.motivo')='null' AND estado='$estado' ORDER BY fecha DESC LIMIT $limite,$ancho;";
//}else{ if($tipo==8){$cV="SELECT * FROM ventas id_bodega='$idBodega' AND WHERE JSON_EXTRACT(anulacion, '$.motivo')!='null' ORDER BY fecha DESC LIMIT $limite,$ancho;";}else{
//if($estado=="enviados"){$cV="SELECT * FROM ventas WHERE id_bodega='$idBodega' AND JSON_UNQUOTE(JSON_EXTRACT(anulacion,'$.motivo'))='null' AND tipo_venta_control=$tipo AND JSON_UNQUOTE(JSON_EXTRACT(mensajeria,'$.estado_mensajero'))!='entregado' AND estado='enviados' ORDER BY fecha DESC LIMIT $limite,$ancho;";}else{
//if($estado=="entregado"){$cV="SELECT * FROM ventas WHERE id_bodega='$idBodega' AND JSON_UNQUOTE(JSON_EXTRACT(anulacion,'$.motivo'))='null' AND tipo_venta_control=$tipo AND JSON_UNQUOTE(JSON_EXTRACT(mensajeria,'$.estado_mensajero'))='entregado' AND estado='enviados' ORDER BY fecha DESC LIMIT $limite,$ancho;";}else{
//if($tipo==0){
//$cV="SELECT * FROM ventas WHERE id_bodega='$idBodega' AND JSON_EXTRACT(anulacion, '$.motivo')='null' AND (tipo_venta_control=0 OR tipo_venta_control=5) AND estado='$estado' ORDER BY fecha DESC LIMIT $limite,$ancho;";
//}else{
//$cV="SELECT * FROM ventas WHERE id_bodega='$idBodega' AND JSON_EXTRACT(anulacion, '$.motivo')='null' AND tipo_venta_control=$tipo AND estado='$estado' ORDER BY fecha DESC LIMIT $limite,$ancho;";
//}

//$cV="SELECT * FROM ventas WHERE JSON_EXTRACT(anulacion, '$.motivo')='null' AND tipo_venta_control=$tipo AND estado='$estado' ORDER BY fecha DESC LIMIT $limite,$ancho;";

//}}}}}	
//$cvr=$this->mysqli->query($cV); if($cvr->num_rows !=0){while($fila = $cvr->fetch_assoc()){$a[] = $fila;} 
//$paso["paso"]="paso"; $paso["lista"]=$this->auxProCliPag($a);} return json_encode($paso);}

//public function venta_tipo_traslado_aux($pagina,$control,$tipoVentaControl){  $ancho=5; $limite=$ancho*$pagina; $paso["paso"]="no paso";
//$cV="SELECT * FROM ventas WHERE tipo_venta_control='$tipoVentaControl' AND estado='$control' ORDER BY fecha DESC LIMIT $limite,$ancho;";
//$cvr=$this->mysqli->query($cV); if($cvr->num_rows !=0){while($fila = $cvr->fetch_assoc()){$a[] = $fila;} 
//$paso["paso"]="paso"; $paso["lista"]=$this->auxProCliPag($a);} return json_encode($paso);}
public function venta_tipo_traslado_aux($pagina,$control,$tipoVentaControl,$busqueda,$idBodega){  $ancho=5; $limite=$ancho*$pagina; $paso["paso"]="no paso";
if($busqueda!=""){ $cV="SELECT ventas.* FROM ventas RIGHT JOIN usuarios ON usuarios.id_usuario=ventas.id_usuario WHERE ventas.id_bodega='$idBodega' AND  ventas.tipo_venta_control='$tipoVentaControl' AND ventas.estado='$control' AND (ventas.fecha LIKE '$busqueda' OR ventas.id_venta LIKE '%$busqueda%' OR ventas.metodo_pago LIKE '%$busqueda%' OR   ventas.clave_venta LIKE  '%$busqueda%' OR JSON_UNQUOTE(JSON_EXTRACT(usuarios.usuario,'$.nombre')) LIKE '%$busqueda%' OR JSON_UNQUOTE(JSON_EXTRACT(usuarios.usuario,'$.apellido')) LIKE '%$busqueda%' OR JSON_UNQUOTE(JSON_EXTRACT(usuarios.usuario,'$.departamento')) LIKE '%$busqueda%' OR JSON_UNQUOTE(JSON_EXTRACT(usuarios.usuario,'$.cedula')) LIKE '%$busqueda%') ORDER BY ventas.fecha DESC LIMIT 0,100;";
}else{$cV="SELECT * FROM ventas WHERE  tipo_venta_control='$tipoVentaControl' AND estado='$control' AND id_bodega='$idBodega'   ORDER BY fecha DESC LIMIT $limite,$ancho;";}
$cvr=$this->mysqli->query($cV); if($cvr->num_rows !=0){while($fila = $cvr->fetch_assoc()){$a[] = $fila;} 
$paso["paso"]="paso"; $paso["lista"]=$this->auxProCliPag($a);} return json_encode($paso);}
// -----------------------------------------------------------------------------------
// -----------------------------------------------------------------------------------
public function auxProCliPag($v){$coo=0; $hoy=new DateTime();for($p1=0;$p1<sizeof($v);$p1++){
$idCli[$coo]=$v[$p1]["id_usuario"]; $idVen[$coo]=$v[$p1]["id_vendedor"]; $idVenta[$coo]=$v[$p1]["id_venta"]; $coo++;
//$dd=$hoy->diff(new DateTime($v[$p1]["fecha"])); $v[$p1]["dFFA"]=($dd->d*60*24)+($dd->h*60)+$dd->i;
}
$venCli=array_values(array_unique(array_merge($idCli,$idVen))); $idGU=""; $idVV="";
for($u1=0;$u1<sizeof($venCli);$u1++){$idGU.="id_usuario =".$venCli[$u1]." OR ";} $idGU=substr($idGU,0,-4);
$u2=$this->mysqli->query("SELECT * FROM usuarios WHERE ".$idGU." ;"); while($fila=$u2->fetch_assoc()){$uUU[]=$fila;}
for($vi1=0;$vi1<sizeof($idVenta);$vi1++){$idVV.="id_venta = ".$idVenta[$vi1]." OR ";  } $idVV=substr($idVV,0,-4);
$coPa="SELECT * FROM pagos WHERE ".$idVV." ;";
$vv1=$this->mysqli->query($coPa);if($vv1->num_rows!=0){ while($fila=$vv1->fetch_assoc()){$vVV[]=$fila;}}else{$vVV=[];}
for($q1=0;$q1<sizeof($v);$q1++){ $v[$q1]["pago"]=$this->obPagGen11($v[$q1]["id_venta"],$vVV,"vacio");
$v[$q1]["infoCliente"]=$this->obProGen11($uUU,$v[$q1]["id_usuario"],"id_usuario","vacio"); 
if($v[$q1]["id_vendedor"]==0){$v[$q1]["infoVendedor"]="Tienda Online";}else{
$v[$q1]["infoVendedor"]=$this->obProGen11($uUU,$v[$q1]["id_vendedor"],"id_usuario","Tienda Online");}} return $v; }
// ---------------------------------------------------------------------------------------------------------------
// ---------------------------------------------------------------------------------------------------------------
public function obPagGen11($idVenta,$info,$base){$respuesta=$base; $conteo=0; if(sizeof($info)!=0){
for($i=0;$i<sizeof($info);$i++){if($idVenta==$info[$i]["id_venta"]){$respuesta1[$conteo]=$info[$i]; $conteo++;}}}
if($conteo!=0){return json_encode($respuesta1);} return $respuesta;}

public function obProGen11($info,$idpr,$control,$base){
$respuesta=$base; for($i=0;$i<sizeof($info);$i++){if($idpr==$info[$i][$control]){$respuesta=$info[$i];}} return $respuesta; }
// ---------------------------------------------------------------------------------------------------------------
// ---------------------------------------------------------------------------------------------------------------
public function novedades(){$paso["paso"]="no paso";
$a=$this->mysqli->query("SELECT * FROM ventas WHERE notificacion!='[]' AND corroborarNovedad='no';");
if($a->num_rows!=0){while($fila=$a->fetch_assoc()){$aA[]=$fila;} $aA=$this->ventas_adicional_adic($aA);
$paso["paso"]="paso"; $paso["info"]=$aA; } return json_encode($paso);}

public function ventas_adicional_adic($v){$co=0; for($p1=0;$p1<sizeof($v);$p1++){$venta=json_decode($v[$p1]["venta"],true);
for($p2=0;$p2<sizeof($venta);$p2++){$identificacion[$co]=$venta[$p2]["idpr"]; $co++;}}
$identificacion=array_values(array_unique($identificacion)); $idGeneral="";
for($i=0;$i<sizeof($identificacion);$i++){ $idGeneral.="id =".$identificacion[$i]." OR "; } $idGeneral=substr($idGeneral,0,-4);
$a1="SELECT productos.*, JSON_UNQUOTE(JSON_EXTRACT(productos.datos_productos, '$.descripcion')) as descripcion,";
$a2="IFNULL(categorias.categoria, 'DISPONIBLE') as categoria, marca.marca, marca.imagen, ";
$a3="IFNULL(modelos.modelo, 'DISPONIBLE') as modelo FROM productos "; 
$a4="LEFT JOIN categorias ON JSON_UNQUOTE(JSON_EXTRACT(productos.datos_productos, '$.id_categoria')) = categorias.id_categoria ";
$a5="LEFT JOIN modelos ON JSON_UNQUOTE(JSON_EXTRACT(productos.datos_productos, '$.id_modelo')) = modelos.id_modelo ";
$a6="LEFT JOIN marca ON JSON_UNQUOTE(JSON_EXTRACT(productos.datos_productos, '$.id_marca')) = marca.id_marca WHERE ";
$sel2=$this->mysqli->query($a1.$a2.$a3.$a4.$a5.$a6.$idGeneral." ;"); while($fila=$sel2->fetch_assoc()){$aA[]=$fila;}
for($q1=0;$q1<sizeof($v);$q1++){$venta1=json_decode($v[$q1]["venta"],true); for($q2=0;$q2<sizeof($venta1);$q2++){
$venta1[$q2]["infoProducto"]=$this->obProGen11($aA,$venta1[$q2]["idpr"],"id","vacio");}  $v[$q1]["venta"]=json_encode($venta1);}
return $v; }
// ---------------------------------------------------------------------------------------------------------------
// ---------------------------------------------------------------------------------------------------------------
public function venta_por_id($id_venta,$idBodega,$idEmpresa){$paso["paso"]="no paso";
$a=$this->mysqli->query("SELECT * FROM ventas WHERE id_venta='$id_venta';");   
if($a->num_rows!=0){$aA=$a->fetch_assoc();  $paso=$this->identificadorIdGeneral($aA,"tienda Online",$idBodega,$idEmpresa);} return json_encode($paso);}

public function identificadorIdGeneral($v,$baseVendedor,$idBodega,$idEmpresa){ $idVen[0]=$v["id_vendedor"]; $idCli[0]=$v["id_usuario"]; $idVenta[0]=$v["id_venta"];
$venta=json_decode($v["venta"],true); $articulos=0; $cantidad=0; $relCantidad=0; $conteo=0;
for($p2=0;$p2<sizeof($venta);$p2++){ $identificacion[$conteo]=$venta[$p2]["idpr"]; $conteo++;    
if($venta[$p2]["estEli"]==0){$cantidad+=$venta[$p2]["cant"]; $relCantidad+=$venta[$p2]["rel"]; $articulos++; }  } 
$venCli=array_values(array_unique(array_merge($idCli,$idVen))); $idGU=""; $idVV="";
for($u1=0;$u1<sizeof($venCli);$u1++){$idGU.="id_usuario =".$venCli[$u1]." OR ";} $idGU=substr($idGU,0,-4);
$u2=$this->mysqli->query("SELECT * FROM usuarios WHERE ".$idGU." ;"); while($fila=$u2->fetch_assoc()){$uUU[]=$fila;}
for($vi1=0;$vi1<sizeof($idVenta);$vi1++){$idVV.="id_venta = ".$idVenta[$vi1]." OR ";  } $idVV=substr($idVV,0,-4);
$coPa="SELECT * FROM pagos WHERE ".$idVV." ;";
$vv1=$this->mysqli->query($coPa);if($vv1->num_rows!=0){ while($fila=$vv1->fetch_assoc()){$vVV[]=$fila;}}else{$vVV=[];}
$identificacion=array_values(array_unique($identificacion)); $idGeneral="";
for($i=0;$i<sizeof($identificacion);$i++){ $idGeneral.="id =".$identificacion[$i]." OR "; } $idGeneral=substr($idGeneral,0,-4);
$a1="SELECT productos.*, JSON_UNQUOTE(JSON_EXTRACT(productos.datos_productos, '$.descripcion')) as descripcion,";
$a2="IFNULL(categorias.categoria, 'DISPONIBLE') as categoria, marca.marca, marca.imagen, COALESCE(JSON_UNQUOTE(JSON_EXTRACT(ubicacion_array, '$.".$idBodega."')),'') AS ubicacionAux, ";
$a3="IFNULL(modelos.modelo, 'DISPONIBLE') as modelo FROM productos "; 
$a4="LEFT JOIN categorias ON JSON_UNQUOTE(JSON_EXTRACT(productos.datos_productos, '$.id_categoria')) = categorias.id_categoria ";
$a5="LEFT JOIN modelos ON JSON_UNQUOTE(JSON_EXTRACT(productos.datos_productos, '$.id_modelo')) = modelos.id_modelo ";
$a6="LEFT JOIN marca ON JSON_UNQUOTE(JSON_EXTRACT(productos.datos_productos, '$.id_marca')) = marca.id_marca WHERE ";
$sel2=$this->mysqli->query($a1.$a2.$a3.$a4.$a5.$a6."(".$idGeneral.") AND productos.id_empresa='".$idEmpresa."';"); while($fila=$sel2->fetch_assoc()){$aA[]=$fila;}
for($q1=0;$q1<sizeof($venta);$q1++){$venta[$q1]["infoProducto"]=$this->aIU($this->obProGen11($aA,$venta[$q1]["idpr"],"id","vacio"));}
$v["venta"]=json_encode($venta);
if($v["id_vendedor"]==0){$vAux["vendedor"]=$baseVendedor;}else{$vAux["vendedor"]=$this->obProGen11($uUU,$v["id_vendedor"],"id_usuario","tienda Online");}
$vAux["cliente"]=$this->obProGen11($uUU,$v["id_usuario"],"id_usuario",""); 
if(sizeof($vVV)==0){$vAux["pagos"]="null";}else{$vAux["pagos"]=$vVV; }
$paso["paso"]="paso"; $paso["info"]=$v; $paso["productosTotal"]=$cantidad; $paso["relProductos"]=$relCantidad; 
$paso["articulos"]=$articulos; $paso["cliente"]=$vAux["cliente"]; $paso["vendedor"]=$vAux["vendedor"]; $paso["pagos"]=$vAux["pagos"]; 
return $paso; }

public function aIU($info){ if($info=="vacio"){return "vacio";}else{if($info["ubicacionAux"]==""){$info["ubicacion"]="";}else{
$ubic=json_decode($info["ubicacionAux"],true); $res=""; for($i=0;$i<sizeof($ubic);$i++){$res.=$ubic[$i]["ubicacion"]." ";} 
$res=trim($res); $info["ubicacion"]=$res;}} return $info;}
// ---------------------------------------------------------------------------------------------------------------
// ---------------------------------------------------------------------------------------------------------------
public function pCarritoAux($idCliente,$control117,$idVendedor){ $control=$control117;
if($idVendedor=="0"){ $carrito=$this->mysqli->query("SELECT * FROM carrito WHERE id_usuario='$idCliente' AND estado='$control117';"); }else{
$carrito=$this->mysqli->query("SELECT * FROM carrito WHERE id_usuario='$idVendedor' AND id_cliente='$idCliente' AND estado='$control117';");}

if($carrito->num_rows>0){while($fila = $carrito->fetch_assoc()){$carrito1[] = $fila;}}
if(sizeof($carrito1)>0){ 
$usu12=$this->mysqli->query("SELECT tipo_cliente FROM usuarios WHERE id_usuario='$idCliente';")->fetch_assoc();
$carrito1=$this->agregarInfoGeneralCarritoDes($carrito1);
$total=0;for($i=0;$i<sizeof($carrito1);$i++){ $total+=$carrito1[$i]["cantidad"]*$carrito1[$i]["precio_unitario"]; 

$controlA[$i]["marca"]=$carrito1[$i]["marca"];  $controlA[$i]["descripcion"]=$carrito1[$i]["descripcion"]; 
$controlA[$i]["modelo"]=$carrito1[$i]["modelo"];  $controlA[$i]["categoria"]=$carrito1[$i]["categoria"]; 
$controlA[$i]["codigo"]=$carrito1[$i]["codigo"];  $controlA[$i]["imagen"]=$carrito1[$i]["imagen"]; 
$controlA[$i]["ruta_imagen_marca"]=$carrito1[$i]["ruta_imagen_marca"]; 

$controlA[$i]["fecha"]=$carrito1[$i]["fecha"]; $controlA[$i]["idpr"]=$carrito1[$i]["id_producto"]; $controlA[$i]["estEli"]=0; 
$controlA[$i]["idus"]=$idCliente;  $controlA[$i]["cant"]=$carrito1[$i]["cantidad"]; $controlA[$i]["cantAdic"]=0; 
$controlA[$i]["cantOriginal"]=$carrito1[$i]["cantidad"]; $controlA[$i]["rel"]=0; $controlA[$i]["sumi"]=0; 
$controlA[$i]["dev"]=0; $controlA[$i]["detDev"]=null; $contaolA[$i]["estaDevo"]=null; $controlA[$i]["estadDevo"]=0;
$controlA[$i]["cantDevo"]=0; $controlA[$i]["tipoPrecio"]=$usu12["tipo_cliente"]; $controlA[$i]["tipoPrecioAdic"]="vacio";
$controlA[$i]["tipoPrecioOriginal"]=$usu12["tipo_cliente"]; $controlA[$i]["costo"]=$carrito1[$i]["precio_unitario"];
$controlA[$i]["costoAdic"]="vacio"; $controlA[$i]["costoOriginal"]=$carrito1[$i]["precio_unitario"]; }	
$venta=json_encode($controlA); if($control=="general"){$tipo_cliente=$usu12["tipo_cliente"];
if($tipo_cliente=="mayoritario"){$tipo_venta_control=0;}
if($tipo_cliente=="minoritario"){$tipo_venta_control=2;}
if($tipo_cliente=="empresarial" || $tipo_cliente=="master"){$tipo_venta_control=5;}	
}else{if($control=="inmediato"){$tipo_venta_control=1;}else{$tipo_venta_control=6;}}
$res["tipo_venta_control"]=$tipo_venta_control; $res["venta"]=$venta; $res["total"]=$total;	$res["control"]=$control;
}else{$res=NULL;} return $res;}


public function agregarInfoGeneralCarritoDes($carrito){ $idGeneral=""; $cantidades=0; $pT=0;
for($i=0;$i<sizeof($carrito);$i++){ $idGeneral.="id =".$carrito[$i]["id_producto"]." OR "; } $idGeneral=substr($idGeneral,0,-4);
$a1="SELECT productos.*, JSON_UNQUOTE(JSON_EXTRACT(productos.datos_productos, '$.descripcion')) as descripcion,";
$a2="IFNULL(categorias.categoria, 'DISPONIBLE') as categoria, marca.marca, marca.imagen, ";
$a3="IFNULL(modelos.modelo, 'DISPONIBLE') as modelo FROM productos "; 
$a4="LEFT JOIN categorias ON JSON_UNQUOTE(JSON_EXTRACT(productos.datos_productos, '$.id_categoria')) = categorias.id_categoria ";
$a5="LEFT JOIN modelos ON JSON_UNQUOTE(JSON_EXTRACT(productos.datos_productos, '$.id_modelo')) = modelos.id_modelo ";
$a6="LEFT JOIN marca ON JSON_UNQUOTE(JSON_EXTRACT(productos.datos_productos, '$.id_marca')) = marca.id_marca WHERE ";
$sel2=$this->mysqli->query($a1.$a2.$a3.$a4.$a5.$a6.$idGeneral." ;"); while($fila=$sel2->fetch_assoc()){$aA[]=$fila;}
for($k=0;$k<sizeof($carrito);$k++){$cantidades+=$carrito[$k]["cantidad"]; $pT+=($carrito[$k]["cantidad"]*$carrito[$k]["precio_unitario"]);
$carrito[$k]=$this->obtenerInfoUnitarioDes($carrito[$k],$aA,$carrito[$k]["id_producto"]);}
$carrito[0]["cantidades"]=$cantidades; $carrito[0]["pT"]=$pT; return $carrito; }

public function obtenerInfoUnitarioDes($carrito,$info,$id){ for($i=0;$i<sizeof($info);$i++){if($id==$info[$i]["id"]){
$carrito["descripcion"]=str_replace("&nbsp;"," ",ucfirst(strtolower(trim(htmlentities($info[$i]["descripcion"])))));
$carrito["marca"]=str_replace("&nbsp;"," ",ucfirst(strtolower(trim(htmlentities($info[$i]["marca"])))));
$carrito["precio_unitario_adic"]="$ ".number_format($carrito["precio_unitario"],0,".",".");
$carrito["modelo"]=$info[$i]["modelo"];  $carrito["categoria"]=$info[$i]["categoria"]; $carrito["codigo"]=$info[$i]["codigo"]; 
$carrito["imagen"]=$info[$i]["imagenArray"]; $carrito["ruta_imagen_marca"]=$info[$i]["imagen"]; }}return $carrito;}

// ---------------------------------------------------------------------------------------------------------------
// ---------------------------------------------------------------------------------------------------------------
public function usuarioId($idCliente){$paso["paso"]="no paso";
$a=$this->mysqli->query("SELECT * FROM usuarios WHERE id_usuario='$idCliente';"); if($a->num_rows!=0){$paso["paso"]="paso"; 
$paso["lista"]=$a->fetch_assoc();} return json_encode($paso);}

public function consulta_usuario_id_android($id_usuario){
$resultado = $this->mysqli->query("SELECT foto, nombre, apellido, usuario, tipo_cliente, region, ciudad, zona, direccion, empresa, almacen, repe, nit, telefono, celular FROM usuarios WHERE id_usuario=$id_usuario ;");
$aT=$this->mysqli->query("SELECT id_venta FROM ventas WHERE (id_verificacion=$id_usuario OR id_picking=$id_usuario OR id_packing=$id_usuario OR id_facturacion=$id_usuario OR id_despacho=$id_usuario OR id_enviados=$id_usuario);")->num_rows;
$aTMes=$this->mysqli->query("SELECT id_venta FROM ventas WHERE (id_verificacion=$id_usuario OR id_picking=$id_usuario OR id_packing=$id_usuario OR id_facturacion=$id_usuario OR id_despacho=$id_usuario OR id_enviados=$id_usuario) AND fecha<=(now()-31);")->num_rows;
$registros = $resultado->num_rows;if($registros !=0){while($fila = $resultado->fetch_assoc()){$this->data[] = $fila;}
$this->data[0]["pedidos"]=$aT; $this->data[0]["pedidosMes"]=$aTMes; return $this->data;}return NULL;}

public function consulta_inicial_despacho($estado,$idBodega){     
$c1="SUM(CASE WHEN estado='verificacion' AND tipo_venta_control NOT IN (6,9,11) AND estado_factura=1 AND id_bodega='$idBodega'  THEN 1 ELSE 0 END) AS parte0 ";
$c2="SUM(CASE WHEN estado='picking' AND tipo_venta_control NOT IN (6,9,11) AND estado_factura=1 AND id_bodega='$idBodega' THEN 1 ELSE 0 END) AS parte1 ";
$c3="SUM(CASE WHEN estado='packing' AND tipo_venta_control NOT IN (6,9,11) AND estado_factura=1 AND id_bodega='$idBodega' THEN 1 ELSE 0 END) AS parte2 ";
$c4="SUM(CASE WHEN estado='facturacion' AND tipo_venta_control NOT IN (6,9,11) AND estado_factura=1 AND id_bodega='$idBodega' THEN 1 ELSE 0 END) AS parte3 ";
$c5="SUM(CASE WHEN estado='despacho' AND tipo_venta_control NOT IN (6,9,11) AND estado_factura=1 AND id_bodega='$idBodega' THEN 1 ELSE 0 END) AS parte4 ";
$c6="SUM(CASE WHEN estado='enviados' AND tipo_venta_control NOT IN (6,9,11) AND estado_factura=1 AND estado_entrega!='entregado' AND id_bodega='$idBodega' THEN 1 ELSE 0 END) AS parte5 ";
$c7="SUM(CASE WHEN estado='sin tomar' AND tipo_venta_control=15 AND id_bodega='$idBodega' THEN 1 ELSE 0 END) AS parte6 ";
$d1="SUM(CASE WHEN estado='$estado' AND tipo_venta_control=0 AND estado_factura=1 AND id_bodega='$idBodega' THEN 1 ELSE 0 END) AS sel1 ";
$d2="SUM(CASE WHEN estado='$estado' AND tipo_venta_control=1 AND estado_factura=1 AND id_bodega='$idBodega' THEN 1 ELSE 0 END) AS sel2 ";
$d3="SUM(CASE WHEN estado='$estado' AND tipo_venta_control=2 AND estado_factura=1 AND id_bodega='$idBodega' THEN 1 ELSE 0 END) AS sel3 ";
$d4="SUM(CASE WHEN estado='$estado' AND tipo_venta_control=3 AND estado_factura=1 AND id_bodega='$idBodega' THEN 1 ELSE 0 END) AS sel4 ";
$d5="SUM(CASE WHEN estado='$estado' AND tipo_venta_control=5 AND estado_factura=1 AND id_bodega='$idBodega' THEN 1 ELSE 0 END) AS sel5 ";
$d6="SUM(CASE WHEN tipo_venta_control=6 AND estado='sin tomar' AND id_bodega='$idBodega' THEN 1 ELSE 0 END) AS sel6 ";
$d7="SUM(CASE WHEN tipo_venta_control=6 AND estado='terminado' AND id_bodega='$idBodega' THEN 1 ELSE 0 END) AS sel7 ";
$d8="SUM(CASE WHEN tipo_venta_control=6 AND estado='terminadoFinal' AND id_bodega='$idBodega' THEN 1 ELSE 0 END) AS sel8 ";
$d9="SUM(CASE WHEN tipo_venta_control=6 AND estado='terminadoFinal' AND metodo_pago='directo' AND id_bodega_aux='$idBodega' THEN 1 ELSE 0 END) AS sel9 ";
$da="SUM(CASE WHEN tipo_venta_control=6 AND (estado='terminadoFinal' OR estado='despachoFinal') AND metodo_pago!='directo' AND id_bodega_aux='$idBodega' THEN 1 ELSE 0 END) AS sel10 ";

$zz="SELECT ".$c1." , ".$c2." , ".$c3." , ".$c4." , ".$c5." , ".$c6." , ".$c7." , ".$d1." , ".$d2." , ".$d3.", ".$d4." , ".$d5." , ".$d6." , ".$d7." , ".$d8." , ".$d9." , ".$da." FROM ventas;";
$l=$this->mysqli->query($zz)->fetch_assoc(); $res["traslados2"]=$l["sel7"]; $res["traslado3"]=$l["sel8"];  $res["directo"]=$l["sel9"]; $res["asignacion"]=$l["sel10"];
//$d6="SUM(CASE WHEN tipo_venta_control=6 AND estado='sin tomar' THEN 1 ELSE 0 END) AS sel6 ";
//$d7="SUM(CASE WHEN tipo_venta_control=6 AND estado='terminado' THEN 1 ELSE 0 END) AS sel7 ";
//$d8="SUM(CASE WHEN tipo_venta_control=6 AND estado='terminadoFinal' THEN 1 ELSE 0 END) AS sel8 ";
//$zz="SELECT ".$c1." , ".$c2." , ".$c3." , ".$c4." , ".$c5." , ".$c6." , ".$c7." , ".$d1." , ".$d2." , ".$d3.", ".$d4." , ".$d5." , ".$d6." , ".$d7." , ".$d8." FROM ventas;";
//$zz="SELECT ".$c1." , ".$c2." , ".$c3." , ".$c4." , ".$c5." , ".$c6." , ".$d1." , ".$d2." , ".$d3.", ".$d4." , ".$d5." , ".$d6." , ".$d7." FROM ventas;";
//$l=$this->mysqli->query($zz)->fetch_assoc(); $res["traslados2"]=$l["sel7"]; $res["traslado3"]=$l["sel8"];
$res["estadoVerificacion"]= $l["parte0"]; $res["estadoPicking"]=$l["parte1"]; $res["estadoPacking"]=$l["parte2"];
$res["estadoFacturacion"]=$l["parte3"]; $res["estadoDespacho"]=$l["parte4"]; $res["estadoEnviados"]=$l["parte5"];
$res["estadoCompra"]=$l["parte6"];
$a=$l["sel1"]; $b=$l["sel2"]; $c=$l["sel3"]; $d=$l["sel4"]; $e=$l["sel5"]; $f=$l["sel6"];
$res["mayoritario"]=strval($a);$res["inmediato"]=strval($b);$res["minoritario"]=strval($c); $res["cancelado"]=0;
$res["vendedor"]=strval($d);$res["empresarial"]=strval($e);$res["traslado"]=strval($f);  $res["devolucion"]="0"; return $res;}

public function cambio_id_general_despacho($id,$control,$idVenta){ $hoy = date("Y-m-d H:i:s"); $paso["paso"]="no paso"; if($id!=0){
$info=$this->mysqli->query("SELECT archivos, usuario FROM usuarios WHERE id_usuario=$id;")->fetch_assoc();
$foto=$this->oS($info["archivos"],"foto"); $nit=$this->oS($info["usuario"],"cedula"); $nombre=$this->oS($info["usuario"],"nombre");}else{$foto="vacio"; $nit="vacio"; $nombre="vacio";}
$estado=$this->mysqli->query("SELECT control_estado FROM ventas WHERE id_venta='$idVenta'")->fetch_assoc(); 
$json=json_decode($estado["control_estado"],true);  $json[$control]["id"]=$id;
$json[$control]["entrada"]=$hoy; $json[$control]["foto"]=$foto; $json[$control]["nit"]=$nit; $json[$control]["nombre"]=$nombre;
$jsonRespuesta=json_encode($json); $a=$this->mysqli->query("UPDATE ventas SET control_estado='$jsonRespuesta' WHERE id_venta='$idVenta'");
if($a){$paso["paso"]="paso"; $paso["lista"]=$jsonRespuesta; } return json_encode($paso);    }

public function finalizarPedidoPickingGeneral($nuevoEstado,$idVenta,$index,$novedades){ $hoy = date("Y-m-d H:i:s"); $paso["paso"]="no paso";
if($index==0){$control="verificacion";} if($index==1){$control="picking";} if($index==2){$control="packing";}    
if($index==3){$control="facturacion";} if($index==4){$control="despacho";} if($index==5){$control="enviados";}
$v=$this->mysqli->query("SELECT control_estado FROM ventas WHERE id_venta=$idVenta;");
if($v->num_rows!=0){ $v1=$v->fetch_assoc(); $json=json_decode($v1["control_estado"],true);
$json[$control]["salida"]=$hoy; $jsonRespuesta=json_encode($json);
$gp=$this->mysqli->query("UPDATE ventas SET notificacion='$novedades', control_estado='$jsonRespuesta', estado='$nuevoEstado' WHERE id_venta='$idVenta';");
if($gp){$paso["paso"]="paso"; $paso["info"]=$jsonRespuesta;}} return json_encode($paso); }

public function subirComprobantePeticion($idVenta,$base64){$paso["paso"]="no paso";
$imagenRespaldo="dependencias/img/general/imagen_base_productos.png";
$imagen=imagenAdic11($base64,"comprobantes","png","comprobante"); if($imagen==NULL){$imagen=$imagenRespaldo;}
$a=$this->mysqli->query("SELECT mensajeria FROM ventas WHERE id_venta='$idVenta'; "); if($a->num_rows!=0){
$me=$a->fetch_assoc(); $mens=json_decode($me["mensajeria"],true); 
$mens["imagenEntrega"]=$imagen; $mens["estado_mensajero"]="entregado"; $mensajeroRespuesta=json_encode($mens);
$b=$this->mysqli->query("UPDATE ventas SET mensajeria='$mensajeroRespuesta' WHERE id_venta='$idVenta';");
if($b){$paso["paso"]="paso"; $paso["info"]=$mensajeroRespuesta;} } return json_encode($paso); }



public function consulta_paqueterias(){$paso["paso"]="no paso"; $a=$this->mysqli->query("SELECT * FROM usuarios WHERE perfil='Transportador';");    
if($a->num_rows!=0){while($fila=$a->fetch_assoc()){$aA[]=$fila;} $paso["paso"]="paso"; $paso["lista"]=$aA; } return json_encode($paso); }

public function corroborarNovedades($idVenta){$paso["paso"]="no paso"; $a=$this->mysqli->query("UPDATE ventas SET corroborarNovedad='si' WHERE id_venta='$idVenta';"); 
if($a){ $paso["paso"]="paso"; $paso["lista"]=$this->novedades();  } return json_encode($paso); }

public function identificacionPedidoGeneral($clave){$paso["paso"]="no paso";
$con="SELECT id_venta, JSON_UNQUOTE(JSON_EXTRACT(ventas.mensajeria,'$.id_mensajero_adic')) as id_mensajero_tmp FROM ventas WHERE id_venta='$clave' AND estado='despacho'; ";    
$con2=$this->mysqli->query($con); if($con2->num_rows!=0){ $con3=$con2->fetch_assoc(); if($con3["id_mensajero_tmp"]==0){$paso["paso"]="nulo";}else{
return $this->obtenerVentaUsuario($con3["id_venta"],$con3["id_mensajero_tmp"]); } } return json_encode($paso); }

public function obtenerVentaUsuario($idVenta,$idMensajero){$paso["paso"]="no paso";
$c="SELECT v.id_usuario as id_usuario_venta, u.id_usuario as id_usuario_info, u.*, v.*, u.archivos as archivosUsuario, v.archivos as archivosVenta FROM ventas v INNER JOIN usuarios u ON u.id_usuario = $idMensajero WHERE v.id_venta='$idVenta' AND JSON_UNQUOTE(JSON_EXTRACT(v.mensajeria, '$.id_mensajero_adic'))='$idMensajero';";    
$a=$this->mysqli->query($c);  if($a->num_rows!=0){ $paso["paso"]="paso"; $paso["info"]=$a->fetch_assoc(); } return json_encode($paso);}

public function idClienteGeneral($idCliente){
$a=$this->mysqli->query("SELECT * FROM usuarios WHERE id_usuario='$idCliente'; "); return $a->fetch_assoc();}

public function finaliza_pedido_despacho_externo($idVenta,$id,$lat0,$lon0,$lat1,$lon1,$distancia,$tiempo,$paqueteria,$guia,$tipoEntrega){ $paso["paso"]="no paso";
date_default_timezone_set("America/Bogota"); $hoy=date("Y-m-d H:i:s"); $index=4; $estadoGenerales=["verificacion","picking","packing","facturacion","despacho","enviados"]; 
$auto["lat"]=strval($lat0); $auto["lon"]=strval($lon0); $auto["latAux"]=strval($lat1); $auto["lonAux"]=$lon1; $auto["salida"]=$hoy;
$auto["distancia"]=$distancia; $auto["tiempo"]=$tiempo; $auto["paqueteria"]=$paqueteria; $auto["guia"]=$guia; 
$v=$this->mysqli->query("SELECT mensajeria, control_estado FROM ventas WHERE id_venta='$idVenta';");
if($v->num_rows!=0){ $ve=$v->fetch_assoc(); $json=json_decode($ve["control_estado"],true); $mens=json_decode($ve["mensajeria"],true); 
$mens["auto"]=$auto; $mens["tipoEntrega"]=$tipoEntrega; $mensajeroRespuesta=json_encode($mens);
$info=$this->mysqli->query("SELECT * FROM usuarios WHERE id_usuario='$id';")->fetch_assoc(); if($json[$estadoGenerales[$index]]["entrada"]=="vacio"){ 
$json[$estadoGenerales[$index]]["entrada"]=$json[$estadoGenerales[$index-1]]["entrada"]; }
$json[$estadoGenerales[$index]]["salida"]=$hoy; $json[$estadoGenerales[$index]]["id"]=$id;
$json[$estadoGenerales[$index]]["nombre"]=$this->oS( $info["usuario"],"nombre");
$json[$estadoGenerales[$index]]["nit"]=$this->oS( $info["usuario"],"nit");
$json[$estadoGenerales[$index]]["foto"]=$this->oS( $info["archivos"],"foto"); $jsonRespuesta=json_encode($json);
$act=$this->mysqli->query("UPDATE ventas SET mensajeria='$mensajeroRespuesta', control_estado='$jsonRespuesta', estado='enviados' WHERE id_venta='$idVenta';");
if($act){ $paso["paso"]="paso"; $paso["mensajeria"]=$mensajeroRespuesta; $paso["control_estado"]=$jsonRespuesta; }} return json_encode($paso); }

public function finalizar_pedido_despacho($idVenta,$index,$id,$lat0,$lon0,$lat1,$lon1,$distancia,$tiempo,$vehiculo,$placa,$grafico){
date_default_timezone_set("America/Bogota"); $hoy=date("Y-m-d H:i:s"); $paso["paso"]="no paso"; $estadoGenerales=["verificacion","picking","packing","facturacion","despacho","enviados"];
$v=$this->mysqli->query("SELECT mensajeria, control_estado FROM ventas WHERE id_venta='$idVenta'");
if($v->num_rows!=0){ $ve=$v->fetch_assoc(); $auto["lat"]=strval($lat0); $auto["lon"]=strval($lon0); 
$auto["latAux"]=strval($lat1); $auto["lonAux"]=strval($lon1); $auto["distancia"]=$distancia; $auto["tiempo"]=$tiempo; 
$auto["vehiculo"]=$vehiculo; $auto["placa"]=$placa; $auto["foto"]=$grafico; $auto["salida"]=$hoy;
$mens=json_decode($ve["mensajeria"],true); $json=json_decode($ve["control_estado"],true); $idMensajero=$mens["id_mensajero_adic"];
$infoMens=$this->mysqli->query("SELECT usuario, archivos FROM usuarios WHERE id_usuario='$idMensajero';")->fetch_assoc();
$auto["id"]=$idMensajero; $auto["fotoMensajero"]=$this->oS($infoMens["archivos"],"foto");
$auto["nombre"]=$this->oS($infoMens["usuario"],"nombre"); $auto1=$auto;
$mens["id_mensajero"]=$mens["id_mensajero_adic"]; $mens["auto"]=$auto1; $mens["tipoEntrega"]="mensajero"; $mensajeroRespuesta=json_encode($mens); 
$info=$this->mysqli->query("SELECT * FROM usuarios WHERE id_usuario='$id';")->fetch_assoc();
if($json[$estadoGenerales[$index]]["entrada"]=="vacio"){ 
$json[$estadoGenerales[$index]]["entrada"]=$json[$estadoGenerales[$index-1]]["entrada"]; }
$json[$estadoGenerales[$index]]["salida"]=$hoy; $json[$estadoGenerales[$index]]["id"]=$id;
$json[$estadoGenerales[$index]]["nombre"]=$this->oS( $info["usuario"],"nombre");
$json[$estadoGenerales[$index]]["nit"]=$this->oS( $info["usuario"],"nit");
$json[$estadoGenerales[$index]]["foto"]=$this->oS( $info["archivos"],"foto"); $jsonRespuesta=json_encode($json);
$act=$this->mysqli->query("UPDATE ventas SET mensajeria='$mensajeroRespuesta', control_estado='$jsonRespuesta', estado='enviados' WHERE id_venta='$idVenta';");
if($act){ $paso["paso"]="paso"; $paso["mensajeria"]=$mensajeroRespuesta; $paso["control_estado"]=$jsonRespuesta;}} return json_encode($paso); }

// public function corroborar_rel_general($idVenta){$paso["paso"]="no paso";
// $r=$this->mysqli->query("SELECT venta FROM ventas WHERE id_venta=$idVenta;"); if($r->num_rows!=0){
// $r1=$r->fetch_assoc();   $v=json_decode($r1["venta"],true); $vS=sizeof($v); for($i=0;$i<$vS;$i++){ $rel[$i]=$v[$i]["rel"]; $idpr[$i]=$v[$i]["idpr"];
// $v[$i]["rel"]=intval($v[$i]["cant"]);} $v1=json_encode($v);
// $v2=$this->mysqli->query("UPDATE ventas SET venta='$v1' WHERE id_venta=$idVenta;"); $resp=NULL; if($v2){$resp=1;} $paso["paso"]="paso";}
// return json_encode($paso);}

// public function reiniciar_rel_general($idVenta){$paso["paso"]="no paso";
// $r=$this->mysqli->query("SELECT venta FROM ventas WHERE id_venta=$idVenta;"); if($r->num_rows!=0){
// $r1=$r->fetch_assoc();   $v=json_decode($r1["venta"],true); $vS=sizeof($v); for($i=0;$i<$vS;$i++){ $rel[$i]=$v[$i]["rel"]; $idpr[$i]=$v[$i]["idpr"];
// $v[$i]["rel"]=0;} $v1=json_encode($v);
// $v2=$this->mysqli->query("UPDATE ventas SET venta='$v1' WHERE id_venta=$idVenta;"); $resp=NULL; if($v2){$resp=1;} $paso["paso"]="paso";}
// return json_encode($paso);}

public function funcion_retorno($idVenta,$estado,$estadoNuevo){$paso["paso"]="no paso"; $es=json_decode($estado,true); $tamEs=sizeof($es);
if($tamEs==3){if($estadoNuevo=="picking"){$es=["picking","packing"];}if($estadoNuevo=="verificacion"){$es=["verificacion","picking","packing"];} }
if($tamEs==2){$es=["verificacion","picking"];} if($tamEs==4){ if($estadoNuevo=="packing"){$es=["packing","facturacion"];}
if($estadoNuevo=="picking"){$es=["picking","packing","facturacion"];} if($estadoNuevo=="verificacion"){$es=["verificacion","picking","packing","facturacion"];} }
if($tamEs==5){ if($estadoNuevo=="facturacion"){$es=["facturacion","despacho"];} if($estadoNuevo=="packing"){$es=["packing","facturacion","despacho"];}
if($estadoNuevo=="picking"){$es=["picking","packing","facturacion","despacho"];} if($estadoNuevo=="verificacion"){$es=["verificacion","picking","packing","facturacion","despacho"];} }
$a=$this->mysqli->query("SELECT control_estado FROM ventas WHERE id_venta='$idVenta';");
if($a->num_rows!=0){ $at=$a->fetch_assoc(); $json=json_decode($at["control_estado"],true);
for($i=0;$i<sizeof($es);$i++){$json[$es[$i]]["id"]="0";} $jsonRespuesta=json_encode($json);
$op=$this->mysqli->query("UPDATE ventas SET control_estado='$jsonRespuesta', estado='$estadoNuevo' WHERE id_venta='$idVenta';");
if($op){$paso["paso"]="paso"; $paso["estado"]=$jsonRespuesta;}} return json_encode($paso);}

public function cancelarPedido($idVenta,$idVendedor,$motivo){ $paso["paso"]="no paso";
$a=$this->mysqli->query("SELECT * FROM ventas WHERE id_venta='$idVenta';"); if($a->num_rows!=0){
$consulta=$a->fetch_assoc();  $v=json_decode($consulta["venta"],true); $tamV=sizeof($v);
for($i=0;$i<$tamV;$i++){if($v[$i]["estEli"]!="1"){$cantidad=$v[$i]["cant"]; $idpr=$v[$i]["idpr"];  
$this->mysqli->query("UPDATE productos SET stock=stock+$cantidad, ventas=ventas-$cantidad WHERE id_venta='$idVenta';");}}
$anulacion=json_encode(array('motivo'=>$motivo, 'id'=>$idVendedor));
$topo=$this->mysqli->query("UPDATE ventas SET anulacion='$anulacion' WHERE id_venta='$idVenta';"); if($topo){$paso["paso"]="paso";}} return json_encode($paso);}

// public function actualizar_rel_cero($cantidad,$idVenta,$idpr){ $paso["paso"]="no paso";
// $a=$this->mysqli->query("SELECT venta FROM ventas WHERE id_venta=$idVenta;");
// if($a->num_rows!=0){$r1=$a->fetch_assoc(); $v=json_decode($r1["venta"],true); $vS=sizeof($v);
// for($i=0;$i<$vS;$i++){if($v[$i]["idpr"]==$idpr){$v[$i]["rel"]=0;}} $v1=json_encode($v);
// $v2=$this->mysqli->query("UPDATE ventas set venta='$v1' WHERE id_venta=$idVenta;");
// if($v2){$paso["paso"]="paso";}}return json_encode($paso);	}

public function no_tomar_pedido($idVenta,$control){$paso["paso"]="no paso";
$a=$this->mysqli->query("SELECT control_estado FROM ventas WHERE id_venta='$idVenta';"); if($a->num_rows!=0){
$est=$a->fetch_assoc(); $estado=json_decode($est["control_estado"],true); $estado[$control]["id"]="0"; 
$jsonRespuesta=json_encode($json); $r=$this->mysqli->query("UPDATE control_estado='$jsonRespuesta' WHERE id_venta='$idVenta';");
if($r){$paso["paso"]="paso"; $paso["estado"]=$jsonRespuesta; }} return json_encode($paso); }

public function finalizarPedidoFacturacionGeneral($impresion,$idVenta,$index,$siggo){
$hoy = date("Y-m-d H:i:s"); $paso["paso"]="no paso"; $clave=mt_rand(111111111,999999999);
$valor=array("auto"=>"","entrega"=>"","impresion"=>json_decode($impresion,true),'id_mensajero'=>"0",'id_mensajero_adic'=>"0","clave_acceso_mensajero"=>$clave,"estado_mensajero"=>"pendiente"); $valorDos=json_encode($valor);
if($index==0){$control="verificacion";} if($index==1){$control="picking";} if($index==2){$control="packing";}    
if($index==3){$control="facturacion";} if($index==4){$control="despacho";} if($index==5){$control="enviados";}
$v=$this->mysqli->query("SELECT control_estado, id_usuario FROM ventas WHERE id_venta=$idVenta;");
if($v->num_rows!=0){  $v1=$v->fetch_assoc(); $json=json_decode($v1["control_estado"],true);
$json[$control]["salida"]=$hoy; $jsonRespuesta=json_encode($json); $totAuxx=$this->saldoafavor($idVenta,$v1["id_usuario"]);
$gp=$this->mysqli->query("UPDATE ventas SET control_estado='$jsonRespuesta', estado='despacho', mensajeria='$valorDos', total='$totAuxx' , clave_siggo='$siggo'  WHERE id_venta='$idVenta';");
if($gp){$paso["paso"]="paso";  $paso["info"]=$jsonRespuesta;}} return json_encode($paso);}

public function finalizarPedidoVerificacion($nuevoEstado,$idVenta,$index){ $hoy = date("Y-m-d H:i:s"); $paso["paso"]="no paso";
if($index==0){$control="verificacion";} if($index==1){$control="picking";} if($index==2){$control="packing";}    
if($index==3){$control="facturacion";} if($index==4){$control="despacho";} if($index==5){$control="enviados";}
$v=$this->mysqli->query("SELECT control_estado, mensajeria, venta FROM ventas WHERE id_venta=$idVenta;");
if($v->num_rows!=0){ $v1=$v->fetch_assoc(); $json=json_decode($v1["control_estado"],true);
$json[$control]["salida"]=$hoy; $jsonRespuesta=json_encode($json);
if($index==4){ $men=json_decode($v1["mensajeria"],true);   $men["estado_mensajero"]="entregado"; $respuestaMensajero=json_encode($men);
$gp=$this->mysqli->query("UPDATE ventas SET control_estado='$jsonRespuesta', estado='$nuevoEstado', mensajeria='$respuestaMensajero' WHERE id_venta='$idVenta';");
}else{$gp=$this->mysqli->query("UPDATE ventas SET control_estado='$jsonRespuesta', estado='$nuevoEstado' WHERE id_venta='$idVenta';");}
if($gp){$paso["paso"]="paso";
// $aux44=json_decode($v1["venta"],true); $auxTT=array(); for($po=0;$po<sizeof($aux44);$po++){
// $auxTT[]=array("id_producto"=>$aux44[$po]["idpr"],"cantidad"=>$aux44[$po]["cant"],"id_carrito"=>$aux44[$po]["id_carrito"]??"0");}
// $paso["carrito"]=$auxTT; $plk=new CarritoGeneral(); $paso["productos"]=$this->agregarInfoGeneral($auxTT);

$paso["info"]=$jsonRespuesta;}} return json_encode($paso); }


// public function actualizar_rel($cantidad,$idVenta,$idpr,$control){ $paso["paso"]="no paso";
// $r=$this->mysqli->query("SELECT venta, estado FROM ventas WHERE id_venta=$idVenta;");   
// if($r->num_rows!=0){$r1=$r->fetch_assoc(); $v=json_decode($r1["venta"],true); $vS=sizeof($v);
// for($i=0;$i<$vS;$i++){if($v[$i]["idpr"]==$idpr){$v[$i]["rel"]=intval($cantidad);}} $v1=json_encode($v);
// $v2=$this->mysqli->query("UPDATE ventas SET venta='$v1' WHERE id_venta=$idVenta"); 
// if($r1["estado"]=="packing"){$this->auxRelNuevo($cantidad);}  if($v2){$paso["paso"]="paso"; $paso["valor"]=1;}}
// return json_encode($paso);}
public function actualizar_rel($cantidad,$idVenta,$idpr,$control){return $this->actualizarRelMasivo($cantidad,$idVenta,$idpr,$control,6);}
public function corroborar_rel_general($idVenta){return $this->corroborarRelMasivo($idVenta,6);}
public function reiniciar_rel_general($idVenta){return $this->reiniciarRelMasivo($idVenta,6);}
public function actualizar_rel_cero($cantidad,$idVenta,$idpr){return $this->actualizarRelCeroMasivo($cantidad,$idVenta,$idpr);}


public function actualizarRelCeroMasivo($cantidad,$idVenta,$idpr){ $paso["paso"]="no paso";
$a=$this->mysqli->query("SELECT venta FROM ventas WHERE id_venta=$idVenta;");
if($a->num_rows!=0){$r1=$a->fetch_assoc(); $v=json_decode($r1["venta"],true); $vS=sizeof($v);
for($i=0;$i<$vS;$i++){if($v[$i]["idpr"]==$idpr){$this->auxProductoGeneral("resta",$v[$i]["idpr"],$v[$i]["rel"],6);$v[$i]["rel"]=0;}} $v1=json_encode($v);
$v2=$this->mysqli->query("UPDATE ventas set venta='$v1' WHERE id_venta=$idVenta;");
if($v2){$paso["paso"]="paso";}}return json_encode($paso);	}

public function actualizarRelMasivo($cantidad,$idVenta,$idpr,$control,$idBodega){ $paso["paso"]="no paso"; $cantidadAux=0;  
$r=$this->mysqli->query("SELECT ventas.venta, ventas.estado, productos.ubicacion_array, productos.ventas_array FROM  ventas INNER JOIN productos ON productos.id='$idpr' WHERE ventas.id_venta=$idVenta;");   
if($r->num_rows!=0){$r1=$r->fetch_assoc(); $v=json_decode($r1["venta"],true); $vS=sizeof($v);
for($i=0;$i<$vS;$i++){if($v[$i]["idpr"]==$idpr){$cantidadAux=$v[$i]["rel"]; $v[$i]["rel"]=intval($cantidad);}} $v1=json_encode($v);
$dif=$cantidad-$cantidadAux;  if($dif<0){$dif1=$dif*(-1);}else{$dif1=$dif;}
if($dif<0){$estadoActual="resta";}else{$estadoActual="suma";}
$aty1=new CarritoGeneral();   $AAXX=$aty1->auxRelNuevo($estadoActual,$dif1,$r1["ubicacion_array"],$r1["ventas_array"],$idBodega,"cantidad");
 $vAA=$AAXX["venta"]; $sAA=$AAXX["stock"]; $this->mysqli->query("UPDATE productos SET ventas_array='$vAA', ubicacion_array='$sAA' WHERE id=$idpr;");
$v2=$this->mysqli->query("UPDATE ventas SET venta='$v1' WHERE id_venta=$idVenta"); if($v2){$paso["paso"]="paso"; $paso["valor"]=1;}}
return json_encode($paso);}

public function corroborarRelMasivo($idVenta,$idBodega){$paso["paso"]="no paso";
$a=$this->mysqli->query("SELECT venta FROM ventas WHERE id_venta='$idVenta';");
if($a->num_rows!=0){$aA=$a->fetch_assoc(); $v=json_decode($aA["venta"],true); 
for($i=0;$i<sizeof($v);$i++){ if($v[$i]["estEli"]==0){ $this->auxProductoGeneral("suma",$v[$i]["idpr"],$v[$i]["cant"]-$v[$i]["rel"],$idBodega); $v[$i]["rel"]=intval($v[$i]["cant"]); }}
$v1=json_encode($v); $v2=$this->mysqli->query("UPDATE ventas SET venta='$v1' WHERE id_venta='$idVenta'");
if($v2){$paso["paso"]="paso";}} return json_encode($paso); }

public function reiniciarRelMasivo($idVenta,$idBodega){$paso["paso"]="no paso";
$a=$this->mysqli->query("SELECT venta FROM ventas WHERE id_venta='$idVenta';"); 
if($a->num_rows!=0){$aA=$a->fetch_assoc(); $v=json_decode($aA["venta"],true);
for($i=0;$i<sizeof($v);$i++){if($v[$i]["estEli"]==0){ $this->auxProductoGeneral("resta",$v[$i]["idpr"],$v[$i]["rel"],$idBodega); $v[$i]["rel"]=0;}}
$v1=json_encode($v); $v2=$this->mysqli->query("UPDATE ventas SET venta='$v1' WHERE id_venta='$idVenta';");
if($v2){$paso["paso"]="paso";}}return json_encode($paso);}

public function auxProductoGeneral($estadoActual,$idpr,$auxResta,$idBodega){
$a=$this->mysqli->query("SELECT ubicacion_array, ventas_array FROM productos WHERE id='$idpr';")->fetch_assoc();
$aty1=new CarritoGeneral(); $AAXX=$aty1->auxRelNuevo($estadoActual,$auxResta,$a["ubicacion_array"],$a["ventas_array"],$idBodega,"cantidad");    
$vAA=$AAXX["venta"]; $sAA=$AAXX["stock"]; $this->mysqli->query("UPDATE productos SET ventas_array='$vAA', ubicacion_array='$sAA' WHERE id=$idpr;");}

// -------------------------------------------------------------------------------------------------------------------
// -------------------------------------------------------------------------------------------------------------------
// -------------------------------------------------------------------------------------------------------------------

// public function actualizar_rel($cantidad,$idVenta,$idpr,$control){ $paso["paso"]="no paso"; $auxValor=0;
// $r=$this->mysqli->query("SELECT ventas.venta, ventas.estado, productos.ubicacion_array, productos.ventas_array FROM  ventas INNER JOIN productos ON productos.id='$idpr' WHERE ventas.id_venta=$idVenta;");   
// if($r->num_rows!=0){$r1=$r->fetch_assoc(); $v=json_decode($r1["venta"],true); $vS=sizeof($v);
// for($i=0;$i<$vS;$i++){if($v[$i]["idpr"]==$idpr){$auxValor=$v[$i]["rel"]; $v[$i]["rel"]=intval($cantidad);}} $v1=json_encode($v);
// if($r1["estado"]=="packing"){$aatt=$this->auxRelNuevo($control,$auxValor,$cantidad,$r1["ubicacion_array"],$r1["ventas_array"]);
// $ubicacionArray=$aatt["stock"]; $ventaArray=$aatt["venta"]; $v2=$this->mysqli->query("UPDATE ventas SET venta='$v1' WHERE id_venta=$idVenta");
// $this->mysqli->query("UPDATE productos SET ubicacion_array='$ubicacionArray', ventas_array='$ventaArray' WHERE id='$idpr';");}else{
// $v2=$this->mysqli->query("UPDATE ventas SET venta='$v1' WHERE id_venta=$idVenta"); }
// if($v2){$paso["paso"]="paso"; $paso["valor"]=1;}} return json_encode($paso);}

// function auxRelNuevo($control,$relOriginal,$relNuevo,$stock,$ventas){
// $relAux=0; if($control=="suma"){$relAux=$relNuevo-$relOriginal;}else{$relAux=$relOriginal-$relNuevo;}
// $aa=json_decode($stock,true); $aux=$aa["6"]; if($control=="suma"){$aux[0]["cantidadAux"]=$aux[0]["cantidadAux"]-$relAux;}else{
// $aux[0]["cantidadAux"]=$aux[0]["cantidadAux"]+$relAux;}
// if(sizeof($aux)==1){if($control=="suma"){$aux[0]["cantidad"]=$aux[0]["cantidad"]-$relAux;}else{$aux[0]["cantidad"]=$aux[0]["cantidad"]+$relAux;}}else{
// if($control!="suma"){$aux[0]["cantidad"]=$aux[0]["cantidad"]+$relAux;}else{  
// $aux2=$aux; array_multisort(array_column($aux2,'cantidad'), SORT_DESC, $aux2); 
// $indice=$this->encontrarIndiceMasCercano($relAux, $aux2); if($indice!=NULL){ 
// for($k=0;$k<sizeof($aux);$k++){if($aux[$k]["ubicacion"]==$aux2[$indice]["ubicacion"]){$aux[$k]["cantidad"]=$aux[$k]["cantidad"]-$relAux;}}}else{$cantidadAux=$relAux; 
// for($k1=0;$k1<sizeof($aux2);$k1++){$aux44=$aux2[$k1]["cantidad"];if(($aux44-$cantidadAux)<0&&$cantidadAux!=NULL){$aux2[$k1]["cantidad"]=0; $cantidadAux=$cantidadAux-$aux44;}else{ $aux2[$k1]["cantidad"]=$aux2[$k1]["cantidad"]-$cantidadAux; $cantidadAux=NULL; }}
// for($k2=0;$k2<sizeof($aux);$k2++){for($k3=0;$k3<sizeof($aux2);$k3++){ if($aux[$k2]["ubicacion"]==$aux2[$k3]["ubicacion"]){$aux[$k2]=$aux2[$k3];}}}}}} 
// if($ventas=="[]" || $ventas=="{}"){if($control=="suma"){$auxVenta["6"]=$relAux;}else{$auxVenta["6"]=-$relAux;}}else{
// $auxVenta=json_decode($ventas,true);if($control=="suma"){if(isset($auxVenta["6"])){$auxVenta["6"]=$auxVenta["6"]+$relAux;}else{$auxVenta["6"]=$relAux;}}else{
// if(isset($auxVenta["6"])){$auxVenta["6"]=$auxVenta["6"]-$relAux;}else{$auxVenta["6"]=-$relAux;}}}
// $venta22=json_encode($auxVenta);  $aa["6"]=$aux; $stock22=json_encode($aa);
// $res["venta"]=$venta22; $res["stock"]=$stock22; return $res;}

// function encontrarIndiceMasCercano($cantidad, $array) {
// for($index=count($array)-1;$index>=0;$index--){if($array[$index]['cantidad'] >= $cantidad) {return $index;}} return NULL;}
// -------------------------------------------------------------------------------------------------------------------
// -------------------------------------------------------------------------------------------------------------------
// -------------------------------------------------------------------------------------------------------------------
// -------------------------------------------------------------------------------------------------------------------
// -------------------------------------------------------------------------------------------------------------------
// -------------------------------------------------------------------------------------------------------------------
// -------------------------------------------------------------------------------------------------------------------
// -------------------------------------------------------------------------------------------------------------------
// -------------------------------------------------------------------------------------------------------------------

public function cambio_id_general($id,$control,$idVenta){ $hoy = date("Y-m-d H:i:s"); $paso["paso"]="no paso"; if($id!=0){
$info=$this->mysqli->query("SELECT archivos, usuario FROM usuarios WHERE id_usuario=$id;")->fetch_assoc();
$foto=$this->oS($info["archivos"],"foto"); $nit=$this->oS($info["usuario"],"cedula"); $nombre=$this->oS($info["usuario"],"nombre"); }else{$foto="vacio"; $nit="vacio"; $nombre="vacio";}
$estado=$this->mysqli->query("SELECT control_estado FROM ventas WHERE id_venta='$idVenta'")->fetch_assoc(); $json=json_decode($estado["control_estado"],true); 
if($json[$control]["id"]!=0 && $id!=0){$paso["paso"]="ya tomado";}else{ $json[$control]["id"]=$id;
$json[$control]["entrada"]=$hoy; $json[$control]["foto"]=$foto; $json[$control]["nit"]=$nit; $json[$control]["nombre"]=$nombre;
$jsonRespuesta=json_encode($json); $a=$this->mysqli->query("UPDATE ventas SET control_estado='$jsonRespuesta' WHERE id_venta='$idVenta'");
if($a){$paso["paso"]="paso"; $paso["lista"]=$jsonRespuesta; }} return json_encode($paso);    }

public function pausar_pedido($idVenta,$valor){$paso["paso"]="no paso"; 
$a=$this->mysqli->query("SELECT aux FROM ventas WHERE id_venta='$idVenta';")->fetch_assoc(); $aux=$a["aux"];
$json=json_decode($aux,true); $json["pausa"]=$valor;  $aux=json_encode($json);
// $t=$this->mysqli->query("UPDATE ventas SET aux='$aux' WHERE id_venta='$idVenta'");
$t=$this->mysqli->query("UPDATE ventas SET aux= JSON_SET(aux,'$.pausa',$valor) WHERE id_venta='$idVenta'");
if($t){$paso["paso"]="paso"; $paso["lista"]=$aux;} return json_encode($paso);}

public function verificar_transaccion($idVenta){ $paso["paso"]="no paso";
$a=$this->mysqli->query("SELECT aux FROM ventas WHERE id_venta='$idVenta'")->fetch_assoc(); $aux=$a["aux"];
$json=json_decode($aux,true); $json["estadoTransaccion"]="verificado"; $aux=json_encode($json);
// $t=$this->mysqli->query("UPDATE ventas SET aux='$aux' WHERE id_venta='$idVenta';");
$t=$this->mysqli->query("UPDATE ventas SET aux=JSON_SET(aux,'$.estadoTransaccion','verificado') WHERE id_venta='$idVenta';");
if($t){$paso["paso"]="paso"; $paso["lista"]=$aux;} return json_encode($paso); }

public function verificar_direccion($idVenta){ $paso["paso"]="no paso";
$a=$this->mysqli->query("SELECT aux FROM ventas WHERE id_venta='$idVenta'")->fetch_assoc(); $aux=$a["aux"];
$json=json_decode($aux,true); $json["verificacionDireccion"]="verificado"; $aux=json_encode($json);
//$t=$this->mysqli->query("UPDATE ventas SET aux='$aux' WHERE id_venta='$idVenta';");
$t=$this->mysqli->query("UPDATE ventas SET aux=JSON_SET(aux,'$.verificacionDireccion','verificado') WHERE id_venta='$idVenta';");
if($t){$paso["paso"]="paso"; $paso["lista"]=$aux;}
return json_encode($paso); }


public function eliminar_elemento($idVenta,$indexActual){ $paso["paso"]="no paso";
$a=$this->mysqli->query("SELECT venta FROM ventas WHERE id_venta=$idVenta;"); if($a->num_rows!=0){$a1=$a->fetch_assoc();
$ve1=json_decode($a1["venta"],true); $tam=sizeof($ve1); for($i=0;$i<$tam;$i++){if($indexActual==$ve1[$i]["idpr"]){ $idpr22=$ve1[$i]["idpr"];
$cct=$ve1[$i]["cant"];  $this->auxProductoGeneralAux("resta",$idpr22,$cct,6);
$ve1[$i]["estEli"]=1; }} $conteoCero=0; for($h=0;$h<$tam;$h++){if($ve1[$h]["estEli"]==1){$conteoCero++;}}
if($tam==$conteoCero){$av=$this->mysqli->query("DELETE FROM ventas WHERE id_venta=$idVenta;"); if($av){$paso["paso"]="total";} }else{
$total=0; for($f=0;$f<$tam;$f++){if($ve1[$f]["estEli"]!=1){$total+=($ve1[$f]["cant"]*$ve1[$f]["costo"]);}}
$ve111=json_encode($ve1); $rr=$this->mysqli->query("UPDATE ventas SET venta='$ve111', total='$total' WHERE id_venta=$idVenta;");
if($rr){$paso["paso"]="paso";}}} return json_encode($paso);  }

public function cambiar_cantidad($idVenta,$idpr,$cantidad){
$aaxx=new Consulta(); $aaxx1=$aaxx->arregloConsultaProducto(6); $consulta=$aaxx1["general"]." WHERE id=$idpr ".$aaxx1["adicional"];
$sst=$this->mysqli->query($consulta)->fetch_assoc(); $stock=$sst["stock"];
$r=$this->mysqli->query("SELECT venta FROM ventas WHERE id_venta=$idVenta;")->fetch_assoc(); $v=json_decode($r["venta"],true); $vS=sizeof($v);
$respuesta="no paso"; for($i=0;$i<$vS;$i++){if($v[$i]["idpr"]==$idpr){ $dif=$cantidad-$v[$i]["cant"]; $difV=$dif*(-1);
if($dif<0){}else{if($stock<$dif){$respuesta="falto";}} if($respuesta=="no paso"){$v[$i]["cantAdic"]=$v[$i]["cant"];$v[$i]["cant"]=$cantidad;	
if($dif<0){$this->auxProductoGeneralAux("resta",$idpr,$dif*(-1),6);}else{$this->auxProductoGeneralAux("suma",$idpr,$dif,6);}}}}
$total=0; for($i1=0; $i1<$vS;$i1++){ if($v[$i1]["estEli"]!=1){ $total+=($v[$i1]["costo"]*$v[$i1]["cant"]);}}
if($respuesta=="no paso"){ $v1=json_encode($v); $v2=$this->mysqli->query("UPDATE ventas SET venta='$v1', total='$total' WHERE id_venta=$idVenta;"); if($v2){$respuesta="paso";}}
$paso["paso"]=$respuesta; return json_encode($paso); }

public function auxProductoGeneralAux($estadoActual,$idpr,$auxResta,$idBodega){
$a=$this->mysqli->query("SELECT ubicacion_array, ventas_array FROM productos WHERE id='$idpr';")->fetch_assoc();
$aty1=new CarritoGeneral(); $AAXX=$aty1->auxRelNuevo($estadoActual,$auxResta,$a["ubicacion_array"],$a["ventas_array"],$idBodega,"cantidadAux");    
$vAA=$AAXX["venta"]; $sAA=$AAXX["stock"]; $this->mysqli->query("UPDATE productos SET ventas_array='$vAA', ubicacion_array='$sAA' WHERE id=$idpr;");}


// public function eliminar_elemento($idVenta,$indexActual){ $paso["paso"]="no paso";
// $a=$this->mysqli->query("SELECT venta FROM ventas WHERE id_venta=$idVenta;"); if($a->num_rows!=0){$a1=$a->fetch_assoc();
// $ve1=json_decode($a1["venta"],true); $tam=sizeof($ve1); for($i=0;$i<$tam;$i++){if($indexActual==$ve1[$i]["idpr"]){ $idpr22=$ve1[$i]["idpr"];
// $cct=$ve1[$i]["cant"]; $this->mysqli->query("UPDATE productos SET stock=stock+$cct, ventas=ventas-$cct WHERE id=$idpr22");
// $ve1[$i]["estEli"]=1; }} $conteoCero=0; for($h=0;$h<$tam;$h++){if($ve1[$h]["estEli"]==1){$conteoCero++;}}
// if($tam==$conteoCero){$av=$this->mysqli->query("DELETE FROM ventas WHERE id_venta=$idVenta;"); if($av){$paso["paso"]="total";} }else{
// $total=0; for($f=0;$f<$tam;$f++){if($ve1[$f]["estEli"]!=1){$total+=($ve1[$f]["cant"]*$ve1[$f]["costo"]);}}
// $ve111=json_encode($ve1); $rr=$this->mysqli->query("UPDATE ventas SET venta='$ve111', total='$total' WHERE id_venta=$idVenta;");
// if($rr){$paso["paso"]="paso";}}} return json_encode($paso);  }

// public function cambiar_cantidad($idVenta,$idpr,$cantidad){
// $sst=$this->mysqli->query("SELECT stock FROM productos WHERE id=$idpr;")->fetch_assoc(); $stock=$sst["stock"];
// $r=$this->mysqli->query("SELECT venta FROM ventas WHERE id_venta=$idVenta;")->fetch_assoc(); $v=json_decode($r["venta"],true); $vS=sizeof($v);
// $respuesta="no paso"; for($i=0;$i<$vS;$i++){if($v[$i]["idpr"]==$idpr){ $dif=$cantidad-$v[$i]["cant"]; $difV=$dif*(-1);
// if($dif<0){}else{if($stock<$dif){$respuesta="falto";}} if($respuesta=="no paso"){$v[$i]["cantAdic"]=$v[$i]["cant"];$v[$i]["cant"]=$cantidad;	
// $this->mysqli->query("UPDATE productos SET stock=stock+($dif), ventas=ventas+($difV) WHERE id=$idpr;");}}}
// $total=0; for($i1=0; $i1<$vS;$i1++){ if($v[$i1]["estEli"]!=1){ $total+=($v[$i1]["costo"]*$v[$i1]["cant"]);}}
// if($respuesta=="no paso"){ $v1=json_encode($v); $v2=$this->mysqli->query("UPDATE ventas SET venta='$v1', total='$total' WHERE id_venta=$idVenta;"); if($v2){$respuesta="paso";}}
// $paso["paso"]=$respuesta; return json_encode($paso); }

public function cambio_precio($idVenta,$indexActual,$tipoPrecio,$precio){ $paso["paso"]="no paso";
$a=$this->mysqli->query("SELECT venta FROM ventas WHERE id_venta=$idVenta;"); if($a->num_rows!=0){
$a1=$a->fetch_assoc(); $ve1=json_decode($a1["venta"],true); $zVE=sizeof($ve1); for($i=0; $i <$zVE; $i++){
if($indexActual==$ve1[$i]["idpr"]){$ve1[$i]["costoAdic"]=$ve1[$i]["costo"]; $ve1[$i]["costo"]=$precio;
$ve1[$i]["tipoPrecioAdic"]=$ve1[$i]["tipoPrecio"];  $ve1[$i]["tipoPrecio"]=$tipoPrecio; }} 
$total=0; for($i1=0; $i1<$zVE;$i1++){ if($ve1[$i1]["estEli"]!=1){ $total+=($ve1[$i1]["costo"]*$ve1[$i1]["cant"]);}}
$ve=json_encode($ve1); $r=$this->mysqli->query("UPDATE ventas SET venta='$ve', total='$total' WHERE id_venta=$idVenta;");
if($r){$paso["paso"]="paso";} } return json_encode($paso);}

public function regresar_valores($idVenta,$idpr){
$r=$this->mysqli->query("SELECT venta FROM ventas WHERE id_venta=$idVenta;")->fetch_assoc(); $v=json_decode($r["venta"],true); $vS=sizeof($v);
$sst=$this->mysqli->query("SELECT stock FROM productos WHERE id=$idpr;")->fetch_assoc(); $stock=$sst["stock"]; $respuesta="no paso";
for($i=0;$i<$vS;$i++){if($v[$i]["idpr"]==$idpr){ if(isset($v[$i]["costoOriginal"])){ $dif=$v[$i]["cant"]-$v[$i]["cantOriginal"]; $difV=$dif*(-1);
if($dif<0){}else{if($stock<$dif){$respuesta="nulo";}} $v[$i]["cant"]=$v[$i]["cantOriginal"]; $v[$i]["cantAdic"]=0; 
$v[$i]["tipoPrecio"]=$v[$i]["tipoPrecioOriginal"]; $v[$i]["tipoPrecioAdic"]="vacio";
$v[$i]["costo"]=$v[$i]["costoOriginal"]; $v[$i]["costoAdic"]="vacio";if($respuesta=="no paso" && $dif!=0){
if($dif<0){$this->auxProductoGeneralAux("resta",$idpr,$dif*(-1),6);}else{$this->auxProductoGeneralAux("suma",$idpr,$dif,6);}}
}else{$respuesta="nulo";} }} if($respuesta=="no paso"){
$v1=json_encode($v); $v2=$this->mysqli->query("UPDATE ventas SET venta='$v1' WHERE id_venta=$idVenta;"); if($v2){$respuesta="paso";}}
$paso["paso"]=$respuesta; return json_encode($paso);}


// public function regresar_valores($idVenta,$idpr){
// $r=$this->mysqli->query("SELECT venta FROM ventas WHERE id_venta=$idVenta;")->fetch_assoc(); $v=json_decode($r["venta"],true); $vS=sizeof($v);
// $sst=$this->mysqli->query("SELECT stock FROM productos WHERE id=$idpr;")->fetch_assoc(); $stock=$sst["stock"]; $respuesta="no paso";
// for($i=0;$i<$vS;$i++){if($v[$i]["idpr"]==$idpr){ if(isset($v[$i]["costoOriginal"])){ $dif=$v[$i]["cant"]-$v[$i]["cantOriginal"]; $difV=$dif*(-1);
// if($dif<0){}else{if($stock<$dif){$respuesta="nulo";}} $v[$i]["cant"]=$v[$i]["cantOriginal"]; $v[$i]["cantAdic"]=0; 
// $v[$i]["tipoPrecio"]=$v[$i]["tipoPrecioOriginal"]; $v[$i]["tipoPrecioAdic"]="vacio";
// $v[$i]["costo"]=$v[$i]["costoOriginal"]; $v[$i]["costoAdic"]="vacio";
// if($respuesta=="no paso" && $dif!=0){$this->mysqli->query("UPDATE productos SET stock=stock+($dif), ventas=ventas+($difV) WHERE id=$idpr;");}
// }else{$respuesta="nulo";} }} if($respuesta=="no paso"){
// $v1=json_encode($v); $v2=$this->mysqli->query("UPDATE ventas SET venta='$v1' WHERE id_venta=$idVenta;"); if($v2){$respuesta="paso";}}
// $paso["paso"]=$respuesta; return json_encode($paso);}

public function oS($array,$campo){ $a=json_decode($array,true); if(isset($a[$campo])){return $a[$campo];}else{return null;} }

public function actualizacionGeneral($idVenta){$paso["paso"]="no paso";
$a=$this->mysqli->query("SELECT * FROM ventas WHERE id_venta='$idVenta';");
if($a->num_rows!=0){ $paso["paso"]="paso"; $paso["info"]=$a->fetch_assoc();  } return json_encode($paso);   }

public function estadoPagoObtener($idVenta){$paso["paso"]="no paso";
$a=$this->mysqli->query("SELECT * FROM pagos WHERE id_venta='$idVenta' AND (estado_pago='requerido' OR estado_pago='rechazado')");
if($a->num_rows!=0){$paso["paso"]="paso"; $paso["info"]=$a->fetch_assoc(); } return json_encode($paso); }

public function verificar_transaccion_pago($idVenta){ $paso["paso"]="no paso";
$a=$this->mysqli->query("SELECT aux FROM ventas WHERE id_venta='$idVenta'")->fetch_assoc(); $aux=$a["aux"];
$json=json_decode($aux,true); $json["estadoTransaccion"]="verificado"; $aux=json_encode($json);
$t=$this->mysqli->query("UPDATE ventas SET aux='$aux' WHERE id_venta='$idVenta';"); if($t){
$t2=$this->mysqli->query("UPDATE pagos SET estado_pago='verificado' WHERE id_venta='$idVenta';");
if($t2){$paso["paso"]="paso"; $paso["lista"]=$aux;}} return json_encode($paso); }


public function rechazoGeneral1($idVenta,$motivo,$idAnulacion){ $paso["paso"]="no paso";
$a=$this->mysqli->query("SELECT aux FROM ventas WHERE id_venta='$idVenta';")->fetch_assoc(); $aux=$a["aux"];
$json=json_decode($aux,true); $json["estadoTransaccion"]="rechazado"; 
$json["anulacionTransaccion"]=array('motivo'=>$motivo, 'id'=>$idAnulacion); $aux=json_encode($json); 
$t=$this->mysqli->query("UPDATE ventas SET aux='$aux' WHERE id_venta='$idVenta';");
//$tt=$this->mysqli->query("SELECT * FROM pagos WHERE id_venta='$idVenta';");
//if($tt->num_rows!=0){ $tt1=$tt->fetch_assoc(); $idPago=$tt1["id_pago"];
//$this->mysqli->query("UPDATE pagos SET estado_pago='rechazado' WHERE id_pago='$idPago';");}
if($t){$paso["paso"]="paso"; $paso["info"]=$aux;}  return json_encode($paso); }

public function rechazoDireccion($idVenta,$motivo,$idAnulacion){$paso["paso"]="no paso";
$a=$this->mysqli->query("SELECT aux FROM ventas WHERE id_venta='$idVenta';")->fetch_assoc(); $aux=$a["aux"];
$json=json_decode($aux,true); $json["verificacionDireccion"]="rechazado"; 
$json["anulacionDireccion"]=array('motivo'=>$motivo, 'id'=>$idAnulacion); $aux=json_encode($json);
$tt=$this->mysqli->query("UPDATE ventas SET aux='$aux' WHERE id_venta='$idVenta';");
if($tt){$paso["paso"]="paso"; $paso["info"]=$aux;}
return json_encode($paso);}

public function obtenerCaja($idCliente,$tipo,$idVendedor){$paso["paso"]="no paso"; $a=$this->pCarritoAux($idCliente,$tipo,$idVendedor);
if($a!=NULL){$paso["paso"]="paso"; 
$paso["infoCliente"]=$this->mysqli->query("SELECT * FROM usuarios WHERE id_usuario='$idCliente';")->fetch_assoc(); $paso["info"]=$a;} return json_encode($paso); }

public function maximo($idEmpresa){
$maximo = $this->mysqli->query("SELECT clave_venta FROM ventas WHERE id_empresa='$idEmpresa' AND tipo_venta_control!=15  AND  tipo_venta_control!=12 AND tipo_venta_control!=6 AND tipo_venta_control!=9 AND tipo_venta_control!=11 ORDER BY id_venta DESC LIMIT 0,1;")->fetch_assoc(); if($maximo["clave_venta"]==NULL){$maximo1=0;}else{ $maximo1 = $maximo['clave_venta'];}
$clAux = $maximo1 + 1; return $clAux; }

public function ingresoCaja($campos,$idBodega,$idVendedor,$idEmpresa){ $paso["paso"]="no paso"; $hoy = date("Y-m-d H:i:s");
$cam=json_decode($campos,true); $cl=$this->maximo($idEmpresa);  $indexDireccion=0; $dir=$cam["direccion"]; $id_usuario=$cam["idCliente"]; $control=$cam["tipo"]; $claveLocal=$cam["clave"];
$aux=json_encode(array('verificacionDireccion'=>"verificado", 'estadoTransaccion'=>"verificado", "pausa"=>"0", "tipoPedido"=>$control));
$metodo_pago="caja"; $r2=new ConsultaCliente(); $r=$r2->pCarrito($id_usuario,$control,$idVendedor);
$venta=$r["venta"]; $tipo_venta_control=$r["tipo_venta_control"]; $total=$r["total"]; if($r!=NULL){ $paso["clave_venta"]=$cl;    
$con1122="INSERT INTO ventas(id_empresa,venta,id_usuario,tipo_venta_control,metodo_pago,direccion_alternativa,aux,clave_venta,total,clave_local,fecha) ";
$con2222="VALUES($idEmpresa,'$venta','$id_usuario','$tipo_venta_control','caja','$dir','$aux','$cl','$total','$claveLocal','$hoy');";
$plc=$this->mysqli->query($con1122.$con2222);  if($plc){$res1=$this->mysqli->query("DELETE FROM carrito WHERE id_usuario=$id_usuario AND estado='$control';");}
if($plc){$paso["paso"]="paso";}} return json_encode($paso); }

public function finalizarTrasladoAux($idVenta,$notificacion,$estadoFinalControl){$paso["paso"]="no paso"; $hoy = date("Y-m-d H:i:s");
$estado=$this->mysqli->query("SELECT control_estado FROM ventas WHERE id_venta='$idVenta';")->fetch_assoc();
$json=json_decode($estado["control_estado"],true);  if($estadoFinalControl=="terminado"){  $json["picking"]["salida"]=$hoy;}else{$json["packing"]["salida"]=$hoy;} $jsonRespuesta=json_encode($json);
$a=$this->mysqli->query("UPDATE ventas SET estado='$estadoFinalControl', control_estado='$jsonRespuesta', notificacion='$notificacion' WHERE id_venta='$idVenta';");     if($a){$paso["paso"]="paso";} return json_encode($paso); }


public function cambio_id_general_bodega($id,$control,$idVenta){ $hoy = date("Y-m-d H:i:s"); $paso["paso"]="no paso";
if($id!=0){ $info=$this->mysqli->query("SELECT archivos, usuario FROM usuarios WHERE id_usuario=$id;")->fetch_assoc();
$foto=$this->oS($info["archivos"],"foto"); $nit=$this->oS($info["usuario"],"cedula"); $nombre=$this->oS($info["usuario"],"nombre"); }else{$foto="vacio"; $nit="vacio"; $nombre="vacio";}
$estado=$this->mysqli->query("SELECT control_estado FROM ventas WHERE id_venta='$idVenta'")->fetch_assoc();  $json=json_decode($estado["control_estado"],true); 
if($json[$control]["id"]!=0 && $id!=0){$paso["paso"]="ya tomado";}else{ $json[$control]["id"]=$id;
$json[$control]["entrada"]=$hoy; $json[$control]["foto"]=$foto; $json[$control]["nit"]=$nit; $json[$control]["nombre"]=$nombre;
$jsonRespuesta=json_encode($json); $a=$this->mysqli->query("UPDATE ventas SET control_estado='$jsonRespuesta', id_bodeguero='$id' WHERE id_venta='$idVenta'");
if($a){$paso["paso"]="paso"; $paso["lista"]=$jsonRespuesta; }} return json_encode($paso);    }

public function finalizarPedidoPackingGeneral($cajas,$idVenta,$index,$novedad){
 $hoy = date("Y-m-d H:i:s"); $paso["paso"]="no paso";
if($index==0){$control="verificacion";} if($index==1){$control="picking";} if($index==2){$control="packing";}    
if($index==3){$control="facturacion";} if($index==4){$control="despacho";} if($index==5){$control="enviados";}
$v=$this->mysqli->query("SELECT control_estado FROM ventas WHERE id_venta=$idVenta;");
if($v->num_rows!=0){ $v1=$v->fetch_assoc(); $json=json_decode($v1["control_estado"],true);
$json[$control]["salida"]=$hoy; $jsonRespuesta=json_encode($json);
$gp=$this->mysqli->query("UPDATE ventas SET notificacion='$novedad', control_estado='$jsonRespuesta', embalaje='$cajas', estado='facturacion' WHERE id_venta='$idVenta';");
if($gp){$paso["paso"]="paso"; $paso["info"]=$jsonRespuesta;}} return json_encode($paso);}

// ---------------------------------------------------------------------------------------------------------------
// ---------------------------------------------------------------------------------------------------------------
// ---------------------------------------------------------------------------------------------------------------
// ---------------------------------------------------------------------------------------------------------------
// ---------------------------------------------------------------------------------------------------------------
// ---------------------------------------------------------------------------------------------------------------
// ---------------------------------------------------------------------------------------------------------------
// ---------------------------------------------------------------------------------------------------------------
// ---------------------------------------------------------------------------------------------------------------
// ---------------------------------------------------------------------------------------------------------------


}
?>
