GARANTIR DESCONTO

Fórum BD que dá cria... #57951

10/03/2007

0

Não sei se podem me ajudar. Tenho um bd funcionando em um supermercado, e ele cresce de uma hora pra outra. Por exemplo ontem, extrai o metadata e recriei o banco. Ele ficou com 27mb. A noite no final do expediente já estava com 130mb. Um detalhe: se eu fizer backup com garbage collection, ele inicia e trava na tabela de produtos. Mas se fizer sem garbage collection ele faz o backup, que ao ser restaurado devolve o tamanho de 27mb, 28mb. Isso é normal?



Por dia são inseridos uns 5.000 registros na tabela ITENSVENDAS e uns 500 na tabela VENDAS. Não entendo porque trava justamente na PRODUTOS. Ontem desativei a baixa de produtos no estoque, isto é, os PDVS venderam sem dar baixa, para testar, mas tudo se repetiu.



Se puderem me dar essa força agradeço.



Edilio Marques


Earmarques

Earmarques

Responder

Posts

10/03/2007

Sremulador

Amigo, isso não e normal mesmo, por exemplo, tenho, um sistema que são inserido aproximadamente, 120.000 registros dia e não cresce desta forma, se vc pudesse postar a estrutura, com charset....


Responder

Gostei + 0

10/03/2007

Earmarques

Segue o script metadados do banco, se puder ajudar agradeço.


/******************************************************************************/
/**** Generated by IBExpert 2007.02.22 10/3/2007 10:18:28 ****/
/******************************************************************************/

SET SQL DIALECT 3;

SET NAMES NONE;

CREATE DATABASE ´C:\WINDOWS\WMPRFPTA.PRX´
USER ´SYSDBA´ PASSWORD ´masterkey´
PAGE_SIZE 8192
DEFAULT CHARACTER SET NONE;



/******************************************************************************/
/**** Domains ****/
/******************************************************************************/

CREATE DOMAIN CAIXA_DESCRICAO AS
VARCHAR(40)
NOT NULL;



/******************************************************************************/
/**** Generators ****/
/******************************************************************************/

CREATE GENERATOR GEN_FREQUENCIA;
SET GENERATOR GEN_FREQUENCIA TO 0;

CREATE GENERATOR GN_ACESSOS;
SET GENERATOR GN_ACESSOS TO 12;

CREATE GENERATOR GN_ALTERACAO;
SET GENERATOR GN_ALTERACAO TO 0;

CREATE GENERATOR GN_CAIXA;
SET GENERATOR GN_CAIXA TO 23337;

CREATE GENERATOR GN_CATEGORIA;
SET GENERATOR GN_CATEGORIA TO 2;

CREATE GENERATOR GN_CLIENTE;
SET GENERATOR GN_CLIENTE TO 2;

CREATE GENERATOR GN_CONTA;
SET GENERATOR GN_CONTA TO 1;

CREATE GENERATOR GN_CONTROLE;
SET GENERATOR GN_CONTROLE TO 49;

CREATE GENERATOR GN_CREDIARIO;
SET GENERATOR GN_CREDIARIO TO 0;

CREATE GENERATOR GN_ENTRADA;
SET GENERATOR GN_ENTRADA TO 5;

CREATE GENERATOR GN_FORNECEDOR;
SET GENERATOR GN_FORNECEDOR TO 0;

CREATE GENERATOR GN_FUNCIONARIO;
SET GENERATOR GN_FUNCIONARIO TO 16;

CREATE GENERATOR GN_HISTORICOVENDA;
SET GENERATOR GN_HISTORICOVENDA TO 0;

CREATE GENERATOR GN_IVENDAS;
SET GENERATOR GN_IVENDAS TO 118964;

CREATE GENERATOR GN_MARCA;
SET GENERATOR GN_MARCA TO 1;

CREATE GENERATOR GN_NOTA;
SET GENERATOR GN_NOTA TO 3;

CREATE GENERATOR GN_ORDEM_SERVICOS;
SET GENERATOR GN_ORDEM_SERVICOS TO 0;

CREATE GENERATOR GN_PARAMETROS;
SET GENERATOR GN_PARAMETROS TO 3;

CREATE GENERATOR GN_PRODUTO;
SET GENERATOR GN_PRODUTO TO 3990;

CREATE GENERATOR GN_SUBCATEGORIA;
SET GENERATOR GN_SUBCATEGORIA TO 3;

CREATE GENERATOR GN_VENDA;
SET GENERATOR GN_VENDA TO 23771;



SET TERM ^ ;



/******************************************************************************/
/**** Stored Procedures ****/
/******************************************************************************/

CREATE PROCEDURE SP_ALTERA_ESTOQUE (
VAR_CODBARRAS VARCHAR(20),
VAR_QUANTIDADE NUMERIC(15,2))
AS
BEGIN
EXIT;
END^


CREATE PROCEDURE SP_CONFIRMA_VENDA (
IDVENDA INTEGER)
AS
BEGIN
EXIT;
END^


CREATE PROCEDURE SP_ENTRADASPENDENTES (
IDNOTA INTEGER,
CONFIRMA SMALLINT)
RETURNS (
IDENTRADA INTEGER,
PRODUTO VARCHAR(40),
QUANTIDADE DOUBLE PRECISION,
CUSTO NUMERIC(8,2),
LUCRO DOUBLE PRECISION,
VENDA DOUBLE PRECISION)
AS
BEGIN
EXIT;
END^


CREATE PROCEDURE SP_INADIMPLENTES (
IDMICRO VARCHAR(10))
RETURNS (
IDCLIENTE INTEGER,
NOME VARCHAR(40),
TEL_RESIDENCIAL VARCHAR(14),
TEL_CELULAR VARCHAR(14),
ATRASO_DESDE DATE,
MONTANTE NUMERIC(15,3))
AS
BEGIN
EXIT;
END^


CREATE PROCEDURE SP_INICIA_SISTEMA (
MICRO_SOLICITANTE VARCHAR(10))
AS
BEGIN
EXIT;
END^


CREATE PROCEDURE SP_MAIS_VENDIDOS (
DTINICIAL DATE,
DTFINAL DATE)
RETURNS (
CODBARRAS VARCHAR(20),
DESCRICAO VARCHAR(40),
QUANTIDADE NUMERIC(8,2),
LUCRO NUMERIC(15,2),
VENDAS INTEGER,
VALOR_VENDAS NUMERIC(15,2))
AS
BEGIN
EXIT;
END^


CREATE PROCEDURE SP_MOSTRA_ALTERACOES_VENDA (
IDVENDA INTEGER)
RETURNS (
DATA_MOD DATE,
TIPO INTEGER,
CODBARRAS VARCHAR(20),
DESCRICAO VARCHAR(40),
QUANTIDADE NUMERIC(8,2),
SUBTOTAL NUMERIC(15,2),
VLR_UNITARIO NUMERIC(15,2))
AS
BEGIN
EXIT;
END^



SET TERM ; ^


/******************************************************************************/
/**** Tables ****/
/******************************************************************************/



CREATE TABLE TBLACESSOS (
IDACESSO INTEGER NOT NULL,
IDFUNCIONARIO INTEGER NOT NULL,
A1 SMALLINT DEFAULT 0 NOT NULL,
A2 SMALLINT DEFAULT 0 NOT NULL,
A3 SMALLINT DEFAULT 0 NOT NULL,
A4 SMALLINT DEFAULT 0 NOT NULL,
A5 SMALLINT DEFAULT 0 NOT NULL,
A6 SMALLINT DEFAULT 0 NOT NULL,
A7 SMALLINT DEFAULT 0 NOT NULL,
A8 SMALLINT DEFAULT 0 NOT NULL,
A9 SMALLINT DEFAULT 0 NOT NULL,
A10 SMALLINT DEFAULT 0 NOT NULL,
A11 SMALLINT DEFAULT 0 NOT NULL,
A12 SMALLINT DEFAULT 0 NOT NULL,
A13 SMALLINT DEFAULT 0 NOT NULL,
A14 SMALLINT DEFAULT 0 NOT NULL,
A15 SMALLINT DEFAULT 0 NOT NULL,
A16 SMALLINT DEFAULT 0 NOT NULL,
A17 SMALLINT DEFAULT 0 NOT NULL,
A18 SMALLINT DEFAULT 0 NOT NULL,
A19 SMALLINT DEFAULT 0 NOT NULL,
A20 SMALLINT DEFAULT 0 NOT NULL,
A21 SMALLINT DEFAULT 0 NOT NULL,
A22 SMALLINT DEFAULT 0 NOT NULL,
A23 SMALLINT DEFAULT 0 NOT NULL,
A24 SMALLINT DEFAULT 0 NOT NULL,
A25 SMALLINT DEFAULT 0 NOT NULL,
A26 SMALLINT DEFAULT 0 NOT NULL,
A27 SMALLINT DEFAULT 0 NOT NULL,
A28 SMALLINT DEFAULT 0 NOT NULL,
A29 SMALLINT DEFAULT 0 NOT NULL,
A30 SMALLINT DEFAULT 0 NOT NULL
);


CREATE TABLE TBLALTERACOES (
ID INTEGER NOT NULL,
DESCRICAO VARCHAR(15) NOT NULL,
DATAHORA TIMESTAMP NOT NULL,
USUARIO VARCHAR(10) NOT NULL,
EFETUADA SMALLINT DEFAULT 0,
MOEDA NUMERIC(8,2) DEFAULT 0,
INTEIRO SMALLINT DEFAULT 0,
COMANDO_SQL VARCHAR(300) DEFAULT 0
);


CREATE TABLE TBLAMORTIZACOESPARCELAS (
IDCREDIARIO INTEGER NOT NULL,
VALOR_PAGO NUMERIC(15,2),
DATA_HORA TIMESTAMP,
RESP_RECEBIMENTO VARCHAR(10),
VALOR_ATUAL NUMERIC(15,2),
VENCIMENTO DATE,
ATRASO COMPUTED BY (cast(DATA_HORA as DATE) - VENCIMENTO),
ACUMULADO_PAGO NUMERIC(15,2),
PERC_ACUMULADO_PAGO COMPUTED BY (((ACUMULADO_PAGO / VALOR_ATUAL) * 100))
);


CREATE TABLE TBLCAIXA (
IDCAIXA INTEGER NOT NULL,
DESCRICAO CAIXA_DESCRICAO NOT NULL,
IDVENDA INTEGER NOT NULL,
VALOR NUMERIC(8,2) NOT NULL,
DESCONTO NUMERIC(8,2) NOT NULL,
VALOR_PAGAR COMPUTED BY (VALOR - DESCONTO),
CARTAO_CREDITO NUMERIC(8,2) NOT NULL,
CARTAO_DEBITO NUMERIC(8,2) NOT NULL,
CONVENIO NUMERIC(8,2) NOT NULL,
DINHEIRO NUMERIC(8,2) NOT NULL,
CHEQUE NUMERIC(15,2) NOT NULL,
TROCO COMPUTED BY (((CARTAO_CREDITO + CARTAO_DEBITO + CONVENIO + CHEQUE + DINHEIRO) - VALOR_PAGAR)),
DT_ALT TIMESTAMP DEFAULT ´NOW´,
ALT_POR VARCHAR(10) NOT NULL,
DATAHORA TIMESTAMP DEFAULT ´NOW´
);


CREATE TABLE TBLCATEGORIAS (
IDCATEGORIA INTEGER NOT NULL,
CATEGORIA VARCHAR(20) NOT NULL
);


CREATE TABLE TBLCATORDEMSERVICOS (
OBJETO VARCHAR(30) NOT NULL
);


CREATE TABLE TBLCLIENTES (
IDCLIENTE INTEGER NOT NULL,
NIVEL_CADASTRO SMALLINT DEFAULT 0,
NOME VARCHAR(40) NOT NULL,
CPF VARCHAR(11),
RG VARCHAR(15),
DATA_NASCIMENTO DATE NOT NULL,
NATURALIDADE VARCHAR(40),
ESTADO_CIVIL VARCHAR(20),
TEL_COMERCIAL VARCHAR(14),
TEL_RESIDENCIAL VARCHAR(14),
TEL_CELULAR VARCHAR(14),
ENDERECO VARCHAR(40),
COMPLEMENTO VARCHAR(30),
BAIRRO VARCHAR(40),
CIDADE VARCHAR(40),
ESTADO CHAR(2),
CEP VARCHAR(9),
REFERENCIA_1 VARCHAR(30),
TEL_REFERENCIA1 VARCHAR(14),
REFERENCIA_2 VARCHAR(30),
TEL_REFERENCIA_2 VARCHAR(14),
CAD_POR VARCHAR(10) NOT NULL,
DATA_CAD TIMESTAMP NOT NULL,
ALT_POR VARCHAR(10),
DATA_ALT TIMESTAMP,
LIMITE NUMERIC(15,2) DEFAULT 0,
VOL_COMPRAS NUMERIC(15,2) DEFAULT 0,
ULTIMA_COMPRA TIMESTAMP,
NOME_CONTATO VARCHAR(30),
TIPO_RESIDENCIA VARCHAR(20),
RESIDE_DESDE DATE,
NOME_CONJUGE VARCHAR(40),
TEL_TRAB_CONJUGE VARCHAR(14),
RENDA_MENSAL NUMERIC(15,2),
RENDA_CONJUGE NUMERIC(15,2),
INDICADO_POR VARCHAR(40),
END_REFERENCIA1 VARCHAR(50),
END_REFERENCIA2 VARCHAR(50),
REL_REFERENCIA1 VARCHAR(20),
REL_REFERENCIA2 VARCHAR(20),
REF_COMERCIAL1 VARCHAR(30),
REF_COMERCIAL2 VARCHAR(30),
TEL_REF_COM1 VARCHAR(14),
TEL_REF_COM2 VARCHAR(14),
OBSERVACOES BLOB SUB_TYPE 1 SEGMENT SIZE 8192,
LOCAL_TRABALHO VARCHAR(50),
PAI VARCHAR(40),
MAE VARCHAR(40),
LOCAL_TRAB_CONJUGE VARCHAR(50)
);


CREATE TABLE TBLCONTAS (
IDCONTA INTEGER NOT NULL,
TIPO SMALLINT DEFAULT 0 NOT NULL,
DESCRICAO VARCHAR(30) NOT NULL,
CLIENTE VARCHAR(40),
DOCUMENTO VARCHAR(20) NOT NULL,
NRO_DOCUMENTO INTEGER NOT NULL,
VALOR NUMERIC(15,2) DEFAULT 0 NOT NULL,
VENCIMENTO DATE NOT NULL,
REALIZADA SMALLINT DEFAULT 0 NOT NULL,
CAD_POR VARCHAR(10) NOT NULL,
DT_CADASTRO TIMESTAMP NOT NULL,
REAL_POR VARCHAR(10),
DT_REALIZACAO TIMESTAMP,
OBSERVACOES VARCHAR(200)
);


CREATE TABLE TBLCONTROLE (
SEQUENCIA INTEGER NOT NULL,
USUARIO VARCHAR(40) NOT NULL,
DATAHORA TIMESTAMP,
DESCRICAO VARCHAR(500)
);


CREATE TABLE TBLCREDIARIO (
IDCREDIARIO INTEGER NOT NULL,
IDVENDA INTEGER NOT NULL,
NROPARCELA SMALLINT NOT NULL,
TOTALPARCELAS SMALLINT NOT NULL,
DATA_VENCIMENTO DATE NOT NULL,
VALOR_PARCELA NUMERIC(8,2) NOT NULL,
VALOR_PAGO NUMERIC(8,2) NOT NULL
);


