Monday, 29 April 2024

Document OF PKG

CREATE OR REPLACE PACKAGE SMERP2122.Document_Of   AS

FUNCTION IGP(P_UNIT NUMBER, P_SID NUMBER := '0'  , P_LOC NUMBER := '0' ,   P_FY VARCHAR2  ) RETURN VARCHAR2;
FUNCTION OGP(P_UNIT NUMBER , P_SID NUMBER := '0' , P_LOC NUMBER := '0'  ,   P_FY VARCHAR2  ) RETURN VARCHAR2;

FUNCTION IUS(P_UNIT NUMBER ,  P_FY VARCHAR2  ) RETURN VARCHAR2;

FUNCTION IUP(P_UNIT NUMBER ,  P_FY VARCHAR2  ) RETURN VARCHAR2;

FUNCTION INS(P_UNIT NUMBER ,   P_FY VARCHAR2  ) RETURN VARCHAR2;

FUNCTION GRN(P_UNIT NUMBER , P_SID NUMBER := '0',   P_FY VARCHAR2   ) RETURN VARCHAR2;

FUNCTION DMD(P_UNIT NUMBER, P_UID NUMBER := '0' , P_FY VARCHAR2 ) RETURN VARCHAR2;

FUNCTION ISS(P_UNIT NUMBER, P_SID NUMBER := '0', P_SBID NUMBER := '0' , P_FY VARCHAR2 ) RETURN VARCHAR2;

FUNCTION ISS_ADJ(P_UNIT NUMBER, P_SID NUMBER := '0', P_SBID NUMBER := '0' , P_FY VARCHAR2 ) RETURN VARCHAR2;


FUNCTION dbnote(P_UNIT NUMBER , p_fy  VARCHAR2 ) RETURN VARCHAR2;
FUNCTION RTN(P_UNIT NUMBER, P_SID NUMBER := '0', P_SBID NUMBER := '0' , P_FY varchar2) RETURN VARCHAR2;

FUNCTION Prod(P_UNIT NUMBER, P_SID NUMBER := '0', P_SBID NUMBER := '0' , P_FY VARCHAR2 ) RETURN VARCHAR2;

FUNCTION Prod_floor(P_UNIT NUMBER, P_SID NUMBER := '0', P_SBID NUMBER := '0' , P_FY VARCHAR2 ) RETURN VARCHAR2;


FUNCTION PPL(P_UNIT NUMBER,   P_FY VARCHAR2 ) RETURN VARCHAR2;


-- Production Receiving
FUNCTION PRcv(P_UNIT NUMBER, P_SID NUMBER := '0', P_SBID NUMBER := '0' , P_FY VARCHAR2 ) RETURN VARCHAR2;

FUNCTION PTN(P_UNIT NUMBER, P_SID NUMBER := '0'  ,   P_FY VARCHAR2  ) RETURN VARCHAR2;
FUNCTION REJ(P_UNIT NUMBER, P_SID NUMBER := '0'  ,   P_FY VARCHAR2    ) RETURN VARCHAR2;
FUNCTION ssv(P_UNIT NUMBER  ) RETURN VARCHAR2;
FUNCTION WHIGP(P_UNIT NUMBER, P_SID NUMBER := '0'   ) RETURN VARCHAR2;
FUNCTION TRN(P_UNIT NUMBER , P_SID NUMBER := '0'   ,   P_FY VARCHAR2     ) RETURN VARCHAR2;
-- unit sale invoice
FUNCTION USI(P_UNIT NUMBER , P_SID NUMBER := '0' , p_loc NUMBER   , P_fy VARCHAR2    ) RETURN VARCHAR2; 
-- unit sale invoice summary
FUNCTION USS(P_UNIT NUMBER , P_SID NUMBER := '0' , p_loc NUMBER     ) RETURN VARCHAR2; 

--FUNCTION jvno(p_unit NUMBER := 1 ) RETURN VARCHAR2;



FUNCTION PRO_SCH(P_UNIT NUMBER  ) RETURN VARCHAR2;

FUNCTION PRO_UNIT_SCH(P_UNIT NUMBER  ) RETURN VARCHAR2;


-- Accounts New

FUNCTION jvno (p_unit NUMBER, p_fy  VARCHAR2 ) RETURN VARCHAR2;

FUNCTION jvno_hired (p_unit NUMBER, p_fy  VARCHAR2 ) RETURN VARCHAR2;



FUNCTION crvno(p_unit NUMBER, p_fy  VARCHAR2 ) RETURN VARCHAR2;

FUNCTION tmp_crvno(p_unit NUMBER, p_fy  VARCHAR2 ) RETURN VARCHAR2;


FUNCTION drvno(p_unit NUMBER, p_fy  VARCHAR2 ) RETURN VARCHAR2;

FUNCTION tmp_drvno(p_unit NUMBER, p_fy  VARCHAR2 ) RETURN VARCHAR2;

FUNCTION dpvno(p_unit NUMBER, p_fy  VARCHAR2 ) RETURN VARCHAR2;

FUNCTION pjvvno(p_unit NUMBER, p_fy VARCHAR2 ) RETURN VARCHAR2;
FUNCTION pjvvno_Type(p_unit NUMBER, p_fy VARCHAR2 , p_type varchar2) RETURN VARCHAR2;

FUNCTION onlno(p_unit NUMBER, p_fy  VARCHAR2 ) RETURN VARCHAR2;
FUNCTION ptvno(p_unit NUMBER, p_fy  VARCHAR2 ) RETURN VARCHAR2;

FUNCTION IMP(p_unit NUMBER, p_fy  VARCHAR2 , p_type varchar2  ) RETURN VARCHAR2;


FUNCTION bpvno(p_unit NUMBER, p_fy  VARCHAR2 ) RETURN VARCHAR2;
FUNCTION brvno(p_unit NUMBER, p_fy  VARCHAR2 ) RETURN VARCHAR2;

FUNCTION cash_bpvno(p_unit NUMBER, p_fy  VARCHAR2 ) RETURN VARCHAR2;
FUNCTION cash_brvno(p_unit NUMBER, p_fy  VARCHAR2 ) RETURN VARCHAR2;



FUNCTION btvno(p_unit NUMBER, p_fy  VARCHAR2 ) RETURN VARCHAR2;
FUNCTION bxvno(p_unit NUMBER, p_fy  VARCHAR2 ) RETURN VARCHAR2;

FUNCTION tmp_bxvno(p_unit NUMBER, p_fy  VARCHAR2 ) RETURN VARCHAR2;


-- Sales Area

FUNCTION ordno(p_unit NUMBER, p_fy  VARCHAR2 ) RETURN VARCHAR2;
FUNCTION ordnoE(p_unit NUMBER, p_fy  VARCHAR2 ) RETURN VARCHAR2;
FUNCTION ordnoD(p_unit NUMBER, p_fy  VARCHAR2, P_CITY Varchar2 ) RETURN VARCHAR2;  --Distributor 

FUNCTION tmp_ordnoD(p_unit NUMBER, p_fy  VARCHAR2, P_CITY Varchar2 ) RETURN VARCHAR2;


FUNCTION sivno(p_unit NUMBER, p_fy  VARCHAR2 , p_mtl_store varchar2 := 0) RETURN VARCHAR2;
FUNCTION srvno(p_unit NUMBER, p_fy  VARCHAR2 , p_mtl_store varchar2 := 0) RETURN VARCHAR2;


FUNCTION srtnvno(p_unit NUMBER, p_fy  VARCHAR2) RETURN VARCHAR2;


FUNCTION slvno(p_unit NUMBER, p_fy  VARCHAR2  , p_loc number := 0) RETURN VARCHAR2;

FUNCTION svrno(p_unit NUMBER, p_fy  VARCHAR2 ) RETURN VARCHAR2;
FUNCTION ssvno(p_unit NUMBER, p_fy  VARCHAR2 ) RETURN VARCHAR2;
FUNCTION siuno(p_unit NUMBER, p_fy  VARCHAR2 ) RETURN VARCHAR2;

-- Payment Slip No 

FUNCTION pslipno(p_unit NUMBER, p_fy  VARCHAR2 ) RETURN VARCHAR2;

------- WH


FUNCTION Wh_Order(P_UNIT NUMBER, P_SID NUMBER := '0', P_SBID NUMBER := '0' ,   P_FY VARCHAR2 ) RETURN VARCHAR2;

-- Return
FUNCTION WHRTN(P_UNIT NUMBER, P_SID NUMBER := '0', P_SBID NUMBER := '0' , P_FY VARCHAR2 ) RETURN VARCHAR2;
 
-- PARTY Return
FUNCTION WHPTN(P_UNIT NUMBER, P_SID NUMBER := '0', P_SBID NUMBER := '0' , P_FY VARCHAR2 ) RETURN VARCHAR2;

-- PO CONTRACT
FUNCTION pocontract(p_unit NUMBER, p_fy  VARCHAR2 ) RETURN VARCHAR2;

-- SALES FORE CAST
FUNCTION FORECAST(p_unit NUMBER, p_fy  VARCHAR2 ) RETURN VARCHAR2;

-- REJECTION INVOICE NO
FUNCTION REJECTION(p_unit NUMBER, p_fy  VARCHAR2 ) RETURN VARCHAR2;

-- PAKCGAE COST NO
FUNCTION PKG_COST(p_unit NUMBER, p_fy  VARCHAR2 ) RETURN VARCHAR2;

-- EXPERT COST NO
FUNCTION PKG_COST_EXP(p_unit NUMBER, p_fy  VARCHAR2 ) RETURN VARCHAR2;
--- PO

FUNCTION PO_REQ(p_unit NUMBER, p_fy  VARCHAR2 ) RETURN VARCHAR2;

FUNCTION PO_NO(p_unit NUMBER, p_fy  VARCHAR2 ) RETURN VARCHAR2;


FUNCTION PO_NO (P_UNIT NUMBER , P_SID NUMBER := '0',   P_FY VARCHAR2   ) RETURN VARCHAR2;



-- PKG BOM

FUNCTION BOM_NO(P_UNIT NUMBER ,   P_FY VARCHAR2 ) RETURN VARCHAR2;

FUNCTION BOM_ORDER_NO(P_UNIT NUMBER ,   P_FY VARCHAR2 ) RETURN VARCHAR2;

FUNCTION BOM_JOB_NO(P_UNIT NUMBER ,   P_FY VARCHAR2 ) RETURN VARCHAR2;

FUNCTION BOM_LAY_NO(P_UNIT NUMBER ,   P_FY VARCHAR2 ) RETURN VARCHAR2;

FUNCTION BOM_PLAN_NO(P_UNIT NUMBER ,   P_FY VARCHAR2 ) RETURN VARCHAR2;


-- PDS 

FUNCTION PDS_NO(P_UNIT NUMBER ,   P_FY VARCHAR2 ) RETURN VARCHAR2;


--- FREIGHT - PJV - FREIGHT

FUNCTION PJF_NO(P_UNIT NUMBER ,   P_FY VARCHAR2 ) RETURN VARCHAR2;


FUNCTION FTV_NO(P_UNIT NUMBER ,   P_FY VARCHAR2 ) RETURN VARCHAR2;


-- spcies , conversion

FUNCTION CONX_NO(P_UNIT NUMBER ,   P_FY VARCHAR2 ) RETURN VARCHAR2;

-- Audit No

FUNCTION WH_AUDIT_NO(P_UNIT NUMBER ,   P_FY VARCHAR2 ) RETURN VARCHAR2;

FUNCTION LOCX_NO(P_UNIT NUMBER ,   P_FY VARCHAR2 ) RETURN VARCHAR2;

FUNCTION FGS_REQ_NO(P_UNIT NUMBER ,   P_FY VARCHAR2 ) RETURN VARCHAR2;

FUNCTION ticket_no(P_UNIT NUMBER ,   P_FY VARCHAR2 ) RETURN VARCHAR2;

FUNCTION WLOCX_NO(P_UNIT NUMBER ,   P_FY VARCHAR2 ) RETURN VARCHAR2;   -- WARE HOUSE LOCATIONS
   
FUNCTION ISS_TO_PROD(P_UNIT NUMBER ,   P_FY VARCHAR2 ) RETURN VARCHAR2;   -- ISSUE TO PRODUCTION 

FUNCTION BOX_SALEORDER(P_UNIT NUMBER ,   P_FY VARCHAR2 ) RETURN VARCHAR2;   -- ISSUE TO PRODUCTION 

FUNCTION BOX_JOBCARD(P_UNIT NUMBER ,   P_FY VARCHAR2 ) RETURN VARCHAR2;   -- ISSUE TO PRODUCTION 

FUNCTION DISPATCHPLAN(P_UNIT NUMBER  ,  P_FY VARCHAR2  ) RETURN VARCHAR2;    

FUNCTION postages(P_UNIT NUMBER  ,  P_FY VARCHAR2  ) RETURN VARCHAR2;

FUNCTION token(P_UNIT NUMBER , p_date date    ) RETURN VARCHAR2;

FUNCTION QOT(P_UNIT NUMBER ) RETURN VARCHAR2;

FUNCTION WOD(P_UNIT NUMBER ) RETURN VARCHAR2;

FUNCTION MOD_CIV(P_UNIT NUMBER ) RETURN VARCHAR2;

FUNCTION WOD_CIV(P_UNIT NUMBER ) RETURN VARCHAR2;

FUNCTION FLT_BILL(P_UNIT NUMBER ) RETURN VARCHAR2;

FUNCTION vbook(P_UNIT NUMBER ) RETURN VARCHAR2;

FUNCTION LABORBREAK(P_UNIT NUMBER , P_FY VARCHAR2) RETURN VARCHAR2;

---

FUNCTION PROD_PKG(P_UNIT NUMBER, P_UID NUMBER := '0',  P_FY VARCHAR2 ) RETURN VARCHAR2; 

FUNCTION PKGS_DIE(P_UNIT NUMBER, P_UID NUMBER := '0',  P_FY VARCHAR2 ) RETURN VARCHAR2;

FUNCTION PKGS_FG(P_UNIT NUMBER, P_UID NUMBER := '0',  P_FY VARCHAR2 ) RETURN VARCHAR2;

FUNCTION PKGS_WP(P_UNIT NUMBER, P_UID NUMBER := '0',  P_FY VARCHAR2 ) RETURN VARCHAR2;

FUNCTION PKGS_LAM(P_UNIT NUMBER, P_UID NUMBER := '0',  P_FY VARCHAR2 ) RETURN VARCHAR2;




FUNCTION RDR(P_UNIT NUMBER, P_UID NUMBER := '0',  P_FY VARCHAR2 ) RETURN VARCHAR2;

function downtine(p_unit number , p_fy varchar2) return varchar2;

FUNCTION RRJ(P_UNIT NUMBER, P_FY VARCHAR2 ) RETURN VARCHAR2;

---

FUNCTION PROD_SEMI(P_UNIT NUMBER,    P_FY VARCHAR2 ) RETURN VARCHAR2;

--ADVANCE SALE FORECAST

FUNCTION ADV_FORECAST(p_unit NUMBER, p_fy  VARCHAR2 ) RETURN VARCHAR2; 

FUNCTION counter(p_unit NUMBER, table_name  VARCHAR2 ) RETURN VARCHAR2;

FUNCTION counter(p_unit NUMBER, table_name  VARCHAR2, P_DOC varchar2 ) RETURN VARCHAR2;



FUNCTION col_counter(p_unit NUMBER, table_name  VARCHAR2, p_col varchar2 ) RETURN VARCHAR2;

-- QA PKGS

FUNCTION QA_PAPER(P_UNIT NUMBER, P_FY VARCHAR2 ) RETURN VARCHAR2;

FUNCTION QC_PROD (P_UNIT NUMBER, P_FY VARCHAR2 ) RETURN VARCHAR2;


-- cph trading

FUNCTION CPH_REJ (P_UNIT NUMBER, P_FY VARCHAR2 ) RETURN VARCHAR2;

--- PL CLOSE NO
FUNCTION PL_CLOSE (P_UNIT NUMBER , P_FY VARCHAR2 ) RETURN VARCHAR2;

-- PK_ISO
FUNCTION PKG_ISO (P_UNIT NUMBER , P_FY VARCHAR2 ) RETURN VARCHAR2;

--PROD TGT
FUNCTION PROD_TXT (P_UNIT NUMBER , P_FY VARCHAR2 ) RETURN VARCHAR2;

FUNCTION PAY_REQUEST (P_UNIT NUMBER , P_FY VARCHAR2 ) RETURN VARCHAR2 ;

function task_no (p_unit number, p_dated date) return varchar2;


function QRCV  (P_UNIT NUMBER , P_SID NUMBER := '0',   P_FY VARCHAR2   ) RETURN VARCHAR2;


FUNCTION FLR_PLAN(P_UNIT NUMBER  ,  P_FY VARCHAR2  ) RETURN VARCHAR2;

FUNCTION FLR_ISS(P_UNIT NUMBER  ,  P_FY VARCHAR2  ) RETURN VARCHAR2;

---

-- Purchase requsition plan ( PRP )

FUNCTION PRP(P_UNIT NUMBER  ,  P_FY VARCHAR2  ) RETURN VARCHAR2;


FUNCTION HSE_IA(P_UNIT NUMBER  ,  P_FY VARCHAR2  ) RETURN VARCHAR2;

FUNCTION HSE_MDR(P_UNIT NUMBER  ,  P_FY VARCHAR2  ) RETURN VARCHAR2 ; 

FUNCTION HSE_ISD(P_UNIT NUMBER  ,  P_FY VARCHAR2  ) RETURN VARCHAR2 ;

FUNCTION HSE_WP(P_UNIT NUMBER  ,  P_FY VARCHAR2  ) RETURN VARCHAR2 ; -- WORK PERMIT



END;
/

/************************************************************************************************/

