Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Comentário: Migration of unmigrated content due to installation of a new plugin

 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_PCP002

IRM1Epic

PCREQMANCORE1-957935

Requisito1Story

PCRQMANCORE1-10097130

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

(Obrigatório)

Objetivo

 

Enviar o saldo de estoque do Protheus para o PC-Factory, por meio de solicitação do PC-Factory.

Enviar registros de saldo de estoque quando ocorrer alguma movimentação.

 

(Obrigatório)

Definição da Regra de Negócio

 

Gerenciar o envio de saldos em estoque do Protheus para o PC-Factory.  Será criado duas opções de envio. A primeira será via Request, onde o PC-Factory solicita um saldo. A segunda startada via alguma movimentação que atualiza o saldo.


  1. Request


Para este tipo de atualização o PC-Factory solicita o saldo ao Protheus
Será a usada a mensagem StockLeverStockLevel_2_00. A mensagem possui duas partes. A parte de Request , onde são passados os parâmetros para o consulta do saldo, e a parte do Return, que contem o retorno do saldo.

O Request da mensagem possui as seguintes tags que serão usadas para o Protheus:

BlocoTagDescriçãoObservação
RequestItemListOfRequestItemInternalIdCódigo do produto 
ListOfRequestReferenceCodeReferênciaNão usa
ListOfRequestRequestItemWarehouseInternalIdCódigo do depósito/local de estoque/Armazém 
RequestItemListOfRequestLotNumberLote 
RequestItemListOfRequestSubLotCodeSubLote 
RequestItemListOfRequestSerialNumberNúmero de Série 
RequestItemListOfRequestAddressLocalização 
RequestItemListOfRequestLotExpirationDateData de Validade 

A busca pode ocorrer das seguintes formas:
Por Produto: Retorna informação de todos os locais de estoque do produto.
Por Local de Estoque(Armazém): Retorna informação de todos os produtos no local de estoque.
Por Local de Estoque(Armazém) e Produto: Retorna informação sobre o Produto no Local de Estoque definido.

Para os demais campos, Lote, sub-Lote, número de série, localização e data de validade considerar somente se informar o código do produto. Se enviar estes campos sem o código do produto deve retornar mensagem de erro.

O Request poderá ser uma lista de solicitação.


O Return da mensagem possui as seguintes  tags para o Protheus: 

 

BlocoTagDescriçãoObservação
ReturnItemReturnContentTypeCompanyIdClosingStockDateData fechamento estoqueNão usa
ListOfReturnItemCompanyIdEmpresa 
ListOfReturnItemEmpresa ReturnItemBranchIdFilial 
ReturnItemListOfReturnItemCompanyInternalIdEmpresa|Filial 
ReturnItemListOfReturnItemItemInternalIdCódigo do produto SB2.B2_COD
ListOfReturnItemReturnItemReferenceCodeReferenciaNão usa
ListOfStockBalanceWarehouseInternalIdLocal de Estoque(Armazém/Depósito) SB2.B2_LOCAL
ListOfStockBalanceUnitItemCostLotNumberCusto unitário Número do ProdutoLoteSB8.B8_LOTECTL  
ListOfStockBalanceAverageUnitItemCostCusto médio do ProdutoLotExpirationDateData de validadeSB8.B8_DTVALID 
ListOfStockBalanceSerialNumberNúmero de sérieSBF.BF_NUMSERI 
ListOfStockBalanceSubLotCodeSubLoteSB8.B8_NUMLOTE
ListOfStockBalanceAddressLocalizaçãoSBF.BF_LOCALIZ
ListOfStockBalanceCurrentStockAmountSaldo do Produto em quantidade

SB2.B2_QATU

SB8.B8_SALDO

SBF.BF_QUANT

CurrentStockAmountSaldo do Produto em quantidade no ERP ListOfStockBalanceAvailableStockAmountSaldo disponível do Produto em quantidade no ERP 

ListOfStockBalanceBookedStockAmount

