<?php $r="../../";
require_once($r."inc/funciones.php");
$titlepage = "Precios Proveedores";
validNotSession($r);
$mysqli = connectDB($r);
$spe=$_SESSION['perfil'];
roleaccess(2510);
$actionnew = viewroleaccess(2526);
$actioneditar = viewroleaccess(2521);
$actioneliminar = viewroleaccess(2522);
$actionexcel = viewroleaccess(2525);

$row1 = $mysqli->query("SELECT id, fecha, idproveedor, idproducto, idpresentacion, precio_compra, iva, precio_kilo, cantidad FROM z_proveedores_precios");
?>

  <?php include $r."inc/head.php"; ?>
<body class="fixed-nav sticky-footer sidenav-toggled bg-dark" id="page-top">
  <?php include $r."inc/nav.php"; ?>
 
  <div class="content-wrapper">
    <div class="container-fluid">
      <!-- Example DataTables Card-->
      <div class="card mb-3">
        <div class="h3 card-header">
          <i class="fa fa-table"></i> LISTA DE PROVEEDORES
          <? if($actionnew){ ?><a onclick="nuevo()" class="btn text-primary fa fa-cart-plus float-right" ></a><? } ?>
        </div>
        <div class="card-body">
          <div class="table-responsive">
            <table class="table table-bordered table-striped" id="dataTable" width="100%" cellspacing="0">
              <thead>
                <tr>
                  <th>ID</th>
                  <th>Fecha</th>
                  <th>Proveedor</th>
                  <th>Producto</th>
                  <th>Presentacion</th>
                  <th>Precio</th>
                  <th>iva</th>
                  <th>Precio+iva</th>
                  <th>cantidad</th>
                  <?php if($actioneditar || $actionactivar  || $actioneliminar){ ?><th></th><? } ?>
                </tr>
              </thead>
              <tfoot>
                <tr>
                  <th>ID</th>
                  <th>Fecha</th>
                  <th>Proveedor</th>
                  <th>Producto</th>
                  <th>Presentacion</th>
                  <th>Precio</th>
                  <th>iva</th>
                  <th>Precio+iva</th>
                  <th>cantidad</th>
                  <?php if($actioneditar || $actionactivar  || $actioneliminar){ ?><th></th><? } ?>
                </tr>
              </tfoot>
              <tbody>
                     <?php
                    while($row2 = $row1->fetch_assoc()) {
                    ?>
                      <tr>
                        <td><?= $row2["id"]; ?></td>
                        <td><?= $row2["fecha"]; ?></td>
                        <td><?= sinfo('z_proveedores',$row2["idproveedor"])['nombre']; ?></td>
                        <td><?= sinfo('z_productos',$row2["idproducto"])['producto']; ?></td>
                        <td><?= sinfo('z_presentaciones_productos',$row2["idpresentacion"])['presentacion']; ?></td>
                        <td><?= moneda($row2["precio_compra"]); ?></td>
                        <td><?= $row2["iva"]; ?></td>
                        <td><?= moneda($row2["precio_kilo"]); ?></td>
                        <td><?= $row2["cantidad"] ?></td>
                        <?php if($actioneditar || $actionactivar  || $actioneliminar){ ?>
                        <td width="70px" class="text-center h5 p-05">
                            <?php if($actioneditar){ ?><a class="btn text-primary fa fa-pencil d-inline" title="Editar <?= $row2["nombre"] ?>" onclick="editar(<? foreach($row2 as $vlor)echo "'".$vlor."',"; ?>)"></a><? } ?>
                            <?php if($actioneliminar){ ?><a class="btn text-danger d-inline eliminar" title="Eliminar <?= $row2["nombre"] ?>" href="acciones.php?eliminar=1&id=<?= $row2['id']; ?>"><i class="fa fa-trash"></i></a><? } ?>
                        </td>
                        <? } ?>
                        </tr>
                    <?php
                    }
                    ?>
              <tbody>
            </table>
          </div>
        </div>
      </div>
    </div>
  </div>
  
