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

来源:互联网 发布:java破解版游戏. 编辑:程序博客网 时间:2024/04/19 07:50

用户需求:由于公司没有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

0 0
原创粉丝点击