feat: emitir notas de crédito y débito electrónicas - #1
Merged
Conversation
El comando `emitir` ahora soporta NOTA_DE_CREDITO_ELECTRONICA y NOTA_DE_DEBITO_ELECTRONICA, tanto por archivo como en modo interactivo. - Validación local dependiente de tipoDocumento: la factura sigue requiriendo condicionOperacion; las NC/ND requieren motivoEmision (enum SIFEN TiMotEmi) y un documentoAsociado ELECTRONICO con CDC de 44 dígitos (espejo del DocumentoAsociadoValidator del backend). - El wizard interactivo pide motivo y CDC del documento asociado al elegir NC (2) o ND (3), y omite los campos exclusivos de factura. - Nuevos samples sample_nota_credito.json y sample_nota_debito.json. - Targets make nota-credito / nota-debito (vars FILE_NC / FILE_ND). - validate_factura_payload / build_factura_interactive quedan como alias de las nuevas validate_documento_payload / build_documento_interactive. - Tests de validación e interactivo para NC/ND.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Qué
Agrega soporte para emitir notas de crédito (
NOTA_DE_CREDITO_ELECTRONICA) y notas de débito (NOTA_DE_DEBITO_ELECTRONICA) desde el CLI, vía el mismo comandoemitir(por archivo y en modo interactivo).Por qué
El CLI ya listaba NC/ND en el menú interactivo y el endpoint polimórfico las soporta, pero el wizard siempre construía un payload con forma de factura y el validador exigía
condicionOperacion, así que las NC/ND nunca se podían emitir. El backend requiere, para NC/ND, dos campos que la factura no lleva —motivoEmisionydocumentoAsociado— y que no se envíecondicionOperacion/condicionPago.Cambios
Comportamiento
utils/validation.py: validación local segúntipoDocumento.condicionOperacion.motivoEmision(valor válido del enum SIFENTiMotEmi) y undocumentoAsociadoELECTRONICOcon CDC de 44 dígitos. Nuevo helpervalidate_documento_asociado, espejo delDocumentoAsociadoValidatordel backend.interactive.py: al elegir NC (2) o ND (3), el wizard pide el motivo y el CDC de la factura asociada, y omite los campos exclusivos de factura.commands/emitir.py: usa los nuevos nombres.validate_factura_payloadybuild_factura_interactivecomo alias devalidate_documento_payload/build_documento_interactive.DX / assets
sample_nota_credito.jsonysample_nota_debito.json.make nota-credito/make nota-debito(varsFILE_NC/FILE_ND).Tests
tests/test_nota_validation.py(10 casos) ytests/test_interactive.py(flujos scripteados de NC/ND/factura + alias). Suite completa: 38 passed.Nota para el revisor
Los samples usan un CDC placeholder en
documentoAsociado.cdc. Para emitir contra SIFEN hay que reemplazarlo por el CDC de una factura real ya aprobada — la validación local sólo verifica que sean 44 dígitos.