CREATE OR REPLACE PACKAGE BODY SMERP2122.Document_Of   AS

   FUNCTION IGP(P_UNIT NUMBER, P_SID NUMBER := '0'  , P_LOC NUMBER := '0'  ,   P_FY VARCHAR2  ) RETURN VARCHAR2 AS
   docid CHAR(3) := 'IGP';
   UID   CHAR(3) ;
   fy    VARCHAR(25) := p_fy;
   cnt   NUMBER;
   cntr  VARCHAR2(10);
   retval VARCHAR2(40);
   sfy VARCHAR2(20);
   
  BEGIN   
   
  sfy := Date_Of.Sfy_from_fy(p_fy); 
   
  IF Name_Of.location_type(NVL(P_LOC,1)) = 'F.G.STORE' THEN
   
   SELECT DOC_ID INTO UID FROM smf_units WHERE unit_id = p_unit;     
   SELECT NVL(MAX(SUBSTR(IGP_NO,-6)),0)+1 INTO cnt FROM INV_IGP_M   WHERE unit_id = p_unit AND fin_year = fy AND IGP_LOCATION = p_loc ;  -- last max number
   cntr :=LPAD(cnt,6,'0'); 
   retval := docid||'-FG-'||p_loc||'-'||sfy||'-'||cntr;
   
  ELSIF Name_Of.location_type(NVL(P_LOC,1)) = 'WAREHOUSE' THEN          
   SELECT DOC_ID INTO UID FROM smf_units WHERE unit_id = p_unit;     
   SELECT NVL(MAX(SUBSTR(IGP_NO,-6)),0)+1 INTO cnt FROM INV_IGP_M   WHERE unit_id = p_unit AND fin_year = fy AND IGP_LOCATION = p_loc ;  -- last max number
   cntr :=LPAD(cnt,6,'0'); 
   retval := docid||'-WH-'||UID||'-'||sfy||'-'||cntr;
  
  ELSIF Name_Of.location_type(NVL(P_LOC,1)) = 'SCRAP STORE' THEN          
   SELECT DOC_ID INTO UID FROM smf_units WHERE unit_id = p_unit;     
   SELECT NVL(MAX(SUBSTR(IGP_NO,-6)),0)+1 INTO cnt FROM INV_IGP_M   WHERE unit_id = p_unit AND fin_year = fy AND IGP_LOCATION = p_loc ;  -- last max number
   cntr :=LPAD(cnt,6,'0'); 
   retval := docid||'-SCP-'||UID||'-'||sfy||'-'||cntr;
  ELSE

   SELECT DOC_ID INTO UID FROM smf_units WHERE unit_id = p_unit;
         
   SELECT NVL(MAX(SUBSTR(IGP_NO,-6)),0)+1 INTO cnt FROM INV_IGP_M   WHERE unit_id = p_unit AND fin_year = fy
   AND  nvl(IGP_LOCATION,'0') NOT IN ( SELECT  LOCATOIN_ID FROM SMF_UNIT_LOCATIONS WHERE loc_type ='F.G.STORE') ;  
   
   cntr :=LPAD(cnt,6,'0'); 
   
   retval := docid||'-'||UID||'-'||sfy||'-'||cntr;
   
   SELECT COUNT(*) INTO cnt FROM INV_IGP_M  WHERE igp_no = retval;
   
   IF NVL(cnt,0) > 0 THEN
   
      --retval := docid||'-'||UID||'-'||sfy||'-'||LPAD(TO_NUMBER(cnt)+1,6,'0');
  
  retval := NULL;
   
   END IF;
   
  
  END IF;    
   
  RETURN retval;
 
  END;
    
    
   
   FUNCTION OGP(P_UNIT NUMBER , P_SID NUMBER := '0' , P_LOC NUMBER := '0'  ,   P_FY VARCHAR2   ) RETURN VARCHAR2 AS
   docid  CHAR(3) := 'OGP';
   UID    CHAR(3) ;
   fy     VARCHAR(7);
   cnt    NUMBER;
   cntr   VARCHAR2(10);
   sfy    VARCHAR2(30);
   retval VARCHAR2(30);
   
   BEGIN    
   
           
          sfy := Date_Of.Sfy_from_fy(p_fy);
  

  IF Name_Of.location_type(NVL(P_LOC,0)) NOT IN ( 'F.G.STORE', 'SCRAP STORE' )  THEN
   
   
   SELECT DOC_ID INTO UID FROM smf_units WHERE unit_id = p_unit;   -- document id
   
               SELECT NVL(MAX(SUBSTR(OGP_NO,-6)),0)+1 INTO cnt FROM INV_OGP_M   WHERE unit_id = p_unit AND fin_year = P_FY
   AND  OGP_LOCATION NOT IN ( SELECT  LOCATOIN_ID FROM SMF_UNIT_LOCATIONS WHERE loc_type in ( 'F.G.STORE','SCRAP STORE'));
                 
   cntr :=LPAD(cnt,6,'0');    
   retval :=  docid||'-'||UID||'-' ||sfy||'-'||cntr;
   
ELSIF Name_Of.location_type(NVL(P_LOC,0)) = 'SCRAP STORE' THEN    

   SELECT DOC_ID INTO UID FROM smf_units WHERE unit_id = p_unit;   -- document id
   
   --UID := 'SCP';
   
   SELECT NVL(MAX(SUBSTR(OGP_NO,-6)),0)+1 INTO cnt FROM INV_OGP_M   WHERE unit_id = p_unit AND fin_year = P_FY
   AND  OGP_LOCATION  = P_LOC ;  
   cntr :=LPAD(cnt,6,'0');    
   retval :=  docid||'-'||UID||'-'||'SCP'||'-'||sfy||'-'||cntr;
   
    
   
ELSIF Name_Of.location_type(NVL(P_LOC,0)) = 'F.G.STORE' THEN
   
   
  if p_loc = 43 then
    UID := 'GBK';
    SELECT NVL(MAX(SUBSTR(OGP_NO,-6)),0)+1 INTO cnt FROM INV_OGP_M   WHERE unit_id = p_unit AND fin_year = P_FY AND OGP_LOCATION = p_loc  ;  -- last max number
   else

    SELECT DOC_ID INTO UID FROM smf_units WHERE unit_id = p_unit;   -- document id

    SELECT NVL(MAX(SUBSTR(OGP_NO,-6)),0)+1 INTO cnt FROM INV_OGP_M   WHERE unit_id = p_unit AND fin_year = P_FY AND OGP_LOCATION = p_loc  ;  -- last max number    
  end if;
   
  cntr :=LPAD(cnt,6,'0');    
  retval :=  docid||'-FG-'||UID||'-'||p_loc||'-'||sfy||'-'||cntr;
END IF;
 
RETURN retval;    
   END;
   
   
   -- INTER UNIT GATE PASS
   FUNCTION IUS(P_UNIT NUMBER ,  P_FY VARCHAR2  ) RETURN VARCHAR2 AS    
BB NUMBER;
retval VARCHAR2(30);
docid VARCHAR2(3);
BEGIN
SELECT DOC_ID INTO docid FROM smf_op_units WHERE op_unit_id = p_unit; 
SELECT MAX(SUBSTR(VNO,9,14)+1) INTO BB 
FROM INT_SAL_M WHERE fin_year = p_fy AND unit_id = p_unit;
IF BB IS NULL THEN
retval := 'IUS-' || docid ||  '-1000001';
ELSE
retval:= 'IUS-' || docid ||'-'||  BB;
END IF;
RETURN retval;
END;

       FUNCTION IUP(P_UNIT NUMBER ,  P_FY VARCHAR2  ) RETURN VARCHAR2 AS       
            BB NUMBER;
            retval VARCHAR2(30);
            docid VARCHAR2(3);
        BEGIN
            
            SELECT DOC_ID INTO docid FROM smf_units WHERE unit_id = p_unit; 
            
            SELECT MAX(SUBSTR(SI_NO,9,14)+1) INTO BB 
            FROM wh_igp_m WHERE   unit_id = p_unit and fin_year = p_fy  ;
            
            IF BB IS NULL THEN
                retval := 'IUP-' || docid ||  '-1000001';
            ELSE
                retval:= 'IUP-' || docid ||'-'||  BB;
            END IF;
            RETURN retval;
        END;    
       
       
   /*FUNCTION OGP(P_UNIT NUMBER, P_SID NUMBER := '0'   ) RETURN VARCHAR2 as
   docid char(3) := 'OGP';
   uid    char(3) ;
   fy    varchar(7);
   nfy      varchar(5);
   cnt    number;
   cntr  varchar2(10);
   begin    
   select DOC_ID into uid  from smf_units where unit_id = p_unit;   -- document id
   select doc_year into fy  from CALENDAR where ndate = to_char(trunc(sysdate),'rrrrmmdd');  -- financial year
   select nyear into nfy  from CALENDAR   where ndate = to_char(trunc(sysdate),'rrrrmmdd');  -- financial year    
   select nvl(max(substr(OGP_NO,-6)),0)+1 into cnt  from  INV_OGP_M    where unit_id = p_unit AND fin_year = fy   and store_id = p_sid  ;  -- last max number
   cntr :=lpad(cnt,6,'0'); 
   
       return docid||'-'||uid||'-'||nfy||'-'||P_SID||'-'|| cntr;
   
   end;
   */
   
   FUNCTION INS(P_UNIT NUMBER ,   P_FY VARCHAR2 ) RETURN VARCHAR2 AS
   docid CHAR(3) := 'INS';
   UID   CHAR(3) ;
   fy    VARCHAR(10) := p_fy;
   cnt   NUMBER;
   cntr  VARCHAR2(10);
   sfy   VARCHAR2(20);
   BEGIN    

    sfy := Date_Of.Sfy_from_fy(p_fy); 

   SELECT DOC_ID INTO UID FROM smf_units WHERE unit_id = p_unit;   -- document id
   --select doc_year into fy from CALENDAR where ndate = to_char(trunc(time_of.date_gate(sysdate)),'rrrrmmdd');  -- financial year
   SELECT NVL(MAX(SUBSTR(INS_NO,-6)),0)+1 INTO cnt FROM INV_INSPECTION_M   WHERE unit_id = p_unit  AND fin_year = fy;  -- last max number
   cntr :=LPAD(cnt,6,'0'); 
   
   RETURN docid||'-'||UID||'-'||Sfy||'-'||cntr;
   
   END;

 
   
   FUNCTION GRN(P_UNIT NUMBER, P_SID NUMBER := '0',   P_FY VARCHAR2   ) RETURN VARCHAR2 AS
   docid CHAR(3) := 'GRN';
   UID    CHAR(3) ;
   fy    VARCHAR(25)  ;
   nfy      VARCHAR(5);
   cnt    NUMBER;
   cntr  VARCHAR2(10);
   sfy    VARCHAR(25);
           retval varchar2(50);
   
   BEGIN    
   
   sfy := Date_Of.Sfy_from_fy(p_fy); 
   
   SELECT DOC_ID INTO UID  FROM smf_units WHERE unit_id = p_unit;   -- document id
   --select doc_year into fy  from CALENDAR where ndate = to_char(trunc(time_of.date_gate(sysdate)),'rrrrmmdd');  -- financial year
   --SELECT nyear INTO nfy  FROM CALENDAR   WHERE ndate = TO_CHAR(TRUNC(Time_Of.date_gate(SYSDATE)),'rrrrmmdd');  -- financial year    
   
          -- if p_unit = 19 then

               SELECT NVL(MAX(SUBSTR(GRN_NO,-6)),0)+1 INTO cnt  FROM  INV_GRN_M    WHERE unit_id = p_unit AND fin_year = p_fy and store_id = p_sid  ;  -- last max number
                cntr :=LPAD(cnt,6,'0'); 
                retval := docid||'-'||UID||'-'||lpad(p_sid,2,'0')||'-'||sfy|| '-'|| cntr; 
           
           /*else
           

           SELECT NVL(MAX(SUBSTR(GRN_NO,-6)),0)+1 INTO cnt  FROM  INV_GRN_M    WHERE unit_id = p_unit AND fin_year = p_fy ; --and store_id = p_sid  ;  -- last max number
                cntr :=LPAD(cnt,6,'0');
               retval := docid||'-'||UID||'-'||sfy|| '-'|| cntr; 
*/
--    end if;
           
   
       RETURN retval; 
   
   END;
   
   

   FUNCTION DMD(P_UNIT NUMBER, P_UID NUMBER := '0' , P_FY VARCHAR2 ) RETURN VARCHAR2 AS
   docid CHAR(3) := 'DMD';
   UID   VARCHAR2(5) ;
   fy    VARCHAR(7);
   cnt   NUMBER;
   cntr  VARCHAR2(10);
   usrid VARCHAR2(6);
   nfy  VARCHAR(5);
   sfy  VARCHAR2(20);
   BEGIN    

   sfy := Date_Of.Sfy_from_fy(p_fy);
   SELECT DOC_ID INTO UID    FROM smf_units  WHERE unit_id = p_unit;   -- document id
--    SELECT nyear INTO nfy    FROM CALENDAR   WHERE ndate = TO_CHAR(TRUNC(Time_Of.date_gate(SYSDATE)),'rrrrmmdd');  -- financial year
--    SELECT DOC_YEAR INTO fy    FROM CALENDAR   WHERE ndate = TO_CHAR(TRUNC(Time_Of.date_gate(SYSDATE)),'rrrrmmdd');  -- financial year
SELECT NVL(MAX(SUBSTR(DMD_NO,-6)),0)+1 INTO cnt FROM INV_DMD_M   WHERE unit_id = p_unit AND fin_year = P_fy AND user_id = p_uid;  -- last max number
cntr   := LPAD(cnt,6,'0'); 
usrid  := LPAD(P_UID,5,'0');
   
   RETURN UID||'-'||sfy||'-'||usrid||'-'||cntr;
   END;
   

   FUNCTION ISS(P_UNIT NUMBER, P_SID NUMBER := '0', P_SBID NUMBER := '0' , P_FY VARCHAR2) RETURN VARCHAR2 AS
   docid CHAR(3) := 'ISS';
   UID    CHAR(3) ;
   fy    VARCHAR(7);
   nfy      VARCHAR(5);
   cnt    NUMBER;
   cntr  VARCHAR2(10);
   sfy VARCHAR2(40);
           cat      number;
           
           retval varchar2(50);
   BEGIN    
   
   
           if p_unit in ( 19 ) and p_sid = 18 then

               
               if p_sbid = '93' then
               
                   sfy := Date_Of.Sfy_from_fy(p_fy);
                   SELECT DOC_ID INTO UID  FROM smf_units WHERE unit_id = p_unit;   -- document id
                   
                   SELECT NVL(MAX(SUBSTR(ISS_NO,-6)),0)+1 INTO cnt  FROM INV_ISS_M   WHERE unit_id = p_unit AND fin_year = P_FY and store_id = 18 and iss_date >= '01-jan-2019'
                   and UPPER(substr(substr(iss_no,-10),1,4)) = '-BX-'; 
                   
                   cntr :=LPAD(cnt,6,'0');
                    
                   retval := docid||'-'||UID||'-'||sfy||'-BX-' ||cntr;
                   

               else
                   sfy := Date_Of.Sfy_from_fy(p_fy);
                   SELECT DOC_ID INTO UID  FROM smf_units WHERE unit_id = p_unit;   -- document id
                   SELECT NVL(MAX(SUBSTR(ISS_NO,-6)),0)+1 INTO cnt  FROM INV_ISS_M   WHERE unit_id = p_unit AND fin_year = P_FY and store_id = 18 and iss_date >= '01-jan-2019'
                   and substr(substr(iss_no,-10),1,4) = '-18-'; 
 
                   cntr :=LPAD(cnt,6,'0'); 
                   retval := docid||'-'||UID||'-'||sfy||'-18-' ||cntr;
               end if;           
                   
           
           elsif p_unit in ( 19 ) and p_sid <> 18 then


               sfy := Date_Of.Sfy_from_fy(p_fy);
                 
               SELECT DOC_ID INTO UID  FROM smf_units WHERE unit_id = p_unit;   -- document id
               SELECT NVL(MAX(SUBSTR(ISS_NO,-6)),0)+1 INTO cnt  FROM INV_ISS_M   WHERE unit_id = p_unit AND fin_year = P_FY and store_id <> 18 ; 
               cntr :=LPAD(cnt,6,'0'); 
               retval := docid||'-'||UID||'-'|| lpad(P_SID,2,'0') ||'-'||sfy||'-' ||cntr;


           else
               sfy := Date_Of.Sfy_from_fy(p_fy);
     
               SELECT DOC_ID INTO UID  FROM smf_units WHERE unit_id = p_unit;   -- document id
               SELECT NVL(MAX(SUBSTR(ISS_NO,-6)),0)+1 INTO cnt  FROM INV_ISS_M   WHERE unit_id = p_unit AND fin_year = P_FY ; 
               cntr :=LPAD(cnt,6,'0'); 
               retval := docid||'-'||UID||'-'|| lpad(P_SID,2,'0') ||'-'||sfy||'-' ||cntr;
            
            end if;



           RETURN retval ;
   
   END;

    FUNCTION ISS_ADJ(P_UNIT NUMBER, P_SID NUMBER := '0', P_SBID NUMBER := '0' , P_FY VARCHAR2 ) RETURN VARCHAR2 AS
           docid     CHAR(3) := 'ADS';
           UID       CHAR(3) ;
           fy        VARCHAR(7);
           nfy       VARCHAR(5);
           cnt       NUMBER;
           cntr      VARCHAR2(10);
           sfy       VARCHAR2(40);
       BEGIN       
            sfy := Date_Of.Sfy_from_fy(p_fy);
             
           SELECT DOC_ID INTO UID  FROM smf_units WHERE unit_id = p_unit;   -- document id
           SELECT NVL(MAX(SUBSTR(ISS_NO,-6)),0)+1 INTO cnt  FROM INV_ISS_ADJ_M   WHERE unit_id = p_unit AND fin_year = P_FY ; 
           cntr :=LPAD(cnt,6,'0'); 
            RETURN docid||'-'||UID||'-'||sfy||'-' ||cntr;
       END;
    
   
   FUNCTION dbnote(P_UNIT NUMBER , p_fy  VARCHAR2) RETURN VARCHAR2 AS
BB     NUMBER;
retval VARCHAR2(30);
docid  VARCHAR2(3);
            sfy    VARCHAR2(40);
        BEGIN
            sfy := Date_Of.Sfy_from_fy(p_fy);
        
SELECT DOC_ID INTO docid FROM smf_op_units WHERE op_unit_id = p_unit; 
            
            
SELECT MAX(SUBSTR(dr_no,-7)+1) INTO BB 
FROM DR_NOTE_M WHERE fin_year = p_fy AND unit_id = p_unit;
IF BB IS NULL THEN
retval := 'DNV-' || docid ||'-'||sfy||'-'|| '-1000001';
ELSE
retval := 'DNV-' || docid ||'-'||sfy||'-'||  BB;
END IF;
            
    RETURN retval;
            
