Páginas filhas
  • ER_MANMAT01-900_integracao_contrato_trade_easy_logix

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.                                                             

  

(Obrigatório)

Informações Gerais

 

Especificação

Produto

Logix

Módulo

Materiais

Segmento Executor

Materiais

Projeto1

MANMAT01

IRM1

MANMAT01-300

Requisito1

MANMAT01-900

Subtarefa1

 

Chamado2

 

País

(X ) Brasil  (  ) Argentina  (  ) Mexico  (  ) Chile  (  ) Paraguai  (  ) Equador

(  ) USA  (  ) Colombia   (  ) Outro _____________.

Outros

<Caso necessário informe outras referências que sejam pertinentes a esta especificação. Exemplo: links de outros documentos ou subtarefas relacionadas>.

   Legenda: 1 – Inovação 2 – Manutenção (Os demais campos devem ser preenchidos para ambos os processos). 

(Obrigatório)

Objetivo

 

Permitir que seja integrado as ordens que geram  pedidos com a Trade-easy, não sendo mais gerados pedidos que tenham contrato pelo Logix e sim enviados a Trade para serem gerados.

 

<Nesta etapa informar o objetivo da especificação do requisito, ou seja, o que a funcionalidade deve fazer. Exemplo: Permitir que o usuário defina o percentual mínimo em espécie (dinheiro), a referência mínima para calculo dos débitos do aluno e o período de validade do parâmetro de negociação>.

(Obrigatório)

Definição da Regra de Negócio

  •  

     Criação de parâmetro para indicar que os pedidos gerados por contrato serão integrados com a Trade-Easy

 Sera previsto nos programas SUP4330/SUP22104 , elaboração dos pedidos de compra, para que sejam enviadas as ordens de compra que possuirem fornecedor e número de contação, “contrato”, para a Trade.

Uma vez que as Ordens forem identificadas durante o processamento do SUP4330/SUP22104 elas serão enviadas através do mensagem única request, adapter EAIADAPTERREQUEST1.

 Sendo as ordens enviadas, colocadas como “suspensas”, e sera gravada texto "Enviadas para Trade-Easy", e não poderão ter alteradas o status pelos programas SUP0491/SUP21003.

 

<Na tabela abaixo informe quais são as rotinas envolvidas, o tipo de operação, a opção de menu e se necessário uma breve descrição das regras de negócio relacionadas a rotina>.

 

Rotina

Tipo de Operação

SUP21003 - Ordem de compra

Alteração

SUP22104 - Elaboração automática de pedidos de compra

Alteração

SUP0491 - Consulta ordens de compra

Alteração

SUP4330 - Elaboração automática de pedidos de compraAlteração
EAIADAPTERREQUEST1 - Adapter Request1Alteração
SUP10032 - Lib Adapter Request1Alteração

 

Exemplo de Aplicação:

 Criar parâmetro para identificar se os pedidos gerados por contrato serão integrados com a trade –Easy. Usar o log00086, para criar parâmetros,  de nome m_trade_int_contrt (trade integra contrato). Que  devera por default esta como “N” 

 Esse parâmetro será associado ao parâmetro  PROCESSO ENTRADAS > COMPRAS > GERAIS,   Parâmetro: Utiliza integração com o sistema Trade Easy Import?                                                                                                               Objetivo: Indica se a integração com o sistema Trade Easy – Import está ou não ativa

 OBS: valores aceitos "S" e "N"  (Alterar para S para habilitar a integração) , sugestão de nome de variável modular “m_trade_int_contrt”.

O parâmetro "m_trade_int_contrt" deverá ser criado como char(01), default para “N”.

 A intenção é  que o parâmetro irá considerar os contratos gerados pela Trade, mas para isso deverá verificar se o parâmetro:” Utiliza integração com o sistema Trade Easy Import?” Esteja como "S", caso  contrário devera desconsiderar, ira ajustar o parâmetro “m_trade_int_contrt” para “N”, mesmo que tenha sido setado para "S" no LOG000086.

 A precedência de funcionamento do parâmetro “m_trade_int_contrt” será sempre o parâmetro “integra_tradeimport”, estando desativado, nulo, ou setado para “N” o parâmetro “m_trade_int_contrt” ira ser setado para “N”.

