@extends('layouts.app') @section('title', 'Facturación — ' . \App\Models\Setting::get('app_name', 'TI Manager')) @section('content')
@if((isset($pendingBilling) && $pendingBilling->count() > 0) || (isset($pendingWorkOrders) && $pendingWorkOrders->count() > 0) || (isset($pendingQuotes) && $pendingQuotes->count() > 0))
@if(isset($pendingBilling) && $pendingBilling->count() > 0)

Servicios Pendientes de Facturar ({{ $pendingBilling->count() }})

Los técnicos marcaron los siguientes servicios en el inventario como "Cobrables". Revisa la lista, genera la factura en tu sistema contable, y súbela aquí.

@foreach($pendingBilling as $log)
{{ $log->title }}
@php $company = optional(optional($log->inventoryItem)->branch)->company; @endphp @if($company) {{ $company->name }} @if($company->nit)• {{ $company->nit }} @endif @if($company->email)• {{ $company->email }} @endif @else N/A @endif
@if($log->cost > 0) ${{ number_format($log->cost, 2) }} @endif
@csrf
@endforeach
@endif @if(isset($pendingWorkOrders) && $pendingWorkOrders->count() > 0)

Alertas de Cuentas por Cobrar (Taller)

Las siguientes órdenes de servicio han sido entregadas, pero aún están pendientes de pago o pendientes de emitirles factura.

@foreach($pendingWorkOrders as $wo)
{{ $wo->order_number }}
@if($wo->inventory_item_id) @php $company = optional(optional($wo->inventoryItem)->branch)->company; @endphp @if($company) {{ $company->name }} @if($company->nit)• {{ $company->nit }} @endif @if($company->email)• {{ $company->email }} @endif @else N/A @endif @else {{ $wo->client_name }} @if($wo->client_document)• {{ $wo->client_document }} @endif @if($wo->client_email)• {{ $wo->client_email }} @endif @endif
@if($wo->final_cost > 0) ${{ number_format($wo->final_cost, 2) }} @endif @if($wo->billing_status === 'Pagado') Solo facturar @else Facturar y esperar pago @endif @if($wo->invoice_status === 'Pendiente de Enviar')
@csrf
@endif
@endforeach
@endif @if(isset($pendingQuotes) && $pendingQuotes->count() > 0)

Cotizaciones Aprobadas ({{ $pendingQuotes->count() }})

Estas cotizaciones han sido aceptadas por los clientes. Revisa la lista y, cuando emitas la factura, márcalas aquí.

@foreach($pendingQuotes as $quote)
{{ $quote->quote_number }}
@if($quote->company_id) {{ $quote->company->name }} @if($quote->company->nit)• {{ $quote->company->nit }} @endif @if($quote->company->email)• {{ $quote->company->email }} @endif @else {{ $quote->customer_name }} @if($quote->customer_document)• {{ $quote->customer_document }} @endif @if($quote->customer_email)• {{ $quote->customer_email }} @endif @endif
@if($quote->total > 0) ${{ number_format($quote->total, 2) }} @endif
@csrf
@endforeach
@endif
@endif {{-- Resumen / Estado Global --}}
Total Facturado
${{ number_format($totalInvoiced, 0) }}
Total Pagado
${{ number_format($totalPaid, 0) }}
Cartera / Pendiente
${{ number_format($totalPending, 0) }}
@if($invoices->count() > 0)
@foreach($invoices as $invoice) @endforeach
Número Cliente Emisión Total Estado Acciones
{{ $invoice->document_number }}
{{ $invoice->company ? $invoice->company->name : ($invoice->customer ? $invoice->customer->name : 'N/A') }}
{{ $invoice->issue_date ? $invoice->issue_date->format('d/m/Y') : 'N/A' }}
${{ number_format($invoice->total_amount, 0) }}
@php $paid = $invoice->payments->where('status', 'Aprobado')->sum('amount'); $balance = max(0, $invoice->total_amount - $paid); @endphp @if($balance > 0 && $invoice->status === 'Sin Pagar')
Saldo: ${{ number_format($balance, 0) }}
@endif
@php $paid = $invoice->payments->where('status', 'Aprobado')->sum('amount'); $displayStatus = $invoice->status; if ($displayStatus === 'Sin Pagar' && $paid > 0) { $displayStatus = 'Abonada'; } $color = $displayStatus === 'Pagado' ? ['bg' => 'rgba(145, 200, 73, 0.1)', 'color' => '#91c849'] : ($displayStatus === 'Abonada' ? ['bg' => 'rgba(245, 158, 11, 0.1)', 'color' => '#f59e0b'] : ['bg' => 'rgba(239, 68, 68, 0.1)', 'color' => '#ef4444']); @endphp {{ $displayStatus }}
@if(auth()->user()->isAdmin())
@csrf
@csrf @method('DELETE')
@endif
{{-- VISTA TARJETAS: Grid responsivo --}}
@foreach($invoices as $invoice)
{{ $invoice->document_number }}
@php $paid = $invoice->payments->where('status', 'Aprobado')->sum('amount'); $displayStatus = $invoice->status; if ($displayStatus === 'Sin Pagar' && $paid > 0) { $displayStatus = 'Abonada'; } $color = $displayStatus === 'Pagado' ? ['bg' => 'rgba(145, 200, 73, 0.1)', 'color' => '#91c849'] : ($displayStatus === 'Abonada' ? ['bg' => 'rgba(245, 158, 11, 0.1)', 'color' => '#f59e0b'] : ['bg' => 'rgba(239, 68, 68, 0.1)', 'color' => '#ef4444']); @endphp {{ $displayStatus }}
{{ $invoice->company ? $invoice->company->name : ($invoice->customer ? $invoice->customer->name : 'N/A') }}
Emisión {{ $invoice->issue_date ? $invoice->issue_date->format('d/m/Y') : 'N/A' }}
Total
${{ number_format($invoice->total_amount, 0) }} @php $paid = $invoice->payments->where('status', 'Aprobado')->sum('amount'); $balance = max(0, $invoice->total_amount - $paid); @endphp @if($balance > 0 && $invoice->status === 'Sin Pagar')
Saldo: ${{ number_format($balance, 0) }}
@endif
Ver @if(auth()->user()->isAdmin())
@csrf
@csrf @method('DELETE')
@endif
@endforeach
@if($invoices->hasPages())
{{ $invoices->links() }}
@endif @else

No hay facturas registradas

Aún no hay facturas de la DIAN en el sistema.

@if(!auth()->user()->isClient()) Subir Primera Factura @endif
@endif
@push('scripts') @endpush @endsection