Árvore de páginas

 Este documento é material de especificação dos requisitos de inovação, trata-se de conteúdo extremamente técnico.                                                             

  

Informações Gerais

 

Especificação

Produto

Datasul

Módulo

Produção

Segmento Executor

Manufatura

Projeto1

MANCORE1

IRM1

MANCORE1-2161

Requisito1

MANCORE1-2187

Subtarefa1

 

Chamado2

 

País

( x ) Brasil  (  ) Argentina  (  ) Mexico  (  ) Chile  (  ) Paraguai  (  ) Equador

(  ) USA  (  ) Colombia   (  ) Outro _____________.

Outros

<Caso necessário informe outras referências que sejam pertinentes a esta especificação. Exemplo: links de outros documentos ou subtarefas relacionadas>.

   Legenda: 1 – Inovação 2 – Manutenção (Os demais campos devem ser preenchidos para ambos os processos). 

Objetivo

 

1 - Durante o processo de estorno, utilização de lista de reportes, e iniciar o estorno apenas depois de validar se há saldo suficiente. Desta forma minimiza o problema de estornar apenas alguns reportes.

2 - Refugo no caso de recusa, fazer apenas o lançamento de refugo(saída REF) e atualização do reporte.

2.1 - Estorno do refugo, fazer o lançamento de refugo (entrada REF) e atualização do reporte.

3 - Enviar a informação do processador Manual ou Não partir no SF0103(Grupo Máquina), quando o SFC estiver informado. Será enviado na mensagem 1-Hora Máquina, 2-Hora Homem, 3-A escolha PPI

4 - Processo de co-produto, pela quantidade real.

 

Definição da Regra de Negócio

1- Lista de Estornos 

 

RN01 - Quando vier uma lista de estornos na mensagem, todos os números de reporte devem pertencer a mesma ordem.

RN02 - Validar que o saldo do acabado seja suficiente para a quantidade total de todos os estornos. Observar se o componente permite saldo negativo, pois neste caso não precisará validar a quantidade.

RN03 - Quando for enviada na mesma lista de estorno, estorno de produção e de recusa, serão utilizadas apenas os ID do estorno do reporte de produção.

 

Rotina

Tipo de Operação

Opção de Menu

Regras de Negócio

CPAPI001 - Reporte de Produção (recebimento)

Alteração

-

-

 

Mensagem: ProductionAppointment_2_000

Adicionados na ListOfReversalAppointments os campos:
ReversalType – 1=Produção;2=Recusa;
ReversalQuantity – Quantidade do estorno

 

Para estornar Apontamento de Produção:

Independentemente se existir na lista de estorno além do estorno de produção um estorno de recusa, somente será estornado o apontamento da produção chamando CPAPI001.

Quando existir na lista de estorno apenas estorno de recusa, terá que ser chamada CPAPI026 indicando que é estorno de recusa.

Adapter de ProductionAppointment, ao receber a mensagem com o estorno, montar uma tabela temporária com a mesma chave do <saldo-estoq> (cod-depos, cod-estabel, cod-localiz, lote, it-codigo, cod-refer) e também a quantidade a ser estornada. 

Antes da chamada da CPAPI001 utilizar uma única transação para todos os registros a serem estornados, assim garantirá que mesmo após a validação do saldo, todos os estornos sejam possíveis devido a alguma regra do estoque(CEAPI001).

A quantidade a ser estornada é a mesma da reportada. Para isto posicionar na tabela de reporte (quando apontamento for do PCP rep-prod, quando for do SFC rep-oper-ctrab):

Pesquisar <rep-prod> 

           quando <rep-prod.nr-reporte> = ProductionAppointment.ReversedReport :

            Se <rep-prod.qt-estorno> <> 0 Então retornar erro e não prosseguir.

            Pesquisar TT

                       quando TT.it-codigo = rep-prod.it-codigo E TT.cod-depos = rep-prod.cod-depos E TT.lote-serie = rep-prod.lote-serie  E TT.cod-refer = rep-prod.cod-refer E TT.cod-localiz = rep-prod.cod-localiz E TT.cod-estabel = rep-prod.cod-estabel.

             Caso não exista TT então cria TT.

              Senão:  TT.quantidade = TT.quantidade + rep-prod.qt-reporte.

Fim-pesquisa.

Pesquisar <saldo-estoq>

           quando saldo-estoq.it-codigo = TT.it-codigo E TT.cod-depos = saldo-estoq.cod-depos E TT.lote-serie = saldo-estoq.lote-serie  E TT.cod-refer = saldo-estoq.cod-refer E TT.cod-localiz = saldo-estoq.cod-localiz E TT.cod-estabel = saldo-estoq.cod-estabel.

             Se <saldo-estoq.qtidade-atu> < TT.quantidade então retornar erro e não prosseguir.

