@extends('layouts.dashboard.inface', ['section' => 'finance']) @section('content')
@include('realEstates.finance.nav', ['title' => $link->investor->name.' · '.$link->project->name])

{{ config('finance.participation_types.'.$link->participation_type) }} · {{ config('finance.investor_statuses.'.$link->status) }} · {{ $link->project->currency }}

Capital pendiente: {{ \App\Domain\Finance\Money::format($balance['capital']) }} · Rendimiento reconocido pendiente: {{ \App\Domain\Finance\Money::format($balance['returns']) }}

Estado de cuenta@can('investors.manage')Editar convenio@endcan

Este saldo corresponde al convenio. Los préstamos se administran por separado.

@can('investors.manage') @if($link->participation_type !== 'loan')
@csrf

Registrar aportación

@include('realEstates.finance.fields', ['record' => ['amount' => '0', 'contribution_date' => now()->toDateString()], 'fields' => ['contribution_type' => ['Tipo', config('finance.contribution_types'), true], 'amount' => ['Importe en efectivo', 'money', true], 'valuation_amount' => ['Valuación (solo especie)', 'money'], 'contribution_date' => ['Fecha real', 'date', true], 'description' => ['Concepto', 'text', true], 'land_area_m2' => ['Superficie (m², opcional)', 'decimal'], 'unit_id' => ['ID del lote (opcional)', 'integer'], 'reference' => ['Referencia / comprobante', 'text'], 'payment_method' => ['Método (solo dinero)', config('finance.methods')]]])

Dinero: importe mayor a cero y método obligatorio; deja vacíos valuación y datos del bien. Especie: efectivo cero y valuación mayor a cero; no genera entrada de caja.

@include('realEstates.finance.confirm')
@foreach(['return_accrual' => 'Reconocer rendimiento pactado', 'repayment' => 'Registrar pago al inversionista'] as $type => $title)
@csrf

{{ $title }}

@include('realEstates.finance.fields', ['record' => ['entry_date' => now()->toDateString(), 'capital_amount' => '0', 'return_amount' => '0'], 'fields' => ['entry_date' => ['Fecha real', 'date', true], 'capital_amount' => [$type === 'return_accrual' ? 'Capital (debe ser cero)' : 'Capital a devolver', 'money', true], 'return_amount' => ['Rendimiento', 'money', true], 'description' => ['Concepto y fundamento', 'text', true], 'reference' => ['Referencia', 'text'], 'payment_method' => ['Método (obligatorio al pagar)', config('finance.methods'), $type === 'repayment']]])

{{ $type === 'return_accrual' ? 'Registra solo un rendimiento aprobado conforme al convenio; no convierte proyecciones en efectivo ni modifica capital.' : 'El pago no puede exceder el capital ni los rendimientos reconocidos pendientes.' }}

@include('realEstates.finance.confirm')
@endforeach @else

Convenio de préstamo: registra desembolsos y pagos desde Finanzas → Préstamos.

@endif @endcan

Aportaciones recibidas

@forelse($contributions as $c)@empty@endforelse
Fecha / conceptoTipoEfectivoValuaciónSuperficieEstado
{{ $c->contribution_date }}

{{ $c->description }}

{{ config('finance.contribution_types.'.$c->contribution_type) }}{{ \App\Domain\Finance\Money::format($c->amount) }}{{ $c->valuation_amount === null ? '—' : \App\Domain\Finance\Money::format($c->valuation_amount) }}{{ $c->land_area_m2 === null ? '—' : \App\Domain\Finance\FinanceNumber::format($c->land_area_m2).' m²' }}{{ $c->reversed_at ? 'Revertida' : 'Vigente' }}
Sin aportaciones.

Historial del convenio

@forelse($entries as $entry)@empty@endforelse
Fecha / ID / conceptoCapital + / −Rendimiento + / −Corrección
{{ $entry->entry_date }} · #{{ $entry->id }}

{{ $entry->description }}

Usuario {{ $entry->created_by }} · {{ $entry->created_at }}

{{ \App\Domain\Finance\Money::format($entry->capital_delta) }}{{ \App\Domain\Finance\Money::format($entry->return_delta) }}@if($entry->reversal_of_id)Reversa de #{{ $entry->reversal_of_id }}@elseif($entry->reversal)Revertido@else @can('investors.manage')
@csrf@include('realEstates.finance.confirm', ['message' => 'Corregir este registro; no es un reembolso real.'])
@endcan @endif
Sin movimientos.
@endsection