Таблицы в Oracle E-Business-Suite (контактные данные) - PullRequest
0 голосов
/ 04 января 2019

Я использую SQL DEVELOPER, подключенный к базе данных Oracle (11g)

Взгляните на это: Explanation_tables

Это то, что я пытаюсь сделать (я добавлю другое изображение)

Image_1

Это мой запрос:

SELECT
    hp.party_name                              
  , hca.account_number
  , hca.cust_account_id                        
 -- , hcsu.LOCATION customer_site_name
  , hcas.cust_acct_site_id                     
  , hcp.phone_number
  , hcp.email_address
  , CASE WHEN LENGTH(hcp.phone_number) > 25 then null else hcp.phone_number END
  , hl.address1
  , hl.address2
  , hl.address3
  , hl.address4
  , hl.city
  , hl.province
  , hl.postal_code
  , hcas.status                                
  , DECODE( hcas.attribute5, 'PUP', 'Y', 'N' ) 
  , hca.status                                 
FROM apps.hz_cust_accounts hca
INNER JOIN apps.hz_cust_acct_sites_all hcas ON hca.cust_account_id = hcas.cust_account_id
INNER JOIN apps.hz_party_sites hps ON hcas.party_site_id = hps.party_site_id
INNER JOIN apps.hz_locations hl ON hps.location_id = hl.location_id
INNER JOIN apps.hz_parties hp ON hps.party_id = hp.party_id
LEFT JOIN (
        SELECT
            owner_table_id
          , max(case when contact_point_type = 'PHONE' then phone_number end) phone_number
          , max(case when contact_point_type = 'EMAIL' then email_address end) email_address
        FROM hz_contact_points
        WHERE status = 'A'
        AND primary_flag = 'Y'
        AND owner_table_name = 'HZ_PARTY_SITES'
        AND contact_point_type IN ('EMAIL','PHONE')
        GROUP BY 
            owner_table_id
    ) hcp ON hcas.party_site_id = hcp.owner_table_id 
WHERE hcas.status = 'A'
AND hps.status = 'A'
AND hca.status = 'A'
AND hca.account_number = '008776'
;

Каждый раз, когда я выполняю свой запрос, я получаю это:

Image_2

Это не то, что я хочу.

Я пытался это исправить, меняя это условие:

hcp ON hcas.party_site_id = hcp.owner_table_id

Но я не знаю, я думаю, что основная проблема заключается в том состоянии,

Вы можете мне помочь? Я не знаю, что делать.

UPDATE:

IMAGE4

Так создается контактное письмо для клиента, посмотрите:

  l_contact_point_rec.contact_point_type     := 'EMAIL';--p_contact_rec.contact_point_type;


  IF p_contact_rec.orig_system_address_ref  IS NULL THEN

     l_contact_point_rec.owner_table_name       := 'HZ_PARTIES';
     l_contact_point_rec.owner_table_id         := l_party_id; --l_contact_party_id;
  ELSE

     l_contact_point_rec.owner_table_name       := 'HZ_PARTY_SITES';
     l_contact_point_rec.owner_table_id         := l_party_site_id;
  END IF;

  l_contact_point_rec.primary_flag           := 'Y';
  l_contact_point_rec.contact_point_purpose  := 'PORTAL';
  --This should exists in HZ_CREATED_BY_MODULES Lookup
  l_contact_point_rec.created_by_module      := 'TCA_V2_API';
  l_contact_point_rec.application_id         := '222';


  l_email_rec.email_format                   := 'MAILHTML';
  l_email_rec.email_address                  := p_contact_rec.email_address;

  hz_contact_point_v2pub.create_contact_point (
                                               p_init_msg_list     =>  'T'                ,
                                               p_contact_point_rec =>  l_contact_point_rec,
                                               p_edi_rec           =>  l_edi_rec          ,
                                               p_email_rec         =>  l_email_rec        ,
                                               p_phone_rec         =>  l_phone_rec        ,
                                               p_telex_rec         =>  l_telex_rec        ,
                                               p_web_rec           =>  l_web_rec          ,
                                               x_contact_point_id  =>  l_contact_point_id ,
                                               x_return_status     =>  l_return_status    ,
                                               x_msg_count         =>  l_msg_count        ,
                                               x_msg_data          =>  l_msg_data
                                              );


  debug_msg (l_calling_sequence||'***************************');
  debug_msg (l_calling_sequence||' Output hz_contact_point_v2pub.create_contact_point EMAIL....');
  debug_msg (l_calling_sequence||'l_return_status: '||l_return_status);
  debug_msg (l_calling_sequence||'l_msg_count: '||l_msg_count);
  debug_msg (l_calling_sequence||'l_msg_data: '||l_msg_data);
  IF l_return_status != 'S' THEN
    FOR I IN 1..l_msg_count
    LOOP
      debug_msg (l_calling_sequence||'. '||SubStr(FND_MSG_PUB.Get(p_encoded => FND_API.G_FALSE ), 1, 255));
      l_msg_data := l_msg_data ||('. '||SUBSTR( FND_MSG_PUB.Get(
                                                                p_encoded => FND_API.G_FALSE )
                                                                ,1, 255
                                                               )
                                              );

    END LOOP;
    RAISE e_error;
  END IF;

