RED NACIONAL DE HOSPITALES
SISTEMA DE CONTABILIDAD GUBERNAMENTAL
COMPROBANTE DE DIARIO
PARTIDA FECHA FUENTE DE FINANCIAMIENTO A.O TM
{{ $partida->numero_partida }} {{ date('d/m/Y', strtotime($partida->fecha)) }} {{ strtoupper($partida->fuente_financiamiento ?? 'N/A') }} 3 - ESPECIALES {{ $partida->tm == 1 ? '1 - MOVIMIENTOS MONETARIOS' : ($partida->tm == 2 ? '2 - AJUSTE CONTABLE' : '3 - CIERRE Y APERTURA') }}
PROYECTO Y
PROGRAMA:
{{ $partida->proyecto_programa ?? 'N/A' }}
Concepto: {{ $partida->partida }}
@php $obtenerJerarquiaCompleta = function ($codigo) { $jerarquia = []; $construirJerarquia = function ($codigoActual, &$jerarquiaRef) use (&$construirJerarquia) { $cuentaPrincipal = \App\Models\ContableCuenta::where('codigo', $codigoActual)->first(); if ($cuentaPrincipal) { $jerarquiaRef[] = [ 'codigo' => $cuentaPrincipal->codigo, 'nombre' => $cuentaPrincipal->nombre, 'tipo' => 'cuenta', 'nivel' => strlen($cuentaPrincipal->codigo), ]; $codigoPadre = substr($cuentaPrincipal->codigo, 0, -1); while (strlen($codigoPadre) > 0) { $cuentaPadre = \App\Models\ContableCuenta::where('codigo', $codigoPadre)->first(); if ($cuentaPadre) { $construirJerarquia($cuentaPadre->codigo, $jerarquiaRef); break; } $codigoPadre = substr($codigoPadre, 0, -1); } return; } $subcuenta = \App\Models\ContableSubCuenta::where('codigo', $codigoActual) ->with('cuenta') ->first(); if ($subcuenta && $subcuenta->cuenta) { $jerarquiaRef[] = [ 'codigo' => $subcuenta->codigo, 'nombre' => $subcuenta->nombre, 'tipo' => 'subcuenta', 'nivel' => strlen($subcuenta->codigo), ]; $construirJerarquia($subcuenta->cuenta->codigo, $jerarquiaRef); return; } $analitico = \App\Models\ContableAnalitico::where('codigo', $codigoActual) ->with(['subcuenta.cuenta']) ->first(); if ($analitico && $analitico->subcuenta && $analitico->subcuenta->cuenta) { $jerarquiaRef[] = [ 'codigo' => $analitico->codigo, 'nombre' => $analitico->nombre, 'tipo' => 'analitico', 'nivel' => strlen($analitico->codigo), ]; $construirJerarquia($analitico->subcuenta->codigo, $jerarquiaRef); return; } $jerarquiaRef[] = [ 'codigo' => $codigoActual, 'nombre' => '', 'tipo' => 'desconocido', 'nivel' => strlen($codigoActual), ]; }; $construirJerarquia($codigo, $jerarquia); return array_reverse($jerarquia); }; $cuentasMostradas = []; @endphp @foreach ($partida->detalles as $detalle) @php $codigoDetalle = ''; if (!empty($detalle->analitico)) { $partes = explode(' - ', $detalle->analitico, 2); $codigoDetalle = count($partes) >= 2 ? trim($partes[0]) : $detalle->analitico; } elseif (!empty($detalle->subcuenta)) { $partes = explode(' - ', $detalle->subcuenta, 2); $codigoDetalle = count($partes) >= 2 ? trim($partes[0]) : $detalle->subcuenta; } elseif (!empty($detalle->cuenta)) { $partes = explode(' - ', $detalle->cuenta, 2); $codigoDetalle = count($partes) >= 2 ? trim($partes[0]) : $detalle->cuenta; } $jerarquiaCompleta = $obtenerJerarquiaCompleta($codigoDetalle); $nivelesAMostrar = []; foreach ($jerarquiaCompleta as $nivel) { if (!in_array($nivel['codigo'], $cuentasMostradas)) { $nivelesAMostrar[] = $nivel; $cuentasMostradas[] = $nivel['codigo']; } } if (count($nivelesAMostrar) > 0) { array_pop($nivelesAMostrar); } @endphp @foreach ($nivelesAMostrar as $index => $nivel) @php $claseNivel = 'cuenta-padre-row'; $descripcionNivel = '--- Cuenta Principal ---'; if ($nivel['tipo'] === 'cuenta') { if (strlen($nivel['codigo']) <= 2) { $claseNivel = 'cuenta-nivel-1'; $descripcionNivel = ''; } elseif (strlen($nivel['codigo']) <= 4) { $claseNivel = 'cuenta-nivel-2'; $descripcionNivel = ''; } else { $claseNivel = 'cuenta-nivel-3'; $descripcionNivel = ''; } } elseif ($nivel['tipo'] === 'subcuenta') { $claseNivel = 'cuenta-padre-row'; $descripcionNivel = ''; } @endphp @endforeach @endforeach
CUENTA PRES UP LT Nombre Debe Haber
{{ $nivel['codigo'] }} {{ $nivel['nombre'] }} {{ $descripcionNivel }}
@php $codigoMostrar = ''; if (!empty($detalle->analitico)) { $partes = explode(' - ', $detalle->analitico, 2); if (count($partes) >= 2) { $codigoMostrar = trim($partes[0]); } else { $analitico = \App\Models\ContableAnalitico::where( 'codigo', $detalle->analitico, )->first(); $codigoMostrar = $analitico ? $analitico->codigo : $detalle->analitico; } } elseif (!empty($detalle->subcuenta)) { $partes = explode(' - ', $detalle->subcuenta, 2); if (count($partes) >= 2) { $codigoMostrar = trim($partes[0]); } else { $subcuenta = \App\Models\ContableSubCuenta::where( 'codigo', $detalle->subcuenta, )->first(); $codigoMostrar = $subcuenta ? $subcuenta->codigo : $detalle->subcuenta; } } elseif (!empty($detalle->cuenta)) { $analiticoTest = \App\Models\ContableAnalitico::where( 'codigo', $detalle->cuenta, )->first(); if ($analiticoTest) { $codigoMostrar = $analiticoTest->codigo; } else { $partes = explode(' - ', $detalle->cuenta, 2); if (count($partes) >= 2) { $codigoMostrar = trim($partes[0]); } else { $cuentaObj = \App\Models\ContableCuenta::where( 'codigo', $detalle->cuenta, )->first(); if ($cuentaObj) { $codigoMostrar = $cuentaObj->codigo; } else { $subcuentaObj = \App\Models\ContableSubCuenta::where( 'codigo', $detalle->cuenta, )->first(); $codigoMostrar = $subcuentaObj ? $subcuentaObj->codigo : $detalle->cuenta; } } } } echo $codigoMostrar; @endphp {{ $detalle->presupuesto_nivel_objeto_especifico ?? '-' }} {{ $detalle->unidad_presupuestaria ?? '-' }} {{ $detalle->linea_trabajo ?? '-' }} @php $nombreMostrar = ''; if (!empty($detalle->analitico)) { $partes = explode(' - ', $detalle->analitico, 2); if (count($partes) >= 2) { $nombreMostrar = trim($partes[1]); } else { $analitico = \App\Models\ContableAnalitico::where( 'codigo', $detalle->analitico, )->first(); $nombreMostrar = $analitico ? $analitico->nombre : ''; } } elseif (!empty($detalle->subcuenta)) { $partes = explode(' - ', $detalle->subcuenta, 2); if (count($partes) >= 2) { $nombreMostrar = trim($partes[1]); } else { $subcuenta = \App\Models\ContableSubCuenta::where( 'codigo', $detalle->subcuenta, )->first(); $nombreMostrar = $subcuenta ? $subcuenta->nombre : ''; } } elseif (!empty($detalle->cuenta)) { $analiticoTest = \App\Models\ContableAnalitico::where( 'codigo', $detalle->cuenta, )->first(); if ($analiticoTest) { $nombreMostrar = $analiticoTest->nombre; } else { $partes = explode(' - ', $detalle->cuenta, 2); if (count($partes) >= 2) { $nombreMostrar = trim($partes[1]); } else { $cuentaObj = \App\Models\ContableCuenta::where( 'codigo', $detalle->cuenta, )->first(); if ($cuentaObj) { $nombreMostrar = $cuentaObj->nombre; } else { $subcuentaObj = \App\Models\ContableSubCuenta::where( 'codigo', $detalle->cuenta, )->first(); $nombreMostrar = $subcuentaObj ? $subcuentaObj->nombre : ''; } } } } echo $nombreMostrar ?: $detalle->concepto; @endphp @if ((float) $detalle->cargo === 0.0) {{-- vacío --}} @else ${{ number_format($detalle->cargo, 2) }} @endif @if ((float) $detalle->abono === 0.0) {{-- vacío --}} @else ${{ number_format($detalle->abono, 2) }} @endif
Totales: ${{ number_format($partida->detalles->sum('cargo'), 2) }} ${{ number_format($partida->detalles->sum('abono'), 2) }}