CREATE TABLE TBLDOCUMENTOS (
TIPO_DOCUMENTO VARCHAR(20) NOT NULL
);


CREATE TABLE TBLENTRADAS (
IDENTRADA INTEGER NOT NULL,
IDNOTA INTEGER NOT NULL,
CODBARRAS VARCHAR(20) NOT NULL,
DESCRICAO VARCHAR(40) NOT NULL,
QUANTIDADE FLOAT NOT NULL,
VALOR NUMERIC(8,2) NOT NULL,
DESTINO VARCHAR(15) NOT NULL,
ALT_POR VARCHAR(10) NOT NULL,
DT_ALT DATE DEFAULT ´NOW´,
OK SMALLINT DEFAULT 0
);


CREATE TABLE TBLESTATISTICASVENDA (
IDVENDA INTEGER NOT NULL,
DATA_COMPRA TIMESTAMP,
VALOR_INICIAL NUMERIC(15,2),
VALOR_DEVOLUCOES NUMERIC(15,2),
VALOR_EFETIVO COMPUTED BY (valor_inicial + valor_devolucoes),
PERCENTUAL_EFICIENCIA COMPUTED BY ((valor_efetivo / valor_inicial) * 100),
VENCIMENTO_1 TIMESTAMP,
VENCIMENTO_2 TIMESTAMP,
ULTIMO_PAGAMENTO TIMESTAMP,
GIRO COMPUTED BY (cast(ultimo_pagamento as date) - cast(data_compra as date)),
ATRASO COMPUTED BY (cast(ULTIMO_PAGAMENTO as date) - cast(VENCIMENTO_2 as date))
);


CREATE TABLE TBLEXTRPONTO (
CODIGO_FUNCI INTEGER NOT NULL,
NOME_FUNCIONARIO VARCHAR(40),
DATA_JORNADA DATE NOT NULL,
HORAS SMALLINT,
MINUTOS SMALLINT,
STATUS VARCHAR(20)
);


CREATE TABLE TBLFORNECEDORES (
IDFORNECEDOR INTEGER NOT NULL,
FORNECEDOR VARCHAR(30) NOT NULL,
ENDERECO VARCHAR(40),
BAIRRO VARCHAR(30),
CIDADE VARCHAR(30),
UF CHAR(2),
FONE1 VARCHAR(14) NOT NULL,
FONE2 VARCHAR(14),
BANCO VARCHAR(30),
AGENCIA VARCHAR(10),
CONTA VARCHAR(20),
TIPO_CONTA VARCHAR(20),
FAVORECIDO VARCHAR(40),
CNPJ VARCHAR(20)
);


CREATE TABLE TBLFREQUENCIA (
CODIGO INTEGER NOT NULL,
CODIGO_FUNCI INTEGER NOT NULL,
NOME_FUNCIONARIO VARCHAR(40) NOT NULL,
TIPO VARCHAR(20) NOT NULL,
ENTRADA TIMESTAMP,
SAIDA TIMESTAMP,
AUTORIZANTE VARCHAR(40),
ENTROU SMALLINT,
SAIU SMALLINT,
DATA DATE NOT NULL,
STATUS VARCHAR(20)
);


CREATE TABLE TBLFUNCIONARIOS (
IDFUNCIONARIO INTEGER NOT NULL,
NOME VARCHAR(40) NOT NULL,
NASC DATE NOT NULL,
ENDERECO VARCHAR(40),
BAIRRO VARCHAR(30),
CIDADE VARCHAR(30),
UF CHAR(2),
FONE1 VARCHAR(14) NOT NULL,
FONE2 VARCHAR(14),
CPF CHAR(11),
SENHA VARCHAR(6) NOT NULL,
FUNCAO VARCHAR(20) NOT NULL,
LOGIN VARCHAR(10) NOT NULL,
COMISSAO FLOAT DEFAULT 0,
BLOQUEADO SMALLINT NOT NULL,
DATA_UACESSO TIMESTAMP,
FILIACAO_PAI VARCHAR(40),
FILIACAO_MAE VARCHAR(40),
DATA_ADMISSAO DATE NOT NULL,
COMISSAO_DE_VERDADE NUMERIC(15,2) NOT NULL
);


CREATE TABLE TBLHISTORICOERROS (
DESCRICAO VARCHAR(500),
DATAHORA TIMESTAMP,
USUARIO VARCHAR(20),
TERMINAL VARCHAR(20)
);


CREATE TABLE TBLHISTORICOVENDA (
IDHISTORICOVENDA INTEGER NOT NULL,
IDVENDA INTEGER NOT NULL,
EXCLUSAOOUINCLUSAO SMALLINT NOT NULL,
CODBARRAS VARCHAR(20) NOT NULL,
DESCRICAO VARCHAR(40) NOT NULL,
QUANTIDADE FLOAT NOT NULL,
VALOR_UNITARIO NUMERIC(15,2),
SUBTOTAL NUMERIC(15,2) NOT NULL,
DATAHORA TIMESTAMP NOT NULL,
RESP_HISTORICO VARCHAR(10) NOT NULL
);


CREATE TABLE TBLIVENDAS (
IDITEM INTEGER NOT NULL,
IDVENDA INTEGER NOT NULL,
CODBARRAS VARCHAR(20) NOT NULL,
DESCRICAO VARCHAR(40) NOT NULL,
QUANTIDADE FLOAT NOT NULL,
VALOR NUMERIC(8,2) NOT NULL,
CONFIRMADO SMALLINT DEFAULT 0 NOT NULL,
CUSTO_ATUAL NUMERIC(8,2) NOT NULL,
ALIQUOTA_ICMS VARCHAR(7) NOT NULL,
UNIDADE_VENDA VARCHAR(5) NOT NULL
);


CREATE TABLE TBLLOJAS (
CNPJ VARCHAR(20) NOT NULL,
FANTASIA VARCHAR(50) NOT NULL,
TELPRINCIPAL VARCHAR(14) NOT NULL,
TELSECUNDARIO VARCHAR(14),
INSCESTADUAL VARCHAR(15) NOT NULL,
ENDERECO VARCHAR(100) NOT NULL,
CIDADE VARCHAR(40) NOT NULL,
ESTADO VARCHAR(40) NOT NULL,
UF CHAR(2) NOT NULL,
CEP VARCHAR(9) NOT NULL,
FILIALNRO SMALLINT DEFAULT 0 NOT NULL,
JUROS_INADIMPLENCIA NUMERIC(8,2) NOT NULL,
VENDA_CREDIARIO SMALLINT NOT NULL,
JUROS_CREDIARIO NUMERIC(8,2) NOT NULL,
VENDA_PARCELADA SMALLINT NOT NULL,
ABRE_DOMINGO SMALLINT DEFAULT 1 NOT NULL,
DELECAO_AUTOMATICA SMALLINT NOT NULL,
ENDERECO_COMPLETO COMPUTED BY ((ENDERECO || ´ - ´ || CIDADE || ´-´ || UF || ´ - CEP: ´ || CEP || ´ - ´ || ´FONE/FAX: ´ || TELPRINCIPAL)),
CODIGO_LIBERACAO VARCHAR(50) NOT NULL,
SOLICITAR_BACKUP SMALLINT NOT NULL,
USA_LEITOR SMALLINT NOT NULL,
MANTER_LOGON_POS_VENDA SMALLINT NOT NULL,
ATIVA_PROPAGANDA_PDV SMALLINT NOT NULL,
TEMPO_TELA SMALLINT NOT NULL,
UTILIZA_ECF SMALLINT NOT NULL,
OBS_RODAPE_OS VARCHAR(300),
GARANTIA_OS SMALLINT NOT NULL
);


CREATE TABLE TBLMARCAORDEMSERVICOS (
MARCA_OBJETO VARCHAR(30) NOT NULL
);


CREATE TABLE TBLMARCAS (
IDMARCA INTEGER NOT NULL,
MARCA VARCHAR(20) NOT NULL
);


CREATE TABLE TBLMODELOORDEMSERVICOS (
MODELO_OBJETO VARCHAR(30) NOT NULL,
MARCA_OBJETO VARCHAR(30) NOT NULL
);


CREATE TABLE TBLNOTAS (
IDNOTA INTEGER NOT NULL,
NRONOTA VARCHAR(10) NOT NULL,
FORNECEDOR VARCHAR(30) NOT NULL,
VALOR_FRETE NUMERIC(8,2) NOT NULL,
IMPOSTOS FLOAT DEFAULT 0 NOT NULL,
VALOR NUMERIC(15,2) NOT NULL,
DTNOTA DATE NOT NULL,
DTREGISTRO DATE DEFAULT ´NOW´,
ALT_POR VARCHAR(10) NOT NULL
);


CREATE TABLE TBLORDEMSERVICOS (
IDORDEM INTEGER NOT NULL,
IDCLIENTE INTEGER,
NOME VARCHAR(40) NOT NULL,
DATA_ENTRADA TIMESTAMP NOT NULL,
DATA_PREVISTA DATE NOT NULL,
DATA_ENTREGA TIMESTAMP,
VALOR_ENTRADA NUMERIC(15,2) NOT NULL,
CATEGORIA_OBJETO VARCHAR(30) NOT NULL,
MARCA_OBJETO VARCHAR(30) NOT NULL,
MODELO_OBJETO VARCHAR(30) NOT NULL,
RESP_CADASTRO VARCHAR(10) NOT NULL,
VALOR_FINAL NUMERIC(15,2) NOT NULL,
VALOR_PENDENTE NUMERIC(15,2) NOT NULL,
IDVENDA INTEGER NOT NULL,
OBSERVACOES BLOB SUB_TYPE 1 SEGMENT SIZE 8192,
NUMERO_SERIE VARCHAR(25),
VOLTAGEM VARCHAR(10) NOT NULL,
DEFEITO BLOB SUB_TYPE 1 SEGMENT SIZE 8192,
CODIGO_STATUS SMALLINT NOT NULL,
TELEFONE VARCHAR(14) NOT NULL,
TIPO_OS VARCHAR(20) NOT NULL,
TECNICO VARCHAR(40),
DT_COMISSAO DATE
);


CREATE TABLE TBLPARAMETROS (
CODIGO INTEGER NOT NULL,
DESCRICAO VARCHAR(50) NOT NULL,
INTEIRO INTEGER,
TEXTO500 VARCHAR(500),
MOEDA152 NUMERIC(15,2),
DATAHORA TIMESTAMP
);


CREATE TABLE TBLPRODUTOS (
IDPRODUTO INTEGER NOT NULL,
CODBARRAS VARCHAR(20) NOT NULL,
DESCRICAO VARCHAR(40) NOT NULL,
UNIDADE VARCHAR(10) NOT NULL,
MINIMO FLOAT DEFAULT 0 NOT NULL,
QUANTIDADE1 FLOAT DEFAULT 0 NOT NULL,
QUANTIDADE2 FLOAT DEFAULT 0 NOT NULL,
CATEGORIA VARCHAR(20) NOT NULL,
FORNECEDOR VARCHAR(30),
MARCA VARCHAR(20) NOT NULL,
CUSTO NUMERIC(8,2) DEFAULT 0 NOT NULL,
PERC_LUCRO DOUBLE PRECISION NOT NULL,
VALOR_VENDA COMPUTED BY ((CUSTO + ((CUSTO * PERC_LUCRO)/100))),
LUCRO COMPUTED BY ((VALOR_VENDA - CUSTO)),
VALOR_TOTAL COMPUTED BY ((VALOR_VENDA * (QUANTIDADE1 + QUANTIDADE2))),
ATIVO SMALLINT DEFAULT 1,
ALT_POR VARCHAR(10) NOT NULL,
DT_ALT DATE DEFAULT ´NOW´,
LIMITE_DESC FLOAT DEFAULT 0,
SECAO SMALLINT DEFAULT 0,
ULTIMA_VENDA DATE,
SUBCATEGORIA VARCHAR(20),
DESC_PROG DOUBLE PRECISION,
INICIO_DESC DATE,
FINAL_DESC DATE,
REAJ_PROG FLOAT,
DT_REAJ DATE,
VALIDADE DATE NOT NULL,
SERVICO SMALLINT DEFAULT 0 NOT NULL,
COMISSAO_DIFERENCIADA NUMERIC(8,2) NOT NULL,
UNIDADE_VENDA VARCHAR(5) NOT NULL,
COM_DESCONTO COMPUTED BY (VALOR_VENDA - ((VALOR_VENDA * DESC_PROG) / 100)),
SITUACAO_TRIBUTARIA NUMERIC(8,2) NOT NULL,
DIAS_VALIDADE SMALLINT NOT NULL
);


CREATE TABLE TBLSUBCATEGORIAS (
IDSUBCATEGORIA INTEGER NOT NULL,
CATEGORIA VARCHAR(20) NOT NULL,
SUBCATEGORIA VARCHAR(20) NOT NULL
);


CREATE TABLE TBLTEMPINADIMPLENTES (
IDCLIENTE INTEGER,
NOME VARCHAR(40),
TEL_RESIDENCIAL VARCHAR(14),
TEL_CELULAR VARCHAR(14),
ATRASO_DESDE DATE,
TOTAL NUMERIC(15,3),
IDMICRO VARCHAR(10)
);


CREATE TABLE TBLVENDAS (
IDVENDA INTEGER NOT NULL,
IDMICRO VARCHAR(10) NOT NULL,
IDCLIENTE INTEGER NOT NULL,
VALOR_TOTAL NUMERIC(8,2) NOT NULL,
DT_ALT DATE DEFAULT ´NOW´,
ALT_POR VARCHAR(10) NOT NULL,
DESCONTO FLOAT DEFAULT 0 NOT NULL,
VALOR_FINAL COMPUTED BY (VALOR_TOTAL - ((VALOR_TOTAL*DESCONTO) / 100)),
TIPO SMALLINT DEFAULT 0 NOT NULL,
DATAHORA TIMESTAMP DEFAULT ´NOW´,
CLIENTE VARCHAR(40) NOT NULL,
MOT_SAIDA VARCHAR(30)
);




/******************************************************************************/
/**** Views ****/
/******************************************************************************/


/* View: VWPRODUTOS */
CREATE VIEW VWPRODUTOS(
IDPRODUTO,
CODBARRAS,
DESCRICAO,
UNIDADE,
MINIMO,
QUANTIDADE1,
QUANTIDADE2,
CATEGORIA,
FORNECEDOR,
MARCA,
CUSTO,
PERC_LUCRO,
VALOR_VENDA,
LUCRO,
VALOR_TOTAL,
ATIVO,
ALT_POR,
DT_ALT,
LIMITE_DESC,
SECAO,
ULTIMA_VENDA,
SUBCATEGORIA,
DESC_PROG,
INICIO_DESC,
FINAL_DESC,
REAJ_PROG,
DT_REAJ,
VALIDADE,
SERVICO,
COMISSAO_DIFERENCIADA,
UNIDADE_VENDA,
COM_DESCONTO,
SITUACAO_TRIBUTARIA,
DIAS_VALIDADE)
AS
select * from TBLPRODUTOS
;




/* Check constraints definition */

ALTER TABLE TBLPRODUTOS ADD CHECK(LIMITE_DESC < 100);
ALTER TABLE TBLPRODUTOS ADD CHECK ((UNIDADE = ´FRACIONADO´ OR UNIDADE = ´INTEIRO´));
ALTER TABLE TBLPRODUTOS ADD CONSTRAINT CHK_PERC_LUCRO check ((PERC_LUCRO > 0));
ALTER TABLE TBLENTRADAS ADD CHECK(QUANTIDADE > 0);
ALTER TABLE TBLPRODUTOS ADD CONSTRAINT CHK2_TBLPRODUTOS check (QUANTIDADE2 >= 0);


