- Se han añadido `document_series_id`, `invoice_series_code` e `invoice_reference` a los modelos y instantáneas de facturas emitidas. - Se han introducido `proforma_series_code` y `proforma_number`, y se han actualizado las referencias en los modelos y instantáneas de las facturas proforma. - Se han actualizado los esquemas de la base de datos y los scripts SQL para dar cabida a los nuevos campos y garantizar la integridad de los datos. - Se ha elaborado la documentación correspondiente a las nuevas series de documentos «contrato de instantánea» y «contrato de serie de facturas emitidas». - Se han implementado scripts SQL de rellenado para completar los registros existentes con los nuevos campos.
1.8 KiB
1.8 KiB
Issued Invoice Series Contract
Objetivo
Definir el contrato backend para la numeracion documental de issued_invoices.
Snapshot persistido
Una factura emitida debe persistir estos cuatro datos de numeracion:
document_series_idinvoice_series_codeinvoice_numberinvoice_reference
Regla operativa
document-serieses la unica fuente de verdad para asignar numeracion dedocument_type = issued_invoice.customer-invoicesno recompone manualmente la referencia final sidocument-seriesya la devuelve.invoice_referencese calcula en el momento de emision.invoice_referencese persiste como snapshot documental inmutable.invoice_referenceno se recalcula despues aunque cambie la configuracion dedocument_series.
Emision desde proforma
- si
target_invoice_series_codetiene valor, se usa comoseriesCodedeissued_invoice - si
target_invoice_series_codeesNULL,document-seriesresuelve la serie default activa - la respuesta de
assignNextNumber(...)debe aportarseries_id,series_code,numberyreference issued_invoicesdebe persistirdocument_series_id,invoice_series_code,invoice_numbereinvoice_reference
Semantica de campos
document_series_id: id tecnico de la serie exacta usada al emitir para trazabilidad y backofficeinvoice_number: numero secuencial dentro de la serieinvoice_reference: referencia final visible/legal compuesta por la serie documentalreference: referencia comercial libre del documento, si aplica; no sustituye ainvoice_reference
Regla de no contaminacion
proforma_referencenunca se reutiliza comoinvoice_referencetarget_invoice_series_codesolo selecciona la serie futura y no es en si mismo la referencia final- no se usa
MAX(invoice_number)para recomponer numeracion