Produto: | Datasul |
Ocorrência: | Documentação de API |
Nome Físico | cpp/cpapi009.p |
Objetivo
Realizar o reporte da produção por item, selecionando/gerando as ordens de produção necessárias.
Funcionamento
A API funciona da seguinte forma: Recebe como parâmetros as temp-tables, faz as críticas das mesmas, caso não tenha ocorrido nenhum problema realiza o reporte dos itens informados;
Se o programa chamador executa a API várias vezes para vários reportes, as temp-tables devem ser deletadas para que não gerarem duplicidade.
Devem ser passadas 5 (cinco) temp-tables de entrada/saída.
Todas as temp-tables são passadas como parâmetro por meio do comando INPUT-OUTPUT PARAMETER TABLE.
Exemplo:
run cpp/cpapi009.p (input-output table tt-rep-prod, Input table tt-serie, Input table tt-ref-ordem, input-output table tt-erro, output table tt-relatorio, input l-deleta-erros) |
Nos atributos das tabelas temporárias de entrada e saída:
Observação: Para a definição das temp-tables deve-se utilizar as includes: cpapi009.i.
tt-red-prod | Entrada/Saída | ||||
Nesta temp-table deverão ser armazenadas todas as informações com relação aos reportes a serem realizados. | Entrada | ||||
Atributo | Tipo | Formato | Valor Inicial | Obrigatório | Evolução |
Nr-reporte | Integer | >>>>>>>>9 | 0 | Sim |
|
Data | Date | 99/99/9999 |
| Sim |
|
Qt-reporte | Decimal | “>>>,>>>,>>9.9999 | 0 | Sim |
|
Qt-refugo | Decimal | “>>>,>>>,>>9.9999 | 0 | Não |
|
Qt-estorno | Decimal | “>>>,>>>,>>9.9999 | 0 | Não |
|
Usuário | Character | x(12) | ? | Não |
|
Hora | Character | x(8) | ? | Não |
|
It-codigo | Character | x(16) | ? | Sim |
|
Ct-refugo | Character | x(8) | ? | Não |
|
Sc-refugo | Character | x(8) | ? | Não |
|
Qt-Apr-Cond | Decimal | “>>>>>,>>9.9999 | 0 | Não |
|
Nro-docto | Character | x(16) | ? | Sim |
|
Serie-docto | Character | x(5) | ? | Não |
|
Cod-depos | Character | x(3) | ? | Sim |
|
Lote-serie | Character | x(10) | ? | Não |
|
Cod-refer | Character | x(8) | ? | Não |
|
Dt-vali-lote | Date | 99/99/9999 | ? | Não |
|
Cod-localiz | Char | x(10) | ? | Não |
|
Conta-Refugo | Char | X(17) | ? | Não |
|
Cod-Estabel | Char | x(3) | ? | Sim |
|
Conta-Aplicacao | Char | X(17) | ? | Não |
|
Qt-Est-Aprov | Decimal | >>>,>>>,>>9.9999 | 0 | Não |
|
Qt-Est_refugo | Decimal | >>>,>>>,>>9.9999 | 0 | Não |
|
Cod-Local-Sai | Char | x(10) | ? | Não |
|
Cod-Depos-Sai | Char | X(3) | ? | Não |
|
Loc-Sai-Única | Logical | Sim/Não | No | Não |
|
l-emite-rel | Logical | Sim/Não | No | Não |
|
rw-rep-prod | Rowid |
| ? | Não |
|
Prog-seg | Char | x(8) | ? | Não |
|
Time-out | Integer | >>>>>>>>9 | 30 | Não |
|
tentativas | Integer | >>>>>>>>9 | 10 | Não |
|
Cod-Versão-Integracao | Integer | 999 | 0 | Sim |
|
Observação: Quando for informado um valor 0 (zero) para o campo nr-reporte, a API automaticamente irá localizar o último reporte realizado e irá utilizar esse número acrescido de 1. Além disso, será preenchido automaticamente o campo nro-docto com o número gerado.
tt-serie | Entrada/Saída | ||||
Deverão ser armazenadas nesta temp-table as informações referentes aos números de série dos itens que possuírem tipo-con-est = 2 (Número de Série). | Entrada | ||||
Atributo | Tipo | Formato | Valor Inicial | Obrigatório | Evolução |
Nr-serie | Char | x(10) | ? | Sim |
|
Sequencia | Integer |
| 0 | Sim |
|
Refugo | Logical |
| No | Não |
|
Índice | Atributos | Primário | Único |
|
|
sequencia | sequencia |
|
|
|
|
tt-ref-ordem | Entrada/Saída | ||||
Deverão ser armazenadas nesta temp-table as informações referentes às razões para o refugo dos itens, quando o reporte for de refugo ou aprovado condicionalmente. | Entrada | ||||
Atributo | Tipo | Formato | Valor Inicial | Obrigatório | Evolução |
Op-seq | Integer | >>>9 | 0 | Não |
|
Nr-ord-prod | Integer | >>>,>>>,>>9 | 0 | Não |
|
Qt-refugo | Decimal | >>>>,>>9.9999 | 0 | Sim |
|
Tipo-rejeicao | Integer | “>9 | 0 | Sim |
|
Dt-refugo | Data | 99/99/9999 | Today | Não |
|
Codigo-rejei | Integer | >>9 | 0 | Sim |
|
Observação | Char | x(40) | ? | Não |
|
descricao | Char | X(30) | ? | Não |
|
tt-erro | Entrada/Saída | ||||
Para cada reporte serão executadas validações para ver se os documentos a serem contabilizados estão corretos. Os erros encontrados na contabilização serão gravados na temp-table tt-erro. | Saída | ||||
Atributo | Tipo | Formato | Valor Inicial | Obrigatório | Evolução |
i-sequen | Integer |
| 0 |
|
|
cd-erro | Integer |
| 0 |
|
|
Mensagem | Character | x(255) | ? |
|
|
Observação:
O atributo cd-erro possui o número do erro do cadastro de mensagem;
O atributo mensagem possui a descrição da mensagem do cadastro de mensagem;
O atributo i-sequen possui o número sequencial do erro.
tt-relatorio | Entrada/Saída | ||||
Quando o parâmetro l-emite-rel da tt-rep-prod estiver setado como yes, será gerado um relatório com os movimentos de reservas do reporte. Esse relatório fica sintetizado na tt-relatorio. | Saída | ||||
Atributo | Tipo | Formato | Valor Inicial | Obrigatório | Evolução |
es-codigo | Character | x(16) |
|
|
|
qt-item | Decimal | ->>>>>,>>9.9999 | 0 |
|
|
Qt-estoq | Decimal | ->>>>>,>>9.9999 | 0 |
|
|
Qt-Saldo | Decimal | ->>>>>,>>9.9999 | 0 |
|
|
Un | Character | x(2) |
|
|
|
Descrição | Character | x(18) |
|
|
|
O programa cpp/cpapi009.p irá executar as validações, sendo que estas validações são realizadas na cpapi009.i1:
Número do Erro | Mensagem | Ajuda |
16 | Parâmetros globais não cadastrados | Parâmetros globais não cadastrados. |
56 | &1 inexistente | Verifique se existe uma ocorrência para o(a) &1 informado(a) em seu cadastro |
1059 | Parâmetros do Estoque não cadastrados | Os Parâmetros de Estoque devem ser cadastrados. |
2075 | Parâmetros de custos não cadastrado | Parâmetros do módulo de custos ainda não cadastrados. |
200 | Parâmetros da produção não cadastrados |
|
4497 | Parâmetros do módulo &1 não cadastrados |
|
3941 | Versão de integração incorreta | A versão de integração informada através dos parâmetros internos é incompatível com a versão atual da API. Favor contatar suporte técnico. |
1 | &1 já existe | Já existe ocorrência em &1 com a chave informada. |
1940 | Tipo de reporte do Item deve ser por Item |
|
1942 | Política do Item deve ser Período Fixo ou Lote Econômico |
|
1941 | Tipo de Controle do Item deve ser Físico ou Total |
|
1568 | Item está obsoleto! | O item informado está obsoleto para todas as ordens ou totalmente obsoleto. |
1947 | Referência não pertence ao item | A referência informada não pertence ao item em questão. |
1490 | Conta contábil inválida! | Conta contábil não aceita movimento. |
13 | Estabelecimento &1 não cadastrado | Código do estabelecimento não é válido. |
1586 | Data deve ser maior que último médio calculado | Data deve ser maior que último médio calculado |
3172 | Data de fabricação não se enquadra em um período de Produção |
|
3178 | Depósito de saída dos componentes deve ser de &1 |
|
530 | Depósito não cadastrado |
|
2388 | Conta Contábil de Refugo deve ser de Sistema. |
|
3166 | Depósito de destino não pode ser o de &1 |
|
2409 | Data de validade do lote deve ser maior que a de fabricação. | Data de validade do lote inválida. |
2372 | Quantidade reportada deve ser maior que 0 |
|
2170 | Soma das quantidades é maior que a quantidade reportada | Quantidade refugada e aprovada condicionalmente, supera a quantidade reportada do item. |
3175 | Documento já cadastrado! |
|
2741 | Somatório das Causas difere da quantidade de refugo | A somatória das causas informadas difere da quantidade reportada de refugo. |
2739 | Somatório das Causas difere da quantidade aprovada cond. | A somatória das causas informadas difere da quantidade aprovada condicionalmente. |
4122 | Números de série informados difere da quantidade reportada! |
|
4123 | Números de série refugados difere da quantidade de refugo! |
|
5480 | Reporte não pode ser efetuado! | Conforme parametrizado no programa "Parâmetros de Controle da Produção", não é permitida criação de ordens de produção automáticas através do "Reporte Produção Repetitiva" em casos onde o saldo das ordens em aberto não atende a quantidade que se deseja reportar.
A quantidade máxima a reportar, conforme as ordens em aberto, deste item é &1. |
Cabe ao programa de origem, verificar os registros que estão com erro.
Algumas includes da API podem ser acrescentadas a um programa e utilizadas, sem a necessidade de chamadas à API. São elas:
{CPP/CPAPI009.I1} – Validações
Esta Include possui a declaração de uma procedure interna que permite realizar a validação dos reportes sem a necessidade de chamar a api. Para que isso aconteça, basta acrescentar essa include ao programa e colocar no local pertinente a chamada para a pi-valida-rep-prod, conforme o exemplo abaixo:
Run pi-valida-rep-prod (input yes,
output c-erro,
ouput c-texto)
Antes da chamada dessa procedure, é necessária a criação do registro na temp-table tt-rep-prod, além dos respectivos assigns a fim de preencher a temp-table com os dados que serão validados.
O input parameter utilizado pela procedure indica se ela irá retornar logo após a ocorrência do primeiro erro, ou se irá acumulando todos os erros apontados, retornando apenas quando terminar todas as validações.
O retorno da procedure é feito por meio do “Return-Value”, o qual será “OK” para uma validação perfeita ou “NOK” para uma validação interrompida por qualquer tipo de erro. Os códigos de erros são retornados em forma de lista (separados por vírgulas), no output parâmetro c-erro. O Output parâmetro c-texto retorna um texto acessório que é necessário para a impressão de algumas mensagens. Quando não for necessário, é retornado em branco.
Para a exibição das mensagens, pode ser utilizado o UT-MSGS.P, na forma abaixo:
Run pi-valida-rep-prod (input yes,
output c-erro,
ouput c-texto)
if return-value = “nok” then do:
do i-cont = 1 to num-entries (c-erro):
run utp/ut-msgs.p (input "show",
input int (entry (i-cont, c-erro)),
input entry (i-cont, c-texto)).
end.
return "adm-error".
end.
Para utilização desta Include, é necessário a declaração das seguintes includes ao programa:
{cdp/cdcfgman.i}
{cdp/cdcfgmat.i}
{include/i-epc200.i}
{cpp/cpapi009.i}
{cpp/cpapi009.i6}
{cdp/cd9203.i}
{cpp/cpapi001.i30}
{cpp/cpapi009.i1}
{CPP/CPAPI009.I16} - F-Gera-Numero-Reporte
Possui a declaração de uma function que não utiliza parâmetros e tem por objetivo retornar um número de reporte válido.