Escolar Documentos
Profissional Documentos
Cultura Documentos
Diagramas Drawio
Diagramas Drawio
Evento
- endereco: String
- <<collection>> pacotesComprados: PacoteProduto
- <<collection>> Conta
RelatorioFinanceiro reservas: Date - data: Date
- valor: Float
- <<collection>> contasPagas: Conta AgendaEventos - local: Local
- pago: Boolean
- <<collection>> contasNaoPagas: Conta - <<collection>> eventos: Evento - conta: Conta
- dataVencimento: Date
- <<collection>> produtosComprados: ProdutoCompra - contrato: Contrato
- dataPagamento: Date
- <<collection>> servicosContratados: ServicoOfertado
- tema: TemaEvento
Contrato
- cliente: Cliente
EmpresaEventos
- evento: Evento
- <<collection>> funcionarios: Funcionario
- <<collection>> pacotesDeProdutos:
PacoteProduto
- agenda: AgendaEventos
PacoteProduto
- estoque: Estoque
- <<collection>>: ProdutoVenda
- valor: Float
Estoque
- <<collection>> pedidosDeCompra:
ProdutoCompra
- <<collection>> produtosEmEstoque:
ProdutoEstoque
ProdutoVenda
- algumPedidoPendente: Boolean
- produto: Produto
- quantidade: Int
Cliente Funcionário Fornecedor
ProdutoCompra
- <<collection>> - cargo: String - <<collection>>
eventos: Evento servicos: Servico - fornecedor: Fornecedor
- salario: Float ProdutoEstoque
- nomeFantasia: String - produto: Produto
- horarioTrabalho: String - produto: Produto
- telefoneContato: - quantidade: Int
String - quantidade: Int
- pendente: Boolean
- emailContato: String - taxaLucro: Float
- valorFinal: Float
Produto
- nome: String
- valor: Float
ServicoOfertado
Servico
- servico: Servico
- nome: String
- cargo: String
- valor: Float
- fornecedor:
Fornecedor
AtorCliente
Cadastrar clientes
Gerenciar contas a
receber Receber pagamento
<extends>
<extends>
Cobrar conta
<include>
Cadastrar fornecedores
Cadastrar serviços
ofertados
AtorFuncionario
AtorFornecedor
Cadastrar produtos
ofertados nos eventos
Cadastrar pacotes de
eventos (produtos e
quantidades)
Visualizar agenda de
eventos cadastrados
Cadastrar temas de
eventos
Cadastrar locais de
realização dos eventos
Gerar relatório de
eventos
AtorFuncionario
Gerar relatório financeiro
Cadastrar funcionários
Gerar conta
AtorCliente
<include>
Cancelar cadastro de
<extends>
evento
Receber pedido
Realizar pedido de compra <extends> de compra
para o fornecedor
<extends>
Checar estoque
Ator Fornecedor
Contratar servicos
AtorFuncionario
Visão de Pedido de Compra
clienteCadastrado =
cliente IN clientes
[NOT clienteCadastrado]
ref ref
ref
ref
[produtosEmEstoque]
Visão de Pedido de Compra
[pagamentoEfetuado]
[NOT pedidoAtendido]
[NOT pagamentoEfetuado]
[pedidoAtendido]
ref
ref
[NOT algumTemaCadastrado] Cobrar conta
Receber Pedido
ref
[desejaServicos]
ref
Contratar serviços
Contrata serviços
[desejaServicos]
Escolhe pacote de
Escolhe tema [NOT desejaServicos] Cadastra evento
produtos
Emite contrato de
Da baixa em conta Recebe pagamento Cobra conta
evento
1.6: checaServicos()
1.5: checaPacotes()
1.10: atualizaEstoque()
1.4: checaTemas()
)
o(
1.
nt
11
ve
:co
oE
1.12: cadastraEvento(cliente,
nt
ca
desejaServicos, servicos)
1.7: enviaDetalhes(cliente,
ra
i
desejaServico, servico)
ta
is
qu
Se
re
r
tema, pacotes,
vi
tema, pacotes,
2:
co
1.
se(
r vi
co
)
e,
nt
, s s, lie
os te (c
1.3: respondeRequisicao()
s)
ic co to
co
rv pa en
vi
Se , Ev
er
ja ma ra
se te ast
d
funcionario: Funcionario ca agenda: AgendaEventos fornecedor: Fornecedor
8:
1.
de
1.14: emiteContrato(
1.13: geraConta()
servicos, cliente)
pacotes,
evento: Evento
2: checaContas() 2.1: checaContas()
funcionario: Funcionario empresa: EmpresaEventos
2.2: checaContas()
2.3: checaConta()
evento: Evento agenda: AgendaEventos
2.4: checaConta()
2.9: darBaixaEmConta() 2.8: realizaPagamento(valor)
2.6: realizaCobranca(valor)
opt [funcionarioResponsavel]
temas = checaTemas()
pacotes = checaPacotes()
servicos = checaServicos()
alt
loop
adicionaNoEstoque(produtoRecebido)
se produtoRecebido = null,
atendidos = false e há um break
nesse loop
alt
cancelaPedidos(produtos)
[NOT atendidos]
cancelaCadastroEvento()
removeDoEstoque(produtos)
ref
[else] removeDoEstoque(produtos)
ref
contrataServico(servico, data)
geraConta()
checaContas()
checaContas()
checaContas()
checaConta()
pago = verificaPagamento()
alt [saldoSuficiente]
realizaPagamento(valor)
darBaixaEmConta()
[NOT pagamentoRecebido]
verificaPagamento() verificaPagamento()
instanciada contaPaga
realizaCobranca() darBaixaEmConta()
do/atualizaValor() [pagamentoRecebido]
pedidos pendentes
adicionaNoEstoque()
pedidoDeProduto() [produtoRecebido]
[NOTalgumPedidoPendente]
[algumPedidoPendente]
)
os(
id
ed
zP
fa
instanciada produtos em estoque
adicionaNoEstoque()
pedidoDeProduto() [produtoRecebido]
AtorCliente
AtorFuncionario AtorFornecedor
solicitaEvento(data) solicitaEvento(data)
funcionarioResponsavel = solicitaEvento(data)
funcionarioResponsavel = solicitaEvento()
funcionarioResponsavel = requisicaoEvento()
funcionarioResponsavel = encaminhaRequisicao(funcionario)
requisicaoEvento()
respondeRequisicao(resposta)
locais= checaLocais(data)
temas = checaTemas()
pacotes = checaPacotes()
servicos = checaServicos(data)
enviaOpcoes(locais, temas, pacotes, servicos)
alt
encaminhaPedido(produto, quantidade)
se produtoRecebido = null, [produto em produtosSemEstoqueSuficiente]
atendidos = false e há um break encaminhaPedido(produto, quantidade)
nesse loop
respondePedido(produto) [NULL se não atendido]
adicionaNoEstoque(produtoRecebido)
alt
cancelaPedidos(produtos)
[NOT atendidos]
cancelaCadastroEvento()
notifiicaCancelamentoFuncionario()
notificaCancelamentoCliente()
[else]
removeDoEstoque(produtos)
ref
[produtosSemEstoqueSuficiente IS NULL]
removeDoEstoque(produtos)
ref
AtorFornecedor
reservaLocal(data)
geraConta()
enviaContrato(contrato)
enviaContrato(contrato)
: DispatcherServlet funcionario: Funcionario empresa: EmpresaEventos agenda: AgendaEventos evento: Evento conta: Conta cliente: Cliente
AtorFuncionario
AtorCliente
checaContas()
checaContas()
checaContas()
checaContas()
checaContas()
checaConta()
pago = verificaPagamento()
encaminhaCobranca(valor, prazo)
realizaCobranca(valor, prazo)
respondeCobranca(Boolean pago)
opt
[pagamentoRecebido]
realizaPagamento(valor)
darBaixaEmConta()
Algoritmo de Método — solicitaEvento (DispatcherServlet) Algoritmo de Método — enviaDetalhes (DispatcherServlet) Algoritmo de Método — cadastraEvento (EmpresaEventos) Algoritmo de Método — checaEstoque (Estoque) Algoritmo de Método — fazPedidos (Estoque) Algoritmo de Método — checaConta (Conta)
empresa.enviaDetalhes(cliente,
tema, pacotes, desejaServico,
cliente.solicitaEvento(data) servico, local, data) pacote.extraiProdutos(pacotes)
estoque.foraDeEstoque(produtos)
[else] estoque.pedidoDeProduto(produto,
[else] quantidade) conta.verificaPagamento()
Parâmetro repor identificado
como necessário para ja
estoque.checaEstoque(produtos,
mandar a ordem de compra método para atualizar o valor
[funcionarioResponsavel NOT null] repor = true) [else]
caso não tenha os produtos caso a conta esteja em atraso
necessários
[evento IS null]
<<if>>
[produtosSemEstoqueSuficiente NOT null AND repor = true]
[else]
estoque.removeDoEstoque(produtos)
[algumPedidoPendente]
objDS.pedeOpcoes(data)
conta.realizaCobranca(valor, prazo)
[NOT atendidos]
[produtosSemEstoqueSuficiente IS null]
[else]
[else]
<<if>>
estoque.cancelaPedidos( [else]
produtosSemEstoqueSuficiente) [else]
[desejaServicos]
[pagamentoRecebido]
<<if>>
objDS.enviaOpcoes(locais,
temas, pacotes, servicos)
local.reservaLocal(data)
agenda.cadastrarEvento(cliente,
tema, pacotes, desejaServico,
servicos, local, data)
Evento
Local
- <<collection>> pacotesComprados: PacoteProduto
- endereco: String Conta
- tema: TemaEvento
- <<collection>> reservas: Date - valor: Float
+ geraConta(): Conta
- pago: Boolean
RelatorioFinanceiro AgendaEventos
+ reservaLocal(data): void + emiteContrato(pacotes, servicos, cliente): Contrato
- dataVencimento: Date
- <<collection>> contasPagas: Conta - <<collection>> eventos: Evento
+ cadastrarEvento(cliente, tema, pacotes,
desejaServico, servicos, local, data) : Evento - dataPagamento: Date
- <<collection>> contasNaoPagas: Conta
+ cadastrarEvento(cliente,
- <<collection>> produtosComprados: ProdutoCompra tema, pacotes, desejaServico, + checaContas() : void + darBaixaEmConta() : void
servicos, local, data) : Evento
+ realizaCobranca(valor, prazo) : boolean
- contrato: Contrato
+ checaContas() : void
+ verificaPagamento() : boolean
- conta: Conta
EmpresaEventos
+ atualizaValor() : void
- local: Local
- <<collection>> funcionarios: Funcionario
+ checaConta() : void
- data: Date
- <<collection>> pacotesDeProdutos: PacoteProduto
- <<collection>> servicosContratados: ServicoOfertado
- nroDocumento: String
+ contrataServicos(servicos, data) : void
+ cadastrarEvento(cliente, tema,
pacotes, desejaServico, servico, local, data) : Evento
+ checaContas() : void
+ checaContas(): void
Cliente Funcionário Fornecedor ProdutoVenda
- algumPedidoPendente: Boolean
+ encaminhaCobranca(valor, prazo): void
- <<collection>> eventos: Evento - cargo: String - <<collection>> servicos: - produto: Produto
Servico + foraDeEstoque(produtos): <<collection>> + respondeCobranca(pago): void
- salario: Float ProdutoVenda - quantidade: Int
+ solicitaEvento(data) : - nomeFantasia: String
Funcionario - horarioTrabalho: String + checaEstoque(produtos, repor): <<collection>>
- telefoneContato: String ProdutoEstoque
+ realizaPagamento(valor) : void
+ checaContas() : void
- emailContato: String + removeDoEstoque(produtos): void
+ enviaDetalhes(cliente, tema, + enviaDetalhes(cliente,
pacotes, desejaServico, servico, tema, pacotes, + cancelaPedidos(produtos): void
+ pedidoDeProduto(produto,
local, data) : void desejaServico, servico, local, quantidade): <<collection>>
data) : Evento + adicionaNoEstoque(produto): void
ProdutoEstoque
+ fazPedidos(produtos): boolean
+ contrataServicos(servicos,
data): void
ProdutoCompra
ProdutoEstoque
- fornecedor: Fornecedor
- produto: Produto
- produto: Produto
- quantidade: Int
- quantidade: Int
- taxaLucro: Float
- pendente: Boolean
Produto
- nome: String
- valor: Float
ServicoOfertado
Servico
- servico: Servico
- nome: String
- cargo: String
- valor: Float
- fornecedor:
Fornecedor