drop procedure sp_iud_produto; create or alter procedure SP_IUD_PRODUTO ( PSMS_ENVIAR char(1) character set ISO8859_1, PNOT_VALIDADE_PRODUTO char(1) character set ISO8859_1, PVALIDADE_PRODUTO date, PVALIDAR char(1) character set ISO8859_1, PID_PRODUTO integer, PTX_DESCRICAO varchar(100) character set ISO8859_1, PVL_PRECO_VAREJO numeric(15,2), PVL_PRECO_ATACADO numeric(15,2), PNB_STATUS smallint, PNB_TIPO smallint, PTX_UNIDADE varchar(30) character set ISO8859_1, PEAN varchar(250) character set ISO8859_1, PCFOP char(4) character set ISO8859_1, PCST integer, PICMS integer, PNCM char(60) character set ISO8859_1, PTIPO_OPERACAO char(1) character set ISO8859_1, PLIQ_MUNICIPAL numeric(15,3), PLIQ_FEDERAL numeric(15,3), PLIQ_ESTADUAL numeric(15,3), PTX_CORREDOR varchar(60) character set ISO8859_1, PTX_PRATELEIRA varchar(60) character set ISO8859_1, PQTDE_MINIMA numeric(15,3), PID_FORNECEDOR integer, PID_MARCA integer, PDIA_VALIDADE integer, PFATOR_VENDA integer, PID_TIPO_PRODUTO integer, PPORC_SERVICO numeric(18,3), PVL_ATACADO numeric(18,2), PNB_MISTO integer, PVL_PRECO_VAREJO2 numeric(18,2), PVL_PRECO_ATACADO2 numeric(18,2), PVL_PRECO_CUSTO numeric(18,2), PTX_UNIDADE2 char(30) character set ISO8859_1, PTX_FATOR_VENDA varchar(150) character set ISO8859_1, PNB_FATOR_BAIXA1 float, PNB_FATOR_BAIXA2 float, PTX_FATOR_VENDA1 varchar(500) character set ISO8859_1) returns ( PID_PRODUTO_GERADO integer) as begin if (:ptipo_operacao='I') then begin select gen_id(k_produto, 1) from rdb$database into :pid_produto_gerado; INSERT INTO PRODUTO(ID_PRODUTO, TX_DESCRICAO, VL_PRECO_VAREJO, VL_PRECO_ATACADO, NB_STATUS, NB_TIPO, TX_UNIDADE, DATA_CADASTRO, DATA__ULT_VENDA, EAN, CFOP, CST, ICMS, NCM, LIQ_MUNICIPAL, LIQ_FEDERAL, LIQ_ESTADUAL, CORREDOR, PRATELEIRA,QTED_MINIMA, VALIDAR, VALIDADE_PRODUTO,NOT_VALIDADE_PRODUTO, ID_FORNECEDOR, ID_MARCA, DIA_VALIDADE, FATOR_VENDA, ID_TIPO_PRODUTO, PORC_SERVICO, VL_ATACADO, NB_MISTO, VL_PRECO_VAREJO2, VL_PRECO_ATACADO2, VL_PRECO_CUSTO, TX_UNIDADE2, TX_FATOR_VENDA, NB_FATOR_BAIXA1, NB_FATOR_BAIXA2, TX_FATOR_VENDA1 ) VALUES (:PID_PRODUTO_GERADO,:ptx_descricao,:pvl_preco_varejo,:pvl_preco_atacado,:pnb_status, :pnb_tipo, :ptx_unidade, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, :pean, :PCFOP, :pcst, :picms, :pncm,:pliq_municipal, :pliq_federal, :pliq_estadual,:ptx_corredor, :ptx_prateleira,:pqtde_minima,:PVALIDAR, :PVALIDADE_PRODUTO,:PNOT_VALIDADE_PRODUTO, :PID_FORNECEDOR, :PID_MARCA, :PDIA_VALIDADE, :PFATOR_VENDA, :PID_TIPO_PRODUTO, :pPORC_SERVICO, :PVL_ATACADO, :PNB_MISTO, :PVL_PRECO_VAREJO2, :PVL_PRECO_ATACADO2, :PVL_PRECO_CUSTO, :PTX_UNIDADE2, :pTX_FATOR_VENDA, :pNB_FATOR_BAIXA1, :pNB_FATOR_BAIXA2, :PTX_FATOR_VENDA1); execute procedure sp_iud_estoque_produto_final(:pid_produto_gerado,0,0,0,0,0,0,'I',0,0); end else if (:ptipo_operacao='U') then begin UPDATE PRODUTO SET TX_DESCRICAO = :ptx_descricao, VL_PRECO_VAREJO = :pvl_preco_varejo, VL_PRECO_ATACADO = :pvl_preco_atacado, NB_STATUS = :PNB_STATUS, NB_TIPO = :PNB_TIPO, TX_UNIDADE = :ptx_UNIDADE, DATA_CADASTRO = CURRENT_TIMESTAMP, DATA__ULT_VENDA = CURRENT_TIMESTAMP, EAN = :PEAN, CFOP = :PCFOP, CST = :PCST, ICMS = :PICMS, NCM = :PNCM, LIQ_MUNICIPAL = :pliq_municipal, LIQ_FEDERAL = :pliq_federal, LIQ_ESTADUAL = :pliq_estadual, CORREDOR = :ptx_corredor, PRATELEIRA = :ptx_prateleira, QTED_MINIMA = :pqtde_minima, VALIDAR = :PVALIDAR, VALIDADE_PRODUTO = :pvalidade_produto, NOT_VALIDADE_PRODUTO = :pnot_validade_produto, ID_FORNECEDOR = :pID_FORNECEDOR, ID_MARCA = :pID_MARCA, DIA_VALIDADE = :pDIA_VALIDADE, FATOR_VENDA = :PFATOR_VENDA, ID_TIPO_PRODUTO = :PID_TIPO_PRODUTO, PORC_SERVICO = :pPORC_SERVICO, VL_ATACADO =:PVL_ATACADO, NB_MISTO =:PNB_MISTO, VL_PRECO_VAREJO2 =:PVL_PRECO_VAREJO2, VL_PRECO_ATACADO2 =:PVL_PRECO_ATACADO2, VL_PRECO_CUSTO =:PVL_PRECO_CUSTO, TX_UNIDADE2 =:PTX_UNIDADE2, TX_FATOR_VENDA =:pTX_FATOR_VENDA, NB_FATOR_BAIXA1 =:pNB_FATOR_BAIXA1, NB_FATOR_BAIXA2 =:pNB_FATOR_BAIXA2, TX_FATOR_VENDA1 =:PTX_FATOR_VENDA1 WHERE (ID_PRODUTO = :PID_PRODUTO); end else if (:ptipo_operacao='D') then begin delete from estoque_produto_final where ID_PRODUTO=:pID_PRODUTO; DELETE FROM PRODUTO WHERE (ID_PRODUTO = :PID_PRODUTO); end else if (:ptipo_operacao='M') then begin UPDATE PRODUTO SET SMS_ENVIAR = :psms_enviar WHERE (ID_PRODUTO = :PID_PRODUTO); end end; CREATE TABLE PRODUTO_FORNECEDOR ( ID_PRODUTO_FORNECEDOR INTEGER, ID_FORNECEDOR INTEGER, VL_PRECO_COMPRA NUMERIC(18,3), DT_CADASTRO TIMESTAMP ); CREATE SEQUENCE K_PRODUTO_FORNECEDOR; drop procedure sp_iud_produto_fornecedor; create or alter procedure SP_IUD_PRODUTO_FORNECEDOR ( PID_PRODUTO_FORNECEDOR integer, PID_FORNECEDOR integer, PVL_PRECO_COMPRA float, PTIPO_OPERACAO char(1) character set ISO8859_1, PID_PRODUTO integer) as begin begin if (:ptipo_operacao='I') then begin select gen_id(k_produto_fornecedor, 1) from rdb$database into :pid_produto_fornecedor; insert into produto_fornecedor(ID_PRODUTO_FORNECEDOR, ID_FORNECEDOR, VL_PRECO_COMPRA, DT_CADASTRO, ID_PRODUTO) values (:pid_produto_fornecedor, :pid_fornecedor, :pvl_preco_compra, current_timestamp, :PID_PRODUTO); end else if (:ptipo_operacao='U') then begin update produto_fornecedor set ID_FORNECEDOR = :pid_fornecedor, VL_PRECO_COMPRA= :pvl_preco_compra, DT_CADASTRO = current_timestamp, ID_PRODUTO = :pid_produto where ID_PRODUTO_FORNECEDOR=:pid_produto_fornecedor; end if (:ptipo_operacao='D') then begin delete from produto_fornecedor where ID_PRODUTO=:pid_produto; end end end; drop procedure sp_iud_produto; create or alter procedure SP_IUD_PRODUTO ( PSMS_ENVIAR char(1) character set ISO8859_1, PNOT_VALIDADE_PRODUTO char(1) character set ISO8859_1, PVALIDADE_PRODUTO date, PVALIDAR char(1) character set ISO8859_1, PID_PRODUTO integer, PTX_DESCRICAO varchar(100) character set ISO8859_1, PVL_PRECO_VAREJO numeric(15,2), PVL_PRECO_ATACADO numeric(15,2), PNB_STATUS smallint, PNB_TIPO smallint, PTX_UNIDADE varchar(30) character set ISO8859_1, PEAN varchar(250) character set ISO8859_1, PCFOP char(4) character set ISO8859_1, PCST integer, PICMS integer, PNCM char(60) character set ISO8859_1, PTIPO_OPERACAO char(1) character set ISO8859_1, PLIQ_MUNICIPAL numeric(15,3), PLIQ_FEDERAL numeric(15,3), PLIQ_ESTADUAL numeric(15,3), PTX_CORREDOR varchar(60) character set ISO8859_1, PTX_PRATELEIRA varchar(60) character set ISO8859_1, PQTDE_MINIMA numeric(15,3), PID_FORNECEDOR integer, PID_MARCA integer, PDIA_VALIDADE integer, PFATOR_VENDA integer, PID_TIPO_PRODUTO integer, PPORC_SERVICO numeric(18,3), PVL_ATACADO numeric(18,2), PNB_MISTO integer, PVL_PRECO_VAREJO2 numeric(18,2), PVL_PRECO_ATACADO2 numeric(18,2), PVL_PRECO_CUSTO numeric(18,2), PTX_UNIDADE2 char(30) character set ISO8859_1, PTX_FATOR_VENDA varchar(150) character set ISO8859_1, PNB_FATOR_BAIXA1 float, PNB_FATOR_BAIXA2 float, PTX_FATOR_VENDA1 varchar(500) character set ISO8859_1) returns ( PID_PRODUTO_GERADO integer) as begin if (:ptipo_operacao='I') then begin select gen_id(k_produto, 1) from rdb$database into :pid_produto_gerado; INSERT INTO PRODUTO(ID_PRODUTO, TX_DESCRICAO, VL_PRECO_VAREJO, VL_PRECO_ATACADO, NB_STATUS, NB_TIPO, TX_UNIDADE, DATA_CADASTRO, DATA__ULT_VENDA, EAN, CFOP, CST, ICMS, NCM, LIQ_MUNICIPAL, LIQ_FEDERAL, LIQ_ESTADUAL, CORREDOR, PRATELEIRA,QTED_MINIMA, VALIDAR, VALIDADE_PRODUTO,NOT_VALIDADE_PRODUTO, ID_FORNECEDOR, ID_MARCA, DIA_VALIDADE, FATOR_VENDA, ID_TIPO_PRODUTO, PORC_SERVICO, VL_ATACADO, NB_MISTO, VL_PRECO_VAREJO2, VL_PRECO_ATACADO2, VL_PRECO_CUSTO, TX_UNIDADE2, TX_FATOR_VENDA, NB_FATOR_BAIXA1, NB_FATOR_BAIXA2, TX_FATOR_VENDA1 ) VALUES (:PID_PRODUTO_GERADO,:ptx_descricao,:pvl_preco_varejo,:pvl_preco_atacado,:pnb_status, :pnb_tipo, :ptx_unidade, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, :pean, :PCFOP, :pcst, :picms, :pncm,:pliq_municipal, :pliq_federal, :pliq_estadual,:ptx_corredor, :ptx_prateleira,:pqtde_minima,:PVALIDAR, :PVALIDADE_PRODUTO,:PNOT_VALIDADE_PRODUTO, :PID_FORNECEDOR, :PID_MARCA, :PDIA_VALIDADE, :PFATOR_VENDA, :PID_TIPO_PRODUTO, :pPORC_SERVICO, :PVL_ATACADO, :PNB_MISTO, :PVL_PRECO_VAREJO2, :PVL_PRECO_ATACADO2, :PVL_PRECO_CUSTO, :PTX_UNIDADE2, :pTX_FATOR_VENDA, :pNB_FATOR_BAIXA1, :pNB_FATOR_BAIXA2, :PTX_FATOR_VENDA1); execute procedure sp_iud_estoque_produto_final(:pid_produto_gerado,0,0,0,0,0,0,'I',0,0); end else if (:ptipo_operacao='U') then begin UPDATE PRODUTO SET TX_DESCRICAO = :ptx_descricao, VL_PRECO_VAREJO = :pvl_preco_varejo, VL_PRECO_ATACADO = :pvl_preco_atacado, NB_STATUS = :PNB_STATUS, NB_TIPO = :PNB_TIPO, TX_UNIDADE = :ptx_UNIDADE, DATA_CADASTRO = CURRENT_TIMESTAMP, DATA__ULT_VENDA = CURRENT_TIMESTAMP, EAN = :PEAN, CFOP = :PCFOP, CST = :PCST, ICMS = :PICMS, NCM = :PNCM, LIQ_MUNICIPAL = :pliq_municipal, LIQ_FEDERAL = :pliq_federal, LIQ_ESTADUAL = :pliq_estadual, CORREDOR = :ptx_corredor, PRATELEIRA = :ptx_prateleira, QTED_MINIMA = :pqtde_minima, VALIDAR = :PVALIDAR, VALIDADE_PRODUTO = :pvalidade_produto, NOT_VALIDADE_PRODUTO = :pnot_validade_produto, ID_FORNECEDOR = :pID_FORNECEDOR, ID_MARCA = :pID_MARCA, DIA_VALIDADE = :pDIA_VALIDADE, FATOR_VENDA = :PFATOR_VENDA, ID_TIPO_PRODUTO = :PID_TIPO_PRODUTO, PORC_SERVICO = :pPORC_SERVICO, VL_ATACADO =:PVL_ATACADO, NB_MISTO =:PNB_MISTO, VL_PRECO_VAREJO2 =:PVL_PRECO_VAREJO2, VL_PRECO_ATACADO2 =:PVL_PRECO_ATACADO2, VL_PRECO_CUSTO =:PVL_PRECO_CUSTO, TX_UNIDADE2 =:PTX_UNIDADE2, TX_FATOR_VENDA =:pTX_FATOR_VENDA, NB_FATOR_BAIXA1 =:pNB_FATOR_BAIXA1, NB_FATOR_BAIXA2 =:pNB_FATOR_BAIXA2, TX_FATOR_VENDA1 =:PTX_FATOR_VENDA1 WHERE (ID_PRODUTO = :PID_PRODUTO); end else if (:ptipo_operacao='D') then begin delete from estoque_produto_final where ID_PRODUTO=:pID_PRODUTO; DELETE FROM PRODUTO WHERE (ID_PRODUTO = :PID_PRODUTO); end else if (:ptipo_operacao='M') then begin UPDATE PRODUTO SET SMS_ENVIAR = :psms_enviar WHERE (ID_PRODUTO = :PID_PRODUTO); end end;