/******************************************************************************/
/**** Unique Constraints ****/
/******************************************************************************/

ALTER TABLE TBLACESSOS ADD CONSTRAINT UNQ_TBLACESSOS UNIQUE (IDFUNCIONARIO);
ALTER TABLE TBLCATEGORIAS ADD UNIQUE (CATEGORIA);
ALTER TABLE TBLCATORDEMSERVICOS ADD CONSTRAINT UNQ1_TBLCATORDEMSERVICOS UNIQUE (OBJETO);
ALTER TABLE TBLFORNECEDORES ADD UNIQUE (FORNECEDOR);
ALTER TABLE TBLFUNCIONARIOS ADD UNIQUE (LOGIN);
ALTER TABLE TBLMARCAORDEMSERVICOS ADD CONSTRAINT UNQ1_TBLMARCAORDEMSERVICOS UNIQUE (MARCA_OBJETO);
ALTER TABLE TBLMARCAS ADD UNIQUE (MARCA);
ALTER TABLE TBLMODELOORDEMSERVICOS ADD CONSTRAINT UNQ1_TBLMODELOORDEMSERVICOS UNIQUE (MODELO_OBJETO);
ALTER TABLE TBLNOTAS ADD CONSTRAINT UNQ_TBLNOTAS UNIQUE (NRONOTA, FORNECEDOR);
ALTER TABLE TBLPARAMETROS ADD CONSTRAINT UNQ_TBLPARAMETROS UNIQUE (DESCRICAO);
ALTER TABLE TBLPRODUTOS ADD UNIQUE (CODBARRAS);
ALTER TABLE TBLSUBCATEGORIAS ADD CONSTRAINT UNQ_TBLSUBCATEGORIAS UNIQUE (SUBCATEGORIA);


/******************************************************************************/
/**** Primary Keys ****/
/******************************************************************************/

ALTER TABLE TBLACESSOS ADD CONSTRAINT PK_TBLACESSOS PRIMARY KEY (IDACESSO);
ALTER TABLE TBLALTERACOES ADD CONSTRAINT PK_TBLALTERACOES PRIMARY KEY (ID);
ALTER TABLE TBLCAIXA ADD PRIMARY KEY (IDCAIXA);
ALTER TABLE TBLCATEGORIAS ADD CONSTRAINT PK_TBLCATEGORIAS PRIMARY KEY (IDCATEGORIA);
ALTER TABLE TBLCLIENTES ADD CONSTRAINT PK_TBLCLIENTES PRIMARY KEY (IDCLIENTE);
ALTER TABLE TBLCONTAS ADD CONSTRAINT PK_TBLCONTAS PRIMARY KEY (IDCONTA);
ALTER TABLE TBLCONTROLE ADD CONSTRAINT PK_TBLCONTROLE PRIMARY KEY (SEQUENCIA);
ALTER TABLE TBLCREDIARIO ADD CONSTRAINT PK_TBLCREDIARIO PRIMARY KEY (IDCREDIARIO);
ALTER TABLE TBLDOCUMENTOS ADD CONSTRAINT PK_TBLDOCUMENTOS PRIMARY KEY (TIPO_DOCUMENTO);
ALTER TABLE TBLENTRADAS ADD PRIMARY KEY (IDENTRADA);
ALTER TABLE TBLESTATISTICASVENDA ADD CONSTRAINT PK_TBLESTATISTICASVENDA PRIMARY KEY (IDVENDA);
ALTER TABLE TBLEXTRPONTO ADD CONSTRAINT PK_TBLEXTRPONTO PRIMARY KEY (CODIGO_FUNCI, DATA_JORNADA);
ALTER TABLE TBLFORNECEDORES ADD PRIMARY KEY (IDFORNECEDOR);
ALTER TABLE TBLFREQUENCIA ADD CONSTRAINT PK_TBLFREQUENCIA PRIMARY KEY (CODIGO);
ALTER TABLE TBLFUNCIONARIOS ADD CONSTRAINT PK_TBLFUNCIONARIOS PRIMARY KEY (IDFUNCIONARIO);
ALTER TABLE TBLHISTORICOVENDA ADD CONSTRAINT PK_TBLHISTORICOVENDA PRIMARY KEY (IDHISTORICOVENDA);
ALTER TABLE TBLIVENDAS ADD CONSTRAINT PK_TBLIVENDAS PRIMARY KEY (IDITEM);
ALTER TABLE TBLLOJAS ADD CONSTRAINT PK_TBLLOJAS PRIMARY KEY (CNPJ);
ALTER TABLE TBLMARCAS ADD PRIMARY KEY (IDMARCA);
ALTER TABLE TBLNOTAS ADD PRIMARY KEY (IDNOTA);
ALTER TABLE TBLORDEMSERVICOS ADD CONSTRAINT PK_TBLORDEMSERVICOS PRIMARY KEY (IDORDEM);
ALTER TABLE TBLPARAMETROS ADD PRIMARY KEY (CODIGO);
ALTER TABLE TBLPRODUTOS ADD PRIMARY KEY (IDPRODUTO);
ALTER TABLE TBLSUBCATEGORIAS ADD PRIMARY KEY (IDSUBCATEGORIA);
ALTER TABLE TBLVENDAS ADD PRIMARY KEY (IDVENDA);


/******************************************************************************/
/**** Foreign Keys ****/
/******************************************************************************/

ALTER TABLE TBLACESSOS ADD CONSTRAINT FK_TBLACESSOS FOREIGN KEY (IDFUNCIONARIO) REFERENCES TBLFUNCIONARIOS (IDFUNCIONARIO) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE TBLAMORTIZACOESPARCELAS ADD CONSTRAINT FK_TBLAMORTIZACOESPARCELAS_ FOREIGN KEY (IDCREDIARIO) REFERENCES TBLCREDIARIO (IDCREDIARIO) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE TBLCAIXA ADD FOREIGN KEY (ALT_POR) REFERENCES TBLFUNCIONARIOS (LOGIN) ON UPDATE CASCADE;
ALTER TABLE TBLCLIENTES ADD CONSTRAINT FK_TBLCLIENTES_FUNCI FOREIGN KEY (ALT_POR) REFERENCES TBLFUNCIONARIOS (LOGIN) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE TBLCLIENTES ADD CONSTRAINT FK_TBLCLIENTES_FUNCI2 FOREIGN KEY (CAD_POR) REFERENCES TBLFUNCIONARIOS (LOGIN) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE TBLCONTAS ADD CONSTRAINT FK_TBLCONTAS_FUNCI FOREIGN KEY (CAD_POR) REFERENCES TBLFUNCIONARIOS (LOGIN) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE TBLCONTAS ADD CONSTRAINT FK_TBLCONTAS_FUNCI2 FOREIGN KEY (REAL_POR) REFERENCES TBLFUNCIONARIOS (LOGIN) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE TBLCREDIARIO ADD CONSTRAINT FK_VENDA FOREIGN KEY (IDVENDA) REFERENCES TBLVENDAS (IDVENDA) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE TBLENTRADAS ADD CONSTRAINT FK_TBLENTRADAS FOREIGN KEY (CODBARRAS) REFERENCES TBLPRODUTOS (CODBARRAS) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE TBLENTRADAS ADD CONSTRAINT FK_TBLENTRADAS_FUNCI FOREIGN KEY (ALT_POR) REFERENCES TBLFUNCIONARIOS (LOGIN) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE TBLENTRADAS ADD FOREIGN KEY (IDNOTA) REFERENCES TBLNOTAS (IDNOTA) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE TBLESTATISTICASVENDA ADD CONSTRAINT FK_TBLESTATISTICASVENDA_1 FOREIGN KEY (IDVENDA) REFERENCES TBLVENDAS (IDVENDA) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE TBLHISTORICOVENDA ADD CONSTRAINT FK_TBLHISTORICOVENDA_1 FOREIGN KEY (IDVENDA) REFERENCES TBLVENDAS (IDVENDA) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE TBLHISTORICOVENDA ADD CONSTRAINT FK_TBLHISTORICOVENDA_2 FOREIGN KEY (RESP_HISTORICO) REFERENCES TBLFUNCIONARIOS (LOGIN) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE TBLIVENDAS ADD CONSTRAINT FK_TBLIVENDAS_2 FOREIGN KEY (IDVENDA) REFERENCES TBLVENDAS (IDVENDA) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE TBLMODELOORDEMSERVICOS ADD CONSTRAINT FK_TBLMODELOORDEMSERVICOS_1 FOREIGN KEY (MARCA_OBJETO) REFERENCES TBLMARCAORDEMSERVICOS (MARCA_OBJETO) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE TBLNOTAS ADD CONSTRAINT FK_TBLNOTAS_FUNCI FOREIGN KEY (ALT_POR) REFERENCES TBLFUNCIONARIOS (LOGIN) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE TBLNOTAS ADD FOREIGN KEY (FORNECEDOR) REFERENCES TBLFORNECEDORES (FORNECEDOR) ON UPDATE CASCADE;
ALTER TABLE TBLPRODUTOS ADD CONSTRAINT FK_PROD_CATEG FOREIGN KEY (CATEGORIA) REFERENCES TBLCATEGORIAS (CATEGORIA) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE TBLPRODUTOS ADD CONSTRAINT FK_PROD_FUNCI FOREIGN KEY (ALT_POR) REFERENCES TBLFUNCIONARIOS (LOGIN) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE TBLPRODUTOS ADD CONSTRAINT FK_PROD_SUBCATEG FOREIGN KEY (SUBCATEGORIA) REFERENCES TBLSUBCATEGORIAS (SUBCATEGORIA) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE TBLSUBCATEGORIAS ADD FOREIGN KEY (CATEGORIA) REFERENCES TBLCATEGORIAS (CATEGORIA) ON DELETE CASCADE ON UPDATE CASCADE;


/******************************************************************************/
/**** Indices ****/
/******************************************************************************/

CREATE UNIQUE INDEX TBLPRODUTOS_IDX1 ON TBLPRODUTOS (CODBARRAS);
CREATE INDEX TBLPRODUTOS_IDX2 ON TBLPRODUTOS (DESCRICAO);


/******************************************************************************/
/**** Triggers ****/
/******************************************************************************/


SET TERM ^ ;


/******************************************************************************/
/**** Triggers for tables ****/
/******************************************************************************/



/* Trigger: TRG_ACESSOS */
CREATE TRIGGER TRG_ACESSOS FOR TBLACESSOS
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
NEW.IDACESSO = GEN_ID(GN_ACESSOS,1);
END
^


/* Trigger: TRG_ALTERACOES */
CREATE TRIGGER TRG_ALTERACOES FOR TBLALTERACOES
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
NEW.ID = GEN_ID(GN_ALTERACAO,1);
END
^


/* Trigger: TRG_CAIXA */
CREATE TRIGGER TRG_CAIXA FOR TBLCAIXA
ACTIVE BEFORE INSERT POSITION 0
AS BEGIN
NEW.IDCAIXA = GEN_ID(GN_CAIXA,1);
END
^


/* Trigger: TRG_CATEGORIAS */
CREATE TRIGGER TRG_CATEGORIAS FOR TBLCATEGORIAS
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
NEW.IDCATEGORIA = GEN_ID(GN_CATEGORIA,1);
END
^


/* Trigger: TRG_CLIENTES */
CREATE TRIGGER TRG_CLIENTES FOR TBLCLIENTES
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
NEW.IDCLIENTE = GEN_ID(GN_CLIENTE,1);
END
^


/* Trigger: TRG_CONTAS */
CREATE TRIGGER TRG_CONTAS FOR TBLCONTAS
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
NEW.IDCONTA = GEN_ID(GN_CONTA,1);
END
^


/* Trigger: TRG_CONTROLE */
CREATE TRIGGER TRG_CONTROLE FOR TBLCONTROLE
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
NEW.SEQUENCIA = GEN_ID(GN_CONTROLE,1);
END
^


/* Trigger: TRG_CREDIARIO */
CREATE TRIGGER TRG_CREDIARIO FOR TBLCREDIARIO
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
NEW.IDCREDIARIO = GEN_ID(GN_CREDIARIO,1);
END
^


/* Trigger: TRG_ENTRADAS */
CREATE TRIGGER TRG_ENTRADAS FOR TBLENTRADAS
ACTIVE BEFORE INSERT POSITION 0
AS BEGIN
NEW.IDENTRADA = GEN_ID(GN_ENTRADA,1);
END
^


/* Trigger: TRG_FORNECEDORES */
CREATE TRIGGER TRG_FORNECEDORES FOR TBLFORNECEDORES
ACTIVE BEFORE INSERT POSITION 0
as
begin
new.idfornecedor = gen_id(gn_fornecedor,1);
end
^


/* Trigger: TRG_FREQUENCIA */
CREATE TRIGGER TRG_FREQUENCIA FOR TBLFREQUENCIA
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
NEW.CODIGO = GEN_ID(GEN_FREQUENCIA,1);
END
^


/* Trigger: TRG_FUNCIONARIOS */
CREATE TRIGGER TRG_FUNCIONARIOS FOR TBLFUNCIONARIOS
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
NEW.IDFUNCIONARIO = GEN_ID(GN_FUNCIONARIO,1);
END
^


/* Trigger: TRG_HISTORICOVENDA */
CREATE TRIGGER TRG_HISTORICOVENDA FOR TBLHISTORICOVENDA
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
NEW.IDHISTORICOVENDA = GEN_ID(GN_HISTORICOVENDA,1);
END
^


/* Trigger: TRG_IVENDAS */
CREATE TRIGGER TRG_IVENDAS FOR TBLIVENDAS
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
NEW.IDITEM = GEN_ID(GN_IVENDAS,1);
END
^


/* Trigger: TRG_MARCAS */
CREATE TRIGGER TRG_MARCAS FOR TBLMARCAS
ACTIVE BEFORE INSERT POSITION 0
as
begin
new.idmarca = gen_id(gn_marca,1);
end
^


/* Trigger: TRG_NOTAS */
CREATE TRIGGER TRG_NOTAS FOR TBLNOTAS
ACTIVE BEFORE INSERT POSITION 0
AS BEGIN
NEW.IDNOTA = GEN_ID(GN_NOTA,1);
END
^


/* Trigger: TRG_ORDEM_SERVICOS */
CREATE TRIGGER TRG_ORDEM_SERVICOS FOR TBLORDEMSERVICOS
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
NEW.IDORDEM = GEN_ID(GN_ORDEM_SERVICOS,1);
END
^


/* Trigger: TRG_PARAMETROS */
CREATE TRIGGER TRG_PARAMETROS FOR TBLPARAMETROS
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
NEW.CODIGO = GEN_ID(GN_PARAMETROS,1);
END
^


/* Trigger: TRG_PRODUTOS */
CREATE TRIGGER TRG_PRODUTOS FOR TBLPRODUTOS
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
NEW.IDPRODUTO = GEN_ID(GN_PRODUTO,1);
END
^


/* Trigger: TRG_SUBCATEGORIAS */
CREATE TRIGGER TRG_SUBCATEGORIAS FOR TBLSUBCATEGORIAS
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
NEW.IDSUBCATEGORIA = GEN_ID(GN_SUBCATEGORIA,1);
END
^