END;

   FUNCTION RTN(P_UNIT NUMBER, P_SID NUMBER := '0', P_SBID NUMBER := '0' , P_FY varchar2  ) RETURN VARCHAR2 AS
   docid CHAR(3) := 'RTN';
   UID    CHAR(3) ;
   fy    VARCHAR(7);
   nfy      VARCHAR(5);
   cnt    NUMBER;
   cntr  VARCHAR2(10);
   sfy varchar2(30);
           retval varchar2(40);
   BEGIN    


           
           if p_unit in ( 19 ) and p_sid = 18 then

               if p_sbid = '93' then
                   sfy := Date_Of.Sfy_from_fy(p_fy);
                   SELECT DOC_ID INTO UID  FROM smf_units WHERE unit_id = p_unit;   -- document id
                   
                   SELECT NVL(MAX(SUBSTR(RTN_NO,-6)),0)+1 INTO cnt  FROM INV_RTN_M   WHERE unit_id = p_unit AND fin_year = P_FY and store_id = 18  
                   and substr(substr(RTN_NO,-10),1,4) = '-BX-'; 
                   
                   cntr :=LPAD(cnt,6,'0');
                    
                   retval := docid||'-'||UID||'-'||sfy||'-BX-' ||cntr;
                end if;   
   
           else
               sfy := Date_Of.Sfy_from_fy(p_fy);
               SELECT DOC_ID INTO UID  FROM smf_units WHERE unit_id = p_unit;    
               SELECT NVL(MAX(SUBSTR(RTN_NO,-6)),0)+1 INTO cnt  FROM INV_RTN_M   WHERE unit_id = p_unit AND fin_year = p_fy ; --and store_id = p_sid and INV_STORE_ID=P_SBID ;   -- last max number
               cntr :=LPAD(cnt,6,'0'); 
               RETURN docid||'-'||UID||'-'||sfy|| '-'||cntr;
       
            end if;
            
            
            return retval;
            
   END;


   FUNCTION Prod(P_UNIT NUMBER, P_SID NUMBER := '0', P_SBID NUMBER := '0' ,   P_FY VARCHAR2 ) RETURN VARCHAR2 AS
   docid CHAR(3) := 'PRD';
   UID    CHAR(3) ;
   fy    VARCHAR(7);
   nfy      VARCHAR(5);
   cnt    NUMBER;
   cntr  VARCHAR2(10);
   sfy      VARCHAR2(20); 
   BEGIN    
   
   sfy := Date_Of.Sfy_from_fy(p_fy);
   
           if p_unit in ( 19 ) then

               SELECT DOC_ID INTO UID  FROM smf_units WHERE unit_id = p_unit;   -- document id
               SELECT NVL(MAX(SUBSTR(pro_NO,-6)),0)+1 INTO cnt  FROM PRO_PACKING_M  WHERE unit_id = p_unit  and fin_year = p_fy ;  -- last max number
               cntr :=LPAD(cnt,6,'0'); 
               
               RETURN docid||'-'||UID||'-'||sfy||'-' ||cntr;

           else
           
               SELECT DOC_ID INTO UID  FROM smf_units WHERE unit_id = p_unit;   -- document id
               SELECT NVL(MAX(SUBSTR(pro_NO,-6)),0)+1 INTO cnt  FROM PRO_PACKING_M  WHERE unit_id = p_unit AND fin_year = P_FY AND user_id = P_SBID  ;  -- last max number
               cntr :=LPAD(cnt,6,'0'); 
       
               RETURN docid||'-'||UID||'-'||sfy||'-' ||P_SBID||'-'||cntr;
            
            end if;
               
   END;

    FUNCTION Prod_floor(P_UNIT NUMBER, P_SID NUMBER := '0', P_SBID NUMBER := '0' , P_FY VARCHAR2 ) RETURN VARCHAR2 as
           docid     CHAR(3) := 'PRD';
           UID       CHAR(3) ;
           fy        VARCHAR(7);
           nfy      VARCHAR(5);
           cnt       NUMBER;
           cntr      VARCHAR2(10);
           sfy      VARCHAR2(20); 
       BEGIN       
           
               sfy := Date_Of.Sfy_from_fy(p_fy);
           
               SELECT DOC_ID INTO UID  FROM smf_units WHERE unit_id = P_UNIT;   -- document id
               SELECT NVL(MAX(SUBSTR(pro_NO,-6)),0)+1 INTO cnt  FROM PRO_FLOOR_M  WHERE unit_id = P_UNIT AND fin_year = P_FY   AND user_id = P_SBID ;    -- last max number
               cntr :=LPAD(cnt,6,'0'); 
               
               RETURN docid||'-'||UID||'-'||sfy||'-' ||P_SBID||'-'||cntr;
          
                   
       END;

    FUNCTION PPL(P_UNIT NUMBER,   P_FY VARCHAR2 ) RETURN VARCHAR2 AS
           docid     CHAR(3) := 'PPL';
           UID       CHAR(3) ;
           fy        VARCHAR(7);
           nfy      VARCHAR(5);
           cnt       NUMBER;
           cntr      VARCHAR2(10);
           sfy      VARCHAR2(20); 
       BEGIN       
               sfy := Date_Of.Sfy_from_fy(p_fy);
               SELECT DOC_ID INTO UID  FROM smf_units WHERE unit_id = p_unit;   -- document id
               SELECT NVL(MAX(SUBSTR(PLAN_NO,-6)),0)+1 INTO cnt  FROM WH_PROD_PLAN_M  WHERE unit_id = p_unit AND fin_year = P_FY ;
               cntr :=LPAD(cnt,6,'0'); 
               RETURN docid||'-'||UID||'-'||sfy||'-'  ||cntr;
       END;
    

       FUNCTION PRcv(P_UNIT NUMBER, P_SID NUMBER := '0', P_SBID NUMBER := '0' , P_FY VARCHAR2 ) RETURN VARCHAR2 as
           docid     CHAR(3) := 'RCV';
           UID       CHAR(3) ;
           fy        VARCHAR(7);
           nfy      VARCHAR(5);
           cnt       NUMBER;
           cntr      VARCHAR2(10);
           sfy      VARCHAR2(20); 
       BEGIN       
           
           sfy := Date_Of.Sfy_from_fy(p_fy);
           
           SELECT DOC_ID INTO UID  FROM smf_units WHERE unit_id = p_unit;   -- document id
           SELECT NVL(MAX(SUBSTR(pro_NO,-6)),0)+1 INTO cnt  FROM PRO_PROD_RCV_M  WHERE unit_id = p_unit AND fin_year = P_FY AND STORE_ID = P_SID AND mtl_store_id = P_SBID  ;  -- last max number
           cntr :=LPAD(cnt,6,'0'); 
           RETURN docid||'-'||UID||'-'||sfy||'-' ||P_SBID||'-'||cntr;
       END;
       

   FUNCTION PTN(P_UNIT NUMBER, P_SID NUMBER := '0' ,   P_FY VARCHAR2   ) RETURN VARCHAR2 AS
   docid CHAR(3) := 'PTN';
   UID    CHAR(3) ;
   fy    VARCHAR(7);
   nfy      VARCHAR(5);
   cnt    NUMBER;
   cntr  VARCHAR2(10);
   sfy VARCHAR2(10);
   BEGIN    
   SELECT DOC_ID INTO UID  FROM smf_units WHERE unit_id = p_unit;   -- document id
   SELECT doc_year INTO fy  FROM CALENDAR WHERE ndate = TO_CHAR(TRUNC(SYSDATE),'rrrrmmdd');  -- financial year
   SELECT nyear INTO nfy  FROM CALENDAR   WHERE ndate = TO_CHAR(TRUNC(SYSDATE),'rrrrmmdd');  -- financial year    
    
sfy := Date_Of.Sfy_from_fy(p_fy);
   SELECT NVL(MAX(SUBSTR(PTN_NO,-6)),0)+1 INTO cnt  FROM INV_PTN_M   WHERE unit_id = p_unit AND fin_year = P_fy AND store_id = p_sid   AND SUBSTR(PTN_NO,1,3) = docid  ;  -- last max number
   cntr :=LPAD(cnt,6,'0'); 
   
       RETURN docid||'-'||UID||'-'||sfy|| '-'|| cntr;
   
   END;
       
   FUNCTION REJ(P_UNIT NUMBER, P_SID NUMBER := '0' ,   P_FY VARCHAR2    ) RETURN VARCHAR2 AS
   docid CHAR(3) := 'REJ';
   UID    CHAR(3) ;
   fy    VARCHAR(7);
   nfy      VARCHAR(5);
   cnt    NUMBER;
   cntr  VARCHAR2(10);
   SFY VARCHAR2(30);
   BEGIN    
   SELECT DOC_ID INTO UID  FROM smf_units WHERE unit_id = p_unit;   -- document id
   --SELECT doc_year INTO fy  FROM CALENDAR WHERE ndate = TO_CHAR(TRUNC(SYSDATE),'rrrrmmdd');  -- financial year
   --SELECT nyear INTO nfy  FROM CALENDAR   WHERE ndate = TO_CHAR(TRUNC(SYSDATE),'rrrrmmdd');  -- financial year
    
   sfy := Date_Of.Sfy_from_fy(p_fy);
       
   SELECT NVL(MAX(SUBSTR(PTN_NO,-6)),0)+1 INTO cnt  FROM INV_PTN_M   WHERE unit_id = p_unit AND fin_year = P_FY  AND   SUBSTR(PTN_NO,1,3) = docid  ;  -- last max number
   cntr :=LPAD(cnt,6,'0'); 
   
       RETURN docid||'-'||UID||'-'||Sfy|| '-'|| cntr;
   
   END;


   FUNCTION ssv(P_UNIT NUMBER  ) RETURN VARCHAR2 AS
   retval  VARCHAR2(20);
   cnt NUMBER;
   BEGIN    

   SELECT COUNT(*) INTO cnt FROM ledd WHERE SUBSTR(vno,1,3) ='SSV';
   IF NVL(cnt,0) = 0 THEN
    retval:='SSV1000001';
ELSE
SELECT  MAX(SUBSTR( vno, -7))+1 INTO retval FROM ledd WHERE SUBSTR(vno,1,3) ='SSV' ; --AND fin_year = P_FY ;
    retval := 'SSV'||retval ; 
END IF;
       RETURN retval;
   
   
   END;        

   FUNCTION WHIGP(P_UNIT NUMBER, P_SID NUMBER := '0'   ) RETURN VARCHAR2 AS
   docid CHAR(3) := 'IGP';
   UID   CHAR(3) ;
   fy    VARCHAR(7);
   cnt   NUMBER;
   cntr  VARCHAR2(10);
   retval VARCHAR2(40);
   BEGIN    
   SELECT DOC_ID INTO UID FROM smf_units WHERE unit_id = p_unit;   -- document id
   SELECT doc_year INTO fy FROM CALENDAR WHERE ndate = TO_CHAR(TRUNC(SYSDATE),'rrrrmmdd');  -- financial year
   SELECT NVL(MAX(SUBSTR(IGP_NO,-6)),0)+1 INTO cnt FROM WH_IGP_M   WHERE unit_id = p_unit AND fin_year = fy;  -- last max number
   cntr :=LPAD(cnt,6,'0'); 
   
   retval := docid||'-'||UID||'-'||fy||'-'||cntr;
   
   SELECT COUNT(*) INTO cnt FROM INV_IGP_M  WHERE igp_no = retval;
   IF NVL(cnt,0) > 0 THEN
      retval := docid||'-'||UID||'-'||fy||'-'||LPAD(TO_NUMBER(cnt)+1,6,'0');
   END IF;
   
   RETURN retval;
   END;    
   
   FUNCTION TRN(P_UNIT NUMBER , P_SID NUMBER := '0'   ,   P_FY VARCHAR2    ) RETURN VARCHAR2 AS
   docid CHAR(3) := 'TRN';
   UID   CHAR(3) ;
   fy    VARCHAR(7);
   cnt   NUMBER;
   cntr  VARCHAR2(10);
   retval VARCHAR2(40);
   sfy VARCHAR2(40);
   
   BEGIN    
   
   sfy := Date_Of.Sfy_from_fy(p_fy);
   
   SELECT DOC_ID INTO UID FROM smf_units WHERE unit_id = p_unit;   -- document id
   --SELECT doc_year INTO fy FROM CALENDAR WHERE ndate = TO_CHAR(TRUNC(SYSDATE),'rrrrmmdd');  -- financial year
   SELECT NVL(MAX(SUBSTR(TRN_NO,-6)),0)+1 INTO cnt FROM INV_TRN_M   WHERE unit_id = p_unit AND fin_year = p_fy;  -- last max number
   cntr :=LPAD(cnt,6,'0'); 
   
   retval := docid||'-'||UID||'-'||sfy||'-'||cntr;
   
   SELECT COUNT(*) INTO cnt FROM INV_TRN_M  WHERE TRN_NO = retval;
   IF NVL(cnt,0) > 0 THEN
      retval := docid||'-'||UID||'-'||sfy||'-'||LPAD(TO_NUMBER(cnt)+1,6,'0');
   END IF;
   
   RETURN retval;
   END;
   
   

   FUNCTION USI(P_UNIT NUMBER , P_SID NUMBER := '0'  , p_loc NUMBER , P_fy VARCHAR2   ) RETURN VARCHAR2 AS
   
   docid CHAR(3) := 'SIN';
   UID   CHAR(3) ;
   fy    VARCHAR(7);
   cnt   NUMBER;
   cntr  VARCHAR2(10);
   retval VARCHAR2(40);
   SID NUMBER;
   loctype VARCHAR2(20);
   sfy VARCHAR2(200);
   
   BEGIN    

       sfy := Date_Of.Sfy_from_fy(p_fy);    
   IF p_sid <>2 THEN
      SID := 0;
   ELSE
      SID := 2;
   END IF;
   
  -- SELECT loc_type INTO loctype FROM SMF_UNIT_LOCATIONS   WHERE LOCATOIN_ID = p_loc;
   
   SELECT DOC_ID INTO UID FROM smf_units WHERE unit_id = p_unit;   -- document id
   --SELECT doc_year INTO fy FROM CALENDAR WHERE ndate = TO_CHAR(TRUNC(SYSDATE),'rrrrmmdd');  -- financial year
   
   /*
   IF SID = 2 THEN

      IF loctype= 'F.G.STORE' THEN
   SELECT NVL(MAX(SUBSTR(SI_NO,-6)),0)+1 INTO cnt FROM INV_OGP_M   WHERE unit_id = p_unit AND fin_year = P_fy AND store_id = 2 
   AND OGP_LOCATION  = p_loc;
  ELSE
   SELECT NVL(MAX(SUBSTR(SI_NO,-6)),0)+1 INTO cnt FROM INV_OGP_M   WHERE unit_id = p_unit AND fin_year = P_fy AND store_id = 2 
   AND OGP_LOCATION NOT IN (  SELECT LOCATOIN_ID  FROM SMF_UNIT_LOCATIONS   WHERE  unit_id = p_unit  AND LOC_TYPE = 'F.G.STORE' );
  END IF; 
  
   ELSE
  SELECT NVL(MAX(SUBSTR(SI_NO,-6)),0)+1 INTO cnt FROM INV_OGP_M   WHERE unit_id = p_unit AND fin_year = P_fy AND store_id <> SID;  -- last max number
   END IF;      
   */
  SELECT NVL(MAX(SUBSTR(SI_NO,-6)),0)+1 INTO cnt FROM INV_OGP_M   WHERE unit_id = p_unit AND fin_year = P_fy and substr(SI_NO,1,3) = 'SIN' ;  -- last max number

   
   cntr :=LPAD(cnt,6,'0'); 
   
       
   /*IF SID = 2 THEN
      IF loctype= 'F.G.STORE' THEN      
  retval := docid||'-'||UID||'-'||sfy||'-'||LPAD(p_loc,2,'0')||'-'||cntr;
  ELSE    
    retval := docid||'-'||UID||'-'||sfy||'-'||LPAD(SID,2,'0')||'-'||cntr;
  END IF;
   ELSE
       retval := docid||'-'||UID||'-'||sfy||'-'||LPAD(SID,2,'0')||'-'||cntr;
   END IF;
   
   SELECT COUNT(*) INTO cnt FROM INV_OGP_M  WHERE SI_NO = retval and fin_year = P_FY;
   IF NVL(cnt,0) > 0 THEN
      retval := docid||'-'||UID||'-'||sfy||'-'||LPAD(SID,2,'0')||'-'||LPAD(TO_NUMBER(cnt)+1,6,'0');
   END IF;
   */
   
  retval := docid||'-'||UID||'-'||sfy||'-'||cntr;
   
   RETURN retval;
   END;  

   
   
   FUNCTION USS(P_UNIT NUMBER , P_SID NUMBER := '0' , p_loc NUMBER     ) RETURN VARCHAR2 AS 
   docid CHAR(3) := 'SIS';
   UID   CHAR(3) ;
   fy    VARCHAR(7);
   cnt   NUMBER;
   cntr  VARCHAR2(10);
   retval VARCHAR2(40);
   BEGIN    
   SELECT DOC_ID INTO UID FROM smf_units WHERE unit_id = p_unit;   -- document id
   SELECT NVL(MAX(SUBSTR(INVNO,-6)),0)+1 INTO cnt FROM JV_SI   WHERE  SI_UNIT_ID  = p_unit AND si_store_id = p_sid;  -- last max number
   cntr :=LPAD(cnt,6,'0'); 
   
   retval := docid||'-'|| P_UNIT ||'-'||P_sid||'-'||cntr;
   
   SELECT COUNT(*) INTO cnt FROM JV_SI  WHERE INVNO = retval;
   IF NVL(cnt,0) > 0 THEN
      retval := docid||'-'|| P_UNIT ||'-'||P_sid||'-'||LPAD(TO_NUMBER(cnt)+1,6,'0');
   END IF;
   
   RETURN retval;
   END;
   

   
   FUNCTION PRO_SCH(P_UNIT NUMBER  ) RETURN VARCHAR2 AS
    retval VARCHAR2(40);
docid CHAR(3) := 'SCH';
    UID   CHAR(3) ;
cnt NUMBER;
cntr VARCHAR2(10); 
   BEGIN
     SELECT DOC_ID INTO UID FROM smf_units WHERE unit_id = p_unit;   -- document id
  -- SELECT NVL(MAX(SUBSTR(PRO_NO,-6)),0)+1 INTO cnt FROM PRO_SCHEDULE_M    WHERE  UNIT_ID  = p_unit ;
   cntr :=LPAD(cnt,6,'0'); 
   
   retval := docid||'-'|| UID || '-'||cntr;
   
   RETURN retval;
   
END;

FUNCTION PRO_UNIT_SCH(P_UNIT NUMBER  ) RETURN VARCHAR2 AS
    retval VARCHAR2(40);
docid CHAR(3) := 'UPS';
    UID   CHAR(3) ;
cnt NUMBER;
cntr VARCHAR2(10); 
   BEGIN
     SELECT DOC_ID INTO UID FROM smf_units WHERE unit_id = p_unit;   -- document id
--   SELECT NVL(MAX(SUBSTR(PRO_NO,-6)),0)+1 INTO cnt FROM SCH_UNI_M    WHERE  UNIT_ID  = p_unit ;
   cntr :=LPAD(cnt,6,'0'); 
   
   retval := docid||'-'|| UID || '-'||cntr;
   
   RETURN retval;
   
END;
   
   
  /* FUNCTION jvno(p_unit NUMBER := 1 ) RETURN VARCHAR2 AS
AA NUMBER;
BB NUMBER;
retval VARCHAR2(30);
BEGIN
SELECT MAX(SUBSTR(JV.VNO,4,10)+1) INTO BB 
FROM JV;
IF BB IS NULL THEN
retval :='JVR1' || AA ||  '000001';
ELSE
retval:='JVR' || BB;
NULL;
END IF;
RETURN retval;
END;    
 */
 
 -- Accounts
 -- ** JV
     FUNCTION jvno(p_unit NUMBER, p_fy  VARCHAR2 ) RETURN VARCHAR2 AS
BB NUMBER;
retval VARCHAR2(30);
docid VARCHAR2(3);
sfy VARCHAR2(30);
BEGIN
SELECT DOC_ID INTO docid FROM smf_op_units WHERE op_unit_id = p_unit;
sfy := Date_Of.Sfy_from_fy(p_fy);
IF p_fy ='2017-18-1' THEN
SELECT MAX(SUBSTR(VNO,9,14)+1) INTO BB 
FROM JV WHERE fin_year = p_fy AND unit_id = decode(p_unit,0,1,p_unit);
IF BB IS NULL THEN
retval := 'JVR-' || docid ||  '-1000001';
ELSE
retval:= 'JVR-' || docid ||'-'||  BB;
END IF;
ELSE
SELECT MAX(SUBSTR(VNO,16,14)+1) INTO BB 
FROM JV WHERE fin_year = p_fy AND unit_id = decode(p_unit,0,1,p_unit);
IF BB IS NULL THEN
retval := 'JVR-' || docid ||'-'||sfy||  '-1000001';
ELSE
retval:= 'JVR-' || docid ||'-'||sfy ||'-'||  BB;
END IF;
END IF;
RETURN retval;
END;    

 
FUNCTION jvno_hired (p_unit NUMBER, p_fy  VARCHAR2 ) RETURN VARCHAR2 as
            BB NUMBER;
            retval VARCHAR2(30);
            docid VARCHAR2(3);
            sfy VARCHAR2(30);
        BEGIN
            
            SELECT DOC_ID INTO docid FROM smf_units WHERE unit_id = p_unit;
            
            sfy := Date_Of.Sfy_from_fy(p_fy);
            
 
                SELECT MAX(SUBSTR(VNO,16,14)+1) INTO BB 
                FROM JV_hire WHERE fin_year = p_fy AND unit_id = decode(p_unit,0,1,p_unit);
                IF BB IS NULL THEN
                    retval := 'JVH-' || docid ||'-'||sfy||  '-1000001';
                ELSE
                    retval:= 'JVH-' || docid ||'-'||sfy ||'-'||  BB;
                END IF;
            
   
            
            
            RETURN retval;
        END;       

 
 
 
  FUNCTION crvno(p_unit NUMBER, p_fy  VARCHAR2 ) RETURN VARCHAR2 AS
