Monday 11 July 2011

PO Conversion using bulk collect

Validations and Data Sample its your wish

1.Lines:

a. CREATE TABLE XXPO_LINES_STG
    (
     INTERFACE_HEADER_ID                 NUMBER
    ,INTERFACE_LINE_ID                   NUMBER
    ,LINE_NUM                            NUMBER
    ,LIST_PRICE_PER_UNIT                 NUMBER
    ,SHIPMENT_NUM                        NUMBER    
    ,LINE_TYPE                           VARCHAR2(100)  
    ,ITEM                                VARCHAR2(240)
    ,ITEM_DESCRIPTION                    VARCHAR2(240)
    ,item_id                             NUMBER          
    ,UOM_CODE                            VARCHAR2(30)
    ,QUANTITY                            NUMBER
    ,UNIT_PRICE                          NUMBER
    ,SHIP_TO_ORGANIZATION_CODE           VARCHAR2(40)
    ,SHIP_TO_LOCATION                    VARCHAR2(60)          
      );


b. load data
   infile '--------------------------------------------------'
   truncate into table  XXPO_LINES_STG
   fields terminated by ','
   optionally enclosed by '"'
   trailing nullcols
   (INTERFACE_HEADER_ID              
    ,INTERFACE_LINE_ID                
    ,LINE_NUM
    ,LIST_PRICE_PER_UNIT
    ,SHIPMENT_NUM                
    ,LINE_TYPE                              
    ,ITEM                                
    ,ITEM_DESCRIPTION          
    ,ITEM_ID                                  
    ,UOM_CODE                      
    ,QUANTITY
    ,UNIT_PRICE
    ,SHIP_TO_LOCATION                            
    )


c.  CREATE OR REPLACE PROCEDURE xxpo_lines_conv(x_errbuf  OUT VARCHAR2,
                   x_retcode OUT NUMBER)
                   IS
     TYPE test_array IS TABLE OF xxpo_lines_stg%ROWTYPE  INDEX BY BINARY_INTEGER;
  v_vendor_id                               VARCHAR2(100);
  v_interface_header_id                     VARCHAR2(100);
  v_item                                    VARCHAR2(150);
  v_vendors                                 test_array ;
BEGIN
SELECT *  BULK COLLECT INTO v_vendors FROM xxpo_lines_stg;
FOR i IN  1..v_vendors.COUNT
  LOOP
  INSERT INTO po_lines_interface
  (
    interface_line_id
        ,interface_header_id
  ,ship_to_location_id
  ,line_num
  ,shipment_num
  ,line_type
  ,item
  ,item_description
  ,item_id
  ,uom_code
  ,unit_of_measure
  ,quantity
  ,unit_price
  ,ship_to_organization_code
  --,ship_to_location
  ,need_by_date
  ,promised_date
  ,list_price_per_unit
)
VALUES
(  v_vendors(i).interface_line_id  --po_lines_interface_s.nextval
  , v_vendors(i).interface_header_id    --po_headers_interface_s.CURRVAL--v_interface_header_id
  ,144
  ,v_vendors(i).line_num
  ,v_vendors(i).shipment_num
  ,v_vendors(i).line_type
  ,v_vendors(i).item
  ,v_vendors(i).item_description
  ,v_vendors(i).item_id
  ,v_vendors(i).uom_code
  ,'Each'
  ,v_vendors(i).quantity
  ,v_vendors(i).unit_price
  ,v_vendors(i).ship_to_organization_code
  --,v_vendors(i).SHIP_TO_LOCATION
  ,SYSDATE                              --done
  ,SYSDATE                              --done
  ,v_vendors(i).list_price_per_unit
);
END LOOP;
COMMIT;
END;
/

2. Headers:

a. CREATE TABLE XXPO_HEADERS_STG
(
    INTERFACE_HEADER_ID            NUMBER                                          
    ,BATCH_ID                       NUMBER                                
    ,ACTION                         VARCHAR2(25)                              
    ,ORG_ID                         NUMBER      
    ,DOCUMENT_TYPE_CODE             VARCHAR2(25)
    ,CURRENCY_CODE                  VARCHAR2(15)
    ,AGENT_NAME                     VARCHAR2(240)      
    ,VENDOR_NAME                    VARCHAR2(240)
    ,VENDOR_SITE_CODE               VARCHAR2(15)
    ,SHIP_TO_LOCATION               VARCHAR2(60)  
    ,BILL_TO_LOCATION               VARCHAR2(60)
    ,FREIGHT_CARRIER                VARCHAR2(25)
    ,FOB                            VARCHAR2(25)
    ,FREIGHT_TERMS                  VARCHAR2(25)
  );

b. load data
infile '------------------------------------'
insert into table XXPO_HEADERS_STG
fields terminated by ','
optionally enclosed by '"'
trailing nullcols
(INTERFACE_HEADER_ID                                          
    ,BATCH_ID                                                
  ,ACTION                                                                
  ,ORG_ID                                    
  ,DOCUMENT_TYPE_CODE    
  ,CURRENCY_CODE              
  ,AGENT_NAME                        
  ,VENDOR_NAME                      
  ,VENDOR_SITE_CODE          
  ,SHIP_TO_LOCATION                
  ,BILL_TO_LOCATION            
  ,APPROVAL_STATUS            
  ,FREIGHT_CARRIER              
  ,FOB                                  
  ,FREIGHT_TERMS)


