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

class AdministracionModel extends Query {
    private $codigo, $nombre, $precio_compra, $id_medida, $id_categoria,$id_produc,$cantida,$categorias,$medidas,
    $precio_venta,$cantidad, $id, $estado, $img, $cantidades, $producto, $categoria, $medida;
    public function __construct() {
        parent::__construct();
    }

    public function consultar_usuarios_ac(){
        $sql = "SELECT COUNT(*) AS total_ac FROM `usuario` WHERE estado = 1";
        $data = $this->select($sql);
        return $data;
    }
    public function consultar_usuarios_inac(){
        $sql = "SELECT COUNT(*) AS total_inac FROM `usuario` WHERE estado = 0";
        $data = $this->select($sql);
        return $data;
    }
    public function lista_de_roles(){
        $sql = "SELECT * FROM roles WHERE estado = 1";
        $data = $this->selectAll($sql);
        return $data;
    }
    public function dni_activo($dni){
        $sql = "SELECT * FROM usuario WHERE dni = $dni";
        $data = $this->select($sql);
        return $data;
    }
    public function registrar_nuevo_user($usuario, $nombre, $apellidos, $fecha, $hora, $clave, $dni, $celular, $id_rol){
    $sql = "INSERT INTO usuario (usuario, nombre, apellidos, fecha, hora, clave, dni, cel, id_rol) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)";
    $datos = array($usuario, $nombre, $apellidos, $fecha, $hora, $clave, $dni, $celular, $id_rol);
    $data = $this->save($sql, $datos);
    return $data;
    }
    public function mostrar_usuarios(){
        $sql = "SELECT u.*, r.nombre as nombre_rol FROM usuario u INNER JOIN roles r ON u.id_rol = r.id WHERE u.estado = 1";
        $data = $this->selectAll($sql);
        return $data;
    }
    public function consulta_user($id_user){
        $sql = "SELECT u.*, r.nombre AS funcion FROM  usuario u INNER JOIN roles r ON u.id_rol = r.id  WHERE u.id = $id_user AND u.estado = 1 ";
        $data = $this->select($sql);
        return $data;
    }
    public function datos_para_corregir($id_user, $nombre, $apellidos, $dni, $celular, $id_rol, $usuario, $clave){
        $sql = "UPDATE usuario SET nombre = ?, apellidos = ?, dni = ?, cel = ?, id_rol = ?, usuario = ?, clave = ? WHERE id = ?";
        $datos = array($nombre, $apellidos, $dni, $celular, $id_rol, $usuario, $clave, $id_user);
        $data = $this->save($sql, $datos);
        return $data;
    }
    public function lista_de_eliminados(){
        $sql = "SELECT * FROM usuario WHERE estado = 0";
        $data = $this->selectAll($sql);
        return $data;
    }
    public function lista_modulos() {
        $sql = "SELECT * FROM modulos";
        $data = $this->selectAll($sql);
        return $data;
    }
    public function cargar_roles_modulos($rol_nuevo, $modulos){

        // 1. Insertar rol
        $sqlRol = "INSERT INTO roles (nombre) VALUES (?)";
        $guardarRol = $this->save($sqlRol, [$rol_nuevo]);

        if (!$guardarRol) {
            return "error";
        }

        // 2. Obtener ID del rol recién insertado
        $sqlId = "SELECT LAST_INSERT_ID() AS id";
        $idRol = (int)$this->select($sqlId)['id'];

        // 3. Insertar módulos del rol
        foreach ($modulos as $id_modulo) {
            $sql = "INSERT INTO config_roles (id_rol, id_modulos) VALUES (?, ?)";
            $this->save($sql, [$idRol, $id_modulo]);
        }

        return "ok";
    }
    public function usuarios_eliminados(){
        $sql = "SELECT u.*, r.nombre as nombre_rol FROM usuario u INNER JOIN roles r ON u.id_rol = r.id WHERE u.estado = 0";
        $data = $this->selectAll($sql);
        return $data;
    }
    public function activar_usuario($estado, $id_user){
        $sql = "UPDATE usuario SET estado = ? WHERE id = ?";
        $datos = array($estado, $id_user);
        $data = $this->save($sql, $datos);
        return $data;
    }
        public function desactivar_user($estado, $id_user){
        $sql = "UPDATE usuario SET estado = ? WHERE id = ?";
        $datos = array($estado, $id_user);
        $data = $this->save($sql, $datos);
        return $data;
    }
    public function detalles_usuarios($id_user){
        $sql = "SELECT u.*, r.nombre as nombre_rol FROM  usuario u  INNER JOIN roles r ON u.id_rol = r.id  WHERE u.id = $id_user";
        $data = $this->select($sql);
        return $data;
    }
    public function verificar_rol_user($id_user){
        $sql = "SELECT * FROM usuario WHERE estado = 1 AND id = $id_user";
        $data = $this->select($sql);
        return $data;
    }
    public function permisos_roles($id_rol, $modulos){
        $sql = "SELECT * FROM config_roles WHERE id_rol = $id_rol AND id_modulos = $modulos";
        $data = $this->select($sql);
        return $data;
    }

    public function consultar_dispensadores(){
        $sql = "SELECT * FROM lista_isla ";
        $data = $this->selectAll($sql);
        return $data;
    }
    public function preparar_apertura($arqueo){
        $sql = "UPDATE estado SET arqueo = ? WHERE id = ?";
        $datos = array($arqueo, 1);
        $data = $this->save($sql, $datos);
        return $data;
    }
    public function ver_cierre_de_caja(){
        $sql = "SELECT arqueo FROM estado WHERE id = 1";
        $data = $this->select($sql);
        return $data;
    }
    public function actualizarNumeracion($id, $turno)
    {
        $sql = "UPDATE lista_isla 
                SET estado = 1, turno = ?
                WHERE id = ?";
        return $this->save($sql, [ $turno, $id]);
    }
        public function actualizarNumeracion_cierre($id, $numeracion, $turno)
    {
        $sql = "UPDATE lista_isla 
                SET estado = 0, numeracion = ?, turno = ?
                WHERE id = ?";
        return $this->save($sql, [$numeracion, $turno, $id]);
    }
    public function obtenerCombustible($id)
        {
    $sql = "SELECT combustible FROM lista_isla WHERE id = $id";
    return $this->select($sql);
        }
          