/* Trigger: TRG_VENDAS */
CREATE TRIGGER TRG_VENDAS FOR TBLVENDAS
ACTIVE BEFORE INSERT POSITION 0
AS BEGIN
NEW.IDVENDA = GEN_ID(GN_VENDA,1);
END
^


SET TERM ; ^



/******************************************************************************/
/**** Stored Procedures ****/
/******************************************************************************/


SET TERM ^ ;

ALTER PROCEDURE SP_ALTERA_ESTOQUE (
VAR_CODBARRAS VARCHAR(20),
VAR_QUANTIDADE NUMERIC(15,2))
AS
begin
update TBLPRODUTOS set QUANTIDADE1 = QUANTIDADE1 + :var_quantidade where CODBARRAS = :var_codbarras;
end
^

ALTER PROCEDURE SP_CONFIRMA_VENDA (
IDVENDA INTEGER)
AS
DECLARE VARIABLE CODBARRAS VARCHAR(20);
DECLARE VARIABLE QUANTIDADE FLOAT;
DECLARE VARIABLE ESTOQUE FLOAT;
DECLARE VARIABLE IDITEM INTEGER;
DECLARE VARIABLE TOTALVENDA NUMERIC(8,2);
begin
for select IDITEM, CODBARRAS, QUANTIDADE from TBLIVENDAS where IDVENDA = :idvenda and CONFIRMADO = 0 into :IDITEM, :CODBARRAS, :QUANTIDADE do
begin
select QUANTIDADE1 from TBLPRODUTOS where CODBARRAS = :CODBARRAS into :ESTOQUE;
if (:ESTOQUE >= :QUANTIDADE) then
begin
update TBLPRODUTOS set QUANTIDADE1 = QUANTIDADE1 - :QUANTIDADE, ULTIMA_VENDA = CURRENT_DATE where CODBARRAS = :CODBARRAS and SERVICO = 0;
update TBLIVENDAS set CONFIRMADO = 1 where IDITEM = :IDITEM;
end
end
delete from TBLIVENDAS where IDVENDA = :idvenda and CONFIRMADO = 0;
select sum(VALOR * QUANTIDADE) as TOTAL from TBLIVENDAS where IDVENDA = :idvenda into :TOTALVENDA;
if (:TOTALVENDA is null) then
TOTALVENDA = 0;
update TBLVENDAS set VALOR_TOTAL = :TOTALVENDA where IDVENDA = :idvenda;
end
^

ALTER PROCEDURE SP_ENTRADASPENDENTES (
IDNOTA INTEGER,
CONFIRMA SMALLINT)
RETURNS (
IDENTRADA INTEGER,
PRODUTO VARCHAR(40),
QUANTIDADE DOUBLE PRECISION,
CUSTO NUMERIC(8,2),
LUCRO DOUBLE PRECISION,
VENDA DOUBLE PRECISION)
AS
DECLARE VARIABLE CODBARRAS VARCHAR(20);
DECLARE VARIABLE DESTINO VARCHAR(30);
DECLARE VARIABLE VALOR_NOVO NUMERIC(15,2);
begin
for select e.identrada, p.codbarras, p.descricao, e.quantidade, p.custo, p.lucro, p.valor_venda, e.destino, e.valor from tblprodutos p, tblentradas e where p.codbarras = e.codbarras and e.idnota = :idnota and e.ok = 0 and e.destino = ´PRATELEIRA´ into :identrada, :codbarras, :produto, :quantidade, :custo, :lucro, :venda, :destino, :valor_novo
do
begin
if (:confirma = 0) then
suspend;
else
begin
if (:destino = ´PRATELEIRA´) then
update tblprodutos set fornecedor = (select fornecedor from tblnotas where idnota = :idnota), quantidade1 = quantidade1 + :quantidade, custo = :valor_novo where codbarras = :codbarras;
end
end


for select e.identrada, p.codbarras, p.descricao, e.quantidade, p.custo, p.lucro, p.valor_venda, e.destino, e.valor from tblprodutos p, tblentradas e where p.codbarras = e.codbarras and e.idnota = :idnota and e.ok = 0 and e.destino = ´DEPÓSITO´ into :identrada, :codbarras, :produto, :quantidade, :custo, :lucro, :venda, :destino, :valor_novo
do
begin
if (:confirma = 0) then
suspend;
else
begin
if (:destino = ´DEPÓSITO´) then
update tblprodutos set fornecedor = (select fornecedor from tblnotas where idnota = :idnota), quantidade2 = quantidade2 + :quantidade, custo = :valor_novo where codbarras = :codbarras;

end
end

update tblentradas set ok = 1 where codbarras = :codbarras and idnota = :idnota;
end
^

ALTER PROCEDURE SP_INADIMPLENTES (
IDMICRO VARCHAR(10))
RETURNS (
IDCLIENTE INTEGER,
NOME VARCHAR(40),
TEL_RESIDENCIAL VARCHAR(14),
TEL_CELULAR VARCHAR(14),
ATRASO_DESDE DATE,
MONTANTE NUMERIC(15,3))
AS
begin
delete from TBLTEMPINADIMPLENTES where IDMICRO = :IDMICRO;
for select distinct IDCLIENTE from TBLVENDAS where IDVENDA in (select IDVENDA from TBLCREDIARIO where VALOR_PAGO < VALOR_PARCELA and DATA_VENCIMENTO < CURRENT_DATE) into :IDCLIENTE do
begin
select sum((VALOR_PARCELA - VALOR_PAGO) + ((CURRENT_DATE - DATA_VENCIMENTO) * ((VALOR_PARCELA - VALOR_PAGO) * 1)) / 100) as TOTAL, min(DATA_VENCIMENTO) as P_ATRASO from TBLCREDIARIO where IDVENDA in (select IDVENDA from TBLVENDAS where IDCLIENTE = :IDCLIENTE) and VALOR_PARCELA > VALOR_PAGO and DATA_VENCIMENTO < CURRENT_DATE into :MONTANTE, :ATRASO_DESDE;
select NOME, TEL_RESIDENCIAL, TEL_CELULAR from TBLCLIENTES where IDCLIENTE = :IDCLIENTE into :NOME, :TEL_RESIDENCIAL, :TEL_CELULAR;
insert into TBLTEMPINADIMPLENTES (IDCLIENTE, NOME, TEL_RESIDENCIAL, TEL_CELULAR, ATRASO_DESDE, TOTAL, IDMICRO) values (:idcliente, :nome, :tel_residencial, :tel_celular, :atraso_desde, :montante, :idmicro);
end
for select IDCLIENTE, NOME, TEL_RESIDENCIAL, TEL_CELULAR, ATRASO_DESDE, TOTAL from TBLTEMPINADIMPLENTES where IDMICRO = :IDMICRO order by TOTAL desc into :IDCLIENTE, :NOME, :TEL_RESIDENCIAL, :TEL_CELULAR, :ATRASO_DESDE, :MONTANTE do
suspend;
end
^

ALTER PROCEDURE SP_INICIA_SISTEMA (
MICRO_SOLICITANTE VARCHAR(10))
AS
DECLARE VARIABLE DELETA SMALLINT;
DECLARE VARIABLE CODBARRAS VARCHAR(20);
DECLARE VARIABLE QUANTIDADE FLOAT;
DECLARE VARIABLE VENDAAPAGAR INTEGER;
DECLARE VARIABLE MAXVENDA INTEGER;
DECLARE VARIABLE VAR_IDMICRO VARCHAR(10);
begin

delete from tblnotas where idnota in(select distinct idnota from tblentradas where ok = 0) or idnota not in (select idnota from tblentradas);

update tblprodutos set inicio_desc = null, final_desc = null, desc_prog = 0 where ((inicio_desc < CURRENT_DATE) or (desc_prog = 0));

select DELECAO_AUTOMATICA from TBLLOJAS into :DELETA;

if (:deleta = 1) then
begin
delete from TBLPRODUTOS where QUANTIDADE1 = 0 and QUANTIDADE2 = 0;
end

if (:micro_solicitante = ´NENHUM´) then
begin
for select distinct IDMICRO from TBLVENDAS into :VAR_IDMICRO do
begin
select max(IDVENDA) from TBLVENDAS where IDMICRO = :VAR_IDMICRO into :MAXVENDA;
for select IDVENDA from TBLVENDAS where (TIPO = 2 and IDVENDA < :MAXVENDA and IDMICRO = :VAR_IDMICRO) into :VENDAAPAGAR do
begin
for select CODBARRAS, QUANTIDADE from TBLIVENDAS where IDVENDA = :VENDAAPAGAR into :CODBARRAS, :QUANTIDADE do
begin
update TBLPRODUTOS set QUANTIDADE1 = QUANTIDADE1 + :QUANTIDADE where CODBARRAS = :CODBARRAS and SERVICO = 0;
end
delete from TBLVENDAS where IDVENDA = :VENDAAPAGAR;
end
delete from TBLVENDAS where TIPO = 0 and IDVENDA < :MAXVENDA and IDMICRO = :VAR_IDMICRO;
/*
delete from TBLVENDAS where TIPO = 1 and IDVENDA < :MAXVENDA and IDMICRO = :VAR_IDMICRO and IDVENDA not in (select distinct IDVENDA from tblivendas where IDVENDA in (select IDVENDA from TBLVENDAS where IDMICRO = :VAR_IDMICRO));
*/
end
end


if (:micro_solicitante <> ´NENHUM´) then
begin
/*for select distinct IDMICRO from TBLVENDAS into :VAR_IDMICRO do
begin*/
select max(IDVENDA) from TBLVENDAS where IDMICRO = :micro_solicitante into :MAXVENDA;
for select IDVENDA from TBLVENDAS where (TIPO = 2 and IDVENDA <= :MAXVENDA and IDMICRO = :micro_solicitante) into :VENDAAPAGAR do
begin
for select CODBARRAS, QUANTIDADE from TBLIVENDAS where IDVENDA = :VENDAAPAGAR into :CODBARRAS, :QUANTIDADE do
begin
update TBLPRODUTOS set QUANTIDADE1 = QUANTIDADE1 + :QUANTIDADE where CODBARRAS = :CODBARRAS and SERVICO = 0;
end
delete from TBLVENDAS where IDVENDA = :VENDAAPAGAR;
end
delete from TBLVENDAS where TIPO = 0 and IDVENDA <= :MAXVENDA and IDMICRO = :micro_solicitante;
/*
delete from TBLVENDAS where TIPO = 1 and IDVENDA < :MAXVENDA and IDMICRO = :micro_solicitante and IDVENDA not in (select distinct IDVENDA from tblivendas where IDVENDA in (select IDVENDA from TBLVENDAS where IDMICRO = :micro_solicitante));
*/
/* end*/
end


end
^

ALTER PROCEDURE SP_MAIS_VENDIDOS (
DTINICIAL DATE,
DTFINAL DATE)
RETURNS (
CODBARRAS VARCHAR(20),
DESCRICAO VARCHAR(40),
QUANTIDADE NUMERIC(8,2),
LUCRO NUMERIC(15,2),
VENDAS INTEGER,
VALOR_VENDAS NUMERIC(15,2))
AS
DECLARE VARIABLE VAR_CODBARRAS CHAR(20);
begin
for select distinct CODBARRAS from TBLIVENDAS where IDVENDA in (select distinct IDVENDA from TBLVENDAS where TIPO = 3 and DT_ALT between :dtinicial and :dtfinal) into :VAR_CODBARRAS do
begin
select sum(QUANTIDADE) as TOTAL from TBLIVENDAS where IDVENDA in (select distinct IDVENDA from TBLVENDAS where TIPO = 3 and DT_ALT between :dtinicial and :dtfinal) and CODBARRAS = :VAR_CODBARRAS into :QUANTIDADE;
select CODBARRAS, DESCRICAO from TBLPRODUTOS where CODBARRAS = :VAR_CODBARRAS into :CODBARRAS, :DESCRICAO;
select count(IDVENDA) as VENDAS, sum(QUANTIDADE*(VALOR - CUSTO_ATUAL)) as LUCRO, sum(QUANTIDADE * VALOR) as VALOR_VENDAS from TBLIVENDAS where IDVENDA in (select distinct IDVENDA from TBLVENDAS where TIPO = 3 and DT_ALT between :dtinicial and :dtfinal) and CODBARRAS = :VAR_CODBARRAS into :VENDAS, :LUCRO, :VALOR_VENDAS;
suspend;
end
end
^

ALTER PROCEDURE SP_MOSTRA_ALTERACOES_VENDA (
IDVENDA INTEGER)
RETURNS (
DATA_MOD DATE,
TIPO INTEGER,
CODBARRAS VARCHAR(20),
DESCRICAO VARCHAR(40),
QUANTIDADE NUMERIC(8,2),
SUBTOTAL NUMERIC(15,2),
VLR_UNITARIO NUMERIC(15,2))
AS
DECLARE VARIABLE VAR_EXCLUSAO SMALLINT;
DECLARE VARIABLE VAR_INCLUSAO SMALLINT;
DECLARE VARIABLE VAR_DATE DATE;
DECLARE VARIABLE VAR_SOMA NUMERIC(10,2);
DECLARE VARIABLE VAR_SALDO_ANTERIOR NUMERIC(10,2);
begin
var_inclusao = 0;
var_exclusao = 0;
var_soma = 0;

/*ACRESCENTA OS PRODUTOS INICIAIS*/
for select distinct CAST(DATAHORA AS DATE) from tblhistoricovenda where IDVENDA = :idvenda and EXCLUSAOOUINCLUSAO = -1 into :VAR_DATE do
begin
for select DATAHORA, EXCLUSAOOUINCLUSAO, CODBARRAS, DESCRICAO, QUANTIDADE, SUBTOTAL, VALOR_UNITARIO from tblhistoricovenda where IDVENDA = :idvenda and CAST(DATAHORA AS DATE) = :var_date and EXCLUSAOOUINCLUSAO = -1 into :data_mod, :tipo, :codbarras, :descricao, :quantidade, :subtotal, :vlr_unitario do
begin
var_soma = :var_soma + :subtotal;
suspend;
end

data_mod = null;
codbarras = null;
descricao = ´ VALOR INICIAL:´;

quantidade = null;
tipo = null;
vlr_unitario = null;
select sum(subtotal) from tblhistoricovenda where idvenda = :idvenda and exclusaoouinclusao = -1 into :subtotal;
suspend;
end

/* FIM ACRESCENTA OS PRODUTOS INICIAIS*/

for select distinct CAST(DATAHORA AS DATE) from tblhistoricovenda where IDVENDA = :idvenda and EXCLUSAOOUINCLUSAO > -1 into :VAR_DATE do
begin
for select DATAHORA, EXCLUSAOOUINCLUSAO, CODBARRAS, DESCRICAO, QUANTIDADE, SUBTOTAL, VALOR_UNITARIO from tblhistoricovenda where IDVENDA = :idvenda and CAST(DATAHORA AS DATE) = :var_date and exclusaoouinclusao > -1 into :data_mod, :tipo, :codbarras, :descricao, :quantidade, :subtotal, :vlr_unitario do
begin
if (:tipo = 0) then
var_exclusao = 1;
if (:tipo = 1) then
var_inclusao = 1;
var_soma = :var_soma + :subtotal;
suspend;
end

data_mod = null;
codbarras = null;
if ((:var_exclusao = 1) and (:var_inclusao = 1)) then
descricao = ´ TROCAS:´;
else if (:var_exclusao = 1) then
descricao = ´ DEVOLUÇÕES:´;
else if (:var_inclusao = 1) then
descricao = ´ ACRÉSCIMOS:´;