Criar parâmetro via putty, ou telnet.

Conforme imagens de 01 até 03

  • Alteração no adapter de envio da mensagem Request para as tags que identificam as Ordens de Compra que teriam o pedido gerado automaticamente pelo Logix (fornecedor, número do contrato, etc.)

No adapter EAIADAPTERREQUEST1, sera feito alteração prevendo o uso das variáveis  other addfield, para novas tags, não sendo necessário alterar o HELPER do adapter pois faz parte da função.

TAG: 

- Fornecedor

- Moeda

- Número do contrato

Na Lib SUP10032 prever o uso das variáveis conforme imagem 04,  passando como parâmetro “FORNECEDOR”, “MOEDA” E “CONTRATO”, lembrar que o campo  condição de pagamento existe no adapter, mais não esta ajustado, para uso. Fazer a chamada da função EAIHelperRequest1_set_BusinessContent_PaymentConditionCode, passando a condição de pagamento conforme imagem 05

Tabela de variáveis do adapter EAIADAPTERREQUEST1 com registros enviados para TRADE-EASY

Campo

Tipo

Descrição

InternalId

Char

InternalId código da empresa mais ordem de compra

CompanyInternalId

Char

Código da Empresa

RequestItem_InternalId

Char

Código da empresa/ordem de compra/sequen

ItemInternalId

Char

Código da empresa/código do item

ItemCode

char

Código do item

RequestItem_Text

char

Texto, “Enviadas para Trade-Easy”

ItemReferenceCode

Char

Referencia do item

UnitPrice

Decimal

Preço unitário ordem de compra

TotalPrice

decimal

Valor total compra

DeliveryDateTime

date

Data de entrega prevista

CostCenterInternalId

char

Código da empresa/código seção recebedora

UnitOfMeasureCode

char

Unidade de medida

RequestItem_Quantity

Decimal

Quantidade solicitada

PaymentConditionInternalId

char

Condição de pagamento

ApportionRequestItem_InternalId

Char

Empresa/Ordem compra/cnt deb desp/seção recebedora

ApportionRequestItem_DepartamentInternalId

char

Empresa/ cod seção recebedora

ApportionRequestItem_CostCenterInternalId

Char

Empresa /centro de custo

ApportionRequestItem_AccountantAcountInternalId

char

Empresa /conta debito despesa

ApportionRequestItem_CostCenterInternalId

Char

Area e linha de negocio

ApportionRequestItem_AccountantAcountInternalId

Char

Conta debito despesa

ApportionRequestItem_Percentual

decimal

Percentual participaçao

ApportionRequestItem_Quantity

decimal

Quantidade de participação

 

 

 

DeliverySchedule_DeliveryID

Char

Número da programação de entrega

DeliverySchedule_QuantityRequested

Char

Quantidade solicitada

DeliverySchedule_EstimatedDeliveryDate

Char

Data de entrega prevista

deliverySchedule_Observation

Char

Observação de entrega

 

 

 

ADDFIELD_field

Char

FORNECEDOR

ADDFIELD_value

Char

Código do fornecedor

 

 

 

ADDFIELD_field

Char

MOEDA

ADDFIELD_value

Char

Código da moeda

 

 

 

ADDFIELD_field

Char

CONTRATO

ADDFIELD_value

Char

Número do contrato

 

 

 

 

 A função SUP10032, sera responsável por setar as variáveis da ordem compra, a serem enviadas pelo trade-Easy

 O adapter EAIADAPTERREQUEST1, terá que ser alterado para prever o uso dos campos já existentes no HELPER, que ainda não foram setados os valores.