        public function registrar_inicio($isla, $lado, $combustible, $numeracion, $turno, $id_user, $id_lista)
    {
    // Zona horaria Perú
    date_default_timezone_set('America/Lima');

    $fecha = date('Y-m-d');
    $hora  = date('H:i:s');

    $sql = "INSERT INTO historial_inicio 
            (isla, lado, combustible, numeracion, fecha, hora, turno, id_user, id_lista)
            VALUES (?,?,?,?,?,?,?,?,?)";

    $datos = [
        $isla,
        $lado,
        $combustible,
        $numeracion,
        $fecha,
        $hora,
        $turno,
        $id_user,
        $id_lista
    ];

    return $this->save($sql, $datos);
    }


public function Registrar_historia($isla, $lado, $combustible, $numeracion, $turno, $id_user, $id_lista)
{
    // Zona horaria Perú
    date_default_timezone_set('America/Lima');

    $fecha = date('Y-m-d');
    $hora  = date('H:i:s');

    $sql = "INSERT INTO historia_dispensador 
            (isla, lado, combustible, numeracion, fecha, hora, turno, id_user, id_lista)
            VALUES (?,?,?,?,?,?,?,?,?)";

    $datos = [
        $isla,
        $lado,
        $combustible,
        $numeracion,
        $fecha,
        $hora,
        $turno,
        $id_user,
        $id_lista
    ];

    return $this->save($sql, $datos);
}

public function verificar_tabla_aperturada(){
    $sql = "SELECT * FROM lista_isla WHERE estado = 0";
    $data = $this->select($sql);
    return $data;
}

public function guardar_seguridad_dispensador($disp)
{
    $sql = "UPDATE seguridad_dispensadores
            SET
                isla        = ?,
                lado        = ?,
                combustible = ?,
                numeracion  = ?,
                turno       = ?
            WHERE id_lista = ?";

    $datos = [
        $disp['isla'],
        $disp['lado'],
        $disp['combustible'],
        $disp['numeracion'],
        $disp['turno'],
        $disp['id'] // 👈 ESTE ES id_lista
    ];

    return $this->save($sql, $datos);
}

public function suma_hisla_1_A(){
    $sql = "SELECT SUM(numeracion) FROM historial_inicio WHERE lado = A AND isla = 1";
    $data = $this->select($sql);
    return $data;
}
public function suma_hisla_1_B(){
    $sql = "SELECT SUM(numeracion) FROM historial_inicio WHERE lado = B AND isla = 1";
    $data = $this->select($sql);
    return $data;
}
public function suma_hisla_2_A(){
    $sql = "SELECT SUM(numeracion) FROM historial_inicio WHERE lado = A AND isla = 2";
    $data = $this->select($sql);
    return $data;
}
public function suma_hisla_2_B(){
    $sql = "SELECT SUM(numeracion) FROM historial_inicio WHERE lado = A AND isla = 2";
    $data = $this->select($sql);
    return $data;
}
public function consultar_detalles_islas($id){
    $sql = "SELECT * FROM lista_isla WHERE id = $id";
    $data = $this->select($sql);
    return $data;
}

public function consultar_detalles_islas_2($id){
    $sql = "SELECT * FROM seguridad_dispensadores WHERE id = $id";
    $data = $this->select($sql);
    return $data;
}
public function precio_combustible($combustible){
    $sql = "SELECT * FROM combustibles WHERE nombre = '$combustible'";
    return $this->select($sql);
}

            

public function detalles_de_ventas($isla, $lado, $combustible, $numeracion_menor, $numeracion_mayor, $galones_vendidos, $total_venta, $precio, $turno, $fecha, $hora, $id_user, $id_ventas){
    $sql = "INSERT INTO detalles_resultados (isla, lado, combustible, numeracion_inicio, numeracion_salida, galones, total, pu, turno, fecha, hora, id_user, id_ventas)VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?)";
    $datos = array($isla, $lado, $combustible, $numeracion_menor, $numeracion_mayor, $galones_vendidos, $total_venta, $precio, $turno, $fecha, $hora, $id_user, $id_ventas);
    $data = $this->save($sql, $datos);
    return $data; 
}
public function insertar_datos_ventas($id_user, $turno, $fecha){
    $sql = "INSERT INTO ventas (id_user, turno, fecha) VALUES (?,?,?)";
    $datos = array($id_user, $turno, $fecha);
    $data = $this->save($sql, $datos);
    return $data;
}


public function seleccionar_maximo_id_ventas($id_user, $turno){
    $sql = "SELECT MAX(id) AS ultimo_id 
            FROM ventas 
            WHERE id_user = $id_user AND turno = $turno AND estado = 1";
    $data = $this->select($sql);
    return $data;
}

public function datos_consultas($isla){
    date_default_timezone_set('America/Lima');
    $fecha = date('Y-m-d');
    $sql = "SELECT * FROM detalles_resultados WHERE fecha = '$fecha' AND isla = $isla";
    $data = $this->selectAll($sql);
    return $data;
}
public function combustibles(){
    $sql = "SELECT * FROM combustibles";
    $data = $this->selectAll($sql);
    return $data;
}

public function precio_actualizar($precio_diesel, $id){
    $sql = "UPDATE combustibles SET precio = ? WHERE id= ? ";
    $datos = array($precio_diesel, $id);
    $data = $this->save($sql, $datos);
    return $data;
}
public function consulta_cantidades($id){
    $sql = "SELECT * FROM estado WHERE id = $id";
    $data = $this->select($sql);
    return $data;
}
public function actualizar_datos($sumar, $id){
    $sql = "UPDATE estado SET cantidad = ? WHERE id = ?";
    $datos = array($sumar, $id);
    $data = $this->save($sql, $datos);
    return $data;
}
public function actualizar_apertura_dispensador(){
    $sql = "UPDATE estado SET cantidad = ? WHERE id = ?";
    $datos = array(1, 1);
    $data = $this->save($sql, $datos);
    return $data;
    }
    public function actualizar_apertura_dispensador_1(){
    $sql = "UPDATE estado SET cantidad = ? WHERE id = ?";
    $datos = array(0, 1);
    $data = $this->save($sql, $datos);
    return $data;
    }
    public function actualizar_cierre_dispensador(){
    $sql = "UPDATE estado SET cantidad = ? WHERE id = ?";
    $datos = array(1, 2);
    $data = $this->save($sql, $datos);
    return $data;
    }
    public function actualizar_cierre_dispensador_1(){
    $sql = "UPDATE estado SET cantidad = ? WHERE id = ?";
    $datos = array(0, 2);
    $data = $this->save($sql, $datos);
    return $data;
    }
    public function verificar_apertura_dispensadores($id){
        $sql = "SELECT * FROM estado WHERE id = $id";
        $data = $this->select($sql);
        return $data;
    }

    public function verificar_lista_de_inicio($isla, $turno, $fecha){
        $sql = "SELECT * FROM historial_inicio WHERE isla = $isla AND turno = $turno AND fecha = '$fecha'";
        $data = $this->select($sql);
        return $data;

    }

