GeraNumeracaoSerie

Gerar produtos numerados (série) na tela F210CNP.

Sintaxe: GeraNumeracaoSerie(Alfa CodPro,Alfa CodDer,Alfa CodDep,Alfa OriOrp,Alfa CodOri,Alfa CodFam,Alfa CodTns,Numero NumDoc,Numero NumPed,Numero SeqIpd,Numero QtdGer,Alfa End Retorno);

Parâmetros:

Nome Tipo Descrição
CodPro Alfa  
CodDer Alfa  
CodDep Alfa  
OriOrp Alfa  
CodOri Alfa  
CodFam Alfa  
CodTns Alfa  
NumDoc Numero  
NumPed Numero  
SeqIpd Numero  
QtdGer Numero  
Retorno Alfa  

Parâmetros: NumDoc é o número da OP. No campo CodOri e OriOrp deverá ser passado (em ambos) a origem da OP.

Tipo de retorno: Mensagem para o usuário

Exemplo:

definir alfa VsCodDiv;
Se (VsCodDiv <> "F210CPN")
{
definir alfa VsCodPro;
definir alfa VsCodDer;
definir alfa VsCodDep;
definir alfa VsCodOri;
definir alfa CodFam;
definir alfa VsCodTns;
definir alfa VsIniFim;
definir numero VsNumOrp;
definir numero VsQtdRe1;
definir numero VsQtdRe2;
definir numero VsQtdRe3;
definir numero VsQtdRfg;
definir alfa Retorno;
CodFam = "";
vCodEmp = CodEmp;
/* CHECAR SE É O ESTÁGIO/sequência DO ROTEIRO CORRETO PARA GERAR NUMERAÇÃO */
definir cursor Cur_900Oop;
Cur_900Oop.Sql "SELECT CODETG,SEQROT FROM E900OOP \
WHERE CODEMP = :VCodEmp AND \
CODORI = :VsCodOri AND \
NUMORP = :VsNumOrp \
ORDER BY CODETG DESC,SEQROT DESC";
Cur_900Oop.AbrirCursor();
se (Cur_900Oop.Achou)
inicio
/* CHECAR SE É O ÚLTIMO ESTÁGIO/sequência DO ROTEIRO, SE FOR, NÃO DEIXAR MOVTAR, POIS ESTE SERÁ VIA TELA F210CPN */
se ((Cur_900Oop.CodEtg = VsCodEtg) e (Cur_900Oop.SeqRot = VsSeqRot))
{
Retorno = "Última Operação não pode ser movimentada via tela.";
GeraLog(Retorno);
}
Cur_900Oop.Proximo();
se ((Cur_900Oop.CodEtg = VsCodEtg) e (Cur_900Oop.SeqRot = VsSeqRot) e (VsIniFim = "F"))
{
/* CHECAR SE O PRODUTO DE PRIMEIRA CONTROLA POR SÉRIE */
definir cursor Cur_E075Pro;
Cur_E075Pro.Sql "SELECT CTRSEP,CODPR2,DERPR2,CODPR3,DERPR3 FROM E075PRO \
WHERE CODEMP = :VCodEmp \
AND CODPRO = :VsCodPro";
Cur_E075Pro.AbrirCursor();
se (Cur_E075Pro.Achou)
inicio
Se (Cur_E075Pro.CtrSep = "S")
{
Se (VsQtdRe1 > 0)
{
GeraNumeracaoSerie(VsCodPro,VsCodDer,VsCodDep,VsCodOri,VsCodOri,CodFam,VsCodTns,VsNumOrp,0,0,VsQtdRe1,Retorno);
}
/* CHECAR SE TEM QTDE E PRODUTO DE SEGUNDA QUALIDADE E SE ESSE PRODUTO TAMBÉM CONTROLA POR SÉRIE */
Se ((VsQtdRe2 > 0) e (Cur_E075Pro.CodPr2 <> " "))
{
definir alfa vCodPr2;
vCodPr2 = Cur_E075Pro.CodPr2;
definir cursor Cur_E075Pro1;
Cur_E075Pro1.Sql "SELECT CTRSEP FROM E075PRO \
WHERE CODEMP = :VCodEmp \
AND CODPRO = :vCodPr2";
Cur_E075Pro1.AbrirCursor();
se (Cur_E075Pro1.Achou)
inicio
Se (Cur_E075Pro1.CtrSep = "S")
{
definir alfa vDerPr2;
Se (Cur_E075Pro.DerPr2 <> " ")
vDerPr2 = Cur_E075Pro.DerPr2;
Senao
vDerPr2 = VsCodDer;
GeraNumeracaoSerie(vCodPr2,vDerPr2,VsCodDep,VsCodOri,VsCodOri,CodFam,VsCodTns,VsNumOrp,0,0,VsQtdRe2,Retorno);
}
fim;
Cur_E075Pro1.FecharCursor();
}
/* CHECAR SE TEM QTDE E PRODUTO DE TERCEIRA QUALIDADE E SE ESSE PRODUTO TAMBÉM CONTROLA POR SÉRIE */
Se ((VsQtdRe3 > 0) e (Cur_E075Pro.CodPr3 <> " "))
{
definir alfa vCodPr3;
vCodPr3 = Cur_E075Pro.CodPr3;
definir cursor Cur_E075Pro1;
Cur_E075Pro1.Sql "SELECT CTRSEP FROM E075PRO \
WHERE CODEMP = :VCodEmp \
AND CODPRO = :vCodPr3";
Cur_E075Pro1.AbrirCursor();
se (Cur_E075Pro1.Achou)
inicio
Se (Cur_E075Pro1.CtrSep = "S")
{
definir alfa vDerPr3;
Se (Cur_E075Pro.DerPr3 <> " ")
vDerPr3 = Cur_E075Pro.DerPr3;
Senao
vDerPr3 = VsCodDer;
GeraNumeracaoSerie(vCodPr3,vDerPr3,VsCodDep,VsCodOri,VsCodOri,CodFam,VsCodTns,VsNumOrp,0,0,VsQtdRe3,Retorno);
}
fim;
Cur_E075Pro1.FecharCursor();
}
}
fim;
Cur_E075Pro.FecharCursor();
ValStr = Retorno;
}
fim;
Cur_900Oop.FecharCursor();
}

Utilização da Função (dependentes): Nenhum dependente.

Este artigo ajudou você?