zoukankan      html  css  js  c++  java
  • PO*创建标准采购订单

    --   l_iface_rec       po_headers_interface%ROWTYPE;

       校验头相关信息

      1 SELECT COUNT(1)
      2         INTO l_po_count
      3         FROM po_headers_all ph
      4        WHERE 1 = 1
      5          AND ph.segment1 = rec.po_number;
      6       IF (l_po_count > 0) THEN
      7         l_message := l_message || ' Po_number: ' || rec.po_number || ' Is Error';
      8         log('Po_number: ' || rec.po_number || ' Is Error');
      9       END IF;
     10     
     11       BEGIN
     12         SELECT hou.organization_id
     13           INTO l_org_id
     14           FROM hr_operating_units hou
     15          WHERE 1 = 1
     16            AND hou.name = rec.ou;
     17       EXCEPTION
     18         WHEN OTHERS THEN
     19           l_message := l_message || ' OU: ' || rec.ou || ' Is Error';
     20           log('OU: ' || rec.ou || ' Is Error');
     21       END;
     22     
     23       BEGIN
     24         SELECT podb.document_subtype
     25           INTO l_type_code
     26           FROM po_document_types_all_b  podb,
     27                po_document_types_all_tl podt
     28          WHERE 1 = 1
     29            AND podb.document_type_code = podt.document_type_code
     30            AND podb.document_subtype = podt.document_subtype
     31            AND podb.org_id = podt.org_id
     32            AND podt.language = 'US'
     33            AND podb.org_id = l_org_id
     34            AND podb.document_type_code IN ('PO', 'PA')
     35            AND podt.type_name = rec.type;
     36       EXCEPTION
     37         WHEN OTHERS THEN
     38           l_message := l_message || ' Type: ' || rec.type || ' Is Error';
     39           log('Type: ' || rec.type || ' Is Error');
     40       END;
     41     
     42       BEGIN
     43         SELECT pv.vendor_id
     44           INTO l_vendor_id
     45           FROM po_vendors pv
     46          WHERE 1 = 1
     47            AND pv.vendor_name = rec.suppiler;
     48       EXCEPTION
     49         WHEN OTHERS THEN
     50           l_message := l_message || ' Suppiler: ' || rec.suppiler || ' Is Error';
     51           log('Suppiler: ' || rec.suppiler || ' Is Error');
     52       END;
     53     
     54       BEGIN
     55         SELECT vs.vendor_site_id
     56           INTO l_vendor_site_id
     57           FROM po_vendor_sites_all vs
     58          WHERE 1 = 1
     59            AND vs.vendor_id = l_vendor_id
     60            AND vs.vendor_site_code = rec.site;
     61       EXCEPTION
     62         WHEN OTHERS THEN
     63           l_message := l_message || ' Site: ' || rec.site || ' Is Error';
     64           log('Site: ' || rec.site || ' Is Error');
     65       END;
     66     
     67       BEGIN
     68         SELECT hl.location_id
     69           INTO l_ship_to_location_id
     70           FROM hr_locations_all_tl hl
     71          WHERE 1 = 1
     72            AND hl.location_code = rec.ship_to
     73            AND hl.language = userenv('LANG');
     74       EXCEPTION
     75         WHEN OTHERS THEN
     76           l_message := l_message || ' Ship_to: ' || rec.ship_to || ' Is Error';
     77           log('Ship_to: ' || rec.ship_to || ' Is Error');
     78       END;
     79     
     80       BEGIN
     81         SELECT hl.location_id
     82           INTO l_bill_to_location_id
     83           FROM hr_locations_all_tl hl
     84          WHERE 1 = 1
     85            AND hl.location_code = rec.bill_to
     86            AND hl.language = userenv('LANG');
     87       EXCEPTION
     88         WHEN OTHERS THEN
     89           l_message := l_message || ' Bill_to: ' || rec.bill_to || ' Is Error';
     90           log('Bill_to: ' || rec.bill_to || ' Is Error');
     91       END;
     92     
     93       BEGIN
     94         SELECT p.person_id
     95           INTO l_agent_id
     96           FROM per_people_f p
     97          WHERE 1 = 1
     98            AND p.full_name = rec.buyer;
     99       EXCEPTION
    100         WHEN OTHERS THEN
    101           l_message := l_message || ' Buyer: ' || rec.buyer || ' Is Error';
    102           log('Buyer: ' || rec.buyer || ' Is Error');
    103       END;
    104     
    105       IF (l_message IS NOT NULL) THEN
    106         dbms_output.put_line('Error l_message: ' || l_message);
    107         RAISE fnd_api.g_exc_error;
    108       END IF;
    109     

     --插入头接口表

     1       l_iface_rec.interface_header_id   := po_headers_interface_s.nextval;
     2       l_iface_rec.interface_source_code := 'XXPO_ONHAND_HEADER';
     3       l_iface_rec.batch_id              := g_session_id;
     4       l_iface_rec.process_code          := 'PENDING'; --PENDING, ACCEPTED, REJECTED, or NOTIFIED
     5       l_iface_rec.action                := 'ORIGINAL'; --ORIGINAL,REPLACE, or UPDATE
     6       l_iface_rec.org_id                := l_org_id;
     7       l_iface_rec.document_num          := rec.po_number;
     8       l_iface_rec.document_type_code    := l_type_code; --STANDARD, BLANKET, or QUOTATION
     9       l_iface_rec.vendor_id             := l_vendor_id;
    10       l_iface_rec.vendor_site_id        := l_vendor_site_id;
    11       l_iface_rec.ship_to_location_id   := l_ship_to_location_id;
    12       l_iface_rec.bill_to_location_id   := l_bill_to_location_id;
    13       l_iface_rec.agent_id              := l_agent_id;
    14       l_iface_rec.approval_status       := rec.status; --'INCOMPLETE'
    15       l_iface_rec.currency_code         := rec.currency;
    16       --l_iface_rec.rate_date              := to_date('22-MAR-2017', 'DD-MON-YYYY');
    17       --l_iface_rec.rate_type              := 'Corporate';
    18       l_iface_rec.last_update_date       := g_last_update_date;
    19       l_iface_rec.last_updated_by        := g_last_updated_by;
    20       l_iface_rec.creation_date          := rec.created_date;
    21       l_iface_rec.created_by             := g_created_by;
    22       l_iface_rec.last_update_login      := g_last_update_login;
    23       l_iface_rec.program_application_id := g_program_appl_id;
    24       l_iface_rec.program_id             := g_program_id;
    25       l_iface_rec.program_update_date    := g_program_upd_date;
    26       INSERT INTO po_headers_interface
    27       VALUES l_iface_rec;

    --l_iface_lines_rec po_lines_interface%ROWTYPE;

    ---校验行相关信息

     1 BEGIN
     2           SELECT msi.inventory_item_id,
     3                  msi.description
     4             INTO l_item_id,
     5                  l_item_description
     6             FROM mtl_system_items_b           msi,
     7                  financials_system_params_all fsp
     8            WHERE 1 = 1
     9              AND nvl(msi.organization_id, fsp.inventory_organization_id) = fsp.inventory_organization_id
    10              AND fsp.org_id = l_org_id
    11              AND msi.segment1 = rec_po_line.item_number;
    12         EXCEPTION
    13           WHEN OTHERS THEN
    14             l_message := l_message || ' Item_number: ' || rec_po_line.item_number || ' Is Error';
    15             log('Item_number: ' || rec_po_line.item_number || ' Is Error');
    16         END;
    17       
    18         BEGIN
    19           SELECT t.category_id
    20             INTO l_category_id
    21             FROM mtl_categories_kfv t
    22            WHERE t.concatenated_segments = 'DEFAULT|DEFAULT';
    23         EXCEPTION
    24           WHEN OTHERS THEN
    25             l_message := l_message || ' Category Is Error';
    26             log('Category Is Error');
    27         END;
    28       
    29         IF (l_message IS NOT NULL) THEN
    30           dbms_output.put_line('Error l_message: ' || l_message);
    31           RAISE fnd_api.g_exc_error;
    32         END IF;

     --插入行接口表

     1         l_iface_lines_rec                        := NULL;
     2         l_iface_lines_rec.interface_header_id    := l_iface_rec.interface_header_id;
     3         l_iface_lines_rec.interface_line_id      := po.po_lines_interface_s.nextval;
     4         l_iface_lines_rec.process_code           := 'PENDING';
     5         l_iface_lines_rec.action                 := 'ORIGINAL';
     6         l_iface_lines_rec.line_num               := rec_po_line.line_num;
     7         l_iface_lines_rec.shipment_num           := 1;
     8         l_iface_lines_rec.line_type_id           := 1;
     9         l_iface_lines_rec.line_type              := rec_po_line.type;
    10         l_iface_lines_rec.item_id                := l_item_id;
    11         l_iface_lines_rec.category_id            := l_category_id;
    12         l_iface_lines_rec.item_description       := l_item_description;
    13         l_iface_lines_rec.uom_code               := rec_po_line.uom;
    14         l_iface_lines_rec.quantity               := rec_po_line.qty;
    15         l_iface_lines_rec.unit_price             := rec_po_line.price;
    16         l_iface_lines_rec.need_by_date           := rec_po_line.need_by;
    17         l_iface_lines_rec.last_update_date       := g_last_update_date;
    18         l_iface_lines_rec.last_updated_by        := g_last_updated_by;
    19         l_iface_lines_rec.creation_date          := g_creation_date;
    20         l_iface_lines_rec.created_by             := g_created_by;
    21         l_iface_lines_rec.last_update_login      := g_last_update_login;
    22         l_iface_lines_rec.program_application_id := g_program_appl_id;
    23         l_iface_lines_rec.program_id             := g_program_id;
    24         l_iface_lines_rec.program_update_date    := g_program_upd_date;
    25         INSERT INTO po_lines_interface
    26         VALUES l_iface_lines_rec;
    27       


    --l_iface_dis_rec   po_distributions_interface%ROWTYPE;

     1   l_iface_dis_rec.interface_header_id       := po_headers_interface_s.currval; --;  
     2         l_iface_dis_rec.interface_line_id         := po_lines_interface_s.currval;
     3         l_iface_dis_rec.interface_distribution_id := po.po_distributions_interface_s.nextval; -- NULL;  
     4         l_iface_dis_rec.distribution_num          := 1;
     5         l_iface_dis_rec.org_id                    := l_org_id;
     6         l_iface_dis_rec.quantity_ordered          := rec_po_line.qty;
     7         l_iface_dis_rec.destination_type_code     := 'INVENTORY'; --类型(费用/库存)  
     8         l_iface_dis_rec.rate_date                 := SYSDATE;
     9         l_iface_dis_rec.last_update_date          := g_last_update_date;
    10         l_iface_dis_rec.last_updated_by           := g_last_updated_by;
    11         l_iface_dis_rec.creation_date             := g_creation_date;
    12         l_iface_dis_rec.created_by                := g_created_by;
    13         l_iface_dis_rec.last_update_login         := g_last_update_login;
    14         l_iface_dis_rec.program_application_id    := g_program_appl_id;
    15         l_iface_dis_rec.program_id                := g_program_id;
    16         l_iface_dis_rec.program_update_date       := g_program_upd_date;
    17         INSERT INTO po_distributions_interface
    18         VALUES l_iface_dis_rec;

    --导入PO

     1       po_docs_interface_sv5.process_po_headers_interface(x_selected_batch_id          => l_iface_rec.batch_id,
     2                                                          x_buyer_id                   => NULL,
     3                                                          x_document_type              => l_iface_rec.document_type_code,
     4                                                          x_document_subtype           => NULL,
     5                                                          x_create_items               => 'N',
     6                                                          x_create_sourcing_rules_flag => NULL,
     7                                                          x_rel_gen_method             => NULL,
     8                                                          x_approved_status            => l_iface_rec.approval_status,
     9                                                          x_commit_interval            => 1,
    10                                                          x_process_code               => 'PENDING',
    11                                                          x_interface_header_id        => NULL,
    12                                                          x_org_id_param               => NULL,
    13                                                          x_ga_flag                    => NULL)


    --查看错误信息

    ln_err_count := 0;
        FOR c IN (SELECT t.document_num,
                         l.line_num,
                         d.distribution_num,
                         a.error_message,
                         l.interface_line_id,
                         d.interface_distribution_id,
                         a.interface_header_id
                    FROM po_interface_errors        a,
                         po_headers_interface       t,
                         po_lines_interface         l,
                         po_distributions_interface d
                   WHERE a.interface_header_id = t.interface_header_id
                     AND l.interface_line_id(+) = a.interface_line_id
                     AND d.interface_distribution_id(+) = a.interface_distribution_id
                     AND t.batch_id = l_iface_rec.batch_id)
        LOOP
          ln_err_count := ln_err_count + 1;
          log('Error: ' || c.error_message);
          dbms_output.put_line('Error: ' || c.error_message);
        
          DELETE po_headers_interface ph
           WHERE ph.interface_header_id = l_iface_rec.interface_header_id;
        
          DELETE po_lines_interface pl
           WHERE pl.interface_header_id = l_iface_rec.interface_header_id;
        
          DELETE po_distributions_interface pd
           WHERE pd.interface_header_id = l_iface_rec.interface_header_id;
        
        END LOOP;
        IF (ln_err_count > 0) THEN
          RAISE fnd_api.g_exc_error;
        END IF;
  • 相关阅读:
    怎样使用Chrome模拟手机浏览器測试移动端网站
    [Erlang危机](5.1.3)进程
    Oracle ErrorStack 使用和阅读具体解释
    动态规划之整齐打印
    struts2+Oracle实现管理员查看用户提交的意见功能
    hdu 4956 Poor Hanamichi BestCoder Round #5(数学题)
    2014牡丹江——Known Notation
    诗云:静观天下
    QQ欢乐斗地主心得体会 (三):高倍场攻略
    QQ欢乐斗地主心得体会 (三):高倍场攻略
  • 原文地址:https://www.cnblogs.com/wang-chen/p/6605963.html
Copyright © 2011-2022 走看看