def getInputSerieDoc(str_msg): is_error = True while is_error: is_error = True str_input = input(str_msg) match = fullMatchRExp(r"[a-zA-Z]\d{3}", str_input) if match == None: printOnConsole("La serie no es correcta", "w") else: is_error = False return str_input.upper()
def getInputNumeroDoc(str_msg): is_error = True num = 0 while is_error: is_error = True try: num = int(input(str_msg)) if num <= 0: printOnConsole("El valor debe ser mayor a Cero ( 0 ).", "w") else: is_error = False except ValueError as verr: printOnConsole("El valor ingresado no es númerico.", "w") return num
def getListaTiposDocs(): lista_tipos_docs = [] data = getConfigData("tipos_docs") if len(data["tipos_docs"]) > 0: for tipo_doc in data["tipos_docs"]: tdoc = TipoDocumento( tipo_doc["codigo"], tipo_doc["descripcion"] ) lista_tipos_docs.append(tdoc) else: printOnConsole("No existen Tipos de documentos configurados.", "e") exit() return lista_tipos_docs
def getListaEmpresas(): lista_empresas = [] data = getConfigData("empresas") if len(data["empresas"]) > 0: for empresa in data["empresas"]: emp = Empresa( empresa["razon_social"], empresa["ruc"], ClaveSol( empresa["clave_sol"]["usuario"], empresa["clave_sol"]["contrasenha"] ) ) lista_empresas.append(emp) else: printOnConsole("No existen empresas configuradas.", "e") exit() return lista_empresas
def getInputTipoDoc(str_msg): is_error = True tipo_doc_seleccionado = None tipos_docs = getListaTiposDocs() if len(tipos_docs) > 1: data_table = [] data_table.append(["#", "Cod", "Descripción"]) for tipo_doc in tipos_docs: data_table.append([ tipos_docs.index(tipo_doc) + 1, tipo_doc.codigo, tipo_doc.descripcion ]) printSingleTable(data_table, " LISTA TIPOS DE DOCUMENTOS ") while is_error: is_error = True try: if len(tipos_docs) > 1: indx_tipo_doc_seleccionado = int(input(str_msg)) if indx_tipo_doc_seleccionado > 0: tipo_doc_seleccionado = tipos_docs[indx_tipo_doc_seleccionado - 1] is_error = False else: printOnConsole("El valor debe ser mayor a Cero ( 0 ).", "w") else: tipo_doc_seleccionado = tipos_docs[0] is_error = False except ValueError as verr: printOnConsole("El valor ingresado no es númerico.", "w") except IndexError as ierr: printOnConsole("Debe seleccionar uno de los documentos en la lista.", "w") return tipo_doc_seleccionado
def getInputEmpresa(str_msg): is_error = True empresa_seleccionada = None empresas = getListaEmpresas() if len(empresas) > 1: data_table = [] data_table.append(["#", "RUC", "Razón Social"]) for empresa in empresas: data_table.append([ empresas.index(empresa) + 1, empresa.ruc, empresa.razon_social ]) printSingleTable(data_table, " LISTA DE EMPRESAS ") while is_error: is_error = True try: if len(empresas) > 1: indx_empresa_seleccionada = int(input(str_msg)) if indx_empresa_seleccionada > 0: empresa_seleccionada = empresas[indx_empresa_seleccionada - 1] is_error = False else: printOnConsole("El valor debe ser mayor a Cero ( 0 ).", "w") else: empresa_seleccionada = empresas[0] is_error = False except ValueError as verr: printOnConsole("El valor ingresado no es númerico.", "w") except IndexError as ierr: printOnConsole("Debe seleccionar una de las empresas en la lista.", "w") return empresa_seleccionada
empresa = getInputEmpresa("Empresa: ") tipo_doc = getInputTipoDoc("Tipo de Documento: ") serie = getInputSerieDoc("Serie: ") numero = getInputNumeroDoc("Número: ") service = SUNATServiceClient( empresa, tipo_doc, serie, numero ) if not args.status and not args.cdr: getStatus(service) getStatusCDR(service) else: if args.status: getStatus(service) if args.cdr: getStatusCDR(service) if __name__ == '__main__': try: main() except(KeyboardInterrupt, EOFError, AttributeError): printOnConsole("\n[ PROGRAMA FINALIZADO POR EL USUARIO ]")