Lembrando que não haverá necessidade de alteração da estrutura do XSD, uma vez que sera utilizado os campos já existentes.

 Segue abaixo “modelo” de upsert utilizado para a integração de ordem de compra e que deverá ser adequado para fazer a integração da request:

         IF find4glfunction("EAIAdapterRequest1_SendBusinessMessage") THEN

           IF SUP10032_ordem_integrada_portal() THEN

              CALL EAIMapper_Clear()

              CALL EAIMapper_set("ordem_sup.cod_empresa", p_ordem_sup.cod_empresa)

              CALL EAIMapper_set("ordem_sup.num_oc", p_ordem_sup.num_oc)

              CALL EAIMapper_set("ordem_sup.gru_ctr_desp", p_ordem_sup.gru_ctr_desp)

             CALL EAIMapper_set("ordem_sup.cod_item", p_ordem_sup.cod_item)

              CALL EAIMapper_set("ordem_sup.pre_unit_oc", p_ordem_sup.pre_unit_oc)

              CALL EAIMapper_set("ordem_sup.dat_entrega_prev", p_ordem_sup.dat_entrega_prev)

              CALL EAIMapper_set("ordem_sup.cod_secao_receb", p_ordem_sup.cod_secao_receb)

             CALL EAIMapper_set("ordem_sup.cod_unid_med", p_ordem_sup.cod_unid_med)

              CALL EAIMapper_set("ordem_sup.qtd_solic", p_ordem_sup.qtd_solic)

             CALL EAIMapper_set("ordem_sup.cnd_pgto", p_ordem_sup.cnd_pgto)

             CALL EAIMapper_set("ordem_sup.fornecedor", p_ordem_sup. fornecedor)

              CALL EAIMapper_set("ordem_sup.moeda", p_ordem_sup.moeda)

             #Num contação é o número de contrato

              CALL EAIMapper_set("ordem_sup.num_contacao", p_ordem_sup. num_contacao)

              IF NOT EAIAdapterRequest1_SendBusinessMessage("upsert") THEN

                  CALL log0030_mensagem("Problemas durante a integração com Trade. " || EAIMapper_getError(1), "exclamation")

                LET l_status = FALSE

              END IF

          END IF

        END IF

Caberá ao programa TradeEasy, ao receber um XML da mensagem gerar o pedido ,com base no número de contrato, campo ADDFIELD_field = “CONTRATO”, “FORNECEDOR”, E “MOEDA”

 Se houver necessidade de envio de novas informações sera utilizada as tags de  ADDFIELD_field e ADDFIELD_value , bem como a validação da viabilidade da regra de negócios

para comprar os novos registros ( se houver necessidade de construir funções para atender os valores solicitados nos novos campos, ocorrendo essa situação sera necessário verificar a demanda de tempo envolvida.)

 

  • Alteração na rotina de geração automática de pedidos para Ordens de Compra atendidas por contrato, visando o envio para o Trade-Easy das ordens que comporiam o pedido automático (via mensagem Request, criando solicitações de importação no Trade-Easy), suspensão destas ordens (com motivo "Enviadas para Trade-Easy") e desvio para não gerar o pedido no Logix neste momento.

 

O programa SUP2430 é responsável pela designação do fornecedor, e do número de cotação (contrato) gerando e atualizando a tabela ordem_sup, não será alterado.

