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
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
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 {})