Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

 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.89

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 “mcc“html-webappmcc-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 emit                      LIKE emitente.nome-emit

    FIELD natureza-desc         AS desc                AS CHARACTER FORMAT "x(40)"

    FIELD cod-cond-pag-desc     LIKE desc        LIKE cond-pagto.descricao

    FIELD end-entrega-desc      desc           LIKE estabelec.nome

    FIELD end-cobranca-desc     LIKE desc        LIKE estabelec.nome

    FIELD cod-transp-desc       desc             LIKE transporte.nome

    FIELD via-transp-desc       AS desc              AS CHARACTER FORMAT "x(40)"

    FIELD frete-desc            desc                       AS CHARACTER FORMAT "x(40)"

    FIELD situacao-desc         desc                 AS CHARACTER FORMAT "x(40)"

    FIELD i-moeda-desc          LIKE desc                 LIKE moeda.descricao

    FIELD ind-orig-entrada-desc AS    AS CHARACTER FORMAT "x(40)"

    FIELD ind-via-envio-desc    desc         AS CHARACTER FORMAT "x(40)"

    FIELD responsavel-desc      LIKE desc          LIKE usuar-mater.nome

    FIELD cod-mensagem-des      LIKE mensagem.descricao

    FIELD cod-estab-gestor-desc LIKE  LIKE estabelec.nome

    FIELD cod-emit-terc-desc    LIKE desc        LIKE emitente.nome-emit

    FIELD valor-total           AS total                      AS DECIMAL FORMAT ">>>>>,>>>,>>9.99"

    FIELD valor-aberto          AS aberto                  AS DECIMAL FORMAT ">>>>>,>>>,>>9.99"

    FIELD des-contrat           contrat                   LIKE contrato-for.des-contrat     

    FIELD cod-tipo-contrat      LIKE contrat            LIKE contrato-for.cod-tipo-contrat

    FIELD ind-sit-contrat       contrat               LIKE contrato-for.ind-sit-contrat

    FIELD ind-sit-item-desc     AS desc          AS CHARACTER FORMAT "x(40)"

    FIELD cod-tipo-contrat-desc   LIKE tipo-contrat.des-tipo-contrat

    FIELD aprovado              AS aprovado                      AS LOGICAL

    FIELD aprov-total            AS total                    AS LOGICAL

    FIELD epc-value                     AS CHARACTER FORMAT “x(200)”.

 

DEFINE TEMP-TABLE ttOrdemCompra NO-UNDO

    FIELD numero-ordem   ordem LIKE ordem-compra.numero-ordem

    FIELD cod-estabel     LIKE ordem-compra.cod-estabel

    FIELD it-codigo      LIKE codigo          LIKE ordem-compra.it-codigo

    FIELD it-codigo-desc LIKE ITEM.desc-item

    FIELD qt-solic       LIKE solic            LIKE ordem-compra.qt-solic

    FIELD un             un                   LIKE prazo-compra.un

    FIELD situacao       LIKE situacao          LIKE ordem-compra.situacao

    FIELD situacao-desc  desc AS CHARACTER

    FIELD data-entrega   entrega   LIKE prazo-compra.data-entrega

    FIELD parcelado      parcelado       AS LOGICAL

    FIELD nr-requisicao  LIKE ordem-compra.nr-requisicao

    FIELD data-cotacao   LIKE cotacao  LIKE ordem-compra.data-cotacao

    FIELD mo-codigo      LIKE ordem-compra.mo-codigo

    FIELD num-pedido     LIKE pedido    LIKE ordem-compra.num-pedido

    FIELD preco-unit     LIKE unit      LIKE ordem-compra.preco-unit

    FIELD aprovada              aprovada       AS LOGICAL

    FIELD epc-value AS      AS CHARACTER FORMAT “x(200)”. 

 