BB NUMBER;
retval VARCHAR2(30);
docid VARCHAR2(3);
sfy VARCHAR2(10);
BEGIN
SELECT DOC_ID INTO docid FROM smf_op_units WHERE op_unit_id = p_unit; 
sfy := Date_Of.Sfy_from_fy(p_fy);
IF p_fy ='2017-18-1' THEN
SELECT MAX(SUBSTR(VNO,9,14)+1) INTO BB 
FROM CRV WHERE fin_year = p_fy AND unit_id = p_unit;
IF BB IS NULL THEN
retval := 'CRV-' || docid ||  '-1000001';
ELSE
retval:= 'CRV-' || docid ||'-'||  BB;
END IF;
ELSE
SELECT MAX(SUBSTR(VNO,16,14)+1) INTO BB 
FROM CRV WHERE fin_year = p_fy AND unit_id = p_unit;
IF BB IS NULL THEN
retval := 'CRV-' || docid ||'-'||sfy ||  '-1000001';
ELSE
retval:= 'CRV-' || docid ||'-'||sfy ||'-'||  BB;
END IF;
END IF;
RETURN retval;
END;


         FUNCTION tmp_crvno(p_unit NUMBER, p_fy  VARCHAR2 ) RETURN VARCHAR2 AS
            BB NUMBER;
            retval VARCHAR2(30);
            docid VARCHAR2(3);
            sfy VARCHAR2(10);            
        BEGIN
            SELECT DOC_ID INTO docid FROM smf_op_units WHERE op_unit_id = p_unit; 
            
            sfy := Date_Of.Sfy_from_fy(p_fy);
            
            IF p_fy ='2017-18-1' THEN
                
                SELECT MAX(SUBSTR(VNO,-7)+1) INTO BB 
                FROM TMP_CRV WHERE fin_year = p_fy AND unit_id = p_unit;
                
                IF BB IS NULL THEN
                    retval := 'CRV-TMP-' || docid ||  '-1000001';
                ELSE
                    retval:= 'CRV-TMP-' || docid ||'-'||  BB;
                END IF;
            ELSE                
                
                SELECT MAX(SUBSTR(VNO,-7)+1) INTO BB 
                FROM TMP_CRV WHERE fin_year = p_fy AND unit_id = p_unit;
                
                IF BB IS NULL THEN
                    retval := 'CRV-TMP-' || docid ||'-'||sfy ||  '-1000001';
                ELSE
                    retval:= 'CRV-TMP-' || docid ||'-'||sfy ||'-'||  BB;
                END IF;
            END IF;
                            
            RETURN retval;
        END;   
   
   FUNCTION drvno(p_unit NUMBER, p_fy  VARCHAR2 ) RETURN VARCHAR2 AS
BB NUMBER;
retval VARCHAR2(30);
docid VARCHAR2(3);
sfy VARCHAR2(10);
BEGIN
SELECT DOC_ID INTO docid FROM smf_op_units WHERE op_unit_id = p_unit; 
sfy := Date_Of.Sfy_from_fy(p_fy);
IF p_fy ='2017-18-1' THEN
  
SELECT MAX(SUBSTR(VNO,9,14)+1) INTO BB 
FROM DRV WHERE fin_year = p_fy AND unit_id = p_unit;
IF BB IS NULL THEN
retval := 'DRV-' || docid ||  '-1000001';
ELSE
retval:= 'DRV-' || docid ||'-'||  BB;
END IF;
ELSE
SELECT MAX(SUBSTR(VNO,16,14)+1) INTO BB 
FROM DRV WHERE fin_year = p_fy AND unit_id = p_unit;
IF BB IS NULL THEN
retval := 'DRV-' || docid ||'-'||sfy ||  '-1000001';
ELSE
retval:= 'DRV-' || docid ||'-'||SFY||'-'||  BB;
END IF;
END IF;
RETURN retval;
END;

       FUNCTION tmp_drvno(p_unit NUMBER, p_fy  VARCHAR2 ) RETURN VARCHAR2 AS
            BB NUMBER;
            retval VARCHAR2(30);
            docid VARCHAR2(3);
            sfy VARCHAR2(10);
        BEGIN
            SELECT DOC_ID INTO docid FROM smf_op_units WHERE op_unit_id = p_unit; 
            
            sfy := Date_Of.Sfy_from_fy(p_fy);
            
            IF p_fy ='2017-18-1' THEN
                  
                SELECT MAX(SUBSTR(VNO,-7)+1) INTO BB 
                FROM tmp_DRV WHERE fin_year = p_fy AND unit_id = p_unit;
                IF BB IS NULL THEN
                    retval := 'DRV-TMP-' || docid ||  '-1000001';
                ELSE
                    retval:= 'DRV-TMP-' || docid ||'-'||  BB;
                END IF;
        
            ELSE    
                
                SELECT MAX(SUBSTR(VNO,-7)+1) INTO BB 
                FROM tmp_DRV WHERE fin_year = p_fy AND unit_id = p_unit;
                
                IF BB IS NULL THEN
                    retval := 'DRV-TMP-' || docid ||'-'||sfy ||  '-1000001';
                ELSE
                    retval:= 'DRV-TMP-' || docid ||'-'||SFY||'-'||  BB;
                END IF;
                
            END IF;            
        
            RETURN retval;
        END;    

FUNCTION dpvno(p_unit NUMBER, p_fy  VARCHAR2 ) RETURN VARCHAR2 AS
BB NUMBER;
retval VARCHAR2(30);
docid VARCHAR2(3);
sfy VARCHAR2(10);
BEGIN
SELECT DOC_ID INTO docid FROM smf_op_units WHERE op_unit_id = p_unit; 
sfy := Date_Of.Sfy_from_fy(p_fy);
IF p_fy ='2017-18-1' THEN
SELECT MAX(SUBSTR(VNO,9,14)+1) INTO BB 
FROM DPV WHERE fin_year = p_fy AND unit_id = p_unit;
IF BB IS NULL THEN
retval := 'DPV-' || docid ||  '-1000001';
ELSE
retval:= 'DPV-' || docid ||'-'||  BB;
END IF;

ELSE
SELECT MAX(SUBSTR(VNO,16,14)+1) INTO BB 
FROM DPV WHERE fin_year = p_fy AND unit_id = p_unit;
IF BB IS NULL THEN
retval := 'DPV-' || docid ||'-'||sfy ||  '-1000001';
ELSE
retval:= 'DPV-' || docid ||'-'||sfy ||'-'||  BB;
END IF;
END IF;
RETURN retval;
END;


FUNCTION pjvvno(p_unit NUMBER, p_fy  VARCHAR2 ) RETURN VARCHAR2 AS
BB NUMBER;
retval VARCHAR2(30);
docid VARCHAR2(3);
sfy VARCHAR2(10);
BEGIN

sfy := Date_Of.Sfy_from_fy(p_fy);
IF p_fy ='2017-18-1' THEN
SELECT DOC_ID INTO docid FROM smf_op_units WHERE op_unit_id = p_unit; 
SELECT MAX(SUBSTR(VNO,9,14)+1) INTO BB 
FROM PUR_M WHERE fin_year = p_fy AND unit_id = p_unit;
IF BB IS NULL THEN
retval := 'PJV-' || docid ||  '-1000001';
ELSE
retval:= 'PJV-' || docid ||'-'||  BB;
END IF;
ELSE
SELECT DOC_ID INTO docid FROM smf_op_units WHERE op_unit_id = p_unit; 
SELECT MAX(SUBSTR(VNO,16,14)+1) INTO BB 
FROM PUR_M WHERE fin_year = p_fy AND unit_id = p_unit AND SUBSTR(1,3) ='PJV' ;
IF BB IS NULL THEN
retval := 'PJV-' || docid ||'-'||sfy ||  '-1000001';
ELSE
retval:= 'PJV-' || docid ||'-'||sfy ||'-'||  BB;
END IF;
END IF;
RETURN retval;
END;


       FUNCTION IMP(p_unit NUMBER, p_fy  VARCHAR2 , p_type varchar2 ) RETURN VARCHAR2 AS
            BB NUMBER;
            retval VARCHAR2(30);
            docid VARCHAR2(3);
            sfy VARCHAR2(10);
        BEGIN

            sfy := Date_Of.Sfy_from_fy(p_fy);
            
                SELECT DOC_ID INTO docid FROM smf_units WHERE unit_id = p_unit;
                SELECT MAX(SUBSTR(VNO,-7)+1) INTO BB 
                FROM PUR_M WHERE fin_year = p_fy AND unit_id = p_unit and pjv_type = p_type AND SUBSTR(vno,1,3) ='IMP';
                
                IF BB IS NULL THEN
                    retval := 'IMP-'||p_type||'-' || docid ||'-'||SFY||  '-1000001';
                ELSE
                    retval:= 'IMP-'||p_type||'-' || docid ||'-'||SFY||  '-'||  BB;
                END IF;
                
            
            RETURN retval;
        END;           
FUNCTION pjvvno_Type(p_unit NUMBER, p_fy VARCHAR2 , p_type varchar2) RETURN VARCHAR2 as
BB NUMBER;
retval VARCHAR2(30);
docid VARCHAR2(3);
sfy VARCHAR2(10);
BEGIN

sfy := Date_Of.Sfy_from_fy(p_fy);
IF p_fy ='2017-18-1' THEN
SELECT DOC_ID INTO docid FROM smf_units WHERE unit_id = p_unit;
SELECT MAX(SUBSTR(VNO,-7)+1) INTO BB 
FROM PUR_M WHERE fin_year = p_fy AND unit_id = p_unit and pjv_type = p_type;
IF BB IS NULL THEN
retval := 'PJV-'||p_type||'-' || docid ||  '-1000001';
ELSE
retval:= 'PJV-'||p_type||'-' || docid ||  '-'||  BB;
END IF;
ELSE
SELECT DOC_ID INTO docid FROM smf_units WHERE unit_id = p_unit;
SELECT MAX(SUBSTR(VNO,-7)+1) INTO BB 
FROM PUR_M WHERE fin_year = p_fy AND unit_id = p_unit and pjv_type = p_type;
IF BB IS NULL THEN
retval := 'PJV-'||p_type||'-' || docid ||'-'||SFY||  '-1000001';
ELSE
retval:= 'PJV-'||p_type||'-' || docid ||'-'||SFY||  '-'||  BB;
END IF;
END IF;
RETURN retval;
END;

FUNCTION bpvno(p_unit NUMBER, p_fy  VARCHAR2 ) RETURN VARCHAR2 as
BB NUMBER;
retval VARCHAR2(30);
docid VARCHAR2(3);
sfy VARCHAR2(10);
BEGIN

sfy := Date_Of.Sfy_from_fy(p_fy);
IF p_fy ='2017-18-1' THEN
SELECT DOC_ID INTO docid FROM smf_op_units WHERE op_unit_id = p_unit; 
SELECT MAX(SUBSTR(VNO,9,14)+1) INTO BB 
FROM BPV WHERE fin_year = p_fy AND unit_id = p_unit;
IF BB IS NULL THEN
retval := 'BPV-' || docid ||  '-1000001';
ELSE
retval:= 'BPV-' || docid ||'-'||  BB;
END IF;

ELSE
SELECT DOC_ID INTO docid FROM smf_op_units WHERE op_unit_id = p_unit; 
SELECT MAX(SUBSTR(VNO,16,14)+1) INTO BB 
FROM BPV WHERE fin_year = p_fy AND unit_id = p_unit;
IF BB IS NULL THEN
retval := 'BPV-' || docid ||'-'||sfy ||  '-1000001';
ELSE
retval:= 'BPV-' || docid ||'-'||sfy ||'-'||  BB;
END IF;
end if;
RETURN retval;
END;

        FUNCTION brvno(p_unit NUMBER, p_fy  VARCHAR2 ) RETURN VARCHAR2 as
            BB NUMBER;
            retval VARCHAR2(30);
            docid VARCHAR2(3);
            sfy VARCHAR2(10);
        BEGIN

            sfy := Date_Of.Sfy_from_fy(p_fy);
            
            IF p_fy ='2017-18-1' THEN
                        
                SELECT DOC_ID INTO docid FROM smf_op_units WHERE op_unit_id = p_unit; 
                SELECT MAX(SUBSTR(VNO,9,14)+1) INTO BB 
                FROM BPV WHERE fin_year = p_fy AND unit_id = p_unit;
                IF BB IS NULL THEN
                    retval := 'BRV-' || docid ||  '-1000001';
                ELSE
                    retval:= 'BRV-' || docid ||'-'||  BB;
                END IF;

            ELSE
                SELECT DOC_ID INTO docid FROM smf_units WHERE unit_id = p_unit; 
                SELECT MAX(SUBSTR(VNO,16,14)+1) INTO BB 
                FROM BRV WHERE fin_year = p_fy AND unit_id = p_unit;
                IF BB IS NULL THEN
                    retval := 'BRV-' || docid ||'-'||sfy ||  '-1000001';
                ELSE
                    retval:= 'BRV-' || docid ||'-'||sfy ||'-'||  BB;
                END IF;
            end if;
                                
            RETURN retval;
      
   END;


FUNCTION cash_bpvno(p_unit NUMBER, p_fy  VARCHAR2 ) RETURN VARCHAR2 as
            BB NUMBER;
            retval VARCHAR2(30);
            docid VARCHAR2(3);
            sfy VARCHAR2(10);
        BEGIN

            sfy := Date_Of.Sfy_from_fy(p_fy);
            
             
                SELECT DOC_ID INTO docid FROM smf_op_units WHERE op_unit_id = p_unit; 
                SELECT MAX(SUBSTR(VNO,16,14)+1) INTO BB 
                FROM CBPV WHERE fin_year = p_fy AND unit_id = p_unit;
                IF BB IS NULL THEN
                    retval := 'CBP-' || docid ||'-'||sfy ||  '-1000001';
                ELSE
                    retval:= 'CBP-' || docid ||'-'||sfy ||'-'||  BB;
                END IF;
             
                                
            RETURN retval;
        END;    
FUNCTION cash_brvno(p_unit NUMBER, p_fy  VARCHAR2 ) RETURN VARCHAR2 as
            BB NUMBER;
            retval VARCHAR2(30);
            docid VARCHAR2(3);
            sfy VARCHAR2(10);
        BEGIN

            sfy := Date_Of.Sfy_from_fy(p_fy);
            
            
                SELECT DOC_ID INTO docid FROM smf_units WHERE unit_id = p_unit; 
                SELECT MAX(SUBSTR(VNO,16,14)+1) INTO BB 
                FROM CBRV WHERE fin_year = p_fy AND unit_id = p_unit;
                IF BB IS NULL THEN
                    retval := 'CBR-' || docid ||'-'||sfy ||  '-1000001';
                ELSE
                    retval:= 'CBR-' || docid ||'-'||sfy ||'-'||  BB;
                END IF;
           
                                
            RETURN retval;
      
   END;


        FUNCTION btvno(p_unit NUMBER, p_fy  VARCHAR2 ) RETURN VARCHAR2 as
       
BB NUMBER;
retval VARCHAR2(30);
docid VARCHAR2(3);
sfy VARCHAR2(10);
BEGIN

sfy := Date_Of.Sfy_from_fy(p_fy);
IF p_fy ='2017-18-1' THEN
SELECT DOC_ID INTO docid FROM smf_op_units WHERE op_unit_id = p_unit; 
SELECT MAX(SUBSTR(VNO,9,14)+1) INTO BB 
FROM BTV WHERE fin_year = p_fy AND unit_id = p_unit;
IF BB IS NULL THEN
retval := 'BTV-' || docid ||  '-1000001';
ELSE
retval:= 'BTV-' || docid ||'-'||  BB;
END IF;
ELSE
SELECT DOC_ID INTO docid FROM smf_op_units WHERE op_unit_id = p_unit; 
SELECT MAX(SUBSTR(VNO,16,14)+1) INTO BB 
FROM BTV WHERE fin_year = p_fy AND unit_id = p_unit;
IF BB IS NULL THEN
retval := 'BTV-' || docid ||'-'||sfy||   '-1000001';
ELSE
retval:= 'BTV-' || docid ||'-'||sfy|| '-'||  BB;
END IF;
END IF;
RETURN retval;
END;

FUNCTION onlno(p_unit NUMBER, p_fy  VARCHAR2 ) RETURN VARCHAR2 AS
BB NUMBER;
retval VARCHAR2(30);
docid VARCHAR2(3);
sfy VARCHAR2(10);
BEGIN

sfy := Date_Of.Sfy_from_fy(p_fy);
SELECT DOC_ID INTO docid FROM smf_op_units WHERE op_unit_id = p_unit; 

IF p_fy ='2017-18-1' THEN
SELECT MAX(SUBSTR(VNO,9,14)+1) INTO BB 
FROM LEDD WHERE fin_year = p_fy AND unit_id = p_unit
AND SUBSTR(VNO,1,7)='ONL-'||docid;
IF BB IS NULL THEN
retval := 'ONL-' || docid ||  '-1000001';
ELSE
retval:= 'ONL-' || docid ||'-'||  BB;
END IF;
ELSE
/*SELECT MAX(SUBSTR(VNO,16,14)+1) INTO BB 
FROM LEDD WHERE fin_year = p_fy AND unit_id = p_unit
AND SUBSTR(VNO,1,7)='ONL-'||docid;
*/
select max(substr(POSTING_VNO,-7))+1 INTO BB  from BANK_TRN_D 
where unit_id =  p_unit and  POSTING_VNO is not null  
and fin_year = p_fy;
IF BB IS NULL THEN
retval := 'ONL-' || docid ||'-'||sfy||  '-1000001';
ELSE
retval:= 'ONL-' || docid ||'-'||sfy||'-'||  BB;
END IF;
END IF;
RETURN retval;
END;
FUNCTION bxvno(p_unit NUMBER, p_fy  VARCHAR2 ) RETURN VARCHAR2 as
BB NUMBER;
retval VARCHAR2(30);
docid VARCHAR2(3);
sfy varchar(20);
BEGIN
sfy := Date_Of.Sfy_from_fy(p_fy);
SELECT DOC_ID INTO docid FROM smf_op_units WHERE op_unit_id = p_unit; 
IF  p_fy = '2017-18-1' THEN
SELECT MAX(SUBSTR(VNO,9,14)+1) INTO BB 
FROM ONLV WHERE fin_year = p_fy AND unit_id = p_unit;
IF BB IS NULL THEN
retval := 'BTV-' || docid ||  '-1000001';
ELSE
retval:= 'BTV-' || docid ||'-'||  BB;
END IF;
ELSE
SELECT MAX(SUBSTR(VNO,16,14)+1) INTO BB 
FROM ONLV WHERE fin_year = p_fy AND unit_id = p_unit;
IF BB IS NULL THEN
retval := 'BTV-' || docid ||'-'||sfy||  '-1000001';
ELSE
retval:= 'BTV-' || docid ||'-'||sfy||'-'||  BB;
END IF;
END IF;
RETURN retval;
END;

        FUNCTION tmp_bxvno(p_unit NUMBER, p_fy  VARCHAR2 ) RETURN VARCHAR2 as
            BB NUMBER;
            retval VARCHAR2(30);
            docid VARCHAR2(3);
            sfy varchar(20);
        BEGIN
            
            sfy := Date_Of.Sfy_from_fy(p_fy);
            
            SELECT DOC_ID INTO docid FROM smf_units WHERE unit_id = p_unit; 
            
   
                SELECT MAX(SUBSTR(VNO,-7)+1) INTO BB 
                FROM TMP_BTV WHERE fin_year = p_fy AND unit_id = p_unit;
                IF BB IS NULL THEN
                    retval := 'BPV-TMP-' || docid ||'-'||sfy||  '-1000001';
                ELSE
                    retval:= 'BPV-TMP-' || docid ||'-'||sfy||'-'||  BB;
                END IF;
            
         
            
            RETURN retval;
      
   END;   
FUNCTION ptvno(p_unit NUMBER, p_fy  VARCHAR2 ) RETURN VARCHAR2 AS
BB NUMBER;
retval VARCHAR2(30);
docid VARCHAR2(3);
sfy varchar(20);
BEGIN
sfy := Date_Of.Sfy_from_fy(p_fy);
IF  p_fy = '2017-18-1' THEN
SELECT DOC_ID INTO docid FROM smf_op_units WHERE op_unit_id = p_unit; 
SELECT MAX(SUBSTR(VNO,9,14)+1) INTO BB 
FROM PTV WHERE fin_year = p_fy AND unit_id = p_unit;
IF BB IS NULL THEN
retval := 'PTV-' || docid ||  '-1000001';
ELSE
retval:= 'PTV-' || docid ||'-'||  BB;
END IF;
ELSE
SELECT DOC_ID INTO docid FROM smf_op_units WHERE op_unit_id = p_unit; 
SELECT MAX(SUBSTR(VNO,16,14)+1) INTO BB 
FROM PTV WHERE fin_year = p_fy AND unit_id = p_unit;
IF BB IS NULL THEN
retval := 'PTV-' || docid ||'-'||sfy||  '-1000001';
ELSE
retval:= 'PTV-' || docid ||'-'||sfy||'-'||  BB;
END IF;
END IF;
RETURN retval;
END;