Quantidade reservada em Estoque

 
ListOfStockBalanceValueOfCurrentStockAmountSaldo atual do estoque do produto em valor 
ListOfStockBalanceLotNumberNúmero do Lote 
ListOfStockBalanceLotExpirationDateData de validade 
ListOfStockBalanceSerialNumberNúmero de série 
ListOfStockBalanceSubLotCodeSubLote 
ListOfStockBalanceAddressLocalização 

SB2.B2_RESERVA

SB8.B8_EMPENHO

SBF.BF_EMPENHO

ListOfStockBalance

AvailableStockAmount

Saldo disponível do Produto em quantidade

SB2.B2_QATU - SB2.B2_RESERVA

SB8.B8_SALDO - SB8.B8_EMPENHO

SBF.BF_QUANT - SBF.BF_EMPENHO

ListOfStockBalanceUnitItemCostCusto unitário do Produto---
ListOfStockBalanceAverageUnitItemCostCusto médio do Produto---
ListOfStockBalanceValueOfCurrentStockAmountSaldo atual do estoque do produto em valor---


Alterar mensagem StockLevel, gerando a versão 2_000. A mensagem terá o formato abaixo:

 

RequestItem
RequestItemListOfRequestItemInternalIdCódigo do Itemxs:string15
ListOfRequestReferenceCodeReferânciaxs:string20
ListOfRequestWarehouseInternalIdCódigo do WarehouseInternalIdCódigo do depósito/local de estoque/Armazémxs:string10
RequestItemListOfRequestLotNumberNúmero do Lotexs:string10
RequestItemListOfRequestSubLotCodeSub Lotexs:string10
RequestItemListOfRequestSerialNumberNúmero de Sériexs:string20
RequestItemListOfRequestAddressLocalização/Endereçoxs:string15
RequestItemListOfRequestLotExpirationDateData de validadexs:date 
     
ReturnItemListOfReturnItemCompanyIdEmpresaxs:string 
ReturnItemListOfReturnItemBranchIdFilialxs:string2
ReturnItemListOfReturnItemItemInternalIdCódigo do Itemxs:string 
ReturnItemListOfReturnItemCompanyInternalIdEmpresa|Filialxs:string 
ReturnItemListOfReturnItemReferenceCodeReferênciaxs:string20
     
ListOfStockBalance    
ListOfStockBalanceWarehouseInternalIdCódigo do depósito/local de estoque/Armazémxs:string10
ListOfStockBalance   UnitItemCostCusto unitário do Produtoxs:decimal17,4 
ListOfStockBalance   AverageUnitItemCostCusto médio do Produtoxs:decimal17,4 
ListOfStockBalance   CurrentStockAmountSaldo do Produto em quantidade xs:decimal17,4 
ListOfStockBalance   AvailableStockAmountSaldo disponível do Produto em quantidadexs:decimal17,4 
ListOfStockBalance   BookedStockAmountQuantidade reservada em Estoquexs:decimal17,4 
ListOfStockBalance    
ListOfStockBalance    

           2. Movimentação

a)       PC-Factory solcita saldo via mensagem do tipo Request.

 

 

 

Nesse request poderá solicitar saldos de determinado item, local de estoque, família etc, ou solicitar saldo para vários registros ou todos.

 

 

 

O retorno seria o saldo dos itens.

 

 

 

 

 

 

 

b)       Ter a opção de carga de saldo na rotina de sincronização.

 

 

 

 

 

 

 

c)        Inclusão de Lote: Quando incluir um saldo novo no ERP deverá enviar ao ERP. Verificar esta opção, pois isso pode ser feito em vários pontos do ERP.

 

 

 

 

 

 

 

Não vai precisar, pois não temos o cadastro de lotes no ERP.

 

 

 

 

 

 

 

As mensagens existentes não atendem a necessidade de todos os ERPs.

 

 

 

Verificar a mensagem StockLevel, se possível adapta-la, senão criar uma nova.

 

 

 

 

<Regra de negócio é o que define a forma de fazer o negócio, o processo definido e/ou as regras que devem ser contempladas. Devem ser descritas restrições, validações, condições e exceções do processo. Caso necessário, incluir neste capítulo também regras de integridade que devem ser observadas no momento do desenvolvimento>.

 

