<div class="content-wrapper">
    <section class="content-header">
        <h1>Nueva Cotización</h1>
    </section>

    <section class="content">
        <div class="row">
            <div class="col-md-12">

                <div class="panel panel-primary">
                    <div class="panel-heading">
                        <strong>Registro de cotización</strong>
                    </div>

                    <div class="panel-body">

                        <form id="formCotizacion" method="post" action="<?php echo base_url('index.php/ventas/cotizaciones/store'); ?>">

                            <input type="hidden" name="cliente_id" id="cliente_id">
                            <input type="hidden" name="tributo_id" id="tributo_id" value="<?php echo !empty($tributo_igv) ? $tributo_igv->id : ''; ?>">
                            <input type="hidden" name="modo_tributo" id="modo_tributo" value="<?php echo !empty($tributo_igv) ? $tributo_igv->modo : 1; ?>">
                            <input type="hidden" name="estado_id" id="estado_id" value="<?php echo !empty($estado_emitido) ? $estado_emitido->id : ''; ?>">
                            <input type="hidden" name="vendedor_id" id="vendedor_id">

                            <div class="row">
                                <div class="col-md-2 form-group">
                                    <label>Fecha</label>
                                    <input type="date" name="ctc_fecha" id="ctc_fecha" class="form-control" value="<?php echo date('Y-m-d'); ?>" required>
                                </div>

                                <div class="col-md-3 form-group">
                                    <label>Cliente</label>
                                    <input type="text" id="cliente_busqueda" class="form-control" placeholder="Buscar por razón social o documento" autocomplete="off" required>
                                </div>

                                <div class="col-md-2 form-group">
                                    <label>RUC / Documento</label>
                                    <input type="text" id="cliente_documento" class="form-control" readonly>
                                </div>

                                <div class="col-md-2 form-group">
                                    <label>Tiempo entrega (días)</label>
                                    <input type="number" min="0" name="ctc_tiempo_entrega" id="ctc_tiempo_entrega" class="form-control" value="0" required>
                                </div>

                                <div class="col-md-3 form-group">
                                    <label>Tipo comprobante</label>
                                    <select name="comprobante_id" id="comprobante_id" class="form-control" required>
                                        <option value="">Seleccione</option>
                                        <?php foreach($tipos_comprobante as $item): ?>
                                            <option value="<?php echo $item->id; ?>">
                                                <?php echo $item->nombre; ?>
                                            </option>
                                        <?php endforeach; ?>
                                    </select>
                                </div>
                            </div>

                            <div class="row">
                                <div class="col-md-3 form-group">
                                    <label>Contacto</label>
                                    <select name="contacto_id" id="contacto_id" class="form-control">
                                        <option value="">Seleccione</option>
                                    </select>
                                </div>

                                <div class="col-md-3 form-group">
                                    <label>Local</label>
                                    <select name="local_id" id="local_id" class="form-control">
                                        <option value="">Seleccione</option>
                                    </select>
                                </div>

                                <div class="col-md-2 form-group">
                                    <label>Celular contacto</label>
                                    <input type="text" id="contacto_celular" class="form-control" readonly>
                                </div>

                                <div class="col-md-2 form-group">
                                    <label>Forma de pago</label>
                                    <select name="fp_id" id="fp_id" class="form-control">
                                        <option value="">Seleccione</option>
                                        <?php foreach($formas_pago as $item): ?>
                                            <option value="<?php echo $item->id; ?>">
                                                <?php echo $item->nombre; ?>
                                            </option>
                                        <?php endforeach; ?>
                                    </select>
                                </div>

                                <div class="col-md-2 form-group">
                                    <label>Almacén</label>
                                    <select name="almacen_id" id="almacen_id" class="form-control" required>
                                        <option value="">Seleccione</option>
                                        <?php foreach($almacenes as $item): ?>
                                            <option value="<?php echo $item->id; ?>" <?php echo ($item->id == 1) ? 'selected' : ''; ?>>
                                                <?php echo $item->nombre; ?>
                                            </option>
                                        <?php endforeach; ?>
                                    </select>
                                </div>
                            </div>

                            <div class="row">
                                <div class="col-md-3 form-group">
                                    <label>Detalle forma pago</label>
                                    <input type="text" name="ctc_fpdetalle" id="ctc_fpdetalle" class="form-control" maxlength="25">
                                </div>

                                <div class="col-md-3 form-group">
                                    <label>Vendedor</label>
                                    <input type="text" id="vendedor_nombre" class="form-control" readonly>
                                </div>

                                <div class="col-md-3 form-group">
                                    <label>Ord. compra cliente</label>
                                    <input type="text" name="ctc_ordcomp_cliente" id="ctc_ordcomp_cliente" class="form-control" maxlength="30">
                                </div>

                                <div class="col-md-3 form-group">
                                    <label>Tipo cotización</label>
                                    <select name="ctc_tipo_coti" id="ctc_tipo_coti" class="form-control">
                                        <option value="C" selected>CERRADA</option>
                                        <option value="A">ABIERTA</option>
                                    </select>
                                </div>
                            </div>

                            <div class="alert alert-info" id="mensajeTributo" style="padding:8px 12px; margin-top:10px;">
                                <?php if(!empty($tributo_igv) && (int)$tributo_igv->modo === 1): ?>
                                    <strong>LOS PRECIOS INCLUYEN IGV</strong>
                                <?php else: ?>
                                    <strong>LOS PRECIOS NO INCLUYEN IGV</strong>
                                <?php endif; ?>
                            </div>

                            <hr>

                            <div class="row">
                                <div class="col-md-4 form-group">
                                    <label>Buscar producto</label>
                                    <input type="text" id="producto_busqueda" class="form-control" placeholder="Buscar por código o nombre" autocomplete="off">
                                </div>
                            </div>

                            <div class="table-responsive">
                                <table class="table table-bordered table-hover table-striped" id="tablaDetalleCotizacion">
                                    <thead>
                                        <tr>
                                            <th style="width:90px;">Código</th>
                                            <th>Descripción</th>
                                            <th style="width:90px;">Und</th>
                                            <th style="width:90px;">Stock</th>
                                            <th style="width:90px;">Solped</th>
                                            <th style="width:90px;">Cantidad</th>
                                            <th style="width:110px;">Precio Unit.</th>
                                            <th style="width:90px;">% Dscto</th>
                                            <th style="width:120px;">P. Unit. Dscto</th>
                                            <th style="width:110px;">Total</th>
                                            <th style="width:50px;">Acc.</th>
                                        </tr>
                                    </thead>
                                    <tbody></tbody>
                                </table>
                            </div>

                            <div class="row">
                                <div class="col-md-7"></div>

                                <div class="col-md-5">
                                    <table class="table table-bordered">
                                        <tr>
                                            <th style="width:50%;">Subtotal</th>
                                            <td>
                                                <input type="text" name="ctc_subtotal" id="ctc_subtotal" class="form-control text-right" value="0.00" readonly>
                                            </td>
                                        </tr>
                                        <tr>
                                            <th>IGV %</th>
                                            <td>
                                                <input type="text" name="ctc_igv_porcentaje" id="ctc_igv_porcentaje" class="form-control text-right" value="<?php echo !empty($tributo_igv) ? number_format((float)$tributo_igv->valor_porcentual, 4, '.', '') : '0.0000'; ?>" readonly>
                                            </td>
                                        </tr>
                                        <tr>
                                            <th>IGV</th>
                                            <td>
                                                <input type="text" name="ctc_igv" id="ctc_igv" class="form-control text-right" value="0.00" readonly>
                                            </td>
                                        </tr>
                                        <tr>
                                            <th>Total</th>
                                            <td>
                                                <input type="text" name="ctc_total" id="ctc_total" class="form-control text-right" value="0.00" readonly>
                                            </td>
                                        </tr>
                                    </table>
                                </div>
                            </div>

                            <div class="row">
                                <div class="col-md-12 form-group">
                                    <label>Comentarios</label>
                                    <textarea name="ctc_comentarios" id="ctc_comentarios" class="form-control" rows="4"></textarea>
                                </div>
                            </div>

                            <button type="submit" class="btn btn-primary" id="btnGuardarCotizacion">
                                <i class="fa fa-save"></i> Guardar Cotización
                            </button>

                            <a href="<?php echo base_url('index.php/ventas/cotizaciones'); ?>" class="btn btn-default">
                                Cancelar
                            </a>

                        </form>

                    </div>
                </div>

            </div>
        </div>
    </section>
