Skip to content

Commit

Permalink
Merge pull request #81 from fyndata/develop
Browse files Browse the repository at this point in the history
Release v0.8.0
  • Loading branch information
glarrain committed Sep 4, 2019
2 parents 7e1c4b5 + 3830b36 commit c046bf6
Show file tree
Hide file tree
Showing 13 changed files with 867 additions and 21 deletions.
2 changes: 1 addition & 1 deletion .bumpversion.cfg
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[bumpversion]
current_version = 0.7.4
current_version = 0.8.0
commit = True
tag = True

Expand Down
6 changes: 6 additions & 0 deletions HISTORY.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,12 @@
History
-------

0.8.0 (2019-09-03)
+++++++++++++++++++++++

* (PR #80, 2019-09-03) dte: Allow negative "monto total" when DTE type is "liquidación-factura
electrónica"

0.7.4 (2019-08-08)
+++++++++++++++++++++++

Expand Down
2 changes: 1 addition & 1 deletion cl_sii/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@
"""


__version__ = '0.7.4'
__version__ = '0.8.0'
17 changes: 16 additions & 1 deletion cl_sii/dte/constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,10 +41,25 @@
# XML type 'MontoType' in official schema 'SiiTypes_v10.xsd'
# - source:
# https://github.com/fyndata/lib-cl-sii-python/blob/f57a326/cl_sii/data/ref/factura_electronica/schemas-xml/SiiTypes_v10.xsd#L563-L570
# Specification for field 'Monto Total'
# - warning: In certain cases, such as whether negative values are allowed, the SII's specification
# document may contradict the XML schema.
# - content:
# > Campo: Monto Total <MntTotal>
# > Descripción: [...]
# > Largo máximo: 18
# > Validación:
# > Valor Numérico de acuerdo a descripción.
# > En Liquidaciones-Factura, puede tomar valor negativo.
# > En Documentos de exportación es “0” (cero) si forma de pago es = 21 (sin pago).
# > [...]
# - source: SII Chile. 2019-07-10. Formato Documentos Tributarios Electrónicos v2.2.
# Contenido de Facturas y Documentos Asociados, Detalle por Zona, Encabezado, item nº 124.
# http://www.sii.cl/factura_electronica/factura_mercado/formato_dte.pdf

DTE_MONTO_TOTAL_FIELD_TYPE = int
"""DTE field 'Monto Total' type."""
DTE_MONTO_TOTAL_FIELD_MIN_VALUE = 0
DTE_MONTO_TOTAL_FIELD_MIN_VALUE = -10 ** 18
"""DTE field 'Monto Total' min value."""
DTE_MONTO_TOTAL_FIELD_MAX_VALUE = 10 ** 18
"""DTE field 'Monto Total' max value."""
Expand Down
7 changes: 5 additions & 2 deletions cl_sii/dte/data_models.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ def validate_dte_folio(value: int) -> None:
raise ValueError("Value is out of the valid range for 'folio'.")


def validate_dte_monto_total(value: int) -> None:
def validate_dte_monto_total(value: int, tipo_dte: TipoDteEnum) -> None:
"""
Validate value for DTE field ``monto_total``.
Expand All @@ -57,6 +57,9 @@ def validate_dte_monto_total(value: int) -> None:
or value > constants.DTE_MONTO_TOTAL_FIELD_MAX_VALUE): # type: ignore
raise ValueError("Value is out of the valid range for 'monto_total'.")

if value < 0 and tipo_dte != TipoDteEnum.LIQUIDACION_FACTURA_ELECTRONICA:
raise ValueError("Value is out of the valid range for 'monto_total'.")


