diff --git a/src/cl_sii/rcv/data_models.py b/src/cl_sii/rcv/data_models.py index 0934669b..0ff75240 100644 --- a/src/cl_sii/rcv/data_models.py +++ b/src/cl_sii/rcv/data_models.py @@ -302,27 +302,27 @@ class RvDetalleEntry(RcvDetalleEntry): Monto IVA """ - iva_retenido_total: int + iva_retenido_total: Optional[int] """ IVA Retenido Total """ - iva_retenido_parcial: int + iva_retenido_parcial: Optional[int] """ IVA Retenido Parcial """ - iva_no_retenido: int + iva_no_retenido: Optional[int] """ IVA no retenido """ - iva_propio: int + iva_propio: Optional[int] """ IVA propio """ - iva_terceros: int + iva_terceros: Optional[int] """ IVA Terceros """ diff --git a/src/cl_sii/rcv/parse_csv.py b/src/cl_sii/rcv/parse_csv.py index e44acad9..50aa77b6 100644 --- a/src/cl_sii/rcv/parse_csv.py +++ b/src/cl_sii/rcv/parse_csv.py @@ -539,23 +539,28 @@ class RcvVentaCsvRowSchema(_RcvCsvRowSchemaBase): data_key='Monto total', ) iva_retenido_total = marshmallow.fields.Integer( - required=True, + required=False, + allow_none=True, data_key='IVA Retenido Total', ) iva_retenido_parcial = marshmallow.fields.Integer( - required=True, + required=False, + allow_none=True, data_key='IVA Retenido Parcial', ) iva_no_retenido = marshmallow.fields.Integer( - required=True, + required=False, + allow_none=True, data_key='IVA no retenido', ) iva_propio = marshmallow.fields.Integer( - required=True, + required=False, + allow_none=True, data_key='IVA propio', ) iva_terceros = marshmallow.fields.Integer( - required=True, + required=False, + allow_none=True, data_key='IVA Terceros', ) liquidacion_factura_emisor_rut = mm_fields.RutField( diff --git a/src/tests/test_data/sii-rcv/RCV-venta-extra-empty-impuestos-rows.csv b/src/tests/test_data/sii-rcv/RCV-venta-extra-empty-impuestos-rows.csv index a20dace8..da2f478a 100644 --- a/src/tests/test_data/sii-rcv/RCV-venta-extra-empty-impuestos-rows.csv +++ b/src/tests/test_data/sii-rcv/RCV-venta-extra-empty-impuestos-rows.csv @@ -3,6 +3,6 @@ Nro;Tipo Doc;Tipo Venta;Rut cliente;Razon Social;Folio;Fecha Docto;Fecha Recepci ;33;Del Giro;54213736-3;CHILE SPA;6541;01/09/2025;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;271;701395;18;;;;;; 2;33;Del Giro;42509414-9;COMERCIAL SPA;9874;01/09/2025;01/09/2025 09:53:17;;;0;8879040;1687018;13136156;0;0;0;0;0;-;0;0;0;0;0;;;;0;;0;2;0;0;0;;;;12354;;24;2570098;31.5 3;33;Del Giro;68840666-8;TEXAS SPA;3210;01/09/2025;01/09/2025 10:58:51;08/09/2025 14:15:23;;0;20522880;3899347;30471437;0;0;0;0;0;-;0;0;0;0;0;;;;0;;0;2;0;0;0;;;;12354;;24;6049210;31.5; -4;34;Del Giro;68840666-8;TEXAS SPA;3210;01/09/2025;01/09/2025 10:58:51;08/09/2025 14:15:23;;0;9999;3899347;30471437;0;0;0;0;0;-;0;0;0;0;0;;;;0;;0;2;0;0;0;;;;12354;;24;6049210;31.5; +4;34;Del Giro;68840666-8;TEXAS SPA;3210;01/09/2025;01/09/2025 10:58:51;08/09/2025 14:15:23;;0;9999;3899347;30471437;2020;;0;0;0;-;0;0;0;0;0;;;;0;;0;2;0;0;0;;;;12354;;24;6049210;31.5; 5;33;Del Giro;54213736-3;THE COMPANY SPA;3210;01/09/2025;01/09/2025 10:58:51;08/09/2025 14:15:23;;0;9999;3899347;30471437;0;0;0;0;0;-;0;0;0;0;0;;;;0;;0;2;0;0;0;;;;12354;;24;6049210;31.5; ;33;Del Giro;54213736-3;THE COMPANY SPA;3210;01/09/2025;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;271;701395;18;;;;;; diff --git a/src/tests/test_rcv_parse_csv.py b/src/tests/test_rcv_parse_csv.py index a598560a..fb7102c0 100644 --- a/src/tests/test_rcv_parse_csv.py +++ b/src/tests/test_rcv_parse_csv.py @@ -968,8 +968,8 @@ def test_parse_rcv_venta_csv_file_empty_otros_impuestos_rows(self) -> None: monto_exento=0, monto_neto=9999, monto_iva=3899347, - iva_retenido_total=0, - iva_retenido_parcial=0, + iva_retenido_total=2020, + iva_retenido_parcial=None, iva_no_retenido=0, iva_propio=0, iva_terceros=0, @@ -1017,8 +1017,8 @@ def test_parse_rcv_venta_csv_file_empty_otros_impuestos_rows(self) -> None: 'Monto Neto': '9999', 'Monto IVA': '3899347', 'Monto total': '30471437', - 'IVA Retenido Total': '0', - 'IVA Retenido Parcial': '0', + 'IVA Retenido Total': '2020', + 'IVA Retenido Parcial': None, 'IVA no retenido': '0', 'IVA propio': '0', 'IVA Terceros': '0',