Friday, 27 January 2012

OA Inventory Open API

Spec
---

PROCEDURE inventory_open_api ( Errbuf         OUT          VARCHAR2
                               ,Retcode         OUT          NUMBER
                              , p_company      IN VARCHAR2
                              , p_fiscal_year  IN NUMBER
                              , p_period_nm    IN VARCHAR2)

---------------------------------------------

PROCEDURE inventory_open_api ( Errbuf         OUT          VARCHAR2
                               ,Retcode         OUT          NUMBER
                              , p_company      IN VARCHAR2
                              , p_fiscal_year  IN NUMBER
                              , p_period_nm    IN VARCHAR2)
AS
  CURSOR ls_period_open( lc_company       VARCHAR2
                        , ln_fiscal_year  NUMBER
                        , lc_period_nm VARCHAR2) is
        SELECT a.organization_id,b.ORGANIZATION_CODE,b.ORGANIZATION_NAME,a.created_by,a.last_update_login,a.period_close_date,a.open_flag
        FROM   org_acct_periods a,org_organization_definitions b
        WHERE  a.period_set_name = lc_company
        AND    a.period_year     = (ln_fiscal_year)
        AND    a.organization_id not in (select organization_id from org_acct_periods where period_name = p_period_nm)
       -- AND    a.period_name     = lc_period_nm
        AND    to_char(a.period_name)      =  to_char((ADD_MONTHS(sysdate,-1)),'MON-YY')
      --  AND    a.organization_id = 44
       -- AND    a.open_flag       = 'Y'
        AND    a.organization_id = b.organization_id;
  i ls_period_open%rowtype;
  CURSOR ls_slct_for_data (lc_prd_nm VARCHAR2
                          ,ln_org_id NUMBER
                          ,ln_prd_yr NUMBER) is
        SELECT
                GLP.period_set_name,
                GLP.period_year,    
                GLP.period_num,      
                GLP.period_name,    
                GLP.description,    
                GLP.end_date,        
                'Y',                
                -1                  
        FROM     gl_periods GLP
        WHERE    GLP.period_set_name = 'AGROCAL'
        AND      GLP.period_name     = lc_prd_nm
        AND      GLP.period_type     = '1'
        AND      GLP.adjustment_period_flag = 'N'
        AND      (GLP.period_name, GLP.period_year)
                                 NOT IN
                 (SELECT period_name, period_year
                  FROM   org_acct_periods
                  WHERE  organization_id = ln_org_id)
                                 AND NOT EXISTS
                 (SELECT period_start_date
                  FROM   org_acct_periods
                  WHERE  organization_id = ln_org_id
                  AND    period_year     = ln_prd_yr
                  AND    period_name     = lc_prd_nm);
  j ls_slct_for_data%rowtype;            
        lc_return_status    VARCHAR2(1);
        lc_msg_data         VARCHAR2(2000);
        lc_errbuf           VARCHAR2(2000);
        ln_msg_count        NUMBER;
        p_closing_rowid                    VARCHAR2(100);
        x_wip_failed             BOOLEAN;
        x_close_failed           BOOLEAN;
        x_download_failed        BOOLEAN;
        x_req_id                 NUMBER;
        x_return_status          VARCHAR2(100);
        x_prior_period_open      BOOLEAN;
        x_new_acct_period_id     NUMBER;
        x_duplicate_open_period  BOOLEAN;
        x_commit_complete        BOOLEAN;
        x_last_scheduled_close_date  DATE;
        ln_user_id          NUMBER;
        ln_org_id           NUMBER;
        ln_resp_id          NUMBER;
        ln_resp_app_id      NUMBER;
        lc_curr_per         VARCHAR2(30);
        ln_fsc_yr           NUMBER;
        ln_prd_nm           NUMBER;
        lc_last_day         DATE;
  Begin
      --  fnd_file.put_line(fnd_file.log,'1st parameter - '||p_company||' - 2nd Parameter - '||p_fiscal_year||' - 3rd Parameter - '||p_period_num);
        fnd_file.put_line(fnd_file.output,'WHSE'||'       '||'PERIOD NUM'||'      '||'PERIOD YR');
        ln_user_id        := 1738; --:=APPS.FND_PROFILE.VALUE('USER_ID');
        ln_resp_id        := APPS.FND_PROFILE.VALUE('RESP_ID');
        ln_resp_app_id    := APPS.FND_PROFILE.VALUE('RESP_APPL_ID');
        ln_org_id         := APPS.FND_PROFILE.VALUE('ORG_ID');
       BEGIN
       FND_client_info.set_org_context(ln_org_id);
       END;
       BEGIN
       FND_GLOBAL.apps_initialize(1738,ln_resp_id,ln_resp_app_id);
       END;
      For i in ls_period_open(p_company, p_fiscal_year,p_period_nm) loop
       Exit when ls_period_open%notfound;
         For j in ls_slct_for_data(p_period_nm,i.organization_id,p_fiscal_year) loop
          Exit when ls_slct_for_data%notfound;
                Select last_day(to_char('01-'||j.period_name)) into lc_last_day
                From   dual;
FND_FILE.PUT_LINE(FND_FILE.LOG,'period_set_name is -'||j.period_year||'-'||i.organization_id||'-'||j.period_name||'-'||lc_last_day);
          CST_ACCOUNTINGPERIOD_PUB.Open_Period(
                                               p_api_version               => 1.0,
                                               p_org_id                    => i.organization_id,
                                               p_user_id                   => i.created_by,
                                               p_login_id                  => i.LAST_UPDATE_LOGIN,
                                               p_acct_period_type          => '1',
                                               p_org_period_set_name       => 'AGROCAL',
                                               p_open_period_name          => j.period_name,--ln_period_close.period_name,
                                               p_open_period_year          => j.period_year,--p_fiscal_year,
                                               p_open_period_num           => j.period_num,--p_period_num,
                                               x_last_scheduled_close_date => x_last_scheduled_close_date,
                                               p_period_end_date           => lc_last_day,-- '30-NOV-2010',--to_char(last_day(sysdate),'DD-MON-RRRR'),
                                               x_prior_period_open         => x_prior_period_open,
                                               x_new_acct_period_id        => x_new_acct_period_id,
                                               x_duplicate_open_period     => x_duplicate_open_period,
                                               x_commit_complete           => x_commit_complete,
                                               x_return_status             => x_return_status);
       FND_FILE.PUT_LINE(fnd_file.output,i.ORGANIZATION_CODE||'               '||j.period_num||'       '||j.period_year);
         FND_FILE.PUT_LINE(FND_FILE.LOG,'STATUS : ' || lc_return_status);
           IF lc_return_status <> 'S' THEN
              FND_FILE.PUT_LINE(FND_FILE.LOG,'STATUS : ' || lc_return_status);
              COMMIT;
           IF ln_msg_count <= 1 THEN
               lc_errbuf := lc_errbuf || lc_msg_data;
           ELSE
                FOR ln_i IN 1 .. ln_msg_count LOOP
                 lc_errbuf := lc_errbuf ||' '|| FND_MSG_PUB.GET ( ln_i, 'F' );
                  FND_FILE.PUT_LINE(FND_FILE.LOG,'STATUS : ' || lc_errbuf);
                END LOOP;
           END IF;
          END IF;
      IF i.period_close_date is not null and i.open_flag = 'Y' Then
        FND_FILE.PUT_LINE(FND_FILE.LOG,'Inventory period cannot open for - '||i.organization_code|| 'as there is problem.');
      ELSE
        FND_FILE.PUT_LINE(FND_FILE.LOG,'Inventory period opened for organization - '||i.organization_code);
      End If;                                              
        End loop;
      END LOOP;
    Commit;
      EXCEPTION
       WHEN OTHERS THEN
        FND_FILE.PUT_LINE(FND_FILE.LOG,'Exception - Inventory Close API'||sqlerrm);
  End;
  ---


No comments:

Post a Comment