Durante o processamento do programa SUP4330\SUP22104, as ordens que tiverem o fornecedor designado, e o número de contrato gerado, serão desconsideradas no processo de geração automática de pedidos do SUP4330\SUP22104.

 No programa SU4330\SUP22104, sera atualizada as ordens de compras que forem enviadas para Trade com sucesso, como “SUSPENSAS”, e não sera permitida fazer manutenção da mesmas nos programa SUP0491\SUP21003

 Incluir busca para parâmetro:

   INITIALIZE m_trade_int_contrt TO NULL

  CALL log2250_busca_parametro(p_cod_empresa,"trade_int_contrt") RETURNING m_trade_int_contrt , l_status

  IF l_status = FALSE OR

     m_trade_int_contrt  IS NULL OR

     m_trade_int_contrt  = " " THEN

     LET m_trade_int_contrt = "N"

  END IF

   INITIALIZE m_utiliza_easytrade TO NULL

  CALL log2250_busca_parametro(p_cod_empresa, "integra_tradeimport") RETURNING m_utiliza_easytrade, l_status

  IF NOT l_status OR

     m_utiliza_easytrade IS NULL OR

     m_utiliza_easytrade = ' ' THEN

     LET m_utiliza_easytrade = 'N'

  END IF

 

   #Se integração estiver desligada, a integração por contrato devera ser desligada.

  IF m_utiliza_easytrade = "N" THEN

    LET m_trade_int_contrt = "N"

  END IF     

 

 Alterar na chamada de função do sup4330, para prever nas duas chamadas para trade Easy a funções abaixo.

     IF find4GLFunction('sup10033_verifica_oc_integrado_TradeEasy') THEN

        IF sup10033_verifica_oc_integrado_TradeEasy(p_ordem_sup_orig.cod_empresa, p_ordem_sup_orig.num_oc) THEN

           WHENEVER ERROR CONTINUE

           FETCH cq_ordem_sup1 INTO p_ordem_sup_orig.*

           WHENEVER ERROR STOP

           IF sqlca.sqlcode <> 0 THEN

              EXIT WHILE

           END IF

           CONTINUE WHILE

        ELSE

           LET p_processa = TRUE

           IF sup4330_verifica_contrato() AND m_trade_int_contrt = "S" THEN

              WHENEVER ERROR CONTINUE

              FETCH cq_ordem_sup1 INTO p_ordem_sup_orig.*

              WHENEVER ERROR STOP

              IF sqlca.sqlcode <> 0 THEN

                 EXIT WHILE

              END IF

              CONTINUE WHILE

           ELSE

              IF NOT p_processa THEN

                 EXIT WHILE

              END IF

           END IF

        END IF

     END IF

 

#-----------------------------------#

FUNCTION sup4330_verifica_contrato()

#-----------------------------------#

 DEFINE l_ies_tipo_contrato  LIKE item_forn_particip.ies_tip_contrato,

        l_ies_item_contrato  SMALLINT,

        l_ies_tip_preco      LIKE cotacao_preco.ies_tip_preco

 

 LET l_ies_tipo_contrato = NULL

 WHENEVER ERROR CONTINUE

 SELECT ies_tip_contrato INTO l_ies_tipo_contrato

   FROM item_forn_particip

  WHERE cod_empresa       = p_cod_empresa

    AND cod_item          = p_ordem_sup_orig.cod_item

    AND cod_fornecedor    = p_ordem_sup_orig.cod_fornecedor

    AND dat_ini_vigencia <= m_dat_vigencia

    AND dat_fim_vigencia >= m_dat_vigencia

 WHENEVER ERROR STOP

 IF sqlca.sqlcode = 0 THEN

    IF l_ies_tipo_contrato = "1" OR l_ies_tipo_contrato = "4"

    OR (m_emit_ped_consig = "S" AND l_ies_tipo_contrato = "3") THEN

       IF l_ies_tipo_contrato = "4" THEN

          ## Caso exista um contrato tipo '4' considera para reaproveitar

          ## o pedido, pois o SUP0120 já criou o pedido

          LET p_ies_aproveita = TRUE

       END IF

       LET l_ies_item_contrato = TRUE

    ELSE

       LET l_ies_item_contrato = FALSE

    END IF

 ELSE

    LET l_ies_item_contrato = FALSE

 END IF

 

 IF l_ies_item_contrato THEN

    LET l_ies_tip_preco = NULL

    WHENEVER ERROR CONTINUE

    SELECT cotacao_preco.ies_tip_preco

      INTO l_ies_tip_preco

      FROM cotacao_preco

     WHERE cotacao_preco.cod_empresa    = p_ordem_sup_orig.cod_empresa

       AND cotacao_preco.cod_fornecedor = p_ordem_sup_orig.cod_fornecedor

       AND cotacao_preco.num_cotacao    = p_ordem_sup_orig.num_cotacao

       AND cotacao_preco.cod_item       = p_ordem_sup_orig.cod_item

       AND cotacao_preco.num_versao =

           (SELECT MAX(cotacao_preco.num_versao)

              FROM cotacao_preco

             WHERE cotacao_preco.cod_empresa    = p_ordem_sup_orig.cod_empresa

               AND cotacao_preco.cod_fornecedor = p_ordem_sup_orig.cod_fornecedor

               AND cotacao_preco.num_cotacao    = p_ordem_sup_orig.num_cotacao

               AND cotacao_preco.cod_item       = p_ordem_sup_orig.cod_item)

    WHENEVER ERROR STOP

    IF l_ies_tip_preco = "2" THEN

       # Se o item tiver contrato, verifica se a cotação que está

       # na ordem de compra é do tipo de preço '2', ou seja, se

       # foi designada manualmente. Neste caso considerará a

       # ordem como não pertencente à um contrato.

       LET l_ies_item_contrato = FALSE

    END IF

 END IF

 

 IF l_ies_item_contrato THEN

    IF NOT sup4330_suspende_ordem_sup_contrato() THEN

       LET p_processa = FALSE

       RETURN FALSE

    END IF

 

    IF NOT sup4330_send_request_ordem_sem_pedido() THEN

       LET p_processa = FALSE

       RETURN FALSE

    END IF

 

    CALL sup4330_grava_texto_suspensao_oc()

 

    RETURN TRUE

 END IF

 

 LET p_processa = TRUE

 

 RETURN FALSE

 

