Pular para conteúdo

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.

 for each prodaves where aba-restrito > 0:
      assign id-restricao = 1.
  end.

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.