<div class="content-wrapper">
    <section class="content-header">
        <h1>Nuevo Parte de Ingreso</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 Parte de Ingreso</strong></div>
                    <div class="panel-body">

                        <?php echo validation_errors('<div class="alert alert-danger">', '</div>'); ?>

                        <form id="formPI" method="post" action="<?php echo base_url('index.php/almacen/parte_ingreso/store'); ?>">

                            <input type="hidden" name="proveedor_id" id="proveedor_id">
                            <input type="hidden" name="ordc_id"      id="ordc_id"      value="">
                            <input type="hidden" name="req_id"       id="req_id"       value="">

                            <!-- FILA 1: Tipo / Fecha / Almacén / Moneda -->
                            <div class="row">
                                <div class="col-md-3 form-group">
                                    <label>Tipo de ingreso <span class="text-danger">*</span></label>
                                    <select name="tipoingreso" id="tipoingreso" class="form-control" required>
                                        <option value="">Seleccione</option>
                                        <option value="C">C - Compra</option>
                                        <option value="P">P - Producción</option>
                                        <option value="R">R - Reingreso</option>
                                        <option value="A">A - Traslado de almacén</option>
                                    </select>
                                </div>
                                <div class="col-md-2 form-group">
                                    <label>Fecha <span class="text-danger">*</span></label>
                                    <input type="date" name="fecha" id="fecha" class="form-control"
                                           value="<?php echo date('Y-m-d'); ?>" required>
                                </div>
                                <div class="col-md-3 form-group">
                                    <label>Almacén <span class="text-danger">*</span></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->nombre; ?></option>
                                        <?php endforeach; ?>
                                    </select>
                                </div>
                                <div class="col-md-2 form-group">
                                    <label>Moneda <span class="text-danger">*</span></label>
                                    <select name="moneda_id" id="moneda_id" class="form-control" required>
                                        <?php foreach($monedas as $item): ?>
                                            <option value="<?php echo $item->id; ?>"
                                                <?php echo ($item->id == 1) ? 'selected' : ''; ?>>
                                                <?php echo $item->nombre; ?>
                                            </option>
                                        <?php endforeach; ?>
                                    </select>
                                </div>
                                <div class="col-md-2 form-group">
                                    <label>Tipo de cambio</label>
                                    <input type="number" step="0.01" min="0" name="tipocambio"
                                           id="tipocambio" class="form-control">
                                </div>
                            </div>

                            <!-- FILA 2: Proveedor / Guía / Comprobante -->
                            <div class="row">
                                <div class="col-md-4 form-group">
                                    <label>Proveedor <small class="text-muted">(opcional)</small></label>
                                    <input type="text" id="proveedor_busqueda" class="form-control"
                                           placeholder="Buscar por razón social o RUC" autocomplete="off">
                                </div>
                                <div class="col-md-2 form-group">
                                    <label>RUC / Documento</label>
                                    <input type="text" id="proveedor_documento" class="form-control" readonly>
                                </div>
                                <div class="col-md-3 form-group">
                                    <label>N° Guía remisión proveedor</label>
                                    <input type="text" name="nroguiaremision" id="nroguiaremision"
                                           class="form-control" maxlength="20">
                                </div>
                                <div class="col-md-3 form-group">
                                    <label>N° Comprobante proveedor</label>
                                    <input type="text" name="nrocomprobante" id="nrocomprobante"
                                           class="form-control" maxlength="20">
                                </div>
                            </div>

                            <!-- FILA 3: Origen (OC o Requerimiento) -->
                            <div class="row" id="bloqueOrigen">
                                <div class="col-md-4 form-group">
                                    <label>Cargar desde OC <small class="text-muted">(opcional)</small></label>
                                    <select id="oc_selector" class="form-control">
                                        <option value="">-- Sin OC / Ingreso libre --</option>
                                        <?php foreach($oc_autorizadas as $oc): ?>
                                            <option value="<?php echo $oc->id; ?>">
                                                <?php echo $oc->codigo; ?>
                                                | <?php echo date('d/m/Y', strtotime($oc->fecha)); ?>
                                                | <?php echo $oc->razon_social; ?>
                                            </option>
                                        <?php endforeach; ?>
                                    </select>
                                </div>
                                <div class="col-md-2 form-group" style="padding-top:25px;">
                                    <button type="button" id="btnCargarOC" class="btn btn-info btn-sm">
                                        <i class="fa fa-download"></i> Cargar OC
                                    </button>
                                </div>
                                <div class="col-md-4 form-group">
                                    <label>Cargar desde Requerimiento <small class="text-muted">(opcional)</small></label>
                                    <select id="req_selector" class="form-control">
                                        <option value="">-- Sin requerimiento --</option>
                                        <?php foreach($requerimientos as $req): ?>
                                            <option value="<?php echo $req->id; ?>">
                                                REQ-<?php echo str_pad($req->id, 5, '0', STR_PAD_LEFT); ?>
                                                | <?php echo date('d/m/Y', strtotime($req->fecha)); ?>
                                                | <?php echo $req->estado_nombre; ?>
                                            </option>
                                        <?php endforeach; ?>
                                    </select>
                                </div>
                                <div class="col-md-2 form-group" style="padding-top:25px;">
                                    <button type="button" id="btnCargarREQ" class="btn btn-default btn-sm">
                                        <i class="fa fa-download"></i> Cargar REQ
                                    </button>
                                </div>
                            </div>

                            <hr>

                            <!-- BÚSQUEDA MANUAL DE PRODUCTO -->
                            <div class="row">
                                <div class="col-md-4 form-group">
                                    <label>Agregar producto manualmente</label>
                                    <input type="text" id="producto_busqueda" class="form-control"
                                           placeholder="Buscar por código o nombre" autocomplete="off">
                                </div>
                            </div>

                            <!-- TABLA DETALLE -->
                            <div class="table-responsive">
                                <table class="table table-bordered table-hover table-striped" id="tablaDetalle">
                                    <thead>
                                        <tr>
                                            <th style="width:90px;">Código</th>
                                            <th>Descripción</th>
                                            <th style="width:70px;">Und.</th>
                                            <th style="width:100px;">Cantidad</th>
                                            <th style="width:120px;">Precio Unit.</th>
                                            <th style="width:110px;">Subtotal</th>
                                            <th style="width:45px;">Acc.</th>
                                        </tr>
                                    </thead>
                                    <tbody></tbody>
                                    <tfoot>
                                        <tr>
                                            <th colspan="5" class="text-right">Total</th>
                                            <th><input type="text" id="pi_total" class="form-control text-right" value="0.00" readonly></th>
                                            <th></th>
                                        </tr>
                                    </tfoot>
                                </table>
                            </div>

                            <!-- OBSERVACIONES -->
                            <div class="row">
                                <div class="col-md-12 form-group">
                                    <label>Observaciones</label>
                                    <textarea name="observaciones" class="form-control" rows="2"></textarea>
                                </div>
                            </div>

                            <button type="submit" class="btn btn-primary" id="btnGuardar">
                                <i class="fa fa-save"></i> Guardar Parte de Ingreso
                            </button>
                            <a href="<?php echo base_url('index.php/almacen/parte_ingreso'); ?>" class="btn btn-default">
                                Cancelar
                            </a>

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

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

    var filaIndex = 0;

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

    function recalcularTotal() {
        var suma = 0;
        $('#tablaDetalle tbody tr').each(function() {
            suma += parseFloat($(this).find('.item-subtotal').val() || 0);
        });
        $('#pi_total').val(redondear(suma, 2).toFixed(2));
    }

    function recalcularFila($fila) {
        var cantidad = parseFloat($fila.find('.item-cantidad').val() || 0);
        var precio   = parseFloat($fila.find('.item-precio').val() || 0);
        var subtotal = redondear(cantidad * precio, 2);
        $fila.find('.item-subtotal').val(subtotal.toFixed(2));
        recalcularTotal();
    }

    function agregarFila(producto) {
        var idx = filaIndex++;
        var 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><input type="text" name="detalle[' + idx + '][detalle]" class="form-control input-sm" value="' + (producto.nombre || '') + '"></td>';
        html += '<td><input type="text" class="form-control input-sm" value="' + (producto.unidad_abreviado || '') + '" readonly></td>';
        html += '<td><input type="number" step="0.01" min="0.01" name="detalle[' + idx + '][cantidad]" class="form-control input-sm item-cantidad" value="' + (producto.cantidad || 1) + '"></td>';
        html += '<td><input type="number" step="0.0001" min="0" name="detalle[' + idx + '][precio_unitario]" class="form-control input-sm item-precio" value="' + (producto.precio || '0.0000') + '"></td>';
        html += '<td><input type="text" name="detalle[' + idx + '][subtotal]" class="form-control input-sm item-subtotal text-right" value="0.00" readonly></td>';
        html += '<td class="text-center"><button type="button" class="btn btn-danger btn-xs btn-eliminar"><i class="fa fa-trash"></i></button></td>';
        html += '</tr>';

        $('#tablaDetalle tbody').append(html);
        recalcularFila($('#tablaDetalle tbody tr').last());
    }

    function yaAgregado(productoId) {
        var existe = false;
        $('#tablaDetalle tbody tr').each(function() {
            if ($(this).data('producto-id') == productoId) { existe = true; }
        });
        return existe;
    }

    // Autocomplete proveedor
    $('#proveedor_busqueda').autocomplete({
        source: function(request, response) {
            $.ajax({
                url: '<?php echo base_url("index.php/almacen/parte_ingreso/buscar_proveedor"); ?>',
                dataType: 'json',
                data: { term: request.term },
                success: function(data) { response(data); }
            });
        },
        minLength: 2,
        select: function(event, ui) {
            $('#proveedor_id').val(ui.item.id);
            $('#proveedor_busqueda').val(ui.item.razon_social);
            $('#proveedor_documento').val(ui.item.nro_documento);
            return false;
        }
    });

    // Autocomplete producto
    $('#producto_busqueda').autocomplete({
        source: function(request, response) {
            $.ajax({
                url: '<?php echo base_url("index.php/almacen/parte_ingreso/buscar_producto"); ?>',
                dataType: 'json',
                data: { term: request.term },
                success: function(data) { response(data); }
            });
        },
        minLength: 2,
        select: function(event, ui) {
            if (yaAgregado(ui.item.id)) {
                Swal.fire({ icon: 'warning', title: 'Atención', text: 'El producto ya fue agregado' });
                $('#producto_busqueda').val('');
                return false;
            }
            agregarFila({ id: ui.item.id, codigo: ui.item.codigo, nombre: ui.item.nombre,
                          unidad_abreviado: ui.item.unidad_abreviado, precio: ui.item.precio_compra });
            $('#producto_busqueda').val('');
            return false;
        }
    });

    // Cargar desde OC
    $('#btnCargarOC').on('click', function() {
        var ocId = $('#oc_selector').val();
        if (!ocId) {
            Swal.fire({ icon: 'warning', title: 'Atención', text: 'Selecciona una OC primero' });
            return;
        }
        $.getJSON('<?php echo base_url("index.php/almacen/parte_ingreso/detalle_oc/"); ?>' + ocId, function(data) {
            if (!data.length) {
                Swal.fire({ icon: 'info', title: 'Sin saldo', text: 'La OC no tiene productos con saldo pendiente' });
                return;
            }
            $('#tablaDetalle tbody').empty();
            filaIndex = 0;
            $.each(data, function(i, item) {
                agregarFila({ id: item.producto_id, codigo: item.producto_codigo,
                              nombre: item.descripcion, unidad_abreviado: item.unidad_abreviado,
                              cantidad: item.saldo, precio: item.precio_unitario });
            });
            $('#ordc_id').val(ocId);
            $('#req_id').val('');
            Swal.fire({ icon: 'success', title: 'OC cargada', text: data.length + ' producto(s) cargados', timer: 1500, showConfirmButton: false });
        });
    });

    // Cargar desde Requerimiento
    $('#btnCargarREQ').on('click', function() {
        var reqId = $('#req_selector').val();
        if (!reqId) {
            Swal.fire({ icon: 'warning', title: 'Atención', text: 'Selecciona un requerimiento primero' });
            return;
        }
        $.getJSON('<?php echo base_url("index.php/almacen/parte_ingreso/detalle_requerimiento/"); ?>' + reqId, function(data) {
            if (!data.length) {
                Swal.fire({ icon: 'info', title: 'Sin saldo', text: 'El requerimiento no tiene productos con saldo pendiente' });
                return;
            }
            $('#tablaDetalle tbody').empty();
            filaIndex = 0;
            $.each(data, function(i, item) {
                agregarFila({ id: item.producto_id, codigo: item.producto_codigo,
                              nombre: item.producto_nombre, unidad_abreviado: item.unidad_abreviado,
                              cantidad: item.saldo, precio: item.precio_unitario });
            });
            $('#req_id').val(reqId);
            $('#ordc_id').val('');
            Swal.fire({ icon: 'success', title: 'REQ cargado', text: data.length + ' producto(s) cargados', timer: 1500, showConfirmButton: false });
        });
    });

    // Recalcular al cambiar cantidad o precio
    $(document).on('input', '.item-cantidad, .item-precio', function() {
        recalcularFila($(this).closest('tr'));
    });

    // Eliminar fila
    $(document).on('click', '.btn-eliminar', function() {
        $(this).closest('tr').remove();
        recalcularTotal();
    });

    // Validar al enviar
    $('#formPI').on('submit', function(e) {
        if ($('#tablaDetalle 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>
