Modelagem de fluxo de caixa para restaurante
Pessoal, boa tarde!
Estou modelando um sistema para restaurantes. Já tenho algumas tabelas prontas e muito provavelmente terei que modelar novas tabelas ou mudar a regra de negócio. Porém, no meu entendimento, a relação de todas as vendas com o caixa será o ponto crucial do sistema. Desta forma me encontro na seguinte situação.
Sei que em um caixa, cada venda pode ter vários itens. Ao final do lançamento dos itens, a subtração do valor recebido - total da compra - troco, deve ser acrescido ao saldo do caixa. Porém, embora tenha este conceito em mente, não tenho idéia de como modelar este caixa.
Na minha regra de negócio, o sistema cadastras as vendas na tabela "venda" e existem 3 tipos de venda: frente de caixa, internet e por comandas(mesas do restaurante).
Por favor, se alguém puder me ajudar, só preciso de uma orientação de como prosseguir para a modelagem deste caixa. O sistema em si será em java.
Críticas e sujestões sobre a modelagem geral são bem vindas!
Segue abaixo o código que já tenho.
Obrigado!
Estou modelando um sistema para restaurantes. Já tenho algumas tabelas prontas e muito provavelmente terei que modelar novas tabelas ou mudar a regra de negócio. Porém, no meu entendimento, a relação de todas as vendas com o caixa será o ponto crucial do sistema. Desta forma me encontro na seguinte situação.
Sei que em um caixa, cada venda pode ter vários itens. Ao final do lançamento dos itens, a subtração do valor recebido - total da compra - troco, deve ser acrescido ao saldo do caixa. Porém, embora tenha este conceito em mente, não tenho idéia de como modelar este caixa.
Na minha regra de negócio, o sistema cadastras as vendas na tabela "venda" e existem 3 tipos de venda: frente de caixa, internet e por comandas(mesas do restaurante).
Por favor, se alguém puder me ajudar, só preciso de uma orientação de como prosseguir para a modelagem deste caixa. O sistema em si será em java.
Críticas e sujestões sobre a modelagem geral são bem vindas!
Segue abaixo o código que já tenho.
Obrigado!
/*TABELA CAIXA*/ CREATE TABLE caixa( cod_caixa INT(11) AUTO_INCREMENT PRIMARY KEY, data_abertura TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, caixa_inicial DECIMAL(10,2) NOT NULL, caixa_final DECIMAL(10,2) NOT NULL, data_fechamento TIMESTAMP NOT NULL, cod_usuario INT(11) NOT NULL, saldo double NOT NULL, status BOOL NOT NULL ) ENGINE = InnoDB; /*TABELA CATEGORIA*/ CREATE TABLE categoria( cod_categoria TINYINT(3) AUTO_INCREMENT PRIMARY KEY, nome VARCHAR(40) NOT NULL, cod_categoria_pai TINYINT(3) ) ENGINE = InnoDB; /*TABELA PRODUTO*/ CREATE TABLE produto( cod_produto MEDIUMINT(4) AUTO_INCREMENT PRIMARY KEY, nome VARCHAR(50) NOT NULL, cod_categoria TINYINT(3) NOT NULL, lote VARCHAR(11) DEFAULT NULL, preco_venda DECIMAL(10,2) NOT NULL, estoque_minimo DOUBLE NOT NULL, estoque_maximo DOUBLE NOT NULL, ultima_compra TIMESTAMP ) ENGINE = InnoDB; /*TABELA ENTRADA_PRODUTO*/ CREATE TABLE entrada_produto( cod_entrada INT(11) AUTO_INCREMENT PRIMARY KEY, cod_produto MEDIUMINT(4) NOT NULL, quantidade DOUBLE NOT NULL, cod_motivo CHAR(1) NOT NULL, data TIMESTAMP DEFAULT CURRENT_TIMESTAMP, cod_usuario INT(11) NOT NULL ) ENGINE = InnoDB; /*TABELA SAIDA_PRODUTO*/ CREATE TABLE saida_produto( cod_saida INT(11) AUTO_INCREMENT PRIMARY KEY, cod_produto MEDIUMINT(4) NOT NULL, quantidade DOUBLE NOT NULL, cod_motivo CHAR(1) NOT NULL, data TIMESTAMP DEFAULT CURRENT_TIMESTAMP, cod_usuario INT(11) NOT NULL ) ENGINE = InnoDB; /*TABELA MOTIVO*/ CREATE TABLE motivo( cod_motivo TINYINT(2) NOT NULL PRIMARY KEY, nome VARCHAR(30) ) ENGINE = InnoDB; /*TABELA ESTOQUE*/ CREATE TABLE estoque( cod_produto MEDIUMINT(4) PRIMARY KEY, quantidade double NOT NULL ) ENGINE = InnoDB; /*TABELA PEDIDO*/ CREATE TABLE pedido( cod_pedido INT(11) AUTO_INCREMENT PRIMARY KEY, cod_cliente INT(11) NOT NULL, cod_forma_pagamento TINYINT NOT NULL, cod_endereco_cobranca INT(11) NOT NULL, cod_endereco_entrega INT(11) NOT NULL, data TIMESTAMP DEFAULT CURRENT_TIMESTAMP, status CHAR(1) DEFAULT ''1'' ) ENGINE = InnoDB; /*TABELA PEDIDO_ITEM*/ CREATE TABLE pedido_item( cod_pedido INT(11) NOT NULL, cod_produto MEDIUMINT(4) NOT NULL, quantidade double NOT NULL, PRIMARY KEY(cod_pedido, cod_produto) ) ENGINE = InnoDB; /*TABELA FORMA_PAGAMENTO*/ CREATE TABLE forma_pagamento( cod_forma_pagamento TINYINT NOT NULL PRIMARY KEY, nome VARCHAR(30) NOT NULL ) ENGINE = InnoDB; /*TABELA ENTREGA*/ CREATE TABLE entrega( cod_entrega INT(11) AUTO_INCREMENT PRIMARY KEY, cod_pedido INT(11) NOT NULL, data TIMESTAMP, status CHAR(1) NOT NULL ) ENGINE = InnoDB; /*TABELA MESA*/ CREATE TABLE mesa( cod_mesa TINYINT(3) AUTO_INCREMENT PRIMARY KEY, status CHAR(1) DEFAULT ''0'', cod_usuario INT(11) NULL ) ENGINE = InnoDB; /*TABELA COMANDA*/ CREATE TABLE comanda( cod_comanda CHAR(7) NOT NULL PRIMARY KEY, cod_mesa TINYINT(3) NOT NULL, hora_abertura TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, cod_usuario INT(11) NOT NULL ) ENGINE = InnoDB; /*TABELA COMANDA_ITEM*/ CREATE TABLE comanda_item( cod_comanda CHAR(7) NOT NULL, cod_item TINYINT(2) NOT NULL PRIMARY KEY, cod_produto MEDIUMINT(4) NOT NULL, quatidade DOUBLE NOT NULL, hora_pedido TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, cod_usuario INT(11) NOT NULL, PRIMARY KEY(cod_comanda, cod_produto) ) ENGINE = InnoDB; /*TABLE TIPO_VENDA*/ CREATE TABLE tipo_venda( cod_tipo_venda TINYINT NOT NULL PRIMARY KEY, nome VARCHAR(20) ) ENGINE = InnoDB; /*TABELA VENDA*/ CREATE TABLE venda( cod_venda INT(11) AUTO_INCREMENT PRIMARY KEY, cod_tipo_venda TINYINT NOT NULL, cod_produto MEDIUMINT(4) NOT NULL, quantidade DOUBLE NOT NULL, data TIMESTAMP NOT NULL, total DECIMAL(10,2) NOT NULL, cod_usuario INT(11) NOT NULL ) ENGINE = InnoDB; /*TABELA COMPRA*/ CREATE TABLE compra( cod_compra INT(11) AUTO_INCREMENT PRIMARY KEY, cod_produto MEDIUMINT(4) NOT NULL, quantidade DOUBLE NOT NULL, data TIMESTAMP NOT NULL, total DECIMAL(10,2) NOT NULL, cod_usuario INT(11) NOT NULL ) ENGINE = InnoDB; /*TABELA USUARIO*/ CREATE TABLE usuario( cod_usuario INT(11) AUTO_INCREMENT PRIMARY KEY, login VARCHAR(20) NOT NULL, senha VARCHAR(100) NOT NULL, cod_tipo_proprietario CHAR(1) NOT NULL, cod_proprietario INT(11) NOT NULL ) ENGINE = InnoDB; ALTER TABLE produto ADD FOREIGN KEY(cod_categoria) REFERENCES categoria(cod_categoria); ALTER TABLE categoria ADD FOREIGN KEY(cod_categoria_pai) REFERENCES categoria(cod_categoria); ALTER TABLE cliente ADD FOREIGN KEY(cod_tipo_proprietario) REFERENCES tipo_proprietario(cod_tipo_proprietario); ALTER TABLE usuario ADD FOREIGN KEY(cod_tipo_proprietario) REFERENCES tipo_proprietario(cod_tipo_proprietario); ALTER TABLE entrada_produto ADD FOREIGN KEY(cod_produto) REFERENCES produto(cod_produto); ALTER TABLE entrada_produto ADD FOREIGN KEY(cod_motivo) REFERENCES motivo(cod_motivo); ALTER TABLE entrada_produto ADD FOREIGN KEY(cod_usuario) REFERENCES usuario(cod_usuario); ALTER TABLE saida_produto ADD FOREIGN KEY(cod_produto) REFERENCES produto(cod_produto); ALTER TABLE saida_produto ADD FOREIGN KEY(cod_motivo) REFERENCES motivo(cod_motivo); ALTER TABLE saida_produto ADD FOREIGN KEY(cod_usuario) REFERENCES usuario(cod_usuario); ALTER TABLE pedido ADD FOREIGN KEY(cod_cliente) REFERENCES cliente(cod_cliente); ALTER TABLE pedido ADD FOREIGN KEY(cod_forma_pagamento) REFERENCES forma_pagamento(cod_forma_pagamento); ALTER TABLE pedido ADD FOREIGN KEY(cod_endereco_cobranca) REFERENCES endereco(cod_endereco); ALTER TABLE pedido ADD FOREIGN KEY(cod_endereco_entrega) REFERENCES endereco(cod_endereco); ALTER TABLE pedido_item ADD FOREIGN KEY(cod_produto) REFERENCES produto(cod_produto); ALTER TABLE estoque ADD FOREIGN KEY(cod_produto) REFERENCES produto(produto); ALTER TABLE entrega ADD FOREIGN KEY(cod_pedido) REFERENCES pedido(cod_pedido); ALTER TABLE venda ADD FOREIGN KEY(cod_tipo_venda) REFERENCES tipo_venda(cod_tipo_venda); ALTER TABLE venda ADD FOREIGN KEY(cod_produto) REFERENCES produto(cod_produto); ALTER TABLE venda ADD FOREIGN KEY(cod_usuario) REFERENCES usuario(cod_usuario); ALTER TABLE compra ADD FOREIGN KEY(cod_produto) REFERENCES produto(cod_produto); ALTER TABLE compra ADD FOREIGN KEY(cod_usuario) REFERENCES usuario(cod_usuario); ALTER TABLE mesa ADD FOREIGN KEY(cod_usuario) REFERENCES usuario(cod_usuario); ALTER TABLE comanda ADD FOREIGN KEY(cod_mesa) REFERENCES mesa(cod_mesa); ALTER TABLE comanda ADD FOREIGN KEY(cod_usuario) REFERENCES usuario(cod_usuario); ALTER TABLE comanda_item ADD FOREIGN KEY(cod_comanda) REFERENCES comanda(cod_comanda); ALTER TABLE comanda_item ADD FOREIGN KEY(cod_produto) REFERENCES produto(cod_produto); ALTER TABLE comanda_item ADD FOREIGN KEY(cod_usuario) REFERENCES usuario(cod_usuario); ALTER TABLE caixa ADD FOREIGN KEY(cod_usuario) REFERENCES usuario(cod_usuario);
Paulo
Curtidas 0