Skip to Main Content

SQL & PL/SQL

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Interested in getting your voice heard by members of the Developer Marketing team at Oracle? Check out this post for AppDev or this post for AI focus group information.

procedure to generate invoice in xml---please help

958384Aug 28 2012 — edited Aug 28 2012
Hi all,

I have to write code review of a pakage which contain procedure to generate invoice in XML.The procedure contain two
files .pkb and .pks.All i know is that it will deliver elemt of the post script layout.?But i dont understand what it mean nor i am able to understand the code.I dont have any prior knowledge about this.Please help me and tell me any tutorial to understand and know how this is done.


Also i have pasted some part of code here .please help me in understanding what is going on.


help help help
/*
 * GET_INVOICE_XML
 */
FUNCTION GET_INVOICE_XML(inInvId NUMBER) RETURN CLOB IS
BEGIN
  IF NOT isClobReady THEN
    dbms_lob.createtemporary(invClob, TRUE);
    isClobReady := TRUE;
  ELSE
    dbms_lob.trim(invClob, 0);
  END IF;

  vInvoice :=
    XML_VER_STR || NL ||
    ' <!DOCTYPE INVOICE_FILE SYSTEM "invoicfile.dtd">' || NL ||
    '<INVOICE_FILE VERSION="1.1">' || NL;

  GEN_PROLOG(InvId);

  GEN_INVOICE(InvId, 1);

  vInvoice := vInvoice ||
    '</INVOICE_FILE>' || NL || NL;

  APPEND_INVOICE(0);

  RETURN invClob;
END GET_INVOICE_XML;

