Sunteți pe pagina 1din 2

CREATE OR REPLACE PROCEDURE SAVE_NONCONSUMER(

P_NAME IN VARCHAR2,P_HOUSENO IN VARCHAR2,P_ADDRESS IN VARCHAR2,


P_LOCALITY IN VARCHAR2,P_PINCODE IN NUMBER,
P_DOCTYPE IN VARCHAR2,P_DOCSTATUS IN VARCHAR2,P_CURSECTN IN VARCHAR2,
P_CAN IN VARCHAR2,P_DOCAMT IN VARCHAR2,P_CONSTYPE IN VARCHAR2,
P_OPBAL IN VARCHAR2,P_REMMODE IN VARCHAR2,P_CHQNO IN VARCHAR2,
P_CHQDT IN DATE,P_BANKCD IN VARCHAR2,P_CTRCD IN VARCHAR2,
P_SUBCOUNTER IN VARCHAR2,P_LEDGERAMT IN NUMBER,P_OTHERAMT IN NUMBER,
P_REMARKS IN VARCHAR2,P_USERCODE IN VARCHAR2,P_UPDDATETIME IN DATE,
P_INFAVOF IN VARCHAR2,P_PRINTCNT IN NUMBER,P_REVHEADS IN VARCHAR2,
P_REVDETL_COUNT IN NUMBER,P_TRANNO IN VARCHAR2,P_DEPTRCPTNO OUT VARCHAR2,
P_ERRMSG OUT VARCHAR2) AS
V_DOCNO REV_HEAD.DOC_NO%TYPE;
V_HEADCD REV_DETL.REVHEAD_CD%TYPE;
V_AMT REV_DETL.AMT%TYPE;
V_POS NUMBER(3):=1;
V_TOKEN VARCHAR2(20);
v_sectcode varchar2(4);
v_sectcode1 varchar2(4);
v_can varchar2(9);
tot_amount_except Exception;
curdate date:=sysdate;
BEGIN
V_DOCNO:=CHKDGT('89');
P_DEPTRCPTNO:=V_DOCNO;
--DBMS_OUTPUT.PUT_LINE(V_DOCNO);
--Start Changes on 28/10/03
v_sectcode:=P_CURSECTN;
if length(trim(v_sectcode))<4 then
v_sectcode:=lpad(v_sectcode,4,'0');
end if;
--
Begin
--Select SECTION_CODE into v_sectcode1 from section_mast where
SECTION_CODE=v_sectcode;
Select FCODE into v_sectcode1 from sections where FCODE=v_sectcode;
Exception
When no_data_found then
v_sectcode:=null;
When Others then
v_sectcode:=null;
End;

Begin
Select M_CONSUMER_NO into v_can from Consumer_mast where M_CONSUMER_NO=P_CAN;
Exception
When no_data_found then
v_can:=null;
When Others then
v_can:=null;
End;
if P_DOCAMT <>(P_LEDGERAMT +P_OTHERAMT) then
raise tot_amount_except;
end if;

--End Changes on 28/10/03


INSERT INTO
REV_HEAD(DOC_NO,DOC_DT,DOC_TYPE,DOC_STATUS,CURSECTN,CAN,TRNCAN,TRNSECTCODE,DOC_AMT
,CONS_TYPE,
OP_BAL,REM_MODE,CHQ_NO,CHQ_DT,BANK_CD,CTR_CD,SUBCOUNTER,LEDGER_AMT,OTHER_AMT,
REMARKS,USER_CODE,UPD_DATE_TIME,INFAVOF,PRINTCNT,TRANS_NO) VALUES(V_DOCNO,
curdate,P_DOCTYPE,P_DOCSTATUS,
v_sectcode,v_can,P_CAN,P_CURSECTN,P_DOCAMT,P_CONSTYPE,P_OPBAL,P_REMMODE,P_CHQNO,
P_CHQDT,P_BANKCD,
P_CTRCD,P_SUBCOUNTER,P_LEDGERAMT,P_OTHERAMT,P_REMARKS,P_USERCODE,P_UPDDATETIME,
P_INFAVOF,P_PRINTCNT,P_TRANNO);
IF SQL%NOTFOUND THEN
P_ERRMSG:='ERROR WHILE INSERTING INTO REV_HEAD TABLE';
ELSE
INSERT INTO TEMP_RCT(DOC_NO,DOC_DT,NAME,HOUSENO,ADDRESS,LOCALITY,PINCODE)
VALUES(V_DOCNO,
curdate,P_NAME,P_HOUSENO,P_ADDRESS,
P_LOCALITY,P_PINCODE);
FOR CNT IN 1..P_REVDETL_COUNT
LOOP
V_TOKEN:=SUBSTR(P_REVHEADS,V_POS,INSTR(P_REVHEADS,'#',1,CNT)-V_POS);
V_POS:=INSTR(P_REVHEADS,'#',1,CNT)+1;
V_HEADCD:=SUBSTR(V_TOKEN,1,INSTR(V_TOKEN,',',1,1)-1);
V_AMT:=SUBSTR(V_TOKEN,INSTR(V_TOKEN,',',1,1)+1);
INSERT INTO REV_DETL(DOC_NO,DOC_DT,REVHEAD_CD,AMT,DOC_TYPE) VALUES(V_DOCNO,
curdate,V_HEADCD,V_AMT,P_DOCTYPE);
END LOOP;
END IF;

EXCEPTION
when tot_amount_except then
P_ERRMSG:='Document Amount should be equal to sum of Ledger and Non-Ledger
Amounts';

WHEN OTHERS THEN


P_ERRMSG := SQLCODE || '--' || SQLERRM;

END SAVE_NONCONSUMER;
/

S-ar putea să vă placă și