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 | CONTROLE DA PRODUÇÃO |
Segmento Executor | MANUFATURA | ||
Projeto1 | MANCORE1 | IRM1 | MANCORE1-2691 |
Requisito1 | MANCORE1-2705 | Subtarefa1 |
|
Chamado2 |
| ||
País | ( ) 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 - Reprocessamento time-out
2 - Campo de fator perda na reserva da OP
3 - Apontamento Reaproveitamento (Parametrização Apontamento de Ordem Interna com o objetivo de troca de código)
Definição da Regra de Negócio
RN001 - Quando for informado o campo "ScrapProductTo", na lista de refugos deve ser criada uma nova ordem de produção de Interna para este código, requisitando o código do produto da Ordem que refugou, e informando o depósito "WarehouseCodeTo", caso venha preenchido, do contrário utilizará o depósito do acabado da Ordem pai. A ordem pai no entanto não possuirá Refugo.
RN002 - A quantidade da nova ordem criada, será a mesma do campo "ScrapQuantity, e também igual para o item a requisitar.
RN003 - O campo "ScrapProduct" será ignorado na mensagem, já que para o Datasul não pode ser gerado refugo a partir de outro item que não seja o próprio item da Ordem. Este campo é usado apenas no Protheus.RN004 - A unidade de medida do item da Ordem deve ser o mesmo do item reaproveitado.
RN004 - Deve validar se existe nos parâmetros o código da linha de produção a ser utilizada para criar a Ordem Interna de troca de código. Caso não exista não deverá prosseguir na integração do Apontamento e enviar uma mensagem de erro.
RN005 - A ordem de troca de código deve ter o tipo de reporte por Ordem, para simplificar o apontamento de toda quantidade uma única vez.
RN006 - Caso o item informado em "ScrapProductTo" tenha controle por lote, o campo "LotCode" não tenha sido informado, será utilizado o como lote padrão a mesma regra da tela de apontamento (CP0311 - Estabelecimento + Nr. Ordem).
RN007 - Para estorno do apontamento principal, deve ser estornado primeiro o apontamento da ordem de troca de código.
RN008 - Quando a quantidade do apontamento principal for ZERO, e existir apenas "ScrapQuantity" com "ScrapProductTo", então será apenas criada a Ordem Interna para troca de código e apontada esta. Desta forma indica que já houve produção anteriormente.
RN009 - Itens refugados para trocar de código, não poderão ter controle por referência, pois o PCP-Factory não possui o conceito.
RN010 - A ordem interna de troca, não pode ser integrada com o PC-Factory, para isto, será sempre verificado no adapter ProductionOrder se o campo Reaproveitamento (CP0106) é o mesmo da ordem, se for não enviar mensagem.
RN011 - Para reprocessar um ID já processado com erro, deve ser informado "true" no key name Reprocess.
RN012 - Um ID já processado sem erro, não pode ser reprocessado, neste caso deve retornar a mensagem de já processado normalmente.
Rotina | Tipo de Operação | Opção de Menu | Regras de Negócio |
CP0106 – Parâmetros | Alteração | - | |
CPAPI301C - Geração do Reaproveitamento via Integração. | Criação |
1-Reprocessamento Time-out
Alterar a regra de reprocessamento de mensagens. Quando uma mensagem retornar como erro, deverá permitir o reprocesso. Hoje o sistema obriga o envio de um novo ID.
Para atender essa necessidade deverá ser enviado no XML a tag "Reprocess". Este processamento serve para todas as mensagens.
Exemplo:
<BusinessEvent>
<Entity>productionappointment</Entity>
<Event>upsert</Event>
<Identification>
<key name="IDPCFactory">9o93049u88557</key>
<key name="Reprocess">true</key>
</Identification>
</BusinessEvent>
Somente deverá verificar essa tag quando a mensagem relacionada ao ID possuir um erro.
Deve ser procurada na tabela <control-proces-integr> usando o campo <cod-id-mes>, e eliminado e neste caso não retornar a mensagem de já processada e sim, tentar processar novamente.
Função que controla o processamento de mensagens:
fch/fchman/MesWebService
3 - Apontamento Reaproveitamento
Subproduto no Refugo e Reaproveitamento
SubProduto
No produto Datasul não existe o conceito de subproduto de algo refugado, somente o de co-produto.
Conceito de coproduto (tem no Datasul)
Ao produzir papel(ACA), também é produzido retalho(ACA de co-produto). Para esta situação, a integração já está preparada, basta receber o consumo em quantidade negativa.
Conceito de subproduto (não tem no Datasul)
Ao produzir papel(ACA), caso seja refugado algo, o produto vira outro código como retalho(REF). Para poder trocar o código, será utilizado o conceito padrão do Datasul de reaproveitamento, onde o refugo de papel será consumido noutra ordem de produção. Cria-se uma OP de reaproveitamento para o retalho, consumindo o papel.
No entanto para esta integração utilizaremos não ordem de reaproveitamento nem de retrabalho, e sim uma Ordem Interna. A ordem interna valoriza no próprio mês, diferentemente das de reaproveitamento e retrabalho.
A mensagem ProductionAppointment tem novos campos para considerar o subproduto no refugo(ProductionAppointment_2_001).
Na ListOfWasteAppointments já existe o motivo do refugo, e a quantidade refugada. Pode existir vários refugos, porém o somatório da quantidade de todos os refugos não pode ser maior que a quantidade refugada da ordem ScrapQuantity.
Os campos abaixo serão usados para compor a mensagem ProductionAppointment:
ListOfWasteAppointments WasteAppointment ScrapProduct xs:string 15 - este campo é ignorado na integração com Datasul
ListOfWasteAppointments WasteAppointment WarehouseCode xs:string 10 - este campo é ignorado na integração com Datasul
ListOfWasteAppointments WasteAppointment ScrapProductTo xs:string 15 - este campo indica que deve ser criada uma OP de reaproveitamento e que a quantidade refugada (ScrapQuantity) não gerará movimento de refugo(REF) no Datasul.
ListOfWasteAppointments WasteAppointment WarehouseCodeTo xs:string 10 - caso preenchido, senão é utilizado o depósito do acabado no apontamento
ListOfWasteAppointments WasteAppointment LotCode - caso seja preenchido, e o item informado em ScrapProductTo use o conceito de lote, será usado para o apontamento da produção. Caso este lote seja novo, então, o campo LotDueDate será também aproveitado.
Para criar e apontar a nova ordem de interna serão utilizados os procedimentos:
- Gerar o nr. da nova OP -
{cpp/cpapi301.i20} /* gera número próxima op manual*/
f-gera-numero-op-manual()
- Preencher as temp-tables tt-res, tt-ord
- Utilizar a linha de produção Reaproveitamento, informada na parametrização CP0106B
- Criar a Ordem de Produção Interna e a reserva CPAPI002
- Realizar o Apontamento da Produção da OP CPAPI001 e inserir o nr Reporte Principal no ord-rep-integr.num-reporte e ord-rep-integr.num-reporte-pai e do apontamento de troca de código no ord-rep-integr.num-reporte-filho.
- Realizar a Requisição da reserva Reaproveitada CPAPI012
Para realizar estorno do apontamento com reaproveitamento:
- Pesquisar na rep-prod-integr selecionada, se o campo rep-prod-integr.num-reporte
- Para cada reporte de aproveitamento encontrado, estornar o mesmo e depois alterar o estado da ordem interna de troca para finalizada
- Por último realizar o estorno do apontamento principal.
******************
CPAPI002(tt-res) ...........
tt-res.nr-ord-prod = /* Nr gerado da OP manual */
tt-res.C-arquivo1
tt-res.It-codigo = /* XML Código do item refugado na OP*/
tt-res.Item-pai = /* XML Código do novo item */
Cod-roteiro
Op-codigo
Quant-orig = /* XML Quantidade Refugada */
Un = b-item.un
Tipo-sobra = 1
Mês-reserva = /* Data do Reporte original */
Dia-reserva = /* Data do Reporte original */
Ano-reserva = /* Data do Reporte original */
Lote-serie
Localizacao
Cod-depos
Estado
CPAPI002 (tt-ord)
tt-ord.Nr-ord-prod = /* Nr gerado da OP manual */
tt-ord.C-arquivo1
tt-ord.It-codigo = /* XML Código do novo item */
tt-ord.Qt-ordem = /* XML Quantidade Refugada */
tt-ord.Un = b-item.un
tt-ord.Tipo = 1 /* Interna */
tt-ord.Estado
tt-ord.Nr-linha = /* Parametrizado CP0106B */
Mês-inicio = /* Data do Reporte original */
Dia-inicio = /* Data do Reporte original */
Ano-inicio = /* Data do Reporte original */
Mês-termino = /* Data do Reporte original */
Dia-termino = /* Data do Reporte original */
Ano-termino = /* Data do Reporte original */
Mês-emissao = /* Data do Reporte original */
Dia-emissao = /* Data do Reporte original */
Ano-emissao = /* Data do Reporte original */
Cd-planejado
Rep-prod = 1 /* Por Ordem */
Cod-estabel = /* Estabelecimento da Ordem Pai */
Cod-depos = /* XML */
Nome-abrev
Cod-gr-cli
Nr-pedido
Nr-sequencia
Cod-refer = "" /* Se o item for controlado por referência, apresentar erro e não prosseguir */
Lote-serie = /* XML */.
Emite-requis
Emite-ordem
Prioridade
Sit-aloc
Narrativa
Se existe <lin-prod> E <lin-prod.ct-ordem> <> ""
Então
tt-ord.ct-codigo = lin-prod.ct-ordem
tt-ord.sc-codigo = lin-prod.sc-ordem.
Senão
Pesquisar primeiro registro estab-mfg
Quando estab-mfg.cod-estabel = /* Estabelecimento da Ordem Pai */
Se existe estab-mfg E estab-mfg.conta-ordem <> ?
Então
tt-ord.ct-codigo = estab-mfg.ct-ordem
tt-ord.sc-codigo = estab-mfg.sc-ordem.
Senão
tt-ord.ct-codigo = param-cp.ct-ordem
tt-ord.sc-codigo = param-cp.sc-ordem.
Se param-cp.planej-os = 2
Então
tt-ord.cd-planejado = lin-prod.cd-planejado.
Senão
tt-ord.cd-planejado = f-item-uni-estab (b-ITEM.it-codigo,
/* Estabelecimento da Ordem Pai */,
"cd-planejado").
Fim-se.
Fim-se.
Fim-se.
cpp/cpapi002.p(input table tt-ord, input table tt-res, input table tt-ope, input table tt-lixo, input-output table tt-erros).
******************
<ListOfWasteAppointments>
<WasteAppointment>
<ScrapProduct>ScrapProduct</ScrapProduct>
<WarehouseCode>WarehouseCode</WarehouseCode>
<AddressCode>AddressCode</AddressCode>
<NumberSeries>NumberSeries</NumberSeries>
<ScrapProductTo>ScrapProductTo</ScrapProductTo>
<WarehouseCodeTo>WarehouseCodeTo</WarehouseCodeTo>
<AddressCodeTo>AddressCodeTo</AddressCodeTo>
<NumberSeriesTo>NumberSeriesTo</NumberSeriesTo>
<ReportSequence>ReportSequence</ReportSequence>
<WasteCode>WasteCode</WasteCode>
<WasteDescription>WasteDescription</WasteDescription>
<ScrapQuantity>0.0</ScrapQuantity>
<ReworkQuantity>0.0</ReworkQuantity>
<LotCode>LotCode</LotCode>
<SubLotCode>SubLotCode</SubLotCode>
<LotDueDate>2001-01-01</LotDueDate>
<CostCenterCode>CostCenterCode</CostCenterCode>
</WasteAppointment>
</ListOfWasteAppointments>
Opcional
Protótipo de Tela
Um novo filtro "Reaproveitamento" será criado, para informar uma linha de produção de serviço. Somente pode existir um registro desta informação e ela não pode ser "*"(asterisco).
Protótipo 01
Fluxo do Processo
Dicionário de Dados
Arquivo: ord-rep-integr
Índice | Chave |
id-ord-rep-integr | num-reporte + num-reporte-pai + num-reporte-filho |
ord-rep-pai | num-ord-produc-pai + num-reporte-pai
|
ord-rep-filho | num-ord-produc-filho + num-reporte-filho |
Campo | num-reporte | num-reporte-pai | num-reporte-filho | num-ord-produc-pai | num-ord-produc-filho |
Tipo | Numérico | Numérico | Numérico | Numérico | Numérico |
Tamanho | 9 | 9 | 9 | 9 | 9 |
Valor Inicial | 0 | 0 | 0 | 0 | 0 |
Mandatório | Sim (x) Não ( ) | Sim ( ) Não ( x ) | Sim (x) Não ( ) | Sim ( ) Não ( x ) | Sim ( x ) Não ( ) |
Descrição | Número reporte que identifica a integração | Número reporte do apontamento da ordem pai | Número reporte do apontamento da ordem filha | Número ordem produção pai | Número ordem produção filha |
Título | Reporte Integração | Reporte Pai | Reporte Filho | Ordem Pai | Ordem Filha |
Picture | >>>>>>>>9 | >>>>>>>>9 | >>>>>>>>9 | >>>,>>>,>>9 | >>>,>>>,>>9 |
Help de Campo | Número reporte que identifica a integração. Quando o reporte pai existir, este mesmo valor será guardado como reporte integração, do contrário, será usado o reporte filho. | Número reporte pai que gerou acabado | Número reporte filho que foi criada a ordem interna para troca de código(reaproveitamento) | Número ordem produção pai | Número ordem produção filha |
Grupo de Perguntas
NA
Consulta Padrão
NA
Estrutura de Menu
NA
Este documento é material de especificação dos requisitos de inovação, trata-se de conteúdo extremamente técnico. |
---|