END FUNCTION

 

#---------------------------------------------#

 FUNCTION sup4330_suspende_ordem_sup_contrato()

#---------------------------------------------#

 

  WHENEVER ERROR CONTINUE

  UPDATE ordem_sup SET ordem_sup.ies_situa_oc = "S"

   WHERE cod_empresa      = p_ordem_sup_orig.cod_empresa

     AND num_oc           = p_ordem_sup_orig.num_oc

     AND num_versao       = p_ordem_sup_orig.num_versao

     AND ies_versao_atual = "S"

  WHENEVER ERROR STOP

   IF sqlca.sqlcode <> 0 THEN

      CALL log003_err_sql("UPDATE","ordem_sup")

       RETURN FALSE

   END IF

 

   RETURN TRUE

 

 END FUNCTION

 

#---------------------------------------------#

 FUNCTION sup4330_grava_texto_suspensao_oc()

#---------------------------------------------#

 DEFINE l_status      SMALLINT

 

  CALL supm395_ordem_sup_txt_leitura(p_ordem_sup_orig.cod_empresa,

                                     p_ordem_sup_orig.num_oc ,

                                     "P",

                                     1,

                                     TRUE,

                                     TRUE)

      RETURNING l_status

 

   CALL supm395_ordem_sup_txt_set_tex_observ_oc("Enviadas para Trade-Easy")

   IF l_status = FALSE THEN

      CALL supm395_ordem_sup_txt_set_cod_empresa(p_ordem_sup_orig.cod_empresa)

      CALL supm395_ordem_sup_txt_set_num_oc(p_ordem_sup_orig.num_oc )

      CALL supm395_ordem_sup_txt_set_ies_tip_texto("Y")

      CALL supm395_ordem_sup_txt_set_num_seq(1)

 

      CALL supt395_ordem_sup_txt_inclui(TRUE, true)

         RETURNING l_status

   ELSE

      CALL supt395_ordem_sup_txt_modifica(TRUE, TRUE)

        RETURNING l_status

  END IF

 

END FUNCTION

 

#---------------------------------------------#

 FUNCTION sup4330_send_request_ordem_sem_pedido()

#---------------------------------------------#

 

  IF p_ordem_sup_orig.num_pedido = 0 THEN

     CALL sup10032_set_cod_empresa(p_ordem_sup_orig.cod_empresa)

     CALL sup10032_set_num_oc(p_ordem_sup_orig.num_oc )

 

     CALL sup10032_set_tipo("upsert")

     CALL sup10032_exporta_ordem_compra()

          RETURNING l_status, l_msg

 

     IF l_status = FALSE THEN

        CALL log0030_mensagem(l_msg,"exclamation")

        RETURN FALSE

     END IF

  ELSE

     RETURN FALSE

  END IF

 

  RETURN TRUE

 

 END FUNCTION

 Prever também na versão metadados

 

  •   Alteração na rotina de reabertura de Ordens de Compra suspensas para não permitir alteração de status nas ordens enviadas para o Trade-Easy

             Os programas SUP0491/SUP21003, serão alterados para prever através da tabela ordem_sup_txt, as ordens que foram suspensas por terem sido enviadas a Trade na fase de geração de pedidos, com isso não deveram permitir que estas ordens seja modificadas.

