Monday, April 17, 2017

API to create AR customer

declare
l_num_user_id       NUMBER;
l_num_appl_id       NUMBER;
l_num_resp_id       NUMBER;
cust_account_rec_type   hz_cust_account_v2pub.cust_account_rec_type;
l_num_obj_ver_num     NUMBER;
l_chr_return_status    VARCHAR2 (2000);
l_num_msg_count      NUMBER;
l_chr_msg_data       VARCHAR2 (500);
l_num_profile_id      NUMBER;
cust_account_rec HZ_CUST_ACCOUNT_V2PUB.CUST_ACCOUNT_REC_TYPE;
l_organization_rec     hz_party_v2pub.organization_rec_type;
l_customer_profile_rec   hz_customer_profile_v2pub.customer_profile_rec_type;
l_num_cust_id       NUMBER;
l_chr_acct_num       VARCHAR2 (500);
l_num_party_id       NUMBER;
l_chr_party_number     VARCHAR2 (500);
l_cust_acct_site_use_rec  hz_cust_account_site_v2pub.cust_site_use_rec_type;
l_cust_acct_site_rec    hz_cust_account_site_v2pub.cust_acct_site_rec_type;
l_chr_sit_return_status  VARCHAR2 (500);
l_num_sit_msg_count    NUMBER;
l_chr_sit_msg_data     VARCHAR2 (500);
l_chr_situ_return_status  VARCHAR2 (500);
l_num_situ_msg_count    NUMBER;
l_chr_situ_msg_data    VARCHAR2 (500);
l_num_site_use_id     NUMBER;
CURSOR update_base_tables_cur
IS
   select distinct ps.party_site_name, a.party_number, ps.party_site_number, a.party_id,
           'CUST-' ||a.party_id||'-'||ass.org_id as customer_ref,
           'ADD-'||ps.party_site_id||'-'||ass.org_id as address_ref,
           ps.party_site_id,
           ass.address_line1,
           ass.city, ass.state, ass.zip, ass.country,
           'N' primary_site_use_flag,
           a.orig_system_reference as party_ref,
           a.party_name as customer_name, ass.org_id
        from apps.ap_suppliers ap,
           apps.ap_supplier_sites_all ass,
           apps.hz_parties a,
           apps.hz_party_sites ps
       
        where ap.vendor_id = ass.vendor_id
         and a.party_id = ap.party_id
         and ps.party_id = ap.party_id
         and ass.party_site_id = ps.party_site_id
         and a.party_name = ap.vendor_name
         and not exists (select * from hz_cust_accounts ac
         where ac.party_id = a.party_id);
begin
fnd_global.apps_initialize( 6837, 50546, 222); -- input from 1st sql
dbms_output.put_line('***************************');
for update_base_tables_rec in update_base_tables_cur
loop
   null;
   cust_account_rec_type.cust_account_id := fnd_api.g_miss_num;
   cust_account_rec_type.account_name := update_base_tables_rec.customer_name;
   cust_account_rec_type.customer_type   := 'R';
   --l_organization_rec.party_rec_type.category_code := 'ROAMING';
   l_organization_rec.party_rec.party_id := update_base_tables_rec.party_id;
   l_organization_rec.party_rec.party_number := update_base_tables_rec.party_number;
   l_organization_rec.organization_name := update_base_tables_rec.customer_name;
   cust_account_rec_type.orig_system_reference := update_base_tables_rec.customer_ref;
     l_customer_profile_rec.party_id := update_base_tables_rec.party_id;
   l_customer_profile_rec.profile_class_id := 0 ; -- use default profile with id=0
   l_customer_profile_rec.created_by_module := 'HZ_CPUI';
   cust_account_rec_type.created_by_module := 'HZ_CPUI';
   hz_cust_account_v2pub.create_cust_account
             (p_init_msg_list       => fnd_api.g_false,
              p_cust_account_rec     => cust_account_rec_type,
              p_organization_rec     => l_organization_rec,
             
              p_customer_profile_rec   => l_customer_profile_rec,
              p_create_profile_amt    => fnd_api.g_true,
              x_cust_account_id      => l_num_cust_id,
              x_account_number      => l_chr_acct_num,
              x_party_id         => l_num_party_id,
              x_party_number       => l_chr_party_number,
              x_profile_id        => l_num_profile_id,
              x_return_status       => l_chr_return_status,
              x_msg_count         => l_num_msg_count,
              x_msg_data         => l_chr_msg_data
             );
dbms_output.put_line('x_return_status: '||l_chr_return_status);
dbms_output.put_line('x_cust_account_id: '||l_num_cust_id);
dbms_output.put_line('x_account_number: '||l_chr_acct_num);
dbms_output.put_line('x_party_id: '||l_num_party_id);