quantidade = null;
tipo = null;
vlr_unitario = null;
select sum(subtotal) from tblhistoricovenda where idvenda = :idvenda and cast(DATAHORA AS DATE) = :var_date and EXCLUSAOOUINCLUSAO > -1 into :subtotal;
suspend;

/*mostra saldo atual*/
data_mod = null;
codbarras = null;
descricao = ´ VALOR ATUAL:´;
quantidade = null;
tipo = null;
subtotal = var_soma;
suspend;

var_inclusao = 0;
var_exclusao = 0;
end
end
^


SET TERM ; ^


Responder

Gostei + 0

10/03/2007

Earmarques

Segue o script metadados do banco, se puder ajudar agradeço.


/******************************************************************************/
/**** Generated by IBExpert 2007.02.22 10/3/2007 10:18:28 ****/
/******************************************************************************/

SET SQL DIALECT 3;

SET NAMES NONE;

CREATE DATABASE ´C:\bd.gdb
USER ´SYSDBA´ PASSWORD ´masterkey´
PAGE_SIZE 8192
DEFAULT CHARACTER SET NONE;



/******************************************************************************/
/**** Domains ****/
/******************************************************************************/

CREATE DOMAIN CAIXA_DESCRICAO AS
VARCHAR(40)
NOT NULL;



/******************************************************************************/
/**** Generators ****/
/******************************************************************************/

CREATE GENERATOR GEN_FREQUENCIA;
SET GENERATOR GEN_FREQUENCIA TO 0;

CREATE GENERATOR GN_ACESSOS;
SET GENERATOR GN_ACESSOS TO 12;

CREATE GENERATOR GN_ALTERACAO;
SET GENERATOR GN_ALTERACAO TO 0;

CREATE GENERATOR GN_CAIXA;
SET GENERATOR GN_CAIXA TO 23337;

CREATE GENERATOR GN_CATEGORIA;
SET GENERATOR GN_CATEGORIA TO 2;

CREATE GENERATOR GN_CLIENTE;
SET GENERATOR GN_CLIENTE TO 2;

CREATE GENERATOR GN_CONTA;
SET GENERATOR GN_CONTA TO 1;

CREATE GENERATOR GN_CONTROLE;
SET GENERATOR GN_CONTROLE TO 49;

CREATE GENERATOR GN_CREDIARIO;
SET GENERATOR GN_CREDIARIO TO 0;

CREATE GENERATOR GN_ENTRADA;
SET GENERATOR GN_ENTRADA TO 5;

CREATE GENERATOR GN_FORNECEDOR;
SET GENERATOR GN_FORNECEDOR TO 0;

CREATE GENERATOR GN_FUNCIONARIO;
SET GENERATOR GN_FUNCIONARIO TO 16;

CREATE GENERATOR GN_HISTORICOVENDA;
SET GENERATOR GN_HISTORICOVENDA TO 0;

CREATE GENERATOR GN_IVENDAS;
SET GENERATOR GN_IVENDAS TO 118964;

CREATE GENERATOR GN_MARCA;
SET GENERATOR GN_MARCA TO 1;

CREATE GENERATOR GN_NOTA;
SET GENERATOR GN_NOTA TO 3;

CREATE GENERATOR GN_ORDEM_SERVICOS;
SET GENERATOR GN_ORDEM_SERVICOS TO 0;

CREATE GENERATOR GN_PARAMETROS;
SET GENERATOR GN_PARAMETROS TO 3;

CREATE GENERATOR GN_PRODUTO;
SET GENERATOR GN_PRODUTO TO 3990;

CREATE GENERATOR GN_SUBCATEGORIA;
SET GENERATOR GN_SUBCATEGORIA TO 3;

CREATE GENERATOR GN_VENDA;
SET GENERATOR GN_VENDA TO 23771;



SET TERM ^ ;



/******************************************************************************/
/**** Stored Procedures ****/
/******************************************************************************/

CREATE PROCEDURE SP_ALTERA_ESTOQUE (
VAR_CODBARRAS VARCHAR(20),
VAR_QUANTIDADE NUMERIC(15,2))
AS
BEGIN
EXIT;
END^


CREATE PROCEDURE SP_CONFIRMA_VENDA (
IDVENDA INTEGER)
AS
BEGIN
EXIT;
END^


CREATE PROCEDURE SP_ENTRADASPENDENTES (
IDNOTA INTEGER,
CONFIRMA SMALLINT)
RETURNS (
IDENTRADA INTEGER,
PRODUTO VARCHAR(40),
QUANTIDADE DOUBLE PRECISION,
CUSTO NUMERIC(8,2),
LUCRO DOUBLE PRECISION,
VENDA DOUBLE PRECISION)
AS
BEGIN
EXIT;
END^


CREATE PROCEDURE SP_INADIMPLENTES (
IDMICRO VARCHAR(10))
RETURNS (
IDCLIENTE INTEGER,
NOME VARCHAR(40),
TEL_RESIDENCIAL VARCHAR(14),
TEL_CELULAR VARCHAR(14),
ATRASO_DESDE DATE,
MONTANTE NUMERIC(15,3))
AS
BEGIN
EXIT;
END^


CREATE PROCEDURE SP_INICIA_SISTEMA (
MICRO_SOLICITANTE VARCHAR(10))
AS
BEGIN
EXIT;
END^


CREATE PROCEDURE SP_MAIS_VENDIDOS (
DTINICIAL DATE,
DTFINAL DATE)
RETURNS (
CODBARRAS VARCHAR(20),
DESCRICAO VARCHAR(40),
QUANTIDADE NUMERIC(8,2),
LUCRO NUMERIC(15,2),
VENDAS INTEGER,
VALOR_VENDAS NUMERIC(15,2))
AS
BEGIN
EXIT;
END^


CREATE PROCEDURE SP_MOSTRA_ALTERACOES_VENDA (
IDVENDA INTEGER)
RETURNS (
DATA_MOD DATE,
TIPO INTEGER,
CODBARRAS VARCHAR(20),
DESCRICAO VARCHAR(40),
QUANTIDADE NUMERIC(8,2),
SUBTOTAL NUMERIC(15,2),
VLR_UNITARIO NUMERIC(15,2))
AS
BEGIN
EXIT;
END^



SET TERM ; ^


/******************************************************************************/
/**** Tables ****/
/******************************************************************************/



CREATE TABLE TBLACESSOS (
IDACESSO INTEGER NOT NULL,
IDFUNCIONARIO INTEGER NOT NULL,
A1 SMALLINT DEFAULT 0 NOT NULL,
A2 SMALLINT DEFAULT 0 NOT NULL,
A3 SMALLINT DEFAULT 0 NOT NULL,
A4 SMALLINT DEFAULT 0 NOT NULL,
A5 SMALLINT DEFAULT 0 NOT NULL,
A6 SMALLINT DEFAULT 0 NOT NULL,
A7 SMALLINT DEFAULT 0 NOT NULL,
A8 SMALLINT DEFAULT 0 NOT NULL,
A9 SMALLINT DEFAULT 0 NOT NULL,
A10 SMALLINT DEFAULT 0 NOT NULL,
A11 SMALLINT DEFAULT 0 NOT NULL,
A12 SMALLINT DEFAULT 0 NOT NULL,
A13 SMALLINT DEFAULT 0 NOT NULL,
A14 SMALLINT DEFAULT 0 NOT NULL,
A15 SMALLINT DEFAULT 0 NOT NULL,
A16 SMALLINT DEFAULT 0 NOT NULL,
A17 SMALLINT DEFAULT 0 NOT NULL,
A18 SMALLINT DEFAULT 0 NOT NULL,
A19 SMALLINT DEFAULT 0 NOT NULL,
A20 SMALLINT DEFAULT 0 NOT NULL,
A21 SMALLINT DEFAULT 0 NOT NULL,
A22 SMALLINT DEFAULT 0 NOT NULL,
A23 SMALLINT DEFAULT 0 NOT NULL,
A24 SMALLINT DEFAULT 0 NOT NULL,
A25 SMALLINT DEFAULT 0 NOT NULL,
A26 SMALLINT DEFAULT 0 NOT NULL,
A27 SMALLINT DEFAULT 0 NOT NULL,
A28 SMALLINT DEFAULT 0 NOT NULL,
A29 SMALLINT DEFAULT 0 NOT NULL,
A30 SMALLINT DEFAULT 0 NOT NULL
);


CREATE TABLE TBLALTERACOES (
ID INTEGER NOT NULL,
DESCRICAO VARCHAR(15) NOT NULL,
DATAHORA TIMESTAMP NOT NULL,
USUARIO VARCHAR(10) NOT NULL,
EFETUADA SMALLINT DEFAULT 0,
MOEDA NUMERIC(8,2) DEFAULT 0,
INTEIRO SMALLINT DEFAULT 0,
COMANDO_SQL VARCHAR(300) DEFAULT 0
);


CREATE TABLE TBLAMORTIZACOESPARCELAS (
IDCREDIARIO INTEGER NOT NULL,
VALOR_PAGO NUMERIC(15,2),
DATA_HORA TIMESTAMP,
RESP_RECEBIMENTO VARCHAR(10),
VALOR_ATUAL NUMERIC(15,2),
VENCIMENTO DATE,
ATRASO COMPUTED BY (cast(DATA_HORA as DATE) - VENCIMENTO),
ACUMULADO_PAGO NUMERIC(15,2),
PERC_ACUMULADO_PAGO COMPUTED BY (((ACUMULADO_PAGO / VALOR_ATUAL) * 100))
);


CREATE TABLE TBLCAIXA (
IDCAIXA INTEGER NOT NULL,
DESCRICAO CAIXA_DESCRICAO NOT NULL,
IDVENDA INTEGER NOT NULL,
VALOR NUMERIC(8,2) NOT NULL,
DESCONTO NUMERIC(8,2) NOT NULL,
VALOR_PAGAR COMPUTED BY (VALOR - DESCONTO),
CARTAO_CREDITO NUMERIC(8,2) NOT NULL,
CARTAO_DEBITO NUMERIC(8,2) NOT NULL,
CONVENIO NUMERIC(8,2) NOT NULL,
DINHEIRO NUMERIC(8,2) NOT NULL,
CHEQUE NUMERIC(15,2) NOT NULL,
TROCO COMPUTED BY (((CARTAO_CREDITO + CARTAO_DEBITO + CONVENIO + CHEQUE + DINHEIRO) - VALOR_PAGAR)),
DT_ALT TIMESTAMP DEFAULT ´NOW´,
ALT_POR VARCHAR(10) NOT NULL,
DATAHORA TIMESTAMP DEFAULT ´NOW´
);


CREATE TABLE TBLCATEGORIAS (
IDCATEGORIA INTEGER NOT NULL,
CATEGORIA VARCHAR(20) NOT NULL
);


CREATE TABLE TBLCATORDEMSERVICOS (
OBJETO VARCHAR(30) NOT NULL
);


CREATE TABLE TBLCLIENTES (
IDCLIENTE INTEGER NOT NULL,
NIVEL_CADASTRO SMALLINT DEFAULT 0,
NOME VARCHAR(40) NOT NULL,
CPF VARCHAR(11),
RG VARCHAR(15),
DATA_NASCIMENTO DATE NOT NULL,
NATURALIDADE VARCHAR(40),
ESTADO_CIVIL VARCHAR(20),
TEL_COMERCIAL VARCHAR(14),
TEL_RESIDENCIAL VARCHAR(14),
TEL_CELULAR VARCHAR(14),
ENDERECO VARCHAR(40),
COMPLEMENTO VARCHAR(30),
BAIRRO VARCHAR(40),
CIDADE VARCHAR(40),
ESTADO CHAR(2),
CEP VARCHAR(9),
REFERENCIA_1 VARCHAR(30),
TEL_REFERENCIA1 VARCHAR(14),
REFERENCIA_2 VARCHAR(30),
TEL_REFERENCIA_2 VARCHAR(14),
CAD_POR VARCHAR(10) NOT NULL,
DATA_CAD TIMESTAMP NOT NULL,
ALT_POR VARCHAR(10),
DATA_ALT TIMESTAMP,
LIMITE NUMERIC(15,2) DEFAULT 0,
VOL_COMPRAS NUMERIC(15,2) DEFAULT 0,
ULTIMA_COMPRA TIMESTAMP,
NOME_CONTATO VARCHAR(30),
TIPO_RESIDENCIA VARCHAR(20),
RESIDE_DESDE DATE,
NOME_CONJUGE VARCHAR(40),
TEL_TRAB_CONJUGE VARCHAR(14),
RENDA_MENSAL NUMERIC(15,2),
RENDA_CONJUGE NUMERIC(15,2),
INDICADO_POR VARCHAR(40),
END_REFERENCIA1 VARCHAR(50),
END_REFERENCIA2 VARCHAR(50),
REL_REFERENCIA1 VARCHAR(20),
REL_REFERENCIA2 VARCHAR(20),
REF_COMERCIAL1 VARCHAR(30),
REF_COMERCIAL2 VARCHAR(30),
TEL_REF_COM1 VARCHAR(14),
TEL_REF_COM2 VARCHAR(14),
OBSERVACOES BLOB SUB_TYPE 1 SEGMENT SIZE 8192,
LOCAL_TRABALHO VARCHAR(50),
PAI VARCHAR(40),
MAE VARCHAR(40),
LOCAL_TRAB_CONJUGE VARCHAR(50)
);


CREATE TABLE TBLCONTAS (
IDCONTA INTEGER NOT NULL,
TIPO SMALLINT DEFAULT 0 NOT NULL,
DESCRICAO VARCHAR(30) NOT NULL,
CLIENTE VARCHAR(40),
DOCUMENTO VARCHAR(20) NOT NULL,
NRO_DOCUMENTO INTEGER NOT NULL,
VALOR NUMERIC(15,2) DEFAULT 0 NOT NULL,
VENCIMENTO DATE NOT NULL,
REALIZADA SMALLINT DEFAULT 0 NOT NULL,
CAD_POR VARCHAR(10) NOT NULL,
DT_CADASTRO TIMESTAMP NOT NULL,
REAL_POR VARCHAR(10),
DT_REALIZACAO TIMESTAMP,
OBSERVACOES VARCHAR(200)
);


CREATE TABLE TBLCONTROLE (
SEQUENCIA INTEGER NOT NULL,
USUARIO VARCHAR(40) NOT NULL,
DATAHORA TIMESTAMP,
DESCRICAO VARCHAR(500)
);


CREATE TABLE TBLCREDIARIO (
IDCREDIARIO INTEGER NOT NULL,
IDVENDA INTEGER NOT NULL,
NROPARCELA SMALLINT NOT NULL,
TOTALPARCELAS SMALLINT NOT NULL,
DATA_VENCIMENTO DATE NOT NULL,
VALOR_PARCELA NUMERIC(8,2) NOT NULL,
VALOR_PAGO NUMERIC(8,2) NOT NULL
);


CREATE TABLE TBLDOCUMENTOS (
TIPO_DOCUMENTO VARCHAR(20) NOT NULL
);


CREATE TABLE TBLENTRADAS (
IDENTRADA INTEGER NOT NULL,
IDNOTA INTEGER NOT NULL,
CODBARRAS VARCHAR(20) NOT NULL,
DESCRICAO VARCHAR(40) NOT NULL,
QUANTIDADE FLOAT NOT NULL,
VALOR NUMERIC(8,2) NOT NULL,
DESTINO VARCHAR(15) NOT NULL,
ALT_POR VARCHAR(10) NOT NULL,
DT_ALT DATE DEFAULT ´NOW´,
OK SMALLINT DEFAULT 0
);