<!-- Modal -->
<div class="modal fade" id="addShop" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title" id="exampleModalLabel">Nueva Compra proveedor</h5>
        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
          <span aria-hidden="true">&times;</span>
        </button>
      </div>
      <div class="modal-body">
          <form id="formulario" action="acciones.php" method="POST">
              <input name="newshop" value="true" type="hidden">
              <div class="form-group row">
                <label for="exampleInputEmail1" class="col-sm-3 col-form-label">Fecha Compra</label>
                    <div class="col-sm-9">
                    <input type="date" class="form-control" name="fecha_compra" value="<?= date('Y-m-d'); ?>">
                </div>
              </div>
                  <div class="form-group row">
                    <label for="proveedor" class="col-sm-3 col-form-label">Proveedor</label>
                    <div class="col-sm-9">
                        <select data-placeholder="Seleccionar proveedor" class="chosen-select" name="proveedor" id="proveedor" required>
                            <option disabled selected>Selecione proveedor...</option>
                            <? $resultado = $mysqli->query("SELECT * FROM z_proveedores");
                            while ($fila = $resultado->fetch_assoc()){ ?><option value="<?= $fila["id"] ?>"><?= $fila["nombre"]; ?></option>
                            <? }; ?>
                            <option value="otro">Otro...</option>
                      </select>
                    </div>
                  </div>
                  <div id="otroproveedor"></div>
                  <div class="form-group row">
                    <label for="recipient-name" class="col-sm-3 col-form-label">Producto</label>
                    <div class="col-sm-9">
                        <select data-placeholder="Seleccionar producto" class="chosen-select" name="producto" required>
                            <option disabled selected>Selecione producto</option>
                            <? $resultado = $mysqli->query("SELECT * FROM z_productos WHERE eliminado=0 ORDER BY producto ASC");
                            while ($fila = $resultado->fetch_assoc()){ ?><option value="<?= $fila["id"] ?>"><?= $fila["codigo"].'-'.$fila["producto"]; ?></option>
                            <? }; ?>
                            <option value="otro">Otro...</option>
                      </select>
                    </div>
                  </div>
                  <div id="otroproducto"></div>
                  <div class="form-group row">
                    <label for="recipient-name" class="col-sm-3 col-form-label">Presentacion</label>
                    <div class="col-sm-9">
                        <select data-placeholder="Seleccionar present" class="chosen-select" name="present" id="present" required>
                            <? $resultado = $mysqli->query("SELECT * FROM z_presentaciones_productos ORDER BY presentacion");
                            while ($fila = $resultado->fetch_assoc()){?><option value="<?= $fila["id"]; ?>" <? if($fila["id"]==22){ echo 'selected';} ?>><?= $fila['presentacion']; ?></option>
                            <? }; ?>
                      </select>
                    </div>
                  </div>
                  <div class="form-group row">
                    <label for="precio" class="col-sm-3 col-form-label">Unidades </label>
                    <div class="col-sm-4"><input class="form-control" type="number" id="cantidad" name="cantidad" placeholder="cantidad" title="cantidad" step="0.001" value="1" required></div>
                    <div class="col-2 h6" id="unidad"></div>
                  </div>
                  <div class="form-group row">
                    <label for="cantidad" class="col-sm-3 col-form-label">Precio Kg</label>
                    <div class="col-sm-7"><input class="form-control" type="number" id="precio" name="precio" placeholder="precio" title="precio"  step="0.001" required></div>
                  </div>
                  <div class="form-group row">
                    <label for="cantidad" class="col-sm-3 col-form-label">Iva </label>
                    <div class="col-sm-7"><input class="form-control" type="number" id="iva" name="iva" placeholder="iva" title="iva" max="100" value="19" required></div>
                  </div>
            </form>
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-danger" title="Cancelar" data-dismiss="modal"><i class="fa fa-close"></i> CANCELAR</button>
        <button type="submit" class="btn btn-primary" title="Guardar" form="formulario"><i class="fa fa-save"></i> GUARDAR</button>
      </div>
    </div>
  </div>
