on 06-21-2010 7:50 PM
Ola.
Estou com um problema. Preciso pegar o codigo do cliente, a serie utilizada(Externa, NFe, Manual...) e a sequencia.
Para verificar se para aquele parceiro de negocio ja não tem uma nota fiscal de entrada inserida com o mesmo numero na mesma serie.
Por exemplo evitar que fique duas notas do cliente 'X' com o numero '5151'.
Tentei um monte de coisas e o ultimo codigo que cheguei foi esse. Se alguem souber a resolução agradeço.
if @object_type = '18' and @transaction_type = 'A'--TIPO DE OBJETE NFE
DECLARE @Sequencia nvarchar(255)
DECLARE @Parceiro nvarchar(255)
DECLARE @Serie nvarchar(255)
--Pega a Sequencia de numeração
SET @Sequencia = (SELECT T1.SeqCode FROM OPCH T1 WHERE T1.DocEntry = @list_of_cols_val_tab_del)
--Pega o parceiro de negocio
SET @Parceiro = (SELECT T1.CardCode FROM OPCH T1 WHERE T1.DocEntry = @list_of_cols_val_tab_del)
--Pega a Serie da nota de numeração
SET @Serie = (SELECT T1.SeriesStr FROM OPCH T1 WHERE T1.DocEntry = @list_of_cols_val_tab_del)
IF (
(SELECT count(T0.Serial)
FROM OPCH T0
WHERE
T0.[SeqCode] = '-1'
AND (CAST (T0.[CardCode] AS nvarchar(255))) = @Parceiro
AND (CAST (T0.[SeriesStr] AS nvarchar(255))) = @Serie
AND T0.DocEntry = @list_of_cols_val_tab_del
) > 0
)
Begin
SET @error = @erro
SET @error_message = 'Nº de Nota Fiscal ja existente para este fornecedor'
End
Foi facil depois de imaginar como se ja tivesse inserido a nota. Que é como a Transact funciona.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Luiz,
Tenho o costume de fazer assim.
If (@object_type = '18' And (@transaction_type = 'A'))
Begin
Select @error = 1, @error_message = 'Nota Fiscal já lançada'
from OPCH T0
Where Exists (Select 1 From OPCH T2 Where T2.DocEntry <> T0.DocEntry and T2.Serial = T0.Serial And T2.SeriesStr = T0.SeriesStr and T2.SeqCode = T0.SeqCode and T0.CardCode = T2.CardCode )
And DocEntry = @list_of_cols_val_tab_del
End
Pode acontecer de a nota que já existe ter sido cancelada, você pode verificar fazendo isso.
If (@object_type = '18' And (@transaction_type = 'A'))
Begin
Select @error = 1, @error_message = 'Nota Fiscal já lançada'
from OPCH T0
Where Exists (Select 1 From OPCH T2 Where T2.DocEntry <> T0.DocEntry and T2.Serial = T0.Serial And T2.SeriesStr = T0.SeriesStr and T2.SeqCode = T0.SeqCode and T0.CardCode = T2.CardCode
And Not Exists (SELECT 1 as STATUS FROM RIN1 dv INNER JOIN ORIN d ON (d.DocEntry = dv.DocEntry) WHERE dv.BaseEntry = T2.DocEntry And d.SeqCode = 1) )
And DocEntry = @list_of_cols_val_tab_del
Não testei o código mais acho que é isso.
End
Edited by: Paulo.Afonso on Aug 26, 2010 10:54 PM
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Opa amigo..
Comentei todos os codigos que tinha.
Deixei apenas o teu.
Continuou o erro.
Uma coisa interessante foi o fato de eu fazer um teste na atividade e quando inseri a atividade ele deu esta mensagem que estamos tentando colocar na nota fiscal de entrada.
Mais alguma ideia?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Opa, pode ser alguma coisa no cadastro deste PN ...
tenta fazer o select ... Select * from OCRD where CardCode = 'F000005' pra ver se retorna algum erro ou se tem algum campo que tenha este valor 1065 0 gravado ... pode ser que este valor esteja gravado em um campo inteiro.
Outro teste que pode ser feito é com o codigo que te passei mas com outro Parceiro.
Se em todo caso não der certo, acho que só gerando um Trace no banco quando der esse erro para analisar a consulta que está sendo feita.
Att. Leandro Khalil.
Luis, boa tarde,
estou com o mesmo problema que o seu, de buscar se existem outras notas fiscais com o mesmo número do mesmo fornecedor. Tentei utilizar o script acima na Transaction, porém, identifiquei que o select que busca o número da nota fiscal da tela que está aberta que está gerando o erro de conversão na váriavel do script. Tentei de diversas outras formas, mas não obtive resultado.
Você conseguiu resolver esse seu problema para identificar se já existe outro número de nota fiscal no banco de dados?
Obrigado!
Opa.. Bom dia.
Interessante o codigo, tava crente que ia funcionar, mas mesmo assim não rolou esta dando um erro de conversão no SAP que ja tinha dado antes.
Segue imagem do erro no SAP.
http://img96.imageshack.us/img96/3076/erroiu.jpg
Ja aconteceu isso contigo?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Boa tarde,
verificou se tem outro código na transaction influenciando ?
tenta comentar os outros códigos nela e fazer esse teste...
Pode ser também porque tem campos NULL , usa esse codigo abaixo para tratar isso...
Dúvidas me avise..
if @object_type = '18' and @transaction_type = 'A'--TIPO DE OBJETE NFE
DECLARE @Sequencia nvarchar(255)
DECLARE @Parceiro nvarchar(255)
DECLARE @Serie nvarchar(255)
DECLARE @Serial as nvarchar(20)
DECLARE @Count as int
--Pega a Sequencia de numeração
SET @Sequencia = (SELECT IsNull(T1.SeqCode,'') FROM OPCH T1 WHERE T1.DocEntry = @list_of_cols_val_tab_del)
--Print(@Sequencia)
--Pega o parceiro de negocio
SET @Parceiro = (SELECT IsNull(T1.CardCode,'') FROM OPCH T1 WHERE T1.DocEntry = @list_of_cols_val_tab_del)
--Print(@Parceiro)
--Pega a Serie da nota de numeração
SET @Serie = (SELECT IsNull(T1.SeriesStr,'') FROM OPCH T1 WHERE T1.DocEntry = @list_of_cols_val_tab_del)
--Print(@Serie)
--Pega o num. da nota de
SET @Serial = (SELECT IsNull(T1.Serial,'') FROM OPCH T1 WHERE T1.DocEntry = @list_of_cols_val_tab_del)
--Print (@Serial)
Set @Count = 0
Set @Count = IsNull(
(
SELECT count(T0.Serial)
FROM OPCH T0
WHERE IsNull(T0.SeqCode,'') = IsNull(@Sequencia,'')
AND T0.CardCode = @Parceiro
AND IsNull(T0.SeriesStr,'') = IsNull(@Serie,'')
AND T0.Serial = @Serial
),0)
--Print(@Count)
-- Se existir alguma NF faz o procedimento
if (@Count > 0)
Begin
Set @error = 1
SET @error_message = 'Nº de Nota Fiscal ja existente para este fornecedor'
End
Ja tentei do jeito que vc falou e nada.. =/
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Boa noite,
segue codigo abaixo, acho que vai resolver...
Mudei a consulta pois já que vc nao quer a mesma NF, tem que verificar o Serial ...
espero ter ajudado, dúvidas me avise, tenho vários códigos na transaction no SAP e não tive problemas...
if @object_type = '18' and @transaction_type = 'A'--TIPO DE OBJETE NFE
DECLARE @Sequencia nvarchar(255)
DECLARE @Parceiro nvarchar(255)
DECLARE @Serie nvarchar(255)
DECLARE @Serial as nvarchar(20)
DECLARE @Count as int
--Pega a Sequencia de numeração
SET @Sequencia = (SELECT T1.SeqCode FROM OPCH T1 WHERE T1.DocEntry = @list_of_cols_val_tab_del)
--Print(@Sequencia)
--Pega o parceiro de negocio
SET @Parceiro = (SELECT T1.CardCode FROM OPCH T1 WHERE T1.DocEntry = @list_of_cols_val_tab_del)
--Print(@Parceiro)
--Pega a Serie da nota de numeração
SET @Serie = (SELECT T1.SeriesStr FROM OPCH T1 WHERE T1.DocEntry = @list_of_cols_val_tab_del)
--Print(@Serie)
--Pega o num. da nota de
SET @Serial = (SELECT T1.Serial FROM OPCH T1 WHERE T1.DocEntry = @list_of_cols_val_tab_del)
--Print (@Serial)
Set @Count = 0
Set @Count = IsNull(
(
SELECT count(T0.Serial)
FROM OPCH T0
WHERE T0.[SeqCode] = @Sequencia
AND T0.[CardCode] = @Parceiro
AND T0.[SeriesStr] = @Serie
AND T0.Serial = @Serial
),0)
--Print(@Count)
-- Se existir alguma NF faz o procedimento
if (@Count > 0)
Begin
Set @error = 1
SET @error_message = 'Nº de Nota Fiscal ja existente para este fornecedor'
End
Eu acho que é da mesma forma que vc pegou o DocEntry:
T0.CardCode = @list_of_cols_val_tab_del
Quando descobrir me avisa.
Abs.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
103 | |
12 | |
11 | |
6 | |
5 | |
4 | |
3 | |
3 | |
3 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.