CREATE TABLE TBLESTATISTICASVENDA (
IDVENDA INTEGER NOT NULL,
DATA_COMPRA TIMESTAMP,
VALOR_INICIAL NUMERIC(15,2),
VALOR_DEVOLUCOES NUMERIC(15,2),
VALOR_EFETIVO COMPUTED BY (valor_inicial + valor_devolucoes),
PERCENTUAL_EFICIENCIA COMPUTED BY ((valor_efetivo / valor_inicial) * 100),
VENCIMENTO_1 TIMESTAMP,
VENCIMENTO_2 TIMESTAMP,
ULTIMO_PAGAMENTO TIMESTAMP,
GIRO COMPUTED BY (cast(ultimo_pagamento as date) - cast(data_compra as date)),
ATRASO COMPUTED BY (cast(ULTIMO_PAGAMENTO as date) - cast(VENCIMENTO_2 as date))
);


CREATE TABLE TBLEXTRPONTO (
CODIGO_FUNCI INTEGER NOT NULL,
NOME_FUNCIONARIO VARCHAR(40),
DATA_JORNADA DATE NOT NULL,
HORAS SMALLINT,
MINUTOS SMALLINT,
STATUS VARCHAR(20)
);


CREATE TABLE TBLFORNECEDORES (
IDFORNECEDOR INTEGER NOT NULL,
FORNECEDOR VARCHAR(30) NOT NULL,
ENDERECO VARCHAR(40),
BAIRRO VARCHAR(30),
CIDADE VARCHAR(30),
UF CHAR(2),
FONE1 VARCHAR(14) NOT NULL,
FONE2 VARCHAR(14),
BANCO VARCHAR(30),
AGENCIA VARCHAR(10),
CONTA VARCHAR(20),
TIPO_CONTA VARCHAR(20),
FAVORECIDO VARCHAR(40),
CNPJ VARCHAR(20)
);


CREATE TABLE TBLFREQUENCIA (
CODIGO INTEGER NOT NULL,
CODIGO_FUNCI INTEGER NOT NULL,
NOME_FUNCIONARIO VARCHAR(40) NOT NULL,
TIPO VARCHAR(20) NOT NULL,
ENTRADA TIMESTAMP,
SAIDA TIMESTAMP,
AUTORIZANTE VARCHAR(40),
ENTROU SMALLINT,
SAIU SMALLINT,
DATA DATE NOT NULL,
STATUS VARCHAR(20)
);


CREATE TABLE TBLFUNCIONARIOS (
IDFUNCIONARIO INTEGER NOT NULL,
NOME VARCHAR(40) NOT NULL,
NASC DATE NOT NULL,
ENDERECO VARCHAR(40),
BAIRRO VARCHAR(30),
CIDADE VARCHAR(30),
UF CHAR(2),
FONE1 VARCHAR(14) NOT NULL,
FONE2 VARCHAR(14),
CPF CHAR(11),
SENHA VARCHAR(6) NOT NULL,
FUNCAO VARCHAR(20) NOT NULL,
LOGIN VARCHAR(10) NOT NULL,
COMISSAO FLOAT DEFAULT 0,
BLOQUEADO SMALLINT NOT NULL,
DATA_UACESSO TIMESTAMP,
FILIACAO_PAI VARCHAR(40),
FILIACAO_MAE VARCHAR(40),
DATA_ADMISSAO DATE NOT NULL,
COMISSAO_DE_VERDADE NUMERIC(15,2) NOT NULL
);


CREATE TABLE TBLHISTORICOERROS (
DESCRICAO VARCHAR(500),
DATAHORA TIMESTAMP,
USUARIO VARCHAR(20),
TERMINAL VARCHAR(20)
);


CREATE TABLE TBLHISTORICOVENDA (
IDHISTORICOVENDA INTEGER NOT NULL,
IDVENDA INTEGER NOT NULL,
EXCLUSAOOUINCLUSAO SMALLINT NOT NULL,
CODBARRAS VARCHAR(20) NOT NULL,
DESCRICAO VARCHAR(40) NOT NULL,
QUANTIDADE FLOAT NOT NULL,
VALOR_UNITARIO NUMERIC(15,2),
SUBTOTAL NUMERIC(15,2) NOT NULL,
DATAHORA TIMESTAMP NOT NULL,
RESP_HISTORICO VARCHAR(10) NOT NULL
);


CREATE TABLE TBLIVENDAS (
IDITEM INTEGER NOT NULL,
IDVENDA INTEGER NOT NULL,
CODBARRAS VARCHAR(20) NOT NULL,
DESCRICAO VARCHAR(40) NOT NULL,
QUANTIDADE FLOAT NOT NULL,
VALOR NUMERIC(8,2) NOT NULL,
CONFIRMADO SMALLINT DEFAULT 0 NOT NULL,
CUSTO_ATUAL NUMERIC(8,2) NOT NULL,
ALIQUOTA_ICMS VARCHAR(7) NOT NULL,
UNIDADE_VENDA VARCHAR(5) NOT NULL
);


CREATE TABLE TBLLOJAS (
CNPJ VARCHAR(20) NOT NULL,
FANTASIA VARCHAR(50) NOT NULL,
TELPRINCIPAL VARCHAR(14) NOT NULL,
TELSECUNDARIO VARCHAR(14),
INSCESTADUAL VARCHAR(15) NOT NULL,
ENDERECO VARCHAR(100) NOT NULL,
CIDADE VARCHAR(40) NOT NULL,
ESTADO VARCHAR(40) NOT NULL,
UF CHAR(2) NOT NULL,
CEP VARCHAR(9) NOT NULL,
FILIALNRO SMALLINT DEFAULT 0 NOT NULL,
JUROS_INADIMPLENCIA NUMERIC(8,2) NOT NULL,
VENDA_CREDIARIO SMALLINT NOT NULL,
JUROS_CREDIARIO NUMERIC(8,2) NOT NULL,
VENDA_PARCELADA SMALLINT NOT NULL,
ABRE_DOMINGO SMALLINT DEFAULT 1 NOT NULL,
DELECAO_AUTOMATICA SMALLINT NOT NULL,
ENDERECO_COMPLETO COMPUTED BY ((ENDERECO || ´ - ´ || CIDADE || ´-´ || UF || ´ - CEP: ´ || CEP || ´ - ´ || ´FONE/FAX: ´ || TELPRINCIPAL)),
CODIGO_LIBERACAO VARCHAR(50) NOT NULL,
SOLICITAR_BACKUP SMALLINT NOT NULL,
USA_LEITOR SMALLINT NOT NULL,
MANTER_LOGON_POS_VENDA SMALLINT NOT NULL,
ATIVA_PROPAGANDA_PDV SMALLINT NOT NULL,
TEMPO_TELA SMALLINT NOT NULL,
UTILIZA_ECF SMALLINT NOT NULL,
OBS_RODAPE_OS VARCHAR(300),
GARANTIA_OS SMALLINT NOT NULL
);


CREATE TABLE TBLMARCAORDEMSERVICOS (
MARCA_OBJETO VARCHAR(30) NOT NULL
);


CREATE TABLE TBLMARCAS (
IDMARCA INTEGER NOT NULL,
MARCA VARCHAR(20) NOT NULL
);


CREATE TABLE TBLMODELOORDEMSERVICOS (
MODELO_OBJETO VARCHAR(30) NOT NULL,
MARCA_OBJETO VARCHAR(30) NOT NULL
);


CREATE TABLE TBLNOTAS (
IDNOTA INTEGER NOT NULL,
NRONOTA VARCHAR(10) NOT NULL,
FORNECEDOR VARCHAR(30) NOT NULL,
VALOR_FRETE NUMERIC(8,2) NOT NULL,
IMPOSTOS FLOAT DEFAULT 0 NOT NULL,
VALOR NUMERIC(15,2) NOT NULL,
DTNOTA DATE NOT NULL,
DTREGISTRO DATE DEFAULT ´NOW´,
ALT_POR VARCHAR(10) NOT NULL
);


CREATE TABLE TBLORDEMSERVICOS (
IDORDEM INTEGER NOT NULL,
IDCLIENTE INTEGER,
NOME VARCHAR(40) NOT NULL,
DATA_ENTRADA TIMESTAMP NOT NULL,
DATA_PREVISTA DATE NOT NULL,
DATA_ENTREGA TIMESTAMP,
VALOR_ENTRADA NUMERIC(15,2) NOT NULL,
CATEGORIA_OBJETO VARCHAR(30) NOT NULL,
MARCA_OBJETO VARCHAR(30) NOT NULL,
MODELO_OBJETO VARCHAR(30) NOT NULL,
RESP_CADASTRO VARCHAR(10) NOT NULL,
VALOR_FINAL NUMERIC(15,2) NOT NULL,
VALOR_PENDENTE NUMERIC(15,2) NOT NULL,
IDVENDA INTEGER NOT NULL,
OBSERVACOES BLOB SUB_TYPE 1 SEGMENT SIZE 8192,
NUMERO_SERIE VARCHAR(25),
VOLTAGEM VARCHAR(10) NOT NULL,
DEFEITO BLOB SUB_TYPE 1 SEGMENT SIZE 8192,
CODIGO_STATUS SMALLINT NOT NULL,
TELEFONE VARCHAR(14) NOT NULL,
TIPO_OS VARCHAR(20) NOT NULL,
TECNICO VARCHAR(40),
DT_COMISSAO DATE
);


CREATE TABLE TBLPARAMETROS (
CODIGO INTEGER NOT NULL,
DESCRICAO VARCHAR(50) NOT NULL,
INTEIRO INTEGER,
TEXTO500 VARCHAR(500),
MOEDA152 NUMERIC(15,2),
DATAHORA TIMESTAMP
);


CREATE TABLE TBLPRODUTOS (
IDPRODUTO INTEGER NOT NULL,
CODBARRAS VARCHAR(20) NOT NULL,
DESCRICAO VARCHAR(40) NOT NULL,
UNIDADE VARCHAR(10) NOT NULL,
MINIMO FLOAT DEFAULT 0 NOT NULL,
QUANTIDADE1 FLOAT DEFAULT 0 NOT NULL,
QUANTIDADE2 FLOAT DEFAULT 0 NOT NULL,
CATEGORIA VARCHAR(20) NOT NULL,
FORNECEDOR VARCHAR(30),
MARCA VARCHAR(20) NOT NULL,
CUSTO NUMERIC(8,2) DEFAULT 0 NOT NULL,
PERC_LUCRO DOUBLE PRECISION NOT NULL,
VALOR_VENDA COMPUTED BY ((CUSTO + ((CUSTO * PERC_LUCRO)/100))),
LUCRO COMPUTED BY ((VALOR_VENDA - CUSTO)),
VALOR_TOTAL COMPUTED BY ((VALOR_VENDA * (QUANTIDADE1 + QUANTIDADE2))),
ATIVO SMALLINT DEFAULT 1,
ALT_POR VARCHAR(10) NOT NULL,
DT_ALT DATE DEFAULT ´NOW´,
LIMITE_DESC FLOAT DEFAULT 0,
SECAO SMALLINT DEFAULT 0,
ULTIMA_VENDA DATE,
SUBCATEGORIA VARCHAR(20),
DESC_PROG DOUBLE PRECISION,
INICIO_DESC DATE,
FINAL_DESC DATE,
REAJ_PROG FLOAT,
DT_REAJ DATE,
VALIDADE DATE NOT NULL,
SERVICO SMALLINT DEFAULT 0 NOT NULL,
COMISSAO_DIFERENCIADA NUMERIC(8,2) NOT NULL,
UNIDADE_VENDA VARCHAR(5) NOT NULL,
COM_DESCONTO COMPUTED BY (VALOR_VENDA - ((VALOR_VENDA * DESC_PROG) / 100)),
SITUACAO_TRIBUTARIA NUMERIC(8,2) NOT NULL,
DIAS_VALIDADE SMALLINT NOT NULL
);


CREATE TABLE TBLSUBCATEGORIAS (
IDSUBCATEGORIA INTEGER NOT NULL,
CATEGORIA VARCHAR(20) NOT NULL,
SUBCATEGORIA VARCHAR(20) NOT NULL
);


CREATE TABLE TBLTEMPINADIMPLENTES (
IDCLIENTE INTEGER,
NOME VARCHAR(40),
TEL_RESIDENCIAL VARCHAR(14),
TEL_CELULAR VARCHAR(14),
ATRASO_DESDE DATE,
TOTAL NUMERIC(15,3),
IDMICRO VARCHAR(10)
);


CREATE TABLE TBLVENDAS (
IDVENDA INTEGER NOT NULL,
IDMICRO VARCHAR(10) NOT NULL,
IDCLIENTE INTEGER NOT NULL,
VALOR_TOTAL NUMERIC(8,2) NOT NULL,
DT_ALT DATE DEFAULT ´NOW´,
ALT_POR VARCHAR(10) NOT NULL,
DESCONTO FLOAT DEFAULT 0 NOT NULL,
VALOR_FINAL COMPUTED BY (VALOR_TOTAL - ((VALOR_TOTAL*DESCONTO) / 100)),
TIPO SMALLINT DEFAULT 0 NOT NULL,
DATAHORA TIMESTAMP DEFAULT ´NOW´,
CLIENTE VARCHAR(40) NOT NULL,
MOT_SAIDA VARCHAR(30)
);




/******************************************************************************/
/**** Views ****/
/******************************************************************************/


/* View: VWPRODUTOS */
CREATE VIEW VWPRODUTOS(
IDPRODUTO,
CODBARRAS,
DESCRICAO,
UNIDADE,
MINIMO,
QUANTIDADE1,
QUANTIDADE2,
CATEGORIA,
FORNECEDOR,
MARCA,
CUSTO,
PERC_LUCRO,
VALOR_VENDA,
LUCRO,
VALOR_TOTAL,
ATIVO,
ALT_POR,
DT_ALT,
LIMITE_DESC,
SECAO,
ULTIMA_VENDA,
SUBCATEGORIA,
DESC_PROG,
INICIO_DESC,
FINAL_DESC,
REAJ_PROG,
DT_REAJ,
VALIDADE,
SERVICO,
COMISSAO_DIFERENCIADA,
UNIDADE_VENDA,
COM_DESCONTO,
SITUACAO_TRIBUTARIA,
DIAS_VALIDADE)
AS
select * from TBLPRODUTOS
;




/* Check constraints definition */

ALTER TABLE TBLPRODUTOS ADD CHECK(LIMITE_DESC < 100);
ALTER TABLE TBLPRODUTOS ADD CHECK ((UNIDADE = ´FRACIONADO´ OR UNIDADE = ´INTEIRO´));
ALTER TABLE TBLPRODUTOS ADD CONSTRAINT CHK_PERC_LUCRO check ((PERC_LUCRO > 0));
ALTER TABLE TBLENTRADAS ADD CHECK(QUANTIDADE > 0);
ALTER TABLE TBLPRODUTOS ADD CONSTRAINT CHK2_TBLPRODUTOS check (QUANTIDADE2 >= 0);


/******************************************************************************/
/**** Unique Constraints ****/
/******************************************************************************/