Incluir busca para parâmetros

  INITIALIZE m_trade_int_contrt TO NULL

  CALL log2250_busca_parametro(p_cod_empresa,"trade_int_contrt") RETURNING m_trade_int_contrt , l_status

  IF l_status = FALSE OR

     m_trade_int_contrt  IS NULL OR

     m_trade_int_contrt  = " " THEN

     LET m_trade_int_contrt = "N"

  END IF

 

  INITIALIZE m_utiliza_easytrade TO NULL

  CALL log2250_busca_parametro(p_cod_empresa, "integra_tradeimport") RETURNING m_utiliza_easytrade, l_status

  IF NOT l_status OR

     m_utiliza_easytrade IS NULL OR

     m_utiliza_easytrade = ' ' THEN

     LET m_utiliza_easytrade = 'N'

  END IF

 

  #Se integração estiver desligada, a integração por contrato devera ser desligada.

  IF m_utiliza_easytrade = "N" THEN

    LET m_trade_int_contrt = "N"

  END IF

 

 

Acrescentar na função  

AFTER FIELD funcao

        LET l_ind   = arr_curr()

        IF  ma_array_tela[l_ind].funcao <> "S"

        AND ma_array_tela[l_ind].funcao <> " " THEN

           ERROR " Funcao invalida "

           NEXT FIELD funcao

        ELSE

           IF NOT sup0491_verifica_suspensao(l_ind) THEN

              NEXT FIELD funcao

           END IF

        END IF

#------------------------------------------#

 FUNCTION sup0491_verifica_suspensao(l_ind)

#------------------------------------------#

DEFINE l_ind       SMALLINT

 

 IF m_trade_int_contrt = "N" THEN

    RETURN TRUE

 END IF

 

 IF find4GLFunction('sup10033_verifica_oc_integrado_TradeEasy') THEN

    IF NOT sup0491_verifica_oc_integrado_TradeEasy(l_ind) THEN

       RETURN FALSE

    END IF

 END IF

 

 RETURN TRUE

 

 END FUNCTION

 

#----------------------------------------------------------------------------------------------#

 FUNCTION sup0491_verifica_oc_integrado_TradeEasy(l_ind)

#----------------------------------------------------------------------------------------------#

DEFINE l_ind            SMALLINT

 

WHENEVER ERROR CONTINUE

SELECT UNIQUE num_oc FROM ordem_sup_txt

 WHERE cod_empresa   = ma_array_tela[l_ind].cod_empresa

   AND num_oc        = ma_array_tela[l_ind].num_oc

   AND IES_TIP_TEXTO = 'Y'

   AND NUM_SEQ       = 1

   AND tex_observ_oc = 'Enviadas para Trade-Easy'

WHENEVER ERROR STOP

 IF sqlca.sqlcode <> 0 THEN

    IF sqlca.sqlcode <> 100 THEN

       CALL log003_err_sql("select","ordem_sup_txt")

       RETURN FALSE

    END IF

 ELSE

    CALL log0030_mensagem("Ordem suspensa enviada ao Trade Easy, não pode ser alterada.","INFO")

    RETURN FALSE

 END IF

 

 RETURN TRUE

 

 END FUNCTION

 

METADADOS

 

INCLUIR BUSCA PARA PARAMETROS

 

  INITIALIZE m_trade_int_contrt TO NULL

  CALL log2250_busca_parametro(p_cod_empresa,"trade_int_contrt") RETURNING m_trade_int_contrt , l_status

  IF l_status = FALSE OR

     m_trade_int_contrt  IS NULL OR

     m_trade_int_contrt  = " " THEN

     LET m_trade_int_contrt = "N"

  END IF

 

  INITIALIZE m_utiliza_easytrade TO NULL

  CALL log2250_busca_parametro(p_cod_empresa, "integra_tradeimport") RETURNING m_utiliza_easytrade, l_status

  IF NOT l_status OR

     m_utiliza_easytrade IS NULL OR

     m_utiliza_easytrade = ' ' THEN

     LET m_utiliza_easytrade = 'N'

  END IF

 

  #Se integração estiver desligada, a integração por contrato devera ser desligada.

  IF m_utiliza_easytrade = "N" THEN

    LET m_trade_int_contrt = "N"

  END IF

 

 

