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 EventoOnde deve ser colocadoParâmetroValor do parâmetro
afterLoadPedidoApós o preenchimento dos dados de pedido de compraHandle_ttPedidoHandle da temp-table ttPedido
Handle_ttOrdemCompraHandle da temp-table ttOrderCompra
Handle_ttAltPedHandle da temp-table ttAltPed
Handle_ttRecebimentoHandle da temp-table ttRecebimento
Handle_ttCondEspecifHandle 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 EventoOnde deve ser colocadoParâmetroValor do parâmetro
afterLoadOrdemCompra






Após o preenchimento dos dados da ordem de compra






Handle_ttOrdemCompraHandle da temp-table ttOrdemCompra
Handle_ ttPrazoCompraHandle da temp-table ttPrazoCompra
Handle_ttCotacaoItemHandle da temp-table ttCotacaoItem
Handle_ttAltPedHandle da temp-table ttAltPed
Handle_ttRecebimentoHandle da temp-table ttRecebimento
Handle_ttEventoPedHandle da temp-table ttEventoPed
Handle_ttItRequisicaoHandle da temp-table ttItRequisicao
Handle_ttUnidNegocHandle da temp-table ttUnidNegoc

 

ttOrdemCompra (Ler a ordem-compra pelo campo numero-ordem considerando o parâmetro passado para procedure)

 

Campo temp-tableLabelFormato / Como preencher
numero-ordemNúmeroLIKE ordem-compra.numero-ordem
naturezaNão vai em telaLIKE ordem-compra.natureza
natureza-desc      Natureza

CHARACTER FORMAT "x(40)"

{ininc/i01in274.i 04 ttOrdemCompra.natureza}

situacaoNão vai em telaLIKE ordem-compra.situacao
situacao-descSituaçã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 EventoLIKE 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-tableLabelFormato / 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-tableLabelFormato / 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

contatoContatoLIKE 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-tableLabel

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-descICMS

 

ttItRequisicao (leitura it-requisicao.numero-ordem = <número da ordem>)

 

Campo temp-tableLabelFormato / 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-requisitadaQuantidadeLIKE 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-tableLabelFormato / 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

PercentualLIKE 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-tableLabelFormato / 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-totalValor TotalLIKE 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-tableLabelFormato / 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-1Não será mostrado em telaLIKE alt-ped.char-1

 

ttEventoPed (leitura pelo evento-ped.numero-ordem = <número ordem>)

 

Campo temp-tableLabelFormato / 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-eventDescriçãoLIKE 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.                                                             


 

 

 

 

 

 

 

 

 

 

 

 

#trackbackRdf ($trackbackUtils.getContentIdentifier($page) $page.title $trackbackUtils.getPingUrl($page))