Exemplo n.º 1
0
 def Consultar(self, id_persona):
     "Devuelve el detalle de todos los datos del contribuyente solicitado"
     # llamar al webservice:
     res = self.client.getPersona(
         sign=self.Sign,
         token=self.Token,
         cuitRepresentada=self.Cuit,
         idPersona=id_persona,
         )
     ret = res.get('personaReturn', {})
     # obtengo el resultado de AFIP (dict):
     data = ret.get('datosGenerales', {})
     if isinstance(data, list):
         data = data[0]
     self.data = data
     # lo serializo
     self.Persona = json.dumps(ret,
                               default=json_serializer)
     for er in 'errorConstancia', 'errorMonotributo', 'errorRegimenGeneral':
         if er in ret:
             self.errores.extend(ret[er])
     self.Excepcion = '\n\r'.join([er["error"] for er in self.errores])
     # extraigo los campos principales:
     self.tipo_persona = data.get("tipoPersona")
     self.tipo_doc = TIPO_CLAVE.get(data.get("tipoClave"))
     self.nro_doc = data.get("idPersona")
     self.cuit = self.nro_doc
     self.estado = data.get("estadoClave")
     if not "razonSocial" in data:
         self.denominacion = ", ".join([data.get("apellido", ""),
                                       data.get("nombre", "")])
     else:
         self.denominacion = data.get("razonSocial", "")
     # analizo el domicilio, dando prioridad al FISCAL, luego LEGAL/REAL
     domicilio = data.get("domicilioFiscal", [])
     if domicilio:
         self.direccion = domicilio.get("direccion", "")
         self.localidad = domicilio.get("localidad", "")  # no usado en CABA
         self.provincia = PROVINCIAS.get(domicilio.get("idProvincia"), "")
         self.cod_postal = domicilio.get("codPostal")
     else:
         self.direccion = self.localidad = self.provincia = ""
         self.cod_postal = ""
     # retrocompatibilidad:
     self.domicilios = [domicilio]
     self.domicilio = "%s - %s (%s) - %s" % (
                         self.direccion, self.localidad, 
                         self.cod_postal, self.provincia,)
     # extraer datos impositivos (inscripción / opción) para unificarlos:
     data_mt = ret.get("datosMonotributo", {})
     data_rg = ret.get("datosRegimenGeneral", {})
     # analizo impuestos:
     impuestos = data_mt.get("impuesto", []) + data_rg.get("impuesto", [])
     self.impuestos = [imp["idImpuesto"] for imp in impuestos]
     actividades = data_rg.get("actividad", []) + data_mt.get("actividadMonotributista", [])
     self.actividades = [act["idActividad"] for act in actividades]
     cat_mt = data_mt.get("categoriaMonotributo", {})
     self.analizar_datos(cat_mt)
     return not self.errores
Exemplo n.º 2
0
 def Consultar(self, id_persona):
     "Devuelve el detalle de todos los datos del contribuyente solicitado"
     # llamar al webservice:
     res = self.client.getPersona(
         sign=self.Sign,
         token=self.Token,
         cuitRepresentada=self.Cuit,
         idPersona=id_persona,
         )
     ret = res.get('personaReturn', {})
     # obtengo el resultado de AFIP (dict):
     data = ret.get('datosGenerales', {})
     if isinstance(data, list):
         data = data[0]
     self.data = data
     # lo serializo
     self.Persona = json.dumps(ret,
                               default=json_serializer)
     for er in 'errorConstancia', 'errorMonotributo', 'errorRegimenGeneral':
         if er in ret:
             self.errores.extend(ret[er])
     self.Excepcion = '\n\r'.join([er["error"] for er in self.errores])
     # extraigo los campos principales:
     self.tipo_persona = data.get("tipoPersona")
     self.tipo_doc = TIPO_CLAVE.get(data.get("tipoClave"))
     self.nro_doc = data.get("idPersona")
     self.cuit = self.nro_doc
     self.estado = data.get("estadoClave")
     if not "razonSocial" in data:
         self.denominacion = ", ".join([data.get("apellido", ""),
                                       data.get("nombre", "")])
     else:
         self.denominacion = data.get("razonSocial", "")
     # analizo el domicilio, dando prioridad al FISCAL, luego LEGAL/REAL
     domicilio = data.get("domicilioFiscal", [])
     if domicilio:
         self.direccion = domicilio.get("direccion", "")
         self.localidad = domicilio.get("localidad", "")  # no usado en CABA
         self.provincia = PROVINCIAS.get(domicilio.get("idProvincia"), "")
         self.cod_postal = domicilio.get("codPostal")
     else:
         self.direccion = self.localidad = self.provincia = ""
         self.cod_postal = ""
     # retrocompatibilidad:
     self.domicilios = [domicilio]
     self.domicilio = "%s - %s (%s) - %s" % (
                         self.direccion, self.localidad, 
                         self.cod_postal, self.provincia,)
     # extraer datos impositivos (inscripción / opción) para unificarlos:
     data_mt = ret.get("datosMonotributo", {})
     data_rg = ret.get("datosRegimenGeneral", {})
     # analizo impuestos:
     impuestos = data_mt.get("impuesto", []) + data_rg.get("impuesto", [])
     self.impuestos = [imp["idImpuesto"] for imp in impuestos]
     actividades = data_rg.get("actividad", []) + data_mt.get("actividadMonotributista", [])
     self.actividades = [act["idActividad"] for act in actividades]
     cat_mt = data_mt.get("categoriaMonotributo", {})
     self.analizar_datos(cat_mt)
     return not self.errores
