Beispiel #1
0
    def __call_transaction(sap_session,
                           transaction,
                           window_id=sapgui.GUI_MAIN_WINDOW,
                           check_error=True):
        tcode = TRANSACTION_PREFIX + transaction
        SAPGuiElements.set_text(
            sap_session, TRANSACTION_TEXT_FIELD.format(window=window_id),
            tcode)
        SAPGuiElements.press_keyboard_keys(sap_session, "Enter")

        if not check_error:
            return
        gui_msg = SAPGuiElements.get_status_message(sap_session)

        if gui_msg:
            if gui_msg[1] == "343":
                msg = "Wrong transaction name '{0}'. GUI Message: {1}".format(
                    transaction, gui_msg[2])
                raise ValueError(msg)

            elif gui_msg[1] == "077":
                msg = "Not authorized to execute '{0}' transaction. GUI Message: {1}".format(
                    transaction, gui_msg[2])
                raise PermissionError(msg)

            elif gui_msg[1] == "410":
                msg = "Blocked action in '{0}' transaction. GUI Message: {1}".format(
                    transaction, gui_msg[2])
                raise PermissionError(msg)
Beispiel #2
0
    def __inserir_remessas(sap_session, remessas):
        try:
            SAPGuiElements.press_button(sap_session,
                                        ELEMENTO_BOTAO_ADICIONAR_REMESSAS)

            remover_a = remessas[0].itens[0].produto.remover_a == 1
            if remover_a:
                VT01.__remover_a(sap_session)

            SAPGuiElements.press_button(
                sap_session, ELEMENTO_BOTAO_ADICIONAR_MAIS_REMESSAS)
            cont = 0
            for remessa in remessas:
                field = ELEMENT_SHIPPING_FIELDS.format(cont)
                sap_session.findById(field).text = remessa.numero_remessa
                cont = cont + 1

            SAPGuiElements.press_button(sap_session, ELEMENT_EXECUTE_BUTTON_1)
            SAPGuiElements.press_button(sap_session, ELEMENT_EXECUTE_BUTTON_2)

            mensagem = SAPGuiElements.verificar_mensagem_barra_inferior(
                sap_session)
            total_remessas_adicionadas = "".join(re.findall("\\d*", mensagem))
            total_remessas_adicionadas = int(total_remessas_adicionadas)
            total_remessas = len(remessas)

            if total_remessas_adicionadas != total_remessas:
                raise RuntimeError('Erro ao adicionar remessas!')

        except Exception as e:
            raise e
Beispiel #3
0
    def __inserir_s(sap_session):
        continuar = True
        contador = 0
        while continuar:
            try:
                SAPGuiElements.set_text(sap_session,
                                        ELEMENTO_COLUNA_S.format(contador),
                                        "S")
                contador = contador + 1

            except AttributeError:
                return
Beispiel #4
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')
Beispiel #5
0
 def get_message(sap_session, element):
     message = ""
     try:
         message = SAPGuiElements.get_text(sap_session, element)
         print(message)
     finally:
         return message
Beispiel #6
0
 def insert_item_text(sap_session, field, valor):
     SAPGuiElements.select_item(sap_session, ELEMENT_TXT_FIELDS, field,
                                "column1")
     SAPGuiElements.ensure_visible_horizontal_item(sap_session,
                                                   ELEMENT_TXT_FIELDS,
                                                   field, "column1")
     SAPGuiElements.double_click_element(sap_session, ELEMENT_TXT_FIELDS,
                                         field, "column1")
     SAPGuiElements.set_item_text(sap_session, ELEMENT_TXT_SELECTED_FIELD,
                                  valor)
Beispiel #7
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
Beispiel #8
0
    def __abrir_item_para_edicao(sap_session, linha):

        try:
            SAPGuiElements.selecionar_linha(sap_session, ELEMENTO_LINHA, linha)
            sap_session.findById("wnd[0]").sendVKey(2)
            SAPGuiElements.ignorar_alerta(sap_session)
            if SAPGuiElements.verificar_mensagem_barra_inferior(sap_session):
                SAPGuiElements.enter(sap_session)
        except Exception:
            raise RuntimeError('Erro ao inserir direitos fiscais!')
