@extends('layouts.app') @section('title', 'OC ' . $ordenCompra->numero) @section('page-title', 'Orden de Compra: ' . $ordenCompra->numero) @section('breadcrumb') @endsection @section('content') @php $badgeColor = match($ordenCompra->estado) { 'borrador' => 'secondary', 'pend_jefe' => 'warning', 'pend_adm' => 'warning', 'pend_gerencia' => 'warning', 'aprobado' => 'success', 'rechazado' => 'danger', default => 'secondary', }; $estadoLabel = match($ordenCompra->estado) { 'borrador' => 'Borrador', 'pend_jefe' => 'Pendiente Jefe Logística', 'pend_adm' => 'Pendiente Administración', 'pend_gerencia' => 'Pendiente Gerencia', 'aprobado' => 'Aprobado', 'rechazado' => 'Rechazado', default => $ordenCompra->estado, }; @endphp

{{ $ordenCompra->numero }} {{ $estadoLabel }}

@if($ordenCompra->estado === 'borrador') @hasanyrole('super-admin|jefe-logistica') Editar
@csrf
@endhasanyrole @endif @if($ordenCompra->estado === 'aprobado') @hasanyrole('super-admin|jefe-logistica') Recepción Total Recepción Parcial @endhasanyrole @endif Ver PDF Volver
Proveedor: {{ $ordenCompra->proveedor->razon_social }}
RUC Proveedor: {{ $ordenCompra->proveedor->ruc }}
Solicitante: {{ $ordenCompra->solicitante->name ?? '—' }}
Fecha Pedido: {{ \Carbon\Carbon::parse($ordenCompra->fecha_pedido)->format('d/m/Y') }}
F. Entrega Esp.: {{ $ordenCompra->fecha_entrega_esperada ? \Carbon\Carbon::parse($ordenCompra->fecha_entrega_esperada)->format('d/m/Y') : '—' }}
Estado: {{ $estadoLabel }}
@if($ordenCompra->observaciones)

Observaciones:

{{ $ordenCompra->observaciones }}

@endif @if($ordenCompra->motivo_rechazo)
Motivo de rechazo: {{ $ordenCompra->motivo_rechazo }}
@endif

Ítems de la Orden

@foreach($ordenCompra->items as $idx => $item) @endforeach
# Producto U.M. Cantidad Precio Unit. Subtotal Observación
{{ $idx + 1 }} {{ $item->producto->nombre }}
{{ $item->producto->codigo }}
{{ optional($item->producto->unidadMedida)->abreviatura }} {{ number_format($item->cantidad, 3) }} S/. {{ number_format($item->precio_unitario, 4) }} S/. {{ number_format($item->subtotal, 2) }} {{ $item->observacion ?? '—' }}
Subtotal: S/. {{ number_format($ordenCompra->subtotal, 2) }}
IGV (18%): S/. {{ number_format($ordenCompra->igv, 2) }}
TOTAL: S/. {{ number_format($ordenCompra->total, 2) }}
{{-- Flujo de Aprobación --}}

Flujo de Aprobación

    @php $pasos = [ ['key' => 'borrador', 'label' => 'Elaboración', 'icon' => 'fas fa-pencil-alt'], ['key' => 'pend_jefe', 'label' => 'Jefe de Logística', 'icon' => 'fas fa-user-tie', 'firma_nombre' => $ordenCompra->firma_jefe_nombre ?? null, 'firma_fecha' => $ordenCompra->firma_jefe_fecha ?? null], ['key' => 'pend_adm', 'label' => 'Administración', 'icon' => 'fas fa-building', 'firma_nombre' => $ordenCompra->firma_adm_nombre ?? null, 'firma_fecha' => $ordenCompra->firma_adm_fecha ?? null], ['key' => 'pend_gerencia', 'label' => 'Gerencia General', 'icon' => 'fas fa-user-circle', 'firma_nombre' => $ordenCompra->firma_gerencia_nombre ?? null, 'firma_fecha' => $ordenCompra->firma_gerencia_fecha ?? null], ['key' => 'aprobado', 'label' => 'Aprobado', 'icon' => 'fas fa-check-circle'], ]; $estadoOrden = ['borrador'=>0,'pend_jefe'=>1,'pend_adm'=>2,'pend_gerencia'=>3,'aprobado'=>4,'rechazado'=>-1]; $nivelActual = $estadoOrden[$ordenCompra->estado] ?? 0; @endphp @foreach($pasos as $paso) @php $nivelPaso = $estadoOrden[$paso['key']] ?? 0; $aprobado = $nivelActual > $nivelPaso || ($ordenCompra->estado === 'aprobado' && $nivelPaso === 4); $activo = $ordenCompra->estado === $paso['key']; @endphp
  • {{ $paso['label'] }} @if($aprobado && isset($paso['firma_nombre']) && $paso['firma_nombre'])
    {{ $paso['firma_nombre'] }} @if(isset($paso['firma_fecha']) && $paso['firma_fecha']) — {{ \Carbon\Carbon::parse($paso['firma_fecha'])->format('d/m/Y H:i') }} @endif @endif @if($activo)
    En este paso @endif
    @if($aprobado) @elseif($activo) @endif
  • @endforeach @if($ordenCompra->estado === 'rechazado')
  • Rechazado
  • @endif
{{-- Acciones de Aprobación --}} @php $puedeAprobar = match($ordenCompra->estado) { 'pend_jefe' => auth()->user()->hasAnyRole(['super-admin','jefe-logistica']), 'pend_adm' => auth()->user()->hasAnyRole(['super-admin','adm-finanzas']), 'pend_gerencia' => auth()->user()->hasAnyRole(['super-admin','gerente']), default => false, }; @endphp @if($puedeAprobar)

Aprobar OC

Ingrese su contraseña para firmar electrónicamente esta aprobación.

@csrf

Rechazar OC

@csrf
@error('motivo_rechazo') {{ $message }} @enderror
@endif
@endsection