Á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

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-painum-reporte-filhonum-ord-produc-painum-ord-produc-filho

Tipo

Numérico

NuméricoNuméricoNuméricoNumérico

Tamanho

9

9999

Valor Inicial

0

0000

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 paiNúmero reporte do apontamento da ordem filhaNúmero ordem produção paiNúmero ordem produção filha

Título

Reporte Integração

Reporte PaiReporte FilhoOrdem PaiOrdem 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 acabadoNúmero reporte filho que foi criada a ordem interna para troca de código(reaproveitamento)Número ordem produção paiNú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.