Fim-pesquisa.

 

 2 - Refugo Avulso

RN01 - Na mensagem pode ou não vir informado o nr reporte para inclusão do Refugo Avulso. Caso não esteja informado, deverá refugar LIFO do último reporte realizado para a Ordem de Produção.

RN02 - Na mensagem, para saber se é um Refugo Avulso, é necessário que a quantidade de refugo esteja informada e quantidade produzida zerada.

RN03 - A API de refugo avulso, não deve tratar refugo por operação. Somente será usada quando a ordem não controle estoque de refugo.

RN04 - Quando numa mensagem, for informado um refugo avulso de uma ordem que controle estoque de refugo e o SFC estiver habilitado, deve retornar erro de que não é possível utilizar refugo avulso para esta Ordem de Produção.

RN05 - Na API de Refugo Avulso, caso não informe a conta e centro de custo contábeis, deve buscar do parâmetro de produção.

RN06 - Quando o reporte a inserir Refugo Avulso, não possuir refugo ainda, será recebido pela API a Conta e o Centro de Custo. Quando já tiver refugo, não poderá mexer na conta e centro de custo que já estão no apontamento(reporte).

RN07 - Para realizar o Refugo Avulso, as informações de nr. da OP, data de transação, item, estabelecimento, referência, depósito, localização, lote, serão os mesmos do acabado gerado pelo nr. reporte, quando este for informado. Caso somente tenha o nr da Ordem de Produção, será buscado LIFO o nr reporte.

RN08 - Atualizar o reporte de produção, quando for feito o Refugo Avulso, para que a quantidade refugada e aprovada, sejam corrigidas.

RN09 - Quando o Refugo Avulso for feito pelo SFC, deve ser informado também o motivo de refugo na mensagem. 

RN10 - Quando informado o nr. reporte, e a quantidade informada for maior que a quantidade Produzida(PCP)/ Aprovada(SFC) no reporte selecionado, deverá apresentar mensagem de erro.

RN11 - Quando não informado o nr. reporte, e a quantidade informada for maior que a quantidade Produzida(PCP)/ Aprovada(SFC), fará LIFO em todos os reportes da Ordem, até consumir totalmente a quantidade refugada. Caso ainda seja insuficiente, deverá retornar mensagem de erro.

RN12 - Apenas será possível utilização do Refugo Avulso, quando o tratamento de refugo do item for "Perda Total".

RN13 - Será utilizada a mensagem de Apontamento de Produção para Estorno do Refugo(Recusa). Quando for informado na mesma lista de estorno(ListOfReversalAppointments) o ReversalType  de produção (1=Produção) e de recusa (2=Recusa), simplesmente será feito o Estorno da Produção, por intermédio do ID, que automaticamente as Recusas serão desfeitas. Quando for informado apenas ReversalType = 2(recusa) então será usado o campo ReversalQuantity, para movimentar refugo(REF de Entrada) para esta quantidade.

 

 

Rotina

Tipo de Operação

Opção de Menu

Regras de Negócio

CPAPI026 – API de Refugo

Criação

-

-

CPAPI301B - API Integração Ordem

Alteração

-

CPAPI001 - Reporte de Produção (recebimento)

Alteração

-

-

CP0340 - Apontamento Refugo AvulsoCriação-
SF0103 - Manutenção Grupo Máquina - SFCAlteração--

 

Mensagem usada quando precisar estornar recusa: ProductionAppointment_2_000

Adicionados na ListOfReversalAppointments os campos:
ReversalType – 1=Produção;2=Recusa;
ReversalQuantity – Quantidade do estorno


 CPAPI026 - será utilizada para movimentar o refugo no estoque e atualizar o PCP e o SFC.

A API poderá ser utilizada tanto para criar um Refugo, quanto para retirá-lo, para isto deverá identificar na chamada da mesma o motivo. Para criar o refugo serão criados movimentos REF Saída, e para estornar serão usados REF Entrada. 

Exemplo:

Nr. ReporteMovimentoE/SQuant.  
1313ACA100 Produção
1313REFS3 Refugo Avulso
1313REFS2 Refugo Avulso
1313REF1 Estorno Refugo Avulso


Utilizar as mesmas temp-tables tt-rep-prod e tt-refugo da CPAPI001.i

Verificar se poderá ser feito refugo avulso:

