ERP – Ordem de Compra – Como consistir para que a transação da solicitação de compra seja a mesma transação dos itens da Ordem de Compra
Dúvida
Como consistir para que a transação da solicitação de compra seja a mesma transação dos itens da Ordem de Compra, quando a Ordem de Compra for gerada via Solicitação de Compra, no módulo de Suprimentos?
Exemplo:
Se a transação da solicitação for XX, então utilizar a transação dos itens da ordem de compra XX;
Se a transação da solicitação for YY, então utilizar a transação dos itens da ordem de compra YY.
Solução
Essa consistência não poderá ser feita na criação da Ordem de Coma, uma vez que, não existe identificador de consistência de criação de OC que disponibiliza a variável da solicitação de compra.
Essa consistência só poderá ser feita no fechamento da OC, através da tela F420GOC_SCOC - Suprimentos / Gestão de Compras / Ordens de Compra / Agrupada (Ordem de Compra Agrupada), onde para isto poderá ser utilizado o identificador de regras CPR-420OCPDG02.
Clique aqui para acessar a documentação do identificador de regras CPR-420OCPDG02.
Para fazer essa consistência, deverá ser feito um SELECT na tabela E410COT, para saber qual o número da cotação gerada para a Ordem de Copmra (E410COT.NumCot).
Através dessa informação buscar qual o número da solicitação a qual a Ordem de Compra pertence, fazendo um cursor na tabela E405SOL passando o campo E405SOL.NumCot que foi anteriormente buscando através do SELECT na tabela E410COT, com isso, poderá fazer o cursor na tabela E405SOL para saber qual a transação da Solicitação de Compra e comparar com a transação da Ordem de Compra.
Exemplo de regra abaixo:
definir numero VSCodEmp;
definir numero VSCodFil;
definir numero VSCodFor;
definir numero VSNumOcp;
definir alfa XCifFob;
Definir alfa xUsuOcp;
Definir Alfa ITnsPro; @Transação dos Itens da OC@
Definir Alfa VsTnsPro; @Transação dos Dados Gerais@
Definir Numero xNumCot; @Número da cotação@
Definir Numero xNumSol; @Número da Solicitação de Compra@
Definir Alfa xTnsSol; @Transação da Solicitação de Compra@
Definir Alfa MsRetorno;
@Consistir transação da OC em relação a transação da SC@
@Fazer o cursor na tabela E410COT para saber qual o número da cotação, para posteriormente poder saber qual o número da SC@
inicio
definir cursor cursor_E410COT;
cursor_E410COT.SQL SELECT NUMCOT FROM E410COT
WHERE CODEMP = :VSCodEmp
AND FILOCP = :VSCodFiL
AND NumOcp = :VSNumOcp;
cursor_E410COT.AbrirCursor();
se (cursor_E410COT.Achou)
xNumCot = cursor_E410COT.NumCot;
cursor_E410COT.FecharCursor();
fim;
@Agora com o número da cotação será feito um select para buscar o número da SC@
inicio
definir cursor cursor_E405SOL;
cursor_E405SOL.SQL SELECT NUMSOL FROM E405SOL
WHERE NUMCOT = :xNumCot;
cursor_E405SOL.AbrirCursor();
se (cursor_E405SOL.Achou)
xNumSol = cursor_E405SOL.NUMSOL;
cursor_E405SOL.FecharCursor();
fim;
@Agora select na tabela E405SOL para buscar a transação da solicitação de compra@
inicio
definir cursor cursor_E405SOL;
cursor_E405SOL.SQL SELECT CODTNS FROM E405SOL
WHERE NUMSOL = :xNumSol;
cursor_E405SOL.AbrirCursor();
se (cursor_E405SOL.Achou)
xTnsSol = cursor_E405SOL.CODTNS;
cursor_E405SOL.FecharCursor();
fim;
Se ((XTnsSol =91400) e (VsTnsPro <> 90400))
Inicio
MsRetorno = Para Solicitações de compra com transação + + XTnsSol + + a transação da OC deve ser 90400;
LimpaEspacos(MsRetorno);
PosicaoAlfa(OK,MsRetorno, nPosStr);
Mensagem(Erro, MsRetorno);
Fim;
Atenção! Antes de realizar qualquer alteração, analise o impacto que poderá ter em outros lançamentos/processos do sistema.