НОВОЕ ИЗОБРАЖЕНИЕ:

JUY

НОВОЕ ИЗОБРАЖЕНИЕ № 2:

HYT

LINK:

https://www.mediafire.com/file/8xncjoj8l8gdy7d/results.xlsx/file

1 Ответ

0 голосов
/ 06 января 2019

IF p_contact_rec.orig_system_address_ref IS NULL THEN

 l_contact_point_rec.owner_table_name       := 'HZ_PARTIES';

Итак, я думаю, что вы должны искать в hz_contact_points после owner_table_name = 'HZ_PARTY'. И, если я посмотрю на схему отношений, hp может быть напрямую связан с hca. Не могли бы вы попробовать это?

SELECT
    hp.party_name                              
  , hca.account_number
  , hca.cust_account_id                        
 -- , hcsu.LOCATION customer_site_name
  , hcas.cust_acct_site_id                     
  , hcp.phone_number
  , hcp.email_address
  , CASE WHEN LENGTH(hcp.phone_number) > 25 then null else hcp.phone_number END
  , hl.address1
  , hl.address2
  , hl.address3
  , hl.address4
  , hl.city
  , hl.province
  , hl.postal_code
  , hcas.status                                
  , DECODE( hcas.attribute5, 'PUP', 'Y', 'N' ) 
  , hca.status                                 
FROM apps.hz_cust_accounts hca
INNER JOIN apps.hz_parties hp ON hca.party_id = hp.party_id
INNER JOIN apps.hz_cust_acct_sites_all hcas ON hca.cust_account_id = hcas.cust_account_id
INNER JOIN apps.hz_party_sites hps ON hcas.party_site_id = hps.party_site_id
INNER JOIN apps.hz_locations hl ON hps.location_id = hl.location_id
--INNER JOIN apps.hz_parties hp ON hps.party_id = hp.party_id
LEFT JOIN (
        SELECT
            owner_table_id
          , max(case when contact_point_type = 'PHONE' then phone_number end) phone_number
          , max(case when contact_point_type = 'EMAIL' then email_address end) email_address
        FROM hz_contact_points
        WHERE status = 'A'
        AND primary_flag = 'Y'
        AND owner_table_name = 'HZ_PARTY'
        AND contact_point_type IN ('EMAIL','PHONE')
        GROUP BY 
            owner_table_id
    ) hcp ON hcas.party_site_id = hcp.owner_table_id 
WHERE hcas.status = 'A'
AND hps.status = 'A'
AND hca.status = 'A'
AND hca.account_number = '008776'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...