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 | Compras |
Segmento Executor | Manufatura | ||
Projeto1 | D_MAN_COM001 | IRM1 | PCREQ-518 |
Requisito1 | PCREQ-5120 | Subtarefa1 | PDRMAN-3653 |
Chamado2 |
| ||
Release de Entrega Planejada | 12.1.9 | Réplica | Não |
País | ( X ) Brasil ( ) Argentina ( ) Mexico ( ) Chile ( ) Paraguai ( ) Equador ( ) USA ( ) Colombia ( ) Outro _____________. | ||
Outros | Não se aplica |
Legenda: 1 – Inovação 2 – Manutenção (Os demais campos devem ser preenchidos para ambos os processos).
Objetivo
Converter as telas de consultas de pedido de compra e ordem de compra existentes no módulo de compras que estão na tecnologia do Adobe Flex para utilizar o novo Framework HTML da TOTVS.
Definição da Regra de Negócio
As telas que deverão ser convertidas são listadas na sequência.
Rotina | Tipo de Operação | Opção de Menu | Regras de Negócio |
Consulta Ordem de Compra | Criação | Logística -> Compras -> Consultas | - |
Consulta Pedido de Compra | Criação | Logística -> Compras -> Consultas | - |
Exemplo de Aplicação:
Alguns navegadores deixarão de suportar plug-ins em breve, como é o caso do Flash Player, utilizado para execução das interfaces Flex. Com isso existe a necessidade de migrar as interfaces para uma tecnologia compatível com os navegadores.
Detalhar Pedido de Compra
Em flex o layout da tela é o apresentado abaixo. De modo geral, a tela conterá as mesmas informações e funcionalidades.
Em HTML a nova interface terá o nome de “Consultar Pedido de Compra”, isso porque ela terá como objetivo além de detalhar as informações de um pedido de compra previamente selecionado (quando as demais interfaces forem convertidas), de poder consultar qualquer pedido de compra, ou seja a tela poderá ser aberta diretamente do menu, e possibilitar ao usuário informar um pedido de compra para consulta.
A ideia da uma interface será conforme as telas apresentadas na sequência. As informações mais relevantes do cabeçalho do pedido serão apresentadas no início da tela:
- Número do pedido
- Fornecedor (código e nome)
- Natureza
- Se é ou não um pedido emergencial
- Se o pedido está ou não aprovado (CAMPO NOVO – não existia no Flex)
- Valor Total
- Valor Aberto
- Condição de pagamento (código e descrição)
- Estabelecimento de entrega
- Estabelecimento de cobrança
- Pacote de compra
- Transportador (código e nome)
- Via de transporte
- Frete (incluso ou não)
- Flag de impressão de pedido
- Situação
- Data de Emissão
Obs.: Quando houver condição de pagamento específica para o pedido, ao invés de apresentar o código e descrição, será apresentada uma lista das condições (contendo percentual, descrição e comentários)
No campo de Número do pedido, haverá um zoom, que permitirá ao usuário informar ou pesquisar o pedido que deseja. O zoom deverá permitir a busca por número do pedido, data, nome abreviado e nome do fornecedor. As colunas apresentarão as seguintes informações:
- Número do pedido;
- Nome abreviado do fornecedor;
- CNPJ/CPF do fornecedor;
- Data do pedido;
- Contrato;
- Natureza.
Haverá um link “Mais detalhes”, que conterá três agrupadores com as informações de Complementos, Motivo de Eliminação e Contrato.
Complementos:
- Moeda original (código e descriação)
- Origem
- Envio
- Responsável (código e nome)
- Mensagem (código e descriação)
- Estabelecimento Gestor (código e descriação)
- Emitente Entrega (código e nome)
- Comentários
Contrato (as informação de contrato só serão apresentadas se houver contrato para o pedido):
- Número
- Descrição
- Modalidade
- Situação
Abaixo existirão três abas para apresentar as Ordens de Compra, Recebimentos e Alterações do pedido:
Ordens de Compra:
- Número
- Item (código e descrição)
- Quantidade (quantidade solicitada)
- Unidade de medida
- Entrega (se houver uma mostra a data senão mostra “Parcelada”)
- Situação
- Requisição
- Se a ordem está ou não aprovada (CAMPO NOVO – não existia no Flex)
Obs.: O usuário terá a possibilidade de detalhar cada uma das ordens de compra, o detalhe abrirá a tela “Consultar Ordem Compra” (detalhada na sequência).
Recebimentos:
- Data
- Parcela
- Série
- Documento
- Natureza de Operação
- Tipo
- Quantidade
- Valor
Alterações:
- Ordem
- Parcela
- Alteração
- Hora
- Usuário
- Condição de pagamento
- Nova condição de pagamento
- Preço Unitário
- Novo Preço
- Quantidade
- Nova Quantidade
- Data de Entrega
- Nova Data de entrega
- Comentários
Através da opção “Trocar Moeda”, no botão de “Outras ações”, o usuário terá acesso a tela para selecionar outra moeda na qual deseja visualizar o valor do pedido. Obs.: Mesmo funcionamento da tela anterior.
Detalhar Ordem de Compra
Em flex o layout da tela é o apresentado abaixo. De modo geral, a tela conterá as mesmas informações e funcionalidades.
Em HTML a nova interface terá o nome de “Consultar Ordem de Compra”, isso porque ela terá como objetivo além de detalhar as informações de uma ordem de compra previamente selecionada (quando as demais interfaces forem convertidas), de poder consultar qualquer ordem de compra, ou seja a tela poderá ser aberta diretamente do menu, e possibilitar ao usuário informar um ordem de compra para consulta.
A ideia da uma interface será conforme as telas apresentadas para o pedido de compra. As informações mais relevantes do cabeçalho do ordem de compra serão apresentadas no início da tela:
- Número da ordem
- Natureza
- Situação
- Item (código e descrição)
- Quantidade
- Unidade de medida (código e descrição)
- Quantidade Recebida das Faturas / Entregas Futura e Fat. Antecipado
- Estabelecimento (código e descrição)
- Depósito (código e descrição)
- Data emissão
- Agrupador “Reponsáveis”
- Requsitante (código e nome)
- Comprador (código e nome)
- Agrupador “Outros”
- Pedido de Compra
- Pacote de Compra
No campo de Número da ordem, haverá um zoom, que permitirá ao usuário informar ou pesquisar a ordem que deseja. O zoom deverá permitir a busca por número da ordem, e código do item. As colunas apresentarão as seguintes informações:
- Ordem
- Item
- Descrição do item
- Requisitante
Haverá um link “Mais detalhes”, que conterá agrupadores com as informações de Integrações, Descrição Complementar, Contrato e Item do Contrato.
Integrações:
- Ordem Investimentos
- Empresa
- Ordem de serviço
- Operação
- Conta (código e descrição)
- Centro de custo (código e descrição)
- Tipo de despesa
- Estabelecimento Gestor
- Expectativa de Compra
- Prioridade de Aprovação
Contrato (as informação de contrato só serão apresentadas se houver contrato para a ordem):
- Número
- Descrição
- Modalidade (código e descrição)
- Situação
Item de Contrato
- Sequência
- Tipo de controle
- Controle de Evento
Abaixo existirão 7 abas para apresentar as Cotações, Entregas, Requisições de Compra, Unidades de Negócio, Recebimentos/Devoluções, Alterações e Eventos:
Cotações:
- Data
- Fornecedor (código)
- Nome (abreviado)
- Moeda
- Preço Unitário Final
- % IPI
- % Desconto
- Contato
Obs.: Além dessas informações deverá existir um link “Mais detalhes” onde o usuário poderá visualizar as seguintes informações:
- Nome completo do fornecedor
- UM Interna (código e descrição)
- UM Fornecedor (código e descrição)
- Fabricante (código e nome) - Obs.: Apenas mostrar esse campo se a função de integração com o HIS
- Agrupador “Valores”
- Preço UM Interna
- Preço UM Fornecedor
- Cotação Moeda
- Valor desconto
- Agrupador “Frete”
- Transportador (código e nome)
- Valor frete
- Frete incluso
- Preço Unit Fornecedor
- Agrupador “Fiscal”
- Valor IPI
- IPI Inclso
- Alíquota ICMS
- ICMS
Entregas:
Antes de mostrar a listagem, mostrar o campo Quantidade a receber.
- Parcela
- Entrega
- Situação
- Quantidade
- Qtde Receb
- Qtde Devol
- Qtde Saldo
- Qtde Alocada Parc
- UM
- Referência
- Ato Concessório
Requisições de Compra:
- Número
- Necessidade
- Atendimento
- Situação
- Conta
- Centro de Custo
- Quantidade
Importante: Inicialmente não haverá a opção de detalhar neste ponto, pois a tela de detalhe de requisição será construída posteriormente.
Unidades de Negócio:
- Código
- Descrição
- Percentual
Recebimentos/Devoluções :
- Data
- Parcela
- Série
- Documento
- Natureza de Operação
- Tipo
- Quantidade
- Valor Total
Alterações:
- Parcela
- Alteração
- Hora
- Usuário
- Preço Unitário
- Novo Preço
- Quantidade
- Nova Quantidade
- Condição de pagamento
- Nova condição de pagamento
- Data de Entrega
- Nova Data de entrega
- Comentários
Eventos:
- Evento
- Sequência
- Execução
- Descrição
Assim como na consulta de pedido de compra, através da opção “Trocar Moeda”, no botão de “Outras ações”, o usuário terá acesso a tela para selecionar outra moeda na qual deseja visualizar os valores da ordem de compra.
Protótipo de Tela
Apresentados juntamente com as regras de negócio.
Diagrama de Ação
Primeiramente, como essas telas são as primeiras do módulo de compras que estão sendo construídas com o novo framework em HTML, é importante lembrar que será necessário criar toda a estrutura de de projeto para o módulo de compras MCC.
O nome do “war” gerado dentro de “ear” para o módulo de compras deverá ser “html-mcc-11.5.X-SNAPSHOT.war”.
As telas deverão utilizar os padrões do novo framework, prevendo traduções e também chamadas para tratamento de epc. Deverão haver pontos padrões de forma que seja possível por exemplo, alterar o conteúdo de um campo, criar novos ou eliminar algum.
Pedido de compra
A tela de consulta de pedido de compra, deverá ficar dentro do diretório “purchaseorder/detail”, com o nome de “purchaseorder.detail.html”, lembrando que posteriormente haverão as demais telas de pedido (listagem, inclusão, etc.).
Para a parte progress, deverá ser criada uma nova API (ccp/ccapi351.p) para retorno de dados do pedido de compra, todos em uma única chamada. A ideia é utilizar DataSet para facilitar esse retorno.
A procedure principal deverá ter o nome de “purchaseOrderDetails” e deverá receber como parâmetro o número do pedido de compra, a data para conversão da cotação e a moeda para conversão. A procedure retornará um dataset contendo informações do pedido de compra (ttPedidoCompr), das ordens de compra (ttOrdemCompra), das alterações do pedido (ttAltPed), dos recebimentos do pedido (ttRecebimento) e das condições de pagamento específicas (ttCondEspecif).
Incluir o ponto de epc progress conforme as informações da tabela abaixo. Para a parte HTML, incluir os pontos necessários que manipular o preenchimento de campos existentes e também novos (exemplos em: http://tdn.totvs.com.br/pages/viewpage.action?pageId=185738044)
Nome do Evento | Onde deve ser colocado | Parâmetro | Valor do parâmetro |
---|---|---|---|
afterLoadPedido | Após o preenchimento dos dados de pedido de compra | Handle_ttPedido | Handle da temp-table ttPedido |
Handle_ttOrdemCompra | Handle da temp-table ttOrderCompra | ||
Handle_ttAltPed | Handle da temp-table ttAltPed | ||
Handle_ttRecebimento | Handle da temp-table ttRecebimento | ||
Handle_ttCondEspecif | Handle da temp-table ttCondEspecif |
Estrutura das temp-tables:
DEFINE TEMP-TABLE ttPedidoCompr NO-UNDO LIKE pedido-compr
FIELD nome-emit LIKE emitente.nome-emit
FIELD natureza-desc AS CHARACTER FORMAT "x(40)"
FIELD cod-cond-pag-desc LIKE cond-pagto.descricao
FIELD end-entrega-desc LIKE estabelec.nome
FIELD end-cobranca-desc LIKE estabelec.nome
FIELD cod-transp-desc LIKE transporte.nome
FIELD via-transp-desc AS CHARACTER FORMAT "x(40)"
FIELD frete-desc AS CHARACTER FORMAT "x(40)"
FIELD situacao-desc AS CHARACTER FORMAT "x(40)"
FIELD i-moeda-desc LIKE moeda.descricao
FIELD ind-orig-entrada-desc AS CHARACTER FORMAT "x(40)"
FIELD ind-via-envio-desc AS CHARACTER FORMAT "x(40)"
FIELD responsavel-desc LIKE usuar-mater.nome
FIELD cod-mensagem-des LIKE mensagem.descricao
FIELD cod-estab-gestor-desc LIKE estabelec.nome
FIELD cod-emit-terc-desc LIKE emitente.nome-emit
FIELD valor-total AS DECIMAL FORMAT ">>>>>,>>>,>>9.99"
FIELD valor-aberto AS DECIMAL FORMAT ">>>>>,>>>,>>9.99"
FIELD des-contrat LIKE contrato-for.des-contrat
FIELD cod-tipo-contrat LIKE contrato-for.cod-tipo-contrat
FIELD ind-sit-contrat LIKE contrato-for.ind-sit-contrat
FIELD ind-sit-item-desc AS CHARACTER FORMAT "x(40)"
FIELD cod-tipo-contrat-desc LIKE tipo-contrat.des-tipo-contrat
FIELD aprovado AS LOGICAL
FIELD aprov-total AS LOGICAL
FIELD epc-value AS CHARACTER FORMAT “x(200)”.
DEFINE TEMP-TABLE ttOrdemCompra NO-UNDO
FIELD numero-ordem LIKE ordem-compra.numero-ordem
FIELD cod-estabel LIKE ordem-compra.cod-estabel
FIELD it-codigo LIKE ordem-compra.it-codigo
FIELD it-codigo-desc LIKE ITEM.desc-item
FIELD qt-solic LIKE ordem-compra.qt-solic
FIELD un LIKE prazo-compra.un
FIELD situacao LIKE ordem-compra.situacao
FIELD situacao-desc AS CHARACTER
FIELD data-entrega LIKE prazo-compra.data-entrega
FIELD parcelado AS LOGICAL
FIELD nr-requisicao LIKE ordem-compra.nr-requisicao
FIELD data-cotacao LIKE ordem-compra.data-cotacao
FIELD mo-codigo LIKE ordem-compra.mo-codigo
FIELD num-pedido LIKE ordem-compra.num-pedido
FIELD preco-unit LIKE ordem-compra.preco-unit
FIELD aprovada AS LOGICAL
FIELD epc-value AS CHARACTER FORMAT “x(200)”.
DEFINE TEMP-TABLE ttAltPed NO-UNDO
FIELD cod-cond-pag LIKE alt-ped.cod-cond-pag
FIELD data LIKE alt-ped.data
FIELD data-entrega LIKE alt-ped.data-entrega
FIELD hora LIKE alt-ped.hora
FIELD nome-abrev LIKE alt-ped.nome-abrev
FIELD num-pedido LIKE alt-ped.num-pedido
FIELD numero-ordem LIKE alt-ped.numero-ordem
FIELD observacao LIKE alt-ped.observacao
FIELD parcela LIKE alt-ped.parcela
FIELD preco LIKE alt-ped.preco
FIELD quantidade LIKE alt-ped.quantidade
FIELD usuario LIKE alt-ped.usuario
FIELD preco-novo LIKE alt-ped.preco
FIELD data-entrega-nova LIKE alt-ped.data-entrega
FIELD quantidade-nova LIKE alt-ped.quantidade
FIELD cod-cond-pag-nova AS CHARACTER
FIELD char-1 LIKE alt-ped.char-1
FIELD epc-value AS CHARACTER FORMAT “x(200)”.
DEFINE TEMP-TABLE ttRecebimento NO-UNDO
FIELD cod-movto LIKE recebimento.cod-movto
FIELD data-movto LIKE recebimento.data-movto
FIELD nat-operacao LIKE recebimento.nat-operacao
FIELD num-seq-event LIKE recebimento.num-seq-event
FIELD num-seq-item LIKE recebimento.num-seq-item
FIELD num-seq-medicao LIKE recebimento.num-seq-medicao
FIELD numero-nota LIKE recebimento.numero-nota
FIELD num-pedido LIKE recebimento.num-pedido
FIELD parcela LIKE recebimento.parcela
FIELD pre-unit-for LIKE recebimento.pre-unit-for
FIELD preco-unit LIKE recebimento.preco-unit
FIELD quant-receb LIKE recebimento.quant-receb
FIELD serie-docto LIKE recebimento.serie-docto
FIELD valor-total LIKE recebimento.valor-total
FIELD cod-movto-desc AS character
FIELD epc-value AS CHARACTER FORMAT “x(200)”.
DEFINE TEMP-TABLE ttCondEspecif NO-UNDO LIKE cond-especif
FIELD epc-value AS CHARACTER FORMAT “x(200)”.
Para o preenchimento dos campos, e leituras de tabelas, utilizar como base o programa Flex (fch/fchmat/ fchmatdetailpurchaseorder.p – Procedures getOrderDetails, getOrderReceipts, getOrderUpdates, getPaymentTerms, getPurchaseContract, getRequistionsOrder).
Lembrando que é necessário formatar campos lógicos, de data e valores para serem apresentados em tela.
Para o preenchimento de descrições e campos “calculados” será necessário utilizar os eventos de call-back “AFTER-ROW-FILL” das temp-tables do dataset.
Para o preenchimento de valores totais, será necessário utilizar os eventos de call-back “BEFORE-FILL” do pedido de compra, para zerar as variáveis, “AFTER-ROW-FILL” da ordem de compra para calcular e “AFTER-FILL” do pedido para atribuir os totais.
Para o preenchimento dos campos de “aprovação” do pedido deverá ser seguida a regra abaixo:
/* Verifica se é utilizado o MLA */
if can-find(funcao where
funcao.cd-funcao = "Integra_MLA_EMS" and
funcao.ativo = yes) then do:
/* Pedido emergencial */
IF ttPedidoCompra.emergencial THEN DO:
<para buscar a empresa, verificar no programa mlaapi010d.p como é feito>
/* Pedido emergencial – Total */
IF NOT l-pedido-pendente THEN DO:
FOR FIRST mla-tipo-doc-aprov FIELDS (apr-tip-doc)
WHERE mla-tipo-doc-aprov.ep-codigo = <empresa >
AND mla-tipo-doc-aprov.cod-estabel = ttPedidoCompra.cod-estabel
AND mla-tipo-doc-aprov.cod-tip-doc = 8
AND mla-tipo-doc-aprov.apr-tip-doc = YES NO-LOCK:
ASSIGN l-aprov-total = YES.
RUN pi-verifica IN h-cdapi172 (INPUT 6,
INPUT ROWID(ordem-compra),
OUTPUT l-pedido-pendente).
END.
IF NOT AVAIL mla-tipo-doc-aprov THEN DO:
/* Pedido emergencial – Item */
FOR FIRST mla-tipo-doc-aprov FIELDS (apr-tip-doc)
WHERE mla-tipo-doc-aprov.ep-codigo = <empresa >
AND mla-tipo-doc-aprov.cod-estabel = ttOrdemCompra.cod-estabel
AND mla-tipo-doc-aprov.cod-tip-doc = 19
AND mla-tipo-doc-aprov.apr-tip-doc = YES NO-LOCK:
RUN pi-verifica IN h-cdapi172 (INPUT 6,
INPUT ROWID(ordem-compra),
OUTPUT l-pendente).
< O campo “aprovada” da ordem deverá ser preenchido com o valor da variável “l-pendente”>
END.
END.
END.
END.
ELSE DO: /* Pedido normal */
<para buscar a empresa, verificar no programa mlaapi010f.p como é feito>
/* Pedido – Total */
IF NOT l-pedido-pendente THEN DO:
FOR FIRST mla-tipo-doc-aprov FIELDS (apr-tip-doc)
WHERE mla-tipo-doc-aprov.ep-codigo = <empresa >
AND mla-tipo-doc-aprov.cod-estabel = ttPedidoCompra.cod-estabel
AND mla-tipo-doc-aprov.cod-tip-doc = 7
AND mla-tipo-doc-aprov.apr-tip-doc = YES NO-LOCK:
ASSIGN l-aprov-total = YES.
RUN pi-verifica IN h-cdapi172 (INPUT 4,
INPUT ROWID(ordem-compra),
OUTPUT l-pedido-pendente).
END.
END.
IF NOT AVAIL mla-tipo-doc-aprov THEN DO:
/* Pedido – Item */
FOR FIRST mla-tipo-doc-aprov FIELDS (apr-tip-doc)
WHERE mla-tipo-doc-aprov.ep-codigo = <empresa >
AND mla-tipo-doc-aprov.cod-estabel = ttOrdemCompra.cod-estabel
AND mla-tipo-doc-aprov.cod-tip-doc = 6
AND mla-tipo-doc-aprov.apr-tip-doc = YES NO-LOCK:
RUN pi-verifica IN h-cdapi172 (INPUT 4,
INPUT ROWID(ordem-compra),
OUTPUT l-pendente).
< O campo “aprovada” da ordem deverá ser preenchido com o valor da variável “l-pendente”>
END.
END.
END.
END.
ELSE DO: /* Aprovação de compras */
<fazer a leitura da param-aprov no início do programa>
IF AVAIL param-aprov AND param-aprov.aprov-total-pedido THEN DO:
IF NOT l-pedido-pendente THEN DO:
ASSIGN l-aprov-total = YES.
RUN pi-verifica IN h-cdapi172 (INPUT IF ttPedidoCompra.emergencial THEN 4 ELSE 6,
INPUT ROWID(ordem-compra),
OUTPUT l-pedido-pendente).
END.
END.
ELSE DO:
RUN pi-verifica IN h-cdapi172 (INPUT IF ttPedidoCompra.emergencial THEN 4 ELSE 6,
INPUT ROWID(ordem-compra),
OUTPUT l-pendente).
< O campo “aprovada” da ordem deverá ser preenchido com o valor da variável “l-pendente”>
END.
END.
Após o processamento de todas as ordens de compra, o campo “aprov-total” do pedido de compra deverá ser preenchido com o valor da variável “l-aprov-total” e o campo “aprovado” do pedido deverá ser preenchido com o valor da variável “l-pedido-pendente”.
Quando for aprovação por total no campo de aprovação das ordens, deve-se mostrar o mesmo valor que no campo de aprovação do pedido.
Para a tela de “Trocar moeda”, para o preenchimento da listagem de moedas utilizar o fchmat/fchmatcurrency.p à procedure getCurrencies.
Sobre os campos do zoom de pedido de compra:
- Pedido: pedido-compr.num-pedido
- Data pedido: pedido-compr.data-pedido
- Nome-abrev: emitente.nome-abrev (buscar pelo pedido-compra.cod-emitente)
- Nome fornecedor: emitente.nome-emit (buscar pelo pedido-compra.cod-emitente)
- CNPJ/CPF do fornecedor: emitente.cgc (buscar pelo pedido-compra.cod-emitente)
- Contrato: pedido-compr.nr-contrato
- Natureza: {ininc/i01in274.i 04 pedido-compr.natureza}
Ordem de compra
A tela de consulta de ordem de compra, deverá ficar dentro do diretório “purchaseorderline/detail”, com o nome de “purchaseorderline.detail.html”, lembrando que posteriormente haverão as demais telas de ordem de compra (listagem, inclusão, etc.).
Para a parte progress, deverá ser criada uma nova API (ccp/ccapi352.p) para retorno de dados da ordem de compra, todos em uma única chamada. A ideia é utilizar DataSet para facilitar esse retorno.
A procedure principal deverá ter o nome de “purchaseOrderLineDetails” e deverá receber como parâmetro o número da ordem de compra, a data para conversão da cotação e a moeda para conversão. A procedure retornará um dataset contendo informações da ordem de compra (ttOrdemCompra), das entregas (ttPrazoCompra), das cotações (ttCotacaoItem), das alterações da ordem (ttAltPed), dos recebimentos da ordem (ttRecebimento), dos eventos da ordem (ttEventoPed), das requisições (ttItRequisicao) e unidades de negócio (ttUnidNegoc). A estrutura das temp-tables é apresentada mais adiante nas tabelas.
Para o preenchimento dos campos, e leituras de tabelas, utilizar como base o programa Flex (fch/fchmat/ fchmatdetailpurchaserequisitions.p – Procedures getRequisitionDetail, getBusinessUnits, getDeliverySchedule, getPurchaseContract, getPurchaseEvents, getQuotes, getQuoteDetail, getReceipts, getRequests e getRequisitionUpdates).
Lembrando que é necessário formatar campos lógicos, de data e valores para serem apresentados em tela.
Para o preenchimento de descrições e campos “calculados” será necessário utilizar os eventos de call-back “AFTER-ROW-FILL” das temp-tables do dataset.
Sobre os campos do zoom de ordem de compra:
- Ordem compra: ordem-compra.numero-ordem
- Item: ordem-compra.it-codigo
- Descrição do item: item.desc-item (buscar pelo ordem-compra.it-codigo)
- Requisitante: ordem-compra.requisitante
Obs.:
- Para todas as temp-tables descritas abaixo, incluir o campo “epc-value” como indicado para os detalhes do pedido.
- Para as buscas de tabelas relacionadas sempre utilizar FOR FIRST/FOR EACH com clálsula fields
- No início ao localizar o registro, criar a temp-table e executar um buffer-copy. Após isso preencher os demais campos que dependem de alguma regra diferenciada.
- Incluir o ponto de epc progress conforme as informações da tabela abaixo. Para a parte HTML, incluir os pontos necessários que manipular o preenchimento de campos existentes e também novos (exemplos em: http://tdn.totvs.com.br/pages/viewpage.action?pageId=185738044)
Nome do Evento | Onde deve ser colocado | Parâmetro | Valor do parâmetro |
---|---|---|---|
afterLoadOrdemCompra | Após o preenchimento dos dados da ordem de compra | Handle_ttOrdemCompra | Handle da temp-table ttOrdemCompra |
Handle_ ttPrazoCompra | Handle da temp-table ttPrazoCompra | ||
Handle_ttCotacaoItem | Handle da temp-table ttCotacaoItem | ||
Handle_ttAltPed | Handle da temp-table ttAltPed | ||
Handle_ttRecebimento | Handle da temp-table ttRecebimento | ||
Handle_ttEventoPed | Handle da temp-table ttEventoPed | ||
Handle_ttItRequisicao | Handle da temp-table ttItRequisicao | ||
Handle_ttUnidNegoc | Handle da temp-table ttUnidNegoc |
ttOrdemCompra (Ler a ordem-compra pelo campo numero-ordem considerando o parâmetro passado para procedure)
Campo temp-table | Label | Formato / Como preencher |
---|---|---|
numero-ordem | Número | LIKE ordem-compra.numero-ordem |
natureza | Não vai em tela | LIKE ordem-compra.natureza |
natureza-desc | Natureza | CHARACTER FORMAT "x(40)" {ininc/i01in274.i 04 ttOrdemCompra.natureza} |
situacao | Não vai em tela | LIKE ordem-compra.situacao |
situacao-desc | Situação | {ininc/i02in274.i 04 ttOrdemCompra.situacao} |
it-codigo | Item | LIKE ordem-compra.it-codigo |
it-codigo-desc | Mostrar junto com o anterior | Buscar à item.desc-item |
qt-solic | Quantidade | LIKE ordem-compra.qt-solic |
qtd-recbda-fut | Qtd Recebida das Faturas / Entregas Futura e Fat. Antecipado | LIKE ordem-compra.qtd-recbda-fut |
cod-estabel | Estabelecimento | LIKE ordem-compra.cod-estabel |
cod-estabel-desc | Mostrar junto com o anterior | Buscar à estabelec.nome |
dep-almoxar | Depósito | LIKE ordem-compra.dep-almoxar |
dep-almoxar-desc | Mostrar junto com o anterior | Buscar à deposito.nome |
data-emissao | Data emissão | LIKE ordem-compra.data-emissao |
requisitante | Requisitante | LIKE ordem-compra.requisitante |
requisitante-desc | Mostrar junto com o anterior | Buscar à usuar-mater.nome |
cod-comprado | Comprador | LIKE ordem-compra.cod-comprado |
cod-comprado-desc | Mostrar junto com o anterior | Buscar à usuar-mater.nome |
num-pedido | Pedido de Compra | LIKE ordem-compra.num-pedido |
nr-processo | Pacote de Compra | LIKE ordem-compra.nr-processo |
num-ord-inv | Ordem Investimento | LIKE ordem-compra.num-ord-inv |
ep-codigo | Empresa | LIKE ordem-compra.ep-codigo |
ep-codigo-desc | Mostrar junto com o anterior | Buscar à empresa.nome |
ordem-servic | Ordem de serviço | LIKE ordem-compra.ordem-servic |
op-codigo | Operação | LIKE ordem-compra.op-codigo |
ct-codigo | Conta | LIKE ordem-compra.ct-codigo Obs.: Utilizar a procedure “pi-formata-conta” como base para formatar a conta. Atentar para instanciar o programa antes de todas as “utilizações” e eliminar o handle no final. |
ct-codigo-desc | Mostrar junto com o anterior | Utilizar a procedure “pi-busca-desc-conta” como base para obter a descrição. Obs.: Atentar para instanciar o programa antes de todas as “utilizações” e eliminar o handle no final. |
sc-codigo | Centro de custo | LIKE ordem-compra.sc-codigo Obs.: Utilizar a procedure “pi-formata-ccusto” como base para formatar a conta. Atentar para instanciar o programa antes de todas as “utilizações” e eliminar o handle no final. |
sc- codigo-desc | Mostrar junto com o anterior | Utilizar a procedure “pi-busca-desc-ccusto” como base para obter a descrição. Obs.: Atentar para instanciar o programa antes de todas as “utilizações” e eliminar o handle no final. |
tp-despesa | Tipo de despesa | LIKE ordem-compra.tp-despesa |
tp-despesa-desc | Mostrar junto com o anterior | Buscar à tipo-rec-desp.descricao |
cod-estab-gestor | Estabelecimento Gestor | LIKE ordem-compra.cod-estab-gestor |
cod-estab-gestor-desc | Mostrar junto com o anterior | Buscar à estabelec.nome |
expectativa | Expectativa de Compra | LIKE ordem-compra.expectativa |
prioridade-aprov | Prioridade Aprovação | LIKE ordem-compra.prioridade-aprov |
cod-unid-negoc | Não será apresentado | LIKE ordem-compra.cod-unid-negoc |
Agrupador Contrato (para localizar o contrato à contrato-for.nr-contrato = ordem-compra.nr-contrato) | ||
nr-contrato | Número | LIKE ordem-compra.nr-contrato |
des-contrat | Descrição | LIKE contrato-for.des-contrat |
cod-tipo-contrat | Modalidade | LIKE contrato-for.cod-tipo-contrat |
cod-tipo-contrat-desc | Mostrar junto com o anterior | Buscar à tipo-contrat.des-tipo-contrat |
ind-sit-item | Não será mostrado | LIKE contrato-for.ind-sit-contrat |
ind-sit-item-desc | Situação | CHARACTER FORMAT "x(40)" {ininc/i05in065.i 04 contrato-for.ind-sit-contrat} |
Agrupador Item Contrato (para localizar o item do contrtao: ordem-compra.nr-contrato = item-contrat.nr-contrato e ordem-compra.num-seq-item = item-contrat.num-seq-item) | ||
num-seq-item | Sequência | LIKE item-contrat.num-seq-item |
ind-tipo-control | Não será mostrado | LIKE item-contrat.ind-tipo-control |
ind-tipo-control-desc | Tipo de Controle | CHARACTER FORMAT "x(40)" {ininc/i04in582.i 04 item-contrat.ind-tipo-control} |
log-control-event | Controle de Evento | LIKE item-contrat.log-control-event |
Obs.: Para mostrar a Unidade de Medida da ordem, utilizar a informação da primeira entrega (prazo-compra)
ttPrazoCompra (leitura prazo-compra.numero-ordem = <número da ordem>)
Campo temp-table | Label | Formato / Como preencher |
---|---|---|
parcela | Parcela | LIKE prazo-compra.parcela |
data-entrega | Entrega | LIKE prazo-compra.data-entrega |
situacao | Não será apresentado | LIKE prazo-compra.situacao |
situacao-desc | Situação | CHARACTER FORMAT "x(40)" {ininc/i02in274.i 04 ttPrazoCompra.situacao} |
quantidade | Quantidade | LIKE prazo-compra.quantidade |
quant-receb | Qtde Receb | LIKE prazo-compra.quant-receb |
quant-rejeit | Qtde Devol | LIKE prazo-compra.quant-rejeit |
quant-saldo | Qtde Saldo | LIKE prazo-compra.quant-saldo |
quant-alocada | Qtde Alocada Parc | LIKE prazo-compra.dec-1 |
un | Unidade Medida | LIKE prazo-compra.un |
un-desc | Mostrar junto como anterior | Buscar à tab-unidade.descricao |
cod-refer | Referência | LIKE prazo-compra. cod-refer |
cod-ato-concessor
| Ato Concessório | CHARACTER FORMAT "x(30)"
&IF "{&bf_mat_versao_ems}":U >= "2.09":U &THEN prazo-compra.cod-ato-concessor &ELSE substring(prazo-compra.char-2,11,30) &ENDIF |
Quantidade a receber (soma dos saldos de todas as parcelas).
ttCotacaoItem (leitura cotacao-item.numero-ordem = <número da ordem>)
Campo temp-table | Label | Formato / Como preencher |
---|---|---|
data-cotacao | Data | LIKE cotacao-item.data-cotacao |
cod-emitente | Fornecedor | LIKE cotacao-item.cod-emitente |
nome-abrev | Mostrar junto com o acima | Buscar à LIKE emitente.nome-abrev |
mo-codigo | Moeda | LIKE cotacao-item.mo-codigo |
mo-codigo-desc | Mostrar junto com o acima | Buscar à moeda.descricao |
pre-unit-for | Preço Unitário Final | LIKE cotacao-item. pre-unit-for |
aliquota-ipi | % IPI | LIKE cotacao-item.aliquota-ipi |
perc-descto | % Desconto | LIKE cotacao-item.perc-descto |
contato | Contato | LIKE cotacao-item.contato |
Obs.: O preço unitário final deverá ser convertido para a moeda e data de cotação recebida como parâmetro (ver exemplo na procedure getQuotes – A moeda deve ser mostrada conforme a utilizada para a conversão).
Para a busca dos detalhes da cotação, deverá ser executado uma nova procedure para obter essas informações, isso é necessário por questões de performance, para que as informações sejam carregadas apenas se o usuário desejar detalhar. Para esse detalhamento será utilizado a procedure já existente “getQuoteDetail” da fch/fchmat/fchmatdetailpurchaserequisitions.p.
Campo temp-table | Label |
---|---|
cod-emitente-desc | Nome Fornecedor |
internalUM internalUMDescription | UM Interna |
un un-desc | UM Fornecedor |
manufacturer manufacturerDescription | Fabricante Obs.: Apenas mostrar esse campo se a função de integração com o HIS estiver ativa, ou seja, se o campo “activeHisFunction” estiver marcado. |
internalPrice | Preço UM Interna |
preco-fornec | Preço UM Fornecedor |
cotacao-moeda | Cotação Moeda |
valor-descto | Valor desconto |
cod-transp cod-transp-desc | Transportador |
valor-frete | Valor Frete |
frete | Frete Incluso |
pre-unit-for | Preço Unit Fornecedor |
valor-ipi | Valor IPI |
codigo-ipi | IPI Incluso |
aliquota-icm | Alíquota ICMS |
codigo-icm-desc | ICMS |
ttItRequisicao (leitura it-requisicao.numero-ordem = <número da ordem>)
Campo temp-table | Label | Formato / Como preencher |
---|---|---|
nr-requisicao | Número | LIKE it-requisicao.nr-requisicao |
dt-entrega | Necessidade | LIKE it-requisicao.dt-entrega |
dt-atend | Atendimento | LIKE it-requisicao.dt-atend |
situacao | Não será mostrado | LIKE it-requisicao.situacao |
situacao-desc | Situação | CHARACTER FORMAT "x(40)" {ininc/i01in385.i 04 ttItRequisicao.situacao} |
ct-codigo | Conta | LIKE it-requisicao.ct-codigo Obs.: Utilizar a procedure “pi-formata-conta” como base para formatar a conta. Atentar para instanciar o programa antes de todas as “utilizações” e eliminar o handle no final. |
ct-codigo-desc | Mostrar junto com o campo acima | Utilizar a procedure “pi-busca-desc-conta” como base para obter a descrição. Obs.: Atentar para instanciar o programa antes de todas as “utilizações” e eliminar o handle no final. |
sc-codigo | Centro de Custo | LIKE it-requisicao.sc-codigo Obs.: Utilizar a procedure “pi-formata-ccusto” como base para formatar a conta. Atentar para instanciar o programa antes de todas as “utilizações” e eliminar o handle no final. |
sc-codigo-desc | Mostrar junto com o campo acima | Utilizar a procedure “pi-busca-desc-ccusto” como base para obter a descrição. Obs.: Atentar para instanciar o programa antes de todas as “utilizações” e eliminar o handle no final. |
qt-requisitada | Quantidade | LIKE it-requisicao.qt-requisitada |
ttUnidNegoc
Utilizar a include no início do programa: {cdp/cd9590.i} /* Unidade de Negócio */
Verificar:
if l-mat-unid-negoc then do:
if ttOrdemCompra.cod-unid-negoc = "" THEN DO:
--> leitura unid-neg-ordem.numero-ordem = <número ordem>
END.
ELSE DO:
--> Cria a temp-table com
- código igual a “ordem-compra.cod-unid-negoc”
- descrição igual a à Buscar unid-negoc.des-unid-negoc
- percentual de 100.
END.
END.
Campo temp-table | Label | Formato / Como preencher |
---|---|---|
cod_unid_negoc | Código | LIKE unid-neg-requis.cod_unid_negoc |
des-unid-negoc | Descrição | LIKE unid-negoc.des-unid-negoc |
perc-unid-neg | Percentual | LIKE unid-neg-ordem.perc-unid-neg |
ttRecebimento (leitura pelo recebimento.numero-ordem = <número ordem>)
Obs.: O valor total deverá ser convertido para a moeda e data de cotação recebida como parâmetro (conforme é feito na procedure getReceipts).
Campo temp-table | Label | Formato / Como preencher |
---|---|---|
data-movto | Data | LIKE recebimento.data-movto |
parcela | Parcela | LIKE recebimento.parcela |
serie-docto | Série | LIKE recebimento.serie-docto |
numero-nota | Documento | LIKE recebimento.numero-nota |
nat-operacao | Nat Operação | LIKE recebimento.nat-operacao |
cod-movto | Não será mostrado em tela | LIKE recebimento.cod-movto |
cod-movto-desc | Tipo | CHARACTER FORMAT "x(40)" {ininc/i01in372.i 04 ttRecebimento.cod-movto} |
quant-receb | Quantidade | LIKE recebimento.quant-receb |
valor-total | Valor Total | LIKE recebimento.valor-total |
ttAltPed (leitura pelo alt-ped.numero-ordem = <número ordem>)
Obs.: A regra para preenchimento dos campos “preco-novo”, “quantidade-nova”, “cod-cond-pag-nova” e “data-entrega-nova” deve ser seguida conforme a procedure “getUpdatedValues”.
Campo temp-table | Label | Formato / Como preencher |
---|---|---|
parcela | Parcela | LIKE alt-ped.parcela |
data | Alteração | LIKE alt-ped.data |
hora | Hora | LIKE alt-ped.hora |
usuario | Usuário | LIKE alt-ped.usuario |
preco | Preço Unitário | LIKE alt-ped.preco |
preco-novo | Novo Preço | LIKE alt-ped.preco |
quantidade | Quantidade | LIKE alt-ped.quantidade |
quantidade-nova | Nova Quantidade | LIKE alt-ped.quantidade |
cod-cond-pag | Cond Pagamento | LIKE alt-ped.cod-cond-pag |
cod-cond-pag-nova | Nova Cond Pagamento | AS CHARACTER |
data-entrega | Data de Entrega | LIKE alt-ped.data-entrega |
data-entrega-nova | Nova Data de Entrega | LIKE alt-ped.data-entrega |
observacao | Comentários | LIKE alt-ped.observacao |
char-1 | Não será mostrado em tela | LIKE alt-ped.char-1 |
ttEventoPed (leitura pelo evento-ped.numero-ordem = <número ordem>)
Campo temp-table | Label | Formato / Como preencher |
---|---|---|
dt-evento | Evento | LIKE evento-ped.dt-evento |
seq-evento | Seq | LIKE evento-ped.seq-evento |
dat-realiz | Execução | LIKE evento-ped.dat-realiz |
des-event | Descrição | LIKE evento-ped.des-event |
Fluxo do Processo
Não se aplica.
Dicionário de Dados
Não se aplica.
Grupo de Perguntas
Não se aplica.
Consulta Padrão
Não se aplica.
Estrutura de Menu
Procedimentos
Procedimento | html.cc0509 | html.cc0505 |
Descrição | Consulta de Pedido de Compra | Consulta de Ordem de Compra |
Módulo | mcc | mcc |
Programa base | html.cc0509 | html.cc0505 |
Nome Menu | Consulta Pedido de Compra | Consulta Ordem de Compra |
Interface | WEB | WEB |
Registro padrão | Sim | Sim |
Visualiza Menu | Sim | Sim |
Release de Liberação | 12.1.8 | 12.1.8 |
Programas
Programa | html.cc0509 | html.cc0505 |
Descrição | Consulta de Pedido de Compra | Consulta de Ordem de Compra |
Nome Externo | mcc/purchaseorder/detail | mcc/purchaseorderline/detail |
Nome Menu/Programa | Consulta Pedido de Compra | Consulta Ordem de Compra |
Nome Verbalizado[1] | Consultar Pedido de Compra | Consultar Ordem de Compra |
Procedimento | html.cc0509 | html.cc0505 |
Template | Programa HTML | Programa HTML |
Tipo[2] | Consulta | Consulta |
Interface | WEB | WEB |
Categoria[3] | - | - |
Executa via RPC | Não | Não |
Registro padrão | Sim | Sim |
Outro Produto | Não | Não |
Visualiza Menu | Sim | Sim |
Query on-line | Não | Não |
Log Exec. | Não | Não |
Rotina (EMS) | - | - |
Sub-Rotina (EMS) | - | - |
Localização dentro da Sub Rotina (EMS) | - | - |
Compact[4] | - | - |
Home[5] | - | - |
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 |
Informar os papeis com os quais o programa deve ser vinculado |
|
|
Cadastro de Papéis
Não se aplica.
[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. |
---|