def validate_contribuyente_razon_social(value: str) -> None:
"""
Expand Down Expand Up @@ -264,7 +267,7 @@ def __post_init__(self) -> None:
if not isinstance(self.monto_total, int):
raise TypeError("Inappropriate type of 'monto_total'.")

validate_dte_monto_total(self.monto_total)
validate_dte_monto_total(self.monto_total, self.tipo_dte)

###########################################################################
# properties
Expand Down
Binary file not shown.
31 changes: 31 additions & 0 deletions tests/test_data/sii-crypto/DTE--60910000-1--33--2336600-cert.pem
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
-----BEGIN CERTIFICATE-----
MIIGRDCCBSygAwIBAgIIWkXZU0hXELYwDQYJKoZIhvcNAQELBQAwga8xCzAJBgNVBAYTAkNMMRQw
EgYDVQQKDAtFLVNpZ24gUy5BLjE5MDcGA1UECwwwVGVybXMgb2YgdXNlIGF0IHd3dy5lc2lnbi1s
YS5jb20vYWN1ZXJkb3RlcmNlcm9zMSswKQYDVQQDDCJFLVNpZ24gQ2xhc3MgMiBGaXJtYSBUcmli
dXRhcmlhIENBMSIwIAYJKoZIhvcNAQkBFhNlLXNpZ25AZXNpZ24tbGEuY29tMB4XDTE4MDkwNjIx
MTMwMFoXDTE5MDkwNjIxMTMwMFowgaQxCzAJBgNVBAYTAkNMMRQwEgYDVQQKDAtFLVNpZ24gUy5B
LjE5MDcGA1UECwwwVGVybXMgb2YgdXNlIGF0IHd3dy5lc2lnbi1sYS5jb20vYWN1ZXJkb3RlcmNl
cm9zMSQwIgYDVQQDDBtKb3JnZSBFbnJpcXVlIENhYmVsbG8gT3J0aXoxHjAcBgkqhkiG9w0BCQEW
D2pjYWJlbGxvQG5pYy5jbDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKmcXnSacIfT
t/388/jyvIzdQXaCzHnC8RZg/llCBLPPIJCfMXwD4oc00dJQasWvQU36h9ApTS4N2Mn7j/PBGnre
x0VvyjTlqPfA6c4LuLloCuEUyNrmY7rHOyhwE06YXM68lFUpD/42oNdhluLs30dHLA/j18lGaYYX
a5LPlN8nAMVkQqXgnXccmzb3x0DspB5xuXlumw1cAnhCP5v0uiPW/Gds4iRaxYW6h0uSAUsECpl2
7/7fYDGEN8vM+Zj7Ddis3ZlRr38SA03JjasduV+cHHSKCOL9Nf5pPS05pjysLYqc/daHGKBUkdHP
4zFCQKRHtuhsSqoV8cfwKkgZcJsCAwEAAaOCAmswggJnMIGABggrBgEFBQcBAQR0MHIwSgYIKwYB
BQUHMAKGPmh0dHA6Ly9wa2kuZXNpZ24tbGEuY29tL2NhY2VydHMvcGtpQ2xhc3MyRmlybWFUcmli
dXRhcmlhQ0EuY3J0MCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5lc2lnbi1sYS5jb20wHQYDVR0O
BBYEFOn+RHqRCvBA8p2GtOJM9vodB1vHMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAU+Ur6wsdu
wucSnFdFNYQabSjpSqQwgcgGA1UdIASBwDCBvTCBugYMKwYBBAGCymoBBAECMIGpMH4GCCsGAQUF
BwICMHIecABDAGUAcgB0AGkAZgBpAGMAYQBkAG8AIABwAGEAcgBhACAAdQBzAG8AIABUAHIAaQBi
AHUAdABhAHIAaQBvACwAIABDAG8AbQBlAHIAYwBpAG8ALAAgAFAAYQBnAG8AcwAgAHkAIABPAHQA
cgBvAHMwJwYIKwYBBQUHAgEWG2h0dHA6Ly93d3cuZXNpZ24tbGEuY29tL2NwczBRBgNVHR8ESjBI
MEagRKBChkBodHRwOi8vcGtpLmVzaWduLWxhLmNvbS9jcmwvcGtpQ2xhc3MyRmlybWFUcmlidXRh
cmlhL2VuZHVzZXIuY3JsMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYB
BQUHAwQwIgYDVR0RBBswGaAXBggrBgEEAcEBAaALFgk4NDgwNDM3LTEwIwYDVR0SBBwwGqAYBggr
BgEEAcEBAqAMFgo5OTU1MTc0MC1LMA0GCSqGSIb3DQEBCwUAA4IBAQCHTKFxdzPqCMQTGSBeLQwX
8qUOB4ZXhwspFSLngua5wSpGL5/ByjeJQoeBMrzN9mduhcgV3sdrK+r61dyWmeGOFxA2/Rsv1D3V
/sLUyLukGxBjn2zydQAdWHlqFB1db0WGjrUFbECbOkaeXnhDEk9RTVWT0SwZpVUKDuq2utyxWGs+
eCEjjXTJcIgv9C5Sr711JJT0ybyTRocC3dTLc0SCHPpAbIU8jbwZsJIwlitBXED5T6XMA/D6PA/Y
bVRedg3GR8eIunz1G129oMVI3yeiN8jKobnJVl7RTto17o1ar7MuuYLCGwOYJJZZ8ivrzLNuZwjU
fU939flUCn3fX1PY
-----END CERTIFICATE-----
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
JnuSNM2A6cKJcE45HmP5iyYs7MgIpluKam+t7YRfVVMrtTeJmTfFftcj8jVDqKEGtNAqFQvjaVubmxqc/GxiEIZv27WRfBwD71bL9F2Cgjxw6+utDgY51be6vHkMPP3MCUX/uB+Z1Zn9jM4U/RGznE817aY4a2PUFqd6b1UuE0HKo/RwQAcGsxZXGolZ3nUF443QiL6riR+e8MaSSJLJbGcykJlHh44MNCYRYoYbwuAp6mAg5h82z8Eazi8F+C0SZvQKITCgd1do+GZgNGUJB1QaK/I5rE7WDfhr5oOwqk1FeQMIL/QZqHOReIyoHr7WVXIpNQaO/HKlV46dSuWzZA==
147 changes: 147 additions & 0 deletions tests/test_data/sii-dte/DTE--60910000-1--33--2336600--cleaned.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,147 @@
<?xml version='1.0' encoding='WINDOWS-1252'?>
<DTE xmlns="http://www.sii.cl/SiiDte" version="1.0">
<Documento ID="DTE-33-2336600">
<Encabezado>
<IdDoc>
<TipoDTE>33</TipoDTE>
<Folio>2336600</Folio>
<FchEmis>2019-08-08</FchEmis>
<IndServicio>2</IndServicio>
<FmaPago>1</FmaPago>
<FchCancel>2019-08-08</FchCancel>
<MedioPago>OT</MedioPago>
<FchVenc>2019-08-08</FchVenc>
</IdDoc>
<Emisor>
<RUTEmisor>60910000-1</RUTEmisor>
<RznSoc>Universidad de Chile</RznSoc>
<GiroEmis>Corporación Educacional y Servicios Profesionales</GiroEmis>
<Acteco>803010</Acteco>
<Sucursal>NIC Chile</Sucursal>
<CdgSIISucur>67051191</CdgSIISucur>
<DirOrigen>Miraflores 222, Piso 14</DirOrigen>
<CmnaOrigen>Santiago</CmnaOrigen>
<CiudadOrigen>Santiago</CiudadOrigen>
</Emisor>
<Receptor>
<RUTRecep>76555835-2</RUTRecep>
<RznSocRecep>FYNPAL SPA</RznSocRecep>
<GiroRecep>PROCESAMIENTO DE DATOS Y ACTIVIDADES REL</GiroRecep>
<Contacto>Germán Enrique Larraín Muñoz</Contacto>
<DirRecep>El Bosque Norte 0177 Tel:+56.226051886</DirRecep>
<CmnaRecep>Las Condes</CmnaRecep>
<CiudadRecep>Santiago</CiudadRecep>
</Receptor>
<Totales>
<MntNeto>8943</MntNeto>
<TasaIVA>19</TasaIVA>
<IVA>1699</IVA>
<MntTotal>10642</MntTotal>
</Totales>
</Encabezado>
<Detalle>
<NroLinDet>1</NroLinDet>
<NmbItem>dominio fyndata/6895189/1</NmbItem>
<QtyItem>1.0</QtyItem>
<PrcItem>8942.86</PrcItem>
<MontoItem>8943</MontoItem>
</Detalle>
<TED version="1.0">
<DD>
<RE>60910000-1</RE>
<TD>33</TD>
<F>2336600</F>
<FE>2019-08-08</FE>
<RR>76555835-2</RR>
<RSR>FYNPAL SPA</RSR>
<MNT>10642</MNT>
<IT1>dominio fyndata/6895189/1</IT1>
<CAF version="1.0">
<DA>
<RE>60910000-1</RE>
<RS>UNIVERSIDAD DE CHILE</RS>
<TD>33</TD>
<RNG>
<D>2332141</D>
<H>2342140</H>
</RNG>
<FA>2019-07-26</FA>
<RSAPK>
<M>x72ZshWkkg+YP+uhApMtGPaFPr7DKS3aK7LXTKvVBpCwWJmuvaQvTBnvxnBJVSnU0IVZUYPayO3NTLrLOFwxWw==</M>
<E>Aw==</E>
</RSAPK>
<IDK>300</IDK>
</DA>
<FRMA algoritmo="SHA1withRSA">RJh0IgoGPl5SJrrRz/pZPt4i/3EweSAsnUFKo56OP0vwplcqNaaHmUT4IA21kJ7UJkt1KYKiDXco6P61sjLmFg==</FRMA>
</CAF>
<TSTED>2019-08-09T09:41:09</TSTED>
</DD>
<FRMT algoritmo="SHA1withRSA">NQe6wuZp1zwAjliDNobKgn7Pid6HlhTlEuP2n3xYDBgUZYe8NbJsOP337C3cptUPHylCBO7/8SmaBjJnPYgyyA==</FRMT>
</TED>
<TmstFirma>2019-08-09T09:41:09</TmstFirma>
</Documento>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<Reference URI="#DTE-33-2336600">
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<DigestValue>FYAfBvdM9IXwWnv9VIG/rVEBSGQ=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>
JnuSNM2A6cKJcE45HmP5iyYs7MgIpluKam+t7YRfVVMrtTeJmTfFftcj8jVDqKEGtNAqFQvjaVub
mxqc/GxiEIZv27WRfBwD71bL9F2Cgjxw6+utDgY51be6vHkMPP3MCUX/uB+Z1Zn9jM4U/RGznE81
7aY4a2PUFqd6b1UuE0HKo/RwQAcGsxZXGolZ3nUF443QiL6riR+e8MaSSJLJbGcykJlHh44MNCYR
YoYbwuAp6mAg5h82z8Eazi8F+C0SZvQKITCgd1do+GZgNGUJB1QaK/I5rE7WDfhr5oOwqk1FeQMI
L/QZqHOReIyoHr7WVXIpNQaO/HKlV46dSuWzZA==
</SignatureValue>
<KeyInfo>
<KeyValue>
<RSAKeyValue>
<Modulus>
qZxedJpwh9O3/fzz+PK8jN1BdoLMecLxFmD+WUIEs88gkJ8xfAPihzTR0lBqxa9BTfqH0ClNLg3Y
yfuP88Eaet7HRW/KNOWo98Dpzgu4uWgK4RTI2uZjusc7KHATTphczryUVSkP/jag12GW4uzfR0cs
D+PXyUZphhdrks+U3ycAxWRCpeCddxybNvfHQOykHnG5eW6bDVwCeEI/m/S6I9b8Z2ziJFrFhbqH
S5IBSwQKmXbv/t9gMYQ3y8z5mPsN2KzdmVGvfxIDTcmNqx25X5wcdIoI4v01/mk9LTmmPKwtipz9
1ocYoFSR0c/jMUJApEe26GxKqhXxx/AqSBlwmw==
</Modulus>
<Exponent>AQAB</Exponent>
</RSAKeyValue>
</KeyValue>
<X509Data>
<X509Certificate>
MIIGRDCCBSygAwIBAgIIWkXZU0hXELYwDQYJKoZIhvcNAQELBQAwga8xCzAJBgNVBAYTAkNMMRQw
EgYDVQQKDAtFLVNpZ24gUy5BLjE5MDcGA1UECwwwVGVybXMgb2YgdXNlIGF0IHd3dy5lc2lnbi1s
YS5jb20vYWN1ZXJkb3RlcmNlcm9zMSswKQYDVQQDDCJFLVNpZ24gQ2xhc3MgMiBGaXJtYSBUcmli
dXRhcmlhIENBMSIwIAYJKoZIhvcNAQkBFhNlLXNpZ25AZXNpZ24tbGEuY29tMB4XDTE4MDkwNjIx
MTMwMFoXDTE5MDkwNjIxMTMwMFowgaQxCzAJBgNVBAYTAkNMMRQwEgYDVQQKDAtFLVNpZ24gUy5B
LjE5MDcGA1UECwwwVGVybXMgb2YgdXNlIGF0IHd3dy5lc2lnbi1sYS5jb20vYWN1ZXJkb3RlcmNl
cm9zMSQwIgYDVQQDDBtKb3JnZSBFbnJpcXVlIENhYmVsbG8gT3J0aXoxHjAcBgkqhkiG9w0BCQEW
D2pjYWJlbGxvQG5pYy5jbDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKmcXnSacIfT
t/388/jyvIzdQXaCzHnC8RZg/llCBLPPIJCfMXwD4oc00dJQasWvQU36h9ApTS4N2Mn7j/PBGnre
x0VvyjTlqPfA6c4LuLloCuEUyNrmY7rHOyhwE06YXM68lFUpD/42oNdhluLs30dHLA/j18lGaYYX
a5LPlN8nAMVkQqXgnXccmzb3x0DspB5xuXlumw1cAnhCP5v0uiPW/Gds4iRaxYW6h0uSAUsECpl2
7/7fYDGEN8vM+Zj7Ddis3ZlRr38SA03JjasduV+cHHSKCOL9Nf5pPS05pjysLYqc/daHGKBUkdHP
4zFCQKRHtuhsSqoV8cfwKkgZcJsCAwEAAaOCAmswggJnMIGABggrBgEFBQcBAQR0MHIwSgYIKwYB
BQUHMAKGPmh0dHA6Ly9wa2kuZXNpZ24tbGEuY29tL2NhY2VydHMvcGtpQ2xhc3MyRmlybWFUcmli
dXRhcmlhQ0EuY3J0MCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5lc2lnbi1sYS5jb20wHQYDVR0O
BBYEFOn+RHqRCvBA8p2GtOJM9vodB1vHMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAU+Ur6wsdu
wucSnFdFNYQabSjpSqQwgcgGA1UdIASBwDCBvTCBugYMKwYBBAGCymoBBAECMIGpMH4GCCsGAQUF
BwICMHIecABDAGUAcgB0AGkAZgBpAGMAYQBkAG8AIABwAGEAcgBhACAAdQBzAG8AIABUAHIAaQBi
AHUAdABhAHIAaQBvACwAIABDAG8AbQBlAHIAYwBpAG8ALAAgAFAAYQBnAG8AcwAgAHkAIABPAHQA
cgBvAHMwJwYIKwYBBQUHAgEWG2h0dHA6Ly93d3cuZXNpZ24tbGEuY29tL2NwczBRBgNVHR8ESjBI
MEagRKBChkBodHRwOi8vcGtpLmVzaWduLWxhLmNvbS9jcmwvcGtpQ2xhc3MyRmlybWFUcmlidXRh
cmlhL2VuZHVzZXIuY3JsMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYB
BQUHAwQwIgYDVR0RBBswGaAXBggrBgEEAcEBAaALFgk4NDgwNDM3LTEwIwYDVR0SBBwwGqAYBggr
BgEEAcEBAqAMFgo5OTU1MTc0MC1LMA0GCSqGSIb3DQEBCwUAA4IBAQCHTKFxdzPqCMQTGSBeLQwX
8qUOB4ZXhwspFSLngua5wSpGL5/ByjeJQoeBMrzN9mduhcgV3sdrK+r61dyWmeGOFxA2/Rsv1D3V
/sLUyLukGxBjn2zydQAdWHlqFB1db0WGjrUFbECbOkaeXnhDEk9RTVWT0SwZpVUKDuq2utyxWGs+
eCEjjXTJcIgv9C5Sr711JJT0ybyTRocC3dTLc0SCHPpAbIU8jbwZsJIwlitBXED5T6XMA/D6PA/Y
bVRedg3GR8eIunz1G129oMVI3yeiN8jKobnJVl7RTto17o1ar7MuuYLCGwOYJJZZ8ivrzLNuZwjU
fU939flUCn3fX1PY
</X509Certificate>
</X509Data>
</KeyInfo>
</Signature>
</DTE>

0 comments on commit c046bf6

Please sign in to comment.