Sistema Locadora
Pessoal me ajudem.
Sou iniciante em Delphi e recentemente fiz um treinamento Delphi 6 acessando Interbase, SQL Server e Oracle.
Consegui um cliente e onde o mesmo me solicitou que eu desenvolve-se um sistema de video locadora.
O problema é que estou com dúvida de como fazer a modelagem de dados na parte de locação e devolução de Fitas / DVD, ou seja, tenho todas as tabelas montadas menos a de Locação e Devolução onde não tenho idéia de como fazer as tabela e seu relacionamento.
Por favor quem já passou por esse problema, me ajude porque tenho um prazo para entregar e o que pensei que fosse facil, se tornou-se complicado ainda mais para quem não tem experiência como no meu caso.
[]s
Bestbrain
Sou iniciante em Delphi e recentemente fiz um treinamento Delphi 6 acessando Interbase, SQL Server e Oracle.
Consegui um cliente e onde o mesmo me solicitou que eu desenvolve-se um sistema de video locadora.
O problema é que estou com dúvida de como fazer a modelagem de dados na parte de locação e devolução de Fitas / DVD, ou seja, tenho todas as tabelas montadas menos a de Locação e Devolução onde não tenho idéia de como fazer as tabela e seu relacionamento.
Por favor quem já passou por esse problema, me ajude porque tenho um prazo para entregar e o que pensei que fosse facil, se tornou-se complicado ainda mais para quem não tem experiência como no meu caso.
[]s
Bestbrain
Bestbrain
Curtidas 0
Respostas
Sandrad
06/05/2003
Que tal algo assim:
CodCli
CodFita
DatLocacao
DatparaDevolucao
DatDevolvido
Não sei se voce está fazendo assim, mas sugiro que crie uma table para títulos e uma para as cópias, entedeu? No cadastro de títulos, você coloca as informações comuns a todas as copias, como título, gêneros, atores, etc. e no cadastro de cópias, as informações variáveis, como idioma (dublado,legendado) e mídia (VHS, DVD).
Espero ter ajudado.
Qq coisa, estou sempre por aqui.
CodCli
CodFita
DatLocacao
DatparaDevolucao
DatDevolvido
Não sei se voce está fazendo assim, mas sugiro que crie uma table para títulos e uma para as cópias, entedeu? No cadastro de títulos, você coloca as informações comuns a todas as copias, como título, gêneros, atores, etc. e no cadastro de cópias, as informações variáveis, como idioma (dublado,legendado) e mídia (VHS, DVD).
Espero ter ajudado.
Qq coisa, estou sempre por aqui.
GOSTEI 0
Crash
06/05/2003
Kra é meio complexo mais da pra faze. eu tenho uma pronta:
/* Table: LOCACAO, Owner: SYSDBA */
CREATE TABLE LOCACAO
(
CODINTEGER,
CLIENTEINTEGER,
DATATIMESTAMP,
HORAVARCHAR(8),
FUNCVARCHAR(5),
AUTORIZADOVARCHAR(10),
SALDO_ANTNUMERIC(15, 2),
PAG_ANTNUMERIC(15, 2),
QTD_TITULOSSMALLINT
);
/* Table: ITENS_LOCACAO, Owner: SYSDBA */
CREATE TABLE ITENS_LOCACAO
(
COD_LOCACAOINTEGER,
CLIENTEINTEGER,
COD_TITULOINTEGER,
SITUACAOVARCHAR(1),
PROMOCAOVARCHAR(1),
PRECONUMERIC(15, 2)
);
/* Table: LOCADAS, Owner: SYSDBA */
CREATE TABLE LOCADAS
(
COD_CLIENTEINTEGER,
COD_TITULOINTEGER,
DATA_LOCTIMESTAMP,
HORA_LOCVARCHAR(5),
FUNC_LOCVARCHAR(3),
DATA_ENTTIMESTAMP,
DATA_DEVTIMESTAMP,
HORA_DEVVARCHAR(5),
FUNC_DEVVARCHAR(3),
PROMOCAOVARCHAR(1),
PRECONUMERIC(15, 2),
AUTORIZADOINTEGER,
DOCVARCHAR(8)
);
No caso voce nao cria uma tabela de devolucao, mais sim uma tabela de itens locados. para facilitar futuramente por exemplo voce extrair da tabela o histórico do cliente.
É bom vc levar em conta que:
*Pode haver cancelamento da locacao;
*Se vc nao gravar informacoes na tabela de itens por exemplo e se o preco da locacao do titulo aumentar, o cliente deve pagar o valor anterior se ele estiver com o título antes da modificacao;
Qualquer coisa eu te passo a analise que eu fiz
flws
/* Table: LOCACAO, Owner: SYSDBA */
CREATE TABLE LOCACAO
(
CODINTEGER,
CLIENTEINTEGER,
DATATIMESTAMP,
HORAVARCHAR(8),
FUNCVARCHAR(5),
AUTORIZADOVARCHAR(10),
SALDO_ANTNUMERIC(15, 2),
PAG_ANTNUMERIC(15, 2),
QTD_TITULOSSMALLINT
);
/* Table: ITENS_LOCACAO, Owner: SYSDBA */
CREATE TABLE ITENS_LOCACAO
(
COD_LOCACAOINTEGER,
CLIENTEINTEGER,
COD_TITULOINTEGER,
SITUACAOVARCHAR(1),
PROMOCAOVARCHAR(1),
PRECONUMERIC(15, 2)
);
/* Table: LOCADAS, Owner: SYSDBA */
CREATE TABLE LOCADAS
(
COD_CLIENTEINTEGER,
COD_TITULOINTEGER,
DATA_LOCTIMESTAMP,
HORA_LOCVARCHAR(5),
FUNC_LOCVARCHAR(3),
DATA_ENTTIMESTAMP,
DATA_DEVTIMESTAMP,
HORA_DEVVARCHAR(5),
FUNC_DEVVARCHAR(3),
PROMOCAOVARCHAR(1),
PRECONUMERIC(15, 2),
AUTORIZADOINTEGER,
DOCVARCHAR(8)
);
No caso voce nao cria uma tabela de devolucao, mais sim uma tabela de itens locados. para facilitar futuramente por exemplo voce extrair da tabela o histórico do cliente.
É bom vc levar em conta que:
*Pode haver cancelamento da locacao;
*Se vc nao gravar informacoes na tabela de itens por exemplo e se o preco da locacao do titulo aumentar, o cliente deve pagar o valor anterior se ele estiver com o título antes da modificacao;
Qualquer coisa eu te passo a analise que eu fiz
flws
GOSTEI 0
Vinciguerra
06/05/2003
A colega sandradaimaru esta certa, porém eu definiria a tabela da seguinte forma:
NUMERO_EMPRESTIMO
COD_CLIENTE
NOME
DATA_RETIRADA
DATA_PARA_DEVOLUCAO
DATA_DEVOLUCAO
COD_FILME
VALOR
PAGO (SIM | NAO)
MULTA_ATRASO
JUROS
Já no form de locações você pode fazer inúmeras coisas como:
-mostrar todas as locações;
-mostrar as locações de um cliente;
-locações em aberto (não devolvidas)
-locações pagas e não pagas do cliente ou total;
-etc - use a imaginação.
Espero que tenha conseguido ajudar um pouco.
Mais dúvidas, mande e-mail.
NUMERO_EMPRESTIMO
COD_CLIENTE
NOME
DATA_RETIRADA
DATA_PARA_DEVOLUCAO
DATA_DEVOLUCAO
COD_FILME
VALOR
PAGO (SIM | NAO)
MULTA_ATRASO
JUROS
Já no form de locações você pode fazer inúmeras coisas como:
-mostrar todas as locações;
-mostrar as locações de um cliente;
-locações em aberto (não devolvidas)
-locações pagas e não pagas do cliente ou total;
-etc - use a imaginação.
Espero que tenha conseguido ajudar um pouco.
Mais dúvidas, mande e-mail.
GOSTEI 0
Crash
06/05/2003
ha esqueci.
a devolução voce faz da seguinte forma:
abre a tabela de itens fazendo o filtro pelo cliente, insere os dados dos títulos devolvidos na tabela de locadas, e exclui o registro...
foi assim que eu fiz se voce encontrar uma maneira melhor...
a devolução voce faz da seguinte forma:
abre a tabela de itens fazendo o filtro pelo cliente, insere os dados dos títulos devolvidos na tabela de locadas, e exclui o registro...
foi assim que eu fiz se voce encontrar uma maneira melhor...
GOSTEI 0
Sandrad
06/05/2003
Você também pode trabalhar com duas tables, mestre e detalhe:
Master:
NumLoc,+,*
CodCli,I
DatLocacao,D
ValorLoc,$ **
Detail:
NumLoc,I
CodFita,I
DatparaDevolucao,D
DatDevolvido,D
Desconto,N
Juros,N
ValTot,N (Vl.Locacao - Desconto + Juros)
DtPago
** Quanto ao valor da locação, acho que é muito relativo. Pessoalmente, prefiro usar o campo ValorLoc da master table apenas como informativo. Ele trás a soma do campo Valor da detail table (você pode usar SQL para fazer isso). Muitas vezes o cliente (da locadora) pega fita em grupo e prefere pagar somente algumas fitas na locação, por exemplo, e o restante depois.
Nesta hipótese, acho interessante criar um controle de crédito. Por exemplo: A locação total de 3 fitas ficou em 14,00. O cliente quer deixar 10,00. Você informa o valor pago, o sistema liquida a locação de duas fitas (8,00) e joga 2,00 como crédito. No próximo pagamento que ele fizer, você soma os créditos disponíveis.
Master:
NumLoc,+,*
CodCli,I
DatLocacao,D
ValorLoc,$ **
Detail:
NumLoc,I
CodFita,I
DatparaDevolucao,D
DatDevolvido,D
Desconto,N
Juros,N
ValTot,N (Vl.Locacao - Desconto + Juros)
DtPago
** Quanto ao valor da locação, acho que é muito relativo. Pessoalmente, prefiro usar o campo ValorLoc da master table apenas como informativo. Ele trás a soma do campo Valor da detail table (você pode usar SQL para fazer isso). Muitas vezes o cliente (da locadora) pega fita em grupo e prefere pagar somente algumas fitas na locação, por exemplo, e o restante depois.
Nesta hipótese, acho interessante criar um controle de crédito. Por exemplo: A locação total de 3 fitas ficou em 14,00. O cliente quer deixar 10,00. Você informa o valor pago, o sistema liquida a locação de duas fitas (8,00) e joga 2,00 como crédito. No próximo pagamento que ele fizer, você soma os créditos disponíveis.
GOSTEI 0