</div>



  <?php include $r."inc/foot.php"; ?>
  <script>
      $('#dataTable').DataTable({
    "stateSave": true,
    "lengthMenu": [[25, 50, 100, 500, -1], [25, 50, 100, 500, "Todos"]],
    "order": [[0, "desc"]],
    <?php if($actionexcel){?>
    "dom": '<"top"lfB>rt<"bottom"ip><"clear">', // Agrega B para los botones
    "buttons": [
        'copy', 'csv', 'excel', 'pdf', 'print'
    ],
    <?php } ?>
    initComplete: function () {
        var api = this.api();
        api.columns([1,2,3,4,6]).every(function () {
            var column = this;

            // Create select element
            var select = document.createElement('select');
            select.classList.add('form-control');
            select.classList.add('m-0');
            select.classList.add('p-0');
            select.add(new Option('Todos', ''));
            column.header().innerHTML += '<hr style="margin-top:0.2em;margin-bottom:0.2em;" />';
            column.header().appendChild(select);

            // Apply listener for user change in value
            select.addEventListener('change', function () {
                var val = $.fn.dataTable.util.escapeRegex(
                    $(this).val()
                );

                column
                    .search(val ? '^'+val+'$' : '', true, false)
                    .draw();
            });

            // Add list of options
            column
                .data()
                .unique()
                .sort()
                .each(function (d, j) {
                    select.add(new Option(d));
                });

            // Restore saved state
            var state = api.state.loaded();
            if (state) {
                var colState = state.columns[column.index()];
                if (colState.search.search) {
                    $(select).val(colState.search.search.replace(/^\^|\$$/g, ''));
                }
            }
        });
    }
});
$( document ).ready(function() {
    $('select[name=producto]').on('change', function(){
        let productoSeleccionado = $(this).val();
        if (productoSeleccionado === 'otro') {
          $.ajax({
            url: 'form_producto_nuevo.php',
            type: 'POST',
            data: {},
            success: function (html) {
              $('#otroproducto').html(html);
              try { $('#categoria').trigger('chosen:updated'); } catch(e) {}
            },
            error: function () {
              $('#otroproducto').html('<div class="alert alert-danger">No se pudo cargar el formulario.</div>');
            }
          });
        }else{
            $('#otroproducto').html('');
            $.ajax({
                url: 'info.php',  // Reemplaza con la URL de tu archivo PHP que maneja la petición
                method: 'POST',
                dataType: 'json',
                data: { infoproducto: productoSeleccionado },
                success: function(response) {
                    // Verificar si la respuesta contiene la propiedad 'iva' y 'presentaciones'
                    if (response && response.iva && response.presentacion) {
                        // Asignar valor al select 'iva'
                        $('input[name=iva]').val(response.iva);
                        $('select[name=present]').val(response.presentacion).trigger('chosen:updated');
                        $('input[name=precio]').val(response.precio);
                    } else {
                        console.error('La respuesta JSON no contiene la estructura esperada.');
                    }
                },
                error: function(xhr, status, error) {
                    console.error('Error en la petición AJAX:', error);
                }
            });
        }
    });
    
    $('select[name=proveedor]').on('change', function(){
        if($(this).val()==='otro'){
            let HTMLoprov = '<hr><h3>Infomacion Proveedor</h3>';
            HTMLoprov += '<div class="form-group row"><label class="col-sm-3 col-form-label">Empresa Proveedor</label><div class="col-sm-9"><input class="form-control" type="text" name="nameprov" required></div></div>';
            HTMLoprov += '<div class="form-group row"><label class="col-sm-3 col-form-label">Correo Proveedor</label><div class="col-sm-9"><input class="form-control" type="email" name="mailprov"></div></div>';
            HTMLoprov += '<div class="form-group row"><label class="col-sm-3 col-form-label">Contacto Proveedor</label><div class="col-sm-9"><input class="form-control" type="text" name="contprov" required></div></div>';
            HTMLoprov += '<div class="form-group row"><label class="col-sm-3 col-form-label">Telefono Proveedor</label><div class="col-sm-9"><input class="form-control" type="text" name="telprov" required></div></div>';
            $('#otroproveedor').html(HTMLoprov);
        }else{
            $('#otroproveedor').html('');
        }
    });
    
    $('#formulario2').submit(function(event) {
        // Prevenir el comportamiento por defecto del formulario
        event.preventDefault();
    
        // Obtener la acción y el método del formulario
        var action = $(this).attr('action');
        var type = $(this).attr('method');
        var form = $(this);
    
        // Verificar si FormData está disponible
        var formdata = window.FormData ? new FormData(form[0]) : false;
    
        // Mostrar la alerta de procesamiento
        swal({
            title: "Espere un momento",
            text: "Estamos procesando tu solicitud",
            icon: "info",
            buttons: false,
            closeOnClickOutside: false,
            closeOnEsc: false
        });
    
       
        $.ajax({
            url: action,
            type: type,
            data        : formdata ? formdata : form.serialize(),
            cache       : false,
            contentType : false,
            processData : false,
	        success     : function(data, textStatus, jqXHR){
                // Ocultar la alerta de procesamiento
                swal.close();
                if (data.match('.php') != null){
                    $('#modalotro').modal('hide');
                    $('#addShop').modal('show');
                    
                    var response = response.replace("index.php?msn=", "");
                    $(mensage).html(response).slideDown(400);
                    setTimeout(function() {
                        $(mensage).slideUp(700);
                    }, 5000);
                    
                }else{
                    $(mensage).html(response).slideDown(400);
                    setTimeout(function() {
                        $(mensage).slideUp(700);
                    }, 5000);
                }
            }
        }).fail(function(jqXHR, textStatus, errorThrown) {
            // Ocultar la alerta de procesamiento
            swal.close();
            swal('Error: ' + textStatus + ' - ' + errorThrown);
        });
    });
    
});