<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

[ACAA040 – Parâmetros]

[Alteração]

[Atualizações -> Acadêmico-> Tesouraria]

-

[ACAA050 – Negociação Financeira]

[Envolvida]

[Atualizações -> Acadêmico-> Tesouraria]

-

[ACAA060 – Cadastro de Pedidos]

[Criação]

[Atualizações -> Acadêmico-> Cadastros]

-

 

Exemplo de Aplicação:

  • Criar o campo “% Mínimo Espécie” (AAA_PERESP) onde o usuário informará o % que o aluno pagará em dinheiro. Esse % poderá ser alterado durante a negociação.
  • Criar o campo “Referência Mínima para Cálculo” (AAA_REFCAL) onde o usuário informará um dos 4 valores disponíveis para pagamento das mensalidades  como a referência mínima para calcular o débito total do aluno.
  • Criar o parâmetro MV_ACPARNE que definirá se as informações de “% Mínimo Espécie” e “Referência Mínima para Cálculo” serão obrigatórias.
  • O parâmetro MV_ACPARNE deve ter as seguintes opções: 1=Obrigatório e 2=Opcional. Deve ser inicializado como opcional>.

 

Tabelas Utilizadas

  • SE2 – Cadastro de Contas a Pagar
  • FI9 – Controle de Emissão de DARF>.

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

 

 

 Image Removed

 

 

 

 

 

 

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

 
ValueOfCurrentStockAmountSaldo atual do estoque do produto em valorxs:decimal17,4
ListOfStockBalanceLotNumberNúmero do Lotexs:string10
ListOfStockBalanceSubLotCodeSub Lotexs:string10
ListOfStockBalanceLotExpirationDateData de Validadexs:date 
ListOfStockBalanceSerialNumberNúmero de Sériexs:string20
ListOfStockBalanceAddressLocalização/Endereçoxs:string15



1.1 MATI225

O Webservice deverá ser alterado para executar o adapter MATI225 

Do Case

..........
Case cTransac == "STOCKLEVEL" //Saldo de estoque
changeEmp(cEmpIntg,cFilIntg)
aAdapter := MATI225(oXml, TRANS_RECEIVE, EAI_MESSAGE_BUSINESS)

 

aAdd(aAdapter, cEmpIntg)
aAdd(aAdapter, cFilIntg)
aAdd(aAdapter, "MATI225")


Será alterado o adapter do saldo, MATI225 para tratar a nova versão da mensagem e também a integração com o PC-Factory. Criar funções v1000 e v2000 para tratar o xml de acordo com a versao

// Trata recebimento de mensagens
    Case ( nTypeTrans == TRANS_RECEIVE )
        Do Case
            // Recebimento da WhoIs
            Case ( cTypeMessage == EAI_MESSAGE_WHOIS )
                cXmlRet := '1.000'
            // Recebimento da Response Message
            Case ( cTypeMessage == EAI_MESSAGE_RESPONSE )
                cXmlRet := 'Mensagem processada'        
            // Receipt Message (Aviso de receb. em transmissoes assincronas)
            Case ( cTypeMessage == EAI_MESSAGE_RECEIPT )
                cXmlRet := 'Mensagem recebida'        
            // Recebimento da Business Message
            Case ( cTypeMessage == EAI_MESSAGE_BUSINESS )

                 CASE VERSAO = 1 OR VERSAO = ' ' OR VERSAO NULA 

                     aRet := v1000(cXml, nTypeTrans, cTypeMessage)

                CASE VERSAO = 2

                      aRet := v2000(cXml, nTypeTrans, cTypeMessage)

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

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

 

A função v1000 deve executar o processo ATUAL, ou seja, tratando a versão 1 da mensagem.

A função v2000 deve executar o processo considerando as alterações da mensagem para atender a integração com o PC-Factory.
Na v2000 deve considerar as mesmas regras de seleção dos campos, o que vai mudar é somente o formato do XML.

 

Após executar a geração da mensagem de retorno o WebService já está preparado para enviar a resposta, que será o saldo. A resposta conterá apenas um XML. Este XML pode ter um ou vários REQUEST.