DEFINE TEMP-TABLE ttAltPed NO-UNDO

       FIELD cod-cond-pag      pag             LIKE alt-ped.cod-cond-pag

       FIELD data              LIKE data                            LIKE alt-ped.data

       FIELD data-entrega      LIKE entrega              LIKE alt-ped.data-entrega

       FIELD hora              LIKE alt-ped.horahora                           LIKE alt-ped.hora

       FIELD nome-abrev        abrev               LIKE alt-ped.nome-abrev

       FIELD num-pedido        pedido               LIKE alt-ped.num-pedido

       FIELD numero-ordem      LIKE ordem          LIKE alt-ped.numero-ordem

       FIELD observacao        observacao               LIKE alt-ped.observacao

       FIELD parcela           LIKE parcela                      LIKE alt-ped.parcela

       FIELD preco             preco                         LIKE alt-ped.preco

       FIELD quantidade        LIKE quantidade                LIKE alt-ped.quantidade

       FIELD usuario           LIKE usuario                      LIKE alt-ped.usuario

       FIELD preco-novo        LIKE novo                LIKE alt-ped.preco

       FIELD data-entrega-nova LIKE    LIKE alt-ped.data-entrega

       FIELD quantidade-nova   LIKE nova      LIKE alt-ped.quantidade

       FIELD cod-cond-pag-nova AS  AS CHARACTER

       FIELD char-1            LIKE 1                      LIKE alt-ped.char-1

       FIELD epc-value AS                AS CHARACTER FORMAT “x(200)”.

 

