<?php
// Modelo para gestión de ventas directas
require_once "../config/Conexion.php";

class InventarioVentas
{
    public function __construct()
    {
    }

    // Listar ventas
    public function listar()
    {
        $sql = "SELECT v.idventa, v.numero_venta, v.fecha_venta, v.tipo_comprobante,
                v.numero_comprobante, v.total, v.metodo_pago, v.estado,
                CONCAT(p.nombre, ' ', p.apaterno, ' ', p.amaterno) as cliente,
                CONCAT(pu.nombre, ' ', pu.apaterno) as usuario
                FROM inv_ventas v
                LEFT JOIN persona p ON v.idpersona = p.idpersona
                LEFT JOIN persona pu ON v.idusuario = pu.idpersona
                ORDER BY v.fecha_venta DESC
                LIMIT 100";
        return ejecutarConsulta($sql);
    }

    // Insertar venta
    public function insertar(
        $numero_venta,
        $idpersona,
        $idusuario,
        $idatencion,
        $tipo_comprobante,
        $numero_comprobante,
        $subtotal,
        $descuento,
        $impuesto,
        $total,
        $metodo_pago,
        $observaciones
    ) {
        $sql = "INSERT INTO inv_ventas (numero_venta, idpersona, idusuario, idatencion, tipo_comprobante,
                numero_comprobante, subtotal, descuento, impuesto, total, metodo_pago, estado, observaciones)
                VALUES ('$numero_venta', " . ($idpersona ? "'$idpersona'" : "NULL") . ", '$idusuario', " .
            ($idatencion ? "'$idatencion'" : "NULL") . ", '$tipo_comprobante', '$numero_comprobante',
                '$subtotal', '$descuento', '$impuesto', '$total', '$metodo_pago', 'PAGADO', '$observaciones')";
        return ejecutarConsulta_retornarID($sql);
    }

    // Insertar detalle de venta
    public function insertarDetalle($idventa, $idproducto, $cantidad, $precio_unitario, $descuento, $lote)
    {
        $subtotal = ($cantidad * $precio_unitario) - $descuento;
        $sql = "INSERT INTO inv_detalle_ventas (idventa, idproducto, cantidad, precio_unitario, descuento, subtotal, lote)
                VALUES ('$idventa', '$idproducto', '$cantidad', '$precio_unitario', '$descuento', '$subtotal', '$lote')";
        return ejecutarConsulta($sql);
    }

    // Mostrar venta
    public function mostrar($idventa)
    {
        $sql = "SELECT v.*, 
                CONCAT(p.nombre, ' ', p.apaterno, ' ', p.amaterno) as cliente,
                p.num_documento,
                CONCAT(pu.nombre, ' ', pu.apaterno) as usuario
                FROM inv_ventas v
                LEFT JOIN persona p ON v.idpersona = p.idpersona
                LEFT JOIN persona pu ON v.idusuario = pu.idpersona
                WHERE v.idventa = '$idventa'";
        return ejecutarConsultaSimpleFila($sql);
    }

    // Listar detalle de venta
    public function listarDetalle($idventa)
    {
        $sql = "SELECT d.*, p.codigo, p.nombre as producto, p.unidad_medida
                FROM inv_detalle_ventas d
                INNER JOIN inv_productos p ON d.idproducto = p.idproducto
                WHERE d.idventa = '$idventa'";
        return ejecutarConsulta($sql);
    }

    // Anular venta
    public function anular($idventa)
    {
        $sql = "UPDATE inv_ventas SET estado = 'ANULADO' WHERE idventa = '$idventa'";
        return ejecutarConsulta($sql);
    }

    // Obtener último número de venta
    public function obtenerUltimoNumero()
    {
        $sql = "SELECT MAX(CAST(SUBSTRING(numero_venta, 4) AS UNSIGNED)) as ultimo
                FROM inv_ventas
                WHERE numero_venta LIKE 'VEN-%'";
        $result = ejecutarConsultaSimpleFila($sql);
        $ultimo = $result['ultimo'] ? $result['ultimo'] : 0;
        $nuevo = $ultimo + 1;
        return 'VEN-' . str_pad($nuevo, 6, '0', STR_PAD_LEFT);
    }

    // Ventas del día
    public function ventasDelDia()
    {
        $sql = "SELECT COUNT(*) as total_ventas, SUM(total) as total_monto
                FROM inv_ventas
                WHERE DATE(fecha_venta) = CURDATE() AND estado = 'PAGADO'";
        return ejecutarConsultaSimpleFila($sql);
    }

    // Productos más vendidos
    public function productosMasVendidos($limite = 10)
    {
        $sql = "SELECT p.nombre, SUM(dv.cantidad) as total_vendido, SUM(dv.subtotal) as total_monto
                FROM inv_detalle_ventas dv
                INNER JOIN inv_productos p ON dv.idproducto = p.idproducto
                INNER JOIN inv_ventas v ON dv.idventa = v.idventa
                WHERE v.estado = 'PAGADO'
                AND DATE(v.fecha_venta) >= DATE_SUB(CURDATE(), INTERVAL 30 DAY)
                GROUP BY dv.idproducto, p.nombre
                ORDER BY total_vendido DESC
                LIMIT $limite";
        return ejecutarConsulta($sql);
    }
}
?>