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 Avulso | Criação | - | - |
SF0103 - Manutenção Grupo Máquina - SFC | Alteraçã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. Reporte | Movimento | E/S | Quant. | ||
1313 | ACA | E | 100 | Produção | |
1313 | REF | S | 3 | Refugo Avulso | |
1313 | REF | S | 2 | Refugo Avulso | |
1313 | REF | E | 1 | 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
Bloco | Tag | Descrição | Tipo | Tamanho | Observação/Origem |
BusinessContentType | ProductionOrderNumber | Ordem de Produção | xs:string | 20 | obrigatório, ord-rep.nr-ord-produ (inteiro >>>,>>>,>>9) |
BusinessContentType | ItemCode | Produto Recusado | xs:string | 20 | NA |
BusinessContentType | WarehouseCode | Código do depósito | xs:string | 02 | NA |
BusinessContentType | AdressCode | Endereço | xs:string | 15 | NA |
BusinessContentType | NumberSeries | Número de Série | xs:string | 20 | NA |
BusinessContentType | Type | Tipo Perda | xs:string | 01 | NA |
BusinessContentType | WasteCode | Motivo de Perda | xs:string | 02 | 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 )
|
BusinessContentType | WasteDescription | Descrição da Perda | xs:string | 40 | NA |
BusinessContentType | LossQuantity | Quantidade de Perda | xs::decimal | 11,2 | obrigatório rep-prod.qt-refugo (decimal >>>,>>>,>>9.9999) |
BusinessContentType | CostCenterCode | Centro de Custo | xs:string | 09 | NA |
BusinessContentType | ItemCode | Produto Gerado | xs:string | 20 | NA |
BusinessContentType | WarehouseCodeTo | Depósito destino | xs:string | 02 | NA |
BusinessContentType | AdressCodeTo | Endereço Destino | xs:string | 15 | NA |
BusinessContentType | NumberSeriesTo | Nr. de Série Destino | xs:string | 20 | NA |
BusinessContentType | QuantityTo | Quantidade destino | xs::decimal | 11,2 | NA |
BusinessContentType | ActivityCode | Operação | xs:string | 10 | não usa PCP, obrigatório SFC rep-oper-ctrab.num-operac-sfc (inteiro >,>>9) |
BusinessContentType | ResourceCode | Máquina/Recurso | xs:string | 20 | não usa PCP, obrigatório SFC rep-oper-ctrab.cod-ctrab (caracter 16x) |
BusinessContentType | LossDate | Data da Perda | xs::date | NA | |
BusinessContentType | LotCode | Lote | xs:string | 10 | NA |
BusinessContentType | SubLotCode | SubLote | xs:string | 06 | NA |
BusinessContentType | LotDueDate | Data de Validade | xs::date | NA | |
BusinessContentType | IdReport | Nr. 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.
ListOfActivityOrders | TimeMOD | xs:decimal | 15,4 |
ListOfActivityOrders | TimeIndMES | xs:string | 01 |
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. |
---|