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.
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.
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] |
| - | ||||||
TransferWarehouseAdapter Transferência Depósito (Recebimento) | [Criação | Requisição de Materiais (recebimento) CPAPI012 | [Alteração] |
| -SFAPI010 | ||||
CE0105 - | Reporte de Parada (recebimento)Localização de Estoque | [Alteração] | - | SFAPI009 - Reporte de Operação (recebimento) | [Alteração] | CPAPI001 - Reporte de Produção (recebimento) | |||
AddressStockFactory | [Criaçã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 | |||||
01 | Solicitação Saldo do Item(Request) | PPI | Datasul | StockLevel_2_000 | |||||
02 | Transferência Depósito | 10 | Reporte de Parada | PPI | Datasul | StopReportTransferWarehouse_1_000003 | |||
03 | Localização/Endereço | Datasul | 11 | Requisição Componente | PPI | Datasul | ItemScriptAddressStock_1_000 | ||
1218 | Reporte Envio de ProduçãoSaldo do Item | PPI | Datasul | ProductionAppointment_1_000 | 13 | Reporte de Produção | PPI | Datasul | ProductionAppointmentItemStockLevel_1_000 |
Transação 08 - Ordem de Produção: ProductionOrder_2_00201 - 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 | Code | ctrab.cod- | ctrabrefer | Código | MáquinaRoteiro |
WarehouseInternalId | ctrabsaldo-estoq. | descod- | ctrabDescrição Máquina | |||
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
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. |
---|
...