Páginas filhas
  • 3. EAIAdapter_LoadUpsertContent

Versões comparadas

Chave

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

...

Função responsável por alimentar informações quando o tipo de envio é Event upsert.

O conteúdo da função é responsável por buscar os valores das tabelas relacionados ou inseridos no Mapper e repassar para o Helper. Podem ser utilizadas sub-rotinas de outros fontes com regra de negócio para buscar as informações necessárias.

Utilizando a prática sugerida no LoadUsualContent não será necessário carregar os dados dos códigos da chave primária.

...

Bloco de código
languageruby
themeEmacs
EAIAdapter<Transação><versão>_LoadUpsertContent()

...

TipoValorDescrição
BoolTRUEIndica que os dados foram alimentados com sucesso e deverá continuar o gerenciamento do adapter
FALSECaso ocorram falhas ou parametrizações erradas. O retorno falso ocasionará na interrupção do SendBusinessMessage.

Exemplo

...

Bloco de código
languagerubythemeEmacs
linenumberstrue
#--------------------------------------------------#
 FUNCTION EAIAdapterSalesOrder1_LoadUpsertContent()
#--------------------------------------------------#
  ### Nesse ponto serão somente carregados os dados utilizados pela mensagem do tipo 'upsert'.
  
  IF NOT vdpm46_pedidos_leitura(mr_pedidos.cod_empresa, mr_pedidos.num_pedido, TRUE, TRUE) THEN
     CALL log0030_processa_err_sql('LEITURA','PEDIDOS',1)
     RETURN FALSE
  END IF
  
  LET mr_pedidos.cod_cliente     = vdpm46_pedidos_get_cod_cliente()
  LET mr_pedidos.num_pedido_cli  = vdpm46_pedidos_get_num_pedido_cli()
  LET mr_pedidos.cod_transpor    = vdpm46_pedidos_get_cod_transpor()
  LET mr_pedidos.cod_cnd_pgto    = vdpm46_pedidos_get_cod_cnd_pgto()
  LET mr_pedidos.pct_desc_financ = vdpm46_pedidos_get_pct_desc_financ()
  LET mr_pedidos.pct_desc_adic   = vdpm46_pedidos_get_pct_desc_adic()
  LET mr_pedidos.dat_emis_repres = vdpm46_pedidos_get_dat_emis_repres()
  LET mr_pedidos.ies_frete       = vdpm46_pedidos_get_ies_frete()
  LET mr_pedidos.pct_frete       = vdpm46_pedidos_get_pct_frete()
  LET mr_pedidos.cod_consig      = vdpm46_pedidos_get_cod_consig()
  LET mr_pedidos.cod_moeda       = vdpm46_pedidos_get_cod_moeda()
  LET mr_pedidos.ies_sit_pedido  = vdpm46_pedidos_get_ies_sit_pedido()
  
  CALL EAIHelperSalesOrder1_set_BusinessContent_CustomerCode(mr_pedidos.cod_cliente)
  CALL EAIHelperSalesOrder1_set_BusinessContent_CustomerOrderId(mr_pedidos.num_pedido_cli)
  CALL EAIHelperSalesOrder1_set_BusinessContent_CarrierCode(mr_pedidos.cod_transpor)
  CALL EAIHelperSalesOrder1_set_BusinessContent_PaymentTermCode(mr_pedidos.cod_cnd_pgto)
  CALL EAIHelperSalesOrder1_set_BusinessContent_FinancialDiscount(mr_pedidos.pct_desc_financ)
  CALL EAIHelperSalesOrder1_set_BusinessContent_TotalDiscount(mr_pedidos.desconto_total)
  CALL EAIHelperSalesOrder1_set_BusinessContent_RegisterDate(EAIHelperSalesOrder1_formata_data_saida( mr_pedidos.dat_emis_repres))
  CALL EAIHelperSalesOrder1_set_BusinessContent_RequestDate(EAIHelperSalesOrder1_formata_data_saida( mr_pedidos.dat_emis_repres))
  CALL EAIHelperSalesOrder1_set_BusinessContent_FreightValue(mr_pedidos.val_frete)
  CALL EAIHelperSalesOrder1_set_BusinessContent_RedeliveryCarrierCode(mr_pedidos.cod_consig)
  CALL EAIHelperSalesOrder1_set_BusinessContent_InsuranceValue(mr_pedidos.val_seguro)
  CALL EAIHelperSalesOrder1_set_BusinessContent_CurrencyCode(mr_pedidos.cod_moeda)
  
  IF mr_pedidos.ies_frete = 3 THEN
     CALL EAIHelperSalesOrder1_set_BusinessContent_FreightType(2)
  ELSE
     CALL EAIHelperSalesOrder1_set_BusinessContent_FreightType(1)
  END IF
  
  CASE mr_pedidos.ies_sit_pedido
     WHEN 'N' CALL EAIHelperSalesOrder1_set_BusinessContent_Status('1')
     WHEN 'B' CALL EAIHelperSalesOrder1_set_BusinessContent_Status('2')
     #WHEN '' CALL EAIHelperSalesOrder1_set_BusinessContent_Status('3')
     WHEN 'F' CALL EAIHelperSalesOrder1_set_BusinessContent_Status('4')
     #WHEN '' CALL EAIHelperSalesOrder1_set_BusinessContent_Status('5')
     WHEN 'E' CALL EAIHelperSalesOrder1_set_BusinessContent_Status('6')
     WHEN '9' CALL EAIHelperSalesOrder1_set_BusinessContent_Status('7')
  END CASE
  
  FOR l_ind = 1 TO 1000
     IF mr_pedidos.ma_itens[l_ind].num_sequencia IS NULL THEN
        EXIT FOR
     END IF
     CALL EAIHelperSalesOrder1_set_BusinessContent_SalesOrderItens_Item_CompanyId( mr_pedidos.cod_empresa,l_ind)
     CALL EAIHelperSalesOrder1_set_BusinessContent_SalesOrderItens_Item_OrderId( mr_pedidos.num_pedido,l_ind)
     CALL EAIHelperSalesOrder1_set_BusinessContent_SalesOrderItens_Item_OrderItem( mr_pedidos.ma_itens[l_ind].num_sequencia,l_ind)
     CALL EAIHelperSalesOrder1_set_BusinessContent_SalesOrderItens_Item_ItemCode( mr_pedidos.ma_itens[l_ind].cod_item,l_ind)
     CALL EAIHelperSalesOrder1_set_BusinessContent_SalesOrderItens_Item_ItemDescription( mr_pedidos.ma_itens[l_ind].den_item,l_ind)
     CALL EAIHelperSalesOrder1_set_BusinessContent_SalesOrderItens_Item_Quantity( mr_pedidos.ma_itens[l_ind].qtd_pecas_solic,l_ind)
     CALL EAIHelperSalesOrder1_set_BusinessContent_SalesOrderItens_Item_UnityPrice( mr_pedidos.ma_itens[l_ind].pre_unit,l_ind)
     CALL EAIHelperSalesOrder1_set_BusinessContent_SalesOrderItens_Item_TotalPrice( mr_pedidos.ma_itens[l_ind].pre_total,l_ind)
     CALL EAIHelperSalesOrder1_set_BusinessContent_SalesOrderItens_Item_CustomerOrderNumber( mr_pedidos.num_pedido_cli,l_ind)
     CALL EAIHelperSalesOrder1_set_BusinessContent_SalesOrderItens_Item_DiscountPercentage( mr_pedidos.ma_itens[l_ind].pct_desc_adic,l_ind)
     CALL EAIHelperSalesOrder1_set_BusinessContent_SalesOrderItens_Item_FreightValue( mr_pedidos.ma_itens[l_ind].val_frete,l_ind)
     CALL EAIHelperSalesOrder1_set_BusinessContent_SalesOrderItens_Item_UnitWeight( mr_pedidos.ma_itens[l_ind].pes_unit,l_ind)
  END FOR
  
  RETURN TRUE
END FUNCTION