Skip to content

Commit

Permalink
Merge pull request #106 from reingart/ro
Browse files Browse the repository at this point in the history
RG5259 - RG5264/22 (Actividades)
  • Loading branch information
reingart authored Mar 18, 2023
2 parents 7a6d8e5 + 1fa7252 commit 5e69897
Show file tree
Hide file tree
Showing 2 changed files with 93 additions and 2 deletions.
57 changes: 57 additions & 0 deletions wsfev1.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ class WSFEv1(BaseWS):
"AgregarOpcional",
"AgregarComprador",
"AgregarPeriodoComprobantesAsociados",
"AgregarActividad",
"CompUltimoAutorizado",
"CompConsultar",
"CAEASolicitar",
Expand All @@ -80,6 +81,7 @@ class WSFEv1(BaseWS):
"ParamGetTiposPaises",
"ParamGetCotizacion",
"ParamGetPtosVenta",
"ParamGetActividades",
"AnalizarXml",
"ObtenerTagXml",
"LoadTestXML",
Expand Down Expand Up @@ -247,6 +249,7 @@ def CrearFactura(
"iva": [],
"opcionales": [],
"compradores": [],
"actividades": [],
}
if fecha_serv_desde:
fact["fecha_serv_desde"] = fecha_serv_desde
Expand Down Expand Up @@ -324,6 +327,12 @@ def AgregarComprador(self, doc_tipo=80, doc_nro=0, porcentaje=100.00, **kwarg):
self.factura["compradores"].append(comp)
return True

def AgregarActividad(self, actividad_id=0, **kwarg):
"Agrego actividad a una factura (interna)"
op = { 'actividad_id': actividad_id }
self.factura['actividades'].append(op)
return True

def ObtenerCampoFactura(self, *campos):
"Obtener el valor devuelto de AFIP para un campo de factura"
# cada campo puede ser una clave string (dict) o una posición (list)
Expand Down Expand Up @@ -444,6 +453,15 @@ def CAESolicitar(self):
for comprador in f["compradores"]
]
or None,
"Actividades": [
{
"Actividad": {
'Id': actividad['actividad_id'],
}
}
for actividad in f["actividades"]
]
or None,
}
}
],
Expand Down Expand Up @@ -609,6 +627,14 @@ def CompConsultar(self, tipo_cbte, punto_vta, cbte_nro, reproceso=False):
}
for comprador in f["compradores"]
],
"Actividades": [
{
"Actividad": {
"Id": actividad["actividad_id"],
}
}
for actividad in f["actividades"]
],
}
copia = resultget.copy()
# TODO: ordenar / convertir opcionales (por ahora no se verifican)
Expand Down Expand Up @@ -684,6 +710,12 @@ def CompConsultar(self, tipo_cbte, punto_vta, cbte_nro, reproceso=False):
}
for comp in resultget.get("Compradores", [])
],
"actividades": [
{
"actividad_id": act["Actividad"]["Id"],
}
for act in resultget.get("Actividades", [])
],
"cae": resultget.get("CodAutorizacion"),
"resultado": resultget.get("Resultado"),
"fch_venc_cae": resultget.get("FchVto"),
Expand Down Expand Up @@ -828,6 +860,15 @@ def CAESolicitarX(self):
for opcional in f["opcionales"]
]
or None,
"Actividades": [
{
"Actividad": {
"Id": actividad["actividad_id"],
}
}
for actividad in f["actividades"]
]
or None,
}
}
for f in self.facturas
Expand Down Expand Up @@ -1258,6 +1299,16 @@ def ParamGetPtosVenta(self, sep="|"):
for p in res.get("ResultGet", [])
]

@inicializar_y_capturar_excepciones
def ParamGetActividades(self, sep="|"):
"Recuperador de valores referenciales de códigos de Actividades"
ret = self.client.FEParamGetActividades(
Auth={'Token': self.Token, 'Sign': self.Sign, 'Cuit': self.Cuit},
)
res = ret['FEParamGetActividades']
return [(u"%(Id)s\t%(Orden)s\t%(Desc)s" % p['ActividadesTipo']).replace("\t", sep)
for p in res['ResultGet']]


def p_assert_eq(a, b):
print(a, a == b and "==" or "!=", b)
Expand Down Expand Up @@ -1449,6 +1500,9 @@ def main():
if "--rg4540" in sys.argv:
wsfev1.AgregarPeriodoComprobantesAsociados("20200101", "20200131")

if '--rg5259' in sys.argv:
wsfev1.AgregarActividad(960990)