Se <param-global.modulo-ch> E <ord-prod.log-control-estoq-refugo> então: retornar erro na api imediatamente. "Não poderá ser utilizado refugo avulso, para esta Ordem de Produção, pois é controlado estoque de refugo." 

Se <item.ind-refugo> <> "Perda Total" então: retornar erro na api imediatamente. "Não poderá ser utilizado refugo avulso, pois o tratamento de refugo do item não é Perda Total."

A partir da mensagem criar duas temp-tables:

tt-rep-prod - será criada para gerar o movimento em si, e também acerto do reporte gerado. Para criá-la, utiliza-se o nr-reporte ou nr-ord-produ.

Selecionar todos <ord-rep> quando (<ord-rep.nr-reporte> = campo reporte mensagem 

                                                  ou <ord-rep.nr-ord-produ> = campo ordem produção mensagem)                                               

                ordenado descendente <ord-rep.nr-reporte>,

                um <rep-prod> quando <rep-prod.nr-reporte> = <ord-rep.nr-reporte>:

                Se desmarcado "Mostrar  Estornados"

                então:

                           Observar <ord-rep.qt-estorno> = 0 E se foi feito reporte no SFC observar rep-oper-ctrab.log-reporte-estordo = no.

               senão:

                         copiar <rep-prod> para <tt-rep-prod>.

                        <tt-rep-prod.qt-refugo> = campo mensagem

                       <tt-rep-prod.qt-reporte> = 0  /* Não se produz nada, apenas refuga */

                       <tt-rep-prod.ct-refugo> = se informado campo mensagem senão <param-cp.ct-refugo>

                     <tt-rep-prod.sc-refugo> = se informado campo mensagem senão <param-cp.sc-refugo>

               Fim-se

Fim-seleção


Campos que precisam ser alterados nas tabelas apenas na Produção. 

Somar a quantidade refugada aos campos:

ord-prod.qt-refugada, ord-rep.qt-refugo, rep-prod.qt-refugo, rep-oper.qt-refugo, oper-ord.qt-refugada

 

trecho cpapi001.i18 para atualização de ord-prod
Se última operação E (tt-rep-prod.qt-refugo > 0 or tt-rep-prod.qt-apr-cond > 0)

Então :

            executa pi-atualiza-ref-ordem.       

Fim-se

Se tt-rep-prod.tipo <> 4 OU última operação

Então:        

         Se tt-rep-prod.tipo = 1 OU última operação

          Então:

                ord-prod.qt-refugada  = ord-prod.qt-refugada +   tt-rep-prod.qt-refugo

                 ord-prod.qt-apr-cond  = ord-prod.qt-apr-cond +  tt-rep-prod.qt-apr-cond

          Fim-se

Fim-se


Campos que precisam ser alterados nas tabelas apenas no SFC.

Somar a quantidade refugada aos campos: 

ord-prod.qt-refugada, split-opera.qtd-operac-refgda, op-sfc.qtd-refgda-sfc, rep-oper-ctrab.qtd-operac-refgda

Diminuir a quantidade refugada aos campos: 

split-opera.qtd-operac-aprov, op-sfc.qtd-aprov-sfc, rep-oper-ctrab.qtd-operac-aprov


Tabelas criadas a partir do refugo:

PCP - ref-ordem

SFC - ref-ordem, rep-refugo-mat, rep-refugo-oper

OBS.: para atualizar a ref-ordem utilizar a função (cpapi001.i5 pi-atualiza-ref-ordem)

 

trecho cpapi001.i13 para geração dos movimentos de estoque do Refugo

&IF DEFINED (bf_man_sfc_ref_oper) &THEN
/* No tratamento do Refugo por Operação, somente é gerado movimento de REF *
* quando o chão de fábrica não estiver implantado, ou caso a ordem não controle *
* estoque de refugo. Nos outros casos, ser gerado o movimento de ROP(38), *
* através da API SFAPI012.P */

if not param-global.modulo-ch or  ( param-global.modulo-ch and not ord-prod.log-control-estoq-refugo) then do:
&ENDIF

for each tt-movto:
delete tt-movto.
end.

