<?php

use yii\helpers\Html;
use yii\widgets\DetailView;
use yii\helpers\Url;

/* @var $this yii\web\View */
/* @var $model app\models\Cotizaciones */

$this->title = 'Documento: ' . $model->numero_orden;
$this->params['breadcrumbs'][] = ['label' => 'Cotizaciones', 'url' => ['index']];
$this->params['breadcrumbs'][] = $this->title;

$saveUrl = Url::to(['/cotizaciones/save-items']);

$js = <<<JS
function toggleEdit(enabled) {
    if (enabled) {
        $('#items-table tbody td.editable-field').each(function() {
            var cell = $(this);
            var value = cell.text().trim();
            var field = cell.data('field');
            var itemId = cell.closest('tr').data('key');
            
            var inputName = 'Item[' + itemId + '][' + field + ']';
            var input = $('<input type="text" class="form-control item-input" name="' + inputName + '" value="' + value + '" />');
            
            cell.html(input);
        });

        $('#edit-button').hide();
        $('#save-button').show();
        $('#cancel-button').show();
        $('.item-actions').hide();

    } else {
        $('#items-table tbody input.item-input').each(function() {
            var input = $(this);
            var value = input.val();
            var cell = input.closest('td');
            
            cell.html(value);
        });
        
        $('#edit-button').show();
        $('#save-button').hide();
        $('#cancel-button').hide();
        $('.item-actions').show();
    }
}

$(document).ready(function() {
    toggleEdit(false);
});

$('#edit-button').on('click', function() {
    toggleEdit(true);
});

$('#cancel-button').on('click', function() {
    location.reload();
});

$('#save-button').on('click', function() {
    var formData = $('#items-form').serialize();
    var cotizacionId = $('#cotizacion-id').val();
    formData += '&cotizacion_id=' + cotizacionId;

    $.ajax({
        url: "$saveUrl",
        type: 'POST',
        data: formData,
        dataType: 'json',
        beforeSend: function() {
            $('#save-button').prop('disabled', true).text('Guardando...');
        },
        success: function(response) {
            if (response.success) {
                alert('Cambios guardados exitosamente.');
                location.reload(); 
            } else {
                var errorMsg = response.message;
                if (response.errors) {
                    errorMsg += '\\n' + JSON.stringify(response.errors);
                }
                alert('Error al guardar: ' + errorMsg);
                $('#save-button').prop('disabled', false).text('Guardar Cambios');
            }
        },
        error: function(xhr, status, error) {
            console.error('Error AJAX:', xhr.responseText);
            alert('Error de conexión o del servidor: ' + error);
            $('#save-button').prop('disabled', false).text('Guardar Cambios');
        }
    });
});
JS;
$this->registerJs($js);
?>

<div class="cotizaciones-view">

    <h1><?= Html::encode($this->title) ?></h1>

    <p>
        <?= Html::a('← Volver al Listado', ['index'], ['class' => 'btn btn-default']) ?>
        
        <?php if ($model->estado !== 'Aprobado' && $model->estado !== 'Finalizado'): ?>
            <?= Html::a('✓ Aprobar', ['aprobar', 'id' => $model->id], [
                'class' => 'btn btn-success',
                'data-confirm' => '¿Está seguro de aprobar este documento?',
                'data-method' => 'post',
            ]) ?>
        <?php endif; ?>
        
        <?php if ($model->estado === 'Aprobado'): ?>
            <span class="label label-success" style="font-size: 14px; padding: 6px 12px;">✓ APROBADO</span>
        <?php endif; ?>
        
        <?php if ($model->estado === 'Finalizado'): ?>
            <span class="label label-success" style="font-size: 14px; padding: 6px 12px;">✓ FINALIZADO</span>
        <?php endif; ?>
        
        <?php if ($model->estado === 'Cancelado'): ?>
            <span class="label label-danger" style="font-size: 14px; padding: 6px 12px;">✗ CANCELADO</span>
        <?php endif; ?>
    </p>
    
    <div class="mb-3">
        <?= Html::button('Editar Ítems', ['id' => 'edit-button', 'class' => 'btn btn-info']) ?>
        <?= Html::button('Guardar Cambios', ['id' => 'save-button', 'class' => 'btn btn-success', 'style' => 'display:none;']) ?>
        <?= Html::button('Cancelar', ['id' => 'cancel-button', 'class' => 'btn btn-default', 'style' => 'display:none;']) ?>
    </div>

    <?= DetailView::widget([
        'model' => $model,
        'attributes' => [
            'numero_orden',
            [
                'attribute' => 'estado',
                'format' => 'raw',
                'value' => function($model) {
                    if ($model->estado === 'Aprobado') {
                        return '<span class="label label-success">Aprobado</span>';
                    } elseif ($model->estado === 'Finalizado') {
                        return '<span class="label label-success">Finalizado</span>';
                    } elseif ($model->estado === 'Cancelado') {
                        return '<span class="label label-danger">Cancelado</span>';
                    } elseif ($model->estado === 'Pendiente') {
                        return '<span class="label label-warning">Pendiente</span>';
                    } else {
                        return Html::encode($model->estado);
                    }
                },
            ],
            [
                'label' => 'Cliente',
                'value' => $model->cliente->nombre_razon_social ?? 'N/A',
            ],
            'fecha_cotizacion:datetime',
            'tipo_documento', 
        ],
    ]) ?>

    <h2>Ítems del Documento (Edición en Línea)</h2>
    
    <form id="items-form">
        <input type="hidden" name="cotizacion_id" id="cotizacion-id" value="<?= $model->id ?>">
        
        <table id="items-table" class="table table-striped table-bordered">
            <thead>
                <tr>
                    <th>Línea</th>
                    <th>Código Producto</th>
                    <th>Descripción</th>
                    <th>Cantidad</th>
                    <th>Precio FOB</th>
                    <th>Cant. Cartones</th>
                    <th>Acciones</th>
                </tr>
            </thead>
            <tbody>
            <?php foreach ($model->cotizacionItems as $item): ?>
                <tr data-key="<?= $item->id ?>">
                    <td><?= $item->linea_item ?></td>
                    <td><?= $item->producto->codigo_producto ?? 'N/A' ?></td>
                    <td><?= $item->producto->descripcion ?? 'N/A' ?></td>
                    
                    <td class="editable-field" data-field="cantidad"><?= $item->cantidad ?></td>
                    <td class="editable-field" data-field="precio_unitario_fob"><?= $item->precio_unitario_fob ?></td>
                    <td class="editable-field" data-field="cantidad_cartones"><?= $item->cantidad_cartones ?></td>
                    
                    <td class="item-actions">
                        <?= Html::a('<span class="glyphicon glyphicon-pencil"></span>', ['update-item', 'id' => $item->id], [
                            'title' => 'Editar Ítem Individual',
                            'class' => 'btn btn-xs btn-default',
                        ]) ?>
                        <?= Html::a('<span class="glyphicon glyphicon-trash"></span>', ['delete-item', 'id' => $item->id], [
                            'title' => 'Eliminar Ítem',
                            'class' => 'btn btn-xs btn-danger',
                            'data-confirm' => '¿Está seguro de eliminar este ítem?',
                            'data-method' => 'post',
                        ]) ?>
                    </td>
                </tr>
            <?php endforeach; ?>
            </tbody>
        </table>
    </form>

</div>