       public function verificar_lista_de_cierre($isla, $turno, $fecha){
        $sql = "SELECT * FROM historia_dispensador WHERE isla = $isla AND turno = $turno AND fecha = '$fecha'";
        $data = $this->select($sql);
        return $data;

    }


public function actualizar_estock($stock, $id){
    $sql = "UPDATE combustibles SET galones = ? WHERE id= ? ";
    $datos = array($stock, $id);
    $data = $this->save($sql, $datos);
    return $data;
}
public function isla_1_DIESEL(){

    date_default_timezone_set('America/Lima');
    $fecha = date('Y-m-d');

    $sql = "SELECT IFNULL(SUM(galones), 0) as isla_1_diesel
            FROM detalles_resultados 
            WHERE isla = 1 
            AND combustible = 'DIESEL' 
            AND fecha = '$fecha'";

    $data = $this->select($sql);
    return $data;
}

public function isla_1_REGULAR(){

    date_default_timezone_set('America/Lima');
    $fecha = date('Y-m-d');

    $sql = "SELECT IFNULL(SUM(galones), 0) as isla_1_regular
            FROM detalles_resultados 
            WHERE isla = 1 
            AND combustible = 'REGULAR' 
            AND fecha = '$fecha'";

    $data = $this->select($sql);
    return $data;
}

public function isla_2_DIESEl(){

    date_default_timezone_set('America/Lima');
    $fecha = date('Y-m-d');

    $sql = "SELECT IFNULL(SUM(galones), 0) as isla_2_diesel
            FROM detalles_resultados 
            WHERE isla = 2 
            AND combustible = 'DIESEL' 
            AND fecha = '$fecha'";

    $data = $this->select($sql);
    return $data;
}


public function isla_2_regular(){

    date_default_timezone_set('America/Lima');
    $fecha = date('Y-m-d');

    $sql = "SELECT IFNULL(SUM(galones), 0) as isla_2_regular 
            FROM detalles_resultados 
            WHERE isla = 2 
            AND combustible = 'REGULAR' 
            AND fecha = '$fecha'";

    $data = $this->select($sql);
    return $data;
}


public function isla_2_primiun(){

    date_default_timezone_set('America/Lima');
    $fecha = date('Y-m-d');

    $sql = "SELECT IFNULL(SUM(galones), 0) as total_primiun
            FROM detalles_resultados 
            WHERE isla = 2 
            AND combustible = 'PRIMIUN' 
            AND fecha = '$fecha'";

    $data = $this->select($sql);
    return $data;
}

public function isla_3_GLP(){

    date_default_timezone_set('America/Lima');
    $fecha = date('Y-m-d');

    $sql = "SELECT IFNULL(SUM(galones), 0) as isla_3_glp 
            FROM detalles_resultados 
            WHERE isla = 3 
            AND combustible = 'GLP' 
            AND fecha = '$fecha'";

    $data = $this->select($sql);
    return $data;
}

public function total_venta_isla1(){

    date_default_timezone_set('America/Lima');
    $fecha = date('Y-m-d');

    $sql = "SELECT IFNULL(SUM(total), 0) as ventas_1 
            FROM detalles_resultados 
            WHERE isla = 1
            AND fecha = '$fecha'";

    $data = $this->select($sql);
    return $data;
}

public function total_venta_isla2(){

    date_default_timezone_set('America/Lima');
    $fecha = date('Y-m-d');

    $sql = "SELECT IFNULL(SUM(total), 0) as ventas_2
            FROM detalles_resultados 
            WHERE isla = 2
            AND fecha = '$fecha'";

    $data = $this->select($sql);
    return $data;
}
public function total_venta_isla3(){

    date_default_timezone_set('America/Lima');
    $fecha = date('Y-m-d');

    $sql = "SELECT IFNULL(SUM(total), 0) as ventas_3 
            FROM detalles_resultados 
            WHERE isla = 3
            AND fecha = '$fecha'";

    $data = $this->select($sql);
    return $data;
}

public function total_ventas_general(){

    date_default_timezone_set('America/Lima');
    $fecha = date('Y-m-d');

    $sql = "SELECT IFNULL(SUM(total), 0) as total_ventas 
            FROM detalles_resultados 
            WHERE fecha = '$fecha'";

    $data = $this->select($sql);
    return $data;
}


public function diesel_total(){

    date_default_timezone_set('America/Lima');
    $fecha = date('Y-m-d');

    $sql = "SELECT IFNULL(SUM(galones), 0) as diesel 
            FROM detalles_resultados 
            WHERE combustible = 'DIESEL' 
            AND fecha = '$fecha'";

    $data = $this->select($sql);
    return $data;
}

public function regular_total(){

    date_default_timezone_set('America/Lima');
    $fecha = date('Y-m-d');

    $sql = "SELECT IFNULL(SUM(galones), 0) as regular 
            FROM detalles_resultados 
            WHERE combustible = 'REGULAR' 
            AND fecha = '$fecha'";

    $data = $this->select($sql);
    return $data;
}


public function primiun_total(){

    date_default_timezone_set('America/Lima');
    $fecha = date('Y-m-d');

    $sql = "SELECT IFNULL(SUM(galones), 0) as primiun 
            FROM detalles_resultados 
            WHERE combustible = 'PRIMIUN' 
            AND fecha = '$fecha'";

    $data = $this->select($sql);
    return $data;
}


public function glp_total(){

    date_default_timezone_set('America/Lima');
    $fecha = date('Y-m-d');

    $sql = "SELECT IFNULL(SUM(galones), 0) as glp 
            FROM detalles_resultados 
            WHERE combustible = 'GLP' 
            AND fecha = '$fecha'";

    $data = $this->select($sql);
    return $data;
}

public function mostrar_medios_de_pagos(){
    $sql = "SELECT * FROM tipo_pagos WHERE estado = 1";
    $data = $this->selectAll($sql);
    return $data;
}


public function clientes_lista(){
    $sql = "SELECT * FROM clientes WHERE estado = 1";
    $data = $this->selectAll($sql);
    return $data;

}
public function combustibles_disponibles(){
    $sql = "SELECT * FROM combustibles";
    $data = $this->selectAll($sql);
    return $data;
}

public function tipos_gastos(){
    $sql = "SELECT * FROM tipos_gastos";
    $data = $this->selectAll($sql);
    return $data;
}

public function cargar_gasto_detallado($data){

    $sql = "INSERT INTO gastos_detallados 
            (id_gasto, id_tipo_de_pago, monto, detalle, fecha, hora) 
            VALUES (?, ?, ?, ?, ?, ?)";

    $datos = [
        $data['id_gasto'],
        $data['id_tipo_de_pago'],
        $data['monto'],
        $data['detalle'],
        $data['fecha'],
        $data['hora']
    ];

    $res = $this->save($sql, $datos);

    if ($res == 1) {
        return "ok";
    } else {
        return "error";
    }
}

public function precio_combustible_id($id_combustible){
       $sql = "SELECT * FROM combustibles WHERE id = $id_combustible";
    return $this->select($sql);
}

public function registrar_venta($cliente_id, $combustible, $galones, $descuento, $subtotal, $total, $estado_de_pago, $cobranza, $id_user, $fecha){
    $sql = "INSERT INTO ventas_clientes (id_cliente, id_combustible, galones, descuento, sub_total, total, modalida, cobranza, id_user, fecha) VALUES (?,?,?,?,?,?,?,?,?,?)";
    $datos = array($cliente_id, $combustible, $galones, $descuento, $subtotal, $total, $estado_de_pago, $cobranza, $id_user, $fecha);
    $data = $this->save($sql, $datos);
    return $data;
}

public function contar_lista($id_user){
    date_default_timezone_set('America/Lima');
    $fecha = date('Y-m-d');

    // Busca por id_user y fecha
    $sql = "SELECT COUNT(*) AS total 
            FROM ventas_clientes 
            WHERE id_user = $id_user 
            AND fecha = '$fecha'";

    $data = $this->select($sql);

    return $data;
}

public function consultas_clientes_registrados($id_user){
    date_default_timezone_set('America/Lima');
    $fecha = date('Y-m-d');

    $sql = "SELECT c.*, l.nombre, m.nombre AS combustible
            FROM ventas_clientes c
            INNER JOIN clientes l ON c.id_cliente = l.id
            INNER JOIN combustibles m ON m.id = c.id_combustible
            WHERE c.id_user = $id_user AND c.fecha = '$fecha'";

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

public function lista_de_gastos(){
    $sql = "SELECT * FROM gastos WHERE estado = 1";
    $data = $this->selectAll($sql);
    return $data;
}

public function registrar_dinero($data){
        date_default_timezone_set('America/Lima');
    $fecha = date('Y-m-d');
    $hora = date('Y-m-d');
    $id_medio = $data["id_medio"];
    $monto = $data["monto"];
    $id_user = $data["id_user"];
    $turno = $data["turno"];
    $id_ventas = $data["id_ventas"];
    $sql = "INSERT INTO detalles_ventas (id_tipo_pagos, monto, fecha, hora, id_user, turno, id_ventas) VALUES (?, ?, ?, ?, ?, ?, ?)";
    $datos = array($id_medio, $monto, $fecha, $hora, $id_user, $turno, $id_ventas);
    return $this->save($sql, $datos);
}
public function permitir_apertura(){
    $sql = "UPDATE estado SET arqueo = ? WHERE id = ?";
    $datos = array(0, 1);
    $data = $this->save($sql, $datos);
    return $data;
}
public function seleccionar_turno(){
    $sql = "SELECT * FROM lista_isla WHERE id = 1";
    $data = $this->select($sql);
    return $data;
}

public function sumar_total_cierre($id_ventas){
    $sql = "SELECT SUM(monto) as cierre FROM detalles_ventas WHERE id_ventas = $id_ventas";
    $data = $this->select($sql);
    return $data;
}

public function sumar_total_ventas($id_ventas){
    $sql = "SELECT SUM(total) as ventas FROM detalles_resultados WHERE id_ventas = $id_ventas";
    $data = $this->select($sql);
    return $data;
}

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

public function maximo_id_ventas($id_user){
    $sql = "SELECT MAX(id) AS ultimo_id 
            FROM ventas 
            WHERE id_user = $id_user AND  estado = 0";
    $data = $this->select($sql);
    return $data;
}
public function datos_generales_del_dia($fecha){
    $sql = "SELECT d.*, t.nombre FROM detalles_ventas d INNER JOIN tipo_pagos t ON d.id_tipo_pagos = t.id WHERE fecha = '$fecha'";
    $data = $this->selectAll($sql);
    return $data;
}
public function ventas_detallada_general($fecha){
    $sql = "SELECT * FROM detalles_resultados WHERE fecha = '$fecha'";
    $data = $this->selectAll($sql);
    return $data;
}
public function datos_gastos($fecha){
    $sql = "SELECT * FROM gastos WHERE fecha = '$fecha'";
    $data = $this->selectAll($sql);
    return $data;
    }
public function datos_gastos_combustible($fecha){
    $sql = "SELECT g.*, c.nombre  FROM gastos_combustible g INNER JOIN combustibles c ON g.id_combustible = c.id WHERE g.fecha = '$fecha'";
    $data = $this->selectAll($sql);
    return $data;
}
public function datos_gastos_detallados($fecha){
    $sql = "SELECT g.*, t.nombre FROM gastos_detallados g INNER JOIN tipos_gastos t ON g.id_gasto = t.id WHERE g.fecha = '$fecha'";
    $data = $this->selectAll($sql);
    return $data;
}
public function detalles_cierra($id_ventas){
    $sql = "SELECT d.*, t.nombre FROM detalles_ventas d INNER JOIN tipos_gastos t ON d.id_tipo_pagos = t.id WHERE id_ventas = $id_ventas";
    $data = $this->selectAll($sql);
    return $data;
}
public function ventas_detallada($id_ventas){
    $sql = "SELECT * FROM detalles_resultados WHERE id_ventas = $id_ventas";
    $data = $this->selectAll($sql);
    return $data;
}
public function historial_ventas(){
    $sql = "SELECT v.*, u.nombre FROM ventas v INNER JOIN usuario u ON v.id_user = u.id WHERE v.estado = 0 ";
    $data = $this->selectAll($sql);
    return $data;
}
public function sumar_combustibles($id_ventas, $turno, $id_user){
    $sql = "SELECT 
                SUM(CASE WHEN combustible = 'DIESEL' THEN galones ELSE 0 END) as diesel,
                SUM(CASE WHEN combustible = 'REGULAR' THEN galones ELSE 0 END) as regular,
                SUM(CASE WHEN combustible = 'PRIMIUN' THEN galones ELSE 0 END) as primiun,
                SUM(CASE WHEN combustible = 'GLP' THEN galones ELSE 0 END) as glp
            FROM detalles_resultados 
            WHERE id_ventas = $id_ventas 
            AND turno = $turno 
            AND id_user = $id_user";

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

public function actualizar_estock_combustible($galones, $nombre){
    $sql = "UPDATE combustibles 
            SET galones = ? 
            WHERE nombre = ?";
    
    $datos = array($galones, $nombre);
    return $this->save($sql, $datos);
}


public function insertar_historial_estock($id_turno, $id_venta, $id_user, $combustible, $estock_actual, $ventas_galones){

    date_default_timezone_set("America/Lima");

    $fecha = date("Y-m-d");
    $hora  = date("H:i:s");

    $sql = "INSERT INTO historial_estock 
            (id_turno, id_venta, id_user, combustible, estock_actual, ventas_galones, fecha, hora) 
            VALUES (?, ?, ?, ?, ?, ?, ?, ?)";

    $datos = array(
        $id_turno,
        $id_venta,
        $id_user,
        $combustible,
        $estock_actual,
        $ventas_galones, // 👈 nuevo dato
        $fecha,
        $hora
    );

    return $this->save($sql, $datos);
}


public function datos_lunes_domingo($dias){

    $dias = intval($dias);

    if($dias == 0){

        $sql = "SELECT *
                FROM ventas
                ORDER BY id DESC";

    }else{

        $dias = $dias - 1;

        $sql = "SELECT *
                FROM ventas
                WHERE fecha >= (
                    SELECT DATE_SUB(MAX(fecha), INTERVAL $dias DAY)
                    FROM ventas
                )
                ORDER BY id DESC";

    }

    return $this->selectAll($sql);
}







public function insertar_compra_combustible(
    $combustible,
    $modo_pago,
    $precio_compra,
    $galones,
    $precio_venta,
    $total,
    $detalles,
    $id_user
){

    // 🔥 ZONA HORARIA PERÚ
    date_default_timezone_set('America/Lima');

    // 📅 FECHA Y HORA DESDE EL SERVIDOR
    $fecha = date('Y-m-d');
    $hora  = date('H:i:s');

    $sql = "INSERT INTO gastos_combustible 
    (id_combustible, id_pago, p_compra, galones, p_venta, total, detalle, id_user, fecha, hora) 
    VALUES (?,?,?,?,?,?,?,?,?,?)";

    $datos = array(
        $combustible,
        $modo_pago,
        $precio_compra,
        $galones,
        $precio_venta,
        $total,
        $detalles,
        $id_user,
        $fecha,
        $hora
    );

    return $this->save($sql, $datos);
}
public function estock_actual_combustible($combustible){
    $sql = "SELECT * FROM combustibles WHERE id = $combustible";
    $data = $this->select($sql);
    return $data;
}
public function actualisar_estock_combustible($galones_actual, $precio_venta, $precio_compra, $combustible){
    $sql = "UPDATE combustibles 
            SET galones = ?, 
                precio = ?, 
                precio_compra = ? 
            WHERE id = ?";
    
    $datos = array($galones_actual, $precio_venta, $precio_compra, $combustible);
    $data = $this->save($sql, $datos);
    return $data;
}
public function insertar_gasto(
    $modo_pago,
    $monto,
    $detalle,
    $id_user,
    $fecha,
    $hora
){
    $sql = "INSERT INTO gastos 
    (id_pago, monto, detalle, id_user, fecha, hora) 
    VALUES (?,?,?,?,?,?)";

    $datos = array(
        $modo_pago,
        $monto,
        $detalle,
        $id_user,
        $fecha,
        $hora
    );

    return $this->save($sql, $datos);
}

public function total_por_pago_hoy($id_pago){

    $sql = "SELECT IFNULL(SUM(monto),0) as total 
            FROM detalles_ventas 
            WHERE id_tipo_pagos = $id_pago
             AND estado = 1";

    return $this->select($sql);
}





public function obtener_gastos_hoy() {

    $sql = "SELECT 
                mp.id as id_medio,
                mp.nombre,
                g.*
            FROM tipo_pagos mp
            INNER JOIN gastos g 
                ON g.id_pago = mp.id
            WHERE g.estado = 1";

    return $this->selectAll($sql);
}

public function obtener_gastos_combustible() {

    $sql = "SELECT 
                mp.id as id_medio,
                mp.nombre,
                gc.*
            FROM tipo_pagos mp
            INNER JOIN gastos_combustible gc 
                ON gc.id_pago = mp.id
            WHERE gc.estado = 1";

    return $this->selectAll($sql);
}

public function actualizar_caja_por_id($id, $caja){
    $sql = "UPDATE tipo_pagos 
            SET Caja = ? 
            WHERE id = ?";

    $array = array($caja, $id);
    return $this->save($sql, $array);
}

public function actualizar_detalles_ventas(){
    $sql = "UPDATE detalles_ventas SET estado = ?";
    $array = array(0);
    return $this->save($sql, $array);
}
public function actualizar_gastos(){
    $sql = "UPDATE gastos SET estado = ?";
    $array = array(0);
    return $this->save($sql, $array);
}
public function actualizar_gastos_combustible(){
    $sql = "UPDATE gastos_combustible SET estado = ?";
    $array = array(0);
    return $this->save($sql, $array);
}
public function traer_clientes(){
    $sql = "SELECT * FROM clientes  WHERE estado = 1";
    $data = $this->selectAll($sql);
    return $data;
}
public function clientes_por_pagos(){
    $sql = "SELECT 
                v.id,
                v.id_cliente,
                v.total,
                v.cobranza,
                c.nombre  
            FROM ventas_clientes v 
            INNER JOIN clientes c ON v.id_cliente = c.id 
            WHERE v.modalida = 1";

    return $this->selectAll($sql);
}
public function gastos_simples(){
    $sql = "SELECT g.*, t.nombre FROM gastos g INNER JOIN tipo_pagos t ON g.id_pago = t.id WHERE g.estado = 0";
    $data = $this->selectAll($sql);
    return $data;
}
public function gastos_detallados(){
    $sql = "SELECT g.*, t.nombre FROM gastos_detallados g INNER JOIN tipos_gastos t ON g.id_gasto = t.id WHERE g.estado = 1";
    $data = $this->selectAll($sql);
    return $data;
}

public function compras_combustibles() {
    $sql = "SELECT g.*, c.nombre, t.nombre as pago FROM gastos_combustible g INNER JOIN combustibles c ON g.id_combustible = c.id INNER JOIN tipo_pagos t ON g.id_pago = t.id WHERE g.estado = 0";
    $data = $this->selectAll($sql);
    return $data;
}














 






















    public function medios_pagos(){
    $sql = "SELECT * FROM tipo_pagos WHERE estado = 1";
    $data = $this->selectAll($sql);
    return $data;
}

public function actualizar_medis_actual($medio_actual, $id_medios){
    $sql = "UPDATE tipo_pagos SET nombre = ? WHERE id = ?";
    $datos = array($medio_actual, $id_medios);
    $data = $this->save($sql,$datos);
    return $data;
}

public function nuevo_pago($nuevo){
    $sql = "INSERT INTO tipo_pagos (nombre) VALUES (?)";
    $datos = array($nuevo);
    $data = $this->save($sql, $datos);
    return $data;
}

public function eliminar_medios($id){
    $sql = "UPDATE tipo_pagos SET estado = ? WHERE id = ?";
    $datos = array(0, $id);
    $data = $this->save($sql,$datos);
    return $data;
 }

    public function getEmpresa() {
        $sql = "SELECT * FROM empresa";
        $data = $this->select($sql);
        return $data;
       }
    public function Nuevo_registro_producto($nombre,$codigo,$cantidad,$precio_compra,$precio_venta,$presentacion,$categoria,$fecha_vencimiento,$imgNombre, $fecha_registro){
    $sql = "INSERT INTO productos (producto, codigo, cantidad, precio_compra, precio_venta, id_presentacion, id_categoria, fecha_vencimiento,	img_producto, fecha_registro) VALUES(?,?,?,?,?,?,?,?,?,?)";
    $datos = array($nombre,$codigo,$cantidad,$precio_compra,$precio_venta,$presentacion,$categoria,$fecha_vencimiento, $imgNombre, $fecha_registro);
    $data = $this->save($sql, $datos);
     return $data
    ? ["status" => "ok", "msg" => "Producto registrado"]
    : ["status" => "error", "msg" => "Error al registrar"];
    }

    public function lista_categoria(){
        $sql = "SELECT * FROM categoria WHERE estado = 1";
        $data = $this->selectAll($sql);
        return $data;
    }
       public function lista_presentacion(){
        $sql = "SELECT * FROM presentacion WHERE estado = 1";
        $data = $this->selectAll($sql);
        return $data;
    }

public function productos_base(){
    $sql = "SELECT p.*, c.nombre AS categoria, r.nombre AS presentacion
            FROM productos p
            LEFT JOIN categoria c ON c.id = p.id_categoria
            LEFT JOIN presentacion r ON r.id = p.id_presentacion
            WHERE p.estado = 1";
    $data = $this->selectAll($sql);
    return $data;
}
public function detalles_base_producto($id_producto){
    $sql = "SELECT p.*, c.nombre AS categoria, r.nombre AS presentacion
            FROM productos p
            LEFT JOIN categoria c ON c.id = p.id_categoria
            LEFT JOIN presentacion r ON r.id = p.id_presentacion
            WHERE p.id = $id_producto";
    $data = $this->select($sql);
    return $data; 
}

public function nuevo_datos_producto(
    $id_producto,
    $nombre_nuevo,
    $codigo_nuevo,
    $cantidad_actualisada,
    $precio_compra_actualizado,
    $precio_actualizado,
    $id_presentacion,
    $id_categoria,
    $vencimiento_actualizado,
    $imgNombre
) {
    $sql = "UPDATE productos 
            SET producto = ?, 
                codigo = ?, 
                cantidad = ?, 
                precio_compra = ?, 
                precio_venta = ?, 
                id_presentacion = ?, 
                id_categoria = ?, 
                fecha_vencimiento = ?,
                img_producto = ?
            WHERE id = ?";

    $datos = array(
        $nombre_nuevo,
        $codigo_nuevo,
        $cantidad_actualisada,
        $precio_compra_actualizado,
        $precio_actualizado,
        $id_presentacion,
        $id_categoria,
        $vencimiento_actualizado,
        $imgNombre,
        $id_producto
    );

    return $this->save($sql, $datos);
}
public function cambiar_estado_producto($id_producto){
    $sql = "UPDATE productos SET estado = ? WHERE id = ?";
    $datos = array(0, $id_producto);
    $data = $this->save($sql, $datos);
    return $data;
}

public function presentacion_nuevo($nueva_registro)
{
    $sql = "INSERT INTO presentacion (nombre, estado) VALUES (?, ?)";
    $datos = array($nueva_registro, 1);
    return $this->save($sql, $datos);
}

public function categoria_nuevo($nueva_registro)
{
    $sql = "INSERT INTO categoria (nombre, estado) VALUES (?, ?)";
    $datos = array($nueva_registro, 1);
    return $this->save($sql, $datos);
}
public function lista_presentaciones(){
    $sql = "SELECT * FROM presentacion WHERE estado = 1";
    $data = $this->selectAll($sql);
    return $data;
}

public function lista_categorias(){
    $sql = "SELECT * FROM categoria WHERE estado = 1";
    $data = $this->selectAll($sql);
    return $data;
}
public function cambio_categoria($nuevo_cambio, $id_categoria){
    $sql = "UPDATE categoria SET nombre = ? WHERE id = ?";
    $datos = array($nuevo_cambio, $id_categoria);
    $data = $this->save($sql, $datos);
    return $data;
}

public function cambio_presentacion($nuevo_cambio, $id_presentacion){
    $sql = "UPDATE presentacion SET nombre = ? WHERE id = ?";
    $datos = array($nuevo_cambio, $id_presentacion);
    $data = $this->save($sql, $datos);
    return $data;
}


































       public function getDatos(string $table) {
        $sql = "SELECT COUNT(*) AS total FROM $table";
        $data = $this->select($sql);
        return $data;
       }
       public function getVentas() {
        $sql = "SELECT COUNT(*) AS total FROM ventas WHERE fecha > CURDATE()";
        $data = $this->select($sql);
        return $data;
       }


       public function modificar(string $ruc, string $nombre, string $tel, string $dir,string $usuarios, string $claveSol, string $mensaje, string $gmail, int $id){

          $sql = "UPDATE configuracion SET ruc = ?,nombre = ?,telefono = ?, direccion = ?, usuario_sol =?, clave_sol = ? ,mensaje = ?, gmail = ? WHERE id=? ";
    
            $datos = array($ruc, $nombre, $tel, $dir,$usuarios,$claveSol, $mensaje, $gmail, $id);
            $data = $this->save($sql, $datos);
            if ($data == 1) {
                $res = "ok";
            } else {
                $res = "error";   
            }
            return $res;
        }

          public function getStockMinimo(){
            $sql = "SELECT p.descripcion, p.cantidad, p.id_medida, m.nombre_corto FROM productos p INNER JOIN medidas m ON m.id = p.id_medida WHERE (p.cantidad <= 15 OR p.cantidad = 0) AND p.estado = 1 ORDER BY p.cantidad DESC LIMIT 20";
            $data = $this->selectAll($sql);
            return $data;
            
        }
        public function getproductosVendidos(){
            $sql = "SELECT d.id_producto, p.id, p.descripcion, SUM(d.cantidad) AS total 
            FROM detalle_ventas d 
            INNER JOIN productos p ON p.id = d.id_producto 
            GROUP BY d.id_producto, p.id, p.descripcion 
            ORDER BY total DESC 
            LIMIT 10
            ";
            $data = $this->selectAll($sql);
            return $data;
            
        }



        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 traeMedidas() {

            $sql = "SELECT * FROM `medidas` WHERE estado = 1";
            $data = $this->selectAll($sql);
            return $data;} 
            
        public function traeCategorias() {
    
            $sql = "SELECT * FROM `categorias` WHERE estado = 1";
            $data = $this->selectAll($sql);
            return $data;}
        
        

        // secciones administrativos 


        //consulta de registrar ingesos de nuevo producto producto 

        public function registrarProductosdePros(string $codigo, string $nombre, string $precio_compra, string $precio_venta,string $cantidad, int $id_medida, int $id_categoria, string $img) {
            $this->codigo=$codigo;
            $this->nombre=$nombre;
            $this->precio_compra=$precio_compra;
            $this->precio_venta=$precio_venta;
            $this->cantidad=$cantidad;
            $this->id_medida=$id_medida;
            $this->id_categoria=$id_categoria;
           
            $this->img=$img;
    
    
            $verificar = "SELECT * FROM `productos` WHERE codigo = '$this->codigo'";
            $existe = $this->select($verificar);
            if (empty($existe)) {
                $sql = "INSERT INTO `productos` (codigo, descripcion, precio_compra, precio_venta,cantidad ,id_medida, id_categoria, foto) VALUES (?, ?, ?, ?, ?, ?, ?, ?)";
                $datos = array($this->codigo, $this->nombre, $this->precio_compra, $this->precio_venta,$this->cantidad, $this->id_medida, $this->id_categoria, $this->img);
                $data = $this->save($sql, $datos); 
              
        
                if ($data == 1) {
                    $res = "ok";
                } else {
                    $res = "error";
                }
            } else {
                $res = "existe";
            }
        
            return $res;
        }
        
      
        public function getProCodeggg(string $id){
            $sql= "SELECT * FROM `productos` WHERE codigo ='$id'" ;
            $data= $this->select($sql);
            return $data;
            
        }

        public function editarPro(int $id)
    {
        $sql = "SELECT * FROM productos WHERE id = $id";
        $data = $this->select($sql, [$id]);
        return $data;
    }

    public function modificarproducion($codigo, $descripcion, $precio_compra, $precio_venta, $stock, $id_producto){
        $sql = "UPDATE productos SET codigo = ?, descripcion = ?, precio_compra = ?, precio_venta = ?, cantidad = ? WHERE id = ?";
        $datos = array($codigo, $descripcion, $precio_compra, $precio_venta, $stock, $id_producto);
        $data = $this->save($sql, $datos);
        return $data;
      
    }
    

    
    public function getProductosss(int $id_producto){
        $sql= "SELECT * FROM `productos` WHERE id = $id_producto";
        $data= $this->select($sql);
        return $data;   
    }
    public function actualizarStockss(int $cantidad, int $id_producto){
        $sql ="UPDATE productos SET cantidad = ? WHERE id = ?";
        $datos =array($cantidad,$id_producto);
        $data =$this->save($sql, $datos);
        return $data;
        
    }

  


    public function getproductosGeneral() {
        $sql = "SELECT p.descripcion, p.cantidad, p.id_medida, m.nombre_corto
        FROM productos p
        INNER JOIN medidas m ON m.id = p.id_medida
        WHERE p.estado = 1;
        ";
        $data = $this->selectAll($sql);
        return $data;
    }






 
    
  
    public function traecierrecaja(){
        $sql = "SELECT a.*, u.nombre AS nombre_usuario 
                FROM sistemas_de_arqueo a
                LEFT JOIN usuario =  u ON a.id_usuario = u.id
                WHERE a.estado = 0 AND a.est_button = 1
                  AND u.estado = 1"; 
        $data = $this->selectAll($sql);
        return $data;
    }
    
    
    public function cajaActivo(){
        $sql = "SELECT a.*, u.nombre AS nombre_usuario FROM sistemas_de_arqueo a
                LEFT JOIN usuario u ON a.id_usuario = u.id
                WHERE a.estado = 1 AND a.est_button = 1";
        $data = $this->selectAll($sql);
        return $data;
    }
    
    
    
    
    
    public function SELECIONARinventario_temp(){
      $sql = "SELECT id, producto, cantidad, categoria,	medida,	estado FROM inventario_temp WHERE estado = 1 ";
      $data = $this->selectAll($sql);
      return $data;
    }
        
    public function traerinventario() {
        $sql = "SELECT id, producto, cantidad, categoria, medida, estado FROM inventario WHERE estado = 1";
        $data = $this->selectAll($sql);
        return $data;
    }


    public function selecionarProductos() {
     $sql = "SELECT p.id, p.descripcion, p.cantidad, m.nombre AS medida, c.nombre AS categoria FROM productos p INNER JOIN medidas m ON p.id_medida = m.id INNER JOIN categorias c ON p.id_categoria = c.id WHERE p.estado = 1;";
    $data = $this->selectAll($sql);
    return $data;
    }


    public function RegisInventarioTemp(string $productos, string $resultado, string $categoria,string $medida, int $id_inventrio){
        $verificar = "SELECT * FROM inventario_temp WHERE id_inventario = $id_inventrio";
        $esxiste = $this->select($verificar);
        if (empty($esxiste)) {
        $sql = "INSERT INTO`inventario_temp` (producto, cantidad, categoria, medida, id_inventario) VALUES (?, ?, ?, ?, ?)";
        $datos = array($productos, $resultado, $categoria, $medida, $id_inventrio);
        $data = $this->save($sql, $datos);
        return $data;
    }
    }
    
    public function ActualizarEsT(){
        $sql = "UPDATE inventario SET estado = ?";
        $datos =array(0); 
        $data = $this->save($sql, $datos);  
        if ($data == 1) {
           $sql = " UPDATE inventario_temp SET estado = ?";
           $datos =array(0); 
           $data = $this->save($sql, $datos); 
            return $data;
        }
    }


    public function vaciartabla() {
    $sql = "TRUNCATE TABLE inventario_temp";
    $data = $this->save($sql, []);
    if ($data == 1) {
        $res = "ok";
    } else {
        $res = "error";
    }
    return $res;
}

    
    public function traerTotalVentas() {
        $sql = "SELECT SUM(total) as suma_total FROM ventas WHERE estado = 1 and estado_final = 1 ;";
        $data = $this->selectAll($sql);
        return $data;
    }
    

    public function anulaciones() {
        $sql = "SELECT COUNT(*) FROM ventas WHERE total_ventas = 1 AND estado = 0 and estado_final = 1;";
        $data = $this->selectAll($sql);
        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;
    }
    
    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;
    }

    
public function adelantos($id_usuario) {
    $sql = "SELECT a.monto, u.nombre
            FROM adelantos a
            INNER JOIN usuario u ON a.detalle = u.id
            WHERE a.apertura = 1 AND a.id_usuario = $id_usuario";
    $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 traeradelantos(){
    $sql = "SELECT
    u1.nombre AS cajero,
    a.monto,
    u2.nombre AS personal,
    a.fecha,
    a.estado
FROM adelantos a
INNER JOIN usuario u1 ON a.id_usuario = u1.id
INNER JOIN usuario u2 ON a.detalle = u2.id
WHERE a.estado = 1;
";
    $data = $this->selectAll($sql);
    return $data;
}
  

public function obtenerArqueos(){
    $sql = "SELECT a.*, u.nombre AS nombre_usuario FROM sistemas_de_arqueo a LEFT JOIN usuario =  u ON a.id_usuario = u.id  WHERE a.estado = 0 AND u.estado = 1;";
    $data = $this->selectAll($sql);
    return $data;

}


public function obteneringresos(){
    $sql = "SELECT i.id, u.nombre AS nombre_usuario, i.monto, i.opciones, i.detalle, i.fecha, i.estado
    FROM ingreso i
    INNER JOIN usuario u ON i.id_usuario = u.id
    WHERE i.estado = 1;
";
    $data = $this->selectAll($sql);
    return $data;
}

public function obtenerss_egresos(){
    $sql = "SELECT i.id, u.nombre AS nombre_usuario, i.monto, i.opciones, i.detalle, i.fecha, i.estado
    FROM egresos i
    INNER JOIN usuario u ON i.id_usuario = u.id
    WHERE i.estado = 1;
"; $data = $this->selectAll($sql);
    return $data;
}

public function udatear_igresos($id_ingreso){
    $sql = "UPDATE ingreso SET estado = ? WHERE id=?";
    $datos = array(0, $id_ingreso);
    $data = $this->save($sql, $datos);
    return $data;
    
}

public function udatear_egress($id_egresos){
    $sql = "UPDATE egresos SET estado = ? WHERE id=?";
    $datos = array(0, $id_egresos);
    $data = $this->save($sql, $datos);
    return $data;
    
}




public function sumargananciapor_usuario(){
    $sql = "SELECT u.nombre AS nombre_usuario, g.fecha, SUM(g.ganancia) as ganancia_total
    FROM ganancias g
    INNER JOIN usuario u ON g.id_usuario = u.id
    WHERE g.estado = 1
    GROUP BY u.nombre;";
    $data = $this->selectAll($sql);
    return $data;
}

public function sumarganaciastototal(){
    $sql = "SELECT SUM(ganancia) as ganancias FROM ganancias WHERE estado = 1 and apertura = 1 ";
    $data = $this->selectAll($sql);
    return $data;
}



public function anular_ventas($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 selecionarProductoisRechazados(){
    $sql = "SELECT id, cantidad, categoria, medida, id_inventario FROM inventario_temp WHERE estado = 1";
    $data = $this->selectAll($sql);
    return $data;

    
}

/// insertr los productos por separados a la base de datos 

public function productosRechazados($id_producto_rechazado, $cantida, $categoria, $medida, $id_inventarios) {
    $res = '';

    // Iterar sobre los arrays por separado
    foreach ($id_producto_rechazado as $key => $id) {
        $verificar = "SELECT * FROM notificacion_inventario WHERE id_inventario_temp = '$id'";
        $existe = $this->select($verificar);

        if (empty($existe)) {
            $sql = "INSERT INTO notificacion_inventario (id_inventario_temp, cantidad, categoria, medida, id_inventario) VALUES (?, ?, ?, ?, ?)";
            $datos = array($id, $cantida[$key], $categoria[$key], $medida[$key], $id_inventarios[$key]);

            $data = $this->save($sql, $datos);

            if ($data == 1) {
                $res = "ok";
            } else {
                $res = "error";
              
            }
        } else {
            $res = "existe";
           
        }
    }

    return $res;
}



public function Descuentos() {
    $sql = "SELECT SUM(descuento) FROM detalle_ventas WHERE estado = 1";
    $data = $this->select($sql);
    return $data;
}

public function mostrarVentasGraficos(){
    $sql = "SELECT fecha, SUM(total) as totalVentas FROM ventas WHERE estado = 1
    GROUP BY fecha;";
    $data = $this->selectAll($sql);
    return $data;
}

public function perdidas(){
    $sql = "SELECT producto, cantidad FROM inventario_temp WHERE estado = 0";
    $data = $this->selectAll($sql);
    return $data;
    
}

public function productosVendidos() {
    $sql = "SELECT dv.id_producto, p.descripcion, SUM(dv.cantidad) as total_cantidad 
    FROM detalle_ventas dv
    JOIN productos p ON dv.id_producto = p.id
    WHERE dv.estado_ganancias = 1
    GROUP BY dv.id_producto, p.descripcion;";
    $data = $this->selectAll($sql);
    return $data;
    
}

// actulizar
public function obtenerdatosActual($id_producto){
    $sql = "SELECT p.id, p.descripcion, p.cantidad, p.id_medida, m.nombre_corto FROM productos p INNER JOIN medidas m ON m.id = p.id_medida WHERE p.id = $id_producto";
    $data = $this->select($sql);
    return $data;
}

public function registrarStockActual($id_usuario, $id_productoModificado, $producto, $cantidad_actual, $tipo, $id_medida){
    $sql = "INSERT INTO observaciones (id_usuario, id_producto, producto, cantidad_actual, tipo, id_medida) VALUES (?, ?, ?, ?, ?, ?)";
    $datos = array($id_usuario, $id_productoModificado, $producto, $cantidad_actual, $tipo, $id_medida);
    $data = $this->save($sql, $datos);
    return $data;
}



public function recibirNumeroModificado($stock, $id_producto){
    $sql = "UPDATE observaciones SET actual_actualizado	 = ? WHERE id_producto = ? AND estado = 1";
    $datos = array($stock, $id_producto);
    $data = $this->save($sql, $datos);
    if ($data == 1) {
       $res = "ok";
    }else {
        $res = "error";
    }
    return $res;
  
}


public function contarObservaciones(){
    $sql = "SELECT COUNT(*) AS Datsopor_observar FROM observaciones where estado = 1";
    $data = $this->select($sql);
    return $data ;
}

 
public function user_prueva(){
    $sql = "SELECT * FROM usuario";
    $data = $this->selectAll($sql);
    return $data;
}








}
    
    
    










        
    
    




        
       











?>
