<?php
$r="../../";
require_once($r."inc/funciones.php");
$mysqli = connectDB($r);
session_start();

try{

    if($_SERVER['REQUEST_METHOD'] !== 'POST'){
        throw new Exception("Método no permitido");
    }

    $code       = $_POST['preforma'] ?? null;
    $cliente    = $_POST['cliente'] ?? null;

    $direccion1 = $_POST['direccion'] ?? '';     // dirección principal
    $direccion  = $_POST['dir_envio'] ?? '';     // dirección de envío

    $totalbase         = $_POST['totalbase'] ?? 0;
    $totalica          = $_POST['totalica'] ?? 0;
    $tiva              = $_POST['tiva'] ?? 0;
    $totalretefuente   = $_POST['totalretefuente'] ?? 0;
    $ttotal            = $_POST['ttotal'] ?? 0;

    $documentos = $_POST['documentos'] ?? '';
    $pago       = $_POST['pago'] ?? '';
    $fecha      = $_POST['fecha'] ?? date('Y-m-d');
    $nota       = $_POST['nota'] ?? '';
    $adicional  = $_POST['otros'] ?? '';

    $idcliente = null;

    if(!$code){
        echo "cotizaciones.php?error=LA COTIZACION N° $code ES INVALIDA";
        exit();
    }

    if($cliente == 'otro'){

        $empresa   = $_POST['empresa'] ?? '';
        $nit       = $_POST['nit'] ?? '';
        $contacto  = $_POST['contacto'] ?? '';
        $celular   = $_POST['celular'] ?? '';
        $ciudad    = $_POST['ciudad'] ?? '';
        $correo    = $_POST['correo'] ?? '';
        $barrio    = $_POST['barrio'] ?? '';
        $localidad = $_POST['localidad'] ?? '';
        $perfil    = isset($_POST['perfil']) && $_POST['perfil'] !== '' ? $_POST['perfil'] : null;

        if(empty($empresa) || empty($celular)){
            echo "<div class='alert alert-danger alert-dismissible text-center bg-warning'>
            <a href='#' class='close' data-dismiss='alert'>&times;</a>
            <h6>INGRESA LA INFORMACION DEL CLIENTE</h6></div>";
            exit();
        }

    }else{

        $idcliente = $cliente;
        $infoclient = sinfo('z_clientes',$cliente);

        $empresa   = $infoclient['nombre'] ?? '';
        $nit       = $infoclient['nit'] ?? '';
        $contacto  = $infoclient['contacto1'] ?? '';
        $celular   = $infoclient['celular1'] ?? '';
        $ciudad    = $infoclient['municipio'] ?? '';
        $correo    = $infoclient['correo'] ?? '';
        $barrio    = '';
        $localidad = '';
        $perfil    = null;

    }

    $productos = [];

    foreach($_POST as $key => $item){

        if(substr($key,0,4) == 'iden'){

            $idpro  = $item;
            $idkpro = $_POST['cod'.$idpro] ?? 0;
            $capro  = $_POST['cant'.$idpro] ?? 0;
            $prpro  = $_POST['prec'.$idpro] ?? 0;
            $tpro   = $_POST['tipo'.$idpro] ?? 0;
            $iva    = $_POST['iva'.$idpro] ?? 0;
            $cat    = $_POST['cat'.$idpro] ?? 0;

            $productos[] = [
                "idpro"=>$idpro,
                "idproducto"=>$idkpro,
                "cantidad"=>$capro,
                "precio"=>$prpro,
                "presentacion"=>$tpro,
                "iva"=>$iva,
                "cat"=>$cat
            ];
        }
    }

    if(empty($productos)){
        echo "<div class='alert alert-danger alert-dismissible text-center bg-warning'>
        <a href='#' class='close' data-dismiss='alert'>&times;</a>
        <h6>FALTA AGREGAR ALGUN PRODUCTOS</h6></div>";
        exit();
    }

    $mysqli->begin_transaction();

    $stmt = $mysqli->prepare("UPDATE z_cotizacion SET
        idcliente=?, empresa=?, nit=?, perfil=?, direccion1=?, contacto=?, telefono=?, ciudad=?, direccion=?, barrio=?, localidad=?, correo=?, idpago=?, subtotal=?, tiva=?, ica=?, retefuente=?, total=?, adicional=?, documentos=?, comentarios=?, fecha=?
        WHERE id=?");
    
    $stmt->bind_param(
        "ississiissssiiiddiisssi",
        $idcliente,      // i
        $empresa,        // s
        $nit,            // s
        $perfil,         // i
        $direccion1,     // s
        $contacto,       // s
        $celular,        // i
        $ciudad,         // i
        $direccion,      // s
        $barrio,         // s
        $localidad,      // s
        $correo,         // s
        $pago,           // i
        $totalbase,      // i
        $tiva,           // i
        $totalica,       // d
        $totalretefuente,// d
        $ttotal,         // i
        $adicional,      // i
        $documentos,     // s
        $nota,           // s
        $fecha,          // s
        $code            // i
    );

    if(!$stmt->execute()){
        throw new Exception($stmt->error);
    }

    $mysqli->query("DELETE FROM z_cotizacion_pedido WHERE idcotizacion=".$code);

    foreach($productos as $p){

        $idpro  = $p['idpro'];
        $idkpro = $p['idproducto'];
        $capro  = $p['cantidad'];
        $prpro  = $p['precio'];
        $tpro   = $p['presentacion'];
        $iva    = $p['iva'];
        $cat    = $p['cat'];

        if($idpro > 2147483647){

            $namep = substr($idpro,10,-strlen($tpro));
            $idkpro = 2147483647;

            $stmt2 = $mysqli->prepare("INSERT INTO z_cotizacion_pedido
            (idcotizacion,idproducto,idpresentacion,cantidad,precio,iva,producto,categoria)
            VALUES (?,?,?,?,?,?,?,?)");

            $stmt2->bind_param("iiidddsi",
                $code,
                $idkpro,
                $tpro,
                $capro,
                $prpro,
                $iva,
                $namep,
                $cat
            );

        }else{

            $stmt2 = $mysqli->prepare("INSERT INTO z_cotizacion_pedido
            (idcotizacion,idproducto,idpresentacion,cantidad,precio,iva)
            VALUES (?,?,?,?,?,?)");

            $stmt2->bind_param("iiiddd",
                $code,
                $idkpro,
                $tpro,
                $capro,
                $prpro,
                $iva
            );
        }

        if(!$stmt2->execute()){
            throw new Exception($stmt2->error);
        }
    }

    $mysqli->commit();
$fechaproforma = date('Y-m-d');
$mysqli->query("UPDATE `z_cotizacion` SET `estado`=1,`fecha_proforma`='$fechaproforma' WHERE `id`=$code");
    echo "proformas.php?msg=LA COTIZACION N° $code SE HA ACTUALIZADO CON ÉXITO";
    exit();

}catch(Exception $e){

    if($mysqli->errno){
        $mysqli->rollback();
    }

    echo json_encode([
        "status"=>"error",
        "message"=>$e->getMessage()
    ]);
}