Beispiel #9
0
    def pesquisar_transportador(sap_session, criterio):
        try:
            SAPTransaction.call(sap_session, 'xk03')
            if len(criterio) != 7:
                criterio = XK03.__pesquisar_codigo_transportador_por_cnpj_ou_cpf(
                    sap_session, criterio)
            XK03.__abrir_transacao(sap_session, criterio)
            nome = SAPGuiElements.get_text(sap_session, ELEMENTO_NOME)

            SAPGuiElements.press_button(sap_session, ELEMENTO_PROXIMA_PAGINA)
            identificador = SAPGuiElements.get_text(sap_session, ELEMENTO_CNPJ)
            if not identificador:
                identificador = SAPGuiElements.get_text(
                    sap_session, ELEMENTO_CPF)

            codigo_municipio = SAPGuiElements.get_text(
                sap_session, ELEMENTO_CODIGO_MUNICIPIO)
            codigo_municipio = "".join(re.findall("\\d*", codigo_municipio))
            municipio = MunicipioService.pesquisar_municipio_pelo_codigo(
                codigo_municipio)
            if municipio is None:
                raise RuntimeError(
                    'Não possivel definir o municipio do transportador!')

            transportador = Transportador()
            transportador.nome = nome
            transportador.codigo_sap = criterio
            transportador.cnpj_cpf = identificador
            transportador.municipio = municipio
            transportador.save()
            return transportador
        except Exception as e:
            traceback.print_exc(file=sys.stdout)
            raise e
Beispiel #10
0
 def pesquisar_transportador_por_codigo(sap_session, codigo_transportador):
     SAPGuiElements.set_text(
         sap_session,
         "wnd[0]/usr/tabsHEADER_TABSTRIP1/tabpTABS_OV_PR/ssubG_HEADER_SUBSCREEN1:"
         "SAPMV56A:1021/ctxtVTTK-TDLNR", codigo_transportador)
     SAPGuiElements.enter(sap_session)
     SAPGuiElements.verificar_mensagem_barra_inferior(sap_session)
     endereco_transportador = SAPGuiElements.get_text(
         sap_session, "wnd[0]/usr/tabsHEADER_TABSTRIP1/tabpTABS_OV"
         "_PR/ssubG_HEADER_SUBSCREEN1:SAPMV56A:1021/"
         "txtVTTKD-TXTSP")
     SAPTransaction.exit_transaction(sap_session)
     return True, codigo_transportador, endereco_transportador
Beispiel #11
0
 def __procurar_item_pelo_codigo_produto(sap_session, codigo_produto,
                                         ordem):
     item = 0
     while True:
         try:
             codigo_produto_sap = SAPGuiElements.get_text(
                 sap_session, ELEMENTO_CODIGOS_PRODUTO.format(str(item)))
             if codigo_produto_sap.strip() == codigo_produto:
                 return str(item)
             item += 1
         except AttributeError:
             raise RuntimeError(
                 'Ordem {} nao possui um ítem com o produto {}.\n'
                 'Verifique se o produto selecionado está correto!'.format(
                     ordem, codigo_produto))
Beispiel #12
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!')
Beispiel #13
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!')
Beispiel #14
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!')
Beispiel #15
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!')
Beispiel #16
0
    def __pesquisar_codigo_transportador_por_cnpj_ou_cpf(
            sap_session, criterio):
        try:
            XK03.__abrir_campo_pesquisa_por_cnpj_cpf(sap_session)
            cnpj = len(criterio) == 14
            SAPGuiElements.set_text(
                sap_session,
                ELEMENTO_PESQUISA_CNPJ if cnpj else ELEMENTO_PESQUISA_CPF,
                criterio)
            SAPGuiElements.enter(sap_session)
            msg_nenhum_resultado = SAPGuiElements.verificar_mensagem_barra_inferior(
                sap_session)
            if msg_nenhum_resultado:
                raise RuntimeError(msg_nenhum_resultado)

            SAPGuiElements.enter(sap_session)
            return SAPGuiElements.get_text(sap_session,
                                           ELEMENTO_CODIGO_FORNECEDOR)

        except Exception as e:
            traceback.print_exc(file=sys.stdout)
            raise e
Beispiel #17
0
 def __abrir_transacao(sap_session):
     SAPTransaction.call(sap_session, 'vt01n')
     SAPGuiElements.set_text(sap_session, ELEMENTO_ORGANIZACAO, "1000")
     sap_session.findById(ELEMENTO_TIPO_TRANSPORTE).key = "ZDIR"
     SAPGuiElements.press_keyboard_keys(sap_session, "Enter")
Beispiel #18
0
 def __abrir_detalhes_cabecalho(sap_session):
     SAPGuiElements.press_button(sap_session,
                                 ELEMENTO_BOTAO_DETALHE_CABECALHJO)
     SAPGuiElements.ignorar_alerta(sap_session)
Beispiel #19
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)
Beispiel #20
0
 def __inserir_pedido(sap_session, pedido):
     SAPGuiElements.set_text(sap_session, ELEMENTO_NUMERO_PEDIDO, pedido)
