ALTER TABLE DADOSMOVIMENTO ADD "VBCST" VALOR_10_2; ALTER TABLE DADOSMOVIMENTO ADD "VST" VALOR_10_2; ALTER TABLE ITENSMOVIMENTOPROD ADD "OUTROS" VALOR_10_2; ALTER TABLE ITENSMOVIMENTOPROD ADD "DESCPROD" VARCHAR_70; ALTER TABLE ITENSMOVIMENTOPROD ADD "CODPRODEMP" INTEGER; ALTER TABLE ITENSMOVIMENTOPROD ADD "VBCST" VALOR_10_2; ALTER TABLE ITENSMOVIMENTOPROD ADD "PICMSST" VALOR_10_2; ALTER TABLE ITENSMOVIMENTOPROD ADD "VICMSST" VALOR_10_2; ALTER TABLE ITENSMOVIMENTOPROD ADD "VICMS" VALOR_10_2; ALTER TABLE ITENSMOVIMENTOPROD ADD "VIPI" VALOR_10_2; ALTER TABLE ITENSMOVIMENTOPROD ADD "TOTALPROD" VALOR_10_2; ALTER TABLE ITENSMOVIMENTOPROD ADD "PREDBCST" VALOR_10_2; ALTER TABLE ITENSMOVIMENTOPROD ADD "PMVAST" VALOR_10_2; ALTER TABLE ITENSMOVIMENTOPROD ADD "MODBCST" VARCHAR_4; ALTER TABLE ITENSMOVIMENTOPROD ADD "VDESCNOTA" VALOR_10_2; /*------ 09/04/2019 17:19:30 --------*/ SET TERM ^ ; ALTER PROCEDURE SPITENSMOV ( MOVIMENTO INTEGER) RETURNS ( CODITEMMOVIMENTO INTEGER, CODMOVIMENTO INTEGER, CODUNIDADE INTEGER, CODPRODUTO INTEGER, CODTABELA INTEGER, REFERENCIA VARCHAR(20), PRODUTO VARCHAR(50), OUTROS NUMERIC(15,2), DESCTABELA VARCHAR(30), CODGRUPO INTEGER, GRUPO VARCHAR(30), CODFABRICANTE INTEGER, FABRICANTE VARCHAR(40), QTD FLOAT, PICMSST NUMERIC(10,2), VICMSST NUMERIC(10,2), VBCST NUMERIC(10,2), UNIDADE VARCHAR(30), VALOR FLOAT, TOTAL FLOAT, BAIXADO CHAR(1), VALORUNIT FLOAT, DESCONTO FLOAT, TOTALUNIT FLOAT, CODALIQUOTA VARCHAR(10), ALIQUOTA FLOAT, SIGLA VARCHAR(3), DESCRICAOADICIONAL VARCHAR(100), DESCADICIONAL VARCHAR(50), APRESENTACAO VARCHAR(40), CODTABELASIMPLES INTEGER, COR VARCHAR(40), QTDENTREGUE FLOAT, FALTAENTREGA FLOAT, VOLUMES INTEGER, ICMS NUMERIC(10,2), IPI NUMERIC(10,2), TOTALIPI NUMERIC(10,2), TOTALICMS NUMERIC(10,2), ACRESSUGESTAO FLOAT, ESTOQUEATUAL FLOAT, COMISSAO FLOAT, VALORCOMISSAO FLOAT, CORGRADE VARCHAR(40), TAM VARCHAR(5), NR INTEGER, DESCONTOMOV FLOAT, TOTALCOMDESCONTO FLOAT, VALORAVISTA FLOAT, TOTALAVISTA FLOAT, FABRICADO CHAR(1), DATAFAB DATE, CODNCM VARCHAR(30), CST VARCHAR(10), INFPRVENDA FLOAT, CFOP VARCHAR(10), ORIGEM VARCHAR(4), TRTIPO VARCHAR(1), CODBARRAS VARCHAR(30), CEST VARCHAR(15), BASECALCULOICMS NUMERIC(10,2), BASEIPI NUMERIC(10,2), ALTERAR VARCHAR(15), EXCLUIR VARCHAR(15), OUTRAACAO VARCHAR(15), VDESCNOTA NUMERIC(15,2)) AS declare variable TEMPCODPROD integer; declare variable CODITEMMOV integer; declare variable TEMPDESC varchar(50); declare variable DESCPROD varchar(50); declare variable TEMPDESCTABELA varchar(30); declare variable ENTREGAMAD float; declare variable ENTREGAPD float; declare variable TCODALIQUOTA varchar(10); declare variable TDESCONTOMOV float; declare variable TIPODESCONTOMOV char(1); declare variable TOTALMOV float; declare variable TCST varchar(10); begin /*TESTE*/ FOR SELECT I.CODITEMMOVIMENTO, I.CODMOVIMENTO, I.CODTABELA, I.QTD, I.VALOR, I.QTD * I.VALOR, I.BAIXADO, I.VALORUNIT, I.DESCONTO, I.QTD * I.VALORUNIT, I.CODITEMMOVIMENTO, I.CODTABELA, I.CODUNIDADE, I.CODTABELASIMPLES, I.VOLUMES, I.ICMS, I.IPI, I.ESTOQUEATUAL, I.COMISSAO, I.CODALIQUOTA, I.FABRICADO, I.DATAFAB, I.CFOP, I.VALORAVISTA, I.TRTIPO, I.CST, I.CEST, I.BASECALCULOICMS, I.BASEIPI, I.VBCST, I.PICMSST, I.VICMSST, I.OUTROS, I.vdescnota, I.QTD * I.VALORAVISTA FROM ITENSMOVIMENTOPROD I WHERE I.CODMOVIMENTO=:MOVIMENTO AND (I.TIPO IS NULL or I.TIPO='I') INTO :CODITEMMOVIMENTO, :CODMOVIMENTO, :CODTABELA, :QTD, :VALOR, :TOTAL, :BAIXADO, :VALORUNIT, :DESCONTO, :TOTALUNIT, :CODITEMMOV, :TEMPCODPROD, :CODUNIDADE, :CODTABELASIMPLES, :VOLUMES, :ICMS, :IPI, :ESTOQUEATUAL, :COMISSAO, :CODALIQUOTA, :FABRICADO, :DATAFAB, :CFOP, :VALORAVISTA, :TRTIPO, :CST, :CEST, :BASECALCULOICMS, :BASEIPI, :VBCST, :PICMSST , :VICMSST, :OUTROS, :VDESCNOTA, :TOTALAVISTA DO BEGIN CORGRADE = NULL; TAM = NULL; NR = NULL; SELECT GP.COR, GP.TAM, GP.NR FROM GRADEPRODUTO GP WHERE GP.CODPRODUTO=:CODTABELA INTO :CORGRADE, :TAM, :NR; CODNCM=NULL; SELECT SP.CODIGO,SP.REFERENCIA,SP.DESCRICAO,SP.DESCTABELA,SP.CODGRUPO, SP.GRUPO, SP.CODFABRICANTE, SP.FABRICANTE, SP.CODALIQUOTA, SP.ALIQUOTA, SP.DESCRICAO, SP.DESCTABELA, SP.APRESENTACAO, SP.ACRESSUGESTAO, SP.CODNCM, SP.CST, SP.PRECOVENDA, SP.ORIGEM, SP.CODBARRAS FROM SPPESQPRODUTOSPORCODIGO(:CODTABELA) SP INTO :CODPRODUTO, :REFERENCIA, :PRODUTO, :DESCTABELA, :CODGRUPO, :GRUPO, :CODFABRICANTE, :FABRICANTE, :TCODALIQUOTA, :ALIQUOTA, :DESCPROD, :TEMPDESCTABELA, :APRESENTACAO, :ACRESSUGESTAO, :CODNCM, :TCST, :INFPRVENDA, :ORIGEM, :CODBARRAS; if (CODALIQUOTA iS NULL) then CODALIQUOTA=TCODALIQUOTA; if (CST iS NULL) then CST = TCST; TEMPDESC =''; SELECT IMD.DESCRICAOADICIONAL FROM IMDESCRICAOADICIONAL IMD WHERE IMD.CODITEMMOVIMENTO=:CODITEMMOV INTO :TEMPDESC; if (TEMPDESC IS NULL) then TEMPDESC =''; if (TEMPDESCTABELA IS NULL) then TEMPDESCTABELA =''; DESCRICAOADICIONAL = DESCPROD || ' ' || TEMPDESC || ' ' || TEMPDESCTABELA; DESCADICIONAL = TEMPDESC; COR = NULL; SELECT TS.DESCRICAO FROM TABELASSIMPLES TS WHERE TS.CODTABELASIMPLES=:CODTABELASIMPLES INTO :COR; SELECT UM.DESCRICAO, UM.SIGLA FROM UNIDADEMEDIDA UM WHERE UM.CODUNIDADE=:CODUNIDADE INTO :UNIDADE, :SIGLA; SELECT SUM(IO.QTD) FROM PRODUTOSOEMAD IO WHERE IO.CODITEMMOVIMENTO=:CODITEMMOV INTO :ENTREGAMAD; if (ENTREGAMAD IS NULL) then ENTREGAMAD=0; SELECT SUM(IPD.QTD) FROM PRODUTOSOEPD IPD WHERE IPD.CODITEMMOVIMENTO=:CODITEMMOV INTO :ENTREGAPD; if (ENTREGAPD IS NULL) then ENTREGAPD=0; QTDENTREGUE = ENTREGAMAD + ENTREGAPD; FALTAENTREGA = QTD - QTDENTREGUE; if (COMISSAO IS NULL) then VALORCOMISSAO =0; ELSE VALORCOMISSAO = (COMISSAO * TOTAL)/100; if (IPI >0 AND BASEIPI>0) then TOTALIPI = (BASEIPI * IPI)/100; ELSE TOTALIPI = 0; if (ICMS >0 and BASECALCULOICMS >0 ) then TOTALICMS = (ICMS * BASECALCULOICMS)/100; ELSE TOTALICMS = 0; SELECT DM.DESCONTO, DM.TIPODESCONTO, DM.VALORMOVIMENTO FROM DADOSMOVIMENTO DM WHERE DM.CODMOVIMENTO=:MOVIMENTO INTO :TDESCONTOMOV, :TIPODESCONTOMOV, :TOTALMOV; DESCONTOMOV=0; if (TIPODESCONTOMOV='%') then DESCONTOMOV=TDESCONTOMOV; if (TIPODESCONTOMOV='$') then BEGIN DESCONTOMOV=(100 * TDESCONTOMOV)/ TOTALMOV; END if (DESCONTOMOV>0) then TOTALCOMDESCONTO = TOTAL - ((TOTAL * DESCONTOMOV)/100); ELSE TOTALCOMDESCONTO = NULL; suspend; END end ^ SET TERM ; ^ /*------ 09/04/2019 17:19:33 --------*/ SET TERM ^ ; ALTER PROCEDURE RELDESCONTOSITENSMOV ( DATAI DATE, DATAF DATE) RETURNS ( CODMOVIMENTO INTEGER, DATA DATE, FUNCIONARIO VARCHAR(40), CODPRODUTO INTEGER, PRODUTO VARCHAR(50), CODGRUPO INTEGER, GRUPO VARCHAR(30), CODFABRICANTE INTEGER, FABRICANTE VARCHAR(40), QTD FLOAT, UNIDADE VARCHAR(30), VALOR FLOAT, TOTAL FLOAT, BAIXADO CHAR(1), VALORUNIT FLOAT, DESCONTO FLOAT, TOTALUNIT FLOAT, SIGLA VARCHAR(3), VALORDESCONTO FLOAT) AS begin FOR SELECT M.CODMOVIMENTO, M.DATA, F.NOME FROM MOVIMENTOSPRODUTOS M LEFT JOIN FUNCIONARIOS F ON (F.CODFUNCIONARIO = M.CODFUNCIONARIO) WHERE M.TIPO='VE' AND M.DATA>=:DATAI AND M.DATA<=:DATAF INTO :CODMOVIMENTO, :DATA, :FUNCIONARIO DO BEGIN FOR SELECT SP.CODPRODUTO , SP.PRODUTO, SP.CODGRUPO , SP.GRUPO , SP.CODFABRICANTE , SP.FABRICANTE , SP.QTD , SP.UNIDADE , SP.VALOR , SP.TOTAL , SP.BAIXADO , SP.VALORUNIT , SP.DESCONTO , SP.TOTALUNIT , SP.SIGLA, SP.TOTALUNIT - SP.TOTAL FROM SPITENSMOV(:CODMOVIMENTO) SP WHERE SP.DESCONTO>0 INTO :CODPRODUTO , :PRODUTO, :CODGRUPO , :GRUPO , :CODFABRICANTE , :FABRICANTE , :QTD , :UNIDADE , :VALOR , :TOTAL , :BAIXADO , :VALORUNIT , :DESCONTO , :TOTALUNIT , :SIGLA, :VALORDESCONTO DO suspend; END end ^ SET TERM ; ^ /*------ 09/04/2019 17:19:33 --------*/ SET TERM ^ ; 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) 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); 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; /*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; SOMAPAGAMENTOS = EMDINHEIRO + CHEQUE + PARCELAS + CARTAO; TOTALGERAL = TOTALPRODUTOS + TOTALDESPESAS + TOTALIPI + DESPREC + OS + :FRETE; VALORDESCONTO = 0; If (:DESCONTO>0) Then Begin If (:TIPODESCONTO = '%') Then Begin VALORDESCONTO = TOTALGERAL - (TOTALGERAL - ((TOTALGERAL * DESCONTO)/100)); TOTALGERAL = TOTALGERAL - ((TOTALGERAL * DESCONTO)/100); End If (:TIPODESCONTO = '$' )Then Begin VALORDESCONTO = TOTALGERAL - ( TOTALGERAL - DESCONTO); TOTALGERAL = TOTALGERAL - DESCONTO; 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 ; ^ ALTER TABLE PRODUTOS ADD CODGRUPOVR INTEIRO_NULL; ALTER TABLE RELATORIOS ADD ARQUIVO ARQUIVOBLOB; ALTER TABLE RELATORIOS ADD STATUS CHAR1; CREATE SEQUENCE GEN_RELATORIOS_ID; SET TERM ^ ; CREATE TRIGGER RELATORIOS_BI FOR RELATORIOS ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.CODRELATORIO IS NULL or NEW.CODRELATORIO=0 ) THEN NEW.CODRELATORIO = GEN_ID(GEN_RELATORIOS_ID,1); END^ SET TERM ; ^ SET TERM ^ ; CREATE OR ALTER TRIGGER RELATORIOS_BI FOR RELATORIOS ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.CODRELATORIO IS NULL or NEW.CODRELATORIO=0 ) THEN NEW.CODRELATORIO = GEN_ID(GEN_RELATORIOS,1); END^ SET TERM ; ^ ALTER TABLE RELATORIOS ADD ICON VARCHAR_30; 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) 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); 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 M.TOTALIPI FROM MOVIMENTOSPRODUTOS M WHERE M.CODMOVIMENTO=:MOVIMENTO INTO :VALORIPI; If (:VALORIPI IS NULL) then VALORIPI=0;*/ 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; /*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; SOMAPAGAMENTOS = EMDINHEIRO + CHEQUE + PARCELAS + CARTAO; TOTALGERAL = TOTALPRODUTOS + TOTALDESPESAS + TOTALIPI + DESPREC + OS + :FRETE; VALORDESCONTO = 0; If (:DESCONTO>0) Then Begin If (:TIPODESCONTO = '%') Then Begin VALORDESCONTO = TOTALGERAL - (TOTALGERAL - ((TOTALGERAL * DESCONTO)/100)); TOTALGERAL = TOTALGERAL - ((TOTALGERAL * DESCONTO)/100); End If (:TIPODESCONTO = '$' )Then Begin VALORDESCONTO = TOTALGERAL - ( TOTALGERAL - DESCONTO); TOTALGERAL = TOTALGERAL - DESCONTO; 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 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) 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); 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; /*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; SOMAPAGAMENTOS = EMDINHEIRO + CHEQUE + PARCELAS + CARTAO; TOTALGERAL = TOTALPRODUTOS + TOTALDESPESAS + TOTALIPI + DESPREC + OS + :FRETE; VALORDESCONTO = 0; If (:DESCONTO>0) Then Begin If (:TIPODESCONTO = '%') Then Begin VALORDESCONTO = TOTALGERAL - (TOTALGERAL - ((TOTALGERAL * DESCONTO)/100)); TOTALGERAL = TOTALGERAL - ((TOTALGERAL * DESCONTO)/100); End If (:TIPODESCONTO = '$' )Then Begin VALORDESCONTO = TOTALGERAL - ( TOTALGERAL - DESCONTO); TOTALGERAL = TOTALGERAL - DESCONTO; 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 SPITENSMOV ( MOVIMENTO integer) returns ( CODITEMMOVIMENTO integer, CODMOVIMENTO integer, CODUNIDADE integer, CODPRODUTO integer, CODTABELA integer, REFERENCIA varchar(20), PRODUTO varchar(50), OUTROS numeric(15,2), DESCTABELA varchar(30), CODGRUPO integer, GRUPO varchar(30), CODFABRICANTE integer, FABRICANTE varchar(40), QTD float, PICMSST numeric(10,2), VICMSST numeric(10,2), VBCST numeric(10,2), UNIDADE varchar(30), VALOR float, TOTAL float, BAIXADO char(1), VALORUNIT float, DESCONTO float, TOTALUNIT float, CODALIQUOTA varchar(10), ALIQUOTA float, SIGLA varchar(3), DESCRICAOADICIONAL varchar(100), DESCADICIONAL varchar(50), APRESENTACAO varchar(40), CODTABELASIMPLES integer, COR varchar(40), QTDENTREGUE float, FALTAENTREGA float, VOLUMES integer, ICMS numeric(10,2), IPI numeric(10,2), TOTALIPI numeric(10,2), TOTALICMS numeric(10,2), ACRESSUGESTAO float, ESTOQUEATUAL float, COMISSAO float, VALORCOMISSAO float, CORGRADE varchar(40), TAM varchar(5), NR integer, DESCONTOMOV float, TOTALCOMDESCONTO float, VALORAVISTA float, TOTALAVISTA float, FABRICADO char(1), DATAFAB date, CODNCM varchar(30), CST varchar(10), INFPRVENDA float, CFOP varchar(10), ORIGEM varchar(4), TRTIPO varchar(1), CODBARRAS varchar(30), CEST varchar(15), BASECALCULOICMS numeric(10,2), BASEIPI numeric(10,2), ALTERAR varchar(15), EXCLUIR varchar(15), OUTRAACAO varchar(15)) as declare variable TEMPCODPROD integer; declare variable CODITEMMOV integer; declare variable TEMPDESC varchar(50); declare variable DESCPROD varchar(50); declare variable TEMPDESCTABELA varchar(30); declare variable ENTREGAMAD float; declare variable ENTREGAPD float; declare variable TCODALIQUOTA varchar(10); declare variable TDESCONTOMOV float; declare variable TIPODESCONTOMOV char(1); declare variable TOTALMOV float; declare variable TCST varchar(10); begin /*TESTE*/ FOR SELECT I.CODITEMMOVIMENTO, I.CODMOVIMENTO, I.CODTABELA, I.QTD, I.VALOR, I.QTD * I.VALOR, I.BAIXADO, I.VALORUNIT, I.DESCONTO, I.QTD * I.VALORUNIT, I.CODITEMMOVIMENTO, I.CODTABELA, I.CODUNIDADE, I.CODTABELASIMPLES, I.VOLUMES, I.ICMS, I.IPI, I.ESTOQUEATUAL, I.COMISSAO, I.CODALIQUOTA, I.FABRICADO, I.DATAFAB, I.CFOP, I.VALORAVISTA, I.TRTIPO, I.CST, I.CEST, I.BASECALCULOICMS, I.BASEIPI, I.VBCST, I.PICMSST, I.VICMSST, I.OUTROS, I.QTD * I.VALORAVISTA FROM ITENSMOVIMENTOPROD I WHERE I.CODMOVIMENTO=:MOVIMENTO AND (I.TIPO IS NULL or I.TIPO='I') INTO :CODITEMMOVIMENTO, :CODMOVIMENTO, :CODTABELA, :QTD, :VALOR, :TOTAL, :BAIXADO, :VALORUNIT, :DESCONTO, :TOTALUNIT, :CODITEMMOV, :TEMPCODPROD, :CODUNIDADE, :CODTABELASIMPLES, :VOLUMES, :ICMS, :IPI, :ESTOQUEATUAL, :COMISSAO, :CODALIQUOTA, :FABRICADO, :DATAFAB, :CFOP, :VALORAVISTA, :TRTIPO, :CST, :CEST, :BASECALCULOICMS, :BASEIPI, :VBCST, :PICMSST , :VICMSST, :OUTROS, :TOTALAVISTA DO BEGIN CORGRADE = NULL; TAM = NULL; NR = NULL; SELECT GP.COR, GP.TAM, GP.NR FROM GRADEPRODUTO GP WHERE GP.CODPRODUTO=:CODTABELA INTO :CORGRADE, :TAM, :NR; CODNCM=NULL; SELECT SP.CODIGO,SP.REFERENCIA,SP.DESCRICAO,SP.DESCTABELA,SP.CODGRUPO, SP.GRUPO, SP.CODFABRICANTE, SP.FABRICANTE, SP.CODALIQUOTA, SP.ALIQUOTA, SP.DESCRICAO, SP.DESCTABELA, SP.APRESENTACAO, SP.ACRESSUGESTAO, SP.CODNCM, SP.CST, SP.PRECOVENDA, SP.ORIGEM, SP.CODBARRAS FROM SPPESQPRODUTOSPORCODIGO(:CODTABELA) SP INTO :CODPRODUTO, :REFERENCIA, :PRODUTO, :DESCTABELA, :CODGRUPO, :GRUPO, :CODFABRICANTE, :FABRICANTE, :TCODALIQUOTA, :ALIQUOTA, :DESCPROD, :TEMPDESCTABELA, :APRESENTACAO, :ACRESSUGESTAO, :CODNCM, :TCST, :INFPRVENDA, :ORIGEM, :CODBARRAS; if (CODALIQUOTA iS NULL) then CODALIQUOTA=TCODALIQUOTA; if (CST iS NULL) then CST = TCST; TEMPDESC =''; SELECT IMD.DESCRICAOADICIONAL FROM IMDESCRICAOADICIONAL IMD WHERE IMD.CODITEMMOVIMENTO=:CODITEMMOV INTO :TEMPDESC; if (TEMPDESC IS NULL) then TEMPDESC =''; if (TEMPDESCTABELA IS NULL) then TEMPDESCTABELA =''; DESCRICAOADICIONAL = DESCPROD || ' ' || TEMPDESC || ' ' || TEMPDESCTABELA; DESCADICIONAL = TEMPDESC; COR = NULL; SELECT TS.DESCRICAO FROM TABELASSIMPLES TS WHERE TS.CODTABELASIMPLES=:CODTABELASIMPLES INTO :COR; SELECT UM.DESCRICAO, UM.SIGLA FROM UNIDADEMEDIDA UM WHERE UM.CODUNIDADE=:CODUNIDADE INTO :UNIDADE, :SIGLA; SELECT SUM(IO.QTD) FROM PRODUTOSOEMAD IO WHERE IO.CODITEMMOVIMENTO=:CODITEMMOV INTO :ENTREGAMAD; if (ENTREGAMAD IS NULL) then ENTREGAMAD=0; SELECT SUM(IPD.QTD) FROM PRODUTOSOEPD IPD WHERE IPD.CODITEMMOVIMENTO=:CODITEMMOV INTO :ENTREGAPD; if (ENTREGAPD IS NULL) then ENTREGAPD=0; QTDENTREGUE = ENTREGAMAD + ENTREGAPD; FALTAENTREGA = QTD - QTDENTREGUE; if (COMISSAO IS NULL) then VALORCOMISSAO =0; ELSE VALORCOMISSAO = (COMISSAO * TOTAL)/100; if (IPI >0 AND BASEIPI>0) then TOTALIPI = (BASEIPI * IPI)/100; ELSE TOTALIPI = 0; if (ICMS >0 and BASECALCULOICMS >0 ) then TOTALICMS = (ICMS * BASECALCULOICMS)/100; ELSE TOTALICMS = 0; SELECT DM.DESCONTO, DM.TIPODESCONTO, DM.VALORMOVIMENTO FROM DADOSMOVIMENTO DM WHERE DM.CODMOVIMENTO=:MOVIMENTO INTO :TDESCONTOMOV, :TIPODESCONTOMOV, :TOTALMOV; DESCONTOMOV=0; if (TIPODESCONTOMOV='%') then DESCONTOMOV=TDESCONTOMOV; if (TIPODESCONTOMOV='$') then BEGIN DESCONTOMOV=(100 * TDESCONTOMOV)/ TOTALMOV; END if (DESCONTOMOV>0) then TOTALCOMDESCONTO = TOTAL - ((TOTAL * DESCONTOMOV)/100); ELSE TOTALCOMDESCONTO = NULL; suspend; END end^ SET TERM ; ^ SET TERM ^ ; CREATE OR ALTER procedure SPPESQPRODVENDA ( PESQUISA varchar(50), TIPOPESQ varchar(2), CODFILIAL integer) returns ( CODIGO integer, CODPRODUTO integer, CODUNIDADE integer, CODGRUPO integer, CODFABRICANTE integer, DESCRICAO varchar(50), DESCTABELA varchar(30), CODBARRAS varchar(30), COMISSAO float, PRECOVENDA float, TIPO varchar(3), PRECOCOMPRA float, REFERENCIA varchar(20), STATUS char(1), PRECOCUSTO float, UNIDADE varchar(30), SIGLA varchar(30), COMPOSICAO varchar(100), NOMECOMERCIAL varchar(70), APRESENTACAO varchar(40), FABRICANTE varchar(40), CODIGOFILIAL integer, CODSUBGRUPO integer, CODALIQUOTA varchar(10), COR varchar(40), TAM varchar(5), NR integer, PRECOAVISTA float, CODNCM varchar(30), ORIGEM varchar(4), CST varchar(10), CFOP varchar(20), CODEMPRESA integer) as declare variable TCODIGO integer; declare variable TCODPRODUTO integer; declare variable TCODUNIDADE integer; declare variable TCODGRUPO integer; declare variable TCODFABRICANTE integer; declare variable TDESCRICAO varchar(50); declare variable TDESCTABELA varchar(30); declare variable TCODBARRAS varchar(30); declare variable TCOMISSAO float; declare variable TPRECOVENDA float; declare variable TTIPO varchar(3); declare variable TPRECOCOMPRA float; declare variable TREFERENCIA varchar(20); declare variable TAPRESENTACAO varchar(40); declare variable TSTATUS char(1); declare variable TPRECOCUSTO float; declare variable TUNIDADE varchar(30); declare variable TSIGLA varchar(30); declare variable TCOMPOSICAO varchar(100); declare variable TCODFILIAL integer; declare variable TNOMECOMERCIAL varchar(70); declare variable MOEDACONVERTIDA float; declare variable MOEDACOMPRA float; begin if (TIPOPESQ = 'CO') then BEGIN /*TESTE*/ SELECT P.CODFILIAL, P.CODPRODUTO, P.CODPRODUTO, P.CODUNIDADE, P.CODGRUPO, P.CODFABRICANTE, P.DESCRICAO, P.CODBARRAS, P.COMISSAO, P.PRECOVENDA, P.TIPO, P.PRECOCOMPRA, P.REFERENCIA, P.STATUS, P.PRECOCUSTO, U.DESCRICAO, U.SIGLA, P.COMPOSICAO, P.NOMECOMERCIAL, P.APRESENTACAO, P.CODSUBGRUPO, P.CODALIQUOTA, P.PRECOAVISTA, P.CODNCM, P.ORIGEM, P.CST, P.CFOP, P.CODEMPRESA FROM PRODUTOS P JOIN UNIDADEMEDIDA U ON (U.CODUNIDADE = P.CODUNIDADE) WHERE (P.LIXEIRA='N' OR LIXEIRA IS NULL) AND P.STATUS ='A' AND P.CODPRODUTO=:PESQUISA INTO :TCODFILIAL, :TCODIGO, :TCODPRODUTO, :TCODUNIDADE, :TCODGRUPO, :TCODFABRICANTE, :TDESCRICAO, :TCODBARRAS, :TCOMISSAO, :TPRECOVENDA, :TTIPO, :TPRECOCOMPRA, :TREFERENCIA, :TSTATUS, :TPRECOCUSTO, :TUNIDADE, :TSIGLA, :TCOMPOSICAO, :TNOMECOMERCIAL, :TAPRESENTACAO, :CODSUBGRUPO, :CODALIQUOTA, :PRECOAVISTA, :CODNCM, :ORIGEM, :CST, :CFOP, :CODEMPRESA ; if (NOT TCODIGO IS NULL) then BEGIN IF (TTIPO IN ('ACA', 'SMA')) then BEGIN SELECT SPT.PRECOCUSTO, SPT.PRECOVENDA FROM SPPRCUSTOVENDAINDUSTRIAS(:TCODIGO, :TTIPO) SPT INTO :TPRECOCUSTO, :TPRECOVENDA; END COR = NULL; TAM = NULL; NR = NULL; SELECT GP.COR, GP.TAM, GP.NR FROM GRADEPRODUTO GP WHERE GP.CODPRODUTO=:TCODIGO INTO :COR, :TAM, :NR; if (NOT MOEDACONVERTIDA IS NULL) then TPRECOVENDA = MOEDACONVERTIDA; if (NOT MOEDACOMPRA IS NULL) then TPRECOCOMPRA = MOEDACOMPRA; IF (NOT CODFILIAL IS NULL) THEN BEGIN SELECT SPF.TOTALCALCULADO FROM SPCONVERTEPRECOFILIAL(:CODFILIAL, :TPRECOVENDA) SPF INTO :TPRECOVENDA; END CODIGOFILIAL = TCODFILIAL; CODIGO = TCODIGO; CODPRODUTO = TCODPRODUTO; CODUNIDADE = TCODUNIDADE; CODGRUPO = TCODGRUPO; CODFABRICANTE =TCODFABRICANTE; DESCRICAO = TDESCRICAO; DESCTABELA = ''; CODBARRAS = TCODBARRAS; COMISSAO = TCOMISSAO; PRECOVENDA = TPRECOVENDA; TIPO = TTIPO; PRECOCOMPRA = TPRECOCOMPRA; REFERENCIA = TREFERENCIA; STATUS = TSTATUS; PRECOCUSTO = TPRECOCUSTO; UNIDADE = TUNIDADE; SIGLA = TSIGLA; COMPOSICAO = TCOMPOSICAO; NOMECOMERCIAL = TNOMECOMERCIAL; APRESENTACAO = TAPRESENTACAO; SELECT F.DESCRICAO FROM FABRICANTE F WHERE F.CODFABRICANTE=:TCODFABRICANTE INTO :FABRICANTE; suspend; END ELSE BEGIN SELECT P.CODFILIAL, P.CODPRODUTO, TB.CODTABELA, TB.CODUNIDADE, P.CODGRUPO, P.CODFABRICANTE, P.DESCRICAO, TB.DESCTABELA, P.CODBARRAS, P.COMISSAO, TB.PRECOVENDA, P.TIPO, TB.PRECOCOMPRA, TB.REFERENCIA, P.STATUS, TB.PRECOCUSTO, U.DESCRICAO, U.SIGLA, P.CODSUBGRUPO, P.CODALIQUOTA, P.PRECOAVISTA, P.CODNCM, P.CFOP, P.CODEMPRESA FROM TABELADEPRECO TB JOIN PRODUTOS P ON (TB.CODPRODUTO = P.CODPRODUTO) JOIN UNIDADEMEDIDA U ON (U.CODUNIDADE = TB.CODUNIDADE) WHERE (P.LIXEIRA='N' OR LIXEIRA IS NULL) AND P.STATUS ='A' AND TB.CODTABELA=:PESQUISA INTO :TCODFILIAL, :TCODIGO, :TCODPRODUTO, :TCODUNIDADE, :TCODGRUPO, :TCODFABRICANTE, :TDESCRICAO, :TDESCTABELA, :TCODBARRAS, :TCOMISSAO, :TPRECOVENDA, :TTIPO, :TPRECOCOMPRA, :TREFERENCIA, :TSTATUS, :TPRECOCUSTO, :TUNIDADE, :TSIGLA, :CODSUBGRUPO, :CODALIQUOTA, :PRECOAVISTA, :CODNCM, :CFOP, :CODEMPRESA ; if (NOT TCODIGO IS NULL) then BEGIN if (NOT MOEDACONVERTIDA IS NULL) then TPRECOVENDA = MOEDACONVERTIDA; if (NOT MOEDACOMPRA IS NULL) then TPRECOCOMPRA = MOEDACOMPRA; IF (NOT CODFILIAL IS NULL) THEN BEGIN SELECT SPF.TOTALCALCULADO FROM SPCONVERTEPRECOFILIAL(:CODFILIAL, :TPRECOVENDA) SPF INTO :TPRECOVENDA; END CODIGOFILIAL = TCODFILIAL; CODIGO = TCODIGO; CODPRODUTO = TCODPRODUTO; CODUNIDADE = TCODUNIDADE; CODGRUPO = TCODGRUPO; CODFABRICANTE =TCODFABRICANTE; DESCRICAO = TDESCRICAO; DESCTABELA = TDESCTABELA; CODBARRAS = TCODBARRAS; COMISSAO = TCOMISSAO; PRECOVENDA = TPRECOVENDA; TIPO = TTIPO; PRECOCOMPRA = TPRECOCOMPRA; REFERENCIA = TREFERENCIA; STATUS = TSTATUS; PRECOCUSTO = TPRECOCUSTO; UNIDADE = TUNIDADE; SIGLA = TSIGLA; SELECT F.DESCRICAO FROM FABRICANTE F WHERE F.CODFABRICANTE=:TCODFABRICANTE INTO :FABRICANTE; suspend; END END END if (TIPOPESQ = 'RE') then BEGIN FOR SELECT P.CODFILIAL, P.CODPRODUTO, P.CODPRODUTO, P.CODUNIDADE, P.CODGRUPO, P.CODFABRICANTE,P.DESCRICAO, P.CODBARRAS, P.COMISSAO, P.PRECOVENDA, P.TIPO, P.PRECOCOMPRA, P.REFERENCIA, P.STATUS, P.PRECOCUSTO, U.DESCRICAO, U.SIGLA, P.COMPOSICAO, P.NOMECOMERCIAL, P.APRESENTACAO , P.CODSUBGRUPO, P.CODALIQUOTA, P.PRECOAVISTA, P.CODNCM, P.ORIGEM, P.CST, P.CFOP, P.CODEMPRESA FROM PRODUTOS P JOIN UNIDADEMEDIDA U ON (U.CODUNIDADE = P.CODUNIDADE) WHERE (P.LIXEIRA='N' OR LIXEIRA IS NULL) AND P.STATUS ='A' AND UPPER(P.REFERENCIA) LIKE UPPER(:PESQUISA) INTO :TCODFILIAL, :TCODIGO, :TCODPRODUTO, :TCODUNIDADE, :TCODGRUPO, :TCODFABRICANTE, :TDESCRICAO, :TCODBARRAS, :TCOMISSAO, :TPRECOVENDA, :TTIPO, :TPRECOCOMPRA, :TREFERENCIA, :TSTATUS, :TPRECOCUSTO, :TUNIDADE, :TSIGLA, :TCOMPOSICAO, :TNOMECOMERCIAL, :TAPRESENTACAO, :CODSUBGRUPO, :CODALIQUOTA, :PRECOAVISTA, :CODNCM, :ORIGEM, :CST, :CFOP, :CODEMPRESA DO BEGIN if (NOT TCODIGO IS NULL) then BEGIN IF (TTIPO IN ('ACA', 'SMA')) then BEGIN SELECT SPT.PRECOCUSTO, SPT.PRECOVENDA FROM SPPRCUSTOVENDAINDUSTRIAS(:TCODIGO, :TTIPO) SPT INTO :TPRECOCUSTO, :TPRECOVENDA; END /*SELECT SPM.TOTALCOMPRA, SPM.TOTALVENDA FROM SPCONVERTEMOEDA(:TCODPRODUTO) SPM INTO :MOEDACOMPRA, :MOEDACONVERTIDA;*/ COR = NULL; TAM = NULL; NR = NULL; SELECT GP.COR, GP.TAM, GP.NR FROM GRADEPRODUTO GP WHERE GP.CODPRODUTO=:TCODIGO INTO :COR, :TAM, :NR; if (NOT MOEDACONVERTIDA IS NULL) then TPRECOVENDA = MOEDACONVERTIDA; if (NOT MOEDACOMPRA IS NULL) then TPRECOCOMPRA = MOEDACOMPRA; IF (NOT CODFILIAL IS NULL) THEN BEGIN SELECT SPF.TOTALCALCULADO FROM SPCONVERTEPRECOFILIAL(:CODFILIAL, :TPRECOVENDA) SPF INTO :TPRECOVENDA; END CODIGOFILIAL = TCODFILIAL; CODIGO = TCODIGO; CODPRODUTO = TCODPRODUTO; CODUNIDADE = TCODUNIDADE; CODGRUPO = TCODGRUPO; CODFABRICANTE =TCODFABRICANTE; DESCRICAO = TDESCRICAO; DESCTABELA = ''; CODBARRAS = TCODBARRAS; COMISSAO = TCOMISSAO; PRECOVENDA = TPRECOVENDA; TIPO = TTIPO; PRECOCOMPRA = TPRECOCOMPRA; REFERENCIA = TREFERENCIA; STATUS = TSTATUS; PRECOCUSTO = TPRECOCUSTO; UNIDADE = TUNIDADE; SIGLA = TSIGLA; COMPOSICAO = TCOMPOSICAO; NOMECOMERCIAL = TNOMECOMERCIAL; APRESENTACAO = TAPRESENTACAO; SELECT F.DESCRICAO FROM FABRICANTE F WHERE F.CODFABRICANTE=:TCODFABRICANTE INTO :FABRICANTE; suspend; END END FOR SELECT P.CODFILIAL, P.CODPRODUTO, TB.CODTABELA, TB.CODUNIDADE, P.CODGRUPO, P.CODFABRICANTE, P.DESCRICAO, TB.DESCTABELA, P.CODBARRAS, P.COMISSAO, TB.PRECOVENDA, P.TIPO, TB.PRECOCOMPRA, TB.REFERENCIA, P.STATUS, TB.PRECOCUSTO, U.DESCRICAO, U.SIGLA, P.CODSUBGRUPO, P.CODALIQUOTA, P.PRECOAVISTA, P.CODNCM, P.CFOP, P.CODEMPRESA FROM PRODUTOS P JOIN TABELADEPRECO TB ON (TB.CODPRODUTO = P.CODPRODUTO) JOIN UNIDADEMEDIDA U ON (U.CODUNIDADE = TB.CODUNIDADE) WHERE (P.LIXEIRA='N' OR LIXEIRA IS NULL) AND P.STATUS ='A' AND UPPER(TB.REFERENCIA) LIKE UPPER(:PESQUISA) INTO :TCODFILIAL, :TCODIGO, :TCODPRODUTO, :TCODUNIDADE, :TCODGRUPO, :TCODFABRICANTE, :TDESCRICAO, :TDESCTABELA, :TCODBARRAS, :TCOMISSAO, :TPRECOVENDA, :TTIPO, :TPRECOCOMPRA, :TREFERENCIA, :TSTATUS, :TPRECOCUSTO, :TUNIDADE, :TSIGLA, :CODSUBGRUPO, :CODALIQUOTA, :PRECOAVISTA, :CODNCM, :CFOP, :CODEMPRESA DO BEGIN if (NOT TCODIGO IS NULL) then BEGIN /*SELECT SPM.TOTALCOMPRA, SPM.TOTALVENDA FROM SPCONVERTEMOEDA(:TCODPRODUTO) SPM INTO :MOEDACOMPRA, :MOEDACONVERTIDA;*/ if (NOT MOEDACONVERTIDA IS NULL) then TPRECOVENDA = MOEDACONVERTIDA; if (NOT MOEDACOMPRA IS NULL) then TPRECOCOMPRA = MOEDACOMPRA; IF (NOT CODFILIAL IS NULL) THEN BEGIN SELECT SPF.TOTALCALCULADO FROM SPCONVERTEPRECOFILIAL(:CODFILIAL, :TPRECOVENDA) SPF INTO :TPRECOVENDA; END CODIGOFILIAL = TCODFILIAL; CODIGO = TCODIGO; CODPRODUTO = TCODPRODUTO; CODUNIDADE = TCODUNIDADE; CODGRUPO = TCODGRUPO; CODFABRICANTE =TCODFABRICANTE; DESCRICAO = TDESCRICAO; DESCTABELA = TDESCTABELA; CODBARRAS = TCODBARRAS; COMISSAO = TCOMISSAO; PRECOVENDA = TPRECOVENDA; TIPO = TTIPO; PRECOCOMPRA = TPRECOCOMPRA; REFERENCIA = TREFERENCIA; STATUS = TSTATUS; PRECOCUSTO = TPRECOCUSTO; UNIDADE = TUNIDADE; SIGLA = TSIGLA; SELECT F.DESCRICAO FROM FABRICANTE F WHERE F.CODFABRICANTE=:TCODFABRICANTE INTO :FABRICANTE; suspend; END END /*END*/ END if (TIPOPESQ = 'CB') then BEGIN FOR SELECT P.CODFILIAL, P.CODPRODUTO, P.CODPRODUTO, P.CODUNIDADE, P.CODGRUPO, P.CODFABRICANTE, P.DESCRICAO, P.CODBARRAS, P.COMISSAO, P.PRECOVENDA, P.TIPO, P.PRECOCOMPRA, P.REFERENCIA, P.STATUS, P.PRECOCUSTO, U.DESCRICAO, U.SIGLA, P.COMPOSICAO, P.NOMECOMERCIAL, P.APRESENTACAO , P.CODSUBGRUPO, P.CODALIQUOTA, P.PRECOAVISTA, P.CODNCM, P.ORIGEM, P.CST, P.CFOP, P.CODEMPRESA FROM PRODUTOS P JOIN UNIDADEMEDIDA U ON (U.CODUNIDADE = P.CODUNIDADE) WHERE (P.LIXEIRA='N' OR LIXEIRA IS NULL) AND P.STATUS ='A' AND P.CODBARRAS=:PESQUISA INTO :TCODFILIAL, :TCODIGO, :TCODPRODUTO, :TCODUNIDADE, :TCODGRUPO, :TCODFABRICANTE, :TDESCRICAO, :TCODBARRAS, :TCOMISSAO, :TPRECOVENDA, :TTIPO, :TPRECOCOMPRA, :TREFERENCIA, :TSTATUS, :TPRECOCUSTO, :TUNIDADE, :TSIGLA, :TCOMPOSICAO, :TNOMECOMERCIAL, :TAPRESENTACAO, :CODSUBGRUPO, :CODALIQUOTA, :PRECOAVISTA, :CODNCM, :ORIGEM, :CST, :CFOP, :CODEMPRESA DO BEGIN if (NOT TCODIGO IS NULL) then BEGIN IF (TTIPO IN ('ACA', 'SMA')) then BEGIN SELECT SPT.PRECOCUSTO, SPT.PRECOVENDA FROM SPPRCUSTOVENDAINDUSTRIAS(:TCODIGO, :TTIPO) SPT INTO :TPRECOCUSTO, :TPRECOVENDA; END COR = NULL; TAM = NULL; NR = NULL; SELECT GP.COR, GP.TAM, GP.NR FROM GRADEPRODUTO GP WHERE GP.CODPRODUTO=:TCODIGO INTO :COR, :TAM, :NR; /*SELECT SPM.TOTALCOMPRA, SPM.TOTALVENDA FROM SPCONVERTEMOEDA(:TCODPRODUTO) SPM INTO :MOEDACOMPRA, :MOEDACONVERTIDA;*/ if (NOT MOEDACONVERTIDA IS NULL) then TPRECOVENDA = MOEDACONVERTIDA; if (NOT MOEDACOMPRA IS NULL) then TPRECOCOMPRA = MOEDACOMPRA; IF (NOT CODFILIAL IS NULL) THEN BEGIN SELECT SPF.TOTALCALCULADO FROM SPCONVERTEPRECOFILIAL(:CODFILIAL, :TPRECOVENDA) SPF INTO :TPRECOVENDA; END CODIGOFILIAL = TCODFILIAL; CODIGO = TCODIGO; CODPRODUTO = TCODPRODUTO; CODUNIDADE = TCODUNIDADE; CODGRUPO = TCODGRUPO; CODFABRICANTE =TCODFABRICANTE; DESCRICAO = TDESCRICAO; DESCTABELA = ''; CODBARRAS = TCODBARRAS; COMISSAO = TCOMISSAO; PRECOVENDA = TPRECOVENDA; TIPO = TTIPO; PRECOCOMPRA = TPRECOCOMPRA; REFERENCIA = TREFERENCIA; STATUS = TSTATUS; PRECOCUSTO = TPRECOCUSTO; UNIDADE = TUNIDADE; SIGLA = TSIGLA; COMPOSICAO = TCOMPOSICAO; NOMECOMERCIAL = TNOMECOMERCIAL; APRESENTACAO = TAPRESENTACAO; SELECT F.DESCRICAO FROM FABRICANTE F WHERE F.CODFABRICANTE=:TCODFABRICANTE INTO :FABRICANTE; suspend; END END FOR SELECT P.CODFILIAL, P.CODPRODUTO, TB.CODTABELA, TB.CODUNIDADE, P.CODGRUPO, P.CODFABRICANTE, P.DESCRICAO, TB.DESCTABELA, TB.CODBARRAS, P.COMISSAO, TB.PRECOVENDA, P.TIPO, TB.PRECOCOMPRA, TB.REFERENCIA, P.STATUS, TB.PRECOCUSTO, U.DESCRICAO, U.SIGLA, P.CODSUBGRUPO, P.CODALIQUOTA, P.PRECOAVISTA, P.CODNCM, P.CFOP, P.CODEMPRESA FROM TABELADEPRECO TB JOIN PRODUTOS P ON (TB.CODPRODUTO = P.CODPRODUTO) JOIN UNIDADEMEDIDA U ON (U.CODUNIDADE = TB.CODUNIDADE) WHERE (P.LIXEIRA='N' OR LIXEIRA IS NULL) AND P.STATUS ='A' AND TB.CODBARRAS=:PESQUISA INTO :TCODFILIAL, :TCODIGO, :TCODPRODUTO, :TCODUNIDADE, :TCODGRUPO, :TCODFABRICANTE, :TDESCRICAO, :TDESCTABELA, :TCODBARRAS, :TCOMISSAO, :TPRECOVENDA, :TTIPO, :TPRECOCOMPRA, :TREFERENCIA, :TSTATUS, :TPRECOCUSTO, :TUNIDADE, :TSIGLA, :CODSUBGRUPO, :CODALIQUOTA, :PRECOAVISTA, :CODNCM, :CFOP, :CODEMPRESA DO BEGIN if (NOT TCODIGO IS NULL) then BEGIN /*SELECT SPM.TOTALCOMPRA, SPM.TOTALVENDA FROM SPCONVERTEMOEDA(:TCODPRODUTO) SPM INTO :MOEDACOMPRA, :MOEDACONVERTIDA;*/ if (NOT MOEDACONVERTIDA IS NULL) then TPRECOVENDA = MOEDACONVERTIDA; if (NOT MOEDACOMPRA IS NULL) then TPRECOCOMPRA = MOEDACOMPRA; IF (NOT CODFILIAL IS NULL) THEN BEGIN SELECT SPF.TOTALCALCULADO FROM SPCONVERTEPRECOFILIAL(:CODFILIAL, :TPRECOVENDA) SPF INTO :TPRECOVENDA; END CODIGOFILIAL = TCODFILIAL; CODIGO = TCODIGO; CODPRODUTO = TCODPRODUTO; CODUNIDADE = TCODUNIDADE; CODGRUPO = TCODGRUPO; CODFABRICANTE =TCODFABRICANTE; DESCRICAO = TDESCRICAO; DESCTABELA = TDESCTABELA; CODBARRAS = TCODBARRAS; COMISSAO = TCOMISSAO; PRECOVENDA = TPRECOVENDA; TIPO = TTIPO; PRECOCOMPRA = TPRECOCOMPRA; REFERENCIA = TREFERENCIA; STATUS = TSTATUS; PRECOCUSTO = TPRECOCUSTO; UNIDADE = TUNIDADE; SIGLA = TSIGLA; SELECT F.DESCRICAO FROM FABRICANTE F WHERE F.CODFABRICANTE=:TCODFABRICANTE INTO :FABRICANTE; suspend; END END END if (TIPOPESQ = 'DE') then BEGIN FOR SELECT P.CODFILIAL, P.CODPRODUTO, P.CODPRODUTO, P.CODUNIDADE, P.CODGRUPO, P.CODFABRICANTE, P.DESCRICAO, CAST(NULL AS VARCHAR(30)), P.CODBARRAS, P.COMISSAO, P.PRECOVENDA, P.TIPO, P.PRECOCOMPRA, P.REFERENCIA, P.STATUS, P.PRECOCUSTO, U.DESCRICAO, U.SIGLA, P.COMPOSICAO, P.NOMECOMERCIAL, P.APRESENTACAO, P.CODSUBGRUPO, P.CODALIQUOTA , P.PRECOAVISTA, P.CODNCM, P.ORIGEM, P.CST, P.CFOP, P.CODEMPRESA FROM PRODUTOS P JOIN UNIDADEMEDIDA U ON (U.CODUNIDADE = P.CODUNIDADE) WHERE (P.LIXEIRA='N' OR LIXEIRA IS NULL) AND P.STATUS ='A' AND UPPER(P.DESCRICAO) LIKE UPPER(:PESQUISA) UNION ALL SELECT P.CODFILIAL, P.CODPRODUTO, TB.CODTABELA, TB.CODUNIDADE, P.CODGRUPO, P.CODFABRICANTE, P.DESCRICAO, TB.DESCTABELA, P.CODBARRAS, P.COMISSAO, TB.PRECOVENDA, P.TIPO, TB.PRECOCOMPRA, TB.REFERENCIA, P.STATUS, TB.PRECOCUSTO, U.DESCRICAO, U.SIGLA, P.COMPOSICAO, P.NOMECOMERCIAL, P.APRESENTACAO, P.CODSUBGRUPO, P.CODALIQUOTA, P.PRECOAVISTA, P.CODNCM, P.ORIGEM, P.CST, P.CFOP, P.CODEMPRESA FROM TABELADEPRECO TB JOIN PRODUTOS P ON (TB.CODPRODUTO = P.CODPRODUTO) JOIN UNIDADEMEDIDA U ON (U.CODUNIDADE = TB.CODUNIDADE) WHERE (P.LIXEIRA='N' OR LIXEIRA IS NULL) AND P.STATUS ='A' AND UPPER(P.DESCRICAO) LIKE UPPER(:PESQUISA) INTO :TCODFILIAL, :TCODIGO, :TCODPRODUTO, :TCODUNIDADE, :TCODGRUPO, :TCODFABRICANTE, :TDESCRICAO, :TDESCTABELA, :TCODBARRAS, :TCOMISSAO, :TPRECOVENDA, :TTIPO, :TPRECOCOMPRA, :TREFERENCIA, :TSTATUS, :TPRECOCUSTO, :TUNIDADE, :TSIGLA, :TCOMPOSICAO, :TNOMECOMERCIAL, :TAPRESENTACAO, :CODSUBGRUPO, :CODALIQUOTA, :PRECOAVISTA, :CODNCM, :ORIGEM, :CST, :CFOP, :CODEMPRESA DO BEGIN IF (TTIPO IN ('ACA', 'SMA')) then BEGIN SELECT SPT.PRECOCUSTO, SPT.PRECOVENDA FROM SPPRCUSTOVENDAINDUSTRIAS(:TCODIGO, :TTIPO) SPT INTO :TPRECOCUSTO, :TPRECOVENDA; END COR = NULL; TAM = NULL; NR = NULL; SELECT GP.COR, GP.TAM, GP.NR FROM GRADEPRODUTO GP WHERE GP.CODPRODUTO=:TCODIGO INTO :COR, :TAM, :NR; /*SELECT SPM.TOTALCOMPRA, SPM.TOTALVENDA FROM SPCONVERTEMOEDA(:TCODPRODUTO) SPM INTO :MOEDACOMPRA, :MOEDACONVERTIDA;*/ if (NOT MOEDACONVERTIDA IS NULL) then TPRECOVENDA = MOEDACONVERTIDA; if (NOT MOEDACOMPRA IS NULL) then TPRECOCOMPRA = MOEDACOMPRA; IF (NOT CODFILIAL IS NULL) THEN BEGIN SELECT SPF.TOTALCALCULADO FROM SPCONVERTEPRECOFILIAL(:CODFILIAL, :TPRECOVENDA) SPF INTO :TPRECOVENDA; END CODIGOFILIAL = TCODFILIAL; CODIGO = TCODIGO; CODPRODUTO = TCODPRODUTO; CODUNIDADE = TCODUNIDADE; CODGRUPO = TCODGRUPO; CODFABRICANTE =TCODFABRICANTE; DESCRICAO = TDESCRICAO; DESCTABELA = TDESCTABELA; CODBARRAS = TCODBARRAS; COMISSAO = TCOMISSAO; PRECOVENDA = TPRECOVENDA; TIPO = TTIPO; PRECOCOMPRA = TPRECOCOMPRA; REFERENCIA = TREFERENCIA; STATUS = TSTATUS; PRECOCUSTO = TPRECOCUSTO; UNIDADE = TUNIDADE; SIGLA = TSIGLA; COMPOSICAO = TCOMPOSICAO; NOMECOMERCIAL = TNOMECOMERCIAL; APRESENTACAO = TAPRESENTACAO; SELECT F.DESCRICAO FROM FABRICANTE F WHERE F.CODFABRICANTE=:TCODFABRICANTE INTO :FABRICANTE; SUSPEND; END END if (TIPOPESQ = 'NC') then /*POR NOME COMERCIAL*/ BEGIN FOR SELECT P.CODFILIAL, P.CODPRODUTO, P.CODPRODUTO, P.CODUNIDADE, P.CODGRUPO, P.CODFABRICANTE, P.DESCRICAO, CAST(NULL AS VARCHAR(30)), P.CODBARRAS, P.COMISSAO, P.PRECOVENDA, P.TIPO, P.PRECOCOMPRA, P.REFERENCIA, P.STATUS, P.PRECOCUSTO, U.DESCRICAO, U.SIGLA, P.COMPOSICAO, P.NOMECOMERCIAL, P.APRESENTACAO , P.CODSUBGRUPO, P.CODALIQUOTA, P.PRECOAVISTA, P.CODNCM, P.CFOP , P.CODEMPRESA FROM PRODUTOS P JOIN UNIDADEMEDIDA U ON (U.CODUNIDADE = P.CODUNIDADE) WHERE (P.LIXEIRA='N' OR LIXEIRA IS NULL) AND P.STATUS ='A' AND UPPER(P.NOMECOMERCIAL) LIKE UPPER(:PESQUISA) UNION ALL SELECT P.CODFILIAL, P.CODPRODUTO, TB.CODTABELA, TB.CODUNIDADE, P.CODGRUPO, P.CODFABRICANTE, P.DESCRICAO, TB.DESCTABELA, P.CODBARRAS, P.COMISSAO, TB.PRECOVENDA, P.TIPO, TB.PRECOCOMPRA, TB.REFERENCIA, P.STATUS, TB.PRECOCUSTO, U.DESCRICAO, U.SIGLA, P.COMPOSICAO, P.NOMECOMERCIAL, P.APRESENTACAO, P.CODSUBGRUPO, P.CODALIQUOTA, P.PRECOAVISTA, P.CODNCM, P.CFOP, P.CODEMPRESA FROM TABELADEPRECO TB JOIN PRODUTOS P ON (TB.CODPRODUTO = P.CODPRODUTO) JOIN UNIDADEMEDIDA U ON (U.CODUNIDADE = TB.CODUNIDADE) WHERE (P.LIXEIRA='N' OR LIXEIRA IS NULL) AND P.STATUS ='A' AND UPPER(P.NOMECOMERCIAL) LIKE UPPER(:PESQUISA) INTO :TCODFILIAL, :TCODIGO, :TCODPRODUTO, :TCODUNIDADE, :TCODGRUPO, :TCODFABRICANTE, :TDESCRICAO, :TDESCTABELA, :TCODBARRAS, :TCOMISSAO, :TPRECOVENDA, :TTIPO, :TPRECOCOMPRA, :TREFERENCIA, :TSTATUS, :TPRECOCUSTO, :TUNIDADE, :TSIGLA, :TCOMPOSICAO, :TNOMECOMERCIAL, :TAPRESENTACAO, :CODSUBGRUPO, :CODALIQUOTA, :PRECOAVISTA, :CODNCM, :CFOP, :CODEMPRESA DO BEGIN IF (TTIPO IN ('ACA', 'SMA')) then BEGIN SELECT SPT.PRECOCUSTO, SPT.PRECOVENDA FROM SPPRCUSTOVENDAINDUSTRIAS(:TCODIGO, :TTIPO) SPT INTO :TPRECOCUSTO, :TPRECOVENDA; END COR = NULL; TAM = NULL; NR = NULL; SELECT GP.COR, GP.TAM, GP.NR FROM GRADEPRODUTO GP WHERE GP.CODPRODUTO=:TCODIGO INTO :COR, :TAM, :NR; /*SELECT SPM.TOTALCOMPRA, SPM.TOTALVENDA FROM SPCONVERTEMOEDA(:TCODPRODUTO) SPM INTO :MOEDACOMPRA, :MOEDACONVERTIDA;*/ if (NOT MOEDACONVERTIDA IS NULL) then TPRECOVENDA = MOEDACONVERTIDA; if (NOT MOEDACOMPRA IS NULL) then TPRECOCOMPRA = MOEDACOMPRA; IF (NOT CODFILIAL IS NULL) THEN BEGIN SELECT SPF.TOTALCALCULADO FROM SPCONVERTEPRECOFILIAL(:CODFILIAL, :TPRECOVENDA) SPF INTO :TPRECOVENDA; END CODIGOFILIAL = TCODFILIAL; CODIGO = TCODIGO; CODPRODUTO = TCODPRODUTO; CODUNIDADE = TCODUNIDADE; CODGRUPO = TCODGRUPO; CODFABRICANTE =TCODFABRICANTE; DESCRICAO = TDESCRICAO; DESCTABELA = TDESCTABELA; CODBARRAS = TCODBARRAS; COMISSAO = TCOMISSAO; PRECOVENDA = TPRECOVENDA; TIPO = TTIPO; PRECOCOMPRA = TPRECOCOMPRA; REFERENCIA = TREFERENCIA; STATUS = TSTATUS; PRECOCUSTO = TPRECOCUSTO; UNIDADE = TUNIDADE; SIGLA = TSIGLA; COMPOSICAO = TCOMPOSICAO; NOMECOMERCIAL = TNOMECOMERCIAL; APRESENTACAO = TAPRESENTACAO; SELECT F.DESCRICAO FROM FABRICANTE F WHERE F.CODFABRICANTE=:TCODFABRICANTE INTO :FABRICANTE; SUSPEND; END END if (TIPOPESQ = 'CP') then /*POR COMPOSICAO*/ BEGIN FOR SELECT P.CODFILIAL, P.CODPRODUTO, P.CODPRODUTO, P.CODUNIDADE, P.CODGRUPO, P.CODFABRICANTE, P.DESCRICAO, CAST(NULL AS VARCHAR(30)), P.CODBARRAS, P.COMISSAO, P.PRECOVENDA, P.TIPO, P.PRECOCOMPRA, P.REFERENCIA, P.STATUS, P.PRECOCUSTO, U.DESCRICAO, U.SIGLA, P.COMPOSICAO, P.NOMECOMERCIAL, P.APRESENTACAO , P.CODSUBGRUPO, P.CODALIQUOTA, P.PRECOAVISTA, P.CODNCM, P.CFOP, P.CODEMPRESA FROM PRODUTOS P JOIN UNIDADEMEDIDA U ON (U.CODUNIDADE = P.CODUNIDADE) WHERE (P.LIXEIRA='N' OR LIXEIRA IS NULL) AND P.STATUS ='A' AND UPPER(P.COMPOSICAO) LIKE UPPER(:PESQUISA) UNION ALL SELECT P.CODFILIAL, P.CODPRODUTO, TB.CODTABELA, TB.CODUNIDADE, P.CODGRUPO, P.CODFABRICANTE, P.DESCRICAO, TB.DESCTABELA, P.CODBARRAS, P.COMISSAO, TB.PRECOVENDA, P.TIPO, TB.PRECOCOMPRA, TB.REFERENCIA, P.STATUS, TB.PRECOCUSTO, U.DESCRICAO, U.SIGLA, P.COMPOSICAO, P.NOMECOMERCIAL, P.APRESENTACAO, P.CODSUBGRUPO, P.CODALIQUOTA, P.PRECOAVISTA, P.CODNCM, P.CFOP , P.CODEMPRESA FROM PRODUTOS P JOIN TABELADEPRECO TB ON (TB.CODPRODUTO = P.CODPRODUTO) JOIN UNIDADEMEDIDA U ON (U.CODUNIDADE = TB.CODUNIDADE) WHERE (P.LIXEIRA='N' OR LIXEIRA IS NULL) AND P.STATUS ='A' AND UPPER(P.COMPOSICAO) LIKE UPPER(:PESQUISA) INTO :TCODFILIAL, :TCODIGO, :TCODPRODUTO, :TCODUNIDADE, :TCODGRUPO, :TCODFABRICANTE, :TDESCRICAO, :TDESCTABELA, :TCODBARRAS, :TCOMISSAO, :TPRECOVENDA, :TTIPO, :TPRECOCOMPRA, :TREFERENCIA, :TSTATUS, :TPRECOCUSTO, :TUNIDADE, :TSIGLA, :TCOMPOSICAO, :TNOMECOMERCIAL, :TAPRESENTACAO, :CODSUBGRUPO, :CODALIQUOTA, :PRECOAVISTA, :CODNCM, :CFOP, :CODEMPRESA DO BEGIN IF (TTIPO IN ('ACA', 'SMA')) then BEGIN SELECT SPT.PRECOCUSTO, SPT.PRECOVENDA FROM SPPRCUSTOVENDAINDUSTRIAS(:TCODIGO, :TTIPO) SPT INTO :TPRECOCUSTO, :TPRECOVENDA; END COR = NULL; TAM = NULL; NR = NULL; SELECT GP.COR, GP.TAM, GP.NR FROM GRADEPRODUTO GP WHERE GP.CODPRODUTO=:TCODIGO INTO :COR, :TAM, :NR; /*SELECT SPM.TOTALCOMPRA, SPM.TOTALVENDA FROM SPCONVERTEMOEDA(:TCODPRODUTO) SPM INTO :MOEDACOMPRA, :MOEDACONVERTIDA;*/ if (NOT MOEDACONVERTIDA IS NULL) then TPRECOVENDA = MOEDACONVERTIDA; if (NOT MOEDACOMPRA IS NULL) then TPRECOCOMPRA = MOEDACOMPRA; IF (NOT CODFILIAL IS NULL) THEN BEGIN SELECT SPF.TOTALCALCULADO FROM SPCONVERTEPRECOFILIAL(:CODFILIAL, :TPRECOVENDA) SPF INTO :TPRECOVENDA; END CODIGOFILIAL = TCODFILIAL; CODIGO = TCODIGO; CODPRODUTO = TCODPRODUTO; CODUNIDADE = TCODUNIDADE; CODGRUPO = TCODGRUPO; CODFABRICANTE =TCODFABRICANTE; DESCRICAO = TDESCRICAO; DESCTABELA = TDESCTABELA; CODBARRAS = TCODBARRAS; COMISSAO = TCOMISSAO; PRECOVENDA = TPRECOVENDA; TIPO = TTIPO; PRECOCOMPRA = TPRECOCOMPRA; REFERENCIA = TREFERENCIA; STATUS = TSTATUS; PRECOCUSTO = TPRECOCUSTO; UNIDADE = TUNIDADE; SIGLA = TSIGLA; COMPOSICAO = TCOMPOSICAO; NOMECOMERCIAL = TNOMECOMERCIAL; APRESENTACAO = TAPRESENTACAO; SELECT F.DESCRICAO FROM FABRICANTE F WHERE F.CODFABRICANTE=:TCODFABRICANTE INTO :FABRICANTE; SUSPEND; END END /*:CODIGO, :CODPRODUTO, :CODUNIDADE, :CODGRUPO, :DESCRICAO, :CODBARRAS, :COMISSAO, :PRECOVENDA, :TIPO, :PRECOCOMPRA, :REFERENCIA, :STATUS, :PRECOCUSTO, :UNIDADE, :SIGLA */ end^ SET TERM ; ^ SET TERM ^ ; CREATE OR ALTER procedure SPCONTASRECEBER returns ( CODMOVIMENTO integer, CODFILIAL integer, CODFUNCIONARIO integer, DATA date, HORA time, TIPO varchar(2), CODPLANOPGTO integer, CODPARCELA integer, NRPARCELA integer, DOCUMENTO varchar(20), PAGO char(1), CODCLIENTE integer, CLIENTE varchar(70), PLANOCONTAS varchar(40), VALORPARCELA float, VENCIMENTO date, VALORPAGO float, RESTANTE float, RESTANTECOMJUROS float, DIASDEATRAZO integer, NRDOCUMENTO varchar(20), OBS blob sub_type 0 segment size 80, STATUS char(1), SPC char(1), CODSITUACAO integer, SITUACAO varchar(50), STATUSCLIENTE char(1), NRBOLETO varchar(30), DEPENDENTE varchar(70), FILIAL varchar(40), EXTENSO varchar(250), OBSPARCELA varchar(50), NRNFE varchar(20), PLANOPGTO varchar(40), TIPODOC varchar(20), CODEMPRESA integer) as declare variable PARCELA integer; declare variable DIASATRAZO integer; declare variable CREDITO float; declare variable VALOR float; declare variable CARENCIA integer; declare variable JUROS float; declare variable JUROSCALCULO float; declare variable TIPOJUROS char(1); declare variable JUROSSOBRE char(1); declare variable DIAS integer; declare variable VENC date; declare variable HOJE date; declare variable VALORRESTANTE float; declare variable TCODPARCELA integer; declare variable CODIGOCONTABIL varchar(20); declare variable CODCONTA integer; begin FOR SELECT PC.CODPARCELA, PC.CODPARCELA, PC.CODPARCELA, PC.NRPARCELA, PC.VALORPARCELA, PC.VENCIMENTO, PC.DOCUMENTO, PC.PAGO, PC.STATUS, PC.CODSITUACAO, PC.CODCONTA, PC.OBSPARCELA, CPR.CODPLANOPGTO, CPR.CODMOVIMENTO FROM PARCELASCONTAS PC JOIN CONTASPAGARRECEBER CPR ON (CPR.CODCONTA=PC.CODCONTA) WHERE PC.PAGO='N' AND CPR.TIPO IN ('VE', 'RE','S') INTO :TCODPARCELA, :PARCELA, :CODPARCELA, :NRPARCELA, :VALOR, :VENC, :DOCUMENTO, :PAGO, :STATUS, :CODSITUACAO, :CODCONTA, :OBSPARCELA, :CODPLANOPGTO, :CODMOVIMENTO DO BEGIN /*TETE SELECT CPR.CODPLANOPGTO, CPR.CODMOVIMENTO FROM CONTASPAGARRECEBER CPR WHERE CPR.CODCONTA=:CODCONTA INTO :CODPLANOPGTO, :CODMOVIMENTO; */ select M.CODEMPRESA from MOVIMENTOSPRODUTOS M where M.CODMOVIMENTO=:CODMOVIMENTO into :CODEMPRESA; if (CODEMPRESA IS NULL) then BEGIN select CODEMPRESA FROM usuarios U WHERE U.CODUSUARIO=(SELECT CODUSUARIO FROM MOVIMENTOSPRODUTOS WHERE CODMOVIMENTO=:CODMOVIMENTO) INTO :CODEMPRESA; END SELECT CF.CARENCIAJUROSPORATRAZO, CF.JUROSPORATRAZO, CF.TIPPOJUROSPORATRAZO, CF.JUROSSOBRE FROM CONFIGURACOES CF where CF.CODEMPRESA=:CODEMPRESA INTO :CARENCIA, :JUROS, :TIPOJUROS, :JUROSSOBRE; if (JUROS IS NULL) then JUROS = 0; if (CARENCIA IS NULL) then CARENCIA = 0; SELECT M.CODFILIAL, M.DATA, M.HORA, M.TIPO, M.CODIGOCONTABIL, M.CODFUNCIONARIO, M.CODEMPRESA FROM MOVIMENTOSPRODUTOS M WHERE M.CODMOVIMENTO=:CODMOVIMENTO INTO :CODFILIAL, :DATA, :HORA, :TIPO, :CODIGOCONTABIL, :CODFUNCIONARIO, :CODEMPRESA; NRDOCUMENTO = NULL; TIPODOC = NULL; SELECT DM.TIPODOC, DM.NRDOCUMENTO FROM DOCUMENTOMOV DM WHERE DM.CODMOVIMENTO=:CODMOVIMENTO INTO :TIPODOC, :NRDOCUMENTO; NRNFE = NULL; SELECT N.NRDOCUMENTO FROM NFEMOV N WHERE N.CODMOVIMENTO=:CODMOVIMENTO INTO :NRNFE; CODCLIENTE = NULL; SELECT CM.CODCLIENTE FROM CLIENTEMOVIMENTO CM WHERE CM.CODMOVIMENTO=:CODMOVIMENTO INTO :CODCLIENTE; SELECT PL.DESCRICAO FROM PLANOSDECONTAS PL WHERE PL.CODEMPRESA=:CODEMPRESA AND PL.CODIGOCONTABIL=:CODIGOCONTABIL INTO :PLANOCONTAS; NRBOLETO=NULL; SELECT BP.NRBOLETO FROM BOLETOPARCELA BP WHERE BP.CODPARCELA=:TCODPARCELA INTO :NRBOLETO; PLANOPGTO=''; SELECT PG.DESCRICAO FROM PLANOSPAGAMENTO PG WHERE PG.CODEMPRESA=:CODEMPRESA AND PG.CODPLANOPGTO=:CODPLANOPGTO INTO :PLANOPGTO; SELECT CAST(C.NOME AS VARCHAR(70)), C.SPC, C.STATUS FROM CLIENTES C WHERE C.CODCLIENTE=:CODCLIENTE INTO :CLIENTE, :SPC, :STATUSCLIENTE; SITUACAO = NULL; SELECT TS.DESCRICAO FROM TABELASSIMPLES TS WHERE TS.CODTABELASIMPLES=:CODSITUACAO INTO :SITUACAO; OBS = NULL; SELECT OB.OBS FROM OBSPARCELASCONTAS OB WHERE OB.CODPARCELA=:TCODPARCELA INTO :OBS; DEPENDENTE = NULL; SELECT DC.NOME FROM DEPENDENTECLIMOV DCM JOIN DEPENDENTESCLI DC ON (DC.CODDEPENDENTE = DCM.CODDEPENDENTE) WHERE DCM.CODMOVIMENTO=:CODMOVIMENTO INTO :DEPENDENTE; SELECT FI.NOME FROM FILIAIS FI WHERE FI.CODFILIAL=:CODFILIAL INTO :FILIAL; SELECT SUM(PG.VALOR) FROM PARCELASPGTO PG WHERE PG.CODPARCELA = :PARCELA INTO :CREDITO; if (CREDITO IS NULL ) then CREDITO = 0; CODPARCELA = PARCELA; VALORPAGO = CREDITO; VALORPARCELA = VALOR; VENCIMENTO = VENC; RESTANTE = VALOR - CREDITO; VALORRESTANTE = VALOR - CREDITO; HOJE = CURRENT_DATE; DIASATRAZO = HOJE - VENC; DIASDEATRAZO = DIASATRAZO; IF (NOT TIPOJUROS IS NULL) then BEGIN IF (DIASATRAZO>=CARENCIA) then BEGIN IF (TIPOJUROS ='M') then BEGIN JUROSCALCULO = (JUROS / 30) * DIASATRAZO; IF (JUROSSOBRE = 'P') then RESTANTECOMJUROS = (VALORPARCELA + ((VALORPARCELA * JUROSCALCULO)/100)) - CREDITO; ELSE RESTANTECOMJUROS = ((VALORPARCELA - CREDITO ) + (((VALORPARCELA - CREDITO)* JUROSCALCULO)/100)); END IF (TIPOJUROS ='D') then BEGIN JUROSCALCULO = JUROS * DIASATRAZO; IF (JUROSSOBRE = 'P') then RESTANTECOMJUROS = (VALORPARCELA + ((VALORPARCELA * JUROSCALCULO)/100)) - CREDITO; ELSE RESTANTECOMJUROS = ((VALORPARCELA - CREDITO )+ (((VALORPARCELA - CREDITO)* JUROSCALCULO)/100)); END END ELSE BEGIN RESTANTECOMJUROS = VALORPARCELA - CREDITO; END END ELSE BEGIN RESTANTECOMJUROS = VALORPARCELA - CREDITO; END IF (DIASATRAZO < 0) then BEGIN DIASATRAZO = 0; DIASDEATRAZO = DIASATRAZO; END EXTENSO=NULL; if (RESTANTECOMJUROS>0) then begin SELECT VALOREXTENSO FROM EXTENSO(:RESTANTECOMJUROS,'S') INTO :EXTENSO; end suspend; END end^ SET TERM ; ^ ALTER DOMAIN STATUS DROP CONSTRAINT; SET TERM ^ ; CREATE TRIGGER DIAS_BI FOR DIAS ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.CODDIA IS NULL or NEW.CODDIA=0 ) THEN NEW.CODDIA = GEN_ID(GEN_DIAS,1); END^ SET TERM ; ^ update RDB$RELATION_FIELDS set RDB$FIELD_SOURCE = 'CHAR1' where (RDB$FIELD_NAME = 'STATUS') and (RDB$RELATION_NAME = 'EMPRESA'); update RDB$RELATION_FIELDS set RDB$FIELD_SOURCE = 'VARCHAR_30' where (RDB$FIELD_NAME = 'CEP') and (RDB$RELATION_NAME = 'EMPRESA'); ALTER TABLE TABNCMBAR ADD CEST VARCHAR20; SET TERM ^ ; CREATE OR ALTER procedure SPCONTASRECEBIDAS ( DATAI date, DATAF date) returns ( CODMOVIMENTO integer, CODFILIAL integer, FILIAL varchar(40), DATA date, TIPO varchar(2), CODPLANOPGTO integer, CODPARCELA integer, NRPARCELA integer, VALORPARCELA float, VENCIMENTO date, DOCUMENTO varchar(20), PAGO char(1), CODCLIENTE integer, CLIENTE varchar(70), DATAPGTO date, VALORPAGO float, JUROS float, NRDOCUMENTO varchar(20), NOME varchar(70), CODPARCELAPGTO integer, DESCONTO float, VALORNADATA float, CODUSUARIO integer, USUARIO varchar(10), NRNFE varchar(20), TIPODOC varchar(20), EXTENSO varchar(255), CODIGOCONTABIL varchar(20), PLANODECONTAS varchar(40), TIPOPGTO varchar(15), HORA time, CREDITO float, RESTANTECOMJUROS float) as declare variable TIPOPG char(1); declare variable CODEMPRESA integer; begin FOR SELECT CPR.CODMOVIMENTO, CPR.CODPLANOPGTO, PC.CODPARCELA, PC.NRPARCELA, PC.VALORPARCELA, PC.VENCIMENTO, PC.DOCUMENTO, PC.PAGO, PG.DATA, PG.VALOR, PG.CODPARCELAPGTO, PG.VALORNADATA, PG.CODUSUARIO, PG.TIPO, PG.HORA FROM PARCELASPGTO PG JOIN PARCELASCONTAS PC ON (PG.CODPARCELA = PC.CODPARCELA) JOIN CONTASPAGARRECEBER CPR ON (CPR.CODCONTA = PC.CODCONTA) WHERE CPR.TIPO IN ('VE', 'RE') AND PG.DATA>=:DATAI AND PG.DATA<=:DATAF INTO :CODMOVIMENTO, :CODPLANOPGTO, :CODPARCELA, :NRPARCELA, :VALORPARCELA, :VENCIMENTO, :DOCUMENTO, :PAGO, :DATAPGTO, :VALORPAGO, :CODPARCELAPGTO, :VALORNADATA, :CODUSUARIO, :TIPOPG, :HORA DO BEGIN TIPOPGTO = NULL; /*if (TIPOPG='D') then TIPOPGTO = 'DINHEIRO'; if (TIPOPG='C') then TIPOPGTO = 'CHEQUE'; if (TIPOPG='K') then TIPOPGTO = 'CARTAO';*/ SELECT TIPOPGTO FROM SPTIPOPGTO(:TIPOPG) INTO :TIPOPGTO; NRDOCUMENTO = null; USUARIO = NULL; SELECT U.LOGIN FROM USUARIOS U WHERE U.CODUSUARIO=:CODUSUARIO INTO :USUARIO; CODIGOCONTABIL = NULL; SELECT M.CODFILIAL, M.DATA, F.NOME, M.TIPO, M.CODIGOCONTABIL, M.CODEMPRESA FROM MOVIMENTOSPRODUTOS M JOIN FILIAIS F ON (F.CODFILIAL = M.CODFILIAL) WHERE M.CODMOVIMENTO=:CODMOVIMENTO INTO :CODFILIAL, :DATA, :FILIAL, :TIPO, :CODIGOCONTABIL, :CODEMPRESA; SELECT F.NOME FROM FILIAIS F WHERE F.CODFILIAL=:CODFILIAL INTO :FILIAL; NRNFE = NULL; SELECT N.NRDOCUMENTO FROM NFEMOV N WHERE N.CODMOVIMENTO=:CODMOVIMENTO INTO :NRNFE; SELECT DM.TIPODOC, DM.NRDOCUMENTO FROM DOCUMENTOMOV DM WHERE DM.CODMOVIMENTO=:CODMOVIMENTO INTO :TIPODOC, :NRDOCUMENTO; SELECT CM.CODCLIENTE FROM CLIENTEMOVIMENTO CM WHERE CM.CODMOVIMENTO=:CODMOVIMENTO INTO :CODCLIENTE; SELECT CAST(C.NOME AS VARCHAR(70))AS CLIENTE, C.NOME FROM CLIENTES C WHERE C.CODCLIENTE=:CODCLIENTE INTO :CLIENTE, :NOME; SELECT PL.DESCRICAO FROM PLANOSDECONTAS PL WHERE PL.CODIGOCONTABIL=:CODIGOCONTABIL AND PL.CODEMPRESA=:CODEMPRESA INTO :PLANODECONTAS; if (VALORPAGO>VALORPARCELA) then BEGIN JUROS = VALORPAGO - VALORPARCELA; END ELSE JUROS = 0; DESCONTO =0; SELECT SUM(DC.VALOR) FROM LINKDESCONTOPARCELEA LK JOIN DESCONTOPARCELA DC ON (DC.CODDESCONTOPARCELA = LK.CODDESCONTOPARCELA) WHERE LK.CODPARCELAPGTO=:CODPARCELAPGTO INTO :DESCONTO; EXTENSO=NULL; if (VALORPAGO>0) then begin SELECT VALOREXTENSO FROM EXTENSO(:VALORPAGO,'S') INTO :EXTENSO; end RESTANTECOMJUROS =0 ; CREDITO =0 ; SELECT RESTANTECOMJUROS, VALORPAGO FROM jurosparcela(:CODPARCELA) INTO :RESTANTECOMJUROS, :CREDITO; /*SELECT CR.RESTANTECOMJUROS, CR.VALORPAGO FROM SPCONTASRECEBER CR WHERE CR.CODPARCELA=:CODPARCELA INTO :RESTANTECOMJUROS, :CREDITO;*/ /*SELECT SUM(PG.VALOR) FROM PARCELASPGTO PG WHERE PG.CODPARCELA=:CODPARCELA INTO :CREDITO; if (CREDITO IS NULL ) then CREDITO = 0;*/ suspend; END end^ SET TERM ; ^ CREATE TABLE TABCST ( ID INTEGER NOT NULL); ALTER TABLE TABCST ADD CONSTRAINT PK_TABCST PRIMARY KEY (ID); ALTER TABLE TABCST ADD CODIGO VAR_CHAR10; ALTER TABLE TABCST ADD DESCRICAO VC250; ALTER TABLE TABCST ADD STATUS CHAR1; CREATE SEQUENCE GEN_TABCST_ID; SET TERM ^ ; CREATE TRIGGER TABCST_BI FOR TABCST ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.ID IS NULL or NEW.ID=0 ) THEN NEW.ID = GEN_ID(GEN_TABCST_ID,1); END^ SET TERM ; ^ ALTER TABLE TABCST ADD TIPO VAR_CHAR10; SET TERM ^ ; CREATE OR ALTER procedure SPPESQMOVPORDATA ( DATAI date, DATAF date) returns ( CODMOVIMENTO integer, DATA date, HORA time, DATASAIDAENTRADA date, TIPO varchar(2), SITUACAO varchar(2), CODIGOCONTABIL varchar(20), CODFUNCIONARIO integer, NRDOCUMENTO varchar(20), PLANODECONTAS varchar(40), TIPOPESSOA varchar(15), CODPESSOA integer, NOMEPESSOA varchar(70), USUARIO varchar(10), VALOR float, CODFILIAL integer, CODACUMULADOR integer, CODESPECIE integer, FORMAPGTO varchar(40), FILIAL varchar(40), STATUS varchar(50), FUNCIONARIO varchar(40), CODEMPRESA integer) as begin FOR SELECT M.CODMOVIMENTO, M.DATA, M.HORA, M.DATASAIDAENTRADA, M.TIPO, M.SITUACAO, M.CODIGOCONTABIL, M.CODFUNCIONARIO, DM.NRDOCUMENTO, PC.DESCRICAO AS PLANODECONTAS, CAST('Cliente' as VARCHAR(15)) AS TIPOPESSOA,CL.CODCLIENTE AS CODPESSOA, CAST(CL.NOME AS VARCHAR(70)) AS NOMEPESSOA ,U.LOGIN, M.TOTALGERAL, M.CODFILIAL, M.CODACUMULADOR, M.CODESPECIE,FP.DESCRICAO, FI.NOME, SN.DESCRICAO, F.NOME, M.codempresa FROM MOVIMENTOSPRODUTOS M JOIN FILIAIS FI ON (FI.CODFILIAL = M.CODFILIAL) LEFT JOIN DOCUMENTOMOV DM ON (DM.CODMOVIMENTO = M.CODMOVIMENTO) LEFT JOIN PLANOSDECONTAS PC ON (PC.CODIGOCONTABIL = M.CODIGOCONTABIL AND PC.CODEMPRESA=M.codempresa) LEFT JOIN CLIENTEMOVIMENTO CM ON (CM.CODMOVIMENTO = M.CODMOVIMENTO) LEFT JOIN CLIENTES CL ON (CL.CODCLIENTE = CM.CODCLIENTE) LEFT JOIN USUARIOS U ON (U.CODUSUARIO = M.CODUSUARIO) LEFT JOIN FUNCIONARIOS F ON (F.CODFUNCIONARIO = M.CODFUNCIONARIO) LEFT JOIN CONTASPAGARRECEBER CPR ON (CPR.CODMOVIMENTO = M.CODMOVIMENTO) LEFT JOIN PLANOSPAGAMENTO FP ON (FP.CODPLANOPGTO = CPR.CODPLANOPGTO) LEFT JOIN SITUACAONOTA SN ON (SN.COSITUACAONOTA = M.CODSITUACAONOTA) WHERE M.TIPO IN ('VE','PV', 'OR','CS','DE','NE', 'NC', 'TR', 'LO') AND M.DATA>=:DATAI AND M.DATA<=:DATAF union all SELECT M.CODMOVIMENTO, M.DATA, M.HORA, M.DATASAIDAENTRADA, M.TIPO, M.SITUACAO, M.CODIGOCONTABIL, M.CODFUNCIONARIO, DM.NRDOCUMENTO, PC.DESCRICAO AS PLANODECONTAS, CAST('Fornecedor' as VARCHAR(15)) AS TIPOPESSOA, FM.CODFORNECEDOR AS CODPESSOA, CAST(F.NOME AS VARCHAR(70)) NOMEPESSOA ,U.LOGIN, M.TOTALGERAL, M.CODFILIAL, M.CODACUMULADOR, M.CODESPECIE,FP.DESCRICAO, FI.NOME, SN.DESCRICAO, FU.NOME, M.codempresa FROM MOVIMENTOSPRODUTOS M JOIN FILIAIS FI ON (FI.CODFILIAL=M.CODFILIAL) LEFT JOIN DOCUMENTOMOV DM ON (DM.CODMOVIMENTO = M.CODMOVIMENTO) LEFT JOIN PLANOSDECONTAS PC ON (PC.CODIGOCONTABIL = M.CODIGOCONTABIL AND PC.CODEMPRESA=M.codempresa) LEFT JOIN FORNMOVIMENTO FM ON (FM.CODMOVIMENTO = M.CODMOVIMENTO) LEFT JOIN FORNECEDORES F ON (F.CODFORNECEDOR = FM.CODFORNECEDOR) LEFT JOIN USUARIOS U ON (U.CODUSUARIO = M.CODUSUARIO) LEFT JOIN FUNCIONARIOS FU ON (FU.CODFUNCIONARIO = M.CODFUNCIONARIO) LEFT JOIN CONTASPAGARRECEBER CPR ON (CPR.CODMOVIMENTO = M.CODMOVIMENTO) LEFT JOIN PLANOSPAGAMENTO FP ON (FP.CODPLANOPGTO = CPR.CODPLANOPGTO) LEFT JOIN SITUACAONOTA SN ON (SN.COSITUACAONOTA = M.CODSITUACAONOTA) WHERE M.TIPO IN ('CO','PC','CE','DS','NS', 'NF') AND M.DATA>=:DATAI AND M.DATA<=:DATAF INTO CODMOVIMENTO, DATA, HORA, DATASAIDAENTRADA, TIPO, SITUACAO, CODIGOCONTABIL, CODFUNCIONARIO, NRDOCUMENTO, PLANODECONTAS, TIPOPESSOA, CODPESSOA, NOMEPESSOA, USUARIO, VALOR, CODFILIAL, CODACUMULADOR, CODESPECIE, :FORMAPGTO, :FILIAL, :STATUS, :FUNCIONARIO, :CODEMPRESA DO suspend; end^ SET TERM ; ^ SET TERM ^ ; CREATE OR ALTER procedure SPPESQPESSOAS returns ( CODPESSOA integer, CODEMPRESA integer, NOME varchar(70), CPFCNPJ varchar(14), RAZAO varchar(70), TIPO char(1), STATUS char(1), CODFILIAL integer, CODPESSOAEMP integer, RGIE varchar(15), TIPOPESSOA varchar(10)) as declare variable TCODCLIENTE integer; declare variable TCODEMPRESA integer; declare variable TNOME varchar(70); declare variable TCPFCNPJ varchar(14); declare variable TRAZAO varchar(70); declare variable TSTATUS char(1); declare variable TCODFILIAL integer; declare variable TRGIE varchar(14); declare variable TTIPO char(1); BEGIN FOR SELECT C.CODCLIENTE, C.NOME, CJ.CNPJ AS CPFCNPJ, CJ.IE AS RGIE, CJ.RAZAO, C.TIPO, C.STATUS, C.CODFILIAL, C.CODEMPRESA, C.CODCLIEMP, CAST('CLIENTE' AS VARCHAR(10)) FROM CLIENTES C JOIN CLIENTEJURIDICO CJ ON (CJ.CODCLIENTE = C.CODCLIENTE) LEFT JOIN OBSCLIENTES O ON (O.CODCLIENTE = C.CODCLIENTE) WHERE C.LIXEIRA='N' OR C.LIXEIRA IS NULL INTO :TCODCLIENTE, :TNOME, TCPFCNPJ, :TRGIE, :TRAZAO, :TTIPO, :TSTATUS, :TCODFILIAL, :TCODEMPRESA, :CODPESSOAEMP, :TIPOPESSOA DO BEGIN IF (NOT TCODCLIENTE IS NULL) then BEGIN CODPESSOA = TCODCLIENTE; NOME = TNOME; CPFCNPJ = TCPFCNPJ; RGIE = TRGIE; RAZAO = TRAZAO; TIPO = TTIPO; STATUS =TSTATUS; CODFILIAL = TCODFILIAL; CODEMPRESA = TCODEMPRESA; SUSPEND; END END FOR SELECT C.CODCLIENTE, C.NOME, CAST(NULL AS VARCHAR(14)) AS CPFCNPJ, CAST(NULL AS VARCHAR(15)) AS RGIE, CAST(NULL AS VARCHAR(70)) AS RAZAO, C.TIPO, C.STATUS, C.CODFILIAL, C.CODEMPRESA, C.CODCLIEMP, CAST('CLIENTE' AS VARCHAR(10)) FROM CLIENTES C LEFT JOIN OBSCLIENTES O ON (O.CODCLIENTE = C.CODCLIENTE) WHERE (C.LIXEIRA='N' OR C.LIXEIRA IS NULL) AND C.CODCLIENTE NOT IN (SELECT CODCLIENTE FROM CLIENTEJURIDICO) AND (C.CODCLIENTE NOT IN (SELECT CODCLIENTE FROM CLIENTEFISICO)) INTO :TCODCLIENTE, :TNOME, :TCPFCNPJ, :TRGIE, :TRAZAO, :TTIPO, :TSTATUS, :TCODFILIAL, :TCODEMPRESA, :CODPESSOAEMP, :TIPOPESSOA DO BEGIN IF (NOT TCODCLIENTE IS NULL) then BEGIN CODPESSOA = TCODCLIENTE; NOME = TNOME; CPFCNPJ = TCPFCNPJ; RGIE = TRGIE; RAZAO = TRAZAO; TIPO = TTIPO; STATUS =TSTATUS; CODFILIAL = TCODFILIAL; CODEMPRESA = TCODEMPRESA; SUSPEND; END END FOR SELECT C.CODCLIENTE, C.NOME, CAST(NULL AS VARCHAR(14)) AS CPFCNPJ, CAST(NULL AS VARCHAR(15)) AS RGIE, CAST(NULL AS VARCHAR(70)) AS RAZAO, C.TIPO, C.STATUS, C.CODFILIAL, C.CODEMPRESA, C.CODCLIEMP, CAST('CLIENTE' AS VARCHAR(10)) FROM CLIENTES C LEFT JOIN OBSCLIENTES O ON (O.CODCLIENTE = C.CODCLIENTE) WHERE (C.LIXEIRA='N' OR C.LIXEIRA IS NULL) AND C.CODCLIENTE NOT IN (SELECT CODCLIENTE FROM CLIENTEJURIDICO) AND (C.CODCLIENTE NOT IN (SELECT CODCLIENTE FROM CLIENTEFISICO)) INTO :TCODCLIENTE, :TNOME, :TCPFCNPJ, :TRGIE, :TRAZAO, :TTIPO, :TSTATUS, :TCODFILIAL, :TCODEMPRESA, :CODPESSOAEMP, :TIPOPESSOA DO BEGIN IF (NOT TCODCLIENTE IS NULL) then BEGIN CODPESSOA = TCODCLIENTE; NOME = TNOME; CPFCNPJ = TCPFCNPJ; RGIE = TRGIE; RAZAO = TRAZAO; TIPO = TTIPO; STATUS =TSTATUS; CODFILIAL = TCODFILIAL; CODEMPRESA = TCODEMPRESA; SUSPEND; END END FOR SELECT FR.CODFORNECEDOR, FR.NOME, CAST(FR.CGCCPF AS VARCHAR(14)) CPFCNPJ, FR.RGIE AS RGIE, FR.RAZAOSOCIAL, CAST(NULL AS VARCHAR(1)), FR.STATUS, FR.CODFILIAL, FR.CODEMPRESA, FR.CODFORNECEDOR, CAST('FORNECEDOR' AS VARCHAR(10)) FROM FORNECEDORES FR WHERE FR.LIXEIRA='N' OR FR.LIXEIRA IS NULL INTO :TCODCLIENTE, :TNOME, TCPFCNPJ, :TRGIE, :TRAZAO, :TTIPO, :TSTATUS, :TCODFILIAL, :TCODEMPRESA, :CODPESSOAEMP, :TIPOPESSOA DO BEGIN IF (NOT TCODCLIENTE IS NULL) then BEGIN CODPESSOA = TCODCLIENTE; NOME = TNOME; CPFCNPJ = TCPFCNPJ; RGIE = TRGIE; RAZAO = TRAZAO; TIPO = TTIPO; STATUS =TSTATUS; CODFILIAL = TCODFILIAL; CODEMPRESA = TCODEMPRESA; SUSPEND; END END end^ SET TERM ; ^ update RDB$RELATION_FIELDS set RDB$FIELD_SOURCE = 'VARCHAR_50' where (RDB$FIELD_NAME = 'BAIRRO') and (RDB$RELATION_NAME = 'ENDERECOSFORN'); update RDB$FIELDS set RDB$FIELD_LENGTH = 50, RDB$CHARACTER_LENGTH = 50 where RDB$FIELD_NAME = 'RDB$181' ; ALTER TABLE FORNECEDORES ADD CONTRIBUINTEICMS CHAR1; ALTER TABLE ITENSMOVIMENTOPROD ADD VDESCNOTA VALOR_10_2; SET TERM ^ ; CREATE OR ALTER procedure SPITENSMOV ( MOVIMENTO integer) returns ( CODITEMMOVIMENTO integer, CODMOVIMENTO integer, CODUNIDADE integer, CODPRODUTO integer, CODTABELA integer, REFERENCIA varchar(20), PRODUTO varchar(50), OUTROS numeric(15,2), DESCTABELA varchar(30), CODGRUPO integer, GRUPO varchar(30), CODFABRICANTE integer, FABRICANTE varchar(40), QTD float, PICMSST numeric(10,2), VICMSST numeric(10,2), VBCST numeric(10,2), UNIDADE varchar(30), VALOR float, TOTAL float, BAIXADO char(1), VALORUNIT float, DESCONTO float, TOTALUNIT float, CODALIQUOTA varchar(10), ALIQUOTA float, SIGLA varchar(3), DESCRICAOADICIONAL varchar(100), DESCADICIONAL varchar(50), APRESENTACAO varchar(40), CODTABELASIMPLES integer, COR varchar(40), QTDENTREGUE float, FALTAENTREGA float, VOLUMES integer, ICMS numeric(10,2), IPI numeric(10,2), TOTALIPI numeric(10,2), TOTALICMS numeric(10,2), ACRESSUGESTAO float, ESTOQUEATUAL float, COMISSAO float, VALORCOMISSAO float, CORGRADE varchar(40), TAM varchar(5), NR integer, DESCONTOMOV float, TOTALCOMDESCONTO float, VALORAVISTA float, TOTALAVISTA float, FABRICADO char(1), DATAFAB date, CODNCM varchar(30), CST varchar(10), INFPRVENDA float, CFOP varchar(10), ORIGEM varchar(4), TRTIPO varchar(1), CODBARRAS varchar(30), CEST varchar(15), BASECALCULOICMS numeric(10,2), BASEIPI numeric(10,2), ALTERAR varchar(15), EXCLUIR varchar(15), OUTRAACAO varchar(15), VDESCNOTA numeric(15,2)) as declare variable TEMPCODPROD integer; declare variable CODITEMMOV integer; declare variable TEMPDESC varchar(50); declare variable DESCPROD varchar(50); declare variable TEMPDESCTABELA varchar(30); declare variable ENTREGAMAD float; declare variable ENTREGAPD float; declare variable TCODALIQUOTA varchar(10); declare variable TDESCONTOMOV float; declare variable TIPODESCONTOMOV char(1); declare variable TOTALMOV float; declare variable TCST varchar(10); begin /*TESTE*/ FOR SELECT I.CODITEMMOVIMENTO, I.CODMOVIMENTO, I.CODTABELA, I.QTD, I.VALOR, I.QTD * I.VALOR, I.BAIXADO, I.VALORUNIT, I.DESCONTO, I.QTD * I.VALORUNIT, I.CODITEMMOVIMENTO, I.CODTABELA, I.CODUNIDADE, I.CODTABELASIMPLES, I.VOLUMES, I.ICMS, I.IPI, I.ESTOQUEATUAL, I.COMISSAO, I.CODALIQUOTA, I.FABRICADO, I.DATAFAB, I.CFOP, I.VALORAVISTA, I.TRTIPO, I.CST, I.CEST, I.BASECALCULOICMS, I.BASEIPI, I.VBCST, I.PICMSST, I.VICMSST, I.OUTROS, I.vdescnota, I.QTD * I.VALORAVISTA FROM ITENSMOVIMENTOPROD I WHERE I.CODMOVIMENTO=:MOVIMENTO AND (I.TIPO IS NULL or I.TIPO='I') INTO :CODITEMMOVIMENTO, :CODMOVIMENTO, :CODTABELA, :QTD, :VALOR, :TOTAL, :BAIXADO, :VALORUNIT, :DESCONTO, :TOTALUNIT, :CODITEMMOV, :TEMPCODPROD, :CODUNIDADE, :CODTABELASIMPLES, :VOLUMES, :ICMS, :IPI, :ESTOQUEATUAL, :COMISSAO, :CODALIQUOTA, :FABRICADO, :DATAFAB, :CFOP, :VALORAVISTA, :TRTIPO, :CST, :CEST, :BASECALCULOICMS, :BASEIPI, :VBCST, :PICMSST , :VICMSST, :OUTROS, :VDESCNOTA, :TOTALAVISTA DO BEGIN CORGRADE = NULL; TAM = NULL; NR = NULL; SELECT GP.COR, GP.TAM, GP.NR FROM GRADEPRODUTO GP WHERE GP.CODPRODUTO=:CODTABELA INTO :CORGRADE, :TAM, :NR; CODNCM=NULL; SELECT SP.CODIGO,SP.REFERENCIA,SP.DESCRICAO,SP.DESCTABELA,SP.CODGRUPO, SP.GRUPO, SP.CODFABRICANTE, SP.FABRICANTE, SP.CODALIQUOTA, SP.ALIQUOTA, SP.DESCRICAO, SP.DESCTABELA, SP.APRESENTACAO, SP.ACRESSUGESTAO, SP.CODNCM, SP.CST, SP.PRECOVENDA, SP.ORIGEM, SP.CODBARRAS FROM SPPESQPRODUTOSPORCODIGO(:CODTABELA) SP INTO :CODPRODUTO, :REFERENCIA, :PRODUTO, :DESCTABELA, :CODGRUPO, :GRUPO, :CODFABRICANTE, :FABRICANTE, :TCODALIQUOTA, :ALIQUOTA, :DESCPROD, :TEMPDESCTABELA, :APRESENTACAO, :ACRESSUGESTAO, :CODNCM, :TCST, :INFPRVENDA, :ORIGEM, :CODBARRAS; if (CODALIQUOTA iS NULL) then CODALIQUOTA=TCODALIQUOTA; if (CST iS NULL) then CST = TCST; TEMPDESC =''; SELECT IMD.DESCRICAOADICIONAL FROM IMDESCRICAOADICIONAL IMD WHERE IMD.CODITEMMOVIMENTO=:CODITEMMOV INTO :TEMPDESC; if (TEMPDESC IS NULL) then TEMPDESC =''; if (TEMPDESCTABELA IS NULL) then TEMPDESCTABELA =''; DESCRICAOADICIONAL = DESCPROD || ' ' || TEMPDESC || ' ' || TEMPDESCTABELA; DESCADICIONAL = TEMPDESC; COR = NULL; SELECT TS.DESCRICAO FROM TABELASSIMPLES TS WHERE TS.CODTABELASIMPLES=:CODTABELASIMPLES INTO :COR; SELECT UM.DESCRICAO, UM.SIGLA FROM UNIDADEMEDIDA UM WHERE UM.CODUNIDADE=:CODUNIDADE INTO :UNIDADE, :SIGLA; SELECT SUM(IO.QTD) FROM PRODUTOSOEMAD IO WHERE IO.CODITEMMOVIMENTO=:CODITEMMOV INTO :ENTREGAMAD; if (ENTREGAMAD IS NULL) then ENTREGAMAD=0; SELECT SUM(IPD.QTD) FROM PRODUTOSOEPD IPD WHERE IPD.CODITEMMOVIMENTO=:CODITEMMOV INTO :ENTREGAPD; if (ENTREGAPD IS NULL) then ENTREGAPD=0; QTDENTREGUE = ENTREGAMAD + ENTREGAPD; FALTAENTREGA = QTD - QTDENTREGUE; if (COMISSAO IS NULL) then VALORCOMISSAO =0; ELSE VALORCOMISSAO = (COMISSAO * TOTAL)/100; if (IPI >0 AND BASEIPI>0) then TOTALIPI = (BASEIPI * IPI)/100; ELSE TOTALIPI = 0; if (ICMS >0 and BASECALCULOICMS >0 ) then TOTALICMS = (ICMS * BASECALCULOICMS)/100; ELSE TOTALICMS = 0; SELECT DM.DESCONTO, DM.TIPODESCONTO, DM.VALORMOVIMENTO FROM DADOSMOVIMENTO DM WHERE DM.CODMOVIMENTO=:MOVIMENTO INTO :TDESCONTOMOV, :TIPODESCONTOMOV, :TOTALMOV; DESCONTOMOV=0; if (TIPODESCONTOMOV='%') then DESCONTOMOV=TDESCONTOMOV; if (TIPODESCONTOMOV='$') then BEGIN DESCONTOMOV=(100 * TDESCONTOMOV)/ TOTALMOV; END if (DESCONTOMOV>0) then TOTALCOMDESCONTO = TOTAL - ((TOTAL * DESCONTOMOV)/100); ELSE TOTALCOMDESCONTO = NULL; suspend; END end^ SET TERM ; ^ ALTER TABLE CONFPDV ADD CODEMPRESA INTEIRO_NULL; UPDATE confpdv SET CODEMPRESA=(SELECT FIRST 1 CODEMPRESA FROM EMPRESA); COMMIT; ALTER TABLE FILADEIMPRESSAO ADD NOMEPC VARCHAR_40; ALTER TABLE FILAIMPRESSAOEXTRATO ADD NOMEPC VARCHAR_40; ALTER TABLE FILAIMPRESSAORECIBO ADD NOMEPC VARCHAR_40; SET TERM ^ ; CREATE OR ALTER procedure SPFILAIMPRESSAO returns ( CODFILAIMPRESSAO integer, CODMOVIMENTO integer, DATA date, HORA time, STATUS char(1), IMPRIMIRDUPLICATA char(1), LOGIN varchar(10), CODPAGAMENTOS varchar(1000), TIPO varchar(15), USUARIOWINDOWS varchar(40), NOMEPC varchar(40)) as begin USUARIOWINDOWS = null; FOR SELECT F.CODFILAIMPRESSAO, F.CODMOVIMENTO, F.DATA, F.HORA, F.STATUS, F.IMPRIMIRDUPLICATA, U.LOGIN, F.USUARIOWINDOWS, F.NOMEPC, CAST(NULL AS VARCHAR(1000)), CAST('VENDA' AS VARCHAR(15)) FROM FILADEIMPRESSAO F JOIN MOVIMENTOSPRODUTOS M ON (M.CODMOVIMENTO = F.CODMOVIMENTO AND (M.TIPO='VE')) LEFT JOIN USUARIOS U ON (U.CODUSUARIO = M.CODUSUARIO) INTO CODFILAIMPRESSAO, CODMOVIMENTO, DATA, HORA, STATUS, IMPRIMIRDUPLICATA , LOGIN, USUARIOWINDOWS, NOMEPC, CODPAGAMENTOS, TIPO DO suspend; USUARIOWINDOWS = null; FOR SELECT F.CODFILAIMPRESSAO, F.CODMOVIMENTO, F.DATA, F.HORA, F.STATUS, F.IMPRIMIRDUPLICATA, U.LOGIN, F.USUARIOWINDOWS,F.NOMEPC, CAST(NULL AS VARCHAR(1000)), CAST('CONSIGNACAO' AS VARCHAR(15)) FROM FILADEIMPRESSAO F JOIN MOVIMENTOSPRODUTOS M ON (M.CODMOVIMENTO = F.CODMOVIMENTO AND (M.TIPO IN ('CE', 'CS'))) LEFT JOIN USUARIOS U ON (U.CODUSUARIO = M.CODUSUARIO) INTO CODFILAIMPRESSAO, CODMOVIMENTO, DATA, HORA, STATUS, IMPRIMIRDUPLICATA , LOGIN, USUARIOWINDOWS, NOMEPC, CODPAGAMENTOS, TIPO DO suspend; USUARIOWINDOWS = null; FOR SELECT FR.CODFILAIMPRESSAO, CAST(NULL AS INTEGER), FR.DATA, FR.HORA, FR.STATUS, CAST(NULL AS CHAR(1)), CAST(NULL AS VARCHAR(10)), FR.USUARIOWINDOWS, FR.NOMEPC, FR.CODPAGAMENTOS, CAST('RECIBO' AS VARCHAR(15)) FROM FILAIMPRESSAORECIBO FR INTO :CODFILAIMPRESSAO, :CODMOVIMENTO, :DATA, :HORA, :STATUS, :IMPRIMIRDUPLICATA , :LOGIN, :USUARIOWINDOWS, :NOMEPC, :CODPAGAMENTOS, :TIPO DO suspend; USUARIOWINDOWS = null; FOR SELECT FE.CODFILAIMPRESSAO, CAST(NULL AS INTEGER), FE.DATA, FE.HORA, FE.STATUS, CAST(NULL AS CHAR(1)), CAST(NULL AS VARCHAR(10)), FE.USUARIOWINDOWS, FE.NOMEPC, CAST(NULL AS VARCHAR(1000)), CAST('EXTRATO' AS VARCHAR(15)) FROM FILAIMPRESSAOEXTRATO FE INTO CODFILAIMPRESSAO, CODMOVIMENTO, DATA, HORA, STATUS, IMPRIMIRDUPLICATA , LOGIN, :USUARIOWINDOWS, :NOMEPC, :CODPAGAMENTOS, :TIPO DO suspend; end^ SET TERM ; ^ SET TERM ^ ; CREATE OR ALTER procedure SPFILAIMPRESSAO returns ( CODFILAIMPRESSAO integer, CODMOVIMENTO integer, DATA date, HORA time, STATUS char(1), IMPRIMIRDUPLICATA char(1), LOGIN varchar(10), CODPAGAMENTOS varchar(1000), TIPO varchar(15), USUARIOWINDOWS varchar(40), NOMEPC varchar(40)) as begin USUARIOWINDOWS = null; FOR SELECT F.CODFILAIMPRESSAO, F.CODMOVIMENTO, F.DATA, F.HORA, F.STATUS, F.IMPRIMIRDUPLICATA, U.LOGIN, F.USUARIOWINDOWS, F.NOMEPC, CAST(NULL AS VARCHAR(1000)), CAST('VENDA' AS VARCHAR(15)) FROM FILADEIMPRESSAO F JOIN MOVIMENTOSPRODUTOS M ON (M.CODMOVIMENTO = F.CODMOVIMENTO AND (M.TIPO='VE')) LEFT JOIN USUARIOS U ON (U.CODUSUARIO = M.CODUSUARIO) INTO CODFILAIMPRESSAO, CODMOVIMENTO, DATA, HORA, STATUS, IMPRIMIRDUPLICATA , LOGIN, USUARIOWINDOWS, NOMEPC, CODPAGAMENTOS, TIPO DO suspend; USUARIOWINDOWS = null; FOR SELECT F.CODFILAIMPRESSAO, F.CODMOVIMENTO, F.DATA, F.HORA, F.STATUS, F.IMPRIMIRDUPLICATA, U.LOGIN, F.USUARIOWINDOWS,F.NOMEPC, CAST(NULL AS VARCHAR(1000)), CAST('CONSIGNACAO' AS VARCHAR(15)) FROM FILADEIMPRESSAO F JOIN MOVIMENTOSPRODUTOS M ON (M.CODMOVIMENTO = F.CODMOVIMENTO AND (M.TIPO IN ('CE', 'CS'))) LEFT JOIN USUARIOS U ON (U.CODUSUARIO = M.CODUSUARIO) INTO CODFILAIMPRESSAO, CODMOVIMENTO, DATA, HORA, STATUS, IMPRIMIRDUPLICATA , LOGIN, USUARIOWINDOWS, NOMEPC, CODPAGAMENTOS, TIPO DO suspend; USUARIOWINDOWS = null; FOR SELECT FR.CODFILAIMPRESSAO, CAST(NULL AS INTEGER), FR.DATA, FR.HORA, FR.STATUS, CAST(NULL AS CHAR(1)), CAST(NULL AS VARCHAR(10)), FR.USUARIOWINDOWS, FR.NOMEPC, FR.CODPAGAMENTOS, CAST('RECIBO' AS VARCHAR(15)) FROM FILAIMPRESSAORECIBO FR INTO :CODFILAIMPRESSAO, :CODMOVIMENTO, :DATA, :HORA, :STATUS, :IMPRIMIRDUPLICATA , :LOGIN, :USUARIOWINDOWS, :NOMEPC, :CODPAGAMENTOS, :TIPO DO suspend; USUARIOWINDOWS = null; FOR SELECT FE.CODFILAIMPRESSAO, CAST(NULL AS INTEGER), FE.DATA, FE.HORA, FE.STATUS, CAST(NULL AS CHAR(1)), CAST(NULL AS VARCHAR(10)), FE.USUARIOWINDOWS, FE.NOMEPC, CAST(NULL AS VARCHAR(1000)), CAST('EXTRATO' AS VARCHAR(15)) FROM FILAIMPRESSAOEXTRATO FE INTO CODFILAIMPRESSAO, CODMOVIMENTO, DATA, HORA, STATUS, IMPRIMIRDUPLICATA , LOGIN, :USUARIOWINDOWS, :NOMEPC, :CODPAGAMENTOS, :TIPO DO suspend; end^ SET TERM ; ^ ALTER TABLE CONFPDV ADD PCFILAIMPRESSAO VARCHAR_40; SET TERM ^ ; create or alter procedure SPVALORESPRODUTOS( CODPRODUTO integer) returns ( DESCRICAO varchar(30), VALOR float, UNIDADE varchar(30), CODUNIDADE integer) as begin FOR select PV.DESCRICAO, PV.VALOR, U.DESCRICAO, U.CODUNIDADE from PRODUTOSVALORES PV LEFT JOIN UNIDADEMEDIDA U ON U.SIGLA=PV.DESCRICAO WHERE CODPRODUTO=:CODPRODUTO INTO :DESCRICAO, :VALOR, :UNIDADE, :CODUNIDADE DO BEGIN suspend; END SELECT U.SIGLA, P.PRECOVENDA, U.DESCRICAO, P.CODUNIDADE FROM PRODUTOS P JOIN UNIDADEMEDIDA U ON U.CODUNIDADE=P.CODUNIDADE WHERE P.CODPRODUTO=:CODPRODUTO INTO :DESCRICAO, :VALOR, :UNIDADE, :CODUNIDADE ; SUSPEND; end^ SET TERM ; ^ SET TERM ^ ; CREATE OR ALTER procedure SPPESQPRODUTOSPORCODIGO ( CODPROD integer) returns ( CODIGO integer, CODPRODUTO integer, CODUNIDADE integer, DESCRICAO varchar(50), DESCTABELA varchar(30), PRECOVENDA float, CODFABRICANTE integer, FABRICANTE varchar(40), UNIDADE varchar(30), STATUS char(1), CODBARRAS varchar(30), PRECOCOMPRA float, PRECOCUSTO float, CODMOEDA integer, REFERENCIA varchar(20), MOEDA varchar(30), CODGRUPO integer, GRUPO varchar(40), LIXEIRA char(1), CODALIQUOTA varchar(10), ALIQUOTA float, APRESENTACAO varchar(40), ACRESSUGESTAO float, CODNCM varchar(30), CST varchar(10), ORIGEM varchar(4), AVISTA float) as declare variable TEMPCODPRODUTO integer; declare variable TEMPESTOQUE float; declare variable TIPO varchar(3); declare variable TPRECOCUSTO float; declare variable TPRECOVENDA float; declare variable TCODALIQUOTA varchar(10); begin FOR SELECT P.CODPRODUTO, P.CODPRODUTO, P.CODUNIDADE, P.DESCRICAO, CAST(NULL AS VARCHAR(30)), P.PRECOVENDA, P.CODFABRICANTE, F.DESCRICAO, U.DESCRICAO, P.STATUS, P.CODBARRAS, P.PRECOCOMPRA, P.PRECOCUSTO, P.CODMOEDA, P.REFERENCIA, M.SIMBOLO, P.CODGRUPO, G.DESCRICAO, P.LIXEIRA, P.CODALIQUOTA, T.ALIQUOTA, P.TIPO, P.APRESENTACAO, P.ACRESSUGESTAO, P.CODNCM, P.CST, P.ORIGEM, P.PRECOAVISTA FROM PRODUTOS P LEFT JOIN FABRICANTE F ON (F.CODFABRICANTE = P.CODFABRICANTE) LEFT JOIN UNIDADEMEDIDA U ON (U.CODUNIDADE = P.CODUNIDADE) JOIN MOEDAS M ON (M.CODMOEDA = P.CODMOEDA) LEFT JOIN GRUPO G ON (G.CODGRUPO = P.CODGRUPO) LEFT JOIN TRIBUTACAO T ON (T.CODALIQUOTA = P.CODALIQUOTA) WHERE P.CODPRODUTO =:CODPROD INTO :CODIGO, :TEMPCODPRODUTO, :CODUNIDADE, :DESCRICAO, :DESCTABELA, :TPRECOVENDA, :CODFABRICANTE,:FABRICANTE, :UNIDADE, :STATUS, :CODBARRAS, :PRECOCOMPRA, :TPRECOCUSTO, :CODMOEDA, :REFERENCIA, :MOEDA, :CODGRUPO , :GRUPO , :LIXEIRA, :TCODALIQUOTA, :ALIQUOTA, :TIPO, :APRESENTACAO, :ACRESSUGESTAO, :CODNCM, :CST, :ORIGEM, :AVISTA DO BEGIN CODPRODUTO = TEMPCODPRODUTO; IF (TIPO IN ('ACA', 'SMA')) then BEGIN SELECT SPT.PRECOCUSTO, SPT.PRECOVENDA FROM SPPRCUSTOVENDAINDUSTRIAS(:CODPROD, :TIPO) SPT INTO :TPRECOCUSTO, :TPRECOVENDA; END PRECOVENDA = TPRECOVENDA; PRECOCUSTO = TPRECOCUSTO; CODALIQUOTA = TCODALIQUOTA; suspend; END FOR SELECT P.CODPRODUTO, T.CODTABELA, T.CODUNIDADE, P.DESCRICAO, T.DESCTABELA, T.PRECOVENDA, P.CODFABRICANTE, F.DESCRICAO, U.DESCRICAO, P.STATUS, T.CODBARRAS, T.PRECOCOMPRA, T.PRECOCUSTO, P.CODMOEDA, T.REFERENCIA, M.SIMBOLO, P.CODGRUPO, G.DESCRICAO, P.LIXEIRA FROM PRODUTOS P JOIN TABELADEPRECO T ON (T.CODPRODUTO = P.CODPRODUTO) JOIN UNIDADEMEDIDA U ON (U.CODUNIDADE = T.CODUNIDADE) JOIN MOEDAS M ON (M.CODMOEDA = P.CODMOEDA) LEFT JOIN GRUPO G ON (G.CODGRUPO = P.CODGRUPO) LEFT JOIN FABRICANTE F ON (F.CODFABRICANTE = P.CODFABRICANTE) WHERE T.CODTABELA =:CODPROD INTO :CODIGO, :TEMPCODPRODUTO, :CODUNIDADE, :DESCRICAO, :DESCTABELA, :PRECOVENDA, :CODFABRICANTE,:FABRICANTE, :UNIDADE, :STATUS, :CODBARRAS, :PRECOCOMPRA, :PRECOCUSTO, :CODMOEDA, :REFERENCIA, :MOEDA, :CODGRUPO , :GRUPO , :LIXEIRA DO BEGIN CODPRODUTO = TEMPCODPRODUTO; CODALIQUOTA = TCODALIQUOTA; suspend; END end^ SET TERM ; ^ ALTER TABLE CONFFILAIMPRESSAO ADD NOMEPC VARCHAR_40; CREATE TABLE PRODUTOSCODBARRAS ( IDCODBARRA INTEGER NOT NULL); ALTER TABLE PRODUTOSCODBARRAS ADD CONSTRAINT PK_PRODUTOSCODBARRAS PRIMARY KEY (IDCODBARRA); ALTER TABLE PRODUTOSCODBARRAS ADD CODPRODUTO INTEIRO_NULL; ALTER TABLE PRODUTOSCODBARRAS ADD CODBARRAS VARCHAR_30; CREATE SEQUENCE GEN_PRODUTOSCODBARRAS_ID; SET TERM ^ ; CREATE TRIGGER PRODUTOSCODBARRAS_BI FOR PRODUTOSCODBARRAS ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.IDCODBARRA IS NULL or NEW.IDCODBARRA=0 ) THEN NEW.IDCODBARRA = GEN_ID(GEN_PRODUTOSCODBARRAS_ID,1); END^ SET TERM ; ^ ALTER TABLE PRODUTOSCODBARRAS ADD EQUIVALENCIA NUMERICO; ALTER TABLE PRODUTOSVALORES ADD EQUIVALENCIA NUMERICO; ALTER TABLE PRODUTOSCODBARRAS ADD VALOR VALOR_10_2; ALTER TABLE PRODUTOSVALORES ADD TIPO CHAR1; ALTER TABLE ITENSMOVIMENTOPROD ADD EQ NUMERIC_10_5; COMMENT ON COLUMN ITENSMOVIMENTOPROD.EQ IS 'MULTIPLICAR QTD * EQ Q VIRA DAS TABLEAS CODBARRAS E VALORESPRODUTOS CASO NULO MULTIPLICA POR 1'; ALTER TABLE ITENSMOVIMENTOPROD ADD DESCEQ VARCHAR_30; COMMENT ON COLUMN ITENSMOVIMENTOPROD.DESCEQ IS 'DESCRICAO DO CAMPO EQUIALENCIA VEM DAS TABELEAS VALORES PRODUTO E CODBARRASPRODUTOS NESSE CASO ABS MESMA SIGLA DA UN'; SET TERM ^ ; CREATE OR ALTER procedure SPVALORESPRODUTOS ( CODPRODUTO integer) returns ( DESCRICAO varchar(30), VALOR float, UNIDADE varchar(30), CODUNIDADE integer, EQUIVALENCIA float, TIPO char(1)) as begin FOR select PV.DESCRICAO, PV.VALOR, PV.EQUIVALENCIA, PV.TIPO, U.DESCRICAO, U.CODUNIDADE from PRODUTOSVALORES PV LEFT JOIN UNIDADEMEDIDA U ON U.SIGLA=PV.DESCRICAO WHERE CODPRODUTO=:CODPRODUTO INTO :DESCRICAO, :VALOR, :EQUIVALENCIA, :TIPO, :UNIDADE, :CODUNIDADE DO BEGIN suspend; END SELECT U.SIGLA, P.PRECOVENDA, 1, 'V', U.DESCRICAO, P.CODUNIDADE FROM PRODUTOS P JOIN UNIDADEMEDIDA U ON U.CODUNIDADE=P.CODUNIDADE WHERE P.CODPRODUTO=:CODPRODUTO INTO :DESCRICAO, :VALOR, :EQUIVALENCIA, :TIPO, :UNIDADE, :CODUNIDADE ; SUSPEND; end^ SET TERM ; ^ SET TERM ^ ; CREATE OR ALTER procedure SPVALORESPRODUTOS ( CODPRODUTO integer) returns ( DESCRICAO varchar(30), VALOR float, UNIDADE varchar(30), CODUNIDADE integer, EQUIVALENCIA float, TIPO char(1), SIGLA varchar(5)) as begin FOR select PV.DESCRICAO, PV.VALOR, PV.EQUIVALENCIA, PV.TIPO, U.DESCRICAO, U.CODUNIDADE, U.SIGLA from PRODUTOSVALORES PV LEFT JOIN UNIDADEMEDIDA U ON U.SIGLA=PV.DESCRICAO WHERE CODPRODUTO=:CODPRODUTO INTO :DESCRICAO, :VALOR, :EQUIVALENCIA, :TIPO, :UNIDADE, :CODUNIDADE, :SIGLA DO BEGIN suspend; END SELECT U.SIGLA, P.PRECOVENDA, 1, 'V', U.DESCRICAO, P.CODUNIDADE, U.SIGLA FROM PRODUTOS P JOIN UNIDADEMEDIDA U ON U.CODUNIDADE=P.CODUNIDADE WHERE P.CODPRODUTO=:CODPRODUTO INTO :DESCRICAO, :VALOR, :EQUIVALENCIA, :TIPO, :UNIDADE, :CODUNIDADE, :SIGLA ; SUSPEND; end^ SET TERM ; ^ SET TERM ^ ; CREATE OR ALTER procedure SPATUALIZAESTOQUE ( TIPO char(1), CODMOVIMENTO integer, CODITEMMOVIMENTO integer) as declare variable ESTOQUEATUAL float; declare variable QTD float; declare variable CONVERTIDO float; declare variable TQTD float; declare variable FPCODUNIDADE integer; declare variable FPCODFAMILIA integer; declare variable FPEQUIVALENCIA float; declare variable FPEQPADRAO float; declare variable EQUMPROD float; declare variable EQUMLANCADA float; declare variable BAIXADO char(1); declare variable CODPRODUTO integer; declare variable TCODITEMMOVIMENTO integer; declare variable CODUNIDADEITEM integer; declare variable QTDITEM float; declare variable CODFILIAL integer; declare variable CODFUNCIONARIO integer; declare variable DATAMOV date; declare variable FULCODUNIDADE integer; declare variable FULCODFAMILIA integer; declare variable FULEQUIVALENCIA float; declare variable EQFPEQUIVALENCIA integer; declare variable CODMOVESTOQUE integer; declare variable CODADDITEMMOVMAD integer; declare variable CODPRODUTOADD integer; declare variable QTDADD float; declare variable CODUNIDADEADD integer; declare variable BAIXADOADD char(1); declare variable CODESTOQUE integer; declare variable EXISTE char(1); declare variable AJUSTE float; declare variable CONVERSAO float; declare variable SALVAR float; declare variable ESTOQUEFILIAL float; declare variable EQ float; begin SELECT M.CODFILIAL, M.CODFUNCIONARIO, M.DATA FROM MOVIMENTOSPRODUTOS M WHERE M.CODMOVIMENTO=:CODMOVIMENTO INTO :CODFILIAL, :CODFUNCIONARIO, :DATAMOV; FOR SELECT IM.CODITEMMOVIMENTO, IM.BAIXADO, IM.CODPRODUTO, IM.CODUNIDADE, IM.QTD, IM.EQ FROM ITENSMOVIMENTOPROD IM WHERE IM.CODITEMMOVIMENTO=:CODITEMMOVIMENTO INTO :TCODITEMMOVIMENTO, :BAIXADO, :CODPRODUTO, :CODUNIDADEITEM, :QTDITEM, :EQ DO BEGIN IF (BAIXADO = 'N') then BEGIN SELECT P.CODUNIDADE, UM.CODFAMILIA, UM.EQUIVALENCIA, U.EQUIVALENCIA FROM PRODUTOS P LEFT JOIN UNIDADEMEDIDA UM ON (UM.CODUNIDADE = P.CODUNIDADE) LEFT JOIN FAMILIAUNIDADE F ON (F.CODFAMILIA = UM.CODFAMILIA) LEFT JOIN UNIDADEMEDIDA U ON (U.CODUNIDADE = F.CODUNIDADE) WHERE P.CODPRODUTO=:CODPRODUTO INTO :FPCODUNIDADE, :FPCODFAMILIA, :EQUMPROD, :FPEQUIVALENCIA; IF (CODUNIDADEITEM = FPCODUNIDADE) then BEGIN if (EQ IS NULL) then EQ=1; QTD = QTDITEM * EQ; END ELSE BEGIN SELECT UM.CODUNIDADE, UM.CODFAMILIA, UM.EQUIVALENCIA FROM UNIDADEMEDIDA UM WHERE UM.CODUNIDADE=:CODUNIDADEITEM INTO :FULCODUNIDADE, :FULCODFAMILIA, :EQUMLANCADA; if (FPCODFAMILIA = FULCODFAMILIA) then BEGIN Qtd = ((QTDITEM * EQUMLANCADA)/ EQUMPROD); END ELSE Begin /*Unidadee familia diferentes*/ SELECT FP.EQUIVALENCIA FROM FAMILIAUMPROD FP JOIN UNIDADEMEDIDA UM ON (UM.CODFAMILIA = FP.CODFAMILIA) WHERE FP.CODPRODUTO =:CODPRODUTO AND UM.CODUNIDADE=:CODUNIDADEITEM INTO :EQFPEQUIVALENCIA; TQTD = (QTDITEM * EQUMLANCADA)/ EQUMPROD; CONVERTIDO = (TQTD * FPEQUIVALENCIA)/EQFPEQUIVALENCIA; QTD = CONVERTIDO; End END CODMOVESTOQUE = gen_id(GEN_MOVESTOQUE,1); insert into MOVESTOQUE (CODMOVESTOQUE, CODFUNCIONARIO, CODFILIAL, CODPRODUTO, CODUNIDADE, DATA, QTD, TIPO, CODMOVIMENTO, DATALANCAMENTO, HORALANCAMENTO, CODITEMMOVIMENTO) values (:CODMOVESTOQUE, :CODFUNCIONARIO, :CODFILIAL, :CODPRODUTO, :CODUNIDADEITEM, :DATAMOV, :QTD, :TIPO, :CODMOVIMENTO, CURRENT_DATE, CURRENT_TIME, :TCODITEMMOVIMENTO); SELECT ESTOQUE FROM SPMOVESTOQUE(:CODPRODUTO) INTO :ESTOQUEATUAL; /*EXECUTE PROCEDURE SPESTOQUEPORFILIAL(:CODPRODUTO, :TIPO,:QTD,:CODFILIAL);*/ update ITENSMOVIMENTOPROD I set I.BAIXADO = 'S', I.ESTOQUEATUAL =:ESTOQUEATUAL where I.CODITEMMOVIMENTO=:TCODITEMMOVIMENTO; SUSPEND; SELECT E.CODESTOQUE, E.ESTOQUE FROM ESTOQUE E WHERE E.CODFILIAL =:CODFILIAL AND E.CODPRODUTO =:CODPRODUTO INTO :CODESTOQUE, :ESTOQUEATUAL; if (ESTOQUEATUAL IS NULL) then ESTOQUEATUAL = 0; IF (CODESTOQUE IS NULL) then BEGIN EXISTE = 'N'; END ELSE EXISTE = 'S'; IF (EXISTE='S') THEN BEGIN IF (TIPO='-') THEN BEGIN SALVAR = ESTOQUEATUAL - AJUSTE; update ESTOQUE E set E.ESTOQUE = :SALVAR where E.CODESTOQUE = :CODESTOQUE; END IF (TIPO='+') THEN BEGIN SALVAR = ESTOQUEATUAL + AJUSTE; update ESTOQUE E set E.ESTOQUE = :SALVAR where E.CODESTOQUE = :CODESTOQUE; END END ELSE BEGIN IF (TIPO='-') THEN BEGIN SALVAR = (AJUSTE * -1); insert into ESTOQUE (CODESTOQUE,CODFILIAL, CODPRODUTO, ESTOQUE) values (:CODESTOQUE, :CODFILIAL, :CODPRODUTO, :SALVAR); END IF (TIPO='+') THEN BEGIN SALVAR = AJUSTE; insert into ESTOQUE (CODESTOQUE, CODFILIAL, CODPRODUTO, ESTOQUE) values (:CODESTOQUE, :CODFILIAL, :CODPRODUTO, :SALVAR); END END SUSPEND; END END end^ SET TERM ; ^ SET TERM ^ ; CREATE OR ALTER procedure SPATUALIZAESTOQUE ( TIPO char(1), CODMOVIMENTO integer, CODITEMMOVIMENTO integer) as declare variable ESTOQUEATUAL float; declare variable QTD float; declare variable CONVERTIDO float; declare variable TQTD float; declare variable FPCODUNIDADE integer; declare variable FPCODFAMILIA integer; declare variable FPEQUIVALENCIA float; declare variable FPEQPADRAO float; declare variable EQUMPROD float; declare variable EQUMLANCADA float; declare variable BAIXADO char(1); declare variable CODPRODUTO integer; declare variable TCODITEMMOVIMENTO integer; declare variable CODUNIDADEITEM integer; declare variable QTDITEM float; declare variable CODFILIAL integer; declare variable CODFUNCIONARIO integer; declare variable DATAMOV date; declare variable FULCODUNIDADE integer; declare variable FULCODFAMILIA integer; declare variable FULEQUIVALENCIA float; declare variable EQFPEQUIVALENCIA integer; declare variable CODMOVESTOQUE integer; declare variable CODADDITEMMOVMAD integer; declare variable CODPRODUTOADD integer; declare variable QTDADD float; declare variable CODUNIDADEADD integer; declare variable BAIXADOADD char(1); declare variable CODESTOQUE integer; declare variable EXISTE char(1); declare variable AJUSTE float; declare variable CONVERSAO float; declare variable SALVAR float; declare variable ESTOQUEFILIAL float; declare variable EQ float; begin EQ =1; SELECT M.CODFILIAL, M.CODFUNCIONARIO, M.DATA FROM MOVIMENTOSPRODUTOS M WHERE M.CODMOVIMENTO=:CODMOVIMENTO INTO :CODFILIAL, :CODFUNCIONARIO, :DATAMOV; FOR SELECT IM.CODITEMMOVIMENTO, IM.BAIXADO, IM.CODPRODUTO, IM.CODUNIDADE, IM.QTD, IM.EQ FROM ITENSMOVIMENTOPROD IM WHERE IM.CODITEMMOVIMENTO=:CODITEMMOVIMENTO INTO :TCODITEMMOVIMENTO, :BAIXADO, :CODPRODUTO, :CODUNIDADEITEM, :QTDITEM, :EQ DO BEGIN IF (BAIXADO = 'N') then BEGIN SELECT P.CODUNIDADE, UM.CODFAMILIA, UM.EQUIVALENCIA, U.EQUIVALENCIA FROM PRODUTOS P LEFT JOIN UNIDADEMEDIDA UM ON (UM.CODUNIDADE = P.CODUNIDADE) LEFT JOIN FAMILIAUNIDADE F ON (F.CODFAMILIA = UM.CODFAMILIA) LEFT JOIN UNIDADEMEDIDA U ON (U.CODUNIDADE = F.CODUNIDADE) WHERE P.CODPRODUTO=:CODPRODUTO INTO :FPCODUNIDADE, :FPCODFAMILIA, :EQUMPROD, :FPEQUIVALENCIA; IF (CODUNIDADEITEM = FPCODUNIDADE) then BEGIN if (EQ IS NULL) then EQ=1; QTD = QTDITEM * EQ; END ELSE BEGIN SELECT UM.CODUNIDADE, UM.CODFAMILIA, UM.EQUIVALENCIA FROM UNIDADEMEDIDA UM WHERE UM.CODUNIDADE=:CODUNIDADEITEM INTO :FULCODUNIDADE, :FULCODFAMILIA, :EQUMLANCADA; if (FPCODFAMILIA = FULCODFAMILIA) then BEGIN Qtd = ((QTDITEM * EQUMLANCADA)/ EQUMPROD); END ELSE Begin /*Unidadee familia diferentes*/ SELECT FP.EQUIVALENCIA FROM FAMILIAUMPROD FP JOIN UNIDADEMEDIDA UM ON (UM.CODFAMILIA = FP.CODFAMILIA) WHERE FP.CODPRODUTO =:CODPRODUTO AND UM.CODUNIDADE=:CODUNIDADEITEM INTO :EQFPEQUIVALENCIA; TQTD = (QTDITEM * EQUMLANCADA)/ EQUMPROD; CONVERTIDO = (TQTD * FPEQUIVALENCIA)/EQFPEQUIVALENCIA; QTD = CONVERTIDO; End END CODMOVESTOQUE = gen_id(GEN_MOVESTOQUE,1); insert into MOVESTOQUE (CODMOVESTOQUE, CODFUNCIONARIO, CODFILIAL, CODPRODUTO, CODUNIDADE, DATA, QTD, TIPO, CODMOVIMENTO, DATALANCAMENTO, HORALANCAMENTO, CODITEMMOVIMENTO) values (:CODMOVESTOQUE, :CODFUNCIONARIO, :CODFILIAL, :CODPRODUTO, :CODUNIDADEITEM, :DATAMOV, :QTD, :TIPO, :CODMOVIMENTO, CURRENT_DATE, CURRENT_TIME, :TCODITEMMOVIMENTO); SELECT ESTOQUE FROM SPMOVESTOQUE(:CODPRODUTO) INTO :ESTOQUEATUAL; /*EXECUTE PROCEDURE SPESTOQUEPORFILIAL(:CODPRODUTO, :TIPO,:QTD,:CODFILIAL);*/ update ITENSMOVIMENTOPROD I set I.BAIXADO = 'S', I.ESTOQUEATUAL =:ESTOQUEATUAL where I.CODITEMMOVIMENTO=:TCODITEMMOVIMENTO; SUSPEND; SELECT E.CODESTOQUE, E.ESTOQUE FROM ESTOQUE E WHERE E.CODFILIAL =:CODFILIAL AND E.CODPRODUTO =:CODPRODUTO INTO :CODESTOQUE, :ESTOQUEATUAL; if (ESTOQUEATUAL IS NULL) then ESTOQUEATUAL = 0; IF (CODESTOQUE IS NULL) then BEGIN EXISTE = 'N'; END ELSE EXISTE = 'S'; IF (EXISTE='S') THEN BEGIN IF (TIPO='-') THEN BEGIN SALVAR = ESTOQUEATUAL - AJUSTE; update ESTOQUE E set E.ESTOQUE = :SALVAR where E.CODESTOQUE = :CODESTOQUE; END IF (TIPO='+') THEN BEGIN SALVAR = ESTOQUEATUAL + AJUSTE; update ESTOQUE E set E.ESTOQUE = :SALVAR where E.CODESTOQUE = :CODESTOQUE; END END ELSE BEGIN IF (TIPO='-') THEN BEGIN SALVAR = (AJUSTE * -1); insert into ESTOQUE (CODESTOQUE,CODFILIAL, CODPRODUTO, ESTOQUE) values (:CODESTOQUE, :CODFILIAL, :CODPRODUTO, :SALVAR); END IF (TIPO='+') THEN BEGIN SALVAR = AJUSTE; insert into ESTOQUE (CODESTOQUE, CODFILIAL, CODPRODUTO, ESTOQUE) values (:CODESTOQUE, :CODFILIAL, :CODPRODUTO, :SALVAR); END END SUSPEND; END END end^ SET TERM ; ^ SET TERM ^ ; CREATE OR ALTER procedure SPVALORESPRODUTOS ( CODPRODUTO integer) returns ( DESCRICAO varchar(30), VALOR float, UNIDADE varchar(30), CODUNIDADE integer, EQUIVALENCIA float, TIPO char(1), SIGLA varchar(5)) as begin FOR select PV.DESCRICAO, PV.VALOR, PV.EQUIVALENCIA, PV.TIPO, COALESCE(U.DESCRICAO, PV.DESCRICAO), U.CODUNIDADE, U.SIGLA from PRODUTOSVALORES PV LEFT JOIN UNIDADEMEDIDA U ON U.SIGLA=PV.DESCRICAO WHERE CODPRODUTO=:CODPRODUTO INTO :DESCRICAO, :VALOR, :EQUIVALENCIA, :TIPO, :UNIDADE, :CODUNIDADE, :SIGLA DO BEGIN suspend; END SELECT U.SIGLA, P.PRECOVENDA, 1, 'V', U.DESCRICAO, P.CODUNIDADE, U.SIGLA FROM PRODUTOS P JOIN UNIDADEMEDIDA U ON U.CODUNIDADE=P.CODUNIDADE WHERE P.CODPRODUTO=:CODPRODUTO INTO :DESCRICAO, :VALOR, :EQUIVALENCIA, :TIPO, :UNIDADE, :CODUNIDADE, :SIGLA ; SUSPEND; end^ SET TERM ; ^ ALTER TABLE PRODUTOSCODBARRAS ADD DESCRICAO VARCHAR_30; SET TERM ^ ; CREATE OR ALTER procedure SPPESQMOVENTRAPORCODIGO ( CODIGO integer) returns ( CODMOVIMENTO integer, DATA date, TIPO varchar(2), SITUACAO char(2), CODIGOCONTABIL varchar(20), CODFUNCIONARIO integer, CODCFOP integer, NRDOCUMENTO varchar(20), PLANODECONTAS varchar(40), NATUREZA varchar(10), CFOP varchar(40), TIPOPESSOA varchar(10), CODPESSOA integer, NOMEPESSOA varchar(70), USUARIO varchar(10), CODFILIAL integer, CODACUMULADOR integer, CODESPECIE integer) as begin FOR SELECT M.CODMOVIMENTO, M.DATA, M.TIPO, M.SITUACAO, M.CODIGOCONTABIL, M.CODFUNCIONARIO, DM.CODCFOP, DM.NRDOCUMENTO, PC.DESCRICAO AS PLANODECONTAS, CF.NATUREZA, CF.DESCRICAO AS CFOP, CAST('Cliente' as VARCHAR(15)) AS TIPOPESSOA,CL.CODCLIENTE AS CODPESSOA, CAST(CL.NOME AS VARCHAR(70)) AS NOMEPESSOA, U.LOGIN, M.CODFILIAL, M.CODACUMULADOR, M.CODESPECIE FROM MOVIMENTOSPRODUTOS M LEFT JOIN DOCUMENTOMOV DM ON (DM.CODMOVIMENTO = M.CODMOVIMENTO) LEFT JOIN CFOP CF ON (CF.CODCFOP = DM.CODCFOP) LEFT JOIN PLANOSDECONTAS PC ON (PC.CODIGOCONTABIL = M.CODIGOCONTABIL) LEFT JOIN CLIENTEMOVIMENTO CM ON (CM.CODMOVIMENTO = M.CODMOVIMENTO) LEFT JOIN CLIENTES CL ON (CL.CODCLIENTE = CM.CODCLIENTE) LEFT JOIN USUARIOS U ON (U.CODUSUARIO = M.CODUSUARIO) WHERE M.TIPO IN ('VE','PV', 'OR','DE','CS') AND M.CODMOVIMENTO=:CODIGO INTO :CODMOVIMENTO, :DATA, :TIPO, :SITUACAO, :CODIGOCONTABIL, :CODFUNCIONARIO, :CODCFOP, :NRDOCUMENTO, :PLANODECONTAS, :NATUREZA, :CFOP, :TIPOPESSOA, :CODPESSOA, :NOMEPESSOA, :USUARIO, :CODFILIAL, :CODACUMULADOR, :CODESPECIE DO suspend; end^ SET TERM ; ^ SET TERM ^ ; CREATE OR ALTER procedure SPCX returns ( CODCAIXAMOV integer, CODCXPARCELA integer, CODFILIAL integer, DATA date, HORA time, DESCRICAO varchar(70), VALOR float, TIPOMOV varchar(50), FORMAPGTO varchar(15), FINANCEIRO char(1), CREDITO float, DEBITO float, SALDO float, STATUS char(1), CODEMPRESA integer, CODCAIXA integer) as begin FOR SELECT CM.CODCAIXAMOV, CODFILIAL, DATA, HORA, DESCRICAO, VALOR, TIPOMOV, FORMAPGTO, STATUS, CM.CODEMPRESA, CM.CODCAIXA FROM CAIXAMOV CM INTO :CODCAIXAMOV, :CODFILIAL,:DATA, :HORA, :DESCRICAO, :VALOR, :TIPOMOV, :FORMAPGTO, :STATUS, :CODEMPRESA, :CODCAIXA DO BEGIN CODCXPARCELA =NULL; FINANCEIRO='N'; SELECT CF.FINANCEIRO FROM CONFCAIXA CF WHERE CF.TIPOMOV=:TIPOMOV AND CF.TIPOPGTO=:FORMAPGTO AND CF.CODEMPRESA=:CODEMPRESA INTO :FINANCEIRO; if (FINANCEIRO='+') then BEGIN CREDITO = VALOR; DEBITO = 0; END if (FINANCEIRO='-') then BEGIN DEBITO = :VALOR; CREDITO = 0; END if (FINANCEIRO='N') then BEGIN CREDITO = 0; DEBITO = 0; END SALDO = CREDITO - DEBITO; suspend; END FOR SELECT CP.CODCXPARCELA, CP.CODFILIAL, CP.DATA, CP.HORA, CP.DESCRICAO, CP.VALOR, CP.TIPOMOV, CP.FORMAPGTO, CP.STATUS, CP.CODEMPRESA, CP.CODCAIXA FROM CAIXAPARCELAS CP INTO :CODCXPARCELA, :CODFILIAL,:DATA, :HORA, :DESCRICAO, :VALOR, :TIPOMOV, :FORMAPGTO, :STATUS, :CODEMPRESA, :CODCAIXA DO BEGIN CODCAIXAMOV = NULL; FINANCEIRO = 'N'; SELECT CF.FINANCEIRO FROM CONFCAIXA CF WHERE CF.TIPOMOV=:TIPOMOV AND CF.TIPOPGTO=:FORMAPGTO AND CF.CODEMPRESA=:CODEMPRESA INTO :FINANCEIRO; if (FINANCEIRO='+') then BEGIN CREDITO = :VALOR; DEBITO = 0; END if (FINANCEIRO='-') then BEGIN DEBITO = :VALOR; CREDITO = 0; END if (FINANCEIRO='N') then BEGIN CREDITO = 0; DEBITO = 0; END SALDO = CREDITO - DEBITO; suspend; END end^ SET TERM ; ^ SET TERM ^ ; create or alter procedure SPCODBARRAS returns ( CODPRODUTO integer, CODBARRAS varchar(30)) as begin FOR SELECT CODPRODUTO , CODBARRAS FROM PRODUTOS P INTO :CODPRODUTO, :CODBARRAS DO suspend; FOR SELECT CODPRODUTO , CODBARRAS FROM PRODUTOSCODBARRAS P INTO :CODPRODUTO, :CODBARRAS DO suspend; end^ SET TERM ; ^ SET TERM ^ ; CREATE OR ALTER procedure SPCODBARRAS ( CODEMPRESA integer) returns ( CODPRODUTO integer, CODBARRAS varchar(30)) as begin FOR SELECT CODPRODUTO , CODBARRAS FROM PRODUTOS P WHERE P.CODEMPRESA=:CODEMPRESA INTO :CODPRODUTO, :CODBARRAS DO suspend; FOR SELECT CB.CODPRODUTO , CB.CODBARRAS FROM PRODUTOSCODBARRAS CB JOIN PRODUTOS P ON CB.CODPRODUTO=P.CODPRODUTO WHERE P.CODEMPRESA=:CODEMPRESA INTO :CODPRODUTO, :CODBARRAS DO suspend; end^ SET TERM ; ^ SET TERM ^ ; CREATE OR ALTER procedure SPCODBARRAS ( CODEMPRESA integer) returns ( CODPRODUTO integer, CODBARRAS varchar(30)) as begin FOR SELECT CODPRODUTO , CODBARRAS FROM PRODUTOS P WHERE P.CODEMPRESA=:CODEMPRESA AND P.LIXEIRA<>'S' INTO :CODPRODUTO, :CODBARRAS DO suspend; FOR SELECT CB.CODPRODUTO , CB.CODBARRAS FROM PRODUTOSCODBARRAS CB JOIN PRODUTOS P ON CB.CODPRODUTO=P.CODPRODUTO WHERE P.CODEMPRESA=:CODEMPRESA AND P.LIXEIRA<>'S' INTO :CODPRODUTO, :CODBARRAS DO suspend; end^ SET TERM ; ^ SET TERM ^ ; CREATE OR ALTER procedure SPCODBARRAS ( CODEMPRESA integer) returns ( CODPRODUTO integer, CODBARRAS varchar(30)) as begin FOR SELECT CODPRODUTO , CODBARRAS FROM PRODUTOS P WHERE P.CODEMPRESA=:CODEMPRESA INTO :CODPRODUTO, :CODBARRAS DO suspend; FOR SELECT CB.CODPRODUTO , CB.CODBARRAS FROM PRODUTOSCODBARRAS CB JOIN PRODUTOS P ON CB.CODPRODUTO=P.CODPRODUTO WHERE P.CODEMPRESA=:CODEMPRESA INTO :CODPRODUTO, :CODBARRAS DO suspend; end^ SET TERM ; ^ SET TERM ^ ; CREATE OR ALTER procedure SPCX returns ( CODCAIXAMOV integer, CODCXPARCELA integer, CODFILIAL integer, DATA date, HORA time, DESCRICAO varchar(70), VALOR float, TIPOMOV varchar(50), FORMAPGTO varchar(15), FINANCEIRO char(1), CREDITO float, DEBITO float, SALDO float, STATUS char(1), CODEMPRESA integer, CODCAIXA integer, NULO float) as begin FOR SELECT CM.CODCAIXAMOV, CODFILIAL, DATA, HORA, DESCRICAO, VALOR, TIPOMOV, FORMAPGTO, STATUS, CM.CODEMPRESA, CM.CODCAIXA FROM CAIXAMOV CM INTO :CODCAIXAMOV, :CODFILIAL,:DATA, :HORA, :DESCRICAO, :VALOR, :TIPOMOV, :FORMAPGTO, :STATUS, :CODEMPRESA, :CODCAIXA DO BEGIN CODCXPARCELA =NULL; FINANCEIRO='N'; SELECT CF.FINANCEIRO FROM CONFCAIXA CF WHERE CF.TIPOMOV=:TIPOMOV AND CF.TIPOPGTO=:FORMAPGTO AND CF.CODEMPRESA=:CODEMPRESA INTO :FINANCEIRO; if (FINANCEIRO='+') then BEGIN CREDITO = VALOR; DEBITO = 0; NULO = 0; END if (FINANCEIRO='-') then BEGIN DEBITO = :VALOR; CREDITO = 0; NULO = 0; END if (FINANCEIRO='N') then BEGIN CREDITO = 0; DEBITO = 0; NULO = VALOR; END SALDO = CREDITO - DEBITO; suspend; END FOR SELECT CP.CODCXPARCELA, CP.CODFILIAL, CP.DATA, CP.HORA, CP.DESCRICAO, CP.VALOR, CP.TIPOMOV, CP.FORMAPGTO, CP.STATUS, CP.CODEMPRESA, CP.CODCAIXA FROM CAIXAPARCELAS CP INTO :CODCXPARCELA, :CODFILIAL,:DATA, :HORA, :DESCRICAO, :VALOR, :TIPOMOV, :FORMAPGTO, :STATUS, :CODEMPRESA, :CODCAIXA DO BEGIN CODCAIXAMOV = NULL; FINANCEIRO = 'N'; SELECT CF.FINANCEIRO FROM CONFCAIXA CF WHERE CF.TIPOMOV=:TIPOMOV AND CF.TIPOPGTO=:FORMAPGTO AND CF.CODEMPRESA=:CODEMPRESA INTO :FINANCEIRO; if (FINANCEIRO='+') then BEGIN CREDITO = :VALOR; DEBITO = 0; NULO = 0; END if (FINANCEIRO='-') then BEGIN DEBITO = :VALOR; CREDITO = 0; NULO = 0; END if (FINANCEIRO='N') then BEGIN CREDITO = 0; DEBITO = 0; NULO = VALOR; END SALDO = CREDITO - DEBITO; suspend; END end^ SET TERM ; ^