siti-python
Cliente para enviar reportes a la CNBV por medio de la plataforma SITI Documentación: https://sitiapiqa.cnbv.gob.mx/devportal/apis/
La manera sugerida para llenar reportes es por medio de diccionarios con el formato del modelo:
Desde diccionarios
from siti.resources.ifpe import Reporte111
dict_111 = {
'identificador_reporte': {
'inicio_periodo': dt.date(2019, 1, 1),
'fin_periodo': dt.date(2019, 1, 31),
'clave_institucion': '065000',
'reporte': '111',
},
'informacion_financiera': [
{
'concepto': '100000000000',
'moneda': '2',
'dato': 334422.0434,
},
]
}
r111 = Reporte111(**dict_111)
In [1]: r111
Out[1]:
Reporte111(
folio=None,
identificador_reporte=IdentificadorReporte(
inicio_periodo=datetime.date(2019, 1, 1),
fin_periodo=datetime.date(2019, 1, 31),
clave_institucion='065000',
reporte='111'
),
informacion_financiera=[
InformacionFinanciera(
concepto='100000000000',
moneda='2',
dato=334422.0434
)
]
)
Donde r111 será el reporte construido con el modelo, y se realizarán las validaciones propias de ese reporte.
Desde dataframe
De igual manera se puede construir el objto con la utilización de un dataframe de Pandas con un formato que siga las columnas del modelo que se quiere construir.
Para obtener las columnas del modelo se puede mandar a llamar el método .columns()
In [13]: Reporte111.columns()
Out[13]:
{
'inicio_periodo': str,
'fin_periodo': str,
'clave_institucion': str,
'reporte': str,
'concepto': str,
'moneda': str,
'dato': float
}
Se puede construir un dataframe con esta información y posteriormente mandar a llamar el método .from_dataframe(name, df), dónde name es el nombre del archivo que tiene que cumplir con el formato CLAVEINSTITUCION_REPORTE_FECHAINICIO_FECHAFINAL ejemplo: 065014_2610_20210831_20210831 para obtener los datos del campo identificador_reporte.
import pandas as pd
name = '065014_2610_20210831_20210831.csv'
columns = Reporte111.columns()
df = pd.read_csv(name, dtype=columns)
r111 = Reporte111.from_dataframe(name, df)
In [1]: r111
Out[1]:
Reporte111(
folio=None,
identificador_reporte=IdentificadorReporte(
inicio_periodo=datetime.date(2019, 1, 1),
fin_periodo=datetime.date(2019, 1, 31),
clave_institucion='065000',
reporte='111'
),
informacion_financiera=[
InformacionFinanciera(
concepto='100000000000',
moneda='2',
dato=334422.0434
)
]
)
Enviar
Al mandar a llamar cualquiera de los métodos de enviar (send, resend, update), el cliente automáticamente convertirá el objeto al formato solicitado por la CNBV. Este formato se puede obtener llamando el método .dict(to_camel_case=True).
Estos métodos regresarán un folio, el cual es importante almacenar para poder realizar el seguimiento del envío
In [1]: r111.dict(to_camel_case=True)
Out[1]:
{
'identificadorReporte': {
'inicioPeriodo': '20190101',
'finPeriodo': '20190131',
'claveInstitucion': '065000',
'reporte': '111'
},
'informacionFinanciera': [
{
'concepto': '100000000000',
'moneda': '2',
'dato': 334422.0434
}
]
}
Metadata
Release files for aiositi-mex 0.0.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| aiositi-mex-0.0.4.tar.gz | 18.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| aiositi_mex-0.0.4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 51.3 kB
Release files / aiositi-mex-0.0.4.tar.gz
| Download URL | aiositi-mex-0.0.4.tar.gz |
|---|---|
| Size | 18.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
040f95276e2771d25b8be855d023293bc17894f5d302721e0c20594591a92afd
|
|
BLAKE2b-256 checksum How to use checksums |
ae603e1d4a6ba7cd01d50b4d0a52f4451a3afd7995f0a3b2d990d7760af840e6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.9.16
|
Release files / aiositi_mex-0.0.4-py3-none-any.whl
| Download URL | aiositi_mex-0.0.4-py3-none-any.whl |
|---|---|
| Size | 32.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c35f3f7aaa4104d7ab55192a9fdea34f078719c53c7c680a1083401593e972b7
|
|
BLAKE2b-256 checksum How to use checksums |
e724657eec8b3b558495def57ce34a322cde77f93a568a02a27a9cf2b688a53b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.9.16
|