<?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();
    $ventaMecanico = PCO_EjecutarSQL("
        SELECT TRUNCATE(SUM(vd.precio * vd.cantidad * p.porcentaje_mecanico/100), 2)
        FROM app_ventas_detalle vd, app_ventas v, app_productos p
        WHERE vd.id_venta=v.id AND vd.id_producto=p.id AND  vd.id_venta = '$id' AND v.id_mecanico <> 0 GROUP BY vd.id_venta
    ")->fetchColumn();
    $total = $venta["total"] ? $venta["total"] : 0;
    $iva = $venta["iva"] ? $venta["iva"] : 0;
    PCO_EjecutarSQLUnaria("UPDATE app_ventas SET total = $total, iva = $iva, total_mecanico='$ventaMecanico' 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, placa
        FROM app_ventas
        WHERE id='$PCO_Valor'
    ")->fetch();

    $id_venta = $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") {
        //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();
            $id_cliente = PCO_EjecutarSQL("
                SELECT id
                FROM app_clientes
                WHERE numero_documento='$numero_documento' AND telefono='$telefono' AND '$nombre_completo'
            ")->fetchColumn();
        }
        $todayMysql = date("Y-m-d H:i:s");
        PCO_EjecutarSQLUnaria("INSERT INTO app_ventas (id_cliente, usuario, fecha, placa, id_mecanico, tipo_venta) VALUES (?,?,?,?,?,?) ", "$id_cliente$_SeparadorCampos_$PCOSESS_LoginUsuario$_SeparadorCampos_$todayMysql$_SeparadorCampos_$placa$_SeparadorCampos_$id_mecanico$_SeparadorCampos_$tipo_venta");
        $id = PCO_EjecutarSQL("
            SELECT id
            FROM app_ventas
            WHERE fecha='$todayMysql' AND usuario='$PCOSESS_LoginUsuario' AND id_cliente = '$id_cliente'
        ")->fetchColumn();
        // $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, hora_inicio, hora_fin, guaje) VALUES (?,?,?,?,?,?,?,?) ", 
            "$id$_SeparadorCampos_$id_producto$_SeparadorCampos_$cantidad$_SeparadorCampos_$precio$_SeparadorCampos_" . $producto["iva"]."$_SeparadorCampos_$hora_inicio$_SeparadorCampos_$hora_fin$_SeparadorCampos_$guaje");
        calcularTotalVenta($id);
        
        /* $total = number_format($result["total"], 2);
        $iva = number_format($result["iva"], 2); */

        echo '<script type="text/javascript">
        	document.FRMBASEINFORME.PCO_Accion.value="PCO_CargarObjeto";
        	document.FRMBASEINFORME.PCO_Objeto.value="frm:8:1:id:'.$id.'";
        	document.FRMBASEINFORME.Precarga_EstilosBS.value="1";
        	document.FRMBASEINFORME.Presentar_FullScreen.value="0";
        	document.FRMBASEINFORME.target="_self";
        	document.FRMBASEINFORME.submit();
    	 </script>';
    }
}

if($PCO_Accion == "VENTA_agregarProducto") {
    $producto = PCO_EjecutarSQL("
        SELECT id, precio_venta, iva
        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, hora_inicio, hora_fin, guaje) VALUES (?,?,?,?,?,?,?,?) ", 
            "$id$_SeparadorCampos_$id_producto$_SeparadorCampos_$cantidad$_SeparadorCampos_$precioVenta$_SeparadorCampos_" . $producto["iva"]."$_SeparadorCampos$hora_inicio$_SeparadorCampos$hora_fin$_SeparadorCampos$guaje");
        $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_consultarTotalVenta") {
    if($id) {
        $result = calcularTotalVenta($id);
        print_r('{"success": true, "id": ' . $id . ', ' . $result . '}');
        die();
    }
    print_r('{"success": false, "msg": "No se encontro la venta"}');
    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_actualizarProductoVenta") {
    if($id) {
        PCO_EjecutarSQLUnaria("UPDATE app_ventas_detalle SET cantidad='$cantidad', precio='$precio' WHERE id = '$id'");
        echo 1;
        die();
    }
    echo 0;
    die();
}

if($PCO_Accion == "VENTA_imprimirFactura") {
    if($PCO_Valor)
        $id = $PCO_Valor;
    if($id) {
        include_once "imprimirFactura.php";
    }
}