create tt-movto.
assign tt-movto.cod-versao-integracao = 001
tt-movto.cod-prog-orig = "CPAPI001"
tt-movto.usuario = c-seg-usuario
tt-movto.it-codigo = tt-rep-prod.it-codigo
tt-movto.cod-refer = tt-rep-prod.cod-refer
tt-movto.cod-estabel = ord-prod.cod-estabel
tt-movto.dt-trans = tt-rep-prod.data
tt-movto.dt-nf-saida = tt-rep-prod.data
tt-movto.cod-depos = tt-rep-prod.cod-depos
tt-movto.cod-localiz = tt-rep-prod.cod-localiz
tt-movto.lote = tt-rep-prod.lote-serie
tt-movto.dt-vali-lote = tt-rep-prod.dt-vali-lote
tt-movto.tipo-trans = 2 (saída quando for criar, 1- entrada quando for estornar)
*tt-movto.nr-reporte = tt-rep-prod.nr-reporte
*tt-movto.nr-ord-produ = ord-prod.nr-ord-produ
*tt-movto.ct-codigo = tt-rep-prod.ct-refugo
*tt-movto.sc-codigo = tt-rep-prod.sc-refugo
tt-movto.esp-docto = 25 /* REF */
tt-movto.op-seq = if avail oper-ord and ord-prod.rep-prod <> 1 and ord-prod.rep-prod <> 4 then
oper-ord.sequencia 
else 0 
*tt-movto.quantidade = tt-rep-prod.qt-refugo
tt-movto.un = tt-rep-prod.un
tt-movto.nro-docto = tt-rep-prod.nro-docto
tt-movto.serie-docto = tt-rep-prod.serie-docto
tt-movto.tipo-valor = 2 /* Valorizado */
tt-movto.referencia = tt-rep-prod.cod-refer
tt-movto.num-sequen = i-num-sequen
tt-movto.valor-mat-p = 0
tt-movto.valor-ggf-p = 0
tt-movto.valor-mob-p = 0
tt-movto.valor-mat-o = 0
tt-movto.valor-ggf-o = 0
tt-movto.valor-mob-o = 0
&IF DEFINED (bf_man_per_ppm) &THEN
       tt-movto.per-ppm = if not l-per-ppm then 0
else de-per-ppm
&ENDIF 
.

Mensagem usada para criar uma recusa: REFUSAL_1_00

BlocoTagDescriçãoTipoTamanhoObservação/Origem
BusinessContentTypeProductionOrderNumberOrdem de Produçãoxs:string20obrigatório, ord-rep.nr-ord-produ (inteiro >>>,>>>,>>9)
BusinessContentTypeItemCodeProduto Recusadoxs:string20NA
BusinessContentTypeWarehouseCodeCódigo do depósitoxs:string02NA
BusinessContentTypeAdressCodeEndereçoxs:string15NA
BusinessContentTypeNumberSeriesNúmero de Sériexs:string20NA
BusinessContentTypeTypeTipo Perdaxs:string01NA
BusinessContentType
WasteCode
Motivo de Perdaxs:string02

obrigatório (PCP como código rejeição - ref-ordem.codigo-rejei inteiro >>9, SFC como motivo de Perda - rep-refugo-oper.cod-motiv-refugo caracter 8x )

 

BusinessContentTypeWasteDescriptionDescrição da Perdaxs:string40NA
BusinessContentTypeLossQuantityQuantidade de Perdaxs::decimal11,2

obrigatório

rep-prod.qt-refugo (decimal >>>,>>>,>>9.9999)

BusinessContentTypeCostCenterCodeCentro de Custoxs:string09NA
BusinessContentTypeItemCodeProduto Geradoxs:string20NA
BusinessContentTypeWarehouseCodeToDepósito destinoxs:string02NA
BusinessContentTypeAdressCodeToEndereço Destinoxs:string15NA
BusinessContentTypeNumberSeriesToNr. de Série Destinoxs:string20NA
BusinessContentTypeQuantityToQuantidade destinoxs::decimal11,2NA
BusinessContentTypeActivityCodeOperaçãoxs:string10não usa PCP, obrigatório SFC rep-oper-ctrab.num-operac-sfc (inteiro >,>>9)
BusinessContentTypeResourceCodeMáquina/Recursoxs:string20não usa PCP, obrigatório SFC rep-oper-ctrab.cod-ctrab (caracter 16x)
BusinessContentTypeLossDateData da Perdaxs::date NA
BusinessContentTypeLotCodeLotexs:string10NA
BusinessContentTypeSubLotCodeSubLotexs:string06NA
BusinessContentTypeLotDueDateData de Validadexs::date NA
BusinessContentTypeIdReportNr. Reporte  opc, ord-rep.nr-reporte (inteiro >>>>>>>>9)

 

3- Tipo processador Manual

Alterar mensagem XSD ProductionOrder_2_003 para informar novo campo Indicador de Tempo (TimeIndMES), a ser observado (grup-maquina.ind-tip-ctrab).

