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.
RN003 - O campo Rejeição é estrangeiro e obrigatório na inclusão de um Refugo.
RN011 - Informar o tipo da linha de produção na ordem(Processo ou Serviço), para que o TOTVS-MES saiba quando pode devolver apenas as requisições, sem necessidade de apontamento da produção.
OBSERVACAO: verificar o comportamento dos apontamentos com reservas com tipo Transferências, pois estes itens, mesmo com a OP com tipo de linha de serviço apresentam estes componentes.
Realizado testes utilizando cp0608(importação) e conseguiu informar o componente transferência no arquivo, ou então assumir o componente padrão da ordem.
Rotina | Tipo de Operação | Opção de Menu | Regras de Negócio |
Alocação de Reservas (envio) CPAPI013 | [Alteração] |
| - |
Requisição de Materiais (recebimento) CPAPI012 | [Alteração] |
| - |
SFAPI010 - Reporte de Parada (recebimento) | [Alteração] |
| - |
SFAPI009 - Reporte de Operação (recebimento) | [Alteração] | ||
CPAPI001 - Reporte de Produção (recebimento) | [Alteração] | ||
[Alteração] | |||
[Alteração] | |||
[Alteração] | |||
[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 |
---|---|---|---|---|
08 | Ordem de Produção | Datasul | PPI | ProductionOrder_2_002 |
09 | Ordem de Produção | Datasul | PPI | ProductionOrder_2_002 |
10 | Reporte de Parada | PPI | Datasul | StopReport_1_000 |
11 | Requisição Componente | PPI | Datasul | ItemScript_1_000 |
12 | Reporte de Produção via PCP | PPI | Datasul | ProductionAppointment_1_001 |
13 | Reporte de Produção via SFC | PPI | Datasul | ProductionAppointment_1_001 |
Transação 12 - Reporte de Produção via PCP: ProductionAppointment_1_001
Utilização da CPAPI001, terá que carregar tt-res-neg e tt-apont-mob
field nr-ord-produ like ord-prod.nr-ord-produ
field it-codigo like reservas.it-codigo
field quantidade like reservas.quant-orig
field cod-depos like reservas.cod-depos
field cod-localiz like item.cod-localiz
field lote-serie like ord-prod.lote-serie
field cod-refer like ord-prod.cod-refer
field dt-vali-lote like saldo-estoq.dt-vali-lote
field positivo as logical format "Sim/Nao"
field nro-ord-seq as integer init 0
index codigo is primary nr-ord-produ it-codigo cod-depos
index indicador positivo.
Transação 13 - Reporte de Produção via SFC: ProductionAppointment_1_001
Obs.: os campos ERP especificados como NA(Não se Aplica) na tabela serão ignorados, já os outros sem indicação da tabela ao qual o campo pertence, são inseridos na SFAPI009 por intermédio da função recebeValorCampos. Para extração de dados a partir da SFAPI009 é usada a função retornaValorCampos.
de-tempo-oper (horas centesimais)
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.
Rotina | Tipo de Operação | Opção de Menu | Regras de Negócio |
TransferWarehouseAdapter Transferência Depósito (Recebimento) | [Criação] |
| - |
CE0105 - Localização de Estoque | [Alteração] | ||
AddressStockFactory | [Criação] | ||
[Alteração] | |||
[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
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>
Protótipo de Tela
Obs.: inserir nos programas que enviam mensagens a geração do log de erros (pi-exporta-mensagem da cdapi990).
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. |
---|
...