if($PCO_Accion == "VENTA_generarLiquidacionMecanicos") {
    $ventas = PCO_EjecutarSQL("
        SELECT v.id, v.id_mecanico, SUM(v.total_mecanico) as Total, m.seguridad_social
        FROM app_mecanicos m,app_ventas v
        WHERE m.id = v.id_mecanico AND v.fecha >= '$fecha_inicio 00:00:00' AND v.fecha <= '$fecha_fin 23:59:59' AND v.estado = 1 AND id_mecanico <> 0 AND id_liquidacion=0
        GROUP BY v.id_mecanico
    ")->fetchAll();
    foreach ($ventas as $venta) {
        $valor_novedad = PCO_EjecutarSQL("
            SELECT  
                SUM(case when tipo_novedad='Abonar' then valor_novedad else 0 end) as abonar,
                SUM(case when tipo_novedad='Debitar' then valor_novedad else 0 end) as debitar
            FROM app_novedades_mecanicos
            WHERE fecha >= '$fecha_inicio' AND fecha <= '$fecha_fin'
                AND id_mecanico='".$venta['id_mecanico']."' AND id_liquidacion=0
            GROUP BY id_mecanico
        ")->fetch();

        PCO_EjecutarSQLUnaria("
            INSERT INTO app_liquidacion_mecanicos_enc (id_mecanico, fecha_inicio, fecha_fin, fecha, valor_venta, valor_novedad_abonar, valor_novedad_debitar, seguridad_social, usuario) VALUES (?,?,?,?,?,?,?,?,?) ",
            $venta["id_mecanico"]."$_SeparadorCampos_$fecha_inicio$_SeparadorCampos_$fecha_fin$_SeparadorCampos_$PCO_FechaOperacionGuiones$_SeparadorCampos_".$venta["Total"]."$_SeparadorCampos_".$valor_novedad['abonar']."$_SeparadorCampos_".$valor_novedad['debitar']."$_SeparadorCampos_".$venta["seguridad_social"]."$_SeparadorCampos_$PCOSESS_LoginUsuario"
        );
        
        $idLiq = PCO_EjecutarSQL("
            SELECT id
            FROM app_liquidacion_mecanicos_enc
            WHERE id_mecanico='".$venta['id_mecanico']."' AND fecha='$PCO_FechaOperacionGuiones' AND usuario = '$PCOSESS_LoginUsuario'
            ORDER BY id desc LIMIT 1
        ")->fetchColumn();

        PCO_EjecutarSQLUnaria("
            UPDATE app_novedades_mecanicos 
            SET id_liquidacion='$idLiq'
            WHERE 
                fecha >= '$fecha_inicio' AND fecha <= '$fecha_fin' AND id_mecanico='".$venta['id_mecanico']."' AND id_liquidacion=0
        ");
        
        PCO_EjecutarSQLUnaria("
            UPDATE app_ventas 
            SET id_liquidacion='$idLiq'
            WHERE app_ventas.fecha >= '$fecha_inicio 00:00:00' AND app_ventas.fecha <= '$fecha_fin 23:59:59' AND app_ventas.estado = 1 AND id_mecanico='".$venta['id_mecanico']."' AND id_liquidacion=0
        ");
    }
    PCO_CargarFormulario(14);
}

if($PCO_Accion == "VENTAS_verLiquidacion") {
    $liq = PCO_EjecutarSQL("
        SELECT l.*, m.nombre_completo, m.cedula, m.telefono, m.direccion, m.correo,
            CONCAT('$',FORMAT((l.valor_venta + l.valor_novedad_abonar - l.valor_novedad_debitar - l.seguridad_social),2,'de_DE')) total
        FROM app_liquidacion_mecanicos_enc l,app_mecanicos m 
        WHERE l.id_mecanico = m.id AND l.id='$PCO_Valor'
    ")->fetch();

    $ventas = PCO_EjecutarSQL("
        SELECT v.*, c.nombre_completo
        FROM app_ventas v, app_clientes c
        WHERE v.id_liquidacion=".$liq['id']."
    ")->fetchAll();

    $novedades = PCO_EjecutarSQL("
        SELECT *
        FROM app_novedades_mecanicos
        WHERE id_liquidacion=".$liq['id']."
    ")->fetchAll();
    
    include 'liquidacion_mecanicos.php';
}