ALTER TABLE PRODUTOS ADD IDFABRICA VARCHAR_50; SET TERM ^ ; CREATE OR ALTER procedure TOTALMOV ( MOVIMENTO integer) returns ( TOTALPRODUTOSSEMDESC float, TOTALPRODUTOS float, TOTALCUSTO float, TOTALDESPESAS float, TOTALGERAL float, TOTALIPI float, PARCELAS float, CHEQUE float, CARTAO float, SOMAPAGAMENTOS float, COMISSAOPORPROD float, DINHEIRO float, VALORDESCONTO float, VBCST numeric(10,2), VICMSST numeric(10,2), TOTALAVISTA float, FRETE float, TOTALICMS float, BASEICMS float, BASEIPI float, QTDTOTAL float, CARTAOCRED float, CARTAODEB float) as declare variable PRODUTOS float; declare variable CUSTO float; declare variable DESPESAS float; declare variable OS float; declare variable IPI float; declare variable SOMAIPI float; declare variable VALORIPI float; declare variable DESCONTO float; declare variable ACRESCIMO float; declare variable EMDINHEIRO float; declare variable DESPREC float; declare variable COMISSAO float; declare variable TIPODESCONTO char(1); declare variable TIPOACRESCIMO char(1); declare variable BASEDESCONTO float; begin /* TOTAL DE PRODUTOS SELECT SUM(IM.QTD * IM.VALOR) AS TOTALPRODUTOS FROM MOVIMENTOSPRODUTOS M LEFT JOIN ITENSMOVIMENTOPROD IM ON (IM.CODMOVIMENTO = M.CODMOVIMENTO) WHERE M.CODMOVIMENTO=:MOVIMENTO INTO :PRODUTOS; if (:PRODUTOS IS NULL) then TOTALPRODUTOS=0; ELSE TOTALPRODUTOS=PRODUTOS; */ SELECT SUM(QTD), SUM(IM.QTD * IM.VALORUNIT), SUM(IM.QTD * IM.VALOR), SUM(IM.QTD * IM.VALORCUSTO), SUM(IM.QTD * IM.VALORAVISTA) FROM ITENSMOVIMENTOPROD IM WHERE IM.CODMOVIMENTO=:MOVIMENTO AND (IM.TIPO='I' or IM.TIPO IS NULL) INTO :QTDTOTAL, :TOTALPRODUTOSSEMDESC, :PRODUTOS, :CUSTO, :TOTALAVISTA; if (:PRODUTOS IS NULL) then TOTALPRODUTOS=0; ELSE TOTALPRODUTOS=PRODUTOS; if (:CUSTO IS NULL) then TOTALCUSTO=0; ELSE TOTALCUSTO=CUSTO; if (TOTALPRODUTOSSEMDESC IS NULL) then TOTALPRODUTOSSEMDESC = 0; COMISSAOPORPROD = 0; FOR SELECT (SUM(IM.QTD * IM.VALOR) * IM.COMISSAO)/100 FROM ITENSMOVIMENTOPROD IM WHERE IM.CODMOVIMENTO=:MOVIMENTO GROUP BY IM.QTD, IM.valor, IM.COMISSAO INTO :COMISSAO DO BEGIN if (NOT COMISSAO IS NULL) then COMISSAOPORPROD=COMISSAOPORPROD + COMISSAO; END SELECT SUM(BASECALCULOICMS), SUM(BASEIPI), SUM(TOTALIPI), SUM(TOTALICMS), SUM(VBCST), SUM(VICMSST) from SPITENSMOV(:MOVIMENTO) INTO :BASEICMS, :BASEIPI, :VALORIPI, :TOTALICMS, :VBCST, :VICMSST; If (:VALORIPI IS NULL) then VALORIPI=0; If (:TOTALICMS IS NULL) then TOTALICMS=0; /*DADOS MOV*/ SELECT D.ACRESCIMO, D.DESCONTO, D.TIPOACRESCIMO, D.TIPODESCONTO FROM DADOSMOVIMENTO D WHERE D.CODMOVIMENTO=:MOVIMENTO INTO :ACRESCIMO, :DESCONTO, :TIPOACRESCIMO, :TIPODESCONTO; If (:ACRESCIMO IS NULL) THEN ACRESCIMO = 0; IF (:DESCONTO IS NULL) THEN DESCONTO = 0; /*SOMA DESPESAS*/ SELECT SUM(DM.VALOR) AS TOTALDESPESAS FROM MOVIMENTOSPRODUTOS M LEFT JOIN DESPESAMOVIMENTO DM ON (DM.CODMOVIMENTO = M.CODMOVIMENTO) WHERE M.CODMOVIMENTO=:MOVIMENTO INTO :DESPESAS; if (:DESPESAS IS NULL) then TOTALDESPESAS=0; ELSE TOTALDESPESAS=DESPESAS; /*SOMA CARTAO*/ SELECT SUM(PCC.VALORPARCELA) FROM CONTASPAGARRECEBER CPR JOIN PARCELASCARTAO PCC ON (PCC.CODCONTA = CPR.CODCONTA) WHERE CPR.CODMOVIMENTO=:MOVIMENTO INTO :CARTAO; IF (:CARTAO IS NULL) then CARTAO=0; /*SOMA PARCELAS*/ SELECT SUM(PC.VALORPARCELA) FROM CONTASPAGARRECEBER CPR JOIN PARCELASCONTAS PC ON (PC.CODCONTA = CPR.CODCONTA) WHERE CPR.CODMOVIMENTO=:MOVIMENTO INTO :PARCELAS; IF (:PARCELAS IS NULL) then PARCELAS=0; /*SOMA CHEQUE*/ SELECT SUM(CH.VALOR) FROM CONTASPAGARRECEBER CPR JOIN CHCONTAS CC ON (CC.CODCONTA = CPR.CODCONTA) JOIN CHEQUES CH ON (CH.CODCHEQUE = CC.CODCHEQUE) WHERE CPR.CODMOVIMENTO=:MOVIMENTO INTO :CHEQUE; IF (:CHEQUE IS NULL) then CHEQUE=0; /*DINHEIRO*/ SELECT D.VALOR FROM CONTASPAGARRECEBER CPR JOIN DINHEIRO D ON (D.CODCONTA = CPR.CODCONTA) WHERE CPR.CODMOVIMENTO=:MOVIMENTO INTO :EMDINHEIRO; IF (:EMDINHEIRO IS NULL) then EMDINHEIRO=0; DINHEIRO = EMDINHEIRO; /*CARTAO */ CARTAOCRED =0; SELECT M.VALOR FROM CAIXAMOV M WHERE M.CODMOVIMENTO=:MOVIMENTO and m.FORMAPGTO='CARTAO CRE' INTO :CARTAOCRED; if (:CARTAOCRED IS NULL) then CARTAOCRED=0; CARTAODEB =0; SELECT M.VALOR FROM CAIXAMOV M WHERE M.CODMOVIMENTO=:MOVIMENTO and m.FORMAPGTO='CARTAO DEB' INTO :CARTAODEB; if (:CARTAODEB IS NULL) then CARTAODEB=0; /*SOMA NOVO IPI*/ SOMAIPI = 0; FOR SELECT ((CAST(IM.BASEIPI AS FLOAT)) * CAST(IM.IPI AS FLOAT))/100 FROM MOVIMENTOSPRODUTOS M LEFT JOIN ITENSMOVIMENTOPROD IM ON (IM.CODMOVIMENTO = M.CODMOVIMENTO) WHERE M.CODMOVIMENTO=:MOVIMENTO AND NOT IM.IPI IS NULL INTO :IPI DO BEGIN SOMAIPI = SOMAIPI + IPI; END IF (:VALORIPI IS NULL) then TOTALIPI=0; ELSE TOTALIPI=VALORIPI; /*DINHEIRO*/ SELECT DR.VALOR FROM DESPESASRECEITAS DR WHERE DR.CODMOVIMENTO=:MOVIMENTO INTO :DESPREC; IF (:DESPREC IS NULL) then DESPREC =0; SELECT S.TOTAL FROM SERVICOS S WHERE S.CODMOVIMENTO=:MOVIMENTO INTO :OS; IF (:OS IS NULL) then OS =0; SELECT FM.VALOR FROM FRETEMOVIMENTO FM WHERE FM.CODMOVIMENTO=:MOVIMENTO INTO :FRETE; IF (:FRETE IS NULL) then FRETE =0; SELECT SUM(COALESCE(VALORBASE, VALOR * QTD)) FROM ITENSMOVIMENTOPROD IM WHERE IM.CODMOVIMENTO=:MOVIMENTO INTO :BASEDESCONTO; IF (:BASEDESCONTO IS NULL) then BASEDESCONTO =0; SOMAPAGAMENTOS = EMDINHEIRO + CHEQUE + PARCELAS + CARTAO; TOTALGERAL = TOTALPRODUTOS + TOTALDESPESAS + TOTALIPI + DESPREC + OS + :FRETE; VALORDESCONTO = 0; If (:DESCONTO>0) Then Begin If (:TIPODESCONTO = '%') Then Begin VALORDESCONTO = BASEDESCONTO - (BASEDESCONTO - ((BASEDESCONTO * DESCONTO)/100)); TOTALGERAL = TOTALGERAL - VALORDESCONTO; End If (:TIPODESCONTO = '$' )Then Begin VALORDESCONTO = BASEDESCONTO - ( BASEDESCONTO - DESCONTO); TOTALGERAL = TOTALGERAL - VALORDESCONTO; End End If (:ACRESCIMO>0) Then Begin If (:TIPOACRESCIMO = '%') Then Begin TOTALGERAL = TOTALGERAL + ((TOTALGERAL * ACRESCIMO)/100); End If (:TIPOACRESCIMO = '$' )Then Begin TOTALGERAL = TOTALGERAL + ACRESCIMO; End End suspend; end^ SET TERM ; ^ SET TERM ^ ; CREATE OR ALTER procedure SPMOVPRODUTO ( DATAI date, DATAF date) returns ( CODMOVIMENTO integer, CODEMPRESA integer, CODFUNCIONARIO integer, CODFILIAL integer, FILIAL varchar(40), DATA date, CODIGOCONTABIL varchar(20), TIPO varchar(2), SITUACAO varchar(2), CODPRODUTO integer, PRODUTO varchar(50), PLANODECONTAS varchar(40), TIPOPLANO char(1), QTD float, UNIDADEMOV varchar(30), VALOR float, TOTAL float, BAIXADO char(1), QTDCOVERTIDA float, UNIDADECONVERTIDA varchar(30), CODFABRICANTE integer, FABRICANTE varchar(40), CODGRUPO integer, GRUPO varchar(40), CODUNIDADEMOV integer, CODFORNECEDOR integer, FORNECEDOR varchar(70), RAZAOFORNECEDOR varchar(70), FUNCIONARIO varchar(40), VOLUMES integer, ESTOQUE float, VALORCUSTO float, TOTALCUSTO float, LUCRO float, TIPODESCONTO char(1), DESCONTO float, TOTALCDESC float, ESTOQUEATUAL float) as declare variable CODPRODUTOMOV integer; declare variable CODUNIDADLANCADA integer; declare variable QTDLANCADA float; declare variable CODMOV integer; declare variable TDESCONTO float; declare variable TTIPODESCONTO char(1); declare variable NRITENS integer; declare variable TEMPTOTAL float; begin FOR SELECT M.CODMOVIMENTO, M.CODEMPRESA, M.CODFUNCIONARIO, M.CODFILIAL,FI.NOME, M.DATA, M.CODIGOCONTABIL, M.TIPO, M.SITUACAO, P.CODPRODUTO, P.DESCRICAO AS PRODUTO, PC.DESCRICAO, PC.ESTOQUE,I.QTD, U.DESCRICAO, I.VALOR, I.QTD * I.VALOR AS TOTAL, I.BAIXADO, I.CODPRODUTO, I.QTD, I.CODUNIDADE, P.CODFABRICANTE, F.DESCRICAO, P.CODGRUPO, G.DESCRICAO, FM.CODFORNECEDOR, FO.NOME, FO.RAZAOSOCIAL, FU.NOME, I.VOLUMES, I.VALORCUSTO, I.ESTOQUEATUAL, I.QTD * I.VALORCUSTO FROM ITENSMOVIMENTOPROD I JOIN MOVIMENTOSPRODUTOS M ON (M.CODMOVIMENTO = I.CODMOVIMENTO) JOIN FILIAIS FI ON (FI.CODFILIAL = M.CODFILIAL) LEFT JOIN FORNMOVIMENTO FM ON (FM.CODMOVIMENTO = M.CODMOVIMENTO) LEFT JOIN FORNECEDORES FO ON (FO.CODFORNECEDOR = FM.CODFORNECEDOR) JOIN PLANOSDECONTAS PC ON (PC.CODIGOCONTABIL = M.CODIGOCONTABIL AND PC.CODEMPRESA=M.CODEMPRESA) JOIN PRODUTOS P ON (P.CODPRODUTO = I.CODPRODUTO) JOIN UNIDADEMEDIDA U ON (U.CODUNIDADE = I.CODUNIDADE) LEFT JOIN FABRICANTE F ON (P.CODFABRICANTE = F.CODFABRICANTE) LEFT JOIN GRUPO G ON (P.CODGRUPO = G.CODGRUPO) LEFT JOIN FUNCIONARIOS FU ON (FU.CODFUNCIONARIO = M.CODFUNCIONARIO) WHERE M.DATA>=:DATAI AND M.DATA<=:DATAF INTO :CODMOVIMENTO, :CODEMPRESA, :CODFUNCIONARIO, :CODFILIAL, :FILIAL, :DATA, :CODIGOCONTABIL, :TIPO, :SITUACAO, :CODPRODUTO, :PRODUTO, :PLANODECONTAS, :TIPOPLANO, :QTD, :UNIDADEMOV, :VALOR, :TOTAL, :BAIXADO, :CODPRODUTOMOV, :QTDLANCADA, :CODUNIDADLANCADA, :CODFABRICANTE, :FABRICANTE, :CODGRUPO, :GRUPO, :CODFORNECEDOR, :FORNECEDOR, :RAZAOFORNECEDOR, :FUNCIONARIO, :VOLUMES, :VALORCUSTO, :ESTOQUEATUAL, :TOTALCUSTO DO BEGIN SELECT S.QTDCONVERTIDA, S.UNIDADEPRODUTO FROM SPQTDCONVERTIDA(:CODPRODUTOMOV, :CODUNIDADLANCADA, :QTDLANCADA) S INTO :QTDCOVERTIDA , :UNIDADECONVERTIDA; CODUNIDADEMOV = CODUNIDADLANCADA; ESTOQUE = 0; SELECT SP.ESTOQUE FROM SPMOVESTOQUE(:CODPRODUTO) SP INTO :ESTOQUE; SELECT DM.DESCONTO, DM.TIPODESCONTO FROM DADOSMOVIMENTO DM WHERE DM.CODMOVIMENTO=:CODMOVIMENTO INTO :TDESCONTO, :TTIPODESCONTO; TEMPTOTAL = TOTAL; SELECT COUNT(IM.CODITEMMOVIMENTO) FROM ITENSMOVIMENTOPROD IM WHERE IM.CODMOVIMENTO=:CODMOVIMENTO INTO :NRITENS; IF (NRITENS IS NULL) then NRITENS = 1; IF (TTIPODESCONTO='%') then BEGIN DESCONTO=TDESCONTO; END IF (TTIPODESCONTO='$') then BEGIN DESCONTO = TDESCONTO / NRITENS; END IF (TTIPODESCONTO IS NULL ) then BEGIN DESCONTO = 0; END TIPODESCONTO=TTIPODESCONTO; IF (TTIPODESCONTO='%') then BEGIN TOTALCDESC = TEMPTOTAL - ((TEMPTOTAL * DESCONTO)/100); END IF (TTIPODESCONTO='$') then BEGIN TOTALCDESC = TEMPTOTAL - DESCONTO; END IF (TTIPODESCONTO IS NULL ) then BEGIN TOTALCDESC = TEMPTOTAL; END IF (TDESCONTO IS NULL ) then BEGIN TOTALCDESC = TEMPTOTAL; END if ((not TOTALCDESC IS NULL) AND (not TOTALCUSTO IS NULL)) then BEGIN if ((TOTALCDESC >0) AND (TOTALCUSTO >0)) then LUCRO = ((TOTALCDESC - TOTALCUSTO)*100)/TOTALCUSTO; ELSE LUCRO =0; END ELSE LUCRO=0; suspend; END end^ SET TERM ; ^ SET TERM ^ ; CREATE OR ALTER procedure SPDESPESASACADEMIA returns ( CODMOVIMENTO integer, CODEMPRESA integer, CODFORNECEDOR integer, NOME varchar(70), DATAPGTO date, VALOR float, DESCRICAO varchar(50), CODIGOCONTABIL varchar(20), PLANODECONTAS varchar(40), CODFILIAL integer) as begin FOR select CODMOVIMENTO, CODFORNECEDOR, FORNECEDOR, DATAPGTO, TOTALPAGO, DESCRICAO, CODIGOCONTABIL, PLANODECONTAS, CODFILIAL from VWCONTASPAGAS INTO :CODMOVIMENTO, :CODFORNECEDOR, :NOME, :DATAPGTO, :VALOR, :DESCRICAO, :CODIGOCONTABIL, :PLANODECONTAS, :CODFILIAL DO SUSPEND; FOR SELECT DA.CODMOVIMENTO, DA.CODFORNECEDOR, DA.NOME, DA.DATA, DA.VALOR, DA.DESCRICAO , DA.CODIGOCONTABIL, DA.PLANODECONTAS, DA.CODFILIAL FROM SPDESPESASAVISTA DA INTO :CODMOVIMENTO, :CODFORNECEDOR, :NOME, :DATAPGTO, :VALOR, :DESCRICAO, :CODIGOCONTABIL, :PLANODECONTAS, :CODFILIAL DO BEGIN SELECT CODEMPRESA FROM MOVIMENTOSPRODUTOS M WHERE M.CODMOVIMENTO=:CODMOVIMENTO INTO:CODEMPRESA; SUSPEND; END end^ SET TERM ; ^ DROP PROCEDURE SPDESPESASACADEMIA; CREATE OR ALTER VIEW VWCONTASPAGAS( CODPARCELA, CODPARCELAPGTO, VALORPARCELA, VENCIMENTO, PAGO, NRPARCELA, DOCUMENTO, CODMOVIMENTO, CODIGOCONTABIL, DATA, TIPO, CODFORNECEDOR, FORNECEDOR, PLANODECONTAS, DATAPGTO, TOTALPAGO, DESCRICAO, CODFILIAL) AS SELECT P.CODPARCELA, PG.CODPARCELAPGTO, P.VALORPARCELA, P.VENCIMENTO, P.PAGO, P.NRPARCELA, P.DOCUMENTO, MV.CODMOVIMENTO, MV.CODIGOCONTABIL, MV.DATA, MV.TIPO, FM.CODFORNECEDOR, CAST(F.NOME AS VARCHAR(70)), PC.DESCRICAO, PG.DATA, PG.VALOR AS TOTALPAGO , DR.DESCRICAO, MV.CODFILIAL FROM PARCELASCONTAS P JOIN CONTASPAGARRECEBER CPR ON (CPR.CODCONTA = P.CODCONTA ) JOIN PLANOSPAGAMENTO PP ON (PP.CODPLANOPGTO = CPR.CODPLANOPGTO ) JOIN MOVIMENTOSPRODUTOS MV ON (MV.CODMOVIMENTO = CPR.CODMOVIMENTO ) JOIN PLANOSDECONTAS PC ON (PC.CODIGOCONTABIL = MV.CODIGOCONTABIL ) LEFT JOIN DESPESASRECEITAS DR ON (DR.CODMOVIMENTO = MV.CODMOVIMENTO) JOIN FORNMOVIMENTO FM ON (FM.CODMOVIMENTO = MV.CODMOVIMENTO ) JOIN FORNECEDORES F ON (F.CODFORNECEDOR = FM.CODFORNECEDOR) JOIN PARCELASPGTO PG ON (PG.CODPARCELA = P.CODPARCELA ) GROUP BY P.CODPARCELA, PG.CODPARCELAPGTO, P.VALORPARCELA, P.VENCIMENTO, P.PAGO, P.NRPARCELA, P.DOCUMENTO, MV.CODMOVIMENTO, MV.CODIGOCONTABIL, MV.DATA, MV.TIPO, FM.CODFORNECEDOR, F.NOME, PC.DESCRICAO, PG.DATA, PG.VALOR, DR.DESCRICAO, MV.CODFILIAL ; SET TERM ^ ; CREATE OR ALTER procedure SPDESPESASACADEMIA returns ( CODMOVIMENTO integer, CODEMPRESA integer, CODFORNECEDOR integer, NOME varchar(70), DATAPGTO date, VALOR float, DESCRICAO varchar(50), CODIGOCONTABIL varchar(20), PLANODECONTAS varchar(40), CODFILIAL integer) as begin FOR select CODMOVIMENTO, CODFORNECEDOR, FORNECEDOR, DATAPGTO, TOTALPAGO, DESCRICAO, CODIGOCONTABIL, PLANODECONTAS, CODFILIAL from VWCONTASPAGAS INTO :CODMOVIMENTO, :CODFORNECEDOR, :NOME, :DATAPGTO, :VALOR, :DESCRICAO, :CODIGOCONTABIL, :PLANODECONTAS, :CODFILIAL DO SUSPEND; FOR SELECT DA.CODMOVIMENTO, DA.CODFORNECEDOR, DA.NOME, DA.DATA, DA.VALOR, DA.DESCRICAO , DA.CODIGOCONTABIL, DA.PLANODECONTAS, DA.CODFILIAL FROM SPDESPESASAVISTA DA INTO :CODMOVIMENTO, :CODFORNECEDOR, :NOME, :DATAPGTO, :VALOR, :DESCRICAO, :CODIGOCONTABIL, :PLANODECONTAS, :CODFILIAL DO BEGIN SELECT CODEMPRESA FROM MOVIMENTOSPRODUTOS M WHERE M.CODMOVIMENTO=:CODMOVIMENTO INTO:CODEMPRESA; SUSPEND; END end^ SET TERM ; ^ ALTER TABLE CONTATOSCLI ADD WP CHAR1; ALTER TABLE EMPRESA ADD WHATS VARCHAR_30;