Á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 StockLevel_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
ReturnContentTypeClosingStockDateData fechamento estoqueNão usa
ListOfReturnItemReturnItemCompanyIdEmpresa 
ReturnItemListOfReturnItemBranchIdFilial 
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 
ListOfStockBalanceCurrentStockAmountSaldo do Produto em quantidade no ERPSerialNumberNúmero de sérieSBF.BF_NUMSERI  
ListOfStockBalanceAvailableStockAmountSaldo disponível do Produto em quantidade no ERPSubLotCodeSubLoteSB8.B8_NUMLOTE 
ListOfStockBalanceBookedStockAmountQuantidade reservada em EstoqueAddressLocalizaçãoSBF.BF_LOCALIZ 
ListOfStockBalanceValueOfCurrentStockAmountCurrentStockAmountSaldo atual do estoque do produto Produto em valor 
ListOfStockBalanceLotNumberNúmero do Lote 
ListOfStockBalanceLotExpirationDateData de validade 
ListOfStockBalanceSerialNumberNúmero de série 
ListOfStockBalanceSubLotCodeSubLote 
ListOfStockBalanceAddressLocalização 
quantidade

SB2.B2_QATU

SB8.B8_SALDO

SBF.BF_QUANT

ListOfStockBalanceBookedStockAmount

Quantidade reservada em Estoque

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, Alterar mensagem StockLevel, gerando a versão 2_000. A mensagem terá o formato abaixo:

 

RequestItemListOfRequestItemInternalIdCódigo do Itemxs:string15
ListOfRequestReferenceCodeReferânciaxs:string20
ListOfRequestRequestItemWarehouseInternalIdCó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
ListOfStockBalanceUnitItemCostCusto unitário do Produtoxs:decimal17,4
ListOfStockBalanceAverageUnitItemCostCusto médio do Produtoxs:decimal17,4
ListOfStockBalanceCurrentStockAmountSaldo do Produto em quantidade xs:decimal17,4
ListOfStockBalanceAvailableStockAmountSaldo disponível do Produto em quantidadexs:decimal17,4
ListOfStockBalanceBookedStockAmountQuantidade reservada em Estoquexs:decimal17,4
ListOfStockBalanceValueOfCurrentStockAmountSaldo 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 := v1000v2000(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 produto SB2.B2_COD
BusinessContentTypeItemDescriptionDescrição do item SB1.B1_DESC
ListOfStock   
ListOfStockReferenceCodeReferência ------
ListOfStockWarehouseCodeDepósito/Local de estoqe/Armazem SB2.B2_LOCAL
ListOfStockLotCodeNúmero do Lote SB8.B8_LOTECTL
ListOfStockSubLotCodeSub-Lote SB8.B8_NUMLOTE
ListOfStockNumberSeriesNúmero de Série SBF.BF_NUMSERI
ListOfStockAddressCodeEndereço/Localização SBF.BF_LOCALIZ
ListOfStockLotDueDateData de Validade SB8.B8_DTVALID
ListOfStockCurrentStockAmountSaldo de estoque 

2.1 Criar a mensagem

 

Incluir a nova mensagem ItemStockLevel contendo os seguintes campos:

 

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    
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,2 Atualização do saldo ( inlcusão do lote )

Quando incluir ou 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 MATA225PPIe 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.

Exemplo:

If l PCPIntgPPI()

   lRet := MATA225PPI()

EndIf

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 = 'S1' a Função B2ATUCOMD1 deverá executar o MATA225PPI. 
  • Caso SOE.OE_VAR2 = 'S1' a Função B2ATUCOMD2 deverá executar o MATA225PPI. 
  • Caso SOE.OE_PARINTG = 'S1' a Função B2ATUCOMD3 deverá executar o MATA225PPI. 

 

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. 

 

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

A tabela SOF conterá os seguintes campos:

Transação : Nome da tabela (SB2)
Registro : código do item
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á fazer o JOIN destas tabelas para montar o filtro.

    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.
    Usar a PCPFiltPPI ( fará o filtro de todas as tabelas que são integradas com o PCFactory).
    Essa função irá receber como parâmetro o nome da tabela. 
    A função irá retornar TRUE se satisfazer a condição, ou seja, a estrutura pode ser enviado ou false caso não satisfaça.

    Observação

     Se não existir filtro na SOE , OE_FILTRO, enviará todos os registros, ou seja, a função sempre retornará TRUE.

     

     

     

     

     

    <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

     

               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.