ALTER TABLE TBLACESSOS ADD CONSTRAINT UNQ_TBLACESSOS UNIQUE (IDFUNCIONARIO);
ALTER TABLE TBLCATEGORIAS ADD UNIQUE (CATEGORIA);
ALTER TABLE TBLCATORDEMSERVICOS ADD CONSTRAINT UNQ1_TBLCATORDEMSERVICOS UNIQUE (OBJETO);
ALTER TABLE TBLFORNECEDORES ADD UNIQUE (FORNECEDOR);
ALTER TABLE TBLFUNCIONARIOS ADD UNIQUE (LOGIN);
ALTER TABLE TBLMARCAORDEMSERVICOS ADD CONSTRAINT UNQ1_TBLMARCAORDEMSERVICOS UNIQUE (MARCA_OBJETO);
ALTER TABLE TBLMARCAS ADD UNIQUE (MARCA);
ALTER TABLE TBLMODELOORDEMSERVICOS ADD CONSTRAINT UNQ1_TBLMODELOORDEMSERVICOS UNIQUE (MODELO_OBJETO);
ALTER TABLE TBLNOTAS ADD CONSTRAINT UNQ_TBLNOTAS UNIQUE (NRONOTA, FORNECEDOR);
ALTER TABLE TBLPARAMETROS ADD CONSTRAINT UNQ_TBLPARAMETROS UNIQUE (DESCRICAO);
ALTER TABLE TBLPRODUTOS ADD UNIQUE (CODBARRAS);
ALTER TABLE TBLSUBCATEGORIAS ADD CONSTRAINT UNQ_TBLSUBCATEGORIAS UNIQUE (SUBCATEGORIA);


/******************************************************************************/
/**** Primary Keys ****/
/******************************************************************************/

ALTER TABLE TBLACESSOS ADD CONSTRAINT PK_TBLACESSOS PRIMARY KEY (IDACESSO);
ALTER TABLE TBLALTERACOES ADD CONSTRAINT PK_TBLALTERACOES PRIMARY KEY (ID);
ALTER TABLE TBLCAIXA ADD PRIMARY KEY (IDCAIXA);
ALTER TABLE TBLCATEGORIAS ADD CONSTRAINT PK_TBLCATEGORIAS PRIMARY KEY (IDCATEGORIA);
ALTER TABLE TBLCLIENTES ADD CONSTRAINT PK_TBLCLIENTES PRIMARY KEY (IDCLIENTE);
ALTER TABLE TBLCONTAS ADD CONSTRAINT PK_TBLCONTAS PRIMARY KEY (IDCONTA);
ALTER TABLE TBLCONTROLE ADD CONSTRAINT PK_TBLCONTROLE PRIMARY KEY (SEQUENCIA);
ALTER TABLE TBLCREDIARIO ADD CONSTRAINT PK_TBLCREDIARIO PRIMARY KEY (IDCREDIARIO);
ALTER TABLE TBLDOCUMENTOS ADD CONSTRAINT PK_TBLDOCUMENTOS PRIMARY KEY (TIPO_DOCUMENTO);
ALTER TABLE TBLENTRADAS ADD PRIMARY KEY (IDENTRADA);
ALTER TABLE TBLESTATISTICASVENDA ADD CONSTRAINT PK_TBLESTATISTICASVENDA PRIMARY KEY (IDVENDA);
ALTER TABLE TBLEXTRPONTO ADD CONSTRAINT PK_TBLEXTRPONTO PRIMARY KEY (CODIGO_FUNCI, DATA_JORNADA);
ALTER TABLE TBLFORNECEDORES ADD PRIMARY KEY (IDFORNECEDOR);
ALTER TABLE TBLFREQUENCIA ADD CONSTRAINT PK_TBLFREQUENCIA PRIMARY KEY (CODIGO);
ALTER TABLE TBLFUNCIONARIOS ADD CONSTRAINT PK_TBLFUNCIONARIOS PRIMARY KEY (IDFUNCIONARIO);
ALTER TABLE TBLHISTORICOVENDA ADD CONSTRAINT PK_TBLHISTORICOVENDA PRIMARY KEY (IDHISTORICOVENDA);
ALTER TABLE TBLIVENDAS ADD CONSTRAINT PK_TBLIVENDAS PRIMARY KEY (IDITEM);
ALTER TABLE TBLLOJAS ADD CONSTRAINT PK_TBLLOJAS PRIMARY KEY (CNPJ);
ALTER TABLE TBLMARCAS ADD PRIMARY KEY (IDMARCA);
ALTER TABLE TBLNOTAS ADD PRIMARY KEY (IDNOTA);
ALTER TABLE TBLORDEMSERVICOS ADD CONSTRAINT PK_TBLORDEMSERVICOS PRIMARY KEY (IDORDEM);
ALTER TABLE TBLPARAMETROS ADD PRIMARY KEY (CODIGO);
ALTER TABLE TBLPRODUTOS ADD PRIMARY KEY (IDPRODUTO);
ALTER TABLE TBLSUBCATEGORIAS ADD PRIMARY KEY (IDSUBCATEGORIA);
ALTER TABLE TBLVENDAS ADD PRIMARY KEY (IDVENDA);


/******************************************************************************/
/**** Foreign Keys ****/
/******************************************************************************/

ALTER TABLE TBLACESSOS ADD CONSTRAINT FK_TBLACESSOS FOREIGN KEY (IDFUNCIONARIO) REFERENCES TBLFUNCIONARIOS (IDFUNCIONARIO) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE TBLAMORTIZACOESPARCELAS ADD CONSTRAINT FK_TBLAMORTIZACOESPARCELAS_ FOREIGN KEY (IDCREDIARIO) REFERENCES TBLCREDIARIO (IDCREDIARIO) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE TBLCAIXA ADD FOREIGN KEY (ALT_POR) REFERENCES TBLFUNCIONARIOS (LOGIN) ON UPDATE CASCADE;
ALTER TABLE TBLCLIENTES ADD CONSTRAINT FK_TBLCLIENTES_FUNCI FOREIGN KEY (ALT_POR) REFERENCES TBLFUNCIONARIOS (LOGIN) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE TBLCLIENTES ADD CONSTRAINT FK_TBLCLIENTES_FUNCI2 FOREIGN KEY (CAD_POR) REFERENCES TBLFUNCIONARIOS (LOGIN) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE TBLCONTAS ADD CONSTRAINT FK_TBLCONTAS_FUNCI FOREIGN KEY (CAD_POR) REFERENCES TBLFUNCIONARIOS (LOGIN) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE TBLCONTAS ADD CONSTRAINT FK_TBLCONTAS_FUNCI2 FOREIGN KEY (REAL_POR) REFERENCES TBLFUNCIONARIOS (LOGIN) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE TBLCREDIARIO ADD CONSTRAINT FK_VENDA FOREIGN KEY (IDVENDA) REFERENCES TBLVENDAS (IDVENDA) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE TBLENTRADAS ADD CONSTRAINT FK_TBLENTRADAS FOREIGN KEY (CODBARRAS) REFERENCES TBLPRODUTOS (CODBARRAS) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE TBLENTRADAS ADD CONSTRAINT FK_TBLENTRADAS_FUNCI FOREIGN KEY (ALT_POR) REFERENCES TBLFUNCIONARIOS (LOGIN) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE TBLENTRADAS ADD FOREIGN KEY (IDNOTA) REFERENCES TBLNOTAS (IDNOTA) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE TBLESTATISTICASVENDA ADD CONSTRAINT FK_TBLESTATISTICASVENDA_1 FOREIGN KEY (IDVENDA) REFERENCES TBLVENDAS (IDVENDA) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE TBLHISTORICOVENDA ADD CONSTRAINT FK_TBLHISTORICOVENDA_1 FOREIGN KEY (IDVENDA) REFERENCES TBLVENDAS (IDVENDA) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE TBLHISTORICOVENDA ADD CONSTRAINT FK_TBLHISTORICOVENDA_2 FOREIGN KEY (RESP_HISTORICO) REFERENCES TBLFUNCIONARIOS (LOGIN) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE TBLIVENDAS ADD CONSTRAINT FK_TBLIVENDAS_2 FOREIGN KEY (IDVENDA) REFERENCES TBLVENDAS (IDVENDA) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE TBLMODELOORDEMSERVICOS ADD CONSTRAINT FK_TBLMODELOORDEMSERVICOS_1 FOREIGN KEY (MARCA_OBJETO) REFERENCES TBLMARCAORDEMSERVICOS (MARCA_OBJETO) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE TBLNOTAS ADD CONSTRAINT FK_TBLNOTAS_FUNCI FOREIGN KEY (ALT_POR) REFERENCES TBLFUNCIONARIOS (LOGIN) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE TBLNOTAS ADD FOREIGN KEY (FORNECEDOR) REFERENCES TBLFORNECEDORES (FORNECEDOR) ON UPDATE CASCADE;
ALTER TABLE TBLPRODUTOS ADD CONSTRAINT FK_PROD_CATEG FOREIGN KEY (CATEGORIA) REFERENCES TBLCATEGORIAS (CATEGORIA) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE TBLPRODUTOS ADD CONSTRAINT FK_PROD_FUNCI FOREIGN KEY (ALT_POR) REFERENCES TBLFUNCIONARIOS (LOGIN) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE TBLPRODUTOS ADD CONSTRAINT FK_PROD_SUBCATEG FOREIGN KEY (SUBCATEGORIA) REFERENCES TBLSUBCATEGORIAS (SUBCATEGORIA) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE TBLSUBCATEGORIAS ADD FOREIGN KEY (CATEGORIA) REFERENCES TBLCATEGORIAS (CATEGORIA) ON DELETE CASCADE ON UPDATE CASCADE;


/******************************************************************************/
/**** Indices ****/
/******************************************************************************/

CREATE UNIQUE INDEX TBLPRODUTOS_IDX1 ON TBLPRODUTOS (CODBARRAS);
CREATE INDEX TBLPRODUTOS_IDX2 ON TBLPRODUTOS (DESCRICAO);


/******************************************************************************/
/**** Triggers ****/
/******************************************************************************/


SET TERM ^ ;


/******************************************************************************/
/**** Triggers for tables ****/
/******************************************************************************/



/* Trigger: TRG_ACESSOS */
CREATE TRIGGER TRG_ACESSOS FOR TBLACESSOS
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
NEW.IDACESSO = GEN_ID(GN_ACESSOS,1);
END
^


/* Trigger: TRG_ALTERACOES */
CREATE TRIGGER TRG_ALTERACOES FOR TBLALTERACOES
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
NEW.ID = GEN_ID(GN_ALTERACAO,1);
END
^


/* Trigger: TRG_CAIXA */
CREATE TRIGGER TRG_CAIXA FOR TBLCAIXA
ACTIVE BEFORE INSERT POSITION 0
AS BEGIN
NEW.IDCAIXA = GEN_ID(GN_CAIXA,1);
END
^


/* Trigger: TRG_CATEGORIAS */
CREATE TRIGGER TRG_CATEGORIAS FOR TBLCATEGORIAS
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
NEW.IDCATEGORIA = GEN_ID(GN_CATEGORIA,1);
END
^


/* Trigger: TRG_CLIENTES */
CREATE TRIGGER TRG_CLIENTES FOR TBLCLIENTES
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
NEW.IDCLIENTE = GEN_ID(GN_CLIENTE,1);
END
^


/* Trigger: TRG_CONTAS */
CREATE TRIGGER TRG_CONTAS FOR TBLCONTAS
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
NEW.IDCONTA = GEN_ID(GN_CONTA,1);
END
^


/* Trigger: TRG_CONTROLE */
CREATE TRIGGER TRG_CONTROLE FOR TBLCONTROLE
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
NEW.SEQUENCIA = GEN_ID(GN_CONTROLE,1);
END
^


/* Trigger: TRG_CREDIARIO */
CREATE TRIGGER TRG_CREDIARIO FOR TBLCREDIARIO
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
NEW.IDCREDIARIO = GEN_ID(GN_CREDIARIO,1);
END
^


/* Trigger: TRG_ENTRADAS */
CREATE TRIGGER TRG_ENTRADAS FOR TBLENTRADAS
ACTIVE BEFORE INSERT POSITION 0
AS BEGIN
NEW.IDENTRADA = GEN_ID(GN_ENTRADA,1);
END
^


/* Trigger: TRG_FORNECEDORES */
CREATE TRIGGER TRG_FORNECEDORES FOR TBLFORNECEDORES
ACTIVE BEFORE INSERT POSITION 0
as
begin
new.idfornecedor = gen_id(gn_fornecedor,1);
end
^


/* Trigger: TRG_FREQUENCIA */
CREATE TRIGGER TRG_FREQUENCIA FOR TBLFREQUENCIA
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
NEW.CODIGO = GEN_ID(GEN_FREQUENCIA,1);
END
^


/* Trigger: TRG_FUNCIONARIOS */
CREATE TRIGGER TRG_FUNCIONARIOS FOR TBLFUNCIONARIOS
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
NEW.IDFUNCIONARIO = GEN_ID(GN_FUNCIONARIO,1);
END
^


/* Trigger: TRG_HISTORICOVENDA */
CREATE TRIGGER TRG_HISTORICOVENDA FOR TBLHISTORICOVENDA
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
NEW.IDHISTORICOVENDA = GEN_ID(GN_HISTORICOVENDA,1);
END
^


/* Trigger: TRG_IVENDAS */
CREATE TRIGGER TRG_IVENDAS FOR TBLIVENDAS
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
NEW.IDITEM = GEN_ID(GN_IVENDAS,1);
END
^


/* Trigger: TRG_MARCAS */
CREATE TRIGGER TRG_MARCAS FOR TBLMARCAS
ACTIVE BEFORE INSERT POSITION 0
as
begin
new.idmarca = gen_id(gn_marca,1);
end
^


/* Trigger: TRG_NOTAS */
CREATE TRIGGER TRG_NOTAS FOR TBLNOTAS
ACTIVE BEFORE INSERT POSITION 0
AS BEGIN
NEW.IDNOTA = GEN_ID(GN_NOTA,1);
END
^


/* Trigger: TRG_ORDEM_SERVICOS */
CREATE TRIGGER TRG_ORDEM_SERVICOS FOR TBLORDEMSERVICOS
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
NEW.IDORDEM = GEN_ID(GN_ORDEM_SERVICOS,1);
END
^


/* Trigger: TRG_PARAMETROS */
CREATE TRIGGER TRG_PARAMETROS FOR TBLPARAMETROS
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
NEW.CODIGO = GEN_ID(GN_PARAMETROS,1);
END
^


/* Trigger: TRG_PRODUTOS */
CREATE TRIGGER TRG_PRODUTOS FOR TBLPRODUTOS
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
NEW.IDPRODUTO = GEN_ID(GN_PRODUTO,1);
END
^


/* Trigger: TRG_SUBCATEGORIAS */
CREATE TRIGGER TRG_SUBCATEGORIAS FOR TBLSUBCATEGORIAS
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
NEW.IDSUBCATEGORIA = GEN_ID(GN_SUBCATEGORIA,1);
END
^


/* Trigger: TRG_VENDAS */
CREATE TRIGGER TRG_VENDAS FOR TBLVENDAS
ACTIVE BEFORE INSERT POSITION 0
AS BEGIN
NEW.IDVENDA = GEN_ID(GN_VENDA,1);
END
^


SET TERM ; ^



/******************************************************************************/
/**** Stored Procedures ****/
/******************************************************************************/


SET TERM ^ ;

ALTER PROCEDURE SP_ALTERA_ESTOQUE (
VAR_CODBARRAS VARCHAR(20),
VAR_QUANTIDADE NUMERIC(15,2))
AS
begin
update TBLPRODUTOS set QUANTIDADE1 = QUANTIDADE1 + :var_quantidade where CODBARRAS = :var_codbarras;
end
^

