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()