PROCEDURE GEN_INVOICE(InvId NUMBER, inITBMode NUMBER) IS
vP1    PLS_INTEGER;
vP2    PLS_INTEGER;
vAtt     BOOLEAN;
inv      ABCINVOICE%ROWTYPE;
cdr_no   NUMBER;
t0       TIMESTAMP;
t1       TIMESTAMP;
execTime NUMBER(12,6);
BEGIN
  t0 := LOCALTIMESTAMP;

  SELECT * INTO inv FROM ABCINVOICE WHERE OACT = InvId;

  dti := inv.DTI;

  SELECT NVL(SUM(cdrNO),0) INTO cdr_no FROM ABCCONTRACTS WHERE OACT = InvId AND ITB IN ('Y', 'F');

  vInvoice := vInvoice ||
    ' <INVOICE>' || NL ||
    '  <HEADER>' || NL ||
    '   <SEQ>' || inv.SEQ || '/' || inv.PROC_ID || '</SEQ>' || NL ||
    '   <LEN ';

  vPos1 := INSTR(inv.LEN, '|', 1, 1);
  vInvoice := vInvoice || 'INV="' || SUBSTR(inv.LEN, 1, vPos1-1) || '" ';

  vPos2 := INSTR(inv.LEN, '|', vPos1+1, 1);
  vInvoice := vInvoice || 'BAL="' || SUBSTR(inv.LEN, vPos1+1, vPos2-vPos1-1) || '" ';

  vPos1 := INSTR(inv.LEN, '|', vPos2+1, 1);
  vInvoice := vInvoice || 'DET="' || SUBSTR(inv.LEN, vPos2+1, vPos1-vPos2-1) || '" ';

  vPos2 := INSTR(inv.LEN, '|', vPos1+1, 1);
  vInvoice := vInvoice || 'PDET="' || SUBSTR(inv.LEN, vPos1+1, vPos2-vPos1-1) || '" ';

  vPos1 := INSTR(inv.LEN, '|', vPos2+1, 1);
  vInvoice := vInvoice || 'ITM="' || SUBSTR(inv.LEN, vPos2+1, vPos1-vPos2-1) || '" ';

  vPos2 := INSTR(inv.LEN, '|', vPos1+1, 1);

  vInvoice := vInvoice || 'PITM="' || SUBSTR(inv.LEN, vPos1+1, vPos2-vPos1-1) || '" NTF="' ||
    SUBSTR(inv.LEN, vPos2+1) || '"/>' || NL;

  vInvoice := vInvoice ||
    '   <BAR>' || inv.BAR || '</BAR>' || NL ||
    '   <BCD>' || inv.BCD || '</BCD>' || NL ||
    CASE WHEN inv.BIC IS NULL THEN '' ELSE '   <BIC>' || inv.BIC || '</BIC>' || NL END ||
    '   <REF>' || inv.REF || '</REF>' || NL ||
    '   <OHX>' || inv.OHXACT || '</OHX>' || NL ||
    '   <CID>' || inv.CID || '</CID>' || NL ||
    '   <CCO>' || inv.CCO || '</CCO>' || NL ||
    '   <CND>' || inv.CND || '</CND>' || NL ||
    '   <PBF>' || inv.PBF || '</PBF>' || NL ||
    '   <DTI>' || inv.DTI || '</DTI>' || NL ||
    '   <DTD>' || inv.DTD || '</DTD>' || NL ||
    '   <DPS>' || inv.DPS || '</DPS>' || NL ||
    '   <DPE>' || inv.DPE || '</DPE>' || NL ||
    '   <DAS>' || inv.DAS || '</DAS>' || NL ||
    '   <DAE>' || inv.DAE || '</DAE>' || NL ||
    '   <PAY>' || inv.PAY || '</PAY>' || NL ||
    '   <NAM>' || ABCUTIL.CONVERT_POL_CHAR(inv.NAM) || '</NAM>' || NL ||
    CASE WHEN inv.ADS1 IS NULL THEN '' ELSE '   <ADS>' || ABCUTIL.CONVERT_POL_CHAR(inv.ADS1) || '</ADS>' || NL END ||
    CASE WHEN inv.ADS2 IS NULL THEN '' ELSE '   <ADS>' || ABCUTIL.CONVERT_POL_CHAR(inv.ADS2) || '</ADS>' || NL END ||
    '   <ADZ>' || ABCUTIL.CONVERT_POL_CHAR(inv.ADZ) || '</ADZ>' || NL ||
    '   <NIP>' || inv.NIP || '</NIP>' || NL ||
    '   <REG>' || inv.REG || '</REG>' || NL ||
    '   <PES>' || inv.PES || '</PES>' || NL ||
    '   <BCY>' || inv.BCY || '</BCY>' || NL ||
    '   <TXT>' || ABCUTIL.CONVERT_POL_CHAR(inv.TXT) || '</TXT>' || NL ||
    '   <GRO>' || TO_CHAR(inv.GRO, 'FM999990.90') || '</GRO>' || NL ||
    '   <FBL>' || inv.FBL || '</FBL>' || NL;



  IF inv.STP > 0 THEN
    GEN_TEXT(inInvId, 1);
  END IF;



  vInvoice := vInvoice ||
    '  </HEADER>' || NL ||
    '  <ADDRESS>' || NL ||
    '   <ENV>' || inv.ENV || '</ENV>' || NL ||
    '   <TNA>' || ABCUTIL.CONVERT_POL_CHAR(inv.TNA) || '</TNA>' || NL ||
    CASE WHEN inv.TAS1 IS NULL THEN '' ELSE '   <TAS>' || ABCUTIL.CONVERT_POL_CHAR(inv.TAS1) || '</TAS>' || NL END ||
    CASE WHEN inv.TAS2 IS NULL THEN '' ELSE '   <TAS>' || ABCUTIL.CONVERT_POL_CHAR(inv.TAS2) || '</TAS>' || NL END ||
    '   <TAZ>' ||ABCUTIL.CONVERT_POL_CHAR(inv.TAZ) || '</TAZ>' || NL;

  GEN_TEXT(inInvId, 2);

  vInvoice := vInvoice ||
    CASE WHEN inv.MTX  IS NULL THEN '' ELSE '   <MTX>' || inv.MTX  || '</MTX>' || NL END ||
    '  </ADDRESS>' || NL;

  APPEND_INVOICE(0);

  IF inv.BCY <> '99' THEN

    GEN_INVOICE_BILLING(inInvId);


    GEN_BALANCE(inInvId);

    vPos1 := INSTR(inv.LEN, '|', 1, 2) + 1;
    vPos2 := INSTR(inv.LEN, '|', vPos1, 1);
    vPos1 := SUBSTR(inv.LEN, vPos1, vPos2 - vPos1);

    IF vPos1 > 1 THEN
      GEN_SUMMARY(inInvId);
    END IF;

  END IF;


  vInvoice := vInvoice || ' </INVOICE>' || NL;

  APPEND_INVOICE(0);

END GEN_INVOICE;
Edited by: BluShadow on 28-Aug-2012 09:46
added {noformat}
{noformat} tags for readability. Please read: {message:id=9360002}                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Sep 25 2012
Added on Aug 28 2012
2 comments
166 views