Árvore de páginas

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

  

(Obrigatório)

Informações Gerais

 

Especificação

Produto

Protheus

Módulo SIGAPCP

 

Segmento Executor

 

Projeto1

M_MAN_PCP001

IRM1 PCREQ-367

 

Requisito1

PCREQ-6133

Subtarefa1

 

Chamado2

 

Release de Entrega Planejada

12.1.10

Réplica 11.80.14

 

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). 

(Obrigatório)

Objetivo


Criar funções para receber  os apontamentos de produção realizados no PC-Factory. Será desenvolvido o WebService para tratar a mensagem enviada pelo PC-Factory e o Adapter para processar as validações do apontamento.

 

(Obrigatório)

Definição da Regra de Negócio


Desenvolver rotinas para realizar o processamento dos apontamentos de produção realizados pelo PC-Factory no Protheus.  Serão desenvolvidos os seguintes requisitos:

a) - WebService

b) - Reporte de produção - Quantidade - Tempo  - Estorno

c) - Reporte de parada de produção


Quando o PC Factory for o produto gerador da informação no caso do reporte de produção o fluxo da integração será o seguinte:

a. Operador efetua reporte normalmente conforme sua operação no PC-Facotry.

b. Em um processo batch ou disparado paralelamente no sistema, há a montagem do XML conforme XML Schema de Mensagem Única TOTVS e o envio desse XML para o ERP TOTVS, que validará o XML contra o XSD e encaminhará ao respectivo adapter de negócio para processamento.

c. Em caso de erros, esse reporte ficará com um status de pendente para envio dentro do software MES e o usuário poderá tomar ações no próprio PC Factory (o ERP TOTVS não manterá rastreabilidade das mensagens recebidas).


 1. Mensagem

A mensagem será gerada pelo PC-Factory, e  possui cabeçalho padrão TOTVSMessage:

Abaixo modelo de como será a mensagem para o cabeçalho:

 

<?xml version="1.0" encoding="UTF-8" ?> 

<TOTVSMessage xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="xmlschema/general/events/ProductionAppointment_1_001.xsd"> 

    <MessageInformation version="1.001"> 

        <UUID>d97aeb6f-1440-8c81-fc13-ec8cf87b82ad</UUID> 

        <Type>BusinessMessage</Type> 

        <Transaction>ProductionAppointment</Transaction> 

        <StandardVersion>1.0</StandardVersion> 

        <SourceApplication>dts11cordas8480</SourceApplication> 

        <CompanyId>10</CompanyId> 

        <BranchId>01</BranchId> 

         <UserId>xxx</UserId> 

        <Product name="Datasul" version="11.5.X"/> 

        <GeneratedOn>2015-07-10T16:25:21.971-03:00</GeneratedOn> 

        <ContextName>PROTHEUS</ContextName> 

        <DeliveryType>Sync</DeliveryType> 

    </MessageInformation> 

    <BusinessMessage> 

        <BusinessEvent> 

           ......................

        </BusinessEvent>

            ....................

            ....................          

    <\BusinessMessage>

 

   O que espera-se:

  •    TOTVSMessage xmlns:xsi Indica o xsd para gerarção do XML. O nome da mensagem deverá ser: ProductionAppointment_1_001 quando apontamento ou StopReport_1_000 quando parada
  •    MessageInformation version Indica a versão da mensagem. A versão deverá ser “1.001” quando apontamento ou 1.000 quando parada
  •    UUID : Sequencial usado pelo EAI. Gerar fixo “1’. Não será validado pelo Protheus
  •   Type: Tipo da mensagem. Gerar fixo “BusinessMessage”
  •    Transaction: Indica o que está sendo enviado. A transação deverá ser:“ProductionAppointment” quando apontamento ou "StopReport" quando parada
  •    StandardVersion: Versão. Deverá ser  “1.001” quando apontamento ou "1.000" quando parada
  •    SourceApplication: Aplicação que está executando. Não será validado pelo Protheus
  •    CompanyId: Código da empresa. Deverá retornar a empresa em que será processado o apontamento
  •    BranchId:  Código da filial. Deverá retornar a filial em que será processado o apontamento
  •    UserId: Usuário. Não será validado pelo Protheus
  •    Product: Name. Nome do produto. O Nome deverá ser PPI
  •    GenerateOn = Data e hora da geração da mensagem. Não será validado pelo Protheus
  •    ContextName = Sistema que gerou. Não será validado pelo Protheus
  •    DeliveryType:Tipo de envio da mensagem. Gerar fixo “Sync”. Tem que ser Sync, pois faremos o retorno.

 

Dentro do BusinessMessage existe o bloco BusinessEvent com as seguintes tags:

 

<BusinessEvent>
    <Entity>Item</Entity>
    <Event>upsert</Event>
</BusinessEvent>

 

Onde:

  • Entity: Entidade . Gerar fixo “ProductionAppointment” quando apontamento ou "StopReport"quando parada
  • Event: Inclusão/Alteração ou exclusão. Pode ser ‘delete’ ou ‘upsert’. No caso do apontamento deverá ser upsert.

Dentro do BusinessMessage existe o bloco BusinessContentType, que contém os dados do apontamento. 

A mensagem possui vários tags, porém serão descritas somente as tags usadas na integração com o PCFactory:

 

  • Mensagem de apontamento quantidade, tempo e estorno
BlocoTagDescriçãoObservação
BusinessContentTypeMachineCodeMáquinaSH6.H6_RECURSO
BusinessContentTypeProductionOrderNumberOrdem de ProduçãoSH6.H6_OP
BusinessContentTypeActivityCodeOperaçãoSH6.H6_OPERAC
BusinessContentTypeItemCodeProdutoSH6.H6_PRODUTO
BusinessContentTypeApprovedQuantityQuantidade AprovadaSH6.H6_QTDPROD
BusinessContentTypeScrapQuantityQuantidade RefugadaSH6.H6_QTDPERD
BusinessContentTypeStartReportDateTimeData/Hora Início Reporte

SH6.H6_DATAINI

SH6.H6_HORAINI

BusinessContentTypeStartCentReportTimeHora Centesimal Início Reporte 
BusinessContentTypeEndReportDateTimeData/Hora Fim Reporte

SH6.H6_DATAFIN

SH6.H6_HORAFIN

BusinessContentTypeEndCentReportTimeHora Centesimal Fim Reporte 
BusinessContentTypeReversedReportEstorno do Apontamento 
BusinessContentTypeReversalDateData do estorno 
BusinessContentTypeReportDateTimeData/Hora ReporteSH6.H6_DTAPONT
BusinessContentTypeWarehouseCodeCódigo DepósitoSH6.H6_LOCAL
BusinessContentTypeLotCodeLote/SérieSH6.H6_LOTECTL
BusinessContentTypeLotDueDateData Validade LoteSH6.H6_DTVALID
BusinessContentTypeIntegrationReportRegistro a ser estornado 
BusinessContentTypeCloseOperationEncerra OperaçãoSH6.H6_PT
    

 

  • Mensagem de parada

 

BlocoTagDescriçãoObservação
BusinessContentTypeMachineCodeCódigo MáquinaSH6.H6_RECURSO
BusinessContentTypeMachineDescriptionDescrição Maquina 
 BusinessContentTypeStopReasonCodeCódigo Motivo ParadaSH6.H6_MOTIVO
BusinessContentTypeStopReasonDescriptionDescrição Motivo ParadaSX5.X5_DESCRI *
BusinessContentTypeStartDateTimeData/Hora Início

SH6.H6_DATAINI

SH6.H6_HORAINI

BusinessContentTypeEndDateTimeData/Hora Fim

SH6.H6_DATAFIN

SH6.H6_HORAFIN

BusinessContentTypeOperatorCodeCódigo OperadorSH6.H6_OPERADO
BusinessContentTypeOperatorNameNome do Operador 
BusinessContentTypeReportDateTimeData/Hora ReporteSH6.H6_DTAPONT

 

 

2. O que será desenvolvido:


2.1 - WebService

Desenvolver WebService para o PCP,chamado WSPCP. Essa rotina será a que recebe a mensagem XML e executa os adapters de apontamento de produção e apontamento de parada. 

Este serviço fará a execução online com retorno neste mesmo momento, portanto, não haverá gerenciamento de fila. As mensagens que não estão listadas neste documento deverão ser recusadas.

Abaixo modelo de fonte WebService Protheus:


Static Function execInteg()

   Local cTransac := ""

   Local aAdapter := {.T.,"OK"}


   If Type("oXml:_TotvsMessage:_MessageInformation:_Transaction:Text") != "U"

      cTransac := AllTrim(Upper(oXml:_TotvsMessage:_MessageInformation:_Transaction:Text))

      Do Case

         Case cTransac == "PRODUCTIONAPPOINTMENT" //Apontamento da produção

            aAdapter := MATI681(oXml, TRANS_RECEIVE, EAI_MESSAGE_BUSINESS)

         Case cTransac == "STOPREPORT" //Apontamento de parada

            aAdapter := MATI682(oXml, TRANS_RECEIVE, EAI_MESSAGE_BUSINESS)

         Otherwise

            aAdapter[1] := .F.

            aAdapter[2] := 'Transação "' + cTransac + '" não implementada.'

      EndCase

   Else

      aAdapter[1] := .F.

      aAdapter[2] := 'Não foi possível identificar a transação da mensagem.'

   EndIf

Return aAdapter


Nota-se que no exemplo já executa os adapters de  apontamentos de produção e parada, MATI681 e MATI682 que serão descritos nos itens 2.2 e 2.3 .

Importante:

A configuração do WebService deve ser feita no Appserver.ini na sessão [WebServices]

 

2.2 - Reporte de produção - Quantidade - Tempo  - Estorno

O apontamento de produção padrão para essa integração será o MATA681. Desenvolver adapter de apontamento de produção MATI681.

O Adapter fará a leitura do XML para gerar os dados que serão passados automaticamente para a rotina de apontamento MATA681. O XML contém inúmeros campos, porém para a integração Protheus com o PC-Factory vamos usar somente os descritos na tabela da mensagem do apontamento de quantidade, tempo  e estorno no item 1.

O Adpater será desenvolvido usando padrão EAI. No caso dos apontamentos desenvolver apenas o processo de recebimento da mensagem - TRANS_RECEIVE. Usar como modelo o MATI010.

 

Function MATI681(cXml, nTypeTrans, cTypeMessage)
//Mensagem de Entrada

If nTypeTrans == TRANS_RECEIVE

....

If cVersao == "1"

aRet := v1000(cXml, nTypeTrans, cTypeMessage)
Else
lRet := .F.
cXmlRet := STR0007 //"A versão da mensagem informada não foi implementada!"
Return {lRet, cXmlRet}
EndIf

.........

.........


Na função v1000 tratar somente o recebimento:

Static Function v1000( cXML, nTypeTrans, cTypeMessage )

........

........

//Tratamento do recebimento de mensagens

If ( nTypeTrans == TRANS_RECEIVE )

{VALIDAÇÕES}

........

        //Operação de inclusão de apontamento

         nOperation := 3

         aSH6 := {}

         //Carrega o array com os valores necessários para o apontamento.

         aSH6 := {{"H6_OP"      ,cNumOp     , NIL },;

                  {"H6_RECURSO" ,cMaquina   , NIL },;

                  {"H6_OPERAC"  ,cOperacao  , NIL },;

                  {"H6_PRODUTO" ,cProduto   , NIL },;

                  {"H6_QTDPROD" ,nQtdApr    , NIL },;

                  {"H6_QTDPERD" ,nQtdRef    , NIL },;

                  {"H6_DATAINI" ,dDateIni   , NIL },;

                  {"H6_HORAINI" ,nHoraIni   , NIL },;

                  {"H6_DATAFIN" ,dDateFim   , NIL },;

                  {"H6_HORAFIN" ,nHoraFim   , NIL },;

                  {"H6_DTAPONT" ,dReportDat , NIL },;

                  {"H6_LOCAL"   ,cLocal     , NIL },;

                  {"H6_LOTECTL" ,cLoteCtl   , NIL },;

                  {"H6_DTVALID" ,dDtValid   , NIL }}

         MSExecAuto({|x,y| mata681(x,y)},aSH6,nOperation)

         If lMsErroAuto

            aErroAuto := GetAutoGRLog()

            For nCount := 1 To Len(aErroAuto)

                Conout("      "+aErroAuto[nCount])

                If AT('HELP:',aErroAuto[nCount]) > 0 .Or. AT('< --',aErroAuto[nCount]) > 0

                   //Retorna somente a mensagem de erro (Help) e o valor que está inválido, sem quebras de linha e sem tags '<>'

                   cLogErro += StrTran( StrTran( StrTran( StrTran( StrTran( aErroAuto[nCount], "/", "" ), "<", "" ), ">", "" ), CHR(10), " "), CHR(13), "") + ("|")

                EndIf

            Next nCount

            lRet    := .F.

            cXMLRet := cLogErro

            Return {lRet,cXmlRet}

         Else

            lRet    := .T.

            cXmlRet := cValToChar(SH6->(Recno()))

         EndIf

EndIf


O Adapter fará as seguintes validações antes de executar a rotina de apontamento MATA681.

  • Irá validar se a mensagem é ProductionAppointment.
  • Irá validar se a versão é 1.001
  • Quando o nome do produto(Product: Name) for PPI, deverá verificar se a integração Protheus x PC-Factory está ativa(SOD.OD_ATIVO). Somente processar se estiver ativa, senão irá dar mensagem de retorno que a integração não foi realizada.
  • Quando as tags CompanyId e BranchId não forem enviados pelo XML será utilizado o que estiver registrados nos parâmetros de configuração(appserver.ini) na configuração do WEBSERVICE. Abaixo exemplo no campo PREPAREIN.

             [WebServices]

              Enable=1

              Environment=p12_gestao

              Conout=1

              Trace=1

         PrepareIn=99,01

              NameSpace=http://10.80.62.136:8090

              URLLocation=http://10.80.62.136

              Mais detalhes sobre a configuração do appserver.ini WEBSERVICE deverá ser verificado no manual de instalação.

  • Os campos Máquina,Ordem de Produção,Operação,Produto e Data/Hora Reporte serão obrigatórios.
  • Caso o campo código do depósito vier sem preenchimento deverá usar o local padrão do cadastro de item(SB1.B1_LOCPAD).

  • Se precisar fazer alguma validação deverá usar o ponto de entrada MT680VAL. Ponto de entrada útil para validar se alguma informação deverá ser obrigatória como tempo , quantidade, entre outros. Estas validações ficarão a cargo dos clientes, pois cada um terá sua regra. 
  • Não necessita retornar componentes nem ferramentas.

  • O campo CloseOperation vai indicar se o apontamento é TOTAL ou PARCIAL. Caso envie true deverá ser T=total. Caso false será considerado como P=Parcial.
  • Quando for apontado Refugo/Perda(ScrapQuantity for maior que zero), não será registrado o motivo de refugo tags do ListOfWasteAppointments. A rotina MATA681 não registra dados da tabela SBC quando a execução for decorrente de processamentos automáticos.

  • Quando for apontamento quantidade/tempo/recurso o SH6.H6_TIPO = 'P'.

  • Como o padrão é MATA681, se precisar validar informações do carga máquina na tabela SH8, deverá usar o ponto de entrada MT680VAL.

       2.2.1  Mensagem de Retorno

        Todo apontamento deverá enviar uma mensagem de retorno, indicando possíveis problemas ou processamento efetuado com sucesso.

        A mensagem de retorno será a mesma do envio - ProductionAppointment. No caso do retorno deverá enviar somente a parte do ReturnContent(quando OK) ou ListOfMessages(quando erro). Abaixo exemplo:

       a) OK

       <TOTVSMessage
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="">
       <MessageInformation version="1.001">
       <UUID>e0d43a18-ffc5-7bbd-e511-7a6794df2a3b</UUID>
       <Type>Response</Type>
       <Transaction>productionappointment</Transaction>
        <StandardVersion>1.0</StandardVersion>
        <SourceApplication>dts11cordas8480</SourceApplication>
        <CompanyId>10</CompanyId>

        <BranchId>10</CompanyId>
        <Product name="Datasul" version="11.5.X"/>
        <GeneratedOn>2015-09-30T10:50:38.123-03:00</GeneratedOn>
        </MessageInformation>
           <ResponseMessage>
           <ReceivedMessage>
                <SentBy>PPI</SentBy>
                <UUID>44e8a200-461d-4f04-a7ce-953b15fb7075</UUID>
           </ReceivedMessage>
           <ProcessingInformation>
               <ProcessedOn>2015-09-30T10:50:38.123-03:00</ProcessedOn>
               <Status>OK</Status>
           </ProcessingInformation>
           <ReturnContent>
             <ListOfInternalId>
                  <InternalId>
                      <Name>ProductionAppointmentInternalId</Name>
                       <Origin/>
                      <Destination>146284</Destination>
                  </InternalId>
             </ListOfInternalId>
           </ReturnContent>
          </ResponseMessage>
        </TOTVSMessage>

      b) ERROR

      A mesma mensagem, sem o ReturnContent. Vai usar a tag ListOfMessages para retornar a mensagem de erro.

     <ProcessingInformation>
           <ProcessedOn>2015-09-30T14:38:44</ProcessedOn>
           <Status>ERROR</Status>
           <ListOfMessages>
                <Message type="ERROR" code="1">ItemCode nao cadastrado no protheus.</Message>
          </ListOfMessages>
     </ProcessingInformation>

       Onde:

  • TOTVSMessage xmlns:xsi Indica o xsd para gerarção do XML. O nome da mensagem deverá ser: ProductionAppointment_1_001
  • MessageInformation version Indica a versão da mensagem. A versão deverá ser “1.001” 
  • UUID : Usar a mesma informação que veio na mensagem de apontamento 
  • Type: Tipo da mensagem. Gerar fixo “Response”
  • Transaction: Indica o que está sendo enviado. A transação deverá ser:“ProductionAppointment” 
  • StandardVersion: Versão. Deverá ser  “1.001” 
  • SourceApplication: Aplicação que está executando. Enviar SIGAPCP
  • CompanyId: Código da empresa. Deverá retornar a empresa em que foi processado o apontamento
  • BranchId:  Código da filial. Deverá retornar a filial em que foi processado o apontamento
  • Product: Name. Nome do produto. O Nome deverá ser WSPCP Version: Versão do RPO
  • GenerateOn = Data e hora da geração da mensagem. 
  • ContextName = Sistema que gerou. Enviar Protheus
  • SentBy = Quem originou a mensagem. No caso deverá ser PPI
  • ProcessedOn = GenerateOn 
  • Status. Pode ser OK ou ERROR. Quando OK vai gerar o ReturnContent. Quando ERROR vai gerar ListOfMessages
  • Name = ProductionAppointmentInternalId
  • Destination: Registro do apontamento. R_E_C_N_O
  • Message type : Mensagem de erro.
                          

       Observações:

  • O número do apontamento é enviado ao Pc-Factory pelo Protheus na mensagem de retorno da ProductionAppointment e corresponde ao RECNO da SH6. Este mesmo número será utilizado quando precisar registrar um estorno(IntegrationReport).


        2.2.2 Estorno

        Os estornos dos apontamentos deverão seguir os procedimentos abaixo:

  • O estorno ocorre quando o campo o campo ReversedReport (Estorno do apontamento) possuir o conteúdo TRUE.
    Quando for estorno deverá, obrigatoriamente ter o número do apontamento, campo IntegrationReport
  • Devido ao Protheus pesquisar os registros somente pelo índice e e não existir um índice na SH6¨com o nr. do registro (RECNO) deverá ser alterada a função MATA680(A680Delata) para fazer um pesquisa pelo RECNO que foi enviado no XML.
  • O estorno pode ser gerado de duas formas no arquivo: somente o estorno ou estorno + apontamento. Quando a mensagem possuir o estorno e o apontamento só pode commitar as movimentações quando ambas forem concluídas. 
    Para identificar se a mensagem possui somente estorno ou estorno + apontamento deverá verificar as seguintes situações:
    Somente estorno: possui quantidade aprovada e refugado zerado ( ou sem conteúdo) e dados do ReversedReport. 
    Estorno + apontamento: possui ReversedReport informado e dados da ordem e quantidade aprovada ou refugada maior que zero.

 

        2.2.3  Ponto de Entrada - MATI681CRG

       Antes de executar a rotina de apontamento MATA681(  MSExecAuto({|x,y| mata681(x,y)},aSH6,nOperation) ) será implementado um ponto de entrada para atribuir valores a tabela SH6. Este ponto será útil para atribuir algum valor para    

       campos que a integração não trata, ou algum campo específico utilizado pelo cliente. Será passado como parâmetro a variável aSH6.

       Observação:

       Nenhum campo da aSH6 que estiver no XML poderá ser alterado. Caso o ponto de entrada altere o conteúdo desses campos a rotina vai utilizar o conteúdo original.

       

2.3 Reporte de parada de produção


O apontamento de parada padrão para essa integração será o MATA682. Desenvolver adapter de apontamento de produção MATI682.

O Adapter fará a leitura do XML para gerar os dados que serão passados automaticamente para a rotina de apontamento MATA682. O XML contém inúmeros campos, porém para a integração Protheus com o PC-Factory vamos usar somente os descritos na tabela da mensagem do apontamento de parada no item 1.

O Adpater será desenvolvido usando padrão EAI. No caso dos apontamentos desenvolver apenas o processo de recebimento da mensagem - TRANS_RECEIVE. Usar como modelo o MATI010.


IMPORTANTE: Usar o mesmo desenvolvimento do ITEM 2.2. As duas rotinas de apontamento (produção e parada) geram a mesma tabela SH6, o que muda são os campos da mensagem.

 O Adapter fará as seguintes validações antes de executar a rotina de apontamento MATA682.

  • Irá validar se a mensagem é StopReport.
  • Irá validar se a versão é 1.001
  • Quando o nome do produto(Product: Name) for PPI, deverá verificar se a integração Protheus x PC-Factory está ativa(SOD.OD_ATIVO). Somente processar se estiver ativa, senão irá dar mensagem de retorno que a integração não foi realizada.
  • Quando as tags CompanyId e BranchId não forem enviados pelo XML será utilizado o que estiver registrados nos parâmetros de configuração(appserver.ini) na configuração do WEBSERVICE. Abaixo exemplo no campo PREPAREIN.
  • Os campos Máquina,Motivo de Parada, Data/Hora Inicio e Fim e Data/Hora Reporte serão obrigatórios.
  • Se precisar fazer alguma validação deverá usar o ponto de entrada MT680VAL. Ponto de entrada útil para validar se alguma informação deverá ser obrigatória. Estas validações ficarão a cargo dos clientes, pois cada um terá sua regra.  Este ponto de entrada é usado tanto para apontamento de produção quanto para o apontamento de parada. Controlado pelas variáveis l682 e l681 (sendo .T. ou .F.)

  • Quando for apontamento de parada setar o SH6.H6_TIPO = 'I'.

  • O produto deverá ser a mão de obra. Gerado pelo sistema. Exemplo: SH6.H6_PRODUTO = MOD001 

  • A quantidade perda será gerada pelo sistema. SH6.H6_QTDPERD
  • O campo SH6.H6_IDENT também é gerado pelo sistema
  • O campo SH6.H6_TEMPO deve ser calculado pelo adapter. Deve ser o tempo total da parada.

 

Motivo de Parada

O motivo poderá ser cadastrado via integração. Deverá verificar se o motivo de parada está cadastrado. Caso não esteja deverá ser incluído o motivo utilizado no apontamento na tabela SX5.

O motivo de parada é cadastrado em tabela genérica - SX5.

Deverá pesquisar na tabela SX5 da seguinte maneira:

select X5_CHAVE from sx5990 where X5_TABELA = '44'

Onde:

  • O código do motivo é X5_CHAVE
  • A tabela do motivo é '44'.

Se não encontrar o motivo deverá incluir na SX5 usando código e descrição. Nesse caso a descrição deve ser obrigatória.

 

       2.3.1  Mensagem de Retorno

Todo apontamento deverá enviar uma mensagem de retorno, indicando possíveis problemas ou processamento efetuado com sucesso.

A mensagem de retorno será a mesma do envio - StopReport. No caso do retorno deverá enviar somente a parte do ReturnContent(quando OK) ou ListOfMessages(quando erro). Da mesma forma que o apontamento de produção. Abaixo exemplo: 

       a) OK

       <TOTVSMessage

        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="">
       <MessageInformation version="1.001">
       <UUID>e0d43a18-ffc5-7bbd-e511-7a6794df2a3b</UUID>
       <Type>Response</Type>
       <Transaction>productionappointment</Transaction>
        <StandardVersion>1.0</StandardVersion>
        <SourceApplication>dts11cordas8480</SourceApplication>
        <CompanyId>10</CompanyId>

 

        <BranchId>10</CompanyId>
        <Product name="Datasul" version="11.5.X"/>
        <GeneratedOn>2015-09-30T10:50:38.123-03:00</GeneratedOn>
        </MessageInformation>
           <ResponseMessage>
           <ReceivedMessage>
                <SentBy>PPI</SentBy>
                <UUID>44e8a200-461d-4f04-a7ce-953b15fb7075</UUID>
           </ReceivedMessage>
           <ProcessingInformation>
               <ProcessedOn>2015-09-30T10:50:38.123-03:00</ProcessedOn>
               <Status>OK</Status>
           </ProcessingInformation>
           <ReturnContent>
             <ListOfInternalId>
                  <InternalId>
                      <Name>ProductionAppointmentInternalId</Name>
                       <Origin/>
                      <Destination>146284</Destination>
                  </InternalId>
             </ListOfInternalId>
           </ReturnContent>
          </ResponseMessage>
        </TOTVSMessage>

 

      b) ERROR

      A mesma mensagem, sem o ReturnContent. Vai usar a tag ListOfMessages para retornar a mensagem de erro.

     <ProcessingInformation>

           <ProcessedOn>2015-09-30T14:38:44</ProcessedOn>
           <Status>ERROR</Status>
           <ListOfMessages>
                <Message type="ERROR" code="1">ItemCode nao cadastrado no protheus.</Message>
          </ListOfMessages>
     </ProcessingInformation>

 

       Onde:

  • TOTVSMessage xmlns:xsi Indica o xsd para gerarção do XML. O nome da mensagem deverá ser: StopReport_1_000
  • MessageInformation version Indica a versão da mensagem. A versão deverá ser “1.001” 
  • UUID : Usar a mesma informação que veio na mensagem de apontamento 
  • Type: Tipo da mensagem. Gerar fixo “Response”
  • Transaction: Indica o que está sendo enviado. A transação deverá ser:“StopReport” 
  • StandardVersion: Versão. Deverá ser  “1.001” 
  • SourceApplication: Aplicação que está executando. Enviar SIGAPCP
  • CompanyId: Código da empresa. Deverá retornar a empresa em que foi processado o apontamento
  • BranchId:  Código da filial. Deverá retornar a filial em que foi processado o apontamento
  • Product: Name. Nome do produto. O Nome deverá ser WSPCP Version: Versão do RPO
  • GenerateOn = Data e hora da geração da mensagem. 
  • ContextName = Sistema que gerou. Enviar Protheus
  • SentBy = Quem originou a mensagem. No caso deverá ser PPI
  • ProcessedOn = GenerateOn 
  • Status. Pode ser OK ou ERROR. Quando OK vai gerar o ReturnContent. Quando ERROR vai gerar ListOfMessages
  • Name = StopReportInternalId
  • Destination: Registro do apontamento. R_E_C_N_O
  • Message type : Mensagem de erro.
                          

       Observações:

  • O número do apontamento é enviado ao Pc-Factory pelo Protheus na mensagem de retorno da StopReport é corresponde ao RECNO da SH6. Este mesmo número será utilizado quando precisar registrar um estorno(IntegrationReport)

Para anteder esse processo deverá ser alterada a mensagem StopReport_1_000, criando a versão StopReport_1_001. Criar os seguintes  campos:

  • Adicionada a tag ReturnContent, que irá retornar o ID do apontamento de parada, para que seja possível realizar o estorno deste apontamento posteriormente.
  • Adicionada a tag ReversedReport, que identifica que a mensagem está se tratando de um estorno de apontamento.
  • Adicionada a tag IntegrationReport, que identifica qual é o registro que será estornado.

 

        2.3.2 Estorno

        Os estornos dos apontamentos de parada deverão seguir os procedimentos abaixo( mesmo formato do apontamento de produção): 

  • O estorno ocorre quando o campo o campo ReversedReport possuir o conteúdo TRUE.
    Quando for estorno deverá, obrigatoriamente ter o número do apontamento, campo IntegrationReport
  • Deverá executar a função A682Deleta. O estorno deverá se absear no  nr. do registro (RECNO) da SH6 (IntegrationReport) que foi enviado no XML.
  • O estorno pode ser gerado de duas formas no arquivo: somente o estorno ou estorno + apontamento. Quando a mensagem possuir o estorno e o apontamento só pode commitar as movimentações quando ambas forem concluídas. 
    Para identificar se a mensagem possui somente estorno ou estorno + apontamento deverá verificar as seguintes situações:
    Somente estorno: possui somente as informações do ReversedReport e IntegrationReport com a demais tags sem dados. 
    Estorno + apontamento: possui ReversedReport e IntegrationReport  informados e os demais dados obrigatórios (Máquina,Motivo de Parada, Data/Hora Inicio e Fim e Data/Hora Reporte ) preenchidos.

 

        2.2.3  Ponto de Entrada - MATI681CRG

       Antes de executar a rotina de apontamento MATA682(  MSExecAuto({|x,y| mata682(x,y)},aSH6,nOperation) ) será implementado um ponto de entrada para atribuir valores a tabela SH6. Este ponto será útil para atribuir algum valor para     

       campos que a integração não trata, ou algum campo específico utilizado pelo cliente. Será passado como parâmetro a variável aSH6.

       Observação:

       Nenhum campo da aSH6 que estiver no XML poderá ser alterado. Caso o ponto de entrada altere o conteúdo desses campos a rotina vai utilizar o conteúdo original.

      Vai usar o mesmo ponto de entrada que o MATA681. A rotina que chama a função pode ser verificada por meio de variáveis de controles.

 

       

<Na tabela abaixo informe quais são as rotinas envolvidas, o tipo de operação, a opção de menu e se necessário uma breve descrição das regras de negócio relacionadas a rotina>.

 

Rotina

Tipo de Operação

Opção de Menu

Regras de Negócio

[MATA681 – Producao PCP Mod2]

[Alteração]

[Atualizações -> Movimentações -> Produção]

-

[MATA682 – Apontar Hrs.improd]

[Alteração]

[Atualizações -> Movimentações-> Produção]

-

 

Opcional

Protótipo de Tela

 

<Caso necessário inclua protótipos de telas com o objetivo de facilitar o entendimento do requisito, apresentar conceitos e funcionalidades do software>.

 

Protótipo 01

 

 

Opcional

Fluxo do Processo

 

<Nesta etapa incluir representações gráficas que descrevam o problema a ser resolvido e o sistema a ser desenvolvido. Exemplo: Diagrama - Caso de Uso, Diagrama de Atividades, Diagrama de Classes, Diagrama de Entidade e Relacionamento e Diagrama de Sequência>. 

Opcional

Dicionário de Dados

 

Arquivo ou Código do Script: AAA – Negociação Financeira / *Versao=CP.2014.12_03*/

  

Índice

Chave

01

<FI9_FILIAL+FI9_IDDARF+FI9_STATUS>

02

<FI9_FILIAL+FI9_FORNEC+ FI9_LOJA+FI9_EMISS+FI9_IDDARF>

03

<FI9_FILIAL+FI9_FORNEC+ FI9_LOJA+FI9_PREFIX+FI9_NUM+FI9_PARCEL+FI9_TIPO>

Campo

<AAA_PERESP>

Tipo

<N>

Tamanho

<6>

Valor Inicial

<Varia de acordo com o tipo informado. Por exemplo, quando o campo “tipo” for date, neste campo pode ser informado uma data>. 

Mandatório

Sim (  ) Não (  )

Descrição

<Referência Mínima para Cálculo>

Título

<Ref.Calc.>

Picture

<@E999.99>

Help de Campo

<Informar o % que o aluno pagará em dinheiro. Esse % poderá ser alterado durante a negociação>

 

(Opcional)

Grupo de Perguntas

 

<Informações utilizadas na linha Protheus>.

 

Nome: FINSRF2

X1_ORDEM

01

X1_PERGUNT

Emissão De

X1_TIPO

D

X1_TAMANHO

8

X1_GSC

G

X1_VAR01

MV_PAR01

X1_DEF01

Comum

X1_CNT01

'01/01/08'

X1_HELP

Data inicial do intervalo de emissões das guias de DARF a serem consideradas na seleção dos dados para o relatório 

 

(Opcional)

Consulta Padrão

<Informações utilizadas na linha Protheus>

 

Consulta: AMB

Descrição

Configurações de Planejamento

Tipo

Consulta Padrão

Tabela

“AMB”

Índice

“Código”

Campo

“Código”; ”Descrição”

Retorno

AMB->AMB_CODIGO

 

(Opcional)

Estrutura de Menu

 

<Informações utilizadas na linha Datasul>.

 

Procedimentos

 

Procedimento

 

 

 

Descrição

(Max 40 posições)

(Max 40 posições)

(Max 40 posições)

Módulo

 

 

 

Programa base

 

 

 

Nome Menu

(Max 32 posições)

(Max 32 posições)

(Max 32 posições)

Interface

GUI/WEB/ChUI/Flex

GUI/WEB/ChUI/Flex

GUI/WEB/ChUI/Flex

Registro padrão

Sim

Sim

Sim

Visualiza Menu

Sim/Não

Sim/Não

Sim/Não

Release de Liberação

 

 

 

 

 

 

Programas

 

Programa

 

 

 

Descrição

(Max 40 posições)

(Max 40 posições)

(Max 40 posições)

Nome Externo

 

 

 

Nome Menu/Programa

(Max 32 posições)

(Max 32 posições)

(Max 32 posições)

Nome Verbalizado[1]

(Max 254 posições)

(Max 254 posições)

(Max 254 posições)

Procedimento

 

 

 

Template

(Verificar lista de opções no man01211)

(Verificar lista de opções no man01211)

(Verificar lista de opções no man01211)

Tipo[2]

Consulta/Manutenção/ Relatório/Tarefas

Consulta/Manutenção/ Relatório/Tarefas

Consulta/Manutenção/ Relatório/Tarefas

Interface

GUI/WEB/ChUI/Flex

GUI/WEB/ChUI/Flex

GUI/WEB/ChUI/Flex

Categoria[3]

 

 

 

Executa via RPC

Sim/Não

Sim/Não

Sim/Não

Registro padrão

Sim

Sim

Sim

Outro Produto

Não

Não

Não

Visualiza Menu

Sim/Não

Sim/Não

Sim/Não

Query on-line

Sim/Não

Sim/Não

Sim/Não

Log Exec.

Sim/Não

Sim/Não

Sim/Não

Rotina (EMS)

 

 

 

Sub-Rotina (EMS)

 

 

 

Localização dentro da Sub Rotina (EMS)

 

 

 

Compact[4]

Sim/Não

Sim/Não

Sim/Não

Home[5]

Sim/Não

Sim/Não

Sim/Não

Posição do Portlet[6]

0 – Top Left

1 – Top Right

2 – Bottom Left

3 – Bottom Right

0 – Top Left

1 – Top Right

2 – Bottom Left

3 – Bottom Right

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.