Class CollectionsController
- Namespace
- KadicErp.WebApi.Controllers.Academy
- Assembly
- KadicErp.WebApi.dll
US#8 (#8488) — Cobranza: deudores, pagos (parciales), planes y vista 360. Campos
condicionados por permiso (ncf, saldos de la 360) van null, nunca se filtra la fila.
[ApiController]
[Route("api/academies")]
[Authorize]
[RequireModule("ACADEMY")]
public class CollectionsController : ControllerBase
- Inheritance
-
objectControllerBaseCollectionsController
Constructors
CollectionsController(IMediator, ICurrentUser, IBranchAccessGuard)
public CollectionsController(IMediator mediator, ICurrentUser currentUser, IBranchAccessGuard branchAccessGuard)
Parameters
mediatorIMediatorcurrentUserICurrentUserbranchAccessGuardIBranchAccessGuard
Methods
GetAccount360(Guid, CancellationToken)
[HttpGet("collections/360/{studentId:guid}")]
[Authorize(Policy = "ACADEMY_COLLECTIONS_VIEW_360")]
public Task<IActionResult> GetAccount360(Guid studentId, CancellationToken cancellationToken)
Parameters
studentIdGuidcancellationTokenCancellationToken
Returns
- Task<IActionResult>
GetDebtors(Guid?, string?, int, int, CancellationToken)
[HttpGet("collections/debtors")]
[Authorize(Policy = "ACADEMY_COLLECTIONS_DEBTORS_VIEW")]
public Task<IActionResult> GetDebtors(Guid? branchId, string? search, int page = 1, int pageSize = 20, CancellationToken cancellationToken = default)
Parameters
branchIdGuid?searchstringpageintpageSizeintcancellationTokenCancellationToken
Returns
- Task<IActionResult>
GetKpis(Guid?, CancellationToken)
[HttpGet("collections/kpis")]
[Authorize(Policy = "ACADEMY_COLLECTIONS_VIEW_KPI")]
public Task<IActionResult> GetKpis(Guid? branchId, CancellationToken cancellationToken)
Parameters
branchIdGuid?cancellationTokenCancellationToken
Returns
- Task<IActionResult>
GetOpenChargesByFamily(Guid, CancellationToken)
Cuotas abiertas de todos los alumnos de una familia, agrupadas por alumno — el modal "Registrar pago" a nivel pagador las carga de aquí (cobro por familia/empresa).
[HttpGet("collections/families/{familyId:guid}/open-charges")]
[Authorize(Policy = "ACADEMY_COLLECTIONS_REGISTER_PAYMENT")]
public Task<IActionResult> GetOpenChargesByFamily(Guid familyId, CancellationToken cancellationToken)
Parameters
familyIdGuidcancellationTokenCancellationToken
Returns
- Task<IActionResult>
GetPayerDebtors(Guid?, string?, int, int, CancellationToken)
Deudores agrupados por PAGADOR (familia/empresa) — alimenta la vista de cards
con barra de progreso (patrón grv-vehicle-card). La lista por estudiante sigue en
collections/debtors.
[HttpGet("collections/debtors-by-payer")]
[Authorize(Policy = "ACADEMY_COLLECTIONS_DEBTORS_VIEW")]
public Task<IActionResult> GetPayerDebtors(Guid? branchId, string? search, int page = 1, int pageSize = 20, CancellationToken cancellationToken = default)
Parameters
branchIdGuid?searchstringpageintpageSizeintcancellationTokenCancellationToken
Returns
- Task<IActionResult>
GetPayments(string?, int, int, CancellationToken)
[HttpGet("payments")]
[Authorize(Policy = "ACADEMY_COLLECTIONS_PAYMENTS_VIEW")]
public Task<IActionResult> GetPayments(string? search, int page = 1, int pageSize = 20, CancellationToken cancellationToken = default)
Parameters
searchstringpageintpageSizeintcancellationTokenCancellationToken
Returns
- Task<IActionResult>
GetPlanByStudent(Guid, CancellationToken)
[HttpGet("payment-plans/by-student/{studentId:guid}")]
[Authorize(Policy = "ACADEMY_COLLECTIONS_PLANS_VIEW")]
public Task<IActionResult> GetPlanByStudent(Guid studentId, CancellationToken cancellationToken)
Parameters
studentIdGuidcancellationTokenCancellationToken
Returns
- Task<IActionResult>
GetPlans(CancellationToken)
[HttpGet("payment-plans")]
[Authorize(Policy = "ACADEMY_COLLECTIONS_PLANS_VIEW")]
public Task<IActionResult> GetPlans(CancellationToken cancellationToken)
Parameters
cancellationTokenCancellationToken
Returns
- Task<IActionResult>
GetVoidCategories(CancellationToken)
US#16 (#8496) CA17 — catálogo global de motivos de anulación.
[HttpGet("payments/void-categories")]
[Authorize(Policy = "ACADEMY_COLLECTIONS_REGISTER_PAYMENT")]
public Task<IActionResult> GetVoidCategories(CancellationToken cancellationToken)
Parameters
cancellationTokenCancellationToken
Returns
- Task<IActionResult>
GetVoidHistory(Guid, CancellationToken)
US#16 (#8496) CA17 — historial append-only de anulaciones de un pago.
[HttpGet("payments/{id:guid}/void-history")]
[Authorize(Policy = "ACADEMY_COLLECTIONS_PAYMENTS_VIEW")]
public Task<IActionResult> GetVoidHistory(Guid id, CancellationToken cancellationToken)
Parameters
idGuidcancellationTokenCancellationToken
Returns
- Task<IActionResult>
RegisterPayment(RegisterPaymentBody, CancellationToken)
[HttpPost("payments")]
[Authorize(Policy = "ACADEMY_COLLECTIONS_REGISTER_PAYMENT")]
public Task<IActionResult> RegisterPayment(RegisterPaymentBody body, CancellationToken cancellationToken)
Parameters
bodyRegisterPaymentBodycancellationTokenCancellationToken
Returns
- Task<IActionResult>
RunRollingCharges(RunRollingChargesBody?, CancellationToken)
US#15 (#8495) CA5 — endpoint operativo de soporte, no el disparo normal (ese
es 100% Hangfire vía AcademyRollingChargeWorkerExecutor). Sirve para forzar/reintentar
una pasada manualmente, ej. tras un incidente. AsOf opcional — por defecto hoy (UTC).
[HttpPost("collections/rolling-charges/run")]
[Authorize(Policy = "ACADEMY_COLLECTIONS_RUN_ROLLING_CHARGES")]
public Task<IActionResult> RunRollingCharges(RunRollingChargesBody? body, CancellationToken cancellationToken)
Parameters
bodyRunRollingChargesBodycancellationTokenCancellationToken
Returns
- Task<IActionResult>
VoidPayment(Guid, VoidPaymentBody, CancellationToken)
[HttpPost("payments/{id:guid}/void")]
[Authorize(Policy = "ACADEMY_COLLECTIONS_VOID_PAYMENT")]
public Task<IActionResult> VoidPayment(Guid id, VoidPaymentBody body, CancellationToken cancellationToken)
Parameters
idGuidbodyVoidPaymentBodycancellationTokenCancellationToken
Returns
- Task<IActionResult>