// Usa el mismo patrón de SweetAlert (callback) que ya tienes funcionando
$(document).on("blur", "#nameprod", function(){
  var nombre = $.trim($(this).val());
  var $select = $('select[name=producto]');

  if(nombre === "") {
    $("#msg").text("");
    return;
  }

  $.ajax({
    url: "check_producto.php",
    type: "POST",
    data: { nameprod: nombre },
    success: function(respuesta){
      // Posibles respuestas: "no_existe" | "activo:ID" | "inactivo:ID" | "eliminado:ID"
      if(!respuesta || respuesta === "no_existe") return;

      var parts  = String(respuesta).split(":");
      var estado = parts[0];
      var idprod = parts[1];

      if(estado === "activo"){
        swal(nombre+', Este producto ya se encuentra creado en el sistema.');
        $select.val(idprod);
        try{ $select.trigger("chosen:updated"); }catch(e){}
        $('#otroproducto').html('');
        return;
      }

      if(estado === "inactivo" || estado === "eliminado"){
        swal({
          title: "Producto encontrado",
          text: nombre+" está registrado pero con estado '"+estado+"'. ¿Desea activarlo?",
          type: "warning",
          showCancelButton: true,
          confirmButtonColor: "#2FEE53",
          confirmButtonText: "Activar",
          cancelButtonText: "Cancelar",
          closeOnConfirm: false,
          showLoaderOnConfirm: true
        }, function(confirmado){
          if(!confirmado){ return; }

          $.ajax({
            url: "activar_producto.php",
            type: "POST",
            data: { id: idprod },
            success: function(r){
              if(r === "ok"){
                // Asegurar opción en el select si no está cargada (pudo estar filtrada por estado/eliminado)
                if($select.find('option[value="'+idprod+'"]').length === 0){
                  $select.append($('<option>', { value: idprod, text: nombre }));
                }

                $select.val(idprod);
                try{ $select.trigger("chosen:updated"); }catch(e){}

                $('#otroproducto').html('');
                swal("Activado", nombre+" ha sido activado correctamente.", "success");
              }else{
                swal("Error", "No se pudo activar el producto.", "error");
              }
            },
            error: function(){
              swal("Error", "No se pudo activar el producto.", "error");
            }
          });
        });
      }
    },
    error: function(){
      // opcional: manejar error silenciosamente o con alerta
    }
  });
});


function nuevo(){
    $('#otroproveedor').html('');
    $('#otroproducto').html('');
    $('input[name=newshop]').val('0');
    // Resetear el formulario
    $('#formulario')[0].reset();
    // Actualizar los elementos chosen
    $('select').trigger('chosen:updated');
    $('#addShop').modal('show');
}

function editar(id, fecha, idproveedor, idproducto, idpresentacion, precio_compra, iva, precio_kilo, cantidad ){
    $('#otroproveedor').html('');
    $('#otroproducto').html('');
    $('input[name=newshop]').val(id);
    $('input[name=fecha]').val(fecha);
    $('select[name=proveedor]').val(idproveedor).trigger("chosen:updated");
    $('select[name=producto]').val(idproducto).trigger("chosen:updated");
    $('select[name=presentacion]').val(idpresentacion).trigger("chosen:updated");
    $('input[name=cantidad]').val(cantidad);
    $('input[name=precio]').val(precio_compra);
    $('input[name=iva]').val(iva);
    $('#addShop').modal('show');
}
  </script>
</body>
</html>    
    