客制供应商申请审批单和供应商导入api

用户需求:由于公司没有OA系统,但是又想对新建的供应商有一个审批的功能,以致可以很好的

对新供应商进行有效管理,收集供应商数据,审厂审批,部门经理审批等流程。

做法:客制Form界面,用户界面中录入供应商相关资料,然后workflow送审到相关人员,

最后部门主管审批时,系统调用api导入供应商

供应商导入api code如下:

procedure new_vendor_api(p_vendor_id number,p_flag out varchar2) is--供应商导入api
    --新建供应商部分 
    p_api_version          number;
    p_init_msg_list        varchar2(200);
    p_commit               varchar2(200);
    p_validation_level     number;
    x_return_status        varchar2(200);
    x_msg_count            number;
    x_msg_data             varchar2(200);
    l_msg                  varchar2(200);
    lr_vend                apps.ap_vendor_pub_pkg.r_vendor_rec_type;
    lr_ex_vend             ap_suppliers%rowtype;
    x_vendor_id            number;
    x_party_id             number;
    pin_copy_vendor_id     number;
    
    --新建供应商地点部分
    l_vendor_site_rec      ap_vendor_pub_pkg.r_vendor_site_rec_type;
    lc_return_status         VARCHAR2(10);
    ln_msg_count            NUMBER;
    lc_msg_data               VARCHAR2(1000);
    ln_vendor_site_id     NUMBER;
    ln_party_site_id         NUMBER;
    ln_location_id            NUMBER;
    
    --新建联系人部分
    l_vendor_contact_rec ap_vendor_pub_pkg.r_vendor_contact_rec_type;
    l_return_status VARCHAR2(10);
    l_msg_count NUMBER;
    l_msg_data VARCHAR2(1000);
    l_vendor_contact_id NUMBER;
    l_per_party_id NUMBER;
    l_rel_party_id NUMBER;
    l_rel_id NUMBER;
    l_org_contact_id NUMBER;
    l_party_site_id NUMBER;
    
    l_vendor jw_vendor_t%rowtype;
    
    cursor ou1 is
      select o.ou_id,o.vat_code
        from jw_vendor_org_t  o 
       where o.jw_vendor_id = p_vendor_id
         and o.flag = 'Y';
  begin
    select * into l_vendor from  jw_vendor_t t where t.jw_vendor_id = p_vendor_id;
    fnd_global.apps_initialize(l_vendor.created_by,
                             50643,
                             201);
    mo_global.init('SQLAP'); 
    p_api_version      := 1.0;
    p_init_msg_list    := fnd_api.g_true;
    p_commit           := fnd_api.g_true;
    p_validation_level := fnd_api.g_valid_level_full;
    lr_vend.hold_flag              := null;
    lr_vend.purchasing_hold_reason := null;
    lr_vend.hold_by                := null;
    lr_vend.hold_date              := null; 
    begin
    if l_vendor.attribute9 is not null then
      lr_vend.END_DATE_ACTIVE := sysdate + l_vendor.attribute9;--增加临时厂商的有效期天数
    end if;
    exception
      when others then
         null;
    end;
    lr_vend.vendor_id         := null;
    lr_vend.vendor_name       := l_vendor.vendor_name;   --供应商名字
    lr_vend.start_date_active := sysdate;
    ap_vendor_pub_pkg.create_vendor(p_api_version      => p_api_version,
                                  p_init_msg_list    => p_init_msg_list,
                                  p_commit           => p_commit,
                                  p_validation_level => p_validation_level,
                                  x_return_status    => x_return_status,
                                  x_msg_count        => x_msg_count,
                                  x_msg_data         => x_msg_data,
                                  p_vendor_rec       => lr_vend,
                                  x_vendor_id        => x_vendor_id,
                                  x_party_id         => x_party_id);
    commit;                              
    IF (x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN --失败 
       p_flag := 'E';
    else--成功后新建供应商地点
       p_flag := 'Y';
       for org1 in ou1 loop
         
         l_vendor_site_rec.vendor_id               := x_vendor_id;--vendor_id
         l_vendor_site_rec.vendor_site_code  := l_vendor.vendor_site_code;
         l_vendor_site_rec.address_line1         := l_vendor.vendor_site_address;
          --l_vendor_site_rec.city                           := 'New York';
         l_vendor_site_rec.country                    := 'CN';
         l_vendor_site_rec.org_id                      := org1.ou_id;
         l_vendor_site_rec.terms_id := l_vendor.attribute1;--付款条件
         l_vendor_site_rec.purchasing_site_flag  :='Y';
         l_vendor_site_rec.pay_site_flag                :='Y'; 
         l_vendor_site_rec.rfq_only_site_flag       :='N';
         l_vendor_site_rec.vat_code := org1.vat_code;
         l_vendor_site_rec.payment_currenCY_code := l_vendor.attribute4;
         l_vendor_site_rec.INVOICE_currenCY_code := l_vendor.attribute4;
         pos_vendor_pub_pkg.create_vendor_site
        ( 
              -- ------------------------------
              -- Input data elements
              -- ------------------------------
              p_vendor_site_rec    => l_vendor_site_rec,
              -- ---------------------------------
              -- Output data elements
              -- ---------------------------------
              x_return_status         => lc_return_status,
              x_msg_count             => ln_msg_count,
              x_msg_data                => lc_msg_data,
              x_vendor_site_id      => ln_vendor_site_id,
              x_party_site_id         => ln_party_site_id,
              x_location_id            => ln_location_id
        );
        commit;
        IF (lc_return_status <> FND_API.G_RET_STS_SUCCESS) THEN  --失败
          p_flag :='E';
        else
          p_flag := 'Y';
          
        end if;
       end loop;
       if p_flag  = 'Y' then
         if l_vendor.vendor_contact is not null then--有联系人时才调用此api
               l_vendor_contact_rec.vendor_id := x_vendor_id;
            --   l_vendor_contact_rec.org_id := org1.ou_id; 
               l_vendor_contact_rec.person_last_name := l_vendor.vendor_contact; 
               l_vendor_contact_rec.phone := l_vendor.vendor_contact_tel;
               l_vendor_contact_rec.org_party_site_id := ln_party_site_id;
               pos_vendor_pub_pkg.create_vendor_contact(
                  p_vendor_contact_rec => l_vendor_contact_rec,
                  x_return_status => l_return_status,
                  x_msg_count => l_msg_count,
                  x_msg_data => l_msg_data,
                  x_vendor_contact_id => l_vendor_contact_id,
                  x_per_party_id => l_per_party_id,
                  x_rel_party_id => l_rel_party_id,
                  x_rel_id => l_rel_id,
                  x_org_contact_id => l_org_contact_id,
                  x_party_site_id => l_party_site_id);

               COMMIT;
               IF (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
                 p_flag :='E';
               else
                 p_flag := 'Y';
               end if;
            end if;
       end if;
    end if;                                                
    null;
  end;

ps:以上api包括导入供应商名字,地点,联系人,没有银行等数据,系统版本R12.1.3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值