Table of Contents

Class InvoicesController

Namespace
KadicErp.WebApi.Controllers.Sales
Assembly
KadicErp.WebApi.dll
[ApiController]
[Authorize]
[Route("api/sales/invoices")]
public class InvoicesController : ControllerBase
Inheritance
object
ControllerBase
InvoicesController

Constructors

InvoicesController(IMediator, IStringLocalizer<GeneralMessages>)

public InvoicesController(IMediator mediator, IStringLocalizer<GeneralMessages> localizer)

Parameters

mediator IMediator
localizer IStringLocalizer<GeneralMessages>

Methods

Create(CreateInvoiceCommand)

Crear nueva factura en estado DRAFT

[HttpPost]
[Authorize(Policy = "SALES_INVOICES_CREATE")]
public Task<IActionResult> Create(CreateInvoiceCommand command)

Parameters

command CreateInvoiceCommand

Returns

Task<IActionResult>

CreateAndIssue(CreateAndIssueInvoiceCommand)

CREAR Y EMITIR FACTURA EN UNA SOLA TRANSACCIÓN

Este es el endpoint principal para punto de venta. Ejecuta TODO en una sola transacción:

  • Crea la factura
  • Genera el NCF (número de comprobante fiscal)
  • Afecta el inventario
  • Registra los pagos inmediatos si los hay

Si cualquier paso falla, se hace ROLLBACK completo.

[HttpPost("create-and-issue")]
[Authorize(Policy = "SALES_INVOICES_ISSUE")]
public Task<IActionResult> CreateAndIssue(CreateAndIssueInvoiceCommand command)

Parameters

command CreateAndIssueInvoiceCommand

Returns

Task<IActionResult>

GetAll(GetInvoicesQuery)

Listar facturas con paginación

[HttpGet]
[Authorize(Policy = "SALES_INVOICES_VIEW")]
public Task<IActionResult> GetAll(GetInvoicesQuery query)

Parameters

query GetInvoicesQuery

Returns

Task<IActionResult>

GetById(Guid)

Obtener factura por ID

[HttpGet("{id:guid}")]
[Authorize(Policy = "SALES_INVOICES_VIEW")]
public Task<IActionResult> GetById(Guid id)

Parameters

id Guid

Returns

Task<IActionResult>

GetPdf(Guid)

Exportar factura a PDF

[HttpGet("{id:guid}/pdf")]
[Authorize(Policy = "SALES_INVOICES_VIEW")]
public Task<IActionResult> GetPdf(Guid id)

Parameters

id Guid

Returns

Task<IActionResult>

Issue(Guid, IssueInvoiceCommand)

Emitir factura (generar NCF y afectar inventario)

[HttpPost("{id:guid}/issue")]
[Authorize(Policy = "SALES_INVOICES_ISSUE")]
public Task<IActionResult> Issue(Guid id, IssueInvoiceCommand command)

Parameters

id Guid
command IssueInvoiceCommand

Returns

Task<IActionResult>

RegisterPayment(Guid, RegisterPaymentCommand)

Registrar pago

[HttpPost("{id:guid}/payments")]
[Authorize(Policy = "SALES_INVOICES_REGISTER_PAYMENT")]
public Task<IActionResult> RegisterPayment(Guid id, RegisterPaymentCommand command)

Parameters

id Guid
command RegisterPaymentCommand

Returns

Task<IActionResult>

SendPdfEmail(Guid)

Enviar PDF de factura por Email

[HttpPost("{id:guid}/send-pdf-email")]
[Authorize(Policy = "SALES_INVOICES_SEND_PDF")]
public Task<IActionResult> SendPdfEmail(Guid id)

Parameters

id Guid

Returns

Task<IActionResult>

SendPdfWhatsApp(Guid)

Enviar PDF de factura por WhatsApp

[HttpPost("{id:guid}/send-pdf-whatsapp")]
[Authorize(Policy = "SALES_INVOICES_SEND_PDF")]
public Task<IActionResult> SendPdfWhatsApp(Guid id)

Parameters

id Guid

Returns

Task<IActionResult>

Void(Guid, VoidInvoiceCommand)

Anular factura

[HttpPost("{id:guid}/void")]
[Authorize(Policy = "SALES_INVOICES_VOID")]
public Task<IActionResult> Void(Guid id, VoidInvoiceCommand command)

Parameters

id Guid
command VoidInvoiceCommand

Returns

Task<IActionResult>