Ir para o conteúdo

Lab 5: Código final

Após o desenvolvimento e integração com o Orquestrador BotCity Maestro, o código final ficará semelhante a esse:

Projeto: Cadastro de produto no sistema Fakturama

def main():
    maestro = BotMaestroSDK.from_sys_args()
    execution = maestro.get_execution()

    print(f"Task ID is: {execution.task_id}")
    print(f"Task Parameters are: {execution.parameters}")

    # Lista de produtos
    produtos = [
        {
            "Item Number": 1,
            "Name": "Laptop",
            "Category": "Eletrônico",
            "GTIN": "1234567890123",
            "Supplier Code": "SUP001",
            "Description": "Alto desempenho com as últimas especificações.",
            "Price": 999.99,
            "Cost Price": 799.99,
            "Allowance": 50,
            "Stock": 100
        },
        {
            "Item Number": 2,
            "Name": "Smartphone",
            "Category": "Eletrônico",
            "GTIN": "9876543210987",
            "Supplier Code": "SUP002",
            "Description": "Smartphone com recursos avançados de câmera e display.",
            "Price": 699.99,
            "Cost Price": 549.99,
            "Allowance": 30,
            "Stock": 150
        },
        {
            "Item Number": 3,
            "Name": "Tenis de corrida",
            "Category": "Esporte",
            "GTIN": "7654321098765",
            "Supplier Code": "SUP003",
            "Description": "Confortável e resistente, ideal para corridas.",
            "Price": 89.99,
            "Cost Price": 69.99,
            "Allowance": 20,
            "Stock": 200
        }
    ]


    bot = DesktopBot()

    # Implement here your logic...
    # Caminho onde está o executável Fakturama
    path_fakturama = r"C:\Program Files\Fakturama2\Fakturama.exe"

    # Abre o aplicativo do Fakturama
    bot.execute(path_fakturama)

    # Variável para contar os produtos cadastrados com sucesso
    sucesso = 0

    # Repetição para cada produto
    for produto in produtos:

        # Identifica e clica no botão "New product"
        if not bot.find("new_product", matching=0.97, waiting_time=10000):
            not_found("new_product")
        bot.click()

        # Preenche o campo "Item Number"
        if not bot.find("item_number", matching=0.97, waiting_time=10000):
            not_found("item_number")
        bot.click_relative(137, 8)
        bot.type_keys(str(produto["Item Number"]))

        # Avança e preenche o nome do produto
        bot.tab()
        bot.type_keys(produto["Name"])

        # Avança e preenche a categoria
        bot.tab()
        bot.type_keys(produto["Category"])

        # Avança e preenche o GTIN
        bot.tab()
        bot.type_keys(produto["GTIN"])

        # Avança e preenche o Supplier Code
        bot.tab()
        bot.type_keys(produto["Supplier Code"])

        # Avança e preenche a descrição
        bot.tab()
        bot.type_keys(produto["Description"])

        # Avança, seleciona tudo e preenche o campo Price
        bot.tab()
        bot.control_a()
        bot.type_keys(str(produto["Price"]))

        # Avança, seleciona tudo e preenche o custo
        bot.tab()
        bot.control_a()
        bot.type_keys(str(produto["Cost Price"]))

        # Avança e preenche a margem
        bot.tab()
        bot.type_keys(str(produto["Allowance"]))

        # Avança 2 vezes, seleciona tudo e preenche o estoque
        bot.tab()
        bot.tab()
        bot.control_a()
        bot.type_keys(str(produto["Stock"]))

        # Clica no botão "Save"
        if not bot.find("botao_save", matching=0.97, waiting_time=10000):
            not_found("botao_save")
        bot.click()

        # Fecha a aba do produto
        bot.control_w()

        # Incrementa a variável de sucesso
        sucesso += 1

    # Fecha o aplicativo do Fakturama
    bot.alt_f4()

    # Descomente para marcar esta tarefa como finalizada no BotMaestro
    maestro.finish_task(
        task_id=execution.task_id,
        status=AutomationTaskFinishStatus.SUCCESS,
        message="Tarefa de cadastro concluida.",
        total_items= len(produtos),
        processed_items= sucesso
    )

def not_found(label):
    print(f"Element not found: {label}")


if __name__ == '__main__':
    main()