Alterar o programa SF0103, para também gerar a mensagem WorkCenter.

 

ListOfActivityOrdersTimeMODxs:decimal 15,4
ListOfActivityOrdersTimeIndMESxs:string01

 

Observação:

  • Atualmente o campo TimeResource possui o tempo homem, e a partir de agora este tempo também será atualizado no TimeMOD. Assim os dois campos terão a mesma informação.
  • O indicador de tempo no MES TimeIndMES poderá ter os seguintes valores: 1 = Tempo Máquina; 2 = Tempo mão-de-obra; 3 = Escolha pelo MES.  No Datasul, quando trabalha apenas com PCP o campo deve ser gerado como '3'

 

Protótipo de Tela

 CP0340 - Apontamento de Refugo Avulso


Os campos de data, nr. ordem, nr. reporte e item, serão utilizados para seleção dos apontamentos já realizados.

O filtro de "Mostrar Estornados", permitirá a visualização, porém não possibilitará que seja inserido refugo no apontamento.

Para melhorar o índice de busca de registros fazer três pesquisas distintas:

Se informado o nr-reporte

Então

       Usar índice da <ord-rep>(codigo)

Senão Se  informado o nr-ordem

      Usar índice da <ord-rep> (ordem)

Senão

      Usar índice da <rep-prod> (item-dat)

Fim-se

Um apontamento que já possua refugo, pode ser apenas acrescentado mais refugo, e não serão habilitados os campos de Conta e Centro de Custo Refugo, mas apenas apresentados. Este novo valor do refugo será somado aos campos de refugo e gerado movimento de estoque novo, conforme os mesmos dados do apontamento selecionado.

Quando for o primeiro refugo do apontamento, então irá sugerir a Conta e Centro de Custo Refugo do param-cp.

Não permitir refugar mais do que a quantidade reportada.

Quando o apontamento for de Chão de Fábrica (SFC), será necessário informar o motivo de refugo. Considerar que no SFC, o motivo pode ser de quantidade retrabalhada também.

As quantidades retrabalhadas não interferem na quantidade aprovada, nem geram movimento, mas devem ser registradas no reporte o campo respectivo.



 

Fluxo do Processo

 

Dicionário de Dados

 NA

 

Estrutura de Menu

 Procedimentos

 

Procedimento

CP0340

Descrição

Apontamento Refugo Avulso

Módulo

Controle de Produção 

Programa base

CP0340 

Nome Menu

Apontamento Refugo Avulso

Interface

GUI/WEB/ChUI/Flex

Registro padrão

Sim

Visualiza Menu

Sim

Release de Liberação

12.1.15 

 

 

 

Programas

 

Programa

CP0340

Descrição

Apontamento Refugo Avulso

Nome Externo

CP0340

Nome Menu/Programa

Apontamento Refugo Avulso

Nome Verbalizado[1]

Apontamento Refugo Avulso

Procedimento

CP0340 

Template

(Verificar lista de opções no man01211)

Tipo[2]

Tarefas

Interface

GUI/WEB/ChUI/Flex

Categoria[3]

 

Executa via RPC

Não

Registro padrão

Sim

Outro Produto

Não

Visualiza Menu

Sim

Query on-line

Sim/Não

Log Exec.

Sim/Não

Rotina (EMS)

 

Sub-Rotina (EMS)

 

Localização dentro da Sub Rotina (EMS)

 

Compact[4]

Sim/Não

Home[5]

Sim/Não

Posição do Portlet[6]

0 – Top Left

1 – Top Right

2 – Bottom Left

3 – Bottom Right

Informar os papeis com os quais o programa deve ser vinculado

 

 

Cadastro de Papéis

<O cadastro de papéis é obrigatório para os projetos de desenvolvimento FLEX a partir do Datasul 10>.

<Lembrete: o nome dos papeis em inglês descrito neste ponto do documento, devem ser homologados pela equipe de tradução>.

 

Código Papel

(máx 3 posições)

Descrição em Português*

 

Descrição em Inglês*

 


[1] Nome Verbalizado é obrigatório para desenvolvimentos no Datasul 10 em diante.

[2] Tipo é obrigatório para desenvolvimento no Datasul 10 em diante

[3] Categorias são obrigatórias para os programas FLEX.

[4] Obrigatório quando o projeto for FLEX

[5] Obrigatório quando o projeto for FLEX

[6] Obrigatório quando o projeto for FLEX

 Este documento é material de especificação dos requisitos de inovação, trata-se de conteúdo extremamente técnico.