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.