FUNCTION ordno(p_unit NUMBER, p_fy  VARCHAR2 ) RETURN VARCHAR2 AS
BB NUMBER;
retval VARCHAR2(30);
docid VARCHAR2(3);
cnt number;
sfy varchar(20);
BEGIN
sfy := Date_Of.Sfy_from_fy(p_fy);
            if p_unit = 3700 then

               docid := 'FJI';
               SELECT MAX(SUBSTR(ORDNO,-7)+1) INTO BB 
               FROM ordm WHERE fin_year = p_fy AND unit_id = 37 and do_type = 3700  ;

            else
                select count(*) into cnt from smf_op_units WHERE op_unit_id = p_unit;
                if nvl(Cnt,0) <> 0 then
                    SELECT DOC_ID INTO docid FROM smf_op_units WHERE op_unit_id = p_unit;
                else
                    SELECT DOC_ID INTO docid FROM smf_units WHERE unit_id = p_unit;
                end if;
            
             
                SELECT MAX(SUBSTR(ORDNO,-7)+1) INTO BB 
                FROM ordm WHERE fin_year = p_fy AND unit_id = p_unit and SOLE_CITY_CODE is null
                and nvl(do_type,0) <> 3700  ;
                

            end if;
            
            
IF BB IS NULL THEN
retval := 'ORD-' || docid || '-'||sfy|| '-1000001';
ELSE
retval:= 'ORD-' || docid ||'-'||sfy ||'-'||  BB;
END IF;
        
        
        
        RETURN retval;
        
        END;
        
FUNCTION ordnoE(p_unit NUMBER, p_fy  VARCHAR2 ) RETURN VARCHAR2 as
BB NUMBER;
retval VARCHAR2(30);
docid VARCHAR2(3);
sfy varchar(20);
BEGIN
sfy := Date_Of.Sfy_from_fy(p_fy);

IF p_fy ='2017-18-1' THEN
SELECT DOC_ID INTO docid FROM smf_op_units WHERE op_unit_id = p_unit; 
SELECT MAX(SUBSTR(ORDNO,9,14)+1) INTO BB 
FROM ordm WHERE fin_year = p_fy AND unit_id = p_unit and ORDER_TYPE ='EXPORT' and SOLE_CITY_CODE is null ;
IF BB IS NULL THEN
retval := 'ORD-' || 'HTE' ||  '-1000001';
ELSE
retval:= 'ORD-' || 'HTE' ||'-'||  BB;
END IF;
ELSE
SELECT DOC_ID INTO docid FROM smf_op_units WHERE op_unit_id = p_unit; 
SELECT MAX(SUBSTR(ORDNO,16,14)+1) INTO BB 
FROM ordm WHERE fin_year = p_fy AND unit_id = p_unit and ORDER_TYPE ='EXPORT'  and SOLE_CITY_CODE is null ;
IF BB IS NULL THEN
retval := 'ORD-' || 'HTE' ||'-'||SFY||  '-1000001';
ELSE
retval:= 'ORD-' || 'HTE' ||'-'||SFY||'-'||  BB;
END IF;
END IF;
RETURN retval;
END;

FUNCTION ordnoD(p_unit NUMBER, p_fy  VARCHAR2, P_CITY Varchar2 ) RETURN VARCHAR2 as
BB NUMBER;
retval VARCHAR2(30);
docid VARCHAR2(3);
cnt number;
sfy varchar(20);
BEGIN
sfy := Date_Of.Sfy_from_fy(p_fy);
select count(*) into cnt from smf_units WHERE unit_id = p_unit;
if nvl(Cnt,0) <> 0 then
SELECT DOC_ID INTO docid FROM smf_units WHERE unit_id = p_unit;
else
docid := 'XXX' ;
end if;
 
SELECT MAX(SUBSTR(ORDNO,-7)+1) INTO BB FROM ordm WHERE fin_year = p_fy AND unit_id = p_unit
and SOLE_CITY_CODE = P_CITY ;
IF BB IS NULL THEN
retval := 'ORD-' || docid || '-'||P_CITY||'-'|| sfy|| '-1000001';
ELSE
retval:= 'ORD-' || docid || '-'||P_CITY||'-'|| sfy||'-'||  BB;
END IF;
RETURN retval;
END;

        FUNCTION tmp_ordnoD(p_unit NUMBER, p_fy  VARCHAR2, P_CITY Varchar2 ) RETURN VARCHAR2 as
        BB NUMBER;
            retval VARCHAR2(30);
            docid VARCHAR2(3);
            cnt number;
            sfy varchar(20);
        BEGIN
            
            sfy := Date_Of.Sfy_from_fy(p_fy);
            
            select count(*) into cnt from smf_units WHERE unit_id = p_unit;
            if nvl(Cnt,0) <> 0 then
                SELECT DOC_ID INTO docid FROM smf_units WHERE unit_id = p_unit;
            else
                docid := 'XXX' ;
            end if;                
             
            SELECT MAX(SUBSTR(ORDNO,-7)+1) INTO BB     FROM tmp_ordm WHERE fin_year = p_fy AND unit_id = p_unit
            and SOLE_CITY_CODE = P_CITY    ;
            
            IF BB IS NULL THEN
                retval := 'ORD-' || docid || '-'||P_CITY||'-'|| sfy|| '-1000001';
            ELSE
                retval:= 'ORD-' || docid || '-'||P_CITY||'-'|| sfy||'-'||  BB;
            END IF;
            RETURN retval;
        END;
               
FUNCTION sivno(p_unit NUMBER, p_fy  VARCHAR2 , p_mtl_store varchar2 := 0 ) RETURN VARCHAR2 AS
BB NUMBER;
retval VARCHAR2(30);
docid VARCHAR2(3);
sfy VARCHAR2(30);
BEGIN

sfy := Date_Of.Sfy_from_fy(p_fy);
  
SELECT DOC_ID INTO docid FROM smf_units WHERE unit_id = p_unit; 
IF p_fy ='2017-18-1' THEN
SELECT MAX(SUBSTR(SI_NO,-7)+1) INTO BB 
FROM WH_OGP_M  WHERE fin_year = p_fy AND unit_id   = p_unit and mtl_store_id = p_mtl_store
and substr(SI_no,1,3) ='SIV';
IF BB IS NULL THEN
retval := 'SIV-' || p_mtl_store||'-'|| docid ||  '-1000001';
ELSE
retval:= 'SIV-' || p_mtl_store||'-'|| docid ||'-'||  BB;
END IF;
ELSE
            IF P_UNIT = 37    THEN

                if p_mtl_store > 100 then
                    SELECT MAX(SUBSTR(SI_NO,-7)+1) INTO BB 
                    FROM WH_OGP_M  WHERE fin_year = p_fy AND unit_id   = 37 and mtl_store_id = p_mtl_store                 
                    and substr(SI_no,1,11) ='SIV-'||p_mtl_store||'-PST';

                Else
                    SELECT MAX(SUBSTR(SI_NO,-7)+1) INTO BB 
                    FROM WH_OGP_M  WHERE fin_year = p_fy /*AND unit_id   = 37*/ 
                    and mtl_store_id = p_mtl_store                 
                    and substr(SI_no,1,10) ='SIV-13-PST';
                End if;              

              /*  SELECT MAX(SUBSTR(SI_NO,-7)+1) INTO BB 
                FROM WH_OGP_M  WHERE fin_year = p_fy AND unit_id   = p_unit and mtl_store_id = p_mtl_store
                and substr(SI_no,1,3) ='SIV';
                */                

            ELSE
                SELECT MAX(SUBSTR(SI_NO,-7)+1) INTO BB 
                FROM WH_OGP_M  WHERE fin_year = p_fy AND unit_id   = p_unit and mtl_store_id = p_mtl_store
and substr(SI_no,1,3) ='SIV';
            END IF;                
                
IF BB IS NULL THEN
retval := 'SIV-' || p_mtl_store||'-'|| docid ||'-'||sfy ||  '-1000001';
ELSE
retval:= 'SIV-' || p_mtl_store||'-'|| docid ||'-'||sfy ||'-'||  BB;
END IF;
END IF;
RETURN retval;
END;
  FUNCTION srvno(p_unit NUMBER, p_fy  VARCHAR2 , p_mtl_store varchar2 := 0) RETURN VARCHAR2 as
    BB NUMBER;
retval VARCHAR2(30);
docid VARCHAR2(3);
oid   number;
sfy VARCHAR2(30);
BEGIN

select organizationid into oid from smf_units where unit_id = p_unit;
            
            sfy := Date_Of.Sfy_from_fy(p_fy);
IF P_FY = '2017-18-1' THEN
SELECT DOC_ID INTO docid FROM smf_units WHERE unit_id = p_unit; 
SELECT MAX(SUBSTR(SI_NO,-7)+1) INTO BB 
FROM WH_PTN_M  WHERE fin_year = p_fy AND unit_id   = p_unit  
and substr(SI_no,1,3) ='SRV';
IF BB IS NULL THEN
retval := 'SRV' || '-'|| docid ||  '-1000001';
ELSE
retval:= 'SRV' || '-'|| docid ||'-'||  BB;
END IF;

ELSE
                --SELECT distinct DOC_ID INTO docid FROM smf_units WHERE  decode(unit_id,7,7,27,7,37,7,unit_id)   = decode(p_unit,7,7,27,7,37,7,p_unit); 
                
                SELECT distinct DOC_ID INTO docid FROM smf_units WHERE   unit_id  = p_unit; 

if oid =2 then
                    SELECT MAX(SUBSTR(SI_NO,-7)+1) INTO BB 
                    FROM WH_PTN_M  WHERE fin_year = p_fy 
                    AND  organization_id = oid  
                    and substr(SI_no,1,3) ='SRV';
                else
                    SELECT MAX(SUBSTR(SI_NO,-7)+1) INTO BB 
                    FROM WH_PTN_M  WHERE fin_year = p_fy 
                    AND   unit_id =  p_unit and substr(SI_no,1,3) ='SRV';
                end if;                
IF BB IS NULL THEN
retval := 'SRV' || '-'|| docid || '-' || sfy||  '-1000001';
ELSE
retval:= 'SRV' || '-'|| docid ||'-'||sfy||'-'||  BB;
END IF;
END IF ;
RETURN retval;
END;
        FUNCTION srtnvno(p_unit NUMBER, p_fy  VARCHAR2) RETURN VARCHAR2 as
            BB NUMBER;
            retval VARCHAR2(30);
            docid VARCHAR2(3) ;
            oid   number;
            sfy VARCHAR2(30);
        BEGIN

            select organizationid into oid from smf_units where unit_id = p_unit;
            
            sfy := Date_Of.Sfy_from_fy(p_fy);
            
            SELECT distinct DOC_ID INTO docid FROM smf_units WHERE   unit_id  = p_unit;
 
            SELECT MAX(SUBSTR(SR_NO,-7)+1) INTO BB  FROM INV_SR_M  WHERE fin_year = p_fy AND   unit_id =  p_unit ; 
                
            IF BB IS NULL THEN
                retval := 'SRV' || '-'|| docid || '-' || sfy||  '-1000001';
            ELSE
                retval:= 'SRV' || '-'|| docid ||'-'||sfy||'-'||  BB;
            END IF;

            RETURN retval;

        END;        

        FUNCTION slvno(p_unit NUMBER, p_fy  VARCHAR2 , p_loc number := 0 ) RETURN VARCHAR2 AS
BB NUMBER;
retval VARCHAR2(30);
docid VARCHAR2(3);
locid number;
sfy VARCHAR2(30);
BEGIN

sfy := Date_Of.Sfy_from_fy(p_fy);
SELECT DOC_ID INTO docid FROM smf_op_units WHERE op_unit_id = p_unit ; --name_of.op_unit_from_unit(p_unit); 
if p_loc = 43 then
SELECT lpad(MAX(SUBSTR(SI_NO,-7)+1),'7','0') INTO BB 
FROM INV_OGP_M  
WHERE fin_year = p_fy AND unit_id = p_unit and si_no is not null
and ogp_location = 43
and substr(si_no , 1,3) ='SLV';
docid := 'GBK';
else
SELECT lpad(MAX(SUBSTR(SI_NO,-7)+1),'7','0') INTO BB 
FROM INV_OGP_M  
WHERE fin_year = p_fy AND unit_id = p_unit and si_no is not null
and ogp_location = p_loc
and substr(si_no , 1,3) ='SLV';
end if;
IF P_FY = '2017-18-1' THEN
IF BB IS NULL THEN
retval := 'SLV-' || docid ||  '-1000001';
ELSE
retval:= 'SLV-' || docid ||'-'||  BB;
END IF;
ELSE
IF BB IS NULL THEN
retval := 'SLV-' || docid ||'-'||sfy ||'-'||p_loc|| '-1000001';
ELSE
retval:= 'SLV-' || docid ||'-'||sfy  ||'-'||p_loc||'-'||  BB;
END IF;
END IF;
RETURN retval;
END;
FUNCTION svrno(p_unit NUMBER, p_fy  VARCHAR2 ) RETURN VARCHAR2 AS
BEGIN
NULL;
RETURN NULL;
END;
FUNCTION ssvno(p_unit NUMBER, p_fy  VARCHAR2 ) RETURN VARCHAR2 AS
BB NUMBER;
retval VARCHAR2(30);
docid VARCHAR2(3);
sfy VARCHAR2(10);
BEGIN
SELECT DOC_ID INTO docid FROM smf_units WHERE unit_id = p_unit;
sfy := Date_Of.Sfy_from_fy(p_fy);
IF p_fy ='2017-18-1' THEN 
SELECT MAX(SUBSTR(SSV_NO,9,14)+1) INTO BB 
FROM INV_OGP_M WHERE fin_year = p_fy AND unit_id = p_unit and substr(ssv_no,1,3) ='SSV';
IF BB IS NULL THEN
retval := 'SSV-' || docid ||  '-1000001';
ELSE
retval:= 'SSV-' || docid ||'-'||  BB;
END IF;
ELSE
SELECT MAX(SUBSTR(SSV_NO,16,14)+1) INTO BB 
FROM INV_OGP_M WHERE fin_year = p_fy AND unit_id = p_unit and substr(ssv_no,1,3) ='SSV';
IF BB IS NULL THEN
retval := 'SSV-' || docid ||'-'||sfy||  '-1000001';
ELSE
retval:= 'SSV-' || docid ||'-'||sfy||'-'||  BB;
END IF;
END IF;


RETURN retval;
END;
FUNCTION siuno(p_unit NUMBER, p_fy  VARCHAR2 ) RETURN VARCHAR2 AS
BB NUMBER;
retval VARCHAR2(35);
docid VARCHAR2(3);
sfy VARCHAR2(10);
BEGIN
SELECT DOC_ID INTO docid FROM  smf_units WHERE unit_id = p_unit;
sfy := Date_Of.Sfy_from_fy(p_fy);
IF p_fy ='2017-18-1' THEN  
SELECT MAX(SUBSTR(invno,9,14)+1) INTO BB 
FROM INT_SAL_M WHERE fin_year = p_fy AND unit_id = p_unit;
IF BB IS NULL THEN
retval := 'SIU-' || docid ||  '-1000001';
ELSE
retval:= 'SIU-' || docid ||'-'||  BB;
END IF;
ELSE
SELECT MAX(SUBSTR(invno,16,14)+1) INTO BB 
FROM INT_SAL_M WHERE fin_year = p_fy AND unit_id = p_unit;
IF BB IS NULL THEN
retval := 'SIU-' || docid ||'-'||sfy ||  '-1000001';
ELSE
retval:= 'SIU-' || docid ||'-'||sfy ||'-'||  BB;
END IF;

END IF;

RETURN retval;



END;

   FUNCTION pslipno(p_unit NUMBER, p_fy  VARCHAR2 ) RETURN VARCHAR2 as
   retval varchar2(35);   
   docid varchar2(4) := 'SLP';  
   cnt number;
   cntr varchar2(30);
   did varchar2(10);
sfy VARCHAR2(30);
BEGIN

sfy := Date_Of.Sfy_from_fy(p_fy);

       SELECT DOC_ID INTO DID  FROM smf_units WHERE unit_id = p_unit; 

   IF P_FY ='2017-18-1' THEN
   SELECT NVL(MAX(SUBSTR(VNO,-6)),0)+1 INTO cnt  FROM PAYMENT_SLIP  WHERE unit_id = p_unit AND fin_year = P_FY    ;  -- last max number
   cntr :=LPAD(cnt,6,'0'); 
       retval :=  docid||'-'||DID||'-'||cntr;
   ELSE
   SELECT NVL(MAX(SUBSTR(VNO,-6)),0)+1 INTO cnt  FROM PAYMENT_SLIP  WHERE unit_id = p_unit AND fin_year = P_FY    ;  -- last max number
   cntr :=LPAD(cnt,6,'0');

       retval :=  docid||'-'||SFY||'-'||DID||'-'||cntr;
END IF;
       return retval;
   
   end;
 
   FUNCTION Wh_Order(P_UNIT NUMBER, P_SID NUMBER := '0', P_SBID NUMBER := '0' ,   P_FY VARCHAR2 ) RETURN VARCHAR2 AS
   docid CHAR(3) := 'ORD';
   UID    CHAR(3) ;
   fy    VARCHAR(7);
   nfy      VARCHAR(5);
   cnt    NUMBER;
   cntr  VARCHAR2(10);
   BEGIN    
   SELECT DOC_ID INTO UID  FROM smf_units WHERE unit_id = p_unit;   -- document id
--  SELECT NVL(MAX(SUBSTR(ORDER_NO,-6)),0)+1 INTO cnt  FROM WH_ORDER_M   WHERE unit_id = p_unit AND fin_year = P_FY AND MTL_STORE_ID = P_SBID  ;  -- last max number
   cntr :=LPAD(cnt,6,'0'); 
   
       RETURN docid||'-'||UID||'-'||P_FY||'-' ||P_SBID||'-'||cntr;
   
   END;

   FUNCTION WHRTN(P_UNIT NUMBER, P_SID NUMBER := '0', P_SBID NUMBER := '0' , P_FY VARCHAR2 ) RETURN VARCHAR2 as
   docid CHAR(3) := 'RPT';
   UID    CHAR(3) ;
   fy    VARCHAR(7);
   nfy      VARCHAR(5);
   cnt    NUMBER;
   cntr  VARCHAR2(10);
   sfy      VARCHAR2(20); 
   BEGIN    
   sfy := Date_Of.Sfy_from_fy(p_fy);
   SELECT DOC_ID INTO UID  FROM smf_units WHERE unit_id = p_unit;   -- document id
   SELECT NVL(MAX(SUBSTR(pro_NO,-6)),0)+1 INTO cnt  FROM WH_RTN_M  WHERE unit_id = p_unit AND fin_year = P_FY AND user_id = P_SBID  ;  -- last max number
   cntr :=LPAD(cnt,6,'0'); 
       RETURN docid||'-'||UID||'-'||sfy||'-' ||P_SBID||'-'||cntr;
   
   END;
   
 FUNCTION WHPTN(P_UNIT NUMBER, P_SID NUMBER := '0', P_SBID NUMBER := '0' , P_FY VARCHAR2 ) RETURN VARCHAR2 AS
   docid CHAR(3) := 'RTN';
   UID    CHAR(3) ;
   fy    VARCHAR(7);
   nfy      VARCHAR(5);
   cnt    NUMBER;
   cntr  VARCHAR2(10);
   sfy      VARCHAR2(20); 
   retval varchar(40);
 BEGIN    
   sfy := Date_Of.Sfy_from_fy(p_fy);
   
   SELECT DOC_ID INTO UID  FROM smf_units WHERE unit_id = p_unit;   -- document id
  
   SELECT NVL(MAX(SUBSTR(PTN_NO,-6)),0)+1 INTO cnt 
   FROM WH_PTN_M  WHERE unit_id = p_unit 
   AND fin_year = P_FY AND MTL_STORE_ID = P_SBID  ;  -- last max number
   
   cntr :=LPAD(cnt,6,'0'); 
       
   retval :=  docid||'-'||uid||'-'||sfy||'-' ||P_SBID||'-'||cntr;
   
   return retval;  
 END;
 