DEFINE TEMP-TABLE ttRecebimento NO-UNDO

    FIELD cod-movto       movto             LIKE recebimento.cod-movto

    FIELD data-movto      LIKE movto            LIKE recebimento.data-movto

    FIELD nat-operacao    operacao         LIKE recebimento.nat-operacao

    FIELD num-seq-event   LIKE event      LIKE recebimento.num-seq-event

    FIELD num-seq-item    LIKE item        LIKE recebimento.num-seq-item

    FIELD num-seq-medicao LIKE recebimento.num-seq-medicao

    FIELD numero-nota     nota         LIKE recebimento.numero-nota

    FIELD num-pedido      LIKE pedido          LIKE recebimento.num-pedido

    FIELD parcela         parcela                 LIKE recebimento.parcela

    FIELD pre-unit-for    for           LIKE recebimento.pre-unit-for

    FIELD preco-unit      unit             LIKE recebimento.preco-unit

    FIELD quant-receb     LIKE receb          LIKE recebimento.quant-receb

    FIELD serie-docto     LIKE docto           LIKE recebimento.serie-docto

    FIELD valor-total     total             LIKE recebimento.valor-total

    FIELD cod-movto-desc  desc   AS character

    FIELD epc-value AS            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   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                          RUN pi-verifica IN h-cdapi172 (INPUT 6,

                                                          INPUT                                                                           INPUT ROWID(ordem-compra),

                                                          OUTPUT l-pedido-pendente).

                 END.

     

                                                                          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                                    RUN pi-verifica IN h-cdapi172 (INPUT 6,

                                                                             INPUT                                                                                     INPUT ROWID(ordem-compra),

                                                                             OUTPUT l-pendente).

                                                                                    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                            ASSIGN l-aprov-total = YES.

            RUN                          RUN pi-verifica IN h-cdapi172 (INPUT 4,

                                                            INPUT ROWID(ordem-compra),

                                                                            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                           RUN pi-verifica IN h-cdapi172 (INPUT 4,

                                                            INPUT ROWID(ordem-compra),

                                                                           INPUT ROWID(ordem-compra),

                                                                           OUTPUT                                                             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                          ASSIGN l-aprov-total = YES.

      

       RUN pi-                         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 à

    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 cotação-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

     purchaseorderdetail

     purchaseorderlinedetail

    Descrição

    Consulta de Pedido de Compra

    Consulta de Ordem de Compra

    Módulo

     mcc

    mcc 

    Programa base

     purchaseorderdetail

    purchaseorderlinedetail 

    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

     purchaseorderdetail

     purchaseorderlinedetail

    Descrição

    Consulta de Pedido de Compra

    Consulta de Ordem de Compra

    Nome Externo

     mcc/purchaseorder/detail

     

    Nome Menu/Programa

    (Max 32 posições)

    (Max 32 posições)

    Nome Verbalizado[1]

    (Max 254 posições)

    (Max 254 posições)

    Procedimento

     purchaseorderdetail

     purchaseorderlinedetail 

    Template

    (Verificar lista de opções no man01211)

    (Verificar lista de opções no man01211)

    Tipo[2]

    Consulta/Manutenção/ Relatório/Tarefas

    Consulta/Manutenção/ Relatório/Tarefas

    Interface

    GUI/WEB/ChUI/Flex

    GUI/WEB/ChUI/Flex

    Categoria[3]

     

     

    Executa via RPC

    Sim/Não

    Sim/Não

    Registro padrão

    Sim

    Sim

    Outro Produto

    Não

    Não

    Visualiza Menu

    Sim/Não

    Sim/Não

    Query on-line

    Sim/Não

    Sim/Não

    Log Exec.

    Sim/Não

    Sim/Não

    Rotina (EMS)

     

     

    Sub-Rotina (EMS)

     

     

    Localização dentro da Sub Rotina (EMS)

     

     

    Compact[4]

    Sim/Não

    Sim/Não

    Home[5]

    Sim/Não

    Sim/Não

    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.

     

                                                                     INPUT ROWID(ordem-compra),

                                                                     OUTPUT l-pendente).

                     <

    [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.                                                             

     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.8

    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.

     Image Removed

     

    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.

    Image Removed

    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

    Image Removed

     

    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.

    Image Removed

     

    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.

     

     Image Removed

    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 “mcc-webapp-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)

     

    {ininc/i05in065.i 04 contrato-for.ind-sit-contrat}

    Campo temp-tableLabelFormato / Como preencher
    numero-ordemNúmeroLIKE ordem-compra.numero-ordem
    naturezaNão vai em telaLIKE ordem-compra.natureza
    natureza-desc        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  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)

    Agrupador Item Contrato (para localizar o 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>)

     

    cotação
    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).

     


    valor
    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”.

     

    char1           
    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

     purchaseorderdetailhtml.cc0509

     purchaseorderlinedetailhtml.cc0505

    Descrição

    Consulta de Pedido de Compra

    Consulta de Ordem de Compra

    Módulo

     mcc

    mcc 

    Programa base

     purchaseorderdetail

     html.cc0509

    html.cc0505purchaseorderlinedetail 

    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

     purchaseorderdetailhtml.cc0509

     purchaseorderlinedetailhtml.cc0505

    Descrição

    Consulta de Pedido de Compra

    Consulta de Ordem de Compra

    Nome Externo

     mcc/purchaseorder/detail

     mcc/purchaseorderline/detail

    Nome Menu/Programa

    (Max 32 posições)

    Consulta Pedido de Compra

    Consulta Ordem de Compra(Max 32 posições)

    Nome Verbalizado[1]

    (Max 254 posições)

    Consultar Pedido de Compra

    Consultar Ordem de Compra(Max 254 posições)

    Procedimento

     purchaseorderdetailhtml.cc0509

     purchaseorderlinedetail html.cc0505

    Template

    Programa HTML

    Programa HTML

    Tipo[2]

    Consulta

    Consulta

    Interface

    WEB

    WEB

    Categoria[3]

     -

     - 

    Executa via RPC

    SimNãoSim

    Não

    Registro padrão

    Sim

    Sim

    Outro Produto

    Não

    Não

    Visualiza Menu

    Sim

    Sim

    Query on-line

    SimNãoSim

    Não

    Log Exec.

    SimNãoSim

    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.