@php // Inicializar variables $totalPagado = 0; $montoFaltante = 0; $statusPago = $row->status_pago; $uuid = $row->uuid; $moneda = $row->moneda; $tipoCambio = $row->tipoCambio; $totalFactura = $row->total; // Calcular el pago abonado según el método de pago if ($row->c_MetodoPago == 'PPD') { $pagoAbonado = DB::select("SELECT SUM(saldo_pagado) AS montoAbonado FROM vw_pagos_cfdi_ppd WHERE uuid='$uuid' GROUP BY uuid"); if (!empty($pagoAbonado) && count($pagoAbonado) > 0) { $totalPagado = $pagoAbonado[0]->montoAbonado; if ($moneda != 'MXN') { $montoFaltante = round($totalFactura - $totalPagado, 2); echo $montoFaltante == 0 ? 'Pagado' : $montoFaltante; if ($montoFaltante == 0 && $statusPago != 'S') { \App\Models\Comprobante::where('id_comprobante', $row->id_comprobante)->update(['status_pago' => 'S']); } return $montoFaltante <= 0; } $montoFaltante = round((float)$totalFactura - (float)$totalPagado, 2); echo $montoFaltante == 0 ? 'Pagado' : $montoFaltante; return $montoFaltante <= 0; } else { echo 'Sin pago'; } } else { // Si el método de pago no es PPD if ($statusPago == 'S') { echo 'Pagado'; } else { $pagoAbonado = DB::select("SELECT SUM(importe) AS montoAbonado FROM control_pagos WHERE id_comprobante='$row->id_comprobante' GROUP BY id_comprobante"); if (!empty($pagoAbonado) && count($pagoAbonado) > 0) { if ($moneda == 'MXN') { $totalPagado = $pagoAbonado[0]->montoAbonado; $montoFaltante = round((float)$totalFactura - (float)$totalPagado, 2); if ($montoFaltante == 0 && $statusPago != 'S') { \App\Models\Comprobante::where('id_comprobante', $row->id_comprobante)->update(['status_pago' => 'S']); echo 'Pagado'; return true; } echo $totalPagado; return true; } else { $totalFacturaMX = round((float)$totalFactura * (float)$tipoCambio, 2); $totalPagado = $pagoAbonado[0]->montoAbonado; $montoFaltante = round((float)$totalPagado - $totalFacturaMX, 2); if ($montoFaltante == 0) { \App\Models\Comprobante::where('id_comprobante', $row->id_comprobante)->update(['status_pago' => 'S']); echo 'Pagado'; return true; } else { echo $montoFaltante; return true; } } $montoFaltante = round((float)$totalFactura - (float)$totalPagado, 2); echo $montoFaltante == 0 ? 'Pagado' : $montoFaltante; return $montoFaltante <= 0; } else { echo 'Sin pago'; } } } @endphp