def __inserir_dados_aba_transporte(sap_session, produto): SAPGuiElements.select_element(sap_session, ELEMENTO_ABA_TRANSPORTE) SAPGuiElements.set_text(sap_session, ELEMENTO_ICOTERMS_1, produto.icoterms1) SAPGuiElements.set_text(sap_session, ELEMENTO_ICOTERMS_2, produto.icoterms2) SAPGuiElements.set_text(sap_session, ELEMENTO_TIPO_VEICULO, '1000')
def __inserir_direitos_fiscais(sap_session, produto): SAPGuiElements.select_element(sap_session, ELEMENTO_ABA_PROCESSAMENTO_FINANCEIRO) SAPGuiElements.set_text(sap_session, ELEMENTO_CFOP, produto.cfop) SAPGuiElements.set_text(sap_session, ELEMENTO_CODIGO_IMPOSTO, produto.codigo_imposto) SAPGuiElements.set_text(sap_session, ELEMENTO_ICMS, produto.df_icms) SAPGuiElements.set_text(sap_session, ELEMENTO_IPI, produto.df_ipi) SAPGuiElements.set_text(sap_session, ELEMENTO_PIS, produto.df_pis) SAPGuiElements.set_text(sap_session, ELEMENTO_COFINS, produto.df_cofins)
def criar_remessa(sap_session, remessa, remessa_sem_transporte=False): try: ordem = remessa.itens[0].numero_ordem SAPTransaction.call(sap_session, 'vl01n') SAPGuiElements.set_text(sap_session, SHIPPING_PLACE_FIELD, SHIPPING_PLACE_VALUE) SAPGuiElements.set_text(sap_session, SHIPPING_ORDER_FIELD, ordem) SAPGuiElements.press_keyboard_keys(sap_session, "Enter") # verificando se houve alguma mensagem de erro. # Uma exceçao será lançada no caso de erro. SAPGuiElements.verificar_mensagem_barra_inferior(sap_session) SAPGuiElements.select_element(sap_session, ELEMENTO_ABA_PICKING) linha = 0 for item in remessa.itens: item_str = VL01.__procurar_item_pelo_codigo_produto( sap_session, item.produto.codigo_sap, ordem) VL01.__inserir_deposito(sap_session, item.produto.deposito, item_str) VL01.__inserir_lote(sap_session, item.produto.lote, item_str) VL01.__inserir_quantidade(sap_session, item.quantidade, item_str) VL01.__inserir_picking(sap_session, item.quantidade, item_str) VL01.__alterar_direitos_fiscais_se_necessario( sap_session, item.produto, linha) VL01.__inserir_dados_cabecalho(sap_session, remessa.itens[0].produto) SAPGuiElements.enter(sap_session) # ignorando alerta de remessas parciais SAPGuiElements.ignorar_alerta(sap_session) if SAPGuiElements.verificar_mensagem_barra_inferior(sap_session): SAPGuiElements.enter(sap_session) SAPGuiElements.salvar(sap_session) # ignorando alerta de remessas parciais SAPGuiElements.ignorar_alerta(sap_session) # verificando se houve alguma mensagem de erro. mensagem = SAPGuiElements.verificar_mensagem_barra_inferior( sap_session) # retornando o número da remessa return VL01.extrair_numero_remessa(mensagem) except Exception as e: raise e
def __inserir_picking(sap_session, picking, linha_item): if picking: try: SAPGuiElements.select_element( sap_session, ELEMENTO_PICKINGS.split(SPLIT_STR)[0]) SAPGuiElements.set_text(sap_session, ELEMENTO_PICKINGS.format(linha_item), picking) except Exception: if SAPGuiElements.verificar_mensagem_barra_inferior( sap_session): SAPGuiElements.enter(sap_session) raise RuntimeError('Erro ao inserir o picking!')
def __inserir_lote(sap_session, lote, linha_item): if lote: try: SAPGuiElements.select_element( sap_session, ELEMENTO_LOTES.split(SPLIT_STR)[0]) SAPGuiElements.set_text(sap_session, ELEMENTO_LOTES.format(linha_item), lote) except Exception: if SAPGuiElements.verificar_mensagem_barra_inferior( sap_session): SAPGuiElements.enter(sap_session) raise RuntimeError('Erro ao inserir o lote!')
def __inserir_quantidade(sap_session, quantidade, linha_item): if quantidade: try: SAPGuiElements.select_element( sap_session, ELEMENTO_QUANTIDADES.split(SPLIT_STR)[0]) SAPGuiElements.set_text( sap_session, ELEMENTO_QUANTIDADES.format(linha_item), quantidade) except Exception: if SAPGuiElements.verificar_mensagem_barra_inferior( sap_session): SAPGuiElements.enter(sap_session) raise RuntimeError('Erro ao inserir a quantidade!')
def __inserir_deposito(sap_session, deposito, linha_item): if deposito: try: SAPGuiElements.select_element( sap_session, ELEMENTO_DEPOSITOS.split(SPLIT_STR)[0]) SAPGuiElements.set_text(sap_session, ELEMENTO_DEPOSITOS.format(linha_item), deposito) except Exception: if SAPGuiElements.verificar_mensagem_barra_inferior( sap_session): SAPGuiElements.enter(sap_session) raise RuntimeError('Erro ao inserir o depósito!')
def inserir_inspecao_veicular(sap_session, numero_transporte, numero_inspecao_veicular): SAPTransaction.call(sap_session, 'vt02n') SAPGuiElements.set_text(sap_session, ELEMENTO_NUMERO_TRANSPORTE, numero_transporte) SAPGuiElements.press_keyboard_keys(sap_session, "Enter") SAPGuiElements.select_element(sap_session, ELEMENTO_ABA_IDENTIFICACAO) SAPGuiElements.set_text(sap_session, ELEMENTO_NUMERO_INSPECAO_VEICULAR, numero_inspecao_veicular) SAPGuiElements.press_button(sap_session, SAVE_BUTTON) tipo_mensagem = SAPGuiElements.get_sbar_message_type(sap_session) if tipo_mensagem and tipo_mensagem == 'S': return True, "" return False, "Erro ao inserir inspecao {} no transporte {}".format( numero_inspecao_veicular, numero_transporte)
def __inserir_dados_aba_parceiros(sap_session): SAPGuiElements.select_element(sap_session, ELEMENTO_ABA_PARCEIROS) indisponivel = True linha = 0 # sap_session.findById(ELEMENTO_COLUNA_TIPO_PARCEIRO.format(str(8))).key = 'SP' # TODO continuar aqui.... achar o retorno corereto while indisponivel: texto = sap_session.findById( ELEMENTO_COLUNA_TIPO_PARCEIRO.format(str(linha))).key print(texto) if texto is None: print('texto é none') indisponivel = False sap_session.findById( ELEMENTO_COLUNA_TIPO_PARCEIRO.format( str(linha))).key = 'SP' linha += 1
def __inserir_dados_veiculo(sap_session, veiculo): tipo_veiculo = veiculo.tipo_veiculo.codigo peso_balanca = veiculo.peso_balanca.codigo SAPGuiElements.set_text(sap_session, CAR_TYPE_ELEMENT, tipo_veiculo) SAPGuiElements.set_text(sap_session, ELEMENTO_PLACA_CAVALO, veiculo.placa1) SAPGuiElements.set_text(sap_session, ELEMENTO_LACRES, peso_balanca) SAPGuiElements.select_element(sap_session, ELEMENT_ADC_DATAS) print(str(veiculo.municipio_placa1)) SAPGuiElements.set_text( sap_session, ELEMENTO_MUNICIPIO_PLACA_01, '{} {}'.format(veiculo.municipio_placa1.uf, veiculo.municipio_placa1.codigo)) if veiculo.placa2: SAPGuiElements.set_text( sap_session, ELEMENTO_MUNICIPIO_PLACA_02, '{} {}'.format(veiculo.municipio_placa2.uf, veiculo.municipio_placa2.codigo)) SAPGuiElements.set_text(sap_session, ELEMENTO_PLACA_02, veiculo.placa2) if veiculo.placa3: SAPGuiElements.set_text( sap_session, ELEMENTO_MUNICIPIO_PLACA_03, '{} {}'.format(veiculo.municipio_placa3.uf, veiculo.municipio_placa3.codigo)) SAPGuiElements.set_text(sap_session, ELEMENTO_PLACA_03, veiculo.placa3) if veiculo.placa4: SAPGuiElements.set_text( sap_session, ELEMENTO_MUNICIPIO_PLACA_04, '{} {}'.format(veiculo.municipio_placa4.uf, veiculo.municipio_placa4.codigo)) SAPGuiElements.set_text(sap_session, ELEMENTO_PLACA_04, veiculo.placa4)
def __abrir_campo_pesquisa_por_cnpj_cpf(sap_session): SAPGuiElements.send_key(sap_session, 4) SAPGuiElements.select_element(sap_session, ELEMENTO_ABA_INFORMACOES_FISCAIS)
def consultar_saldo_cliente(sap_session, cnpj, data_inicial, data_final, produto): SAPTransaction.call(sap_session, 'zsd020') SAPGuiElements.set_text(sap_session, ELEMENTO_LOCAL_NEGOCIOS, '1014') SAPGuiElements.set_text(sap_session, ELEMENTO_ORGANIZACAO_VENDAS, '1000') SAPGuiElements.set_text(sap_session, ELEMENTO_CANAL_DISTRIBUICAO, produto.canal_distribuicao.codigo) SAPGuiElements.set_text(sap_session, ELEMENTO_SETOR_VENDAS, produto.setor_atividade.codigo) SAPGuiElements.set_text(sap_session, ELEMENTO_DATA_INICIAL, data_inicial) SAPGuiElements.set_text(sap_session, ELEMENTO_DATA_FINAL, data_final) SAPGuiElements.set_text(sap_session, ELEMENTO_CODIGO_MATERIAL, produto.codigo_sap) SAPGuiElements.select_element(sap_session, ELEMENTO_APENAS_ORDENS_VENDA) SAPGuiElements.set_checkbox(sap_session, ELEMENTO_INCLUIR_BLOQUEADAS) SAPGuiElements.set_focus(sap_session, ELEMENTO_EMISSOR_ORDEM) SAPGuiElements.send_key(sap_session, 4) SAPGuiElements.set_text(sap_session, ELEMENTO_CAMPO_CNPJ, cnpj) SAPGuiElements.enter(sap_session) SAPGuiElements.enter(sap_session) SAPGuiElements.send_key(sap_session, 8) if SAPGuiElements.verificar_mensagem_barra_inferior(sap_session): return [] SAPGuiElements.press_button(sap_session, ELEMENTO_BOTAO_SELECIONAR_LAYOUT) row = 0 while row < sap_session.findById(ELEMENTO_TABELA_LAYOUTS).RowCount: nome_layout = sap_session.findById(ELEMENTO_TABELA_LAYOUTS).GetCellValue(row, "TEXT") if nome_layout == 'KSLIMA': sap_session.findById(ELEMENTO_TABELA_LAYOUTS).selectedRows = row sap_session.findById(ELEMENTO_TABELA_LAYOUTS).setCurrentCell(row, "TEXT") sap_session.findById(ELEMENTO_TABELA_LAYOUTS).firstVisibleRow = row sap_session.findById(ELEMENTO_TABELA_LAYOUTS).clickCurrentCell() break row += 1 row = 0 ordens = [] while row < sap_session.findById(ELEMENTO_TABELA_ORDENS).RowCount: # converterndo o número da ordem para inteiro e assim eliminar os zeros a esquerda numero_ordem = str(int(sap_session.findById(ELEMENTO_TABELA_ORDENS).GetCellValue(row, ELEMENTO_COLUNA_ORDEM))) data = sap_session.findById(ELEMENTO_TABELA_ORDENS).GetCellValue(row, ELEMENTO_COLUNA_DATA) cidade = sap_session.findById(ELEMENTO_TABELA_ORDENS).GetCellValue(row, ELEMENTO_COLUNA_CIDADE) uf = sap_session.findById(ELEMENTO_TABELA_ORDENS).GetCellValue(row, ELEMENTO_COLUNA_UF) cliente = sap_session.findById(ELEMENTO_TABELA_ORDENS).GetCellValue(row, ELEMENTO_COLUNA_CLIENTE) qtd = sap_session.findById(ELEMENTO_TABELA_ORDENS).GetCellValue(row, ELEMENTO_COLUNA_QTD_ORDEM) qtd_saida = sap_session.findById(ELEMENTO_TABELA_ORDENS).GetCellValue(row, ELEMENTO_COLUNA_QTD_SAIDA) qtd_disponivel = sap_session.findById(ELEMENTO_TABELA_ORDENS).GetCellValue(row, ELEMENTO_COLUNA_QTD_DISPONIVEL) material = sap_session.findById(ELEMENTO_TABELA_ORDENS).GetCellValue(row, ELEMENTO_COLUNA_MATERIAL) codigo_material = sap_session.findById(ELEMENTO_TABELA_ORDENS).GetCellValue(row, ELEMENTO_COLUNA_COD_MATERIAL) codigo_material = str(int(codigo_material)) pedido = sap_session.findById(ELEMENTO_TABELA_ORDENS).GetCellValue(row, ELEMENTO_COLUNA_PEDIDO) tipo_ordem = sap_session.findById(ELEMENTO_TABELA_ORDENS).GetCellValue(row, ELEMENTO_COLUNA_TIPO_ORDEM) status = sap_session.findById(ELEMENTO_TABELA_ORDENS).GetCellValue(row, ELEMENTO_COLUNA_STATUS) cnpj = sap_session.findById(ELEMENTO_TABELA_ORDENS).GetCellValue(row, ELEMENTO_COLUNA_CNPJ) ordem = Ordem() ordem.data = data ordem.numero = numero_ordem ordem.material = material ordem.codigo_material = codigo_material ordem.cliente = cliente ordem.cidade = cidade ordem.uf = uf ordem.qtd = qtd ordem.qtd_saida = qtd_saida ordem.qtd_disponivel = qtd_disponivel ordem.pedido = pedido ordem.tipo = tipo_ordem ordem.cnpj = cnpj ordem.status = status ordens.append(ordem) row += 1 return ordens