</div>

<script>
window.addEventListener('load', function () {

    var filaIndex = 0;

    function redondear(num, decimales) {
        return parseFloat(parseFloat(num).toFixed(decimales));
    }

    function obtenerPrecioPorCantidad(producto, cantidad) {
        cantidad = parseFloat(cantidad || 0);

        if (cantidad >= 1000) return parseFloat(producto.precio_millar || 0);
        if (cantidad >= 100) return parseFloat(producto.precio_cien || 0);
        if (cantidad >= 50) return parseFloat(producto.precio_cincuenta || 0);
        if (cantidad >= 25) return parseFloat(producto.precio_veinticinco || 0);
        if (cantidad >= 12) return parseFloat(producto.precio_doce || 0);
        return parseFloat(producto.precio_unidad || 0);
    }

    function recalcularFila($fila) {
        var cantidad = parseFloat($fila.find('.item-cantidad').val() || 0);
        var precioUnitario = parseFloat($fila.find('.item-precio-unitario').val() || 0);
        var porcentajeDescuento = parseFloat($fila.find('.item-porcentaje-descuento').val() || 0);

        var precioDescontado = precioUnitario;

        if (porcentajeDescuento > 0) {
            precioDescontado = precioUnitario - (precioUnitario * (porcentajeDescuento / 100));
        }

        precioDescontado = redondear(precioDescontado, 4);
        var total = redondear(cantidad * precioDescontado, 2);

        $fila.find('.item-precio-unitario-descontado').val(precioDescontado.toFixed(4));
        $fila.find('.item-total').val(total.toFixed(2));

        recalcularTotales();
    }

    function recalcularTotales() {
        var sumaTotales = 0;

        $('#tablaDetalleCotizacion tbody tr').each(function() {
            sumaTotales += parseFloat($(this).find('.item-total').val() || 0);
        });

        var modoTributo = parseInt($('#modo_tributo').val() || 1);
        var igvPorcentaje = parseFloat($('#ctc_igv_porcentaje').val() || 0);

        var subtotal = 0;
        var igv = 0;
        var total = 0;

        if (modoTributo === 1) {
            total = sumaTotales;
            subtotal = total / (1 + (igvPorcentaje / 100));
            igv = total - subtotal;
            $('#mensajeTributo').html('<strong>LOS PRECIOS INCLUYEN IGV</strong>');
        } else {
            subtotal = sumaTotales;
            igv = subtotal * (igvPorcentaje / 100);
            total = subtotal + igv;
            $('#mensajeTributo').html('<strong>LOS PRECIOS NO INCLUYEN IGV</strong>');
        }

        $('#ctc_subtotal').val(redondear(subtotal, 2).toFixed(2));
        $('#ctc_igv').val(redondear(igv, 2).toFixed(2));
        $('#ctc_total').val(redondear(total, 2).toFixed(2));
    }

    function agregarFilaDetalle(producto) {
        var idx = filaIndex++;
        var precioBase = obtenerPrecioPorCantidad(producto, 1);

        var html = '';
        html += '<tr data-producto-id="' + producto.id + '">';
        html += '<td>';
        html += '<input type="hidden" name="detalle[' + idx + '][producto_id]" value="' + producto.id + '">';
        html += '<input type="text" class="form-control input-sm" value="' + producto.codigo + '" readonly>';
        html += '</td>';

        html += '<td>';
        html += '<input type="text" name="detalle[' + idx + '][ctcd_descripcion]" class="form-control input-sm item-descripcion" value="' + (producto.nombre || '') + '">';
        html += '</td>';

        html += '<td>';
        html += '<input type="text" class="form-control input-sm" value="' + (producto.unidad_abreviado || '') + '" readonly>';
        html += '</td>';

        html += '<td>';
        html += '<input type="text" class="form-control input-sm" value="' + parseFloat(producto.stock || 0).toFixed(2) + '" readonly>';
        html += '</td>';

        html += '<td>';
        html += '<input type="text" name="detalle[' + idx + '][ctcd_solped]" class="form-control input-sm" maxlength="30">';
        html += '</td>';

        html += '<td>';
        html += '<input type="number" step="0.01" min="0.01" name="detalle[' + idx + '][ctcd_cantidad]" class="form-control input-sm item-cantidad" value="1">';
        html += '</td>';

        html += '<td>';
        html += '<input type="number" step="0.0001" min="0" name="detalle[' + idx + '][ctcd_precio_unitario]" class="form-control input-sm item-precio-unitario" value="' + parseFloat(precioBase).toFixed(4) + '">';
        html += '</td>';

        html += '<td>';
        html += '<input type="number" step="0.01" min="0" name="detalle[' + idx + '][ctcd_porcentaje_descuento]" class="form-control input-sm item-porcentaje-descuento" value="0">';
        html += '</td>';

        html += '<td>';
        html += '<input type="number" step="0.0001" min="0" name="detalle[' + idx + '][ctcd_precio_unitario_descontado]" class="form-control input-sm item-precio-unitario-descontado" value="' + parseFloat(precioBase).toFixed(4) + '" readonly>';
        html += '</td>';

        html += '<td>';
        html += '<input type="number" step="0.01" min="0" name="detalle[' + idx + '][ctcd_total]" class="form-control input-sm item-total" value="' + parseFloat(precioBase).toFixed(2) + '" readonly>';
        html += '</td>';

        html += '<td class="text-center">';
        html += '<button type="button" class="btn btn-danger btn-xs btn-eliminar-item"><i class="fa fa-trash"></i></button>';
        html += '</td>';
        html += '</tr>';

        $('#tablaDetalleCotizacion tbody').append(html);
        recalcularTotales();
    }

    $('#cliente_busqueda').autocomplete({
        source: function(request, response) {
            $.ajax({
                url: '<?php echo base_url("index.php/ventas/cotizaciones/buscar-cliente"); ?>',
                dataType: 'json',
                data: {
                    term: request.term
                },
                success: function(data) {
                    response(data);
                }
            });
        },
        minLength: 2,
        select: function(event, ui) {
            $('#cliente_id').val(ui.item.id);
            $('#cliente_busqueda').val(ui.item.razon_social);
            $('#cliente_documento').val(ui.item.nro_documento);
            $('#fp_id').val(ui.item.fp_id);
            $('#ctc_fpdetalle').val(ui.item.fp_descripcion || '');
            $('#vendedor_id').val(ui.item.vendedor_id || '');
            $('#vendedor_nombre').val(ui.item.vendedor_nombre || '');

            $.getJSON('<?php echo base_url("index.php/ventas/cotizaciones/contactos-cliente/"); ?>' + ui.item.id, function(data) {
                $('#contacto_id').html('<option value="">Seleccione</option>');
                $.each(data, function(i, item) {
                    $('#contacto_id').append('<option value="' + item.id + '" data-celular="' + (item.celular || '') + '">' + item.nombre + '</option>');
                });
            });

            $.getJSON('<?php echo base_url("index.php/ventas/cotizaciones/locales-cliente/"); ?>' + ui.item.id, function(data) {
                $('#local_id').html('<option value="">Seleccione</option>');
                $.each(data, function(i, item) {
                    $('#local_id').append('<option value="' + item.id + '">' + item.direccion + '</option>');
                });
            });

            return false;
        }
    });

    $('#contacto_id').on('change', function() {
        var celular = $(this).find(':selected').data('celular') || '';
        $('#contacto_celular').val(celular);
    });

    $('#producto_busqueda').autocomplete({
        source: function(request, response) {
            var almacenId = $('#almacen_id').val();

            if (almacenId === '') {
                Swal.fire({
                    icon: 'warning',
                    title: 'Atención',
                    text: 'Primero selecciona un almacén'
                });
                return;
            }

            $.ajax({
                url: '<?php echo base_url("index.php/ventas/cotizaciones/buscar-producto"); ?>',
                dataType: 'json',
                data: {
                    term: request.term,
                    almacen_id: almacenId
                },
                success: function(data) {
                    response(data);
                }
            });
        },
        minLength: 2,
        select: function(event, ui) {
            var repetido = false;

            $('#tablaDetalleCotizacion tbody tr').each(function() {
                if ($(this).data('producto-id') == ui.item.id) {
                    repetido = true;
                }
            });

            if (repetido) {
                Swal.fire({
                    icon: 'warning',
                    title: 'Atención',
                    text: 'El producto ya fue agregado'
                });
                $('#producto_busqueda').val('');
                return false;
            }

            agregarFilaDetalle(ui.item);
            $('#producto_busqueda').val('');
            return false;
        }
    });

    $(document).on('input', '.item-cantidad', function() {
        var $fila = $(this).closest('tr');
        var productoId = $fila.data('producto-id');
        var cantidad = $(this).val();
        var almacenId = $('#almacen_id').val();

        $.ajax({
            url: '<?php echo base_url("index.php/ventas/cotizaciones/calcular-precio"); ?>',
            type: 'POST',
            dataType: 'json',
            data: {
                producto_id: productoId,
                cantidad: cantidad,
                almacen_id: almacenId
            },
            success: function(resp) {
                if (resp.status) {
                    $fila.find('.item-precio-unitario').val(resp.precio_unitario);
                    recalcularFila($fila);
                }
            }
        });
    });

    $(document).on('input', '.item-porcentaje-descuento, .item-precio-unitario', function() {
        var $fila = $(this).closest('tr');
        recalcularFila($fila);
    });

    $(document).on('click', '.btn-eliminar-item', function() {
        $(this).closest('tr').remove();
        recalcularTotales();
    });

    $('#formCotizacion').on('submit', function(e) {
        if ($('#cliente_id').val() === '') {
            e.preventDefault();
            Swal.fire({
                icon: 'warning',
                title: 'Atención',
                text: 'Debes seleccionar un cliente'
            });
            return false;
        }

        if ($('#tablaDetalleCotizacion tbody tr').length === 0) {
            e.preventDefault();
            Swal.fire({
                icon: 'warning',
                title: 'Atención',
                text: 'Debes agregar al menos un producto al detalle'
            });
            return false;
        }
    });

});
</script>