#----------------------------------------#

 FUNCTION sup210036_before_input_update()

#----------------------------------------#

.................

 

  IF m_trade_int_contrt = "S" THEN

     IF mr_ordem_sup_tela.ies_situa_oc <> "S" THEN

        IF NOT sup21003_verifica_suspensao() THEN

           RETURN FALSE

        END IF

     END IF

  END IF

 

#------------------------------------------#

 FUNCTION sup21003_verifica_suspensao()

#------------------------------------------#

 

 IF m_trade_int_contrt = "N" THEN

    RETURN TRUE

 END IF

 

 IF find4GLFunction('sup10033_verifica_oc_integrado_TradeEasy') THEN

    IF NOT sup21003_verifica_oc_integrado_TradeEasy() THEN

       RETURN FALSE

    END IF

 END IF

 

 RETURN TRUE

 

 END FUNCTION

 

#----------------------------------------------------------------------------------------------#

 FUNCTION sup21003_verifica_oc_integrado_TradeEasy()

#----------------------------------------------------------------------------------------------#

DEFINE l_ies_situa_oc    LIKE ordem_sup.ies_situa_oc

 

 WHENEVER ERROR CONTINUE

  SELECT ies_situa_oc INTO l_ies_situa_oc

   WHERE cod_empresa      = mr_ordem_sup.cod_empresa

     AND num_oc           = mr_ordem_sup.num_oc

     AND ies_versao_atual = 'S'

 WHENEVER ERROR STOP

 

  IF l_ies_situa_oc = "S"

     AND mr_ordem_sup.ies_situa_oc <> "S" THEN

     WHENEVER ERROR CONTINUE

     SELECT UNIQUE num_oc FROM ordem_sup_txt

      WHERE cod_empresa   = mr_ordem_sup.cod_empresa

        AND num_oc        = mr_ordem_sup.num_oc

        AND IES_TIP_TEXTO = 'Y'

        AND NUM_SEQ       = 1

        AND tex_observ_oc = 'Enviadas para Trade-Easy'

     WHENEVER ERROR STOP

      IF sqlca.sqlcode <> 0 THEN

         IF sqlca.sqlcode <> 100 THEN

            CALL log003_err_sql("select","ordem_sup_txt")

            RETURN FALSE

         END IF

      ELSE

         CALL log0030_mensagem("Ordem suspensa enviada ao Trade Easy, não pode ser alterada.","INFO")

         RETURN FALSE

      END IF

  END IF

 

 RETURN TRUE

 

 END FUNCTION

 

 

 

#---------------------------------------#

 FUNCTION sup21003_before_input_update()

#---------------------------------------#

 

  LET m_funcao = "MODIFICACAO"

  LET m_funcao_repete = FALSE   # TSFI52

  LET m_cod_item_original = mr_ordem_sup_tela.cod_item

  IF mr_ordem_sup_compl.num_lista > 0 THEN

     CALL log0030_mensagem("Ordem de compra pertence à lista de compras. Utilize SUP21017.","info")

     RETURN FALSE

  END IF

 

  IF m_trade_int_contrt = "S" THEN

     IF mr_ordem_sup_tela.ies_situa_oc <> "S" THEN

        IF NOT sup21003_verifica_suspensao() THEN

           RETURN FALSE

        END IF

     END IF

  END IF

       

        

 

 

 

Opcional

Protótipo de Tela

 

Imagem 01

Imagem 02

Imagem 03

Imagem 04

Imagem 05

<Caso necessário inclua protótipos de telas com o objetivo de facilitar o entendimento do requisito, apresentar conceitos e funcionalidades do software>.

 

Protótipo 01

 

 

 Image Removed

 

 

 

 

 

 

Opcional

Fluxo do Processo

 

<Nesta etapa incluir representações gráficas que descrevam o problema a ser resolvido e o sistema a ser desenvolvido. Exemplo: Diagrama - Caso de Uso, Diagrama de Atividades, Diagrama de Classes, Diagrama de Entidade e Relacionamento e Diagrama de Sequência>. 