Exemplo de XML Request:

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

<TOTVSMessage xsi:noNamespaceSchemaLocation=""

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

    <MessageInformation version="1.000">

        <UUID>459491c6-83bc-4bdf-9c49-71caac25de61</UUID>

        <Type>BusinessMessage</Type>

        <Transaction>stocklevel</Transaction>

        <StandardVersion>1.0</StandardVersion>

        <SourceApplication>PPI</SourceApplication>

        <CompanyId>99</CompanyId>

        <BranchId>01</BranchId>

        <Product version="12" name="PPI" />

        <GeneratedOn>2016-04-14T09:34:11.3137323-03:00</GeneratedOn>

    </MessageInformation>

    <BusinessMessage>

        <BusinessEvent>

            <Entity>stocklevel</Entity>

            <Event>upsert</Event>

        </BusinessEvent>

        <BusinessContent>

            <RequestItem>

                 <WarehouseInternalId>01</WarehouseInternalId>

                 <ItemInternalId>CRG01</ItemInternalId>

            </RequestItem>

        </BusinessContent>

    </BusinessMessage>

</TOTVSMessage>

 

           2. Movimentação


A integração deverá atualizar o saldo, sem que seja necessário realizar um request. Para atender essa necessidade deverá alterar as funções que atualizam saldo para gerar a mensagem.

Será a usada a mensagem ItemStockLevel_1_000.

 

BlocoTagDescriçãoObservação
BusinessContentTypeItemCodeCódigo do produtoSB2.B2_COD
BusinessContentTypeItemDescriptionDescrição do itemSB1.B1_DESC
ListOfStock   
ListOfStockReferenceCodeReferência------
ListOfStockWarehouseCodeDepósito/Local de estoqe/ArmazemSB2.B2_LOCAL
ListOfStockLotCodeNúmero do LoteSB8.B8_LOTECTL
ListOfStockSubLotCodeSub-LoteSB8.B8_NUMLOTE
ListOfStockNumberSeriesNúmero de SérieSBF.BF_NUMSERI
ListOfStockAddressCodeEndereço/LocalizaçãoSBF.BF_LOCALIZ
ListOfStockLotDueDateData de ValidadeSB8.B8_DTVALID
ListOfStockCurrentStockAmountSaldo de estoque

SB2.B2_QATU

SB8.B8_SALDO

SBF.BF_QUANT

ListOfStockBookedStockAmountQuantidade Reservada

SB2.B2_RESERVA

SB8.B8_EMPENHO

SBF.BF_EMPENHO

ListOfStockAvailableStockAmountSaldo disponível

SB2.B2_QATU - SB2.B2_RESERVA

SB8.B8_SALDO - SB8.B8_EMPENHO

SBF.BF_QUANT - SBF.BF_EMPENHO

ListOfStock
QuantityUpdated
Quantidade Atualizada 
ListOfStockInputOutputEntrada ou Saída1 = Entrada ou 2 = Saída


2.1 Criar a mensagem

 

Incluir a nova mensagem ItemStockLevel contendo os seguintes campos:

 

BusinessContentTypeItemCodeCódigo Itemxs:string30
BusinessContentTypeItemDescriptionDescrição Itemxs:string40
ListOfStock    
ListOfStockReferenceCodeReferênciaxs:string20
ListOfStockWarehouseCodeDepósito/Local de estoqe/Armazemxs:string10
ListOfStock LotCodeNúmero do Lotexs:string10
ListOfStockSubLotCodeSub Lotexs:string10
ListOfStockNumberSeriesNúmero de Sériexs:string20
ListOfStockAddressCodeEndereço/Localizaçãoxs:string15
ListOfStockLotDueDateData de Validadexs:date 
ListOfStockCurrentStockAmountSaldo de estoquexs:decimal17,4
ListOfStockBookedStockAmountQuantidade Reservadaxs:decimal17,4
ListOfStockAvailableStockAmountSaldo disponívelxs:decimal17,4
ListOfStockQuantityUpdatedQuantidade atualizadaxs:decimal17,4
ListOfStockInputOutputEntrada ou Saídaxs:string1


 

 2.2 Atualização do saldo ( inlcusão do lote )

