Histórico da Página
Este documento é material de especificação dos requisitos de inovação, trata-se de conteúdo extremamente técnico. |
---|
Informações Gerais
Especificação | |||
Produto | DATASUL | Módulo | Chão de Fábrica |
Segmento Executor |
| ||
Projeto1 | D_MAN_PCP002 | IRM1 | PCREQ-9590 |
Requisito1 | PCREQ-10157 10158 - DATASUL - Integração Processos ManufaturaEstoque | 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).
Objetivo
Integração Cadastros Manufatura dos processos de Estoque para integração do TOTVS-MES.
Definição da Regra de Negócio
RN001 - Quando a integração estiver ligada, ao criar um novo item ou modificar a estrutura do mesmo, verificar se o item integra (tabela param-integr-mes.idi-entidade = 2). Caso não exista registro na tabela, então todos os itens e estruturas serão considerados.
RN002 - Para seleção dos itens/estruturas válidos serão utilizados três campos: código do item, família material e grupo de estoque. Caso mais de um campo esteja preenchido na tabelas param-integr-mes, será considerado na busca o operador lógico "OU". Assim mesmo que um item tenha apenas um dos campos como verdadeiro ele será selecionado.
Os movimentos de estoque devem ser filtrados para envio apenas da criação de um novo Lote do Item na integração.
RN002 - Mensagem de request do Saldo, pode ser solicitado, apenas o código do item, apenas o código do depósito ou a chave completa: estabelecimento, item, referência, depósito, lote e localização.
RN003 - O campo Rejeição é estrangeiro e obrigatório na inclusão de um Refugo.
Rotina | Tipo de Operação | Opção de Menu | Regras de Negócio | ||
TransferWarehouseAdapter Transferência Depósito (Recebimento) EN0105 - Estrutura Item | [AlteraçãoCriação] |
| - | EN0109 - Onde se Usa Item||
CE0105 - Localização de Estoque | [Alteração] | - | SF0104 - Centro de Trabalho|||
AddressStockFactory | [ | AlteraçãoCriação] | |||
- | SF0106 - Motivo de Parada | [Alteração] | |||
SF0107 - Motivo de Refugo | [Alteração] | ||||
CD0204 - Item | [Alteração] | ||||
CDAPIItem - API de Item usado pelo WorkFlow de Item | [Alteração] | ||||
BOMF510 - BO Motivo de Parada | [Alteração] | ||||
CDAPI990.i1 | [Alteração] | ||||
Mensagens:
Validar a versão da mensagem nos adapters, para saber qual a fase da integração se refere.
Transação | Descrição | Origem | Destino | XSD |
---|---|---|---|---|
01 | Solicitação Saldo do Item(Request) | PPI | Datasul | StockLevel_2_000 |
02 | Transferência Depósito | PPI | Datasul | TransferWarehouse_1_003 |
03 | Localização/Endereço | Datasul | PPI | AddressStock_1_000 |
18 | Envio de Saldo do Item | Datasul | PPI | ItemStockLevel_1_000 |
Transação 01 - Solicitação Saldo do Item: StockLevel_2_000
Pesquisar na tabela saldo-estoq.
Quando vier apenas o código do item na solicitação:
Ϭ saldo-estoq.it-codigo = ItemCode (saldo-estoq)
Quando vier apenas o código do depósito na solicitação:
Ϭ saldo-estoq.cod-depos = WarehouseCode (saldo-estoq)
Quando vier a chave completa:
Ϭ saldo-estoq.cod-estabel = BranchId ^ saldo-estoq.it-codigo = ItemCode ^ saldo-estoq.cod-refer = ReferenceCode ^ saldo-estoq.cod-depos = WarehouseCode ^ saldo-estoq.cod-localiz = Address ^ saldo-estoq.lote = LotNumber (saldo-estoq)
Segue abaixo o ReturnContentType
Campo XSD | Campo ERP | Descrição |
CompanyId | ||
BranchId | saldo-estoq.cod-estabel | |
CompanyInternalId | ||
ItemInternalId | saldo-estoq.it-codigo | Código Item |
ReferenceCode | saldo-estoq.cod-refer | Código Roteiro |
WarehouseInternalId | saldo-estoq.cod-depos | Descrição Roteiro |
LotNumber | saldo-estoq.lote | Roteiro Alternativo |
SubLotCode | NA | Sub-lote |
SerialNumber | NA | Número de Série |
Address | saldo-estoq.cod-localiz | Localização/Endereço |
LotExpirationDate | saldo-estoq.dt-vali-lote | Validade do Lote |
CurrentStockAmount | saldo-estoq.qtidade-atu | Saldo Atual |
Transação 02 - Transferência de Depósito: TransferWarehouse_1_003
Utilização da CEAPI001.
Na mensagem de Transferência, o adapter terá que montar a tt-movto tanto para movimento de entrada quanto para saída e depois fazer a chamada da CEAPI001(verificar a criação da tt-movto no CE0206.i)
Lista | Campo XSD | Campo ERP | Descrição |
CompanyId | NA | Código da empresa | |
BranchId | tt-movto.cod-estabel | Código da Filial | |
CompanyInternalId | NA | InternalId da chave completa da empresa | |
InternalId | NA | InternalId da transferência | |
Number | tt-movto.nro-docto | Numero da Movimentação | |
RegisterDateTime | tt-movto.dt-trans | Data de Emissão da solicitação | |
ListOfTransferWarehouseItem | |||
ListOfTransferWarehouseItem | InternalId | NA | InternalId da transferência |
ListOfTransferWarehouseItem | EmissionDate | tt-movto.dt-trans | Data de Emissão |
ListOfTransferWarehouseItem | ItemCodeFrom | tt-movto.it-codigo quando tt-movto.tipo-trans = 2 | Item/Produto Origem |
ListOfTransferWarehouseItem | ItemCodeTo | tt-movto.it-codigo quando tt-movto.tipo-trans = 1 | Item/Produto Destino |
ListOfTransferWarehouseItem | ReferenceCodeFrom | tt-movto.cod-refer quando tt-movto.tipo-trans = 2 | Referência Origem |
ListOfTransferWarehouseItem | ReferenceCodeTo | tt-movto.cod-refer quando tt-movto.tipo-trans = 1 | Referência Destino |
ListOfTransferWarehouseItem | UnitOfMeasureFrom | tt-movto.un quando tt-movto.tipo-trans = 2 | Unidade de Medida Origem |
ListOfTransferWarehouseItem | UnitOfMeasureTo | tt-movto.un quando tt-movto.tipo-trans = 1 | Unidade de Medida Destino |
ListOfTransferWarehouseItem | Quantity | tt-movto.quantidade | Quantidade |
ListOfTransferWarehouseItem | WarehouseCodeFrom | tt-movto.cod-depos quando tt-movto.tipo-trans = 2 | Código do Armazém de Origem |
ListOfTransferWarehouseItem | WarehouseCodeTo | tt-movto.cod-depos quando tt-movto.tipo-trans = 1 | Código do Armazém Destino |
ListOfTransferWarehouseItem | LotNumberFrom | tt-movto.lote quando tt-movto.tipo-trans = 2 | Número do Lote de Origem |
ListOfTransferWarehouseItem | LotNumberTo | tt-movto.lote quando tt-movto.tipo-trans = 1 | Número do Lote de Destino |
ListOfTransferWarehouseItem | SubLotNumber | NA | Número do SubLote |
ListOfTransferWarehouseItem | LotExpirationDateFrom | tt-movto.dt-vali-lote quando tt-movto.tipo-trans = 2 | Data de validade do Lote |
ListOfTransferWarehouseItem | LotExpirationDateTo | tt-movto.dt-vali-lote quando tt-movto.tipo-trans = 1 | Data de validade do Lote |
ListOfTransferWarehouseItem | AddressFrom | tt-movto.cod-localiz quando tt-movto.tipo-trans = 2 | Endereço Origem |
ListOfTransferWarehouseItem | AddressTo | tt-movto.cod-localiz quando tt-movto.tipo-trans = 1 | Endereço Destino |
ListOfTransferWarehouseItem | NumberSeries | tt-movto.serie-docto | Número de série |
Outros campos que devem ser alimentados da tt-movto:
tt-movto.ct-codigo = param-estoq.ct-tr-transf
tt-movto.sc-codigo = param-estoq.sc-tr-transf
tt-movto.tipo-trans = 1 para Entradas e 2 para Saídas
tt-movto.cod-versao-integracao = 1
tt-movto.cod-prog-orig = "TransferWarehouse"
tt-movto.esp-docto = 33
Transação 18 - Envio Saldo do Item: ItemStockLevel_1_000
ATENÇÃO: não será mais enviadas informações de quantidades nesta mensagem, ela, somente tratará da criação de um novo lote.
Utilização da CEAPI001K - logo após a criação de um "saldo-estoq", inserir a seguinte validação para criação da tabela temporária de Saldo-Estoq:
SE <param-cp.log-integr-ppi-mes> Ativo E <param-cp.fase-integr> >= 2 E <item.tipo-con-est> > 2 /* Apenas Itens que atualizem o campo saldo-estoq.lote */
Então
Chamada da Função de Criar Saldo XML(passar como parâmetro o ROWID da movto-estoq)
Fim-se.
A definição da tabela temporária Saldo-Estoq (sugestão tt-saldo-estoq-xml com os mesmos campos da saldo-estoq).
Depois de encerrar a transação na CEAPI001K fazer a chamada para envio da mensagem XML:
SE <param-cp.log-integr-ppi-mes> Ativo E <param-cp.fase-integr> >= 2
Então
Chamada da Função de Geração de Mensagem(tt-saldo-estoq-xml)
Fim-se.
A nova função Criar Saldo XML:
Ϭ param-integr-mes.idi-entidade = 3 ^ param-integr-mes.cod-campo = <cod-estabel> ^ (param-integr-mes.des-campo = "*" v param-integr-mes.des-campo = movto-estoq.cod-estabel) (param-integr-mes x movto-estoq)
Ϭ param-integr-mes.idi-entidade = 3 ^ param-integr-mes.cod-campo = <it-codigo> ^ (param-integr-mes.des-campo = "*" v param-integr-mes.des-campo = movto-estoq.it-codigo) (param-integr-mes x movto-estoq)
Ϭ param-integr-mes.idi-entidade = 3 ^ param-integr-mes.cod-campo = <esp-docto> ^ (param-integr-mes.des-campo = "*" v param-integr-mes.des-campo = movto-estoq.esp-docto) (param-integr-mes x movto-estoq)
Ϭ param-integr-mes.idi-entidade = 3 ^ param-integr-mes.cod-campo = <cod-depos> ^ (param-integr-mes.des-campo = "*" v param-integr-mes.des-campo = movto-estoq.cod-depos) (param-integr-mes x movto-estoq)
Ϭ param-integr-mes.idi-entidade = 3 ^ param-integr-mes.cod-campo = <cod-localiz> ^ (param-integr-mes.des-campo = "*" v param-integr-mes.des-campo = movto-estoq.cod-localiz) (param-integr-mes x movto-estoq)
Ϭ param-integr-mes.idi-entidade = 3 ^ param-integr-mes.cod-campo = <fm-codigo> ^ (param-integr-mes.des-campo = "*" v param-integr-mes.des-campo = item.fm-codigo) (param-integr-mes x item)
Ϭ param-integr-mes.idi-entidade = 3 ^ param-integr-mes.cod-campo = <ge-codigo> ^ (param-integr-mes.des-campo = "*" v param-integr-mes.des-campo = item.ge-codigo) (param-integr-mes x item)
Ϭ saldo-estoq.cod-estabel = movto-estoq.cod-estabel ^ saldo-estoq.it-codigo = movto-estoq.it-codigo ^ saldo-estoq.cod-refer = movto-estoq.referencia ^ saldo-estoq.cod-depos = movto-estoq.cod-depos ^ saldo-estoq.cod-localiz = movto-estoq.cod-localiz ^ saldo-estoq.lote = movto-estoq.lote (saldo-estoq x movto-estoq)
Caso ainda não exista a tt-saldo-estoq-xml para a chave completa de saldo-estoq, então cria o registro igual a tabela saldo-estoq.
A nova função Geração de Mensagem pode ser chamada de CEAPI001MES, e fará os filtros abaixo para decidir se o saldo será enviado ao XML:
Fazer a leitura da tt-saldo-estoq e criar a msg.
ATENÇÃO: não será mais enviadas informações de quantidades nesta mensagem, ela, somente tratará da criação de um novo lote.
Campo XSD | Campo ERP | Descrição |
CompanyId | NA | |
BranchId | saldo-estoq.cod-estabel | |
ItemCode | saldo-estoq.it-codigo | Código Item |
ItemDescription | item.descricao | Descrição Item |
ReferenceCode | saldo-estoq.cod-refer | Código Roteiro |
WarehouseCode | saldo-estoq.cod-depos | Descrição Roteiro |
LotCode | saldo-estoq.lote | Roteiro Alternativo |
SubLotCode | NA | Sub-lote |
NumberSeries | NA | Número de Série |
AddressCode | saldo-estoq.cod-localiz | Localização/Endereço |
LotDueDate | saldo-estoq.dt-vali-lote | Validade do Lote |
CurrentStockAmount | Saldo Atual | |
QuantityUpdated | Quantidade Atualizada | |
InputOutput | Entrada(Verdadeiro) ou Saída(Falso) | |
BookedStockAmount | Quantidade Reservada(Alocada Produção | |
AvailableStockAmount | NA | Quantidade Disponível |
Transação 03 - Localização de estoque: AddressStock_1_000
Sempre que for criada uma nova localização no CE0105, deverá enviar a mensagem. (apenas na criação)
Lista | Campo XSD | Campo ERP | Descrição |
CompanyId | NA | Código da Empresa | |
BranchId | localizacao.cod-estabel | Código da Filial | |
AddressInternalId | cod-estabel, cod-depos, cod-localiz | InternalId da chave completa de empresa do produto | |
WarehouseCode | localizacao.cod-depos | Código Armazém(Depósito) | |
LocationCode | localizacao.cod-localiz | Código do Endereço (Localização de Estoque) | |
AddressStorckDescription | localizacao.descricao | Descrição do Endereço |
Protótipo de Tela
Protótipo de Tela
Inserir na CDAPI990.i1(pi-exporta-mensagem) a validação de somente exportar quando o parâmetro esteja ativo(param-cp.gera-log-erro).
Corrigir os programas que estão comentados para chamada da pi-exporta-mensagem:
invwr\v01in084.w
invwr\v16in144.w
invwr\v34in172.w
As funções de estrutura (EN0105, e EN0109) sempre que alterarem alguma estrutura de um item, filtrarão por <param-integr-mes.idi-entidade> = 2, para envio da mensagem xml (ItemStructure).
As funções de item (cd0204 e cdapiitem) sempre que criarem um novo item, filtrarão por <param-integr-mes.idi-entidade> = 2, para envio da mensagem xml.
Obs.: Os campos que serão usados para filtrar estrutura e item: <it-codigo>, <ge-codigo> e <fm-codigo> (igualar com <param-integr-mes.cod-campo>)
As funções de centro de trabalho, motivo de parada, motivo de refugo, quando alterarem qualquer registro, enviarão respectivamente a mensagem xml (Machine, StopReason, WasteReason).
Criar adapters de Recebimento de mensagem para as tabelas de motivo de parada, motivo de refugo(o campo Rejeição é estrangeiro e obrigatório na inclusão. Definir qual será o padrão para este campo, caso o Refugo seja alimentado a partir do TOTVS-MES ao ERP).Obs.: inserir nos programas que enviam mensagens a geração do log de erros (pi-exporta-mensagem da cdapi990).
Criar nova pasta no CP0106B, para realizar o filtro de saldos que serão enviados na Integração. (gravar na tabela: <param-integr-mes>)
Para esta pasta os campos a serem gravados utilizarão <param-integr-mes.idi-entidade> = 3 // Saldo Item
No campo <param-integr-mes.cod-campo> conterá os seguintes elementos para guardar: <it-codigo>, <fm-codigo>, <ge-codigo>, <cod-estabel>, <cod-depos>, <cod-localiz> e <esp-docto>
Fluxo do Processo
Diagrama de Sequência da Integração TOTVS-MES
As sequências 6, 7 e 12, que estão representadas em Verde, no diagrama acima, foram criadas na 1.a fase da integração, mas sofrerão alterações na 2.a fase.
[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. |
---|
...