FUNCTION pocontract(p_unit NUMBER, p_fy  VARCHAR2 ) RETURN VARCHAR2 as
   docid CHAR(3) := 'CNT';
   UID    CHAR(3) ;
   fy    VARCHAR(7);
   nfy      VARCHAR(5);
   cnt    NUMBER;
   cntr  VARCHAR2(10);
   sfy      VARCHAR2(20); 
 BEGIN    
   sfy := Date_Of.Sfy_from_fy(p_fy);
   SELECT DOC_ID INTO UID  FROM smf_units WHERE unit_id = p_unit;   -- document id
   SELECT NVL(MAX(SUBSTR(CNT_NO,-6)),0)+1 INTO cnt  FROM SMF_PO_CONTRACT  WHERE unit_id = p_unit AND fin_year = P_FY  ;  -- last max number
   cntr :=LPAD(cnt,6,'0'); 
   RETURN docid||'-'||UID||'-'||sfy||'-' ||cntr;
  
 END;

 FUNCTION FORECAST(p_unit NUMBER, p_fy  VARCHAR2 ) RETURN VARCHAR2 AS
   docid CHAR(3) := 'SFC';
   UID    CHAR(3) ;
   fy    VARCHAR(7);
   nfy      VARCHAR(5);
   cnt    NUMBER;
   cntr  VARCHAR2(10);
   sfy      VARCHAR2(20); 
 BEGIN    
   sfy := Date_Of.Sfy_from_fy(p_fy);
   SELECT DOC_ID INTO UID  FROM smf_units WHERE unit_id = p_unit;   -- document id
   SELECT NVL(MAX(SUBSTR(SAL_NO,-6)),0)+1 INTO cnt  FROM SAL_FORCASTE_M  WHERE sal_unit_id = p_unit AND fin_year = P_FY  ;  -- last max number
   cntr :=LPAD(cnt,6,'0'); 
   RETURN docid||'-'||UID||'-'||sfy||'-' ||cntr;
  
 END;

FUNCTION REJECTION(p_unit NUMBER, p_fy  VARCHAR2 ) RETURN VARCHAR2 AS
   docid CHAR(3) := 'RJV';
   UID    CHAR(3) ;
   fy    VARCHAR(7);
   nfy      VARCHAR(5);
   cnt    NUMBER;
   cntr  VARCHAR2(10);
   sfy      VARCHAR2(20); 
 BEGIN    
   sfy := Date_Of.Sfy_from_fy(p_fy);
   SELECT DOC_ID INTO UID  FROM smf_units WHERE unit_id = p_unit;   -- document id
   SELECT NVL(MAX(SUBSTR(invoice_NO,-6)),0)+1 INTO cnt  FROM INV_PTN_M  WHERE unit_id = p_unit AND fin_year = P_FY  AND PTN_TYPE ='Rejection' ;  -- last max number
   cntr :=LPAD(cnt,6,'0'); 
   RETURN docid||'-'||UID||'-'||sfy||'-' ||cntr;
  
 END;
   
FUNCTION PKG_COST(p_unit NUMBER, p_fy  VARCHAR2 ) RETURN VARCHAR2 AS
   docid CHAR(3) := 'CST';
   UID    CHAR(3) ;
   fy    VARCHAR(7);
   nfy      VARCHAR(5);
   cnt    NUMBER;
   cntr  VARCHAR2(10);
   sfy      VARCHAR2(20); 
 BEGIN    
   sfy := Date_Of.Sfy_from_fy(p_fy);
   SELECT DOC_ID INTO UID  FROM smf_units WHERE unit_id = p_unit;   -- document id
   SELECT NVL(MAX(SUBSTR(COST_NO,-6)),0)+1 INTO cnt  FROM BOM_PACKAGES_COST  WHERE unit_id = p_unit AND fin_year = P_FY    ;  -- last max number
   cntr :=LPAD(cnt,6,'0'); 
   RETURN docid||'-'||UID||'-'||sfy||'-' ||cntr;
  
 END;
 
FUNCTION PKG_COST_EXP(p_unit NUMBER, p_fy  VARCHAR2 ) RETURN VARCHAR2 AS
   docid CHAR(3) := 'CST';
   UID    CHAR(3) ;
   fy    VARCHAR(7);
   nfy      VARCHAR(5);
   cnt    NUMBER;
   cntr  VARCHAR2(10);
   sfy      VARCHAR2(20); 
 BEGIN    
   sfy := Date_Of.Sfy_from_fy(p_fy);
   SELECT DOC_ID INTO UID  FROM smf_units WHERE unit_id = p_unit;   -- document id
   SELECT NVL(MAX(SUBSTR(COST_NO,-6)),0)+1 INTO cnt  FROM COST_SHEET_PKG_EXP  WHERE unit_id = p_unit AND fin_year = P_FY    ;  -- last max number
   cntr :=LPAD(cnt,6,'0'); 
   RETURN docid||'-'||UID||'-'||sfy||'-' ||cntr;
  
 END;

--- PO

FUNCTION PO_REQ(p_unit NUMBER, p_fy  VARCHAR2 ) RETURN VARCHAR2 AS
   docid CHAR(3) := 'REQ';
   UID    CHAR(3) ;
   fy    VARCHAR(7);
   cnt    NUMBER;
   cntr  VARCHAR2(10);
   sfy      VARCHAR2(20); 
 BEGIN    
   sfy := Date_Of.Sfy_from_fy(p_fy);
   SELECT DOC_ID INTO UID  FROM smf_units WHERE unit_id = p_unit;   -- document id
   SELECT NVL(MAX(SUBSTR(REQ_NO,-9)),0)+1 INTO cnt  FROM SMF_PO_REQ_M  WHERE unit_id = p_unit  ;-- AND fin_year = P_FY    ;  -- last max number
   cntr :=LPAD(cnt,9,'0'); 
   RETURN UID||cntr;
   
   END;
 

FUNCTION PO_NO(p_unit NUMBER, p_fy  VARCHAR2 ) RETURN VARCHAR2 AS
   docid CHAR(3) := 'PO';
   UID    CHAR(3) ;
   fy    VARCHAR(7);
   cnt    NUMBER;
   cntr  VARCHAR2(10);
   sfy      VARCHAR2(20); 
 BEGIN    
   sfy := Date_Of.Sfy_from_fy(p_fy);
   SELECT DOC_ID INTO UID  FROM smf_units WHERE unit_id = p_unit;   -- document id
   SELECT NVL(MAX(SUBSTR(REQ_NO,-9)),0)+1 INTO cnt  FROM SMF_PO_REQ_M  WHERE unit_id = p_unit; -- AND fin_year = P_FY    ;  -- last max number
   cntr :=LPAD(cnt,9,'0'); 
   RETURN UID||cntr;
   
   END;

FUNCTION PO_NO (P_UNIT NUMBER , P_SID NUMBER := '0',   P_FY VARCHAR2   ) RETURN VARCHAR2 AS
   docid     VARCHAR(3) := 'PO';
   UID       CHAR(3) ;
   fy        VARCHAR(7);
   cnt       NUMBER;
   retval     VARCHAR2(30);
   cntr      VARCHAR2(10);
   sfy      VARCHAR2(20); 
 BEGIN       
   sfy := Date_Of.Sfy_from_fy(p_fy);
   SELECT DOC_ID INTO UID  FROM smf_units WHERE unit_id = p_unit;   -- document id
   SELECT NVL(MAX(SUBSTR(PONO,-6)),0)+1 INTO cnt  FROM PO_M  WHERE unit_id = p_unit  AND fin_year = P_FY  AND STORE_ID = P_SID;
    
    DBMS_OUTPUT.PUT_LINE(DOCID);
    
    cntr :=LPAD(cnt,6,'0'); 
    retval := docid||'-'||UID||'-'||lpad(p_sid,2,'0')||'-'||sfy|| '-'|| cntr; 
                
    
   RETURN retval;
   
   END;


 FUNCTION BOM_NO(P_UNIT NUMBER ,   P_FY VARCHAR2 ) RETURN VARCHAR2 AS
   docid CHAR(3) := 'BOM';
   UID   CHAR(3) ;
   fy    VARCHAR(10) := p_fy;
   cnt   NUMBER;
   cntr  VARCHAR2(10);
   sfy   VARCHAR2(20);
   BEGIN    

    sfy := Date_Of.Sfy_from_fy(p_fy); 

   SELECT DOC_ID INTO UID FROM smf_units WHERE unit_id = p_unit;   -- document id
   --select doc_year into fy from CALENDAR where ndate = to_char(trunc(time_of.date_gate(sysdate)),'rrrrmmdd');  -- financial year
   
           SELECT NVL(MAX(SUBSTR(BOM_NO,-7)),0)+1 INTO cnt FROM BOM_PACKAGES_M   WHERE unit_id = p_unit ; --AND fin_year = fy;  -- last max number
   cntr :=LPAD(cnt,7,'0'); 
   
   RETURN docid||'-'||UID||'-'||Sfy||'-'||cntr;
   
   END;

FUNCTION BOM_ORDER_NO(P_UNIT NUMBER ,   P_FY VARCHAR2 ) RETURN VARCHAR2 AS
   docid CHAR(3) := 'ORD';
   UID   CHAR(3) ;
   fy    VARCHAR(10) := p_fy;
   cnt   NUMBER;
   cntr  VARCHAR2(10);
   sfy   VARCHAR2(20);
   BEGIN    

    sfy := Date_Of.Sfy_from_fy(p_fy); 

   SELECT DOC_ID INTO UID FROM smf_units WHERE unit_id = p_unit;   -- document id
   --select doc_year into fy from CALENDAR where ndate = to_char(trunc(time_of.date_gate(sysdate)),'rrrrmmdd');  -- financial year
   SELECT NVL(MAX(SUBSTR(ORDER_NO,-7)),0)+1 INTO cnt FROM PO_PACKAGES_M   WHERE unit_id = p_unit AND fin_year = fy;  -- last max number
   cntr :=LPAD(cnt,7,'0'); 
   
   RETURN docid||'-'||UID||'-'||Sfy||'-'||cntr;
   
   END;

   FUNCTION BOM_JOB_NO(P_UNIT NUMBER ,   P_FY VARCHAR2 ) RETURN VARCHAR2 AS    
   docid CHAR(3) := 'JOB';
   UID   CHAR(3) ;
   fy    VARCHAR(10) := p_fy;
   cnt   NUMBER;
   cntr  VARCHAR2(10);
   sfy   VARCHAR2(20);
   BEGIN    

    sfy := Date_Of.Sfy_from_fy(p_fy); 

   SELECT DOC_ID INTO UID FROM smf_units WHERE unit_id = p_unit;   -- document id
   --select doc_year into fy from CALENDAR where ndate = to_char(trunc(time_of.date_gate(sysdate)),'rrrrmmdd');  -- financial year
   SELECT NVL(MAX(SUBSTR(JOB_NO,-7)),0)+1 INTO cnt FROM BOM_JOB_CARD_M   WHERE unit_id = p_unit AND fin_year = fy;  -- last max number
   cntr :=LPAD(cnt,7,'0'); 
   
   RETURN docid||'-'||UID||'-'||Sfy||'-'||cntr;
   
   END;
 
 
    FUNCTION BOM_LAY_NO(P_UNIT NUMBER ,   P_FY VARCHAR2 ) RETURN VARCHAR2 AS
       docid CHAR(3) := 'LAY';
       UID   CHAR(3) ;
       fy    VARCHAR(10) := p_fy;
       cnt   NUMBER;
       cntr  VARCHAR2(10);
       sfy   VARCHAR2(20);
       BEGIN       

               sfy := Date_Of.Sfy_from_fy(p_fy); 

           SELECT DOC_ID INTO UID FROM smf_units WHERE unit_id = p_unit;   -- document id
           --select doc_year into fy from CALENDAR where ndate = to_char(trunc(time_of.date_gate(sysdate)),'rrrrmmdd');  -- financial year
           SELECT NVL(MAX(SUBSTR(LAY_NO,-7)),0)+1 INTO cnt FROM BOM_JOB_LAYOUT_M   WHERE unit_id = p_unit AND fin_year = fy;  -- last max number
            cntr :=LPAD(cnt,7,'0'); 
           
       RETURN  docid||'-'||UID||'-'||Sfy||'-'||cntr;
       
       END;
 
    FUNCTION BOM_PLAN_NO(P_UNIT NUMBER ,   P_FY VARCHAR2 ) RETURN VARCHAR2 AS
           docid CHAR(3) := 'PPC';
       UID   CHAR(3) ;
       fy    VARCHAR(10) := p_fy;
       cnt   NUMBER;
       cntr  VARCHAR2(10);
       sfy   VARCHAR2(20);
       BEGIN       

               sfy := Date_Of.Sfy_from_fy(p_fy); 

           SELECT DOC_ID INTO UID FROM smf_units WHERE unit_id = p_unit;   -- document id
           --select doc_year into fy from CALENDAR where ndate = to_char(trunc(time_of.date_gate(sysdate)),'rrrrmmdd');  -- financial year
           SELECT NVL(MAX(SUBSTR(PLAN_NO,-7)),0)+1 INTO cnt FROM BOM_LAYOUT_PLAN_M   WHERE unit_id = p_unit AND fin_year = fy;  -- last max number
           cntr :=LPAD(cnt,7,'0'); 
           
       RETURN  docid||'-'||UID||'-'||Sfy||'-'||cntr;
       
       END;


FUNCTION PDS_NO(P_UNIT NUMBER ,   P_FY VARCHAR2 ) RETURN VARCHAR2 AS
       docid CHAR(3) := 'PDS';
       UID   CHAR(3) ;
       fy    VARCHAR(10) := p_fy;
       cnt   NUMBER;
       cntr  VARCHAR2(10);
       sfy   VARCHAR2(20);
 BEGIN       

               sfy := Date_Of.Sfy_from_fy(p_fy); 

           SELECT DOC_ID INTO UID FROM smf_units WHERE unit_id = p_unit;   -- document id
           
           SELECT NVL(MAX(SUBSTR(BOM_NO,-7)),0)+1 INTO cnt FROM BOM_PDS_M   WHERE unit_id = p_unit  ;--AND fin_year = fy;  -- last max number
            cntr :=LPAD(cnt,7,'0'); 
           
       RETURN docid||'-'||UID||'-'||Sfy||'-'||cntr;
       
  END;
        

    FUNCTION PJF_NO(P_UNIT NUMBER ,   P_FY VARCHAR2 ) RETURN VARCHAR2 as
       docid CHAR(3) := 'PJF';
       UID   CHAR(3) ;
       fy    VARCHAR(10) := p_fy;
       cnt   NUMBER;
       cntr  VARCHAR2(10);
       sfy   VARCHAR2(20);
       BEGIN       

            sfy := Date_Of.Sfy_from_fy(p_fy); 

           SELECT DOC_ID INTO UID FROM smf_units WHERE unit_id = p_unit;   -- document id
           SELECT NVL(MAX(SUBSTR(bilty_vno,-7)),0)+1 INTO cnt FROM WH_OGP_M   WHERE unit_id = p_unit AND fin_year = fy;  -- last max number
            cntr :=LPAD(cnt,7,'0'); 
           
       RETURN  docid||'-'||UID||'-'||Sfy||'-'||cntr;
       
       END;
       

    FUNCTION FTV_NO(P_UNIT NUMBER ,   P_FY VARCHAR2 ) RETURN VARCHAR2 AS
       docid CHAR(3) := 'FTV';
       UID   CHAR(3) ;
       fy    VARCHAR(10) := p_fy;
       cnt   NUMBER;
       cntr  VARCHAR2(10);
       sfy   VARCHAR2(20);
       BEGIN       

            sfy := Date_Of.Sfy_from_fy(p_fy); 

           SELECT DOC_ID INTO UID FROM smf_units WHERE unit_id = p_unit;   -- document id
           SELECT NVL(MAX(SUBSTR(vno,-7)),0)+1 INTO cnt FROM FTV   WHERE unit_id = p_unit AND fin_year = fy;  -- last max number
            cntr :=LPAD(cnt,7,'0'); 
           
       RETURN  docid||'-'||UID||'-'||Sfy||'-'||cntr;
       
       END;

FUNCTION CONX_NO(P_UNIT NUMBER ,   P_FY VARCHAR2 ) RETURN VARCHAR2 AS
       docid CHAR(3) := 'CON';
       UID   CHAR(3) ;
       fy    VARCHAR(10) := p_fy;
       cnt   NUMBER;
       cntr  VARCHAR2(10);
       sfy   VARCHAR2(20);
       BEGIN       

            sfy := Date_Of.Sfy_from_fy(p_fy); 

           SELECT DOC_ID INTO UID FROM smf_units WHERE unit_id = p_unit;   -- document id
           SELECT NVL(MAX(SUBSTR(CNT_NO,-7)),0)+1 INTO cnt FROM INV_CNT_M   WHERE unit_id = p_unit AND fin_year = fy;  -- last max number
            cntr :=LPAD(cnt,7,'0'); 
           
       RETURN  docid||'-'||UID||'-'||Sfy||'-'||cntr;
       
       END;

 FUNCTION WH_AUDIT_NO(P_UNIT NUMBER ,   P_FY VARCHAR2 ) RETURN VARCHAR2 AS
       docid CHAR(3) := 'AUD';
       UID   CHAR(3) ;
       fy    VARCHAR(10) := p_fy;
       cnt   NUMBER;
       cntr  VARCHAR2(10);
       sfy   VARCHAR2(20);
  BEGIN       

            sfy := Date_Of.Sfy_from_fy(p_fy); 

           SELECT DOC_ID INTO UID FROM smf_units WHERE unit_id = p_unit;   
           SELECT NVL(MAX(SUBSTR(AUD_NO,-7)),0)+1 INTO cnt FROM WH_AUD_M   WHERE unit_id = p_unit AND fin_year = fy;  
            cntr :=LPAD(cnt,7,'0'); 
           
       RETURN  docid||'-'||UID||'-'||Sfy||'-'||cntr;
       
  END;

  FUNCTION LOCX_NO(P_UNIT NUMBER ,   P_FY VARCHAR2 ) RETURN VARCHAR2 AS
       docid CHAR(3) := 'LOC';
       UID   CHAR(3) ;
       fy    VARCHAR(10) := p_fy;
       cnt   NUMBER;
       cntr  VARCHAR2(10);
       sfy   VARCHAR2(20);
  BEGIN       

            sfy := Date_Of.Sfy_from_fy(p_fy); 

           SELECT DOC_ID INTO UID FROM smf_units WHERE unit_id = p_unit;   
           SELECT NVL(MAX(SUBSTR(TRN_NO,-7)),0)+1 INTO cnt FROM INV_LOCATION_TRN_M   WHERE unit_id = p_unit AND fin_year = fy;  
            cntr :=LPAD(cnt,7,'0'); 
           
       RETURN  docid||'-'||UID||'-'||Sfy||'-'||cntr;
       
  END;


  FUNCTION FGS_REQ_NO(P_UNIT NUMBER ,   P_FY VARCHAR2 ) RETURN VARCHAR2 AS
       docid CHAR(3) := 'REQ';
       UID   CHAR(3) ;
       fy    VARCHAR(10) := p_fy;
       cnt   NUMBER;
       cntr  VARCHAR2(10);
       sfy   VARCHAR2(20);
  BEGIN       

            sfy := Date_Of.Sfy_from_fy(p_fy); 

           SELECT DOC_ID INTO UID FROM smf_units WHERE unit_id = p_unit;   
           SELECT NVL(MAX(SUBSTR(REQ_NO,-7)),0)+1 INTO cnt FROM FGS_REQ_M   WHERE unit_id = p_unit AND fin_year = fy;  
            cntr :=LPAD(cnt,7,'0'); 
           
       RETURN  docid||'-'||UID||'-'||Sfy||'-'||cntr;
       
  END;