Beispiel #21
0
    def __abrir_transacao(sap_session, numero_inspecao_veicular):
        SAPTransaction.call(sap_session, 'qe01')
        SAPGuiElements.set_text(sap_session, ELEMENTO_LOTE_CONTROLE,
                                numero_inspecao_veicular)
        SAPGuiElements.set_text(sap_session, ELEMENTO_OPERACAO, "0010")
        SAPGuiElements.set_text(sap_session, ELEMENTO_CENTRO, "1014")
        sap_session.findById(ELEMENTO_FILTRO_CARACTERISTICAS).key = 1
        SAPGuiElements.press_keyboard_keys(sap_session, "Enter")

        existe_proxima_operacao = True
        while existe_proxima_operacao:
            '''
            row = 0
            while row < sap_session.findById(ELEMENTO_TABELA_RESULTADOS).RowCount:
                # print(row)
                # print(SAPGuiElements.get_text(sap_session, ELEMENTO_COLUNA_S.format(row)))
                # session.findById(ELEMENTO_TABELA_RESULTADOS).selectedRows = row
                row += 1
            '''
            QE01.__inserir_s(sap_session)
            SAPGuiElements.press_button(sap_session,
                                        ELEMENTO_BOTAO_SELECIONAR_TODOS)
            SAPGuiElements.press_button(sap_session, ELEMENTO_BOTAO_AVALIAR)
            # TODO verificar essa lógica
            SAPGuiElements.press_button(sap_session,
                                        ELEMENTO_BOTAO_PROXIMA_OPERACAO)
            existe_proxima_operacao = SAPGuiElements.is_enable(
                sap_session, ELEMENTO_BOTAO_PROXIMA_OPERACAO)

            try:
                SAPGuiElements.press_button(sap_session,
                                            ELEMENTO_BOTAO_GRAVAR_PRIMEIRO)
            except AttributeError:
                pass
        SAPGuiElements.press_button(sap_session, SAVE_BUTTON)
        tipo_mensagem = SAPGuiElements.get_sbar_message_type(sap_session)
        message = SAPGuiElements.get_text(sap_session, MESSAGE_ELEMENT)
        if tipo_mensagem and tipo_mensagem == 'S':
            return True, message
        else:
            return False, message
Beispiel #22
0
 def __inserir_codigo_transportador(sap_session, codigo_transportador):
     SAPGuiElements.set_text(sap_session, ELEMENTO_CODIGO_TRANSPORTADOR,
                             codigo_transportador)
     SAPGuiElements.enter(sap_session)
     SAPGuiElements.verificar_mensagem_barra_inferior(sap_session)
Beispiel #23
0
    def gerar_produto_remessa_pronta(sap_session, numero_remessa):
        try:
            SAPTransaction.call(sap_session, 'vl03n')
            SAPGuiElements.set_text(sap_session, ELEMENTO_CAMPO_REMESSA,
                                    numero_remessa)
            SAPGuiElements.press_keyboard_keys(sap_session, "Enter")
            SAPGuiElements.verificar_mensagem_barra_inferior(sap_session)

            remessa = Remessa(None, None)
            proximo_item = True
            c = 0
            while proximo_item:
                numero_item = SAPGuiElements.get_text(
                    sap_session, ELEMENTO_NUMERO_ITEM.format(str(c)))
                proximo_item = str(numero_item).isdigit()
                if proximo_item:
                    codigo_produto = SAPGuiElements.get_text(
                        sap_session, ELEMENTO_CODIGOS_PRODUTO.format(str(c)))
                    deposito = SAPGuiElements.get_text(
                        sap_session, ELEMENTO_DEPOSITOS.format(str(c)))
                    quantidade = SAPGuiElements.get_text(
                        sap_session, ELEMENTO_QUANTIDADES.format(str(c)))
                    lote = SAPGuiElements.get_text(
                        sap_session, ELEMENTO_LOTES.format(str(c)))

                    produto = ProdutoService.pesquisar_produto_pelo_id(
                        codigo_produto)
                    '''
                    # TODO informar ao usuario se ele deseja continuar caso lote ou deposito esteja diferente
                    if produto.lote != lote:
                        raise RuntimeError('Lote da remessa diferente do lote cadastrado para o produto {}!'
                                           .format(produto.nome))

                    if produto.deposito != deposito:
                        raise RuntimeError('Deposito da remessa diferente do deposito cadastrado para o produto {}!'
                                           .format(produto.nome))
                    '''
                    item = ItemRemessa(quantidade=quantidade,
                                       produto=produto,
                                       numero_item=numero_item)
                    remessa.itens.append(item)
                c += 1
            return remessa
        except Exception as e:
            print(e)
Beispiel #24
0
    def pesquisar_transportador(sap_session, numero_documento):

        VT01.__abrir_transacao(sap_session)

        if re.findall("^\\d{7}$", numero_documento):
            return VT01.pesquisar_transportador_por_codigo(
                sap_session, numero_documento)

        sap_session.findById("wnd[0]").sendVKey(4)
        SAPGuiElements.press_button(sap_session, FILTER_BUTTOn_ELEMENT)

        # campo para o selecionar o primeiro elemento da tabela caso encontre um transportador
        primeiro_elemento = "wnd[1]/usr/lbl[1,5]"
        # verificando se é um cnpj
        if re.findall("^\\d{14}$", numero_documento):
            SAPGuiElements.set_text(sap_session, ELEMENTO_CNPJ,
                                    numero_documento)

        elif re.findall("^\\d{11}$", numero_documento):
            SAPGuiElements.set_text(sap_session, ELEMENTO_CPF,
                                    numero_documento)
            primeiro_elemento = "wnd[1]/usr/lbl[1,3]"

        else:
            return "CNPJ ou CPF Inválido!"

        SAPGuiElements.press_keyboard_keys(sap_session, "Enter")

        error_message = SAPGuiElements.get_text(sap_session, "wnd[0]/sbar")

        if error_message:
            SAPTransaction.exit_transaction(sap_session)
            return False, error_message

        else:
            # selecionando o primeiro elemento da tabela
            SAPGuiElements.press_keyboard_keys(sap_session, "Enter")
            SAPGuiElements.press_keyboard_keys(sap_session, "Enter")
            codigo_transportador = SAPGuiElements.get_text(
                sap_session, "wnd[0]/usr/tabsHEADER_TABSTRIP1/tabpTABS_OV_"
                "PR/ssubG_HEADER_SUBSCREEN1:SAPMV56A:1021"
                "/ctxtVTTK-TDLNR")

            endereco_transportador = SAPGuiElements.get_text(
                sap_session, "wnd[0]/usr/tabsHEADER_TABSTRIP1/tabpTABS_OV"
                "_PR/ssubG_HEADER_SUBSCREEN1:SAPMV56A:1021/"
                "txtVTTKD-TXTSP")

            print('codigo :' + codigo_transportador)
            SAPTransaction.exit_transaction(sap_session)
            return True, codigo_transportador, endereco_transportador
Beispiel #25
0
 def __remover_a(sap_session):
     SAPGuiElements.set_text(sap_session, "wnd[1]/usr/ctxtS_WBSTK-LOW", "")
     SAPGuiElements.set_text(sap_session, "wnd[1]/usr/ctxtS_TRSTA-LOW", "")
     SAPGuiElements.set_text(sap_session, "wnd[1]/usr/ctxtS_TRSTA-HIGH", "")
Beispiel #26
0
 def __inserir_lote_controle_produto(sap_session, lote_qualidade_produto):
     SAPGuiElements.set_text(sap_session, ELEMENTO_LOTE_PRODUTO,
                             lote_qualidade_produto.numero_lote)
Beispiel #27
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)
Beispiel #28
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)
Beispiel #29
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
Beispiel #30
0
    def create(sap_session, carregamento):
        try:

            VT01.__abrir_transacao(sap_session)
            VT01.__inserir_codigo_transportador(
                sap_session, carregamento.transportador.codigo_sap)
            VT01.__inserir_dados_veiculo(sap_session, carregamento.veiculo)

            if carregamento.remessas[0].itens[0].produto.inspecao_produto == 1:
                VT01.__inserir_lote_controle_produto(
                    sap_session, carregamento.lotes_qualidade[-1])
            SAPGuiElements.enter(sap_session)

            SAPGuiElements.verificar_mensagem_barra_inferior(sap_session)

            VT01.__inserir_dados_motorista(sap_session, carregamento.motorista)

            # verificando se é necessário lacres para esse produto
            tipo_lacres = carregamento.remessas[0].itens[0].produto.tipo_lacres
            if tipo_lacres != 0:
                VT01.__inserir_lacres(sap_session, tipo_lacres,
                                      carregamento.lacres)

            # verificando se há número de pedido
            if carregamento.numero_pedido:
                VT01.__inserir_pedido(sap_session, carregamento.numero_pedido)

            SAPGuiElements.enter(sap_session)

            VT01.__inserir_remessas(sap_session, carregamento.remessas)
            SAPGuiElements.press_button(sap_session, ELEMENTO_SINTESE)
            sap_session.findById(ELEMENTO_ABA_DADOS).select()
            SAPGuiElements.press_button(sap_session,
                                        ELEMENTO_ORGANIZAR_TRANSPORTE)

            SAPGuiElements.salvar(sap_session)

            message = SAPGuiElements.verificar_mensagem_barra_inferior(
                sap_session)
            transport_number = VT01.extrair_numero_transport(message)
            return transport_number

        except Exception as e:
            traceback.print_exc(file=sys.stdout)
            raise e