Procedimentos para executar¶
Revise datas e empresas fixas antes de rodar
Vários procedimentos têm datas e códigos de empresa fixos no código (linhas destacadas). Ajuste-os para o cliente antes de executar.
Recriar o consolidador (PARESMA)¶
Após atualizar o pacote I3PC-FECHAMENTOS, rodar o código abaixo, que recria o consolidador.
{lnparesma.i}
def var vdata-ini as date.
assign vdata-ini = 01/01/2022.
def var vcls as clsParesma.
for each parecebe no-lock
break by parecebe.rec-lote-pai:
if first-of(parecebe.rec-lote-pai)
then do:
vcls = new clsParesma(0,0,0,"",parecebe.rec-lote-pai).
vcls:vdt-ini = vdata-ini.
vcls:setParesma().
end.
end.
Fechar os dias do incubatório¶
Executar para fechar os dias do incubatório através da tabela de fechamento (incfecha).
def var vdata as date.
def var vdata-ini as date.
def var vdata-fim as date.
assign vdata-ini = 01/01/2024. /* Aqui colocar a data do inicio do ano em que estamos */
assign vdata-fim = 06/30/2024. /* Aqui colocar a data do dia final em que todos os dados do icnubatório estão digitados */
for each incubatorio no-lock:
do vdata = vdata-ini to vdata-fim:
create incfecha.
assign incfecha.fec-codigo = next-value(seq-incfecha)
incfecha.emp-empresa = incubatorio.emp-empresa
incfecha.uni-unidade = incubatorio.uni-unidade
incfecha.fec-data = vdata
incfecha.fec-fechado = yes
incfecha.fec-hrfec = time
incfecha.fec-dtfech = today
incfecha.usu-usuario = "admin".
end.
end.
Criar empresas e unidades no I3PC¶
Executar esta rotina para criar, nas estruturas de empresa e unidade do I3PC, todas as empresas e unidades de granjas que serão controladas no planejamento.
for each paplanta where
paplanta.pla-tipo = "M" no-lock:
find last paovocla where
paovocla.emp-empresa = paplanta.emp-empresa and
paovocla.uni-unidade = paplanta.uni-unidade and
paovocla.cla-data >= 01/01/2023 /* Inicio de um ano antes do i3pc */
no-lock no-error.
/*=== Validação para não criar no i3pc unidades de matrizes que não estão mais sendo utilizadas */
if not avail paovocla
then next.
find first empresa where
empresa.emp-empresa = paplanta.emp-empresa
no-lock no-error.
find last i3pc-empresa where
i3pc-empresa.emp-empresa = empresa.emp-empresa
no-lock no-error.
if not avail i3pc-empresa
then do:
create i3pc-empresa.
assign i3pc-empresa.emp-empresa = empresa.emp-empresa
i3pc-empresa.emp-fantasia = empresa.emp-nome
i3pc-empresa.emp-nome = empresa.emp-nome
i3pc-empresa.emp-situa = yes.
end.
find last i3pc-unidade where
i3pc-unidade.emp-empresa = paplanta.emp-empresa and
i3pc-unidade.uni-unidade = paplanta.uni-unidade
no-lock no-error.
if not avail i3pc-unidade
then do:
create i3pc-unidade.
assign i3pc-unidade.emp-empresa = paplanta.emp-empresa
i3pc-unidade.uni-unidade = paplanta.uni-unidade
i3pc-unidade.uni-fantasi = paplanta.pla-nome
i3pc-unidade.uni-nome = paplanta.pla-nome
i3pc-unidade.uni-situa = yes.
end.
end.
Criar o standard padrão do frango de corte¶
Criar o standard padrão do frango de corte no I3PC. Verificar o pad-lote padrão da tabela pastand.
create i3pc-pastand.
assign i3pc-pastand.pad-lote = "COBB500"
i3pc-pastand.pad-vigencia = 01/01/2021
i3pc-pastand.id-pastand = 1.
Criar os I3PC-CLIFOR das unidades¶
Criar os i3pc-clifor correspondentes às unidades de incubatório e granja que são utilizadas.
for each paplanta where
(paplanta.pla-tipo = "M" or
paplanta.pla-tipo = "I") no-lock:
find last i3pc-clifor where
i3pc-clifor.cli-codigo = paplanta.cli-codigo
no-lock no-error.
if not avail i3pc-clifor
then do:
create i3pc-clifor.
assign i3pc-clifor.cli-codigo = paplanta.cli-codigo
i3pc-clifor.cli-razsoc = paplanta.pla-nome
i3pc-clifor.cli-codigo-erp = paplanta.cli-codigo.
end.
end.
Criar os standards de matrizes¶
Procedimento para criar os standards nas tabelas correspondentes do I3PC.
Empresas fixas no for each
Avaliar as empresas que estão fixas no for each: devem ser colocadas as empresas dos standards de lotes de matrizes ativos.
for each pastand where
(pastand.emp-empresa = 1 or
pastand.emp-empresa = 2) and
pastand.pad-status = yes and
pastand.pad-fcorte = no no-lock:
find last parecebe where
parecebe.pad-lote-fe = pastand.pad-lote or
parecebe.pad-lote-ma = pastand.pad-lote
no-lock no-error.
if not avail parecebe
then next.
find last i3co-linha where
i3co-linha.lin_codigo = pastand.lin-linha
no-lock no-error.
find last i3pc-pastand where
i3pc-pastand.pad-lote = pastand.pad-lote
no-lock no-error.
if not avail i3pc-pastand
then do:
create i3pc-pastand.
assign i3pc-pastand.id-pastand = next-value(seq-i3pcpastand)
i3pc-pastand.pad-lote = pastand.pad-lote
i3pc-pastand.pad-situa = "P"
i3pc-pastand.pad-status = yes
i3pc-pastand.pad-tipo = "M"
i3pc-pastand.pad-nome = pastand.pad-lote
i3pc-pastand.per-codigo = "S"
i3pc-pastand.per-iddmaxima = pastand.pad-iddmax
i3pc-pastand.pad-lote-ori = pastand.pad-lote
i3pc-pastand.linhagem = pastand.lin-linha
i3pc-pastand.id-linha = if avail i3co-linha then i3co-linha.id_linha else 0
i3pc-pastand.pad-vigencia = pastand.pad-dtiniest
i3pc-pastand.pad-versao = 1.
end.
end.
Criar os itens dos standards¶
Procedimento para criar os itens do standard nas tabelas correspondentes do I3PC.
Empresas fixas no for each
Avaliar as empresas que estão fixas no for each: devem ser colocadas as empresas dos standards de lotes de matrizes ativos.
def var vmor-acum as dec.
for each pastand where
(pastand.emp-empresa = 1 or
pastand.emp-empresa = 2) and
pastand.pad-status = yes and
pastand.rec-composi <> "M" and
pastand.pad-fcorte = no no-lock:
find last parecebe where
parecebe.pad-lote-fe = pastand.pad-lote or
parecebe.pad-lote-ma = pastand.pad-lote
no-lock no-error.
if not avail parecebe
then next.
find last i3co-linha where
i3co-linha.lin_codigo = pastand.lin-linha
no-lock no-error.
find last i3pc-pastand where
i3pc-pastand.pad-lote = pastand.pad-lote
no-lock no-error.
if avail i3pc-pastand
then do:
assign vmor-acum = 0.
for each pastaoco where
pastaoco.emp-empresa = pastand.emp-empresa and
pastaoco.pad-lote = pastand.pad-lote and
pastaoco.pad-idade > 0 no-lock
by pastaoco.pad-idade:
find last i3pc-pastaoco where
i3pc-pastaoco.pad-lote = pastaoco.pad-lote and
i3pc-pastaoco.std-semana = pastaoco.pad-idade
exclusive-lock no-wait no-error.
if not avail i3pc-pastaoco
then do:
create i3pc-pastaoco.
assign i3pc-pastaoco.pad-lote = pastaoco.pad-lote
i3pc-pastaoco.std-idade = pastaoco.pad-idade * 7
i3pc-pastaoco.std-semana = pastaoco.pad-idade
i3pc-pastaoco.id-pastand = i3pc-pastand.id-pastand
i3pc-pastaoco.pad-versao = i3pc-pastand.pad-versao.
end.
/*=== Mortalidade Acumulada ====*/
assign i3pc-pastaoco.pad-pcmorta = pastaoco.pad-pcmorta - vmor-acum
i3pc-pastaoco.per-mortalf-acu = pastaoco.pad-pcmorta
i3pc-pastaoco.ind-viabfe = pastaoco.pad-viabili / 100
i3pc-pastaoco.gra-avefem = pastaoco.pad-grconsu
i3pc-pastaoco.per-prodovos = pastaoco.pad-pcproduca
i3pc-pastaoco.ind-prodovos = pastaoco.pad-pcproduca / 100
i3pc-pastaoco.per-ovoinc = pastaoco.pad-pcaprov
i3pc-pastaoco.ind-eclosao = pastaoco.pad-pcaprov / 100
i3pc-pastaoco.per-eclosao = pastaoco.pad-pceclosao
i3pc-pastaoco.ind-ovoinc = pastaoco.pad-pceclosao / 100.
assign vmor-acum = pastaoco.pad-pcmorta.
end.
end.
end.
Criar os fechamentos de semanas já encerradas¶
Criar os fechamentos das semanas que já estão fechadas na implantação do produto.
def buffer bpahisfec for pahisfec.
def var vdata-base as date.
do vdata-base = 01/01/2025 to 06/30/2025:
if weekday(vdata-base) = 7 /* Colocar o ultimo dia da semana do cliente - o cadastro - 1 */
then do:
find last bpahisfec no-lock no-error.
create pahisfec.
assign pahisfec.seq-pahisfe = if avail bpahisfec
then bpahisfec.seq-pahisfe + 1
else 1
pahisfec.hfe-dtfec = today
pahisfec.hfe-dtini = vdata-base - 6
pahisfec.hfe-dtfim = vdata-base
pahisfec.hfe-status = yes
pahisfec.seq-pahismod = 2
pahisfec.usu-usuario = "admin"
pahisfec.hfe-hrfec = time.
end.
end.
Fixar o ID das restrições nos alojamentos¶
Colocar fixo o id das restrições para 01, ou para o padrão que está cadastrado na tabela gpprestricão, nos alojamentos que estão positivos.
Atualizar os abates da UIA¶
Rodar para cada último dia do mês que se deseja atualizar os abates da UIA.
for each i3pc-cenplanta where
i3pc-cenplanta.cen-codigo = 1 and
i3pc-cenplanta.sigla = "PLANTAS-ABATE" no-lock:
find last paplanta where
paplanta.pla-planta = i3pc-cenplanta.pla-planta-aba
no-lock no-error.
run lnconscfpeso.p(input paplanta.emp-empresa,
input paplanta.uni-unidade,
input 07/31/2024).
end.