<?php

function calcularTotalCompra($id) {
    $resumen = PCO_EjecutarSQL("
        SELECT cantidad * precio as total, (cantidad * precio)*porcentaje_iva/100 as iva
        FROM app_ordenes_compra_detalle
        WHERE id_orden_compra = '$id' GROUP BY id_orden_compra
    ")->fetch();
    $iva = intval($resumen['iva'] ? $resumen['iva'] : 0) == 0 ? 0 : $resumen['iva'];
    $total = $resumen['total'] ? $resumen['total'] : 0;
    PCO_EjecutarSQLUnaria("
        UPDATE app_ordenes_compra 
        set valor_total = $total, valor_iva = $iva
        WHERE id = '$id'
    ");
    return $resumen;
}

if ($PCO_Accion == "COMPRAS_agregarProductoCompra")
{
    $existe = PCO_EjecutarSQL("
        SELECT count(id_producto)
        FROM app_ordenes_compra_detalle
        WHERE id_orden_compra = '$id' AND id_producto = '$idProducto' GROUP BY id_orden_compra
    ")->fetchColumn();
    if($existe > 0) {
        echo '{"success": false, "msg": "El producto ya esta incluido en la O.C"}';
        die();
    }
    $producto = PCO_EjecutarSQL("
        SELECT precio_compra, iva
        FROM app_productos
        WHERE id = '$idProducto'
    ")->fetch();

    PCO_EjecutarSQLUnaria(
        "INSERT INTO app_ordenes_compra_detalle (id_orden_compra, id_producto, cantidad, precio, porcentaje_iva) VALUES (?,?,?,?,?)",
        "$id$_SeparadorCampos_$idProducto$_SeparadorCampos_$cantidad$_SeparadorCampos_" . $producto['precio_compra'] . "$_SeparadorCampos_" . $producto['iva']
    );
    $enc = calcularTotalCompra($id);
    echo '{"success": true, "enc": ' . json_encode($enc) . '}';
    die();
}

if ($PCO_Accion == "COMPRAS_eliminarProductoOC")
{
     PCO_EjecutarSQLUnaria("
        DELETE FROM app_ordenes_compra_detalle
        WHERE id = '$idProducto'
    ");

    $enc = calcularTotalCompra($id);
    echo '{"success": true, "enc": ' . json_encode($enc) . '}';
    die();
}

if ($PCO_Accion == "COMPRAS_registrarEntrega")
{
    $producto = PCO_EjecutarSQL("
        SELECT cantidad, cantidad_recibida
        FROM app_ordenes_compra_detalle
        WHERE id = '$id'
    ")->fetch();
    $cantidad_solicitada = $producto['cantidad'];
    $cantidad_recibida_sistema = $producto['cantidad_recibida'];
    if($cantidad_solicitada < $cantidad_recibida) {
        echo '{success: false, msg = "La cantidad recibida supera la cantidad solicitada!"}';
        die();
    }
    if($cantidad_solicitada - $cantidad_recibida_sistema < $cantidad_recibida) {
        echo '{success: false, msg = "La cantidad recibida supera la cantidad solicitada!"}';
        die();
    }
    $cant = $producto['cantidad_recibida'] + $cantidad_recibida;
    PCO_EjecutarSQLUnaria("
        UPDATE app_ordenes_compra 
        set cantidad_recibida = $cant
        WHERE id = '$id'
    ");
    //inventario
    $existeInventario = PCO_EjecutarSQL("
        SELECT id, cantidad, count(id) cant
        FROM app_inventarios
        WHERE id_producto = '$id' AND lote = '$lote'
    ")->fetch();
    if($existeInventario['cant'] > 0) {
        $cantInv = $existeInventario['cant'] + $cantidad_recibida;
        $inv = PCO_EjecutarSQLUnaria("
            UPDATE app_inventarios 
            set cantidad = $cantInv
            WHERE id = " . $existeInventario['id'] . "
        ");
    }
    else {
        PCO_EjecutarSQLUnaria(
            "INSERT INTO app_inventarios (id_producto, cantidad, lote, fecha_vencimiento_lote) VALUES (?,?,?,?)",
            "$id$_SeparadorCampos_$cantidad_solicitada$_SeparadorCampos_$lote$_SeparadorCampos_$fecha_vencimiento"
        );
    }
    //actualizar precio
    if($actualizar_precio == 1) {
        PCO_EjecutarSQLUnaria("
            UPDATE app_productos 
            set precio_compra = $precio_recibido
            WHERE id = '$id'
        ");
    }
    echo "{success: true}";
    die();
}

if ($PCO_Accion == "COMPRAS_getOCByEstado")
{
    echo json_encode(PCO_EjecutarSQL("
        SELECT p.razon_social nombre, oc.id, oc.fecha_actualizacion, oc.valor_total
        FROM app_ordenes_compra oc, app_proveedores p
        WHERE oc.id_proveedor = p.id AND oc.estado = '$estado'
    ")->fetchAll());
    die();
}