Quando atualizar um saldo novo no ERP, deverá enviar a mensagem ao PC-Factory.

Todos os pontos que executam uma movimentação de estoque executam rotinas de atualização de saldo.

  • NF de Entrada  - Função B2ATUCOMD1
  • NF de Venda - Função B2ATUCOMD2
  • Mov. Internas - Função B2ATUCOMD3

Estas funções serão alteradas para executar o adapter com a opção de envio TRANS_SEND.

A execução do adapter nestas funções está condicionada a parametrização no PCPA109, do folder Saldo de Estoque. No PCPA109 também será definido o filtro sobre a tabela SB2.

 

2.2.1 Alterar Adapter MATI225 e MATA225 e funções de atualizações de saldo

Alterar as funções B2ATUCOMD1, B2ATUCOMD2 e B2ATUCOMD3 para executar a integração. Como será possível realizar filtros e algumas outras tratativas, deverá executar a função MATA225PPI que, depois de satisfazer os filtros deverá executar o adapter. Somente se o saldo for atualizado corretamente executar o adapter. Mesmo modelo do MATA010 MATI010.

Criar a função MATA225PPI. Nesta função deverá executar a geração.

aRet := MATI225(cXml, nTypeTrans, cTypeMessage)

Onde: nTypeTrans=TRANS_SEND

<função para enviar o XML para o WebService da PPI e recuperar o retorno> : PCPWebsPPI
Se o retorno for positivo poderá prosseguir com a inclusão/alteração e geração do XML nos diretórios correspondentes.
<função para gerar o XML nos diretórios> : PCPXmlPPI
<função para gerar tabela de integração SOF> : PCPCriaSOF

 

IMPORTANTE: Considerar a parametrização do PCPA109 que indica quais dessas funções deverá gerar a mensagem. Considerar a seguinte regra:

  • Caso SOE.OE_VAR1 = '1' a Função B2ATUCOMD1 deverá executar o MATA225PPI. 
  • Caso SOE.OE_VAR2 = '1' a Função B2ATUCOMD2 deverá executar o MATA225PPI. 
  • Caso SOE.OE_PARINTG = '1' a Função B2ATUCOMD3 deverá executar o MATA225PPI. 

             Exemplo na B2ATUCOMD1 :

            If l PCPIntgPPI() AND SOE.OE_VAR1 = '1'

                lRet := MATA225PPI()

           EndIf

  • Quando o saldo for atualizado por uma atualização do PC-Factory não deverá enviar mensagem de atualização de saldo. Deve validar a origem da atualização. 
    Na mensagem de apontamento de produção usa-se "Product name"  que indica quem está enviado o registro. No caso do TOTVS MES essa informação é gravada na SH6.H6_OBSERVA = 'TOTVSMES'.
    Quando for movimentação interna é registrado na SD3.D3_OBSERVA = 'TOTVSMES'. Desta forma somente executar as funções B2AtuComD1,B2AtuComD2 ou B2AtuComD3 se não for movimentação da PPI, ou seja, D3_OBSERVA diferente e TOTVSMES.
  • Na mensagem o campo QuantityUpdated corresponde a quantidade atualizada, ou seja, a quantidade que esta sendo movimentada. 
    Exemplo(B2AtuComD3):   Replace  B2_QATU    With B2_QATU    + (SD3->D3_QUANT   * nMultiplic) .
                                             Usar D3_QUANT para gerar a quantidade atualizada
  • Na mensagem o campo InputOutput indica se a movimentação é uma entrada ou saída. 
    Exemplo(B2AtuComD3):   Replace  B2_QATU    With B2_QATU    + (SD3->D3_QUANT   * nMultiplic) .
                                            Usar a variável nMultiplic para registrar. Se for menor que zero gravar  2 (Saída), senão gravar 1 (Entrada).

 

A função MATI225 será responsável pela geração do XML. Somente o envio - TRANS_SEND.

Cabeçalho:

Quando for executado via integração com PCFactory deverá montar o cabeçalho da mensagem que consta com as tags TOTVSMessage e MessageInformation.

Abaixo modelo:

<?xml version="1.0" encoding="UTF-8" ?>
<TOTVSMessage xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="xmlschema/general/events/ItemStockLevel_1_000.xsd">
<MessageInformation version="1.000">
<UUID>d97aeb6f-1440-8c81-fc13-ec8cf87b82ad</UUID>
<Type>BusinessMessage</Type>
<Transaction>ItemStockLevel</Transaction>
<StandardVersion>1.0</StandardVersion>
<SourceApplication>dts11cordas8480</SourceApplication>
<CompanyId>10</CompanyId>
<BranchId>10</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>


Onde:
TOTVSMessage xmlns:xsi Indica o xsd para gerarção do XML. Usar o conteúdo do modelo.
MessageInformation version Indica a versão da mensagem. Usar “1.000”
UUID : Sequencial usado pelo EAI. Gerar fixo “1’.
Type: Tipo da mensagem. Gerar fixo “BusinessMessage”
Transaction: Indica o que está sendo enviado. Gerar fixo “ItemStockLevel”
StandardVersion: Versão. Gerar fixo “1.0”
SourceApplication: Aplicação que está executando. Gerar fixo “SIGAPCP”
CompanyId: Código da empresa. Empresa que estiver logada
BranchId: Código da filial. Filial logada.
UserId: Usuário. Usuário logado.
Product: Nome do produto. Name = Rotina que foi executada pelo menu | version = versão do programa.
GenerateOn = Data e hora da geração da mensagem

ContextName = Protheus
DeliveryType:Tipo de envio da mensagem. Gerar fixo “Sync”.

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

<BusinessEvent>
<Entity>ItemStockLevel</Entity>
<Event>upsert</Event>
<Identification>
<key name="InternalId">651140049</key>
</Identification>
</BusinessEvent>

Onde:
Entity: Entidade . Gerar fixo “ItemStockLevel”
Event: Inclusão/Alteração ou exclusão. Pode ser ‘delete’ ou ‘upsert’
Identification: Código do item
Usar key name="InternalID" : gerar com o código do item B2_COD

Dentro do BusinessMessage existe o bloco BusinessContent, que contém os dados do saldo do item. Ver na tabela da mensagem.

 

Filtros e geração do XML ():

No cadastro de parâmetros PCPA109, é definido se gera o arquivo XML nos diretórios. Quando este indicador, OD_GERAXML, estiver como 2('N') não será gravado o arquivo XML nos diretórios correspondentes. Será gravado apenas o conteúdo em tabela (SOF).
Caso o indicador , OD_GERAXML, estiver como 1('S') deverá seguir a seguinte regra de geração:
- Processados com sucesso : XML processado pelo PPI com retorno do PCFactory OK. XML será gravado no diretório cadastrado no campo Enviados(OD_DIRENV) do PCA109.
- Processados sem sucesso : XML processado pelo PPI com retorno de ERRO pelo PCFactory ou WebService desligado ( não conseguiu enviar o XML).
 XML será gravado no diretório definido no campo Pendência (OD_DIRPEND) do PCA109. Caso gerar pendência, não deverá ser questionado se deseja salvar os dados, sempre deverá gerar pendência. 


Em ambos os casos(sucesso ou erro/pendencia), ocorrendo o commit, será gerada a tabela SOF.

Importante: Os arquivos XML´s gerados e dados da tabela SOF somente serão gerados se a inclusão/alteração/exclusão do saldo for comitada no banco.
Os nomes do arquivos seguirão o seguinte padrão:
OK_<MSG>_<DATAHORA>_<REGISTRO>
PEND_<MSG>_<DATAHORA>_<REGISTRO>
ERR_<MSG>_<DATAHORA>_<REGISTRO>
Onde: OK - Se mensagem entregue sem problemas
PEND- Se mensagem não foi enviada
ERR - Se mensagem enviada, porém retornou erro.
MSG - ITEMSTOCKLEVEL
DATAHORA: Data e Hora do envio
REGISTRO: Código do item+ R_E_C_N_O+Tabela. A tabela pode ser SB2, SB8 ou SBF, dependendo da origem do saldo.


A tabela SOF conterá os seguintes campos:

Transação : Nome da tabela (SB2,SB8 ou SBF)
Registro : Código do item+ R_E_C_N_O+Tabela
Status: 1 - OK; 2 - Pend; 3 - Erro
Gerou XML : Sim ou não
Nome arquivo XML
Data Envio
Hora de envio
Usuário
Mensagem de retorno do PCFactory
Xml : Conteúdo do XML
Programa: Rotina que gerou o registro
Data Reprocessamento : Quando reprocessado pela rotina de pendências
Hora Reprocessamento : Quando reprocessado pela rotina de pendências

IMPORTANTE:

  • Só poderá ter uma pendência para o registro.
  • Para gerar o XML e gravar a tabela SOF terá que respeitar as pendências geradas. Se existir uma pendência de envio de algum registro e for gerada uma nova mensagem para o mesmo registro a pendencia deverá ser excluída e trabalhar somente com a última mensagem, que poderá ser enviada sem problemas ou gerar nova pendência. 


Filtros:
No PCPA109 são definidos os filtros que indicam quais registros serão enviados ao PCFactory.

Para o saldo em estoque poderá ter até 3 filtros. Filtro da tabela SB2, SB8 e SBF.


Deverá ler os dados da tabelas SOE onde o campo OE_TABELA seja = 'SB2', OE_TABELA seja = 'SB8' e OE_TABELA seja = 'SBF'.Deverá seguir a regra abaixo:

  • Se o item controlar endereço (B1-LOCALIZ) deverá usar somente o filtro SBF
  • Se o item controlar rastro (B1_rastro) deverá usar somente o filtro SB8
  • Não usando as parametrizações acima usar filtro da SB2

O campo OE_FILTRO conterá o filtro que deverá ser aplicado ao registro que está sendo enviado. Somente poderá enviar(gerar xml) se satisfazer a condição do PCPA109.
Observação

  •  Se não existir filtro na SOE , OE_FILTRO, enviará todos os registros.

Endereçamento:

Quando o item controla endereçamento(B1_LOCALIZ), existe a rotina MATA265 que efetiva o endereçamento. Nesse caso as rotinas que geram/atualizam saldo não deverão enviar a mensagem, pois atualizam somente a SB2,. A mensagem será gerada somente na confirmação do MATA265.

Desta forma tem que realizar a chamada da função MATA225PPI na Function GravaSBF.

 

2.3 Inclusão de saldo

 

As rotinas de inclusão de saldo não executam as função de atualização da SB2 (B2ATUCOMD1,B2ATUCOMD2 e B2ATUCOMD3) .

Serão alteradas as rotinas de saldo inicial do PCP e Estoque:

  • MATA220  
  • MATA805

Verificar  os controles dos itens:

  • Se o item controlar endereço (B1-LOCALIZ) deverá gerar a mensagem usando a tabela SBF
  • Se o item controlar rastro (B1_rastro) deverá gerar a mensagem usando a tabela  SB8
  • Não usando as parametrizações acima gerar usando a tabela  SB2

 

IMPORTANTE: Considerar a parametrização do PCPA109 que indica se na inclusão de saldo deverá ser integrada.Considerar a seguinte regra:Somente integrar(executar o MATA225PPI) se o campo SOE.OE_VAR3 = '1'.

Exemplo:

If PCPIntgPPI() AND SOE.OE_VAR3= '1'

    lRet := MATA225PPI()

 EndIf

 

Deve seguir a mesma regra de geração do XML, geração de pendências, utilização de filtros conforme tópico 2.2 desta especificaçã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

 

 

 Image Added

 

 

 

 

 

 

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

 

(Opcional)

Grupo de Perguntas

 

<Informações utilizadas na linha Protheus>.

 

 

(Opcional)

Consulta Padrão

<Informações utilizadas na linha Protheus>

 

 

 

(Opcional)

Estrutura de Menu

 

<Informações utilizadas na linha Datasul>.

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