Exemplo n.º 3
0
 def Consultar(self, id_persona):
     "Devuelve el detalle de todos los datos del contribuyente solicitado"
     # llamar al webservice:
     res = self.client.getPersona(
         sign=self.Sign,
         token=self.Token,
         cuitRepresentada=self.Cuit,
         idPersona=id_persona,
         )
     ret = res.get('personaReturn', {})
     # obtengo el resultado de AFIP (dict):
     data = ret.get('persona', None)
     if isinstance(data, list):
         data = data[0]
     self.data = data
     # lo serializo
     self.Persona = json.dumps(self.data,
                               default=json_serializer)
     # extraigo los campos principales:
     self.cuit = data["idPersona"]
     self.tipo_persona = data["tipoPersona"]
     self.tipo_doc = TIPO_CLAVE.get(data["tipoClave"])
     self.nro_doc = data.get("numeroDocumento")
     self.estado = data.get("estadoClave")
     if not "razonSocial" in data:
         self.denominacion = ", ".join([data.get("apellido", ""),
                                       data.get("nombre", "")])
     else:
         self.denominacion = data.get("razonSocial", "")
     # analizo el domicilio, dando prioridad al FISCAL, luego LEGAL/REAL
     domicilios = data.get("domicilio", [])
     domicilios.sort(key=lambda item: item["tipoDomicilio"] != "FISCAL")
     if domicilios:
         domicilio = domicilios[0]
         self.direccion = domicilio.get("direccion", "")
         self.localidad = domicilio.get("localidad", "")  # no usado en CABA
         self.provincia = PROVINCIAS.get(domicilio.get("idProvincia"), "")
         self.cod_postal = domicilio.get("codPostal")
     else:
         self.direccion = self.localidad = self.provincia = ""
         self.cod_postal = ""
     # retrocompatibilidad:
     self.domicilios = domicilios
     self.domicilio = "%s - %s (%s) - %s" % (
                         self.direccion, self.localidad, 
                         self.cod_postal, self.provincia,)
     # analizo impuestos:
     self.impuestos = [imp["idImpuesto"] for imp in data.get("impuesto", [])
                       if imp['estado'] == u'ACTIVO']
     self.actividades = [act["idActividad"] for act in data.get("actividad", [])]
     mt = [cat for cat in data.get("categoria", [])
           if cat["idImpuesto"] in (20, 21) and cat["estado"] == "ACTIVO"]
     mt.sort(key=lambda cat: cat["idImpuesto"])
     self.analizar_datos(mt[0] if mt else {})
     return True
Exemplo n.º 4
0
 def Consultar(self, id_persona):
     "Devuelve el detalle de todos los datos del contribuyente solicitado"
     # llamar al webservice:
     res = self.client.getPersona(
         sign=self.Sign,
         token=self.Token,
         cuitRepresentada=self.Cuit,
         idPersona=id_persona,
         )
     ret = res.get('personaReturn', {})
     # obtengo el resultado de AFIP (dict):
     data = ret.get('persona', None)
     if isinstance(data, list):
         data = data[0]
     self.data = data
     # lo serializo
     self.Persona = json.dumps(self.data,
                               default=json_serializer)
     # extraigo los campos principales:
     self.cuit = data["idPersona"]
     self.tipo_persona = data["tipoPersona"]
     self.tipo_doc = TIPO_CLAVE.get(data["tipoClave"])
     self.nro_doc = data.get("numeroDocumento")
     self.estado = data.get("estadoClave")
     if not "razonSocial" in data:
         self.denominacion = ", ".join([data.get("apellido", ""),
                                       data.get("nombre", "")])
     else:
         self.denominacion = data.get("razonSocial", "")
     # analizo el domicilio, dando prioridad al FISCAL, luego LEGAL/REAL
     domicilios = data.get("domicilio", [])
     domicilios.sort(key=lambda item: item["tipoDomicilio"] != "FISCAL")
     if domicilios:
         domicilio = domicilios[0]
         self.direccion = domicilio.get("direccion", "")
         self.localidad = domicilio.get("localidad", "")  # no usado en CABA
         self.provincia = PROVINCIAS.get(domicilio.get("idProvincia"), "")
         self.cod_postal = domicilio.get("codPostal")
     else:
         self.direccion = self.localidad = self.provincia = ""
         self.cod_postal = ""
     # retrocompatibilidad:
     self.domicilios = domicilios
     self.domicilio = "%s - %s (%s) - %s" % (
                         self.direccion, self.localidad, 
                         self.cod_postal, self.provincia,)
     # analizo impuestos:
     self.impuestos = [imp["idImpuesto"] for imp in data.get("impuesto", [])
                       if imp['estado'] == u'ACTIVO']
     self.actividades = [act["idActividad"] for act in data.get("actividad", [])]
     mt = [cat for cat in data.get("categoria", [])
           if cat["idImpuesto"] in (20, 21) and cat["estado"] == "ACTIVO"]
     mt.sort(key=lambda cat: cat["idImpuesto"])
     self.analizar_datos(mt[0] if mt else {})