O objetivo do trabalho é seguir as especificações do arquivo Folha_de_Pagamento.pdf para poder escrever as classes necessárias apra implementar o sistema.
O sistema é inicializado utilizando o objeto QueueSystem()
que é atribuído a uma variável, que no exemplo é chamada de system
.
- Para poder adicionar um empregado, utiliza-se o método
add_employee
- Os atribuos
name, address, type e param
são necessários. - O atributo name é o nome do empregado
- O atributo address é o endereço do empregado
- O atributo param é o parâmetro do tipo do empregado (ex. quando o empregado for salaried, param é o salário do empregado).
- Os atribuos
Todos os empregados, ao serem adicionados são atribuídos uma identificação, um id. Cada empregado detém um id diferente dos que já existem no banco de dados dos empregados.
-
Para remover um empregado utiliza-se o id do mesmo e a chamada do método
del_employee
, que automaticamente remove um empregado que possúi o dado id. -
Para lançar o cartão de ponto utiliza-se a chamada do método
launch_timecard
.- Os atributos
id, hours
são necessãrios. - O id é o id do empregado que será adicionado o cartão de ponto
- E as hours são as horas que foram trabalhadas no dia.
- Os atributos
-
Para lançar um resultado de venda, utiliza-se o método
launch_selling
- No método, são necessárias os atributos
id, price, date
- O id é o id do empreagdo que se deseja lançar o resultado de venda
- O price é o preço do produto que foi vendido
- A date é a data à qual foi vendida o produto
- No método, são necessárias os atributos
-
Para lançar uma taxa de serviço, utiliza-se o método
launch_service_charge
- São necessários os atributos
id, charge
- O id é o id do empregado
- O atributo charge é a cobrança adicional que será realizada
- São necessários os atributos
-
Para alterar os detalhes dos empregados, utiliza-se o método
change_employee_data
- Nele, é necessário adicionar os atributos
id, dict
- O id é o id do empregado que se necessita alterar os dados
- O dict é o dicionário em python dos atributos que se necessita alterar os dados, os possíveis parâmetros são:
name, address, payment_method, syndicate, syndicate_id, syndicate_charge
- O name é para mudar o nome
- O address é para mudar o endereço
- O payment_method é para mudar o método de pagamento
- O syndicate é para mudar se pertence ao sindicato ou não
- O syndicate_id é para mudar a identificação sindical
- O syndicate_charge é para mudar a cobrança sindical
- Nele, é necessário adicionar os atributos
-
Para modificar o tipo de empregado, utiliza-se a chamada de função
change_employee_type
- Colocam-se os parâmetros
id, type
- O parâmetro id é o id do funcionário que se deseja mudar o tipo
- O parâmetro type é o tipo do empregado que se deseja modificar para, os tipos são: Salaried, Commissioned, Hourly
- Colocam-se os parâmetros
-
Para mudar o tipo da agenda de pagamento, é necessário chamar o método
change_payment_schedule
- Os atributos
id, new_schedule
são necessários - O atributo id é o id do pagamento que será modificado
- O atributo new_schedule é a nova agenda de pagamento
- As agendas de pagamentos podem ser mensais, como exemplo:
mensal 1
- todo o primeiro dia do mêsmensal 3
- todo o terceiro dia do mêsmensal $
- todo o último dia do mês- Pode ser em inglês também, ex.:
monthly 1
- Ter pagamentos semanais, como exemplo:
semanal 2 sexta
- toda sexta a cada duas semanassemanal 1 quarta
- toda quarta todas as semanas- Também poder se a agenda em inglês, ex.:
weekly 2 friday
- As agendas de pagamentos podem ser mensais, como exemplo:
- Os atributos
-
Para atualizar a numeração do dia, ir para o dia seguinte, utiliza-se a chamada de função
update_day
. Essa função é necessária para que os dias sigam no sistema. -
Para rodar a folha de pagamento para hoje é necessário realizar a chamada de função
run_today_payroll
, com ela se realizará o pagamento de todos os funcionários do dia. -
Sistema de undo/redo que poderá desfazer ou refazer alterações feitas no banco de dados
- Com o método
undo
, desfaz a última alteração feita no sistema - Com o método
redo
, refaz a última alteração desfeita no sistema
- Com o método
-
A função
print_payroll
que imprime o último estado no sistema de pagamento, e a funçãoprint_payroll_calendar
que imprime o calendário do sistema de pagamento. -
Existe ainda o método
search_by_name
que dispõe para o usuário o id do empregado através do nome. Ele procura somente no último estado escrito do sistema.
Consiste em gerenciar os dados dos empregados e os pagamentos à estes empregados, como cartões de ponto. Os empregados devem receber o salário no momento correto, ao modo que escolherem e obedecer várias taxas e impostos no salário.
-
Os empregados que recebem por hora trabalhada
- Submetem de 'cartões de ponto' todo dia para informar número de horas trabalhadas naquele dia
- Se empregados trabalhar mais que 8 horas, deve receber 1.5 vezes a taxa por hora.
- São pagos toda sexta-feira
-
Os empregados assalariados
- Recebem salário fixo mensal que
- São pagos no último dia do mês.
-
Os empregados comissionados recebem um percentual das vendas que realizam.
- Submetem o resultado das vendas
- Valor da venda
- Data da venda
- O valor da percentagem da comissão varia de empregados para empregado
- São pagos a cada 2 sexta-feiras
- Nesse período devem receber o equivalente a 2 semanas de salário fixo somados às comissões do período
- Submetem o resultado das vendas
-
Escolher o método de pagamento
- Receber um cheque pelo correio
- Cheque em mãos
- Depósito em conta bancária
-
Alguns funcionários pertencem ao sindicato, o sindicato:
- Cobra taxa mensal ao funcionário
- Varia entre empregados
- A taxa sindical é reduzida do salário
- Pode cobrar taxas de serviços adicionais a um empregado
- São submetidas mensalmente e são reduzidas no próximo contracheque do empregado
- Deve haver um sistema à parte do empregados ao sindicato
- Cobra taxa mensal ao funcionário
-
A folha de pagamento é rodada todo dia
- Deve pagar os funcionários cujos salários vencem naquele dia
- O sistema receberá a data até qual o pagamento deve ser feito e calculará o pagamento para cada empregado desde a última vez em que este foi pago
-
Adição de um empregado
- Nome, Endereço, Tipo de empregado (hourly, salaried, commissioned), Atributos associados (salário por horário, salário mensal ou comissão)
- Um número de empregado deve ser escolhido pelo sistema
-
Remoção de um empregado
- Remover um empregado do sistema
-
Lançar um cartão de ponto
- Associará cartão de ponto ao empregado correto
-
Lançar resultado de venda
- Associará informação de venda ao funcionário correto
-
Lançar taxa de serviço
- Anotará taxa de serviço e associará ao funcionário correto
-
Alterar detalhes de um empregado
- Os seguinte atributos podem ser alterados
- Nome, Endereço, Tipo, Método de pagamento, Se pertence ao sindicato ou não, indentificação no sindicato, taxa sindical
- Os seguinte atributos podem ser alterados
-
Rodar folha de pagamento para hoje
- O sistema deve achar todos os empregados que devem ser pagos no dia
- Deve calcular o valor do salário
- Providenciar pagamento de acordo com método de pagamento escolhido pelo empregado
- O sistema deve achar todos os empregados que devem ser pagos no dia
-
Undo/Redo
- Qualquer funcionalidade feita entre as relações 1 - 7
- Undo - Desfeitas
- Redo - Refeita
- Qualquer funcionalidade feita entre as relações 1 - 7
-
Agenda de pagamento
- Empregados podem selecionar a agenda de pagamento que desejarem
- Por default as agendas "semanalmente", "mensalmente" e "bi-semanalmente" são usadas
- Um empregados pode pedir para ser pago com qualquer uma dessas agendas
-
Criação de novas agendas de pagamento
- Criar uma agenda de pagamento para ser disponibilizada para os empregados
- Uma agenda é especificada através de uma string
- Exemplo de novas agendas de pagamento
- 'mensal 1', dia 1 de todo mês, 'mensal $', útlimo dia de todo mês
- 'semanal 1 segunda', toda semana às segundas-feiras
- 'semanal 2 sexta', a cada 2 semanas às sextas-feiras
- Exemplo de novas agendas de pagamento