# agregar la factura creada internamente para solicitud múltiple:
if "--multiple" in sys.argv:
wsfev1.AgregarFacturaX()
Expand Down Expand Up @@ -1575,6 +1629,9 @@ def main():
# print(u"\n".join(wsfev1.ParamGetTiposPaises()))
print("=== Puntos de Venta ===")
print(u"\n".join(wsfev1.ParamGetPtosVenta()))
if '--rg5259' in sys.argv:
print("=== Actividades ===")
print(u'\n'.join(wsfev1.ParamGetActividades()))

if "--cotizacion" in sys.argv:
print(wsfev1.ParamGetCotizacion("DOL"))
Expand Down
38 changes: 36 additions & 2 deletions wsmtx.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
__author__ = "Mariano Reingart <[email protected]>"
__copyright__ = "Copyright (C) 2010-2021 Mariano Reingart"
__license__ = "LGPL-3.0-or-later"
__version__ = "3.15d"
__version__ = "3.16a"

import datetime
import decimal
Expand All @@ -47,6 +47,7 @@ class WSMTXCA(BaseWS):
"EstablecerCampoItem",
"AgregarOpcional",
"AgregarPeriodoComprobantesAsociados",
"AgregarActividad",
"AutorizarComprobante",
"CAESolicitar",
"AutorizarAjusteIVA",
Expand All @@ -67,6 +68,7 @@ class WSMTXCA(BaseWS):
"ConsultarCondicionesIVA",
"ConsultarMonedas",
"ConsultarUnidadesMedida",
"ConsultarActividadesVigentes",
"ConsultarTiposTributo",
"ConsultarTiposDatosAdicionales",
"ConsultarCotizacionMoneda",
Expand Down Expand Up @@ -223,6 +225,7 @@ def CrearFactura(
"iva": [],
"detalles": [],
"opcionales": [],
"actividades": [],
}
if fecha_serv_desde:
fact["fecha_serv_desde"] = fecha_serv_desde
Expand Down Expand Up @@ -359,6 +362,13 @@ def AgregarOpcional(
self.factura["opcionales"].append(op)
return True

@inicializar_y_capturar_excepciones
def AgregarActividad(self, actividad_id=0, **kwarg):
"Agrego actividades a una factura (interna)"
act = { 'actividad_id': actividad_id}
self.factura['actividades'].append(act)
return True

@inicializar_y_capturar_excepciones
def AutorizarComprobante(self):
f = self.factura
Expand Down Expand Up @@ -468,6 +478,16 @@ def AutorizarComprobante(self):
for dato in f["opcionales"]
]
or None,
"arrayActividades": f["actividades"]
and [
{
"actividad": {
"codigo": act["actividad_id"],
}
}
for act in f["actividades"]
]
or None,
}

ret = self.client.autorizarComprobante(
Expand Down Expand Up @@ -1436,6 +1456,15 @@ def ConsultarPtosVtaCAEANoInformados(self, caea):
for p in ret["arrayPuntosVenta"]
]

@inicializar_y_capturar_excepciones
def ConsultarActividadesVigentes(self):
"Este método permite consultar las actividades vigentes para el contribuyente"
ret = self.client.consultarActividadesVigentes(
authRequest={'token': self.Token, 'sign': self.Sign, 'cuitRepresentada': self.Cuit},
)
return ["%(codigo)s: %(orden)s %(descripcion)s" % p['actividad']
for p in ret['arrayActividades']]


def main():
"Función principal de pruebas (obtener CAE)"
Expand Down Expand Up @@ -1469,7 +1498,7 @@ def main():
if "--prueba" in sys.argv:
##print wsmtxca.client.help("autorizarComprobante").encode("latin1")
try:
tipo_cbte = 201
tipo_cbte = 1
punto_vta = 4000
cbte_nro = wsmtxca.ConsultarUltimoComprobanteAutorizado(
tipo_cbte, punto_vta
Expand Down Expand Up @@ -1584,6 +1613,9 @@ def main():
if "--rg4540" in sys.argv:
wsmtxca.AgregarPeriodoComprobantesAsociados("2020-01-01", "2020-01-31")

if '--rg5259' in sys.argv:
wsmtxca.AgregarActividad(960990)

print(wsmtxca.factura)

if "--caea" in sys.argv:
Expand Down Expand Up @@ -1740,6 +1772,8 @@ def main():
print(wsmtxca.ConsultarUnidadesMedida())
print(wsmtxca.ConsultarTiposTributo())
print(wsmtxca.ConsultarTiposDatosAdicionales())
if '--rg5259' in sys.argv:
print(wsmtxca.ConsultarActividadesVigentes())

if "--puntosventa" in sys.argv:
print(wsmtxca.ConsultarPuntosVentaCAE())
Expand Down

0 comments on commit 5e69897

Please sign in to comment.