Class CreditNotesController
- Namespace
- KadicErp.WebApi.Controllers.FiscalAdjustments
- Assembly
- KadicErp.WebApi.dll
[ApiController]
[Authorize]
[RequireModule("ADJUSTMENT")]
[Route("api/fiscal-adjustments/credit-notes")]
public class CreditNotesController : ControllerBase
- Inheritance
-
objectControllerBaseCreditNotesController
Constructors
CreditNotesController(IMediator, IStringLocalizer<GeneralMessages>)
public CreditNotesController(IMediator mediator, IStringLocalizer<GeneralMessages> localizer)
Parameters
mediatorIMediatorlocalizerIStringLocalizer<GeneralMessages>
Methods
Apply(Guid, ApplyCreditNoteRequest?)
Aplicar el crédito de una NC contra su documento original (factura de Ventas u otro documento de ajuste). Reduce el saldo pendiente real de ese documento y marca la NC como Applied/PartiallyApplied. Si no se envÃa AppliedAmount se aplica el máximo disponible.
[HttpPost("{id:guid}/apply")]
[Authorize(Policy = "ADJUSTMENT_CREDIT_NOTE_APPLY")]
public Task<IActionResult> Apply(Guid id, ApplyCreditNoteRequest? request)
Parameters
idGuidrequestApplyCreditNoteRequest
Returns
- Task<IActionResult>
ApplyBatch(Guid, ApplyCreditNoteBatchRequest)
Aplica el crédito de una NC contra VARIOS documentos en una sola operación (p.ej. RD$1,000 a una ND y RD$1,000 a otra) — todo o nada: si cualquier línea falla la validación o el total excede el saldo disponible, no se aplica ninguna.
[HttpPost("{id:guid}/apply-batch")]
[Authorize(Policy = "ADJUSTMENT_CREDIT_NOTE_APPLY")]
public Task<IActionResult> ApplyBatch(Guid id, ApplyCreditNoteBatchRequest request)
Parameters
idGuidrequestApplyCreditNoteBatchRequest
Returns
- Task<IActionResult>
ApplyCustomerCreditBalance(ApplyCustomerCreditBalanceRequest)
Aplica un recibo con saldo sin aplicar (saldo a favor) contra una factura u otro documento de CxC — reexpone ApplyReceiptToDocumentCommand aquí (con el permiso de NC, que sí sabemos que está concedido) porque el saldo a favor de un cliente suele venir de una Nota de Crédito.
[HttpPost("apply-customer-credit-balance")]
[Authorize(Policy = "ADJUSTMENT_CREDIT_NOTE_APPLY")]
public Task<IActionResult> ApplyCustomerCreditBalance(ApplyCustomerCreditBalanceRequest request)
Parameters
Returns
- Task<IActionResult>
Create(CreateCreditNoteCommand)
Crear una Nota de Crédito fiscal (NC). Genera NCF y registra crédito disponible para el cliente.
[HttpPost]
[Authorize(Policy = "ADJUSTMENT_CREDIT_NOTE_CREATE")]
public Task<IActionResult> Create(CreateCreditNoteCommand command)
Parameters
commandCreateCreditNoteCommand
Returns
- Task<IActionResult>
GetAll(GetCreditNotesPaginatedQuery)
Listar Notas de Crédito con paginación y filtros opcionales. Filtros: customerId, branchId, fiscalStatus, financialStatus, issuedFrom, issuedTo.
[HttpGet]
[Authorize(Policy = "ADJUSTMENT_CREDIT_NOTE_VIEW")]
public Task<IActionResult> GetAll(GetCreditNotesPaginatedQuery query)
Parameters
queryGetCreditNotesPaginatedQuery
Returns
- Task<IActionResult>
GetApplications(Guid)
Historial de aplicacion de una Nota de Credito: a que documento(s) redujo saldo (otra ND o la factura de Ventas original).
[HttpGet("{id:guid}/applications")]
[Authorize(Policy = "ADJUSTMENT_CREDIT_NOTE_VIEW")]
public Task<IActionResult> GetApplications(Guid id)
Parameters
idGuid
Returns
- Task<IActionResult>
GetById(Guid)
Obtener detalle completo de una Nota de Crédito por su Id.
[HttpGet("{id:guid}")]
[Authorize(Policy = "ADJUSTMENT_CREDIT_NOTE_VIEW")]
public Task<IActionResult> GetById(Guid id)
Parameters
idGuid
Returns
- Task<IActionResult>
GetByInvoice(Guid)
Obtener todas las Notas de Crédito vinculadas a una factura base.
[HttpGet("by-invoice/{invoiceId:guid}")]
[Authorize(Policy = "ADJUSTMENT_CREDIT_NOTE_VIEW")]
public Task<IActionResult> GetByInvoice(Guid invoiceId)
Parameters
invoiceIdGuid
Returns
- Task<IActionResult>
GetCustomerCreditBalance(Guid)
Saldo a favor disponible del cliente (recibos con UnappliedAmount > 0 — generados por NCs sin documento suficiente donde aplicarse, o anticipos normales). Se usa para ofrecer "Pagar con saldo a favor" al cobrar una factura.
[HttpGet("customer-credit-balance/{customerId:guid}")]
[Authorize(Policy = "ADJUSTMENT_CREDIT_NOTE_APPLY")]
public Task<IActionResult> GetCustomerCreditBalance(Guid customerId)
Parameters
customerIdGuid
Returns
- Task<IActionResult>
GetInvoicePaymentSummary(Guid)
Obtener el resumen de pagos de una factura para pre-llenar el formulario de Nota de Crédito. Si la factura no tiene CXC: PaidAmount = GrandTotal, PendingBalance = 0. Si tiene CXC: PaidAmount y PendingBalance calculados desde los documentos de CXC.
[HttpGet("invoice-payment-summary/{invoiceId:guid}")]
[Authorize(Policy = "ADJUSTMENT_CREDIT_NOTE_VIEW")]
public Task<IActionResult> GetInvoicePaymentSummary(Guid invoiceId)
Parameters
invoiceIdGuid
Returns
- Task<IActionResult>
GetSummary(GetCreditNoteSummaryQuery)
Totales para las tarjetas KPI del listado (Registradas, Emitidas, Aplicadas, Monto acumulado). Calculados sobre el total de filas que matchean los filtros, no sobre la página actual.
[HttpGet("summary")]
[Authorize(Policy = "ADJUSTMENT_CREDIT_NOTE_VIEW")]
public Task<IActionResult> GetSummary(GetCreditNoteSummaryQuery query)
Parameters
queryGetCreditNoteSummaryQuery
Returns
- Task<IActionResult>
Issue(Guid, IssueCreditNoteRequest?)
Emitir una Nota de Crédito borrador. Genera NCF y crea el documento de CXC.
[HttpPost("{id:guid}/issue")]
[Authorize(Policy = "ADJUSTMENT_CREDIT_NOTE_CREATE")]
public Task<IActionResult> Issue(Guid id, IssueCreditNoteRequest? request)
Parameters
idGuidrequestIssueCreditNoteRequest
Returns
- Task<IActionResult>
UnapplyApplication(Guid, Guid, UnapplyCreditNoteApplicationRequest)
Revierte ("Desaplicar") una aplicación puntual de esta NC contra otro documento — nunca borra el registro, lo marca revertido y devuelve el saldo a la NC y la deuda al documento destino. No afecta el NCF ni el estatus fiscal de la NC.
[HttpPost("{id:guid}/applications/{applicationId:guid}/unapply")]
[Authorize(Policy = "ADJUSTMENT_CREDIT_NOTE_APPLY")]
public Task<IActionResult> UnapplyApplication(Guid id, Guid applicationId, UnapplyCreditNoteApplicationRequest request)
Parameters
idGuidapplicationIdGuidrequestUnapplyCreditNoteApplicationRequest
Returns
- Task<IActionResult>
Update(Guid, UpdateCreditNoteCommand)
Actualizar una Nota de Crédito en estado Borrador. Permite modificar motivo, código, tipo de cambio y lÃneas mientras el documento es un borrador.
[HttpPut("{id:guid}")]
[Authorize(Policy = "ADJUSTMENT_CREDIT_NOTE_UPDATE")]
public Task<IActionResult> Update(Guid id, UpdateCreditNoteCommand command)
Parameters
idGuidcommandUpdateCreditNoteCommand
Returns
- Task<IActionResult>
Void(Guid)
Anular una Nota de Crédito borrador.
[HttpPatch("{id:guid}/void")]
[Authorize(Policy = "ADJUSTMENT_CREDIT_NOTE_VOID")]
public Task<IActionResult> Void(Guid id)
Parameters
idGuid
Returns
- Task<IActionResult>