Opcional

Dicionário de Dados

 

Arquivo ou Código do Script: AAA – Negociação Financeira / *Versao=CP.2014.12_03*/

  

Índice

Chave

01

<FI9_FILIAL+FI9_IDDARF+FI9_STATUS>

02

<FI9_FILIAL+FI9_FORNEC+ FI9_LOJA+FI9_EMISS+FI9_IDDARF>

03

<FI9_FILIAL+FI9_FORNEC+ FI9_LOJA+FI9_PREFIX+FI9_NUM+FI9_PARCEL+FI9_TIPO>

Campo

<AAA_PERESP>

Tipo

<N>

Tamanho

<6>

Valor Inicial

<Varia de acordo com o tipo informado. Por exemplo, quando o campo “tipo” for date, neste campo pode ser informado uma data>. 

Mandatório

Sim (  ) Não (  )

Descrição

<Referência Mínima para Cálculo>

Título

<Ref.Calc.>

Picture

<@E999.99>

Help de Campo

<Informar o % que o aluno pagará em dinheiro. Esse % poderá ser alterado durante a negociação>

 

(Opcional)

Grupo de Perguntas

 

<Informações utilizadas na linha Protheus>.

 

Nome: FINSRF2

X1_ORDEM

01

X1_PERGUNT

Emissão De

X1_TIPO

D

X1_TAMANHO

8

X1_GSC

G

X1_VAR01

MV_PAR01

X1_DEF01

Comum

X1_CNT01

'01/01/08'

X1_HELP

Data inicial do intervalo de emissões das guias de DARF a serem consideradas na seleção dos dados para o relatório 

 

(Opcional)

Consulta Padrão

<Informações utilizadas na linha Protheus>

 

Consulta: AMB

Descrição

Configurações de Planejamento

Tipo

Consulta Padrão

Tabela

“AMB”

Índice

“Código”

Campo

“Código”; ”Descrição”

Retorno

AMB->AMB_CODIGO

 

(Opcional)

Estrutura de Menu

 

<Informações utilizadas na linha Datasul>.

 

Procedimentos

 

Procedimento

 

 

 

Descrição

(Max 40 posições)

(Max 40 posições)

(Max 40 posições)

Módulo

 

 

 

Programa base

 

 

 

Nome Menu

(Max 32 posições)

(Max 32 posições)

(Max 32 posições)

Interface

GUI/WEB/ChUI/Flex

GUI/WEB/ChUI/Flex

GUI/WEB/ChUI/Flex

Registro padrão

Sim

Sim

Sim

Visualiza Menu

Sim/Não

Sim/Não

Sim/Não

Release de Liberação

 

 

 

 

 

 

Programas

 

Programa

 

 

 

Descrição

(Max 40 posições)

(Max 40 posições)

(Max 40 posições)

Nome Externo

 

 

 

Nome Menu/Programa

(Max 32 posições)

(Max 32 posições)

(Max 32 posições)

Nome Verbalizado[1]

(Max 254 posições)

(Max 254 posições)

(Max 254 posições)

Procedimento

 

 

 

Template

(Verificar lista de opções no man01211)

(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

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

Interface

GUI/WEB/ChUI/Flex

GUI/WEB/ChUI/Flex

GUI/WEB/ChUI/Flex

Categoria[3]

 

 

 

Executa via RPC

Sim/Não

Sim/Não

Sim/Não

Registro padrão

Sim

Sim

Sim

Outro Produto

Não

Não

Não

Visualiza Menu

Sim/Não

Sim/Não

Sim/Não

Query on-line

Sim/Não

Sim/Não

Sim/Não

Log Exec.

Sim/Não

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

Sim/Não

Home[5]

Sim/Não

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

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

<O cadastro de papéis é obrigatório para os projetos de desenvolvimento FLEX a partir do Datasul 10>.

<Lembrete: o nome dos papeis em inglês descrito neste ponto do documento, devem ser homologados pela equipe de tradução>.

 

Código Papel

(máx 3 posições)

Descrição em Português*

 

Descrição em Inglês*

 

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