
<?php
require_once('config/app/Query.php');

class VentaRapidamodel extends Query {
    private $usuario, $nombre, $clave, $id_caja, $estado;
    public function __construct() {
        parent::__construct();
    }

    public function getProductos(){
        $sql = "SELECT descripcion, precio_venta, foto FROM productos WHERE estado = 1";
        $data = $this->selectAll($sql);
        return $data;
    }
    

    
    public function botonescaja(int $id_usuario){
        $sql = "SELECT id, estado FROM sistemas_de_arqueo WHERE id_usuario = $id_usuario and est_button = 1";
        $data = $this->selectAll($sql);
        return $data;
    }
    
   
    


//arqueo 
//arqueo 
//arqueo 
//arqueo 
//arqueo 
//arqueo 
//arqueo 
//arqueo 
//arqueo 
//arqueo 

public function registrarArqueos(int $id_usuario, string $monto_inicial, string $fecha_apertura){
    $verificar ="SELECT * FROM sistemas_de_arqueo WHERE id_usuario = '$id_usuario' AND estado = 1 ";
    $existe = $this->select($verificar);
    if (empty($existe)) {
     $sql = "INSERT INTO sistemas_de_arqueo (id_usuario, monto_inicial, fecha_apertura) VALUES (?,?,?)";

    $datos = array($id_usuario, $monto_inicial, $fecha_apertura);
    $data = $this->save($sql, $datos);
    if ($data == 1) {
        $res = "ok";
    } else {
        $res = "error";   
    }
   
    }else {
        $res ="existe";
    }
    return $res;
}



public function Cerrardatos($id_usuario){
    $sql = "UPDATE ventas SET estado_final = ? WHERE id_usuario = $id_usuario";
    $datos = array(0);
    $data = $this->save($sql, $datos);
}


public function verificarPermiso(int $id_user, string $nombre) {
    $sql = "SELECT p.id, p.permiso, d.id, d.id_usuario, d.id_permiso FROM permisos p INNER JOIN detalle_permisos d ON p.id = d.id_permiso WHERE d.id_usuario = $id_user AND p.permiso = '$nombre'";
    $data = $this->selectAll($sql);
    return $data;
    
}




public function actualizarestadobutton(int $id){
    $sql = "UPDATE sistemas_de_arqueo SET est_button = ? WHERE id_usuario = ?";
    $datos = array(0, $id,);
    $data = $this->save($sql, $datos);
}

public function esatadodGanancia(){
    $sql = "UPDATE ganancias SET apertura = ? ";
    $datos = array(0);
    $data = $this->save($sql, $datos);
}

public function actualizarbottonesestado(int $id_usuario){
    $sql = "UPDATE sistemas_de_arqueo SET estado = ?, est_button = ? WHERE id = (SELECT MAX(id) FROM sistemas_de_arqueo WHERE id_usuario = ?)";
    $datos = array(1, 1, $id_usuario);
    $data = $this->save($sql, $datos);
    return $data;
}




public function getVentas(int $id_user){

    $sql = "SELECT SUM(total) AS total FROM ventas WHERE id_usuario = $id_user AND id_cliente = 1  AND estado = 1 AND apertura = 1";
    $data = $this->select($sql);
    return $data;

}

public function getMontoInicial(int $id_user){

    $sql = "SELECT id, monto_inicial FROM sistemas_de_arqueo WHERE id_usuario = $id_user and estado = 1";
    $data = $this->select($sql);
    return $data;

    
}


public function compraTotaless(int $id_user){ 
    $sql = "SELECT SUM(total) AS total FROM compras_totales WHERE id_usuario = $id_user AND estado = 1 AND apertura = 1";
    $data = $this->select($sql);
    return $data;
}

public function ingreso(int $id_user){ 
    $sql = "SELECT SUM(monto) AS monto FROM ingreso WHERE id_usuario = $id_user AND estado = 1 AND apertura = 1";
    $data = $this->select($sql);
    return $data;
}

public function egreso(int $id_user){ 
    $sql = "SELECT SUM(monto) AS monto FROM egresos WHERE id_usuario = $id_user AND estado = 1 AND apertura = 1";
    $data = $this->select($sql);
    return $data;
}



public function operacionadelanto(){ 
    $sql = "SELECT SUM(monto) AS monto FROM adelantos WHERE estado = 1 AND apertura = 1";
    $data = $this->select($sql);
    return $data;
}





public function actualizarArqueo(string $fecha_cierre, string $final, string $comprasTotales, string $egresoefe, string $ingresoefe, string $monto_de_cierre, string $general, int $id){
    $sql = "UPDATE sistemas_de_arqueo SET fecha_cierre = ?, total_ventas = ?, total_compras = ?, egresos = ?, ingreso = ?, monto_cierre = ?, total = ?, estado = ?, est_button = ? WHERE id = ?";
    $datos = array( $fecha_cierre, $final, $comprasTotales, $egresoefe, $ingresoefe, $monto_de_cierre, $general, 0,1 , $id);
    $data = $this->save($sql, $datos);    
    if ($data == 1) {
        $res = "ok";
    } else {
        $res = "error";   
    }
    return $res;
}



public function actualizar_detalle_venta(int $id_usuario){
    $sql = "UPDATE detalle_ventas SET estado = ? WHERE id_usuario = ?";

   $datos = array(0, $id_usuario);
   $data = $this->save($sql, $datos);
   return $data;
}



public function actualizarAdelantos(){
    $sql = "UPDATE adelantos SET apertura = ?";
    $datos = array(0);
    $data = $this->save($sql, $datos);
}


public function actualizarCompraTotal(int $id){
    $sql = "UPDATE compras_totales SET apertura = ? WHERE id_usuario = ?";
   $datos = array(0, $id,);
   $data = $this->save($sql, $datos);
}

public function actualizarApertura(int $id){
    $sql = "UPDATE ventas SET apertura = ? WHERE id_usuario = ?";

   $datos = array(0, $id,);
   $data = $this->save($sql, $datos);
   return $data;
}



public function getusuarios(){
    $sql= "SELECT id, nombre  FROM `usuario` WHERE estado = 1" ;
    $data= $this->selectAll($sql);
    return $data;
    
}


public function registraringresoso(int $id_usuario, string $monto,string $opciones,string $detalle,string $fecha){
    $sql = "INSERT INTO ingreso (id_usuario, monto, opciones, detalle, fecha) VALUES (?,?,?,?,?)";
    $datos = array( $id_usuario, $monto, $opciones, $detalle, $fecha);
    $data = $this->save($sql,$datos);
    return $data;
}


public function actualizartotal_ventas(int $id){
    $sql = "UPDATE ventas SET total_ventas = ? WHERE id_usuario = ?";
   $datos = array(0, $id,);
   $data = $this->save($sql, $datos);
   return $data;
}




public function actualizaringreso(int $id){
    $sql = "UPDATE ingreso SET apertura = ? WHERE id_usuario = ?";
   $datos = array(0, $id,);
   $data = $this->save($sql, $datos);
   return $data;
}


public function actualizaregresos(int $id){
    $sql = "UPDATE egresos SET apertura = ? WHERE id_usuario = ?";
   $datos = array(0, $id,);
   $data = $this->save($sql, $datos);
   return $data;
}




public function registraregresos(int $id_usuario, string $monto,string $opciones,string $detalle,string $fecha){
    $sql = "INSERT INTO egresos (id_usuario, monto, opciones, detalle, fecha) VALUES (?,?,?,?,?)";
    $datos = array( $id_usuario, $monto, $opciones, $detalle, $fecha);
    $data = $this->save($sql,$datos);
    return $data;
}




public function adelantospert(int $id_usuario, string $monto,string $opciones,string $detalle,string $fecha){
    $sql = "INSERT INTO adelantos (id_usuario, monto, opciones, detalle, fecha) VALUES (?,?,?,?,?)";
    $datos = array( $id_usuario, $monto, $opciones, $detalle, $fecha);
    $data = $this->save($sql,$datos);
    return $data;
}


public function detallesarqueo(int $id){
    $sql = "SELECT sa.*, u.nombre AS nombre_usuario
            FROM sistemas_de_arqueo sa
            INNER JOIN usuario u ON sa.id_usuario = u.id
            WHERE sa.id_usuario = $id AND sa.est_button = 1";
    $data = $this->select($sql);
    return $data;
}

// corregir podria causar conflicto el detalle de ventas de acuerdo aal id_usuarios 
public function detalles_ventas($id_usuario){
    $sql = "SELECT dv.id_producto, p.descripcion, SUM(dv.cantidad) as cantidad_total, SUM(dv.sub_total) as sub_total_total 
    FROM detalle_ventas dv
    INNER JOIN productos p ON dv.id_producto = p.id
    WHERE dv.estado = 1 AND id_usuario = $id_usuario
    GROUP BY dv.id_producto, p.descripcion";

    $data = $this->selectAll($sql);
    return $data;
}
//corregir


public function adelantos() {
    $sql = "SELECT a.monto, u.nombre
            FROM adelantos a
            INNER JOIN usuario u ON a.detalle = u.id
            WHERE a.apertura = 1";
    $data = $this->selectAll($sql);
    return $data;
}


public function total_ventas($id_user){
    $sql = "SELECT SUM(total) AS total FROM ventas WHERE id_usuario = $id_user AND estado = 1 AND total_ventas = 1";
    $data = $this->select($sql);
    return $data;

}

public function pagosconyape($id_usuario){
    $sql = "SELECT SUM(total) AS total FROM ventas WHERE id_usuario = $id_usuario AND id_cliente = 2 AND estado = 1 AND total_ventas = 1";
    $data = $this->select($sql);
    return $data;

}

public function pagosplin($id_usuario){
    $sql = "SELECT SUM(total) AS total FROM ventas WHERE id_usuario = $id_usuario AND id_cliente = 3 AND estado = 1 AND total_ventas = 1";
    $data = $this->select($sql);
    return $data;

}


public function bcp($id_usuario){
    $sql = "SELECT SUM(total) AS total FROM ventas WHERE id_usuario = $id_usuario AND id_cliente = 4 AND estado = 1 AND total_ventas = 1";
    $data = $this->select($sql);
    return $data;

}

public function bbva($id_usuario){
    $sql = "SELECT SUM(total) AS total FROM ventas WHERE id_usuario = $id_usuario AND id_cliente = 5 AND estado = 1 AND total_ventas = 1";
    $data = $this->select($sql);
    return $data;

}

public function banconacion($id_usuario){
    $sql = "SELECT SUM(total) AS total FROM ventas WHERE id_usuario = $id_usuario AND id_cliente = 6 AND estado = 1 AND total_ventas = 1";
    $data = $this->select($sql);
    return $data;

}

public function otros($id_usuario){
    $sql = "SELECT SUM(total) AS total FROM ventas WHERE id_usuario = $id_usuario AND id_cliente = 7 AND estado = 1 AND total_ventas = 1";
    $data = $this->select($sql);
    return $data;

}



public function anulaciones($id_usuario){
    $sql = "SELECT SUM(total) AS suma_total, COUNT(*) AS total_anulaciones FROM ventas WHERE estado = 0 AND id_usuario = $id_usuario AND apertura = 0 AND total_ventas = 1";
    $data = $this->select($sql);
    return $data; 
}




public function traerCorreo(){
    $sql = "SELECT * FROM configuracion";
    $data = $this->select($sql);
    return $data;
    
}




}