Script SQL PRÉ-MONTADO (Nota Devolução Emitida Pelo Fornecedor)

Vinicius Toledo

Autor Vinicius Toledo
Data de criação Jan 29, 2024
Última edição Modificado há um ano
Visualizações 7 visualizações

Caso ocorrido na Lápis de Cor, caso não recorrente mas pode ser útil para outros casos.

  • Cliente entrou em contato informando referente a uma nota que precisaria estar dando entrada no sistema, só que essa teria sido emitida pelo próprio fornecedor, para que ele fizesse a devolução dos produto. Mas esse não seria uma processo correto, ela deveria emitir essa nota dentro do sistema, já que o sistema não é tratado para receber essas notas.

  • Como esse caso é raro mas pode acontecer, foi montado um script que irá realizar a tratativa para conseguir dar entrada nessa nota.

    1° Passo: Deverá criar uma CFOP referente a nota que não irá gerar movimento no estoque.

    2° Passo: Cliente deverá entrar preencher todos campos na tela de nota fiscal de entrada, copiando os dados referente a nota em que o fornecedor emitiu, e salvá-la.

  • Feito isso entra o processo de execução do script.

Segue o script abaixo:

Set @CodigoUsuario = -1;

set @VersaoEXE = (select VersaoEXE from versoes limit 1);

-- Código da Nota ser afetada

set @CodigoNF = 151;

-- Tipo de origem para histórico produto

set @TipoNF = 4;

-- Mundando o tipo da NF

update nf set tiponf = 3 where (nf.codigo = @CodigoNF);

update subnf set subnf.movimento = 'S' where (codigonf = @CodigoNF);

delete historicoproduto.* from historicoproduto

inner join subnf on subnf.codigo = historicoproduto.codigoorigem and historicoproduto.tipoorigem = @TipoNF

inner join nf on nf.codigo = subnf.codigonf

where (nf.codigo = @CodigoNF);

insert into historicoproduto

(

codigoproduto,

codigoestoque,

codigoorigem,

tipoorigem,

data,

DataHora,

quantidade,

Entrada,

Saida,

CustoMedioAtual,

QuantidadeAtual,

NovoCustoComercial,

NovaQuantidade,

Grade,

Seriado,

CodigoCor,

Gr01,

Gr02,

Gr03,

Gr04,

Gr05,

Gr06,

Gr07,

Gr08,

Gr09,

Gr10,

Gr11,

Gr12,

Gr13,

Gr14,

Gr15,

Gr16,

Gr17,

Gr18,

Gr19,

Gr20,

Gr21,

Gr22,

Gr23,

Gr24,

Gr25,

Gr26,

Gr27,

Gr28,

Gr29,

Gr30,

EmpPrecoCusto,

EmpCustoComercial,

EmpCustoMedio,

EmpPrecoVenda,

EmpPrecoPrazo,

EmpAtacado,

SetorPrecoCusto,

SetorCustoComercial,

SetorCustoMedio,

SetorPrecoVenda,

SetorPrecoPrazo,

SetorAtacado,

CodigoLote

)

select

(subnf.codigoproduto) as codigoproduto,

(nf.codigoestoque) as codigoestoque,

(subnf.codigo) as codigoorigem,

(@TipoNF) as tipoorigem,

(now()) as data,

(now(0)) as DataHora,

(subnf.quantidade) as quantidade,

(0) as Entrada,

(subnf.quantidade) as Saida,

(0) as CustoMedioAtual,

(0) as QuantidadeAtual,

(0) as NovoCustoComercial,

(0) as NovaQuantidade,

('Não') as Grade,

('Não') as Seriado,

(0) as CodigoCor,

(0) as Gr01,

(0) as Gr02,

(0) as Gr03,

(0) as Gr04,

(0) as Gr05,

(0) as Gr06,

(0) as Gr07,

(0) as Gr08,

(0) as Gr09,

(0) as Gr10,

(0) as Gr11,

(0) as Gr12,

(0) as Gr13,

(0) as Gr14,

(0) as Gr15,

(0) as Gr16,

(0) as Gr17,

(0) as Gr18,

(0) as Gr19,

(0) as Gr20,

(0) as Gr21,

(0) as Gr22,

(0) as Gr23,

(0) as Gr24,

(0) as Gr25,

(0) as Gr26,

(0) as Gr27,

(0) as Gr28,

(0) as Gr29,

(0) as Gr30,

(0) as EmpPrecoCusto,

(0) as EmpCustoComercial,

(0) as EmpCustoMedio,

(0) as EmpPrecoVenda,

(0) as EmpPrecoPrazo,

(0) as EmpAtacado,

(0) as SetorPrecoCusto,

(0) as SetorCustoComercial,

(0) as SetorCustoMedio,

(0) as SetorPrecoVenda,

(0) as SetorPrecoPrazo,

(0) as SetorAtacado,

(0) as CodigoLote

from nf

inner join subnf on subnf.codigonf = nf.codigo

where (nf.codigo = @CodigoNF);

Esse script irá realizar a transferência da nota fiscal de entrada para tela de nota fiscal de devolução gerando um movimento de estoque, dando saída nos determinados produtos.

Obs: Esse script poderá ser usado para outras notas, não somente para devolução.