Class InvoicesController
- Namespace
- KadicErp.WebApi.Controllers.Sales
- Assembly
- KadicErp.WebApi.dll
[ApiController]
[Authorize]
[Route("api/sales/invoices")]
public class InvoicesController : ControllerBase
- Inheritance
-
objectControllerBaseInvoicesController
Constructors
InvoicesController(IMediator, IStringLocalizer<GeneralMessages>)
public InvoicesController(IMediator mediator, IStringLocalizer<GeneralMessages> localizer)
Parameters
mediatorIMediatorlocalizerIStringLocalizer<GeneralMessages>
Methods
Create(CreateInvoiceCommand)
Crear nueva factura en estado DRAFT
[HttpPost]
[Authorize(Policy = "SALES_INVOICES_CREATE")]
public Task<IActionResult> Create(CreateInvoiceCommand command)
Parameters
commandCreateInvoiceCommand
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
commandCreateAndIssueInvoiceCommand
Returns
- Task<IActionResult>
GetAll(GetInvoicesQuery)
Listar facturas con paginación
[HttpGet]
[Authorize(Policy = "SALES_INVOICES_VIEW")]
public Task<IActionResult> GetAll(GetInvoicesQuery query)
Parameters
queryGetInvoicesQuery
Returns
- Task<IActionResult>
GetById(Guid)
Obtener factura por ID
[HttpGet("{id:guid}")]
[Authorize(Policy = "SALES_INVOICES_VIEW")]
public Task<IActionResult> GetById(Guid id)
Parameters
idGuid
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
idGuid
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
idGuidcommandIssueInvoiceCommand
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
idGuidcommandRegisterPaymentCommand
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
idGuid
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
idGuid
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
idGuidcommandVoidInvoiceCommand
Returns
- Task<IActionResult>