c. CREATE OR REPLACE PROCEDURE xxpo_header_conv(x_errbuf  OUT VARCHAR2,
                   x_retcode OUT NUMBER)
                   IS
TYPE test_array IS TABLE OF xxpo_headers_stg%ROWTYPE  INDEX BY BINARY_INTEGER;
  v_vendor_id                          VARCHAR2(100);
  v_vendor_int_id                      VARCHAR2(100);
  v_vendors                            test_array ;
BEGIN
SELECT *  BULK COLLECT INTO v_vendors FROM  xxpo_headers_stg;
FOR i IN  1..v_vendors.COUNT
  LOOP                
    INSERT INTO po_headers_interface
    (
    interface_header_id
  ,batch_id
  ,action
    ,org_id
  ,document_type_code
  ,currency_code
  ,agent_id
  ,agent_name
  ,vendor_name
  ,vendor_site_code
  ,vendor_site_id
  ,ship_to_location
  ,bill_to_location
  ,creation_date
  ,approval_status
  ,approved_date
  ,freight_carrier
  ,fob
  ,freight_terms
)
VALUES
(
  v_vendors(i).interface_header_id--po_headers_interface_s.NEXTVAL
  ,v_vendors(i).batch_id       --po_headers_interface_s.CURRVAL
  ,v_vendors(i).action
  ,v_vendors(i).org_id                                    --"Puffer-Sweiven"
  ,v_vendors(i).document_type_code                            --done
  ,v_vendors(i).currency_code  
  ,61                                          --done
  ,v_vendors(i).agent_name                  --done
  ,v_vendors(i).vendor_name
  ,v_vendors(i).vendor_site_code
  ,1120
  ,v_vendors(i).ship_to_location
  ,v_vendors(i).bill_to_location
  ,SYSDATE-10                            --done
  ,v_vendors(i).approval_status
  ,SYSDATE                               --done
  ,v_vendors(i).freight_carrier
  ,v_vendors(i).fob
  ,v_vendors(i).freight_terms
  );
END LOOP;

COMMIT;
END;
/

3.  Distributions:

a. CREATE TABLE XXPO_DISTRIBUTION_STG
(
  INTERFACE_HEADER_ID                      NUMBER,
  INTERFACE_LINE_ID                        NUMBER,
  INTERFACE_DISTRIBUTION_ID                NUMBER,
  DISTRIBUTION_NUM                         NUMBER,
  QUANTITY_ORDERED                         NUMBER,  
  QTY_DELIVERED                            NUMBER,
  QTY_BILLED                               NUMBER,
  QTY_CANCELLED                            NUMBER,
  DELIVER_TO_LOCATION_ID                   NUMBER,
  DELIVER_TO_PERSON_ID                     NUMBER,
  SET_OF_BOOKS                             VARCHAR2(50),
  CHARGE_ACCT                              VARCHAR2(2000),
  AMOUNT_BILLED                            NUMBER
);


b. load data
infile '------------------------------------------'
truncate into table XXPO_DISTRIBUTION_STG
fields terminated by ','
optionally enclosed by '"'
trailing nullcols
(INTERFACE_HEADER_ID
,INTERFACE_LINE_ID
,INTERFACE_DISTRIBUTION_ID
  ,DISTRIBUTION_NUM                      
  ,QUANTITY_ORDERED                      
  ,QTY_DELIVERED                          
  ,QTY_BILLED                            
  ,QTY_CANCELLED                          
  ,DELIVER_TO_LOCATION_ID                
  ,DELIVER_TO_PERSON_ID                  
  ,SET_OF_BOOKS                          
  ,CHARGE_ACCT                            
  ,AMOUNT_BILLED)


c. CREATE OR REPLACE PROCEDURE xxpo_distribution_conv(x_errbuf  OUT VARCHAR2,
                   x_retcode OUT NUMBER)
                   IS
TYPE test_array IS TABLE OF xxpo_distribution_stg%ROWTYPE  INDEX BY BINARY_INTEGER;
    v_interface_header_id                     VARCHAR2(100);
    v_interface_line_id                       VARCHAR2(150);
    v_item                                    VARCHAR2(150);
    v_vendors                                 test_array ;
BEGIN
SELECT *  BULK COLLECT INTO v_vendors FROM  xxpo_distribution_stg;
FOR i IN  1..v_vendors.COUNT
  LOOP      
INSERT INTO po_distributions_interface
(
interface_header_id,
interface_line_id,
interface_distribution_id,
distribution_num,
quantity_ordered,
charge_account,
charge_account_id,
variance_account_id,
accrual_account_id,
quantity_delivered,
quantity_billed,
quantity_cancelled,
deliver_to_location_id,
deliver_to_person_id,
org_id
)
VALUES
(
v_vendors(i).interface_header_id  ,--po_headers_interface_s.currval,--v_interface_header_id,
  v_vendors(i).interface_line_id ,--po_lines_interface_s.currval,--v_interface_line_id,     --nvl(v_interface_line_id,1),
v_vendors(i).interface_distribution_id,  --distributions_interface_s.nextval,
v_vendors(i).distribution_num,
v_vendors(i).quantity_ordered,
v_vendors(i).charge_acct,
1001,
1000,
1006,
v_vendors(i).qty_delivered,
v_vendors(i).qty_billed,
v_vendors(i).qty_cancelled,
v_vendors(i).deliver_to_location_id,
v_vendors(i).deliver_to_person_id,
104
);
END LOOP;
COMMIT;
END;
/

No comments:

Post a Comment