Exemplo de Gerenciamento de Aquisições com Python#

Introdução#

O gerenciamento de aquisições é uma parte essencial do gerenciamento de projetos, garantindo que os recursos e serviços necessários sejam obtidos para atender às necessidades do projeto. Nesta aula, usaremos Python para explorar:

  1. Planejamento de aquisições.

  2. Seleção de fornecedores.

  3. Geração de formulários para coleta de dados e critérios.

Os exemplos estão alinhados com os conceitos do PMBOK 7ª edição no domínio Entrega.

Exercício Prático: Planejamento de Aquisições para um Projeto de Construção#

Considere realizar um exercício prático onde você irá planejar as aquisições para um pequeno projeto de construção civil, levando em consideração as etapas descritas anteriormente.

Passos para o Exercício:#

  1. Defina as necessidades do projeto: O que você precisa adquirir para o projeto?

  2. Selecione os fornecedores: Quem pode fornecer o que você precisa?

  3. Determine o orçamento: Qual é o orçamento disponível para as aquisições?

  4. Estabeleça os prazos: Quando os materiais e serviços precisam ser entregues?

Planejamento de Aquisições#

Antes de adquirir recursos, é essencial planejar adequadamente. Vamos criar um formulário simples em Python para coletar requisitos do projeto.

import csv
from IPython.display import FileLink  # Biblioteca para criar link de download

def criar_formulario():
    # Definição dos campos do formulário
    campos = [
        "Nome do Requisitante",
        "Descrição do Item/Serviço",
        "Quantidade Necessária",
        "Prazo de Entrega",
        "Orçamento Estimado"
    ]
    
    print("Preencha os dados abaixo para criar um formulário de aquisições.")
    dados = {}  # Dicionário para armazenar os dados preenchidos pelo usuário
    
    # Coleta de dados interativa para cada campo
    for campo in campos:
        dados[campo] = input(f"{campo}: ")
    
    # Atualiza o caminho do arquivo para a pasta ../../data/
    nome_arquivo = "../../../data/formulario_aquisicoes.csv"
    with open(nome_arquivo, mode="w", newline="") as arquivo:
        # Configura o escritor CSV com os campos definidos
        escritor = csv.DictWriter(arquivo, fieldnames=campos)
        escritor.writeheader()  # Escreve os cabeçalhos no arquivo
        escritor.writerow(dados)  # Escreve os dados coletados como uma linha
    
    print(f"Formulário salvo como {nome_arquivo}.")  # Mensagem de sucesso
    return nome_arquivo  # Retorna o nome do arquivo criado

def exibir_formulario(nome_arquivo):
    # Exibe o conteúdo do formulário a partir do arquivo CSV
    print("\nConteúdo do Formulário de Aquisição Salvo:")
    with open(nome_arquivo, mode="r", newline="") as arquivo:
        leitor = csv.DictReader(arquivo)
        for linha in leitor:
            for campo, valor in linha.items():
                print(f"{campo}: {valor}")

def criar_link_download(nome_arquivo):
    # Cria um link de download para o arquivo
    display(FileLink(nome_arquivo))  # Exibe o link para download do arquivo

# Executa a função para testar a criação do formulário
arquivo_salvo = criar_formulario()

# Exibe o conteúdo do arquivo salvo
exibir_formulario(arquivo_salvo)

# Cria o link de download do arquivo
criar_link_download(arquivo_salvo)
Preencha os dados abaixo para criar um formulário de aquisições.
Formulário salvo como ../../../data/formulario_aquisicoes.csv.

Conteúdo do Formulário de Aquisição Salvo:
Nome do Requisitante: r
Descrição do Item/Serviço: r
Quantidade Necessária: r
Prazo de Entrega: r
Orçamento Estimado: r

Seleção de Fornecedores#

Após coletar os requisitos, avaliamos os fornecedores com base em critérios como preço, qualidade e prazos. Aqui está um exemplo prático em Python para selecionar fornecedores.

import pandas as pd

# Dados fictícios de fornecedores
dados = {
    "Fornecedor": ["Fornecedor A", "Fornecedor B", "Fornecedor C"],
    "Preço": [1000, 1200, 1100],
    "Qualidade (1-10)": [8, 9, 7],
    "Prazo de Entrega (dias)": [30, 40, 25]
}

# Criar DataFrame
df = pd.DataFrame(dados)

# Pesos para critérios
pesos = {"Preço": 0.4, "Qualidade (1-10)": 0.4, "Prazo de Entrega (dias)": 0.2}

# Normalizar dados e calcular pontuação
df["Pontuação"] = (
    (1 / df["Preço"]) * pesos["Preço"] +
    df["Qualidade (1-10)"] * pesos["Qualidade (1-10)"] +
    (1 / df["Prazo de Entrega (dias)"]) * pesos["Prazo de Entrega (dias)"]
)

# Ordenar por pontuação
df = df.sort_values(by="Pontuação", ascending=False)

print("Ranking dos Fornecedores:")
print(df)
Ranking dos Fornecedores:
     Fornecedor  Preço  Qualidade (1-10)  Prazo de Entrega (dias)  Pontuação
1  Fornecedor B   1200                 9                       40   3.605333
0  Fornecedor A   1000                 8                       30   3.207067
2  Fornecedor C   1100                 7                       25   2.808364

Conclusão#

Com Python, podemos automatizar partes importantes do gerenciamento de aquisições, como:

  1. Coletar requisitos por meio de formulários.

  2. Avaliar fornecedores com base em critérios definidos.

Baixe o arquivo gerado durante a execução para usá-lo em seus projetos!

Sugestão de Atividade:#

  • Modifique os critérios de seleção e os pesos no exemplo para ver como o ranking dos fornecedores muda.