FUNCTION ticket_no(P_UNIT NUMBER ,   P_FY VARCHAR2 ) RETURN VARCHAR2 as
       docid CHAR(3) := 'TKT';
       UID   CHAR(3) ;
       fy    VARCHAR(10) := p_fy;
       cnt   NUMBER;
       cntr  VARCHAR2(10);
       sfy   VARCHAR2(20);
  BEGIN       

            sfy := Date_Of.Sfy_from_fy(p_fy); 

           SELECT DOC_ID INTO UID FROM smf_units WHERE unit_id = p_unit;   
           
           SELECT NVL(MAX(SUBSTR(tkt_no,-7)),0)+1 INTO cnt FROM TKT_DETAIL
           WHERE unit_id = p_unit AND fin_year = fy;
             
            cntr :=LPAD(cnt,7,'0'); 
           
       RETURN  docid||'-'||UID||'-'||Sfy||'-'||cntr;
       
  END;

  FUNCTION WLOCX_NO(P_UNIT NUMBER ,   P_FY VARCHAR2 ) RETURN VARCHAR2 AS     -- WAREHOUSE LOCATIONS
       docid CHAR(3) := 'COL';
       UID   CHAR(3) ;
       fy    VARCHAR(10) := p_fy;
       cnt   NUMBER;
       cntr  VARCHAR2(10);
       sfy   VARCHAR2(20);
  BEGIN       

            sfy := Date_Of.Sfy_from_fy(p_fy); 

           SELECT DOC_ID INTO UID FROM smf_units WHERE unit_id = p_unit;   
           SELECT NVL(MAX(SUBSTR(TRN_NO,-7)),0)+1 INTO cnt FROM WH_LOCATION_TRN_M   WHERE unit_id = p_unit AND fin_year = fy;  
            cntr :=LPAD(cnt,7,'0'); 
           
       RETURN  docid||'-'||UID||'-'||Sfy||'-'||cntr;
       
  END;


FUNCTION ISS_TO_PROD(P_UNIT NUMBER ,   P_FY VARCHAR2 ) RETURN VARCHAR2 AS
       docid CHAR(3) := 'I2P';
       UID   CHAR(3) ;
       fy    VARCHAR(10) := p_fy;
       cnt   NUMBER;
       cntr  VARCHAR2(10);
       sfy   VARCHAR2(20);
  BEGIN       

            sfy := Date_Of.Sfy_from_fy(p_fy); 

           SELECT DOC_ID INTO UID FROM smf_units WHERE unit_id = p_unit;   
           SELECT NVL(MAX(SUBSTR(ISS_NO,-7)),0)+1 INTO cnt FROM WH_ISS_PROD_M   WHERE unit_id = p_unit AND fin_year = fy;  
            cntr :=LPAD(cnt,7,'0'); 
           
       RETURN  docid||'-'||UID||'-'||Sfy||'-'||cntr;
       
  END;

FUNCTION BOX_SALEORDER(P_UNIT NUMBER ,   P_FY VARCHAR2 ) RETURN VARCHAR2 as   -- ISSUE TO PRODUCTION
       docid CHAR(3) := 'ISO';
       UID   CHAR(3) ;
       fy    VARCHAR(10) := p_fy;
       cnt   NUMBER;
       cntr  VARCHAR2(10);
       sfy   VARCHAR2(20);
  BEGIN       

            sfy := Date_Of.Sfy_from_fy(p_fy); 

           SELECT DOC_ID INTO UID FROM smf_units WHERE unit_id = p_unit;   
           SELECT NVL(MAX(SUBSTR(ISO_NO,-7)),0)+1 INTO cnt FROM INTER_SO_M   WHERE unit_id = p_unit AND fin_year = fy;  
            cntr :=LPAD(cnt,7,'0'); 
           
       RETURN  docid||'-'||UID||'-'||Sfy||'-'||cntr;
       
  END;


FUNCTION BOX_JOBCARD(P_UNIT NUMBER ,   P_FY VARCHAR2 ) RETURN VARCHAR2 AS 
       docid CHAR(3) := 'JBO';
       UID   CHAR(3) ;
       fy    VARCHAR(10) := p_fy;
       cnt   NUMBER;
       cntr  VARCHAR2(10);
       sfy   VARCHAR2(20);
  BEGIN       

       sfy := Date_Of.Sfy_from_fy(p_fy); 

       SELECT DOC_ID INTO UID FROM smf_units WHERE unit_id = p_unit;   
       SELECT NVL(MAX(SUBSTR(job_NO,-7)),0)+1 INTO cnt FROM INTER_JOB_CARD   WHERE unit_id = p_unit AND fin_year = fy;  
       cntr :=LPAD(cnt,7,'0'); 
           
       RETURN  docid||'-'||UID||'-'||Sfy||'-'||cntr;
  END;

FUNCTION DISPATCHPLAN(P_UNIT NUMBER  ,  P_FY VARCHAR2  ) RETURN VARCHAR2    AS 
       docid CHAR(3) := 'JBO';
       UID   CHAR(3) ;
       fy    VARCHAR(10) := p_fy;
       cnt   NUMBER;
       cntr  VARCHAR2(10);
       sfy   VARCHAR2(20);
  BEGIN       

       sfy := Date_Of.Sfy_from_fy(p_fy); 

       SELECT DOC_ID INTO UID FROM smf_units WHERE unit_id = p_unit;   
       SELECT NVL(MAX(SUBSTR(PLAN_NO,-7)),0)+1 INTO cnt FROM WH_DISPATCH_PLAN_M   WHERE unit_id = p_unit AND fin_year = fy;  
       cntr :=LPAD(cnt,7,'0'); 
           
       RETURN  docid||'-'||UID||'-'||Sfy||'-'||cntr;
  END;

FUNCTION postages(P_UNIT NUMBER  ,  P_FY VARCHAR2  ) RETURN VARCHAR2 as
       docid CHAR(3) := 'PST';
       UID   CHAR(3) ;
       fy    VARCHAR(10) := p_fy;
       cnt   NUMBER;
       cntr  VARCHAR2(10);
       sfy   VARCHAR2(20);
  BEGIN       

       sfy := Date_Of.Sfy_from_fy(p_fy); 

       SELECT DOC_ID INTO UID FROM smf_units WHERE unit_id = p_unit;   
       SELECT NVL(MAX(SUBSTR(POST_NO,-6)),0)+1 INTO cnt FROM POSTAGE_M   WHERE unit_id = p_unit AND fin_year = fy;  
       cntr :=LPAD(cnt,6,'0'); 
           
       RETURN  docid||'-'||UID||'-'||Sfy||'-'||cntr;
  END;


FUNCTION token(P_UNIT NUMBER, p_date date   ) RETURN VARCHAR2 as
       docid CHAR(3) := 'TKN';
       UID   CHAR(3) ;   
       cnt   NUMBER;
       cntr  VARCHAR2(10);
       sfy   VARCHAR2(20);
  BEGIN       

       SELECT DOC_ID INTO UID FROM smf_units WHERE unit_id = p_unit;   
       
       SELECT NVL(MAX(SUBSTR(token_NO,-6)),0)+1 INTO cnt FROM WH_VEHICLE_TOKEN   WHERE unit_id = p_unit and trunc(token_date) = trunc(p_date) ;  
       
       cntr :=LPAD(cnt,6,'0'); 
           
       RETURN  UID||'-' ||to_char(p_date,'YYMMDD') ||'-' ||cntr;
       
  END;

FUNCTION QOT(P_UNIT NUMBER    ) RETURN VARCHAR2 as
       docid CHAR(3) := 'QOT';
       UID   CHAR(3) ;
       cnt   NUMBER;
       cntr  VARCHAR2(10);
       sfy   VARCHAR2(20);
  BEGIN       

       SELECT DOC_ID INTO UID FROM smf_units WHERE unit_id = p_unit;   
       SELECT NVL(MAX(SUBSTR(QOT_NO,-7)),0)+1 INTO cnt FROM PO_QUOTE_M   WHERE unit_id = p_unit  ;  
       cntr :=LPAD(cnt,7,'0'); 
           
       RETURN  docid||'-'||UID||'-'||cntr;
  END;
  
  
FUNCTION WOD(P_UNIT NUMBER) RETURN VARCHAR2 as
       docid CHAR(3) := 'WOD';
       UID   CHAR(3) ;
       cnt   NUMBER;
       cntr  VARCHAR2(10);
       sfy   VARCHAR2(20);
  BEGIN       

       SELECT DOC_ID INTO UID FROM smf_units WHERE unit_id = p_unit;   
       SELECT NVL(MAX(SUBSTR(WOD_NO,-7)),0)+1 INTO cnt FROM SMF_WORK_ORDER_M WHERE unit_id = p_unit  ;  
       cntr :=LPAD(cnt,7,'0'); 
           
       RETURN  docid||'-'||UID||'-'||cntr;
  END; 
  
FUNCTION MOD_CIV(P_UNIT NUMBER) RETURN VARCHAR2 as
       docid CHAR(3) := 'CMO';
       UID   CHAR(3) ;
       cnt   NUMBER;
       cntr  VARCHAR2(10);
       sfy   VARCHAR2(20);
  BEGIN       

       SELECT DOC_ID INTO UID FROM smf_units WHERE unit_id = p_unit;   
       SELECT NVL(MAX(SUBSTR(MOVE_NO,-7)),0)+1 INTO cnt FROM CIV_MOVE_ORDER WHERE unit_id = p_unit  ;  
       cntr :=LPAD(cnt,7,'0'); 
           
       RETURN  docid||'-'||UID||'-'||cntr;
  END; 
  
FUNCTION WOD_CIV(P_UNIT NUMBER) RETURN VARCHAR2 as
       docid CHAR(3) := 'CWO';
       UID   CHAR(3) ;
       cnt   NUMBER;
       cntr  VARCHAR2(10);
       sfy   VARCHAR2(20);
  BEGIN       

       SELECT DOC_ID INTO UID FROM smf_units WHERE unit_id = p_unit;   
       SELECT NVL(MAX(to_number(SUBSTR(WOD_NO,-7))),0)+1 INTO cnt FROM CIV_WORK_ORDER_M WHERE unit_id = p_unit  ;  
       cntr :=LPAD(cnt,7,'0'); 
           
       RETURN  docid||'-'||UID||'-'||cntr;
  END; 
  
FUNCTION FLT_BILL(P_UNIT NUMBER) RETURN VARCHAR2 as
       docid CHAR(3) := 'FLT';
       UID   CHAR(3) ;
       cnt   NUMBER;
       cntr  VARCHAR2(10);
       sfy   VARCHAR2(20);
  BEGIN       

       SELECT DOC_ID INTO UID FROM smf_units WHERE unit_id = p_unit;   
       SELECT nvl(max(to_number(substr(BILL_NO,-7))),0)+1 INTO cnt FROM FLT_BILL_M WHERE unit_id = p_unit  ;  
       cntr :=LPAD(cnt,7,'0'); 
           
       RETURN  docid||'-'||UID||'-'||cntr;
  END;   

FUNCTION vbook(P_UNIT NUMBER     ) RETURN VARCHAR2 as
       docid CHAR(3) := 'TKN';
       UID   CHAR(3) ;   
       cnt   NUMBER;
       cntr  VARCHAR2(10);
       sfy   VARCHAR2(20);
  BEGIN       

       SELECT DOC_ID INTO UID FROM smf_units WHERE unit_id = p_unit;   
       
       SELECT NVL(MAX(SUBSTR(BOOKING_NO,-7)),0)+1 INTO cnt FROM WH_VEHICLE_BOOKING   WHERE unit_id = p_unit   ;  
       
       cntr :=LPAD(cnt,7,'0'); 
           
       RETURN  UID||'-'    ||cntr;
       
  END;

  FUNCTION LABORBREAK(P_UNIT NUMBER , P_FY VARCHAR2) RETURN VARCHAR2 AS
       docid CHAR(3) := 'BIL';
       UID   CHAR(3) ;   
       cnt   NUMBER;
       cntr  VARCHAR2(10);
       sfy   VARCHAR2(20);
  BEGIN       

       sfy := Date_Of.Sfy_from_fy(p_fy); 
       
       SELECT DOC_ID INTO UID FROM smf_units WHERE unit_id = p_unit;   
       
       SELECT NVL(MAX(SUBSTR(PLAN_NO,-7)),0)+1 INTO cnt FROM BOM_LAYOUT_BRK   WHERE unit_id = p_unit AND fin_year = P_FY  ;  
       
       cntr :=LPAD(cnt,7,'0'); 
           
       RETURN  docid||'-'||UID||'-'||Sfy||'-'||cntr;
       
  END;

FUNCTION PROD_PKG(P_UNIT NUMBER, P_UID NUMBER := '0',  P_FY VARCHAR2 ) RETURN VARCHAR2 AS
       docid CHAR(3) := 'MPD';
       UID   CHAR(3) ;   
       cnt   NUMBER;
       cntr  VARCHAR2(10);
       sfy   VARCHAR2(20);
  BEGIN       

       sfy := Date_Of.Sfy_from_fy(p_fy); 
       
       SELECT DOC_ID INTO UID FROM smf_units WHERE unit_id = p_unit;   
       
       SELECT NVL(MAX(SUBSTR(PROD_NO,-7)),0)+1 INTO cnt FROM BOM_PRODUCTION_M   WHERE unit_id = p_unit AND PRODUCTION_TYPE='OFFSET' AND fin_year = P_FY  ;  
       
       cntr :=LPAD(cnt,7,'0'); 
           
       RETURN  docid||'-'||P_UID||'-'||Sfy||'-'||cntr;
       
  END;


FUNCTION PKGS_DIE(P_UNIT NUMBER, P_UID NUMBER := '0',  P_FY VARCHAR2 ) RETURN VARCHAR2 AS
       docid CHAR(3) := 'MDC';
       UID   CHAR(3) ;   
       cnt   NUMBER;
       cntr  VARCHAR2(10);
       sfy   VARCHAR2(20);
  BEGIN       

       sfy := Date_Of.Sfy_from_fy(p_fy); 
        
       SELECT DOC_ID INTO UID FROM smf_units WHERE unit_id = p_unit;   
       
       SELECT NVL(MAX(SUBSTR(PROD_NO,-7)),0)+1 INTO cnt FROM BOM_PRODUCTION_M   WHERE unit_id = p_unit AND PRODUCTION_TYPE='DIE' AND fin_year = P_FY  ;  
       
       cntr :=LPAD(cnt,7,'0'); 
           
       RETURN  docid||'-'||P_UID||'-'||Sfy||'-'||cntr;
       
  END;

FUNCTION PKGS_FG(P_UNIT NUMBER, P_UID NUMBER := '0',  P_FY VARCHAR2 ) RETURN VARCHAR2 as
       docid CHAR(3) := 'FGS';
       UID   CHAR(3) ;   
       cnt   NUMBER;
       cntr  VARCHAR2(10);
       sfy   VARCHAR2(20);
  BEGIN       

       sfy := Date_Of.Sfy_from_fy(p_fy); 
       
       SELECT DOC_ID INTO UID FROM smf_units WHERE unit_id = p_unit;   
       
       SELECT NVL(MAX(SUBSTR(PROD_NO,-7)),0)+1 INTO cnt FROM BOM_PRODUCTION_M   WHERE unit_id = p_unit AND PRODUCTION_TYPE='PASTE'  AND fin_year = P_FY  ;  
       
       cntr :=LPAD(cnt,7,'0'); 
           
       RETURN  docid||'-'||P_UID||'-'||Sfy||'-'||cntr;
       
  END;
 

  FUNCTION PKGS_WP(P_UNIT NUMBER, P_UID NUMBER := '0',  P_FY VARCHAR2 ) RETURN VARCHAR2 AS
       docid CHAR(3) := 'WNP';
       UID   CHAR(3) ;   
       cnt   NUMBER;
       cntr  VARCHAR2(10);
       sfy   VARCHAR2(20);
  BEGIN       

       sfy := Date_Of.Sfy_from_fy(p_fy); 
       
       SELECT DOC_ID INTO UID FROM smf_units WHERE unit_id = p_unit;   
       
       SELECT NVL(MAX(SUBSTR(PROD_NO,-7)),0)+1 INTO cnt FROM BOM_PRODUCTION_M   WHERE unit_id = p_unit AND PRODUCTION_TYPE='WP' AND fin_year = P_FY  ;  
       
       cntr :=LPAD(cnt,7,'0'); 
           
       RETURN  docid||'-'||P_UID||'-'||Sfy||'-'||cntr;
       
  END;
  
  FUNCTION PKGS_LAM(P_UNIT NUMBER, P_UID NUMBER := '0',  P_FY VARCHAR2 ) RETURN VARCHAR2 AS
       docid CHAR(3) := 'LAM';
       UID   CHAR(3) ;   
       cnt   NUMBER;
       cntr  VARCHAR2(10);
       sfy   VARCHAR2(20);
  BEGIN       

       sfy := Date_Of.Sfy_from_fy(p_fy); 
       
       SELECT DOC_ID INTO UID FROM smf_units WHERE unit_id = p_unit;   
       
       SELECT NVL(MAX(SUBSTR(PROD_NO,-7)),0)+1 INTO cnt FROM BOM_PRODUCTION_M   WHERE unit_id = p_unit AND PRODUCTION_TYPE='LAM' AND fin_year = P_FY  ;  
       
       cntr :=LPAD(cnt,7,'0'); 
           
       RETURN  docid||'-'||P_UID||'-'||Sfy||'-'||cntr;
       
  END;
  




FUNCTION RDR(P_UNIT NUMBER, P_UID NUMBER := '0',  P_FY VARCHAR2 ) RETURN VARCHAR2 AS
       docid CHAR(3) := 'RDR';
       UID   CHAR(3) ;   
       cnt   NUMBER;
       cntr  VARCHAR2(10);
       sfy   VARCHAR2(20);
  BEGIN       

       sfy := Date_Of.Sfy_from_fy(p_fy); 
       
       SELECT DOC_ID INTO UID FROM smf_units WHERE unit_id = p_unit;   
       
       SELECT NVL(MAX(SUBSTR(DMD_NO,-6)),0)+1 INTO cnt FROM inv_rdmd_m   WHERE unit_id = p_unit  and user_id = p_uid  AND fin_year = P_FY  ;  
       
       cntr :=LPAD(cnt,7,'0'); 
           
       RETURN  docid||'-'||P_UID||'-'||Sfy||'-'||cntr;
       
  END;


function downtine(p_unit number , p_fy varchar2) return varchar2 as
       docid CHAR(3) := 'BIL';
       UID   CHAR(3) ;   
       cnt   NUMBER;
       cntr  VARCHAR2(10);
       sfy   VARCHAR2(20);
  BEGIN       

       sfy := Date_Of.Sfy_from_fy(p_fy); 
       
       SELECT DOC_ID INTO UID FROM smf_units WHERE unit_id = p_unit;   
       
       SELECT NVL(MAX(SUBSTR(PROD_NO,-7)),0)+1 INTO cnt FROM BOM_PRODUCTION_DOWN_M   WHERE unit_id = p_unit   ;  
       
       cntr :=LPAD(cnt,7,'0'); 
           
       RETURN  docid||'-'||UID||'-'||Sfy||'-'||cntr;
       
  END;


FUNCTION RRJ(P_UNIT NUMBER, P_FY VARCHAR2 ) RETURN VARCHAR2 AS
       docid CHAR(3) := 'PRJ';
       UID   CHAR(3) ;   
       cnt   NUMBER;
       cntr  VARCHAR2(10);
       sfy   VARCHAR2(20);
  BEGIN       

       sfy := Date_Of.Sfy_from_fy(p_fy); 
       
       SELECT DOC_ID INTO UID FROM smf_units WHERE unit_id = p_unit;   
       
       SELECT NVL(MAX(SUBSTR(INS_NO,-7)),0)+1 INTO cnt FROM PROJECT_EXPENSE_M   WHERE unit_id = p_unit AND fin_year = P_FY   ;  
       
       cntr :=LPAD(cnt,7,'0'); 
           
       RETURN  docid||'-'||UID||'-'||Sfy||'-'||cntr;
       
  END;