ALTER PROCEDURE SP_CONFIRMA_VENDA (
IDVENDA INTEGER)
AS
DECLARE VARIABLE CODBARRAS VARCHAR(20);
DECLARE VARIABLE QUANTIDADE FLOAT;
DECLARE VARIABLE ESTOQUE FLOAT;
DECLARE VARIABLE IDITEM INTEGER;
DECLARE VARIABLE TOTALVENDA NUMERIC(8,2);
begin
for select IDITEM, CODBARRAS, QUANTIDADE from TBLIVENDAS where IDVENDA = :idvenda and CONFIRMADO = 0 into :IDITEM, :CODBARRAS, :QUANTIDADE do
begin
select QUANTIDADE1 from TBLPRODUTOS where CODBARRAS = :CODBARRAS into :ESTOQUE;
if (:ESTOQUE >= :QUANTIDADE) then
begin
update TBLPRODUTOS set QUANTIDADE1 = QUANTIDADE1 - :QUANTIDADE, ULTIMA_VENDA = CURRENT_DATE where CODBARRAS = :CODBARRAS and SERVICO = 0;
update TBLIVENDAS set CONFIRMADO = 1 where IDITEM = :IDITEM;
end
end
delete from TBLIVENDAS where IDVENDA = :idvenda and CONFIRMADO = 0;
select sum(VALOR * QUANTIDADE) as TOTAL from TBLIVENDAS where IDVENDA = :idvenda into :TOTALVENDA;
if (:TOTALVENDA is null) then
TOTALVENDA = 0;
update TBLVENDAS set VALOR_TOTAL = :TOTALVENDA where IDVENDA = :idvenda;
end
^

ALTER PROCEDURE SP_ENTRADASPENDENTES (
IDNOTA INTEGER,
CONFIRMA SMALLINT)
RETURNS (
IDENTRADA INTEGER,
PRODUTO VARCHAR(40),
QUANTIDADE DOUBLE PRECISION,
CUSTO NUMERIC(8,2),
LUCRO DOUBLE PRECISION,
VENDA DOUBLE PRECISION)
AS
DECLARE VARIABLE CODBARRAS VARCHAR(20);
DECLARE VARIABLE DESTINO VARCHAR(30);
DECLARE VARIABLE VALOR_NOVO NUMERIC(15,2);
begin
for select e.identrada, p.codbarras, p.descricao, e.quantidade, p.custo, p.lucro, p.valor_venda, e.destino, e.valor from tblprodutos p, tblentradas e where p.codbarras = e.codbarras and e.idnota = :idnota and e.ok = 0 and e.destino = ´PRATELEIRA´ into :identrada, :codbarras, :produto, :quantidade, :custo, :lucro, :venda, :destino, :valor_novo
do
begin
if (:confirma = 0) then
suspend;
else
begin
if (:destino = ´PRATELEIRA´) then
update tblprodutos set fornecedor = (select fornecedor from tblnotas where idnota = :idnota), quantidade1 = quantidade1 + :quantidade, custo = :valor_novo where codbarras = :codbarras;
end
end


for select e.identrada, p.codbarras, p.descricao, e.quantidade, p.custo, p.lucro, p.valor_venda, e.destino, e.valor from tblprodutos p, tblentradas e where p.codbarras = e.codbarras and e.idnota = :idnota and e.ok = 0 and e.destino = ´DEPÓSITO´ into :identrada, :codbarras, :produto, :quantidade, :custo, :lucro, :venda, :destino, :valor_novo
do
begin
if (:confirma = 0) then
suspend;
else
begin
if (:destino = ´DEPÓSITO´) then
update tblprodutos set fornecedor = (select fornecedor from tblnotas where idnota = :idnota), quantidade2 = quantidade2 + :quantidade, custo = :valor_novo where codbarras = :codbarras;

end
end

update tblentradas set ok = 1 where codbarras = :codbarras and idnota = :idnota;
end
^

ALTER PROCEDURE SP_INADIMPLENTES (
IDMICRO VARCHAR(10))
RETURNS (
IDCLIENTE INTEGER,
NOME VARCHAR(40),
TEL_RESIDENCIAL VARCHAR(14),
TEL_CELULAR VARCHAR(14),
ATRASO_DESDE DATE,
MONTANTE NUMERIC(15,3))
AS
begin
delete from TBLTEMPINADIMPLENTES where IDMICRO = :IDMICRO;
for select distinct IDCLIENTE from TBLVENDAS where IDVENDA in (select IDVENDA from TBLCREDIARIO where VALOR_PAGO < VALOR_PARCELA and DATA_VENCIMENTO < CURRENT_DATE) into :IDCLIENTE do
begin
select sum((VALOR_PARCELA - VALOR_PAGO) + ((CURRENT_DATE - DATA_VENCIMENTO) * ((VALOR_PARCELA - VALOR_PAGO) * 1)) / 100) as TOTAL, min(DATA_VENCIMENTO) as P_ATRASO from TBLCREDIARIO where IDVENDA in (select IDVENDA from TBLVENDAS where IDCLIENTE = :IDCLIENTE) and VALOR_PARCELA > VALOR_PAGO and DATA_VENCIMENTO < CURRENT_DATE into :MONTANTE, :ATRASO_DESDE;
select NOME, TEL_RESIDENCIAL, TEL_CELULAR from TBLCLIENTES where IDCLIENTE = :IDCLIENTE into :NOME, :TEL_RESIDENCIAL, :TEL_CELULAR;
insert into TBLTEMPINADIMPLENTES (IDCLIENTE, NOME, TEL_RESIDENCIAL, TEL_CELULAR, ATRASO_DESDE, TOTAL, IDMICRO) values (:idcliente, :nome, :tel_residencial, :tel_celular, :atraso_desde, :montante, :idmicro);
end
for select IDCLIENTE, NOME, TEL_RESIDENCIAL, TEL_CELULAR, ATRASO_DESDE, TOTAL from TBLTEMPINADIMPLENTES where IDMICRO = :IDMICRO order by TOTAL desc into :IDCLIENTE, :NOME, :TEL_RESIDENCIAL, :TEL_CELULAR, :ATRASO_DESDE, :MONTANTE do
suspend;
end
^

ALTER PROCEDURE SP_INICIA_SISTEMA (
MICRO_SOLICITANTE VARCHAR(10))
AS
DECLARE VARIABLE DELETA SMALLINT;
DECLARE VARIABLE CODBARRAS VARCHAR(20);
DECLARE VARIABLE QUANTIDADE FLOAT;
DECLARE VARIABLE VENDAAPAGAR INTEGER;
DECLARE VARIABLE MAXVENDA INTEGER;
DECLARE VARIABLE VAR_IDMICRO VARCHAR(10);
begin

delete from tblnotas where idnota in(select distinct idnota from tblentradas where ok = 0) or idnota not in (select idnota from tblentradas);

update tblprodutos set inicio_desc = null, final_desc = null, desc_prog = 0 where ((inicio_desc < CURRENT_DATE) or (desc_prog = 0));

select DELECAO_AUTOMATICA from TBLLOJAS into :DELETA;

if (:deleta = 1) then
begin
delete from TBLPRODUTOS where QUANTIDADE1 = 0 and QUANTIDADE2 = 0;
end

if (:micro_solicitante = ´NENHUM´) then
begin
for select distinct IDMICRO from TBLVENDAS into :VAR_IDMICRO do
begin
select max(IDVENDA) from TBLVENDAS where IDMICRO = :VAR_IDMICRO into :MAXVENDA;
for select IDVENDA from TBLVENDAS where (TIPO = 2 and IDVENDA < :MAXVENDA and IDMICRO = :VAR_IDMICRO) into :VENDAAPAGAR do
begin
for select CODBARRAS, QUANTIDADE from TBLIVENDAS where IDVENDA = :VENDAAPAGAR into :CODBARRAS, :QUANTIDADE do
begin
update TBLPRODUTOS set QUANTIDADE1 = QUANTIDADE1 + :QUANTIDADE where CODBARRAS = :CODBARRAS and SERVICO = 0;
end
delete from TBLVENDAS where IDVENDA = :VENDAAPAGAR;
end
delete from TBLVENDAS where TIPO = 0 and IDVENDA < :MAXVENDA and IDMICRO = :VAR_IDMICRO;
/*
delete from TBLVENDAS where TIPO = 1 and IDVENDA < :MAXVENDA and IDMICRO = :VAR_IDMICRO and IDVENDA not in (select distinct IDVENDA from tblivendas where IDVENDA in (select IDVENDA from TBLVENDAS where IDMICRO = :VAR_IDMICRO));
*/
end
end


if (:micro_solicitante <> ´NENHUM´) then
begin
/*for select distinct IDMICRO from TBLVENDAS into :VAR_IDMICRO do
begin*/
select max(IDVENDA) from TBLVENDAS where IDMICRO = :micro_solicitante into :MAXVENDA;
for select IDVENDA from TBLVENDAS where (TIPO = 2 and IDVENDA <= :MAXVENDA and IDMICRO = :micro_solicitante) into :VENDAAPAGAR do
begin
for select CODBARRAS, QUANTIDADE from TBLIVENDAS where IDVENDA = :VENDAAPAGAR into :CODBARRAS, :QUANTIDADE do
begin
update TBLPRODUTOS set QUANTIDADE1 = QUANTIDADE1 + :QUANTIDADE where CODBARRAS = :CODBARRAS and SERVICO = 0;
end
delete from TBLVENDAS where IDVENDA = :VENDAAPAGAR;
end
delete from TBLVENDAS where TIPO = 0 and IDVENDA <= :MAXVENDA and IDMICRO = :micro_solicitante;
/*
delete from TBLVENDAS where TIPO = 1 and IDVENDA < :MAXVENDA and IDMICRO = :micro_solicitante and IDVENDA not in (select distinct IDVENDA from tblivendas where IDVENDA in (select IDVENDA from TBLVENDAS where IDMICRO = :micro_solicitante));
*/
/* end*/
end


end
^

ALTER PROCEDURE SP_MAIS_VENDIDOS (
DTINICIAL DATE,
DTFINAL DATE)
RETURNS (
CODBARRAS VARCHAR(20),
DESCRICAO VARCHAR(40),
QUANTIDADE NUMERIC(8,2),
LUCRO NUMERIC(15,2),
VENDAS INTEGER,
VALOR_VENDAS NUMERIC(15,2))
AS
DECLARE VARIABLE VAR_CODBARRAS CHAR(20);
begin
for select distinct CODBARRAS from TBLIVENDAS where IDVENDA in (select distinct IDVENDA from TBLVENDAS where TIPO = 3 and DT_ALT between :dtinicial and :dtfinal) into :VAR_CODBARRAS do
begin
select sum(QUANTIDADE) as TOTAL from TBLIVENDAS where IDVENDA in (select distinct IDVENDA from TBLVENDAS where TIPO = 3 and DT_ALT between :dtinicial and :dtfinal) and CODBARRAS = :VAR_CODBARRAS into :QUANTIDADE;
select CODBARRAS, DESCRICAO from TBLPRODUTOS where CODBARRAS = :VAR_CODBARRAS into :CODBARRAS, :DESCRICAO;
select count(IDVENDA) as VENDAS, sum(QUANTIDADE*(VALOR - CUSTO_ATUAL)) as LUCRO, sum(QUANTIDADE * VALOR) as VALOR_VENDAS from TBLIVENDAS where IDVENDA in (select distinct IDVENDA from TBLVENDAS where TIPO = 3 and DT_ALT between :dtinicial and :dtfinal) and CODBARRAS = :VAR_CODBARRAS into :VENDAS, :LUCRO, :VALOR_VENDAS;
suspend;
end
end
^

ALTER PROCEDURE SP_MOSTRA_ALTERACOES_VENDA (
IDVENDA INTEGER)
RETURNS (
DATA_MOD DATE,
TIPO INTEGER,
CODBARRAS VARCHAR(20),
DESCRICAO VARCHAR(40),
QUANTIDADE NUMERIC(8,2),
SUBTOTAL NUMERIC(15,2),
VLR_UNITARIO NUMERIC(15,2))
AS
DECLARE VARIABLE VAR_EXCLUSAO SMALLINT;
DECLARE VARIABLE VAR_INCLUSAO SMALLINT;
DECLARE VARIABLE VAR_DATE DATE;
DECLARE VARIABLE VAR_SOMA NUMERIC(10,2);
DECLARE VARIABLE VAR_SALDO_ANTERIOR NUMERIC(10,2);
begin
var_inclusao = 0;
var_exclusao = 0;
var_soma = 0;

/*ACRESCENTA OS PRODUTOS INICIAIS*/
for select distinct CAST(DATAHORA AS DATE) from tblhistoricovenda where IDVENDA = :idvenda and EXCLUSAOOUINCLUSAO = -1 into :VAR_DATE do
begin
for select DATAHORA, EXCLUSAOOUINCLUSAO, CODBARRAS, DESCRICAO, QUANTIDADE, SUBTOTAL, VALOR_UNITARIO from tblhistoricovenda where IDVENDA = :idvenda and CAST(DATAHORA AS DATE) = :var_date and EXCLUSAOOUINCLUSAO = -1 into :data_mod, :tipo, :codbarras, :descricao, :quantidade, :subtotal, :vlr_unitario do
begin
var_soma = :var_soma + :subtotal;
suspend;
end

data_mod = null;
codbarras = null;
descricao = ´ VALOR INICIAL:´;

quantidade = null;
tipo = null;
vlr_unitario = null;
select sum(subtotal) from tblhistoricovenda where idvenda = :idvenda and exclusaoouinclusao = -1 into :subtotal;
suspend;
end

/* FIM ACRESCENTA OS PRODUTOS INICIAIS*/

for select distinct CAST(DATAHORA AS DATE) from tblhistoricovenda where IDVENDA = :idvenda and EXCLUSAOOUINCLUSAO > -1 into :VAR_DATE do
begin
for select DATAHORA, EXCLUSAOOUINCLUSAO, CODBARRAS, DESCRICAO, QUANTIDADE, SUBTOTAL, VALOR_UNITARIO from tblhistoricovenda where IDVENDA = :idvenda and CAST(DATAHORA AS DATE) = :var_date and exclusaoouinclusao > -1 into :data_mod, :tipo, :codbarras, :descricao, :quantidade, :subtotal, :vlr_unitario do
begin
if (:tipo = 0) then
var_exclusao = 1;
if (:tipo = 1) then
var_inclusao = 1;
var_soma = :var_soma + :subtotal;
suspend;
end

data_mod = null;
codbarras = null;
if ((:var_exclusao = 1) and (:var_inclusao = 1)) then
descricao = ´ TROCAS:´;
else if (:var_exclusao = 1) then
descricao = ´ DEVOLUÇÕES:´;
else if (:var_inclusao = 1) then
descricao = ´ ACRÉSCIMOS:´;

quantidade = null;
tipo = null;
vlr_unitario = null;
select sum(subtotal) from tblhistoricovenda where idvenda = :idvenda and cast(DATAHORA AS DATE) = :var_date and EXCLUSAOOUINCLUSAO > -1 into :subtotal;
suspend;

/*mostra saldo atual*/
data_mod = null;
codbarras = null;
descricao = ´ VALOR ATUAL:´;
quantidade = null;
tipo = null;
subtotal = var_soma;
suspend;

var_inclusao = 0;
var_exclusao = 0;
end
end
^


SET TERM ; ^


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar