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 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
def create(sap_session, lote_inspecao): try: SAPTransaction.call(sap_session, 'qa01') SAPGuiElements.set_text(sap_session, ELEMENTO_CODIGO_PRODUTO, lote_inspecao.material) SAPGuiElements.set_text(sap_session, ELEMENTO_CENTRO, CENTRO) SAPGuiElements.set_text(sap_session, ELEMENTO_LOTE_ORIGEM, lote_inspecao.origem) SAPGuiElements.press_keyboard_keys(sap_session, "Enter") # verificando se o lote é de inspecao de produto(89) ou de veiculo(07) inspecionando_produto = lote_inspecao.origem == "89" if inspecionando_produto: sap_session.findById("wnd[1]/usr/lbl[1,3]").setFocus() SAPGuiElements.press_keyboard_keys(sap_session, "Enter") SAPGuiElements.set_text(sap_session, ELEMENTO_QUANTIDADE_LOTE, QUANTIDADE_LOTES) SAPGuiElements.set_text(sap_session, ELEMENTO_TXT_BREVE_INSP_PRODUTO, lote_inspecao.texto_breve) else: SAPGuiElements.set_text(sap_session, ELEMENTO_TXT_BREVE_INSP_VEICULO, lote_inspecao.texto_breve) # o lote e o deposito sao setados agora pq caso o lote seja de inspecao de produto, o sap mostra uma # mensagem antes de abrir a tela do lote SAPGuiElements.set_text(sap_session, ELEMENTO_LOTE, lote_inspecao.lote) SAPGuiElements.set_text(sap_session, ELEMENTO_DEPOSITO, lote_inspecao.deposito if lote_inspecao.deposito is not None else '') SAPGuiElements.salvar(sap_session) try: SAPGuiElements.press_button(sap_session, OPTIONAL_CREATE) error_message = SAPGuiElements.get_text(sap_session, ERROR_MESSAGE_ELEMENT) if error_message: raise RuntimeError(QA01.get_formated_error_message(error_message, lote_inspecao.texto_breve)) except AttributeError: pass mensagem = SAPGuiElements.verificar_mensagem_barra_inferior(sap_session) return QA01.get_batch_controller_number(mensagem) except Exception as e: traceback.print_exc(file=sys.stdout) raise e