FUNCTION PROD_SEMI(P_UNIT NUMBER,   P_FY VARCHAR2 ) RETURN VARCHAR2 AS
       docid CHAR(3) := 'PRJ';
       UID   CHAR(3) ;   
       cnt   NUMBER;
       cntr  VARCHAR2(10);
       sfy   VARCHAR2(20);
  BEGIN       

       sfy := Date_Of.Sfy_from_fy(p_fy); 
       
       SELECT DOC_ID INTO UID FROM smf_units WHERE unit_id = p_unit;   
       
       SELECT NVL(MAX(SUBSTR(pro_NO,-7)),0)+1 INTO cnt FROM INV_PRODUCTION_m   WHERE unit_id = p_unit AND fin_year = P_FY  ;  
       
       cntr :=LPAD(cnt,7,'0'); 
           
       RETURN  docid||'-'||UID||'-'||Sfy||'-'||cntr;
       
  END;


 FUNCTION ADV_FORECAST(p_unit NUMBER, p_fy  VARCHAR2 ) RETURN VARCHAR2 AS
   docid     CHAR(3) := 'ASF';
   UID       CHAR(3) ;
   fy        VARCHAR(7);
   nfy      VARCHAR(5);
   cnt       NUMBER;
   cntr      VARCHAR2(10);
   sfy      VARCHAR2(20); 
 BEGIN       
   sfy := Date_Of.Sfy_from_fy(p_fy);
   SELECT DOC_ID INTO UID  FROM smf_units WHERE unit_id = p_unit;   -- document id
   SELECT NVL(MAX(SUBSTR(SAL_NO,-6)),0)+1 INTO cnt  FROM SAL_ADV_FORCASTE_M  WHERE sal_unit_id = p_unit AND fin_year = P_FY  ;  -- last max number
       cntr :=LPAD(cnt,6,'0'); 
       RETURN docid||'-'||UID||'-'||sfy||'-' ||cntr;
  
 END;

FUNCTION counter(p_unit NUMBER, table_name  VARCHAR2 ) RETURN VARCHAR2 as
retval varchar2(400);
strr varchar2(400);
uids varchar2(10);
cntr varchar2(10);
begin
  
    SELECT DOC_ID INTO UIDS  FROM smf_units WHERE unit_id = p_unit;   -- document id

     IF p_unit IS NOT NULL THEN
         strr := 'SELECT NVL(COUNT(*),0)+1    FROM  '|| table_name  ||' WHERE unit_id = '|| p_unit;
         EXECUTE IMMEDIATE strr INTO RETVAL;
         cntr :=LPAD(RETVAL,6,'0'); 
         RETURN  UIDS||'-' ||cntr;
    ELSE
        RETVAL := '';
    END IF;
return retval;
end;

FUNCTION counter(p_unit NUMBER, table_name  VARCHAR2, P_DOC varchar2 ) RETURN VARCHAR2 as
retval varchar2(400);
strr varchar2(400);
uids varchar2(10);
cntr varchar2(10);
begin
  
    SELECT DOC_ID INTO UIDS  FROM smf_units WHERE unit_id = p_unit;   -- document id

     IF p_unit IS NOT NULL THEN
         strr := 'SELECT NVL(COUNT(*),0)+1    FROM  '|| table_name  ||' WHERE unit_id = '|| p_unit;
         EXECUTE IMMEDIATE strr INTO RETVAL;
         cntr :=LPAD(RETVAL,6,'0'); 
         RETURN  P_DOC||'-'||UIDS||'-' ||cntr;
    ELSE
        RETVAL := '';
    END IF;
return retval;
end;


FUNCTION col_counter(p_unit NUMBER, table_name  VARCHAR2, p_col varchar2 ) RETURN VARCHAR2 as
retval varchar2(40);
strr varchar2(400);
uids varchar2(10);
cntr varchar2(10);
begin
  
    SELECT DOC_ID INTO UIDS  FROM smf_units WHERE unit_id = p_unit;   -- document id

     IF p_unit IS NOT NULL THEN
         strr := 'SELECT NVL(COUNT(*),0)+1    FROM  '|| table_name  ||' WHERE unit_id = '|| p_unit || ' and ' || p_col || '  is not null ' ;
         
         dbms_output.put_line(strr);
         
         EXECUTE IMMEDIATE strr INTO RETVAL;
         cntr :=LPAD(RETVAL,6,'0'); 
         RETURN  UIDS||'-' ||cntr;
         
    ELSE
        RETVAL := '';
    END IF;
return retval;
end;
    

FUNCTION QA_PAPER(P_UNIT NUMBER, P_FY VARCHAR2 ) RETURN VARCHAR2 as
   docid     CHAR(3) := 'ASF';
   UID       CHAR(3) ;
   fy        VARCHAR(7);
   nfy      VARCHAR(5);
   cnt       NUMBER;
   cntr      VARCHAR2(10);
   sfy      VARCHAR2(20); 
 BEGIN       
   sfy := Date_Of.Sfy_from_fy(p_fy);
   SELECT DOC_ID INTO UID  FROM smf_units WHERE unit_id = p_unit;   -- document id
   SELECT NVL(MAX(SUBSTR(INS_NO,-6)),0)+1 INTO cnt  FROM INV_PB_Q_INSPECTION_M  WHERE  unit_id = p_unit  AND fin_year = P_FY  ;  -- last max number
   cntr :=LPAD(cnt,6,'0'); 
   
   RETURN docid||'-'||UID||'-'||sfy||'-' ||cntr;
  
 END;



FUNCTION QC_PROD (P_UNIT NUMBER, P_FY VARCHAR2 ) RETURN VARCHAR2 AS
   docid     CHAR(3) := 'ASF';
   UID       CHAR(3) ;
   fy        VARCHAR(7);
   nfy      VARCHAR(5);
   cnt       NUMBER;
   cntr      VARCHAR2(10);
   sfy      VARCHAR2(20); 
 BEGIN       
   
   sfy := Date_Of.Sfy_from_fy(p_fy);
   SELECT DOC_ID INTO UID  FROM smf_units WHERE unit_id = p_unit;   -- document id
   SELECT NVL(MAX(SUBSTR(QC_NO,-6)),0)+1 INTO cnt  FROM QA_INSPECTION_DB_M  WHERE  unit_id = p_unit  ;--  AND fin_year = P_FY  ;
   cntr :=LPAD(cnt,6,'0'); 
   RETURN docid||'-'||UID||'-'||sfy||'-' ||cntr;
  
 END;
 

FUNCTION CPH_REJ (P_UNIT NUMBER, P_FY VARCHAR2 ) RETURN VARCHAR2 AS
   docid     CHAR(3) := 'RJX';
   UID       CHAR(3) ;
   fy        VARCHAR(7);
   nfy      VARCHAR(5);
   cnt       NUMBER;
   cntr      VARCHAR2(10);
   sfy      VARCHAR2(20); 
 BEGIN       
   sfy := Date_Of.Sfy_from_fy(p_fy);
   SELECT DOC_ID INTO UID  FROM smf_units WHERE unit_id = p_unit;   -- document id
   SELECT NVL(MAX(SUBSTR(REJ_NO,-6)),0)+1 INTO cnt  FROM INV_TRD_REJ_M  WHERE  unit_id = p_unit AND fin_year = P_FY  ;  -- last max number
       cntr :=LPAD(cnt,6,'0'); 
       RETURN docid||'-'||UID||'-'||sfy||'-' ||cntr;
  
 END;
 
FUNCTION PL_CLOSE (P_UNIT NUMBER , P_FY VARCHAR2 ) RETURN VARCHAR2 AS
   docid     CHAR(3) := 'PLC';
   UID       CHAR(3) ;
   fy        VARCHAR(7);
   nfy      VARCHAR(5);
   cnt       NUMBER;
   cntr      VARCHAR2(10);
   sfy      VARCHAR2(20); 
 BEGIN       
   sfy := Date_Of.Sfy_from_fy(p_fy);
   SELECT DOC_ID INTO UID  FROM smf_units WHERE unit_id = p_unit;   -- document id
   SELECT NVL(MAX(SUBSTR(POST_NO,-6)),0)+1 INTO cnt  FROM PL_MONTH_POSTING_M  WHERE  unit_id = p_unit AND fin_year = P_FY  ;  -- last max number
       cntr :=LPAD(cnt,6,'0'); 
       RETURN docid||'-'||UID||'-'||sfy||'-' ||cntr;
  
 END;


FUNCTION PKG_ISO (P_UNIT NUMBER , P_FY VARCHAR2 ) RETURN VARCHAR2 as
   docid     CHAR(3) := 'ISO';
   UID       CHAR(3) ;
   fy        VARCHAR(7);
   nfy      VARCHAR(5);
   cnt       NUMBER;
   cntr      VARCHAR2(10);
   sfy      VARCHAR2(20); 
 BEGIN       
   sfy := Date_Of.Sfy_from_fy(p_fy);
   SELECT DOC_ID INTO UID  FROM smf_units WHERE unit_id = p_unit;   -- document id
 
   SELECT NVL(MAX(SUBSTR(PKG_ISO_NO,-6)),0)+1 INTO cnt  FROM PO_PACKAGES_M  WHERE  unit_id = p_unit AND fin_year = P_FY  ;  -- last max number
  
     cntr :=LPAD(cnt,6,'0'); 
      RETURN docid||'-'||UID||'-'||sfy||'-' ||cntr;
  
 END;


FUNCTION PROD_TXT (P_UNIT NUMBER , P_FY VARCHAR2 ) RETURN VARCHAR2 AS
   docid     CHAR(3) := 'PGT';
   UID       CHAR(3) ;
   fy        VARCHAR(7);
   nfy      VARCHAR(5);
   cnt       NUMBER;
   cntr      VARCHAR2(10);
   sfy      VARCHAR2(20); 
 BEGIN       
   sfy := Date_Of.Sfy_from_fy(p_fy);
   SELECT DOC_ID INTO UID  FROM smf_units WHERE unit_id = p_unit;   -- document id
 
   SELECT NVL(MAX(SUBSTR(TGT_NO,-6)),0)+1 INTO cnt  FROM PROD_TARGET_M  WHERE  unit_id = p_unit AND fin_year = P_FY  ;  -- last max number
  
     cntr :=LPAD(cnt,6,'0'); 
      RETURN docid||'-'||UID||'-'||sfy||'-' ||cntr;
  
 END;
       
FUNCTION PAY_REQUEST (P_UNIT NUMBER , P_FY VARCHAR2 ) RETURN VARCHAR2 AS
   docid     CHAR(3) := 'PRQ';
   UID       CHAR(3) ;
   fy        VARCHAR(7);
   nfy      VARCHAR(5);
   cnt       NUMBER;
   cntr      VARCHAR2(10);
   sfy      VARCHAR2(20); 
 BEGIN       
   sfy := Date_Of.Sfy_from_fy(p_fy);
   SELECT DOC_ID INTO UID  FROM smf_units WHERE unit_id = p_unit;   -- document id
 
   SELECT   NVL(MAX(SUBSTR(ATTRIBUTE2,-6)),0)+1  INTO cnt  FROM LEDD  WHERE  unit_id = p_unit AND ATTRIBUTE1 ='Y';
  
     cntr :=LPAD(cnt,6,'0'); 
      RETURN docid||'-'||UID||'-'||sfy||'-' ||cntr;
  
 END;
 
function task_no (p_unit number, p_dated date) return varchar2 as
    docid char(4) := 'TASK';
    uid char(3) ;
    cnt number;
    cntr varchar2(10);
    sfy varchar2(20); 
begin       
           
   sfy := to_char(to_date(p_dated),'RRRR');
   select doc_id into uid from smf_units where unit_id = p_unit;   
   select nvl(max(substr(task_no,-4)),0)+1 into cnt from smf_daily_tasks_master where unit_id = p_unit ;
   cntr :=lpad(cnt,4,'0');
   
   return docid||'-'||uid||'-'||sfy||'-' ||cntr;
   
end;


function QRCV  (P_UNIT NUMBER , P_SID NUMBER := '0',   P_FY VARCHAR2   ) RETURN VARCHAR2 as
    docid char(3) := 'RCV';
    uid char(3) ;
    cnt number;
    cntr varchar2(10);
    sfy varchar2(20); 
begin       
           
   sfy := Date_Of.Sfy_from_fy(p_fy);
   select doc_id into uid from smf_units where unit_id = p_unit;   
   select nvl(max(substr(RCV_NO,-6)),0)+1 into cnt from FLOOR_RCV_M where unit_id = p_unit  and mtl_Store_id = p_sid;
   cntr :=lpad(cnt,6,'0');
   
   return docid||'-'||uid||'-'||sfy||'-'|| lpad(p_sid,3,0)||'-'||cntr;
   
end;


FUNCTION FLR_PLAN(P_UNIT NUMBER  ,  P_FY VARCHAR2  ) RETURN VARCHAR2 AS
   docid     CHAR(3) := 'FLN';
   UID       CHAR(3) ;
   fy        VARCHAR(7);
   nfy      VARCHAR(5);
   cnt       NUMBER;
   cntr      VARCHAR2(10);
   sfy      VARCHAR2(20); 
 BEGIN       
   sfy := Date_Of.Sfy_from_fy(p_fy);
   SELECT DOC_ID INTO UID  FROM smf_units WHERE unit_id = p_unit;   -- document id
 
   SELECT NVL(MAX(SUBSTR(PLAN_NO,-6)),0)+1 INTO cnt  FROM PROD_PLAN_FLM_M  WHERE  unit_id = p_unit AND fin_year = P_FY  ;  -- last max number
  
     cntr :=LPAD(cnt,6,'0'); 
      RETURN docid||'-'||UID||'-'||sfy||'-' ||cntr;
  
 END;
 
FUNCTION FLR_ISS(P_UNIT NUMBER  ,  P_FY VARCHAR2  ) RETURN VARCHAR2 AS
   docid     CHAR(3) := 'SIL';
   UID       CHAR(3) ;
   fy        VARCHAR(7);
   nfy      VARCHAR(5);
   cnt       NUMBER;
   cntr      VARCHAR2(10);
   sfy      VARCHAR2(20); 
 BEGIN       
   sfy := Date_Of.Sfy_from_fy(p_fy);
   SELECT DOC_ID INTO UID  FROM smf_units WHERE unit_id = p_unit;   -- document id
 
   SELECT NVL(MAX(SUBSTR(ISS_NO,-6)),0)+1 INTO cnt  FROM WH_BATCH_ISSUE_M  WHERE  unit_id = p_unit ; --AND fin_year = P_FY  ;  -- last max number
  
     cntr :=LPAD(cnt,6,'0'); 
      RETURN docid||'-'||UID||'-'||sfy||'-' ||cntr;
  
 END;

FUNCTION PRP(P_UNIT NUMBER  ,  P_FY VARCHAR2  ) RETURN VARCHAR2 as
   docid     CHAR(3) := 'PRP';
   UID       CHAR(3) ;
   fy        VARCHAR(7);
   nfy      VARCHAR(5);
   cnt       NUMBER;
   cntr      VARCHAR2(10);
   sfy      VARCHAR2(20); 
 BEGIN       
   sfy := Date_Of.Sfy_from_fy(p_fy);
   SELECT DOC_ID INTO UID  FROM smf_units WHERE unit_id = p_unit;   -- document id
 
   SELECT NVL(MAX(SUBSTR(REQ_NO,-6)),0)+1 INTO cnt  FROM SMF_PO_REQ_PLAN_M  WHERE  unit_id = p_unit ; --AND fin_year = P_FY  ;  -- last max number
  
     cntr :=LPAD(cnt,6,'0'); 
      RETURN docid||'-'||UID||'-'||sfy||'-' ||cntr;
  
 END; 


FUNCTION HSE_IA(P_UNIT NUMBER  ,  P_FY VARCHAR2  ) RETURN VARCHAR2 AS
   docid     CHAR(3) := 'IAL';
   UID       CHAR(3) ;
   fy        VARCHAR(1);
   nfy      VARCHAR(5);
   cnt       NUMBER;
   cntr      VARCHAR2(10);
   sfy      VARCHAR2(20); 
 BEGIN       
   sfy := Date_Of.Sfy_from_fy(p_fy);
   SELECT DOC_ID INTO UID  FROM smf_units WHERE unit_id = p_unit;   -- document id
 
   SELECT NVL(MAX(SUBSTR(IAL_NO,-6)),0)+1 INTO cnt  FROM HSE_IALOG   WHERE  unit_id = p_unit   AND fin_year = P_FY  ;  -- last max number
  
     cntr :=LPAD(cnt,6,'0'); 
      RETURN docid||'-'||UID||'-'||sfy||'-' ||cntr;
  
 END; 

 FUNCTION HSE_MDR(P_UNIT NUMBER  ,  P_FY VARCHAR2  ) RETURN VARCHAR2 AS
    docid     CHAR(3) := 'MDR';
   UID       CHAR(3) ;
   fy        VARCHAR(1);
   nfy      VARCHAR(5);
   cnt       NUMBER;
   cntr      VARCHAR2(10);
   sfy      VARCHAR2(20); 
 BEGIN       
   sfy := Date_Of.Sfy_from_fy(p_fy);
   SELECT DOC_ID INTO UID  FROM smf_units WHERE unit_id = p_unit;   -- document id
 
   SELECT NVL(MAX(SUBSTR(DIS_NO,-6)),0)+1 INTO cnt  FROM HSE_DISP_REG_M   WHERE  unit_id = p_unit   AND fin_year = P_FY  ;  -- last max number
  
     cntr :=LPAD(cnt,6,'0'); 
      RETURN docid||'-'||UID||'-'||sfy||'-' ||cntr;
  
 END; 
FUNCTION HSE_ISD(P_UNIT NUMBER  ,  P_FY VARCHAR2  ) RETURN VARCHAR2  as
    docid     CHAR(3) := 'ISD';
   UID       CHAR(3) ;
   fy        VARCHAR(1);
   nfy      VARCHAR(5);
   cnt       NUMBER;
   cntr      VARCHAR2(10);
   sfy      VARCHAR2(20); 
 BEGIN       
     
     sfy := Date_Of.Sfy_from_fy(p_fy);     
     SELECT DOC_ID INTO UID  FROM smf_units WHERE unit_id = p_unit;   -- document id
 
     SELECT NVL(MAX(SUBSTR(ISD_NO,-6)),0)+1 INTO cnt  FROM hse_disp_iss_m   WHERE  unit_id = p_unit   AND fin_year = P_FY  ;  -- last max number
  
     cntr :=LPAD(cnt,6,'0'); 
     RETURN docid||'-'||UID||'-'||sfy||'-' ||cntr;
  
 END; 



 -- WORK PERMIT
 
FUNCTION HSE_WP(P_UNIT NUMBER  ,  P_FY VARCHAR2  ) RETURN VARCHAR2 As
    docid     CHAR(3) := 'WPT';
   UID       CHAR(3) ;
   fy        VARCHAR(1);
   nfy      VARCHAR(5);
   cnt       NUMBER;
   cntr      VARCHAR2(10);
   sfy      VARCHAR2(20); 
 BEGIN       
     
     sfy := Date_Of.Sfy_from_fy(p_fy);     
     SELECT DOC_ID INTO UID  FROM smf_units WHERE unit_id = p_unit;   -- document id
 
     SELECT NVL(MAX(SUBSTR(WP_NO,-6)),0)+1 INTO cnt  FROM HSE_WORK_PERMIT_M   WHERE  unit_id = p_unit   AND fin_year = P_FY  ;  -- last max number
  
     cntr :=LPAD(cnt,6,'0'); 
     RETURN docid||'-'||UID||'-'||sfy||'-' ||cntr;
  
 END; 


 
END;
/

No comments:

Post a Comment

Check Internet Connectivity on Local System

if (!navigator.onLine) {     showOfflineAlert(); } else {     // Set a strict 3-second network timeout threshold     const controller = new ...