GARANTIR DESCONTO

Fórum procedure de atualização de estoque #55322

23/02/2006

0

ola amigos, desenvolvi essa procedure para atualizar meu cadastro de produtos de acordo com o lançamento de notas fiscais, o problema é o seguinte existe produtos que não são somados ao estoque e sim adicionado como um novo produto, tb existem produtos que serão somando aos que ja existem na tabela segue abaixo minha procedure :

Problema não consigo atualizar os produtos, inserindo produtos novos esta tudo ok

CREATE PROCEDURE ENTRADA_ESTOQUE (
I_ACAO CHAR(1),
I_EMPRESA INTEGER,
I_NOTA_COMPRA VARCHAR(20),
I_DATA_COMPRA DATE,
I_COD_MODELO VARCHAR(13),
I_ESN_IMEI VARCHAR(15),
I_ICCID VARCHAR(20),
I_CTN VARCHAR(18),
I_CUSTO_PAGO NUMERIC(18,2),
I_ESTOQUE INTEGER,
I_VALOR_VENDA NUMERIC(18,2),
I_VENDIDO CHAR(1))
RETURNS (
R_MOD VARCHAR(13))
AS

begin
IF (:I_ACAO = ´I´) THEN
BEGIN
INSERT INTO PRODUTO (PRO_EMPRESA,
PRO_NOTA_COMPRA,
PRO_DATA_COMPRA,
PRO_COD_MODELO,
PRO_ESN_IMEI,
PRO_ICCID,
PRO_CTN,
PRO_CUSTO_PAGO,
PRO_ESTOQUE,
PRO_VALOR_VENDA,
PRO_VENDIDO)

values (
:I_EMPRESA,
:I_NOTA_COMPRA,
:I_DATA_COMPRA,
:I_COD_MODELO,
:I_ESN_IMEI,
:I_ICCID,
:I_CTN,
:I_CUSTO_PAGO,
:I_ESTOQUE,
:I_VALOR_VENDA,
:I_VENDIDO);
WHEN SQLCODE -625 DO
EXCEPTION ERRO_CAMPOS_OBRIGATORIOS;
WHEN ANY DO
EXCEPTION ERRO_INSERT;
END

IF (:i_acao = ´S´) THEN
BEGIN
FOR SELECT PRO_COD_MODELO

FROM PRODUTO

WHERE PRO_COD_MODELO = :i_cod_modelo AND
PRO_EMPRESA = :i_empresa

INTO :r_mod

DO
suspend;

IF (:r_mod IS NULL) THEN
BEGIN
INSERT INTO PRODUTO (PRO_EMPRESA,
PRO_NOTA_COMPRA,
PRO_DATA_COMPRA,
PRO_COD_MODELO,
PRO_ESN_IMEI,
PRO_ICCID,
PRO_CTN,
PRO_CUSTO_PAGO,
PRO_ESTOQUE,
PRO_VALOR_VENDA,
PRO_VENDIDO)

values (
:I_EMPRESA,
:I_NOTA_COMPRA,
:I_DATA_COMPRA,
:I_COD_MODELO,
:I_ESN_IMEI,
:I_ICCID,
:I_CTN,
:I_CUSTO_PAGO,
:I_ESTOQUE,
:I_VALOR_VENDA,
:I_VENDIDO);
WHEN SQLCODE -625 DO
EXCEPTION ERRO_CAMPOS_OBRIGATORIOS;
WHEN ANY DO
EXCEPTION ERRO_INSERT;
END

IF (:r_mod IS NOT NULL) THEN
BEGIN
UPDATE PRODUTO SET PRO_CUSTO_PAGO = :I_CUSTO_PAGO,
PRO_ESTOQUE = PRO_ESTOQUE + :I_ESTOQUE,
PRO_VALOR_VENDA = :I_CUSTO_PAGO

WHERE pro_cod_modelo = :I_COD_MODELO AND
PRO_EMPRESA = :I_EMPRESA;

WHEN SQLCODE -625 DO
EXCEPTION ERRO_CAMPOS_OBRIGATORIOS;
WHEN ANY DO
EXCEPTION ERRO_UPDATE;
END
END
end


Uiliangurjon

Uiliangurjon

Responder

Posts

23/02/2006

Emerson Nascimento

tente assim:
CREATE PROCEDURE ENTRADA_ESTOQUE ( 
  I_ACAO CHAR(1), 
  I_EMPRESA INTEGER, 
  I_NOTA_COMPRA VARCHAR(20), 
  I_DATA_COMPRA DATE, 
  I_COD_MODELO VARCHAR(13), 
  I_ESN_IMEI VARCHAR(15), 
  I_ICCID VARCHAR(20), 
  I_CTN VARCHAR(1, 
  I_CUSTO_PAGO NUMERIC(18,2), 
  I_ESTOQUE INTEGER, 
  I_VALOR_VENDA NUMERIC(18,2), 
  I_VENDIDO CHAR(1)) 
RETURNS ( 
  R_MOD VARCHAR(13)) 
AS 
begin
  IF (:I_ACAO = ´S´) THEN
  BEGIN
    SELECT PRO_COD_MODELO 
    FROM PRODUTO 
    WHERE PRO_COD_MODELO = :i_cod_modelo AND 
      PRO_EMPRESA = :i_empresa 
    INTO :r_mod;

    IF (:r_mod is null) THEN
      I_ACAO = ´I´;
  END
    

  IF (:I_ACAO = ´I´) THEN 
  BEGIN 
    r_mod = I_COD_MODELO;

    INSERT INTO PRODUTO (PRO_EMPRESA, 
      PRO_NOTA_COMPRA, 
      PRO_DATA_COMPRA, 
      PRO_COD_MODELO, 
      PRO_ESN_IMEI, 
      PRO_ICCID, 
      PRO_CTN, 
      PRO_CUSTO_PAGO, 
      PRO_ESTOQUE, 
      PRO_VALOR_VENDA, 
      PRO_VENDIDO) 
    values ( 
      :I_EMPRESA, 
      :I_NOTA_COMPRA, 
      :I_DATA_COMPRA, 
      :I_COD_MODELO, 
      :I_ESN_IMEI, 
      :I_ICCID, 
      :I_CTN, 
      :I_CUSTO_PAGO, 
      :I_ESTOQUE, 
      :I_VALOR_VENDA, 
      :I_VENDIDO); 
    WHEN SQLCODE -625 DO 
      EXCEPTION ERRO_CAMPOS_OBRIGATORIOS; 
    WHEN ANY DO 
      EXCEPTION ERRO_INSERT; 
  END

  ELSE

  BEGIN 
    UPDATE PRODUTO SET
      PRO_CUSTO_PAGO = :I_CUSTO_PAGO, 
      PRO_ESTOQUE = PRO_ESTOQUE + :I_ESTOQUE, 
      PRO_VALOR_VENDA = :I_CUSTO_PAGO 
    WHERE pro_cod_modelo = :I_COD_MODELO AND 
      PRO_EMPRESA = :I_EMPRESA; 
    WHEN SQLCODE -625 DO 
      EXCEPTION ERRO_CAMPOS_OBRIGATORIOS; 
    WHEN ANY DO 
      EXCEPTION ERRO_UPDATE; 
  END 
end



Responder

Gostei + 0

23/02/2006

Uiliangurjon

Funcionou corretamente!!!


Responder

Gostei + 0

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

Aceitar