<?php

function calcularTotalVenta($id, $returnArr = "") {
    $venta = PCO_EjecutarSQL("
        SELECT SUM(precio * cantidad) as total, SUM(precio * iva/100) iva
        FROM app_ventas_detalle
        WHERE id_venta = '$id' GROUP BY id_venta
    ")->fetch();
    $total = $venta["total"] ? $venta["total"] : 0;
    $iva = $venta["iva"] ? $venta["iva"] : 0;
    PCO_EjecutarSQLUnaria("UPDATE app_ventas SET total = $total, iva = $iva WHERE id = $id ");
    if($returnArr)
        return $venta;
    return '"total": ' . $total . ', "iva": ' . $iva;
}

if($PCO_Accion == "VENTA_ingresarRealizarVenta") {
    $ventaAbierta = PCO_EjecutarSQL("
        SELECT id, id_cliente, total, iva
        FROM app_ventas
        WHERE estado = 0 ORDER BY id limit 1
    ")->fetch();
    /*if (!$ventaAbierta["id"]) {
        
        $ventaAbierta = PCO_EjecutarSQL("
            SELECT *
            FROM app_ventas
            WHERE estado = 0 ORDER BY id limit 1
        ")->fetch();   
    }*/

    $id_venta = $ventaAbierta["id"] ? $ventaAbierta["id"] : "";
    if($id_venta) {
        $total = number_format($ventaAbierta["total"], 2);
        $iva = number_format($ventaAbierta["iva"], 2);
        $id_cliente = $ventaAbierta["id_cliente"];
    }

    PCO_CargarFormulario(8, 1, "id", $id_venta);
}

if($PCO_Accion == "VENTA_agregarProductoCrearOC") {

    if(!$id) {
        //crear cliente en caso de que no llegue id_cliente
        if(!$id_cliente) {
            PCO_EjecutarSQLUnaria("INSERT INTO app_clientes (nombre_completo, numero_documento, telefono) VALUES (?,?,?) ",
                "$nombre_completo$_SeparadorCampos_$numero_documento$_SeparadorCampos_$telefono"
            );
            $id_cliente = PCO_ObtenerUltimoIDInsertado();
        }
        PCO_EjecutarSQLUnaria("INSERT INTO app_ventas (id_cliente, usuario) VALUES (?,?) ", "$id_cliente$_SeparadorCampos_$PCOSESS_LoginUsuario");
        $id = PCO_ObtenerUltimoIDInsertado();
    }
    $producto = PCO_EjecutarSQL("
        SELECT id, precio_venta, iva, inventario
        FROM app_productos
        WHERE id = '$id_producto'
    ")->fetch();
    if($producto["id"]) {
        $existe = PCO_EjecutarSQL("
            SELECT count(id)
            FROM app_ventas_detalle
            WHERE id_venta = $id AND id_producto = '$id_producto'
        ")->fetchColumn();
        if($existe > 0) {
            print_r('{"success": false, "msg": "El producto ya se ha ingresado"}');
            die();
        }
        if($producto["inventario"] < $cantidad) {
            print_r('{"success": false, "msg": "La cantidad digitada supera la del invetario"}');
            die();
        }
        $inventarioNew = $producto["inventario"] - $cantidad;
        PCO_EjecutarSQLUnaria("UPDATE app_productos SET inventario = $inventarioNew WHERE id = " . $producto["id"]);
        PCO_EjecutarSQLUnaria("INSERT INTO app_ventas_detalle (id_venta, id_producto, cantidad, precio, iva) VALUES (?,?,?,?,?) ", 
            "$id$_SeparadorCampos_$id_producto$_SeparadorCampos_$cantidad$_SeparadorCampos_" . $producto["precio_venta"] . "$_SeparadorCampos_" . $producto["iva"]);
        $result = calcularTotalVenta($id, 1);
        
        $total = number_format($result["total"], 2);
        $iva = number_format($result["iva"], 2);
        $id_venta = $id;
        PCO_CargarFormulario(8, 1, "id", $id_venta);
    }
}

if($PCO_Accion == "VENTA_agregarProducto") {

    if(!$id) {
        //crear cliente en caso de que no llegue id_cliente
        if(!$id_cliente) {
            PCO_EjecutarSQLUnaria("INSERT INTO app_clientes (nombre_completo, numero_documento, telefono) VALUES (?,?,?) ",
                "$nombre_completo$_SeparadorCampos_$numero_documento$_SeparadorCampos_$telefono"
            );
            $id_cliente = PCO_ObtenerUltimoIDInsertado();
        }
        PCO_EjecutarSQLUnaria("INSERT INTO app_ventas (id_cliente, usuario) VALUES (?,?) ", "$id_cliente$_SeparadorCampos_$PCOSESS_LoginUsuario");
        $id = PCO_ObtenerUltimoIDInsertado();
    }
    $producto = PCO_EjecutarSQL("
        SELECT id, precio_venta, iva, inventario
        FROM app_productos
        WHERE id = '$id_producto'
    ")->fetch();
    if($producto["id"]) {
        $existe = PCO_EjecutarSQL("
            SELECT count(id)
            FROM app_ventas_detalle
            WHERE id_venta = $id AND id_producto = '$id_producto'
        ")->fetchColumn();
        if($existe > 0) {
            print_r('{"success": false, "msg": "El producto ya se ha ingresado"}');
            die();
        }
        if($producto["inventario"] < $cantidad) {
            print_r('{"success": false, "msg": "La cantidad digitada supera la del invetario"}');
            die();
        }
        $inventarioNew = $producto["inventario"] - $cantidad;
        PCO_EjecutarSQLUnaria("UPDATE app_productos SET inventario = $inventarioNew WHERE id = " . $producto["id"]);
        PCO_EjecutarSQLUnaria("INSERT INTO app_ventas_detalle (id_venta, id_producto, cantidad, precio, iva) VALUES (?,?,?,?,?) ", 
            "$id$_SeparadorCampos_$id_producto$_SeparadorCampos_$cantidad$_SeparadorCampos_" . $producto["precio_venta"] . "$_SeparadorCampos_" . $producto["iva"]);
        $result = calcularTotalVenta($id);
        print_r('{"success": true, "id": ' . $id . ', ' . $result . '}');
        die();
    }
    print_r('{"success": false, "msg": "No se ha encontrado el producto seleccionado"}');
    die();
}

if($PCO_Accion == "VENTA_eliminarProducto") {

    if($id_venta_detalle && $id_venta) {
        $producto = PCO_EjecutarSQL("
            SELECT p.inventario, vd.cantidad, p.id
            FROM app_ventas_detalle vd, app_productos p
            WHERE vd.id_producto = p.id AND vd.id = '$id_venta_detalle'
        ")->fetch();
        //Restablecemos el inventario
        $inventarioNew = $producto["inventario"] + $producto["cantidad"];
        PCO_EjecutarSQLUnaria("UPDATE app_productos SET inventario = $inventarioNew WHERE id = " . $producto["id"]);
        PCO_EjecutarSQLUnaria("DELETE FROM app_ventas_detalle WHERE id_venta = $id_venta AND id = $id_venta_detalle");
        $result = calcularTotalVenta($id_venta);
        print_r('{"success": true, "msg": "Se ha eliminado el producto exitosamente", ' . $result . '}');
        die();
    }
    print_r('{"success": false, "msg": "No se pudo eliminar el producto"}');
    die();
}

if($PCO_Accion == "VENTA_imprimirFactura") {

    //sleep(2);
    // echo "$PCO_Valor";
    if($PCO_Valor)
        $id = $PCO_Valor;
    if($id) {
        include_once "imprimirFactura.php";
    }
}