Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion src/cl_sii/rcv/data_models.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@

import logging
from datetime import date, datetime
from decimal import Decimal
from typing import ClassVar, Optional

import pydantic
Expand Down Expand Up @@ -546,7 +547,7 @@ class RcDetalleEntry(RcvDetalleEntry):
Valor Otro Impuesto
"""

tasa_otro_impuesto: Optional[float]
tasa_otro_impuesto: Optional[Decimal]
"""
Tasa Otro Impuesto
"""
Expand Down
9 changes: 5 additions & 4 deletions src/cl_sii/rcv/parse_csv.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import csv
import logging
from datetime import date, datetime
from decimal import Decimal
from typing import Any, Callable, Dict, Iterable, Optional, Sequence, Tuple, TypedDict, TypeVar

import marshmallow
Expand Down Expand Up @@ -1106,7 +1107,7 @@ def to_detalle_entry(self, data: dict) -> RcRegistroDetalleEntry:
)
codigo_otro_impuesto: Optional[str] = data.get('codigo_otro_impuesto')
valor_otro_impuesto: Optional[int] = data.get('valor_otro_impuesto')
tasa_otro_impuesto: Optional[float] = data.get('tasa_otro_impuesto')
tasa_otro_impuesto: Optional[Decimal] = data.get('tasa_otro_impuesto')
fecha_acuse_dt: Optional[datetime] = data.get('fecha_acuse_dt')
tabacos_puros: Optional[int] = data.get('tabacos_puros')
tabacos_cigarrillos: Optional[int] = data.get('tabacos_cigarrillos')
Expand Down Expand Up @@ -1226,7 +1227,7 @@ def to_detalle_entry(self, data: dict) -> RcNoIncluirDetalleEntry:
)
codigo_otro_impuesto: Optional[str] = data.get('codigo_otro_impuesto')
valor_otro_impuesto: Optional[int] = data.get('valor_otro_impuesto')
tasa_otro_impuesto: Optional[float] = data.get('tasa_otro_impuesto')
tasa_otro_impuesto: Optional[Decimal] = data.get('tasa_otro_impuesto')
fecha_acuse_dt: Optional[datetime] = data.get('fecha_acuse_dt')
except KeyError as exc:
raise ValueError("Programming error: a referenced field is missing.") from exc
Expand Down Expand Up @@ -1347,7 +1348,7 @@ def to_detalle_entry(self, data: dict) -> RcReclamadoDetalleEntry:
)
codigo_otro_impuesto: Optional[str] = data.get('codigo_otro_impuesto')
valor_otro_impuesto: Optional[int] = data.get('valor_otro_impuesto')
tasa_otro_impuesto: Optional[float] = data.get('tasa_otro_impuesto')
tasa_otro_impuesto: Optional[Decimal] = data.get('tasa_otro_impuesto')
fecha_reclamo_dt: Optional[datetime] = data.get('fecha_reclamo_dt')
except KeyError as exc:
raise ValueError("Programming error: a referenced field is missing.") from exc
Expand Down Expand Up @@ -1432,7 +1433,7 @@ def to_detalle_entry(self, data: dict) -> RcPendienteDetalleEntry:
)
codigo_otro_impuesto: Optional[str] = data.get('codigo_otro_impuesto')
valor_otro_impuesto: Optional[int] = data.get('valor_otro_impuesto')
tasa_otro_impuesto: Optional[float] = data.get('tasa_otro_impuesto')
tasa_otro_impuesto: Optional[Decimal] = data.get('tasa_otro_impuesto')
except KeyError as exc:
raise ValueError("Programming error: a referenced field is missing.") from exc

Expand Down
2 changes: 1 addition & 1 deletion src/tests/test_data/sii-rcv/RCV-compra-reclamado.csv
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Nro;Tipo Doc;Tipo Compra;RUT Proveedor;Razon Social;Folio;Fecha Docto;Fecha Recepcion;Fecha Reclamo;Monto Exento;Monto Neto;Monto IVA Recuperable;Monto Iva No Recuperable;Codigo IVA No Rec.;Monto Total;Monto Neto Activo Fijo;IVA Activo Fijo;IVA uso Comun;Impto. Sin Derecho a Credito;IVA No Retenido;NCE o NDE sobre Fact. de Compra;Codigo Otro Impuesto;Valor Otro Impuesto;Tasa Otro Impuesto
1;33;Del Giro;12345678-5;Fake Company S.A. ;1000055;05/06/2019;05/06/2019 21:58:49;12/06/2019 09:47:23;0;970894;184470;;;1155364;;;;;0;0;;;;
1;33;Del Giro;12345678-5;Fake Company S.A. ;1000055;05/06/2019;05/06/2019 21:58:49;12/06/2019 09:47:23;0;970894;184470;;;1155364;;;;;0;0;;;2.967999999;
2;61;Del Giro;12345678-5; Fake Company S.A.;70013;24/06/2019;24/06/2019 15:24:41;null;0;1652840;314040;;;1966880;;;;;0;0;;;;
3;33;Del Giro;76354771-K;Fake Company S.A. ;789456;05/06/2019;05/06/2019 21:58:49;;0;970894;184470;;;1155364;;;;;0;0;;;;
4;33;Del Giro;INVALID-RUT;Fake Company S.A.;notanumber;invalid-date;invalid-datetime;invalid-datetime;notanumber;notanumber;notanumber;notanumber;notanumber;notanumber;notanumber;notanumber;notanumber;notanumber;notanumber;notanumber;notanumber;notanumber;notanumber;notanumber
Expand Down
5 changes: 3 additions & 2 deletions src/tests/test_rcv_parse_csv.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import datetime
import unittest
from collections.abc import Iterable, Iterator
from decimal import Decimal
from typing import Callable
from unittest import mock

Expand Down Expand Up @@ -671,7 +672,7 @@ def test_parse_rcv_compra_reclamado_csv_file(self) -> None:
nce_o_nde_sobre_factura_de_compra='0',
codigo_otro_impuesto=None,
valor_otro_impuesto=None,
tasa_otro_impuesto=None,
tasa_otro_impuesto=Decimal('2.967999999'),
fecha_reclamo_dt=convert_naive_dt_to_tz_aware(
dt=datetime.datetime(2019, 6, 12, 9, 47, 23),
tz=SII_OFFICIAL_TZ,
Expand Down Expand Up @@ -701,7 +702,7 @@ def test_parse_rcv_compra_reclamado_csv_file(self) -> None:
'NCE o NDE sobre Fact. de Compra': '0',
'Codigo Otro Impuesto': None,
'Valor Otro Impuesto': None,
'Tasa Otro Impuesto': None,
'Tasa Otro Impuesto': '2.967999999',
'receptor_rut': Rut('1-9'),
},
{},
Expand Down
Loading