Exemplo n.º 1
0
 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')
Exemplo n.º 2
0
 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)
Exemplo n.º 3
0
    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
Exemplo n.º 4
0
    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!')
Exemplo n.º 5
0
    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!')
Exemplo n.º 6
0
    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!')
Exemplo n.º 7
0
    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!')
Exemplo n.º 8
0
    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)
Exemplo n.º 9
0
    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
Exemplo n.º 10
0
    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)
Exemplo n.º 11
0
 def __abrir_campo_pesquisa_por_cnpj_cpf(sap_session):
     SAPGuiElements.send_key(sap_session, 4)
     SAPGuiElements.select_element(sap_session,
                                   ELEMENTO_ABA_INFORMACOES_FISCAIS)
Exemplo n.º 12
0
    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