dbms_output.put_line(l_chr_return_status ||' ' ||l_chr_msg_data  );
   if l_chr_return_status != 'S'
   then
    --display all the error messages
    for j in 1 .. fnd_msg_pub.count_msg
    loop
  --    dbms_output.put_line (j);
      l_chr_msg_data :=
            fnd_msg_pub.get (p_msg_index   => j,
                     p_encoded    => 'F');
     -- dbms_output.put_line ('Message(' || j || '):= ' || l_chr_msg_data);
    end loop;
   end if;
   begin
    select cust_account_id
     into l_cust_acct_site_rec.cust_account_id
     from hz_cust_accounts
     where orig_system_reference = update_base_tables_rec.customer_ref;
     dbms_output.put_line(2  );
   exception
    when others
    then
      l_cust_acct_site_rec.cust_account_id := fnd_api.g_miss_num;
   end;
   l_cust_acct_site_rec.party_site_id := update_base_tables_rec.party_site_id;
   l_cust_acct_site_rec.created_by_module := 'HZ_CPUI';
    l_cust_acct_site_rec.orig_system_reference := update_base_tables_rec.address_ref;
        l_cust_acct_site_rec.org_id := update_base_tables_rec.org_id;
   mo_global.init ('ONT');
   mo_global.set_policy_context (p_access_mode   => 'S',
                  p_org_id      => update_base_tables_rec.org_id
                 );
               
                 dbms_output.put_line(3  );
   hz_cust_account_site_v2pub.create_cust_acct_site
                (p_init_msg_list      => 'T',
                p_cust_acct_site_rec   => l_cust_acct_site_rec,
                x_cust_acct_site_id    => l_num_obj_ver_num,
                x_return_status      => l_chr_sit_return_status,
                x_msg_count        => l_num_sit_msg_count,
                x_msg_data        => l_chr_sit_msg_data
                );
dbms_output.put_line('x_cust_acct_site_id: '||l_num_obj_ver_num);
dbms_output.put_line('x_return_status: '||l_chr_sit_return_status);

dbms_output.put_line(4||' '|| l_chr_sit_return_status   );
   if l_chr_sit_return_status != 'S'
   then
    --display all the error messages
    for j in 1 .. fnd_msg_pub.count_msg
    loop
   
      l_chr_sit_msg_data :=
            fnd_msg_pub.get (p_msg_index   => j,
                     p_encoded    => 'F');
 
    end loop;
   end if;
   begin
    select cust_acct_site_id
     into l_cust_acct_site_use_rec.cust_acct_site_id
     from hz_cust_acct_sites_all
     where orig_system_reference = update_base_tables_rec.address_ref;
   exception
    when others
    then
      l_cust_acct_site_use_rec.cust_acct_site_id := fnd_api.g_miss_num;
   end;
   l_cust_acct_site_use_rec.org_id := update_base_tables_rec.org_id;
   l_cust_acct_site_use_rec.site_use_code := 'BILL_TO';
   l_cust_acct_site_use_rec.status := 'A';
    l_cust_acct_site_use_rec.location := update_base_tables_rec.party_site_name;
     l_cust_acct_site_use_rec.primary_flag := 'Y';
   l_cust_acct_site_use_rec.orig_system_reference :=
                      update_base_tables_rec.address_ref;
   l_cust_acct_site_use_rec.created_by_module := 'HZ_CPUI';
   mo_global.set_policy_context (p_access_mode   => 'S',
                  p_org_id      => update_base_tables_rec.org_id
                 );
   hz_cust_account_site_v2pub.create_cust_site_use
              (p_init_msg_list       => 'T',
              p_cust_site_use_rec     => l_cust_acct_site_use_rec,
              p_customer_profile_rec   => l_customer_profile_rec,
              p_create_profile      => fnd_api.g_true,
              p_create_profile_amt    => fnd_api.g_true,
              x_site_use_id        => l_num_site_use_id,
              x_return_status       => l_chr_situ_return_status,
              x_msg_count         => l_num_situ_msg_count,
              x_msg_data         => l_chr_situ_msg_data
              );
dbms_output.put_line('x_site_use_id: '||l_num_site_use_id);
dbms_output.put_line('x_return_status: '||l_chr_situ_return_status);
   if l_chr_situ_return_status != 'S'
   then
    --display all the error messages
    for j in 1 .. fnd_msg_pub.count_msg
    loop
      l_chr_situ_msg_data :=
            fnd_msg_pub.get (p_msg_index   => j,
                     p_encoded    => 'F');

    end loop;
   end if;
end loop;
end;

No comments:

Post a Comment