Subversion Repositories DevTools

Rev

Rev 64 | Blame | Compare with Previous | Last modification | View Log | RSS feed

<%@LANGUAGE="VBSCRIPT"%>
<%
'=====================================================
'|                                                   |
'|                                Bom_Comparison                                 |
'|                                                   |
'=====================================================
%>
<%
Option explicit
Response.Expires = 0
%>
<!--#include file="common/globals.asp"-->
<!--#include file="common/config.asp"-->
<!--#include file="common/common_subs.asp"-->
<!--#include file="common/_bom_common.asp"-->
<!--#include file="controls/ERGFormComponent/classFormComponent.asp"-->
<%
'------------ ACCESS CONTROL ------------------
%>
<!--#include file="_access_control_general.asp"-->
<%
'------------ VARIABLE DEFINITION -------------
Dim rsQry, rsTemp
Dim aProductList
Dim parProd_id_select
Dim parShowall
Dim numOfRows
Dim rowNum
Dim objFormCollector
Dim objFormComponent
Dim sMessage
Dim ProdId
Dim ChangeType
Dim PkgVersion, CurrentPkgVersion, IsDisplay, Comments
Dim PkgId, OldProdId, OsId
'------------ CONSTANTS DECLARATION -----------
Const LIMG_UPDATED = "<img src='icons/i_updated.gif' width='11' height='11' hspace='2' vspace='2' border='0' align='absmiddle' title='Updated'>"
Const LIMG_ADDED = "<img src='icons/i_added.gif' width='11' height='11' border='0' hspace='2' vspace='2' align='absmiddle' title='Added'>"
Const LIMG_REMOVED = "<img src='icons/i_removed.gif' width='11' height='11' border='0' hspace='2' vspace='2' align='absmiddle' title='Removed'>"
Const LIMG_NOTE_NEW = "<img src='icons/i_note_new.gif' width='18' height='18' border='0' align='absmiddle'>"
Const LIMG_NOTE_EDIT = "<img src='icons/i_note_edit.gif' width='18' height='18' border='0' align='absmiddle'>"
'------------ VARIABLE INIT -------------------
parProd_id_select = Request("prod_id_select")
parShowall = Request("showall")
Set objFormCollector = CreateObject("Scripting.Dictionary")
Set objFormComponent = New FormComponent
'------------ CONDITIONS ----------------------
'----------------------------------------------
%>
<%
'--------------------------------------------------------------------------------------------------------------------------
Function AddTrailingZeros(byval n, byval count)
        if len(n) >= count then
                AddTrailingZeros = n
                exit function
        end if

        dim c, s, i
        c = count - len(n)

        for i = 1 to c
                s = s & "0"
        next
        s = cstr(n) & s

        AddTrailingZeros = s
End function
'--------------------------------------------------------------------------------------------------------------
Sub GetProductList ( nBom_id, nComparedBomId, outProductList, Flag )
        Dim rsQry, query, showAll
        
        '' Use SHOWALL parameter is BOM has old bom
        'showAll = "Y"
        'If nBom_id <> nComparedBomId Then
        '       showAll = parShowall
        'End If
        
        
        OraDatabase.Parameters.Add "BOM_ID",             nBom_id,                ORAPARM_INPUT, ORATYPE_NUMBER 
        OraDatabase.Parameters.Add "COMPARE_BOM_ID", nComparedBomId, ORAPARM_INPUT, ORATYPE_NUMBER 
        If Flag = "Less" Then
                Set rsQry = OraDatabase.DbCreateDynaset( GetQuery ("OrigBomCompare.sql"), ORADYN_DEFAULT )
        Else
                Set rsQry = OraDatabase.DbCreateDynaset( GetQuery ("SameProducts.sql"), ORADYN_DEFAULT )
        End If
        If rsQry.RecordCount > 0 Then
                outProductList = rsQry.GetRows()
        Else
                outProductList = NULL
        End If
        
        
        OraDatabase.Parameters.Remove "COMPARE_BOM_ID"
        OraDatabase.Parameters.Remove "BOM_ID"
End Sub
'--------------------------------------------------------------------------------------------------------------------------
Sub GetFormDetails ( nBom_id, ByRef outobjDetails )

        Call GetBomDetails ( nBom_id, outobjDetails )
        
        outobjDetails.Item("root_version") = GetRootVersion ( outobjDetails.Item("bom_version") )
        
        '-- Set compare_bom_id 
        If Request("compare_bom_id") <> "" Then
                outobjDetails.Item("compare_bom_id") =  Request("compare_bom_id")
        Else
                Dim rsQry, query, GetBomTree

                OraDatabase.Parameters.Add "BRANCH_ID",         objFormCollector.Item("rtag_id_fk"),    ORAPARM_INPUT, ORATYPE_NUMBER 
                OraDatabase.Parameters.Add "COMPARE_BOM_ID",    Request("bom_id"),      ORAPARM_INPUT, ORATYPE_NUMBER 
                
                Set rsQry = OraDatabase.DbCreateDynaset( GetQuery ("ProductionTreeCombo_Selected.sql"), ORADYN_DEFAULT )
        
                If rsQry.RecordCount > 0 Then
                'While (NOT rsQry.BOF) AND (NOT rsQry.EOF)
                        'If IsEmpty(GetBomTreeListMax) Then 
                        GetBomTree = rsQry("bom_id")
                        
                        'rsQry.MoveNext
                'Wend
        
                Else
                        GetBomTree = NULL
                
                End If
        

                OraDatabase.Parameters.Remove "BRANCH_ID"
                OraDatabase.Parameters.Remove "COMPARE_BOM_ID"

        
                rsQry.Close
                Set rsQry = Nothing
                
                outobjDetails.Item("compare_bom_id") = GetBomTree
        End If
        
End Sub
'--------------------------------------------------------------------------------------------------------------
Sub GetBomTreeListMax
        Dim rsQry, query, GetBomTree

        OraDatabase.Parameters.Add "BRANCH_ID",         objFormCollector.Item("rtag_id_fk"),    ORAPARM_INPUT, ORATYPE_NUMBER 
        OraDatabase.Parameters.Add "COMPARE_BOM_ID",    Request("bom_id"),      ORAPARM_INPUT, ORATYPE_NUMBER 
                
        Set rsQry = OraDatabase.DbCreateDynaset( GetQuery ("ProductionTreeCombo_Selected.sql"), ORADYN_DEFAULT )
        
        If rsQry.RecordCount > 0 Then
                'While (NOT rsQry.BOF) AND (NOT rsQry.EOF)
                        'If IsEmpty(GetBomTreeListMax) Then 
                GetBomTree = rsQry("bom_id")
                        
                        'rsQry.MoveNext
                'Wend
        
        Else
                GetBomTree = NULL
                
        End If
        

        OraDatabase.Parameters.Remove "BRANCH_ID"
        OraDatabase.Parameters.Remove "COMPARE_BOM_ID"

        
        rsQry.Close
        Set rsQry = Nothing
End Sub
'--------------------------------------------------------------------------------------------------------------
Function GetBomTreeList ()
        Dim rsQry, query

        OraDatabase.Parameters.Add "BRANCH_ID",         objFormCollector.Item("rtag_id_fk"),    ORAPARM_INPUT, ORATYPE_NUMBER 
        OraDatabase.Parameters.Add "COMPARE_BOM_ID",    Request("compare_bom_id"),      ORAPARM_INPUT, ORATYPE_NUMBER 
        Set rsQry = OraDatabase.DbCreateDynaset( GetQuery ("ProductionTreeCombo_Selected.sql"), ORADYN_DEFAULT )
        
        If rsQry.RecordCount > 0 Then
                GetBomTreeList = rsQry.GetRows()
                
        Else
                GetBomTreeList = NULL
                
        End If
        

        OraDatabase.Parameters.Remove "BRANCH_ID"
        OraDatabase.Parameters.Remove "COMPARE_BOM_ID"

        
        rsQry.Close
        Set rsQry = Nothing
End Function
'--------------------------------------------------------------------------------------------------------------
Function GetCompareBomDetails ( nBomId )
        Dim rsQry, query
        OraDatabase.Parameters.Add "BOM_ID",    nBomId, ORAPARM_INPUT, ORATYPE_NUMBER 
        
        Set rsQry = OraDatabase.DbCreateDynaset( GetQuery ("BomLocationDetails.sql"), ORADYN_DEFAULT )
        
        If rsQry.RecordCount > 0 Then
                GetCompareBomDetails = rsQry("proj_name") &"&nbsp;/&nbsp;"& rsQry("branch_name") &"&nbsp;/&nbsp;"& rsQry("bom_name") &"&nbsp;"& rsQry("bom_version") &"."& rsQry("bom_lifecycle")
                
        Else
                GetCompareBomDetails = NULL
                
        End If
        
        OraDatabase.Parameters.Remove "BOM_ID"
        
        rsQry.Close
        Set rsQry = Nothing
End Function
'--------------------------------------------------------------------------------------------------------------
%>
<%
'------------ RUN BEFORE PAGE RENDER ----------
objPMod.PersistInQryString ( Array("compare_bom_id") )

Call GetFormDetails ( dbPARbom_id, objFormCollector )
'----------------------------------------------
%>
<html>
<head>
<title>Production Manager</title>
<meta HTTP-EQUIV="Pragma" CONTENT="no-cache">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="scripts/deployment_manager.css" rel="stylesheet" type="text/css">
<script language="JavaScript" src="scripts/common.js"></script>
<script language="JavaScript" src="scripts/remote_scripting.js"></script>
<script language="JavaScript" type="text/javascript">
<!--

function RequestProductLocation( paramString, rowId ){
        var requestURL;
        
        // Product is changes, hence can be found in current bom
        requestURL = 'RequestBomDiffProductLocation.asp';
        

        // Show div
        ToggleDisplay( 'PRODUCT_'+ rowId, 'IMG_EXPAND_PRODUCT_' + rowId, 'IMG_COLLAPSE_PRODUCT_' + rowId );
        
        // Set ajax divname
        ajaxdivname = 'PRODUCT_'+ rowId;
        
        if ( MM_findObj( ajaxdivname ).innerHTML == '<%=enumLOADING%>') 
        {
        
                //Append the name to search for to the requestURL
                var url = requestURL + paramString;
                
                //Create the xmlHttp object to use in the request
                //stateChangeHandler will fire when the state has changed, i.e. data is received back
                // This is non-blocking (asynchronous)
                xmlHttp = GetXmlHttpObject(stateChangeHandler);
                
                //Send the xmlHttp get to the specified url
                xmlHttp_Get(xmlHttp, url);
                
        }
        
        
}

function MM_findObj(n, d) { //v4.0
  var p,i,x;
  if(!d) d=document; 
  if((p=n.indexOf("?"))>0&&parent.frames.length) {
        d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);
  }
  if(!(x=d[n])&&d.all) x=d.all[n]; 
  for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && document.getElementById) x=document.getElementById(n); 
  return x;
}

function DisplaySPAN(show, x) {
        if (show) {
                MM_findObj("spanHideDetails" + x).style.display = "block";
                MM_findObj("spanPkgInfo" + x).style.display = "block";
                MM_findObj("spanShowDetails" + x).style.display = "none";
        } else {
                MM_findObj("spanHideDetails" + x).style.display = "none";
                MM_findObj("spanPkgInfo" + x).style.display = "none";
                MM_findObj("spanShowDetails" + x).style.display = "block";
        }
}



//-->
</script>




</head>

<body leftmargin="0" topmargin="0">
<!-- HEADER ++++++++++++++++ -->
<!--#include file="_header.asp"-->
<!-- +++++++++++++++++++++++ -->
<!-- MAIN MENU  +  CRUMBS ++++++++++++++++ -->
<!--#include file="_main_menu.asp"-->
<!-- +++++++++++++++++++++++++++++++++++++ -->
<table width="100%"  border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td width="1%" valign="top" background="images/bg_bage_0.gif">
        <!-- NODE BROWSER ++++++++++++++++++++++ -->
        <!--#include file="_bom_browser.asp"-->
        <!-- END OF NODE BROWSER +++++++++++++++ -->
        </td>
    <td width="1" background="images/bg_bage_1.gif"><img src="images/spacer.gif" width="1" height="600"></td>
    <td width="100%" valign="top" bgcolor="#FFFFFF">
        <table width="100%"  border="0" cellspacing="0" cellpadding="0">
          <tr>
        <td valign="top" background="images/bg_green.gif"></td>
        <td align="right" valign="bottom" background="images/bg_green.gif" class="body_txtw"><%Call RenderTitleWithoutVersion( objBomCollector )%></td>
        <td background="images/bg_green.gif"><img src="images/spacer.gif" width="10" height="20"></td>
      </tr>
      <tr>
        <td width="1%" valign="top" background="images/bg_green.gif"></td>
        <td width="100%" valign="bottom" background="images/bg_green.gif">
                <!-- TAB CONTROLS ++++++++++++++++++++++ -->
                <!--#include file="_tabs_definition.asp"-->
                <%
                Set objTabControl = New TabControl
                objTabControl.TemplateDoc = ReadFile( Server.MapPath("controls/ERGTabStyleWinXP/tab_style.html") ) ' Supply tab style definition
                objTabControl.TabStyle = "StyleWinXP"
                objTabControl.AddTabDefnition ( arrBomTabDef )
                objTabControl.SelectByName("BOM Comparison")
                objTabControl.Render ()
                %>
                <!-- END OF TAB CONTROLS +++++++++++++++ -->
                </td>
        <td width="1%" background="images/bg_green.gif"><img src="images/spacer.gif" width="10" height="35"></td>
        </tr>
      <tr>
        <td background="images/bg_bage_0.gif"><img src="images/spacer.gif" width="30" height="10"></td>
        <td background="images/bg_bage_0.gif">
                <!-- BUTTONS CONTROL +++++++++++++++++++ -->

                <!-- +++++++++++++++++++++++++++++++++++ -->
                </td>
        <td background="images/bg_green.gif"><img src="images/p_bar_corrner.gif" width="17" height="42"></td>
        </tr>
      <tr>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td valign="top"><%If Request.Cookies( enumCOOKIE_NAME )( "user_bar" ) = "hide" Then%><a href="<%=SCRIPT_NAME%>?user_bar=<%=enumDEFAULT%>&<%=objPMod.ComposeURL()%>"><img src="icons/b_left.gif" title="Maximize favourits" width="13" height="13" vspace="5" border="0"></a><%End If%></td>
        </tr>
    </table>
        
<!-- PRODUCT REJECTED ------------------------------------------------------------------------------------------ -->    
        <%If objBomCollector.Item ("is_rejected") = enumDB_YES Then%>
        <table width="100%"  border="0" cellspacing="10" cellpadding="0">
      <tr>
        <td>
                <%
                        OraDatabase.Parameters.Add "ENTITY_ID",                 dbPARbom_id,    ORAPARM_INPUT, ORATYPE_NUMBER
                        OraDatabase.Parameters.Add "ENUM_ENTITY_TYPE",  "enumENTITY_TYPE_BOM",  ORAPARM_INPUT, ORATYPE_VARCHAR2
                        
                        Set rsQry = OraDatabase.DbCreateDynaset( GetQuery ("RejectionTrail.sql"), ORADYN_DEFAULT )
                        
                        
                        sMessage = "<table width='100%'  border='0' cellspacing='3' cellpadding='0'>"
                        sMessage = sMessage &"<tr>"
                        sMessage = sMessage &"<td width='100%' class='body_txt'><b>BOM is REJECTED!</b><br><br><br></td>"
                        sMessage = sMessage &"<td width='1%' nowrap valign='bottom' align='right'><a href='javascript:;' onClick=""MM_openBrWindow('wBomRejectNote.asp?rfile="& SCRIPT_NAME &"&"& objPMod.ComposeURL() &"','BomRejectNote','scrollbars=yes,resizable=yes,width=600,height=350');""  class='body_smllink' title='Create new note'>Create Note"& LIMG_NOTE_NEW &"</a></td>"
                        sMessage = sMessage &"</tr>"
                        
                        While (NOT rsQry.BOF) AND (NOT rsQry.EOF)
                                sMessage = sMessage & "<tr><td colspan='2' background='images/bg_table_border.gif'><img src='images/spacer.gif' width='1' height='1'></td></tr>"
                                sMessage = sMessage &"<tr>"
                                sMessage = sMessage &"<td class='body_txt'>"
                                If rsQry("is_rejected") = enumDB_YES Then
                                        sMessage = sMessage &"BOM is REJECTED!<br>"
                                Else
                                        sMessage = sMessage &"BOM is Accepted!<br>"
                                End If
                                sMessage = sMessage & objFormater.TextToHTML( rsQry("comments") ) &"<br><SPAN class='body_smltxtg'>"& rsQry("creator") &"</SPAN></td>"
                                sMessage = sMessage &"<td nowrap valign='bottom' align='right'><a href='javascript:;' onClick=""MM_openBrWindow('wBomRejectNote.asp?reject_seq="& rsQry("reject_seq") &"&rfile="& SCRIPT_NAME &"&"& objPMod.ComposeURL() &"','BomRejectNote','scrollbars=yes,resizable=yes,width=600,height=350');"" class='body_smllink' title='Edit note'>Edit Note"& LIMG_NOTE_EDIT &"</a></td>"
                                sMessage = sMessage &"</tr>"
                                
                                rsQry.MoveNext
                        WEnd
                        rsQry.Close
                        
                        sMessage = sMessage &"</table>"
                        
                        Call Messenger ( sMessage, "bi_rejected.gif", "100%" )
                        
                        Response.write "<br>"
                        
                        
                        OraDatabase.Parameters.Remove "ENTITY_ID"
                        OraDatabase.Parameters.Remove "ENUM_ENTITY_TYPE"
                %>
                
                </td>
        </tr>
    </table>
        <%End If%>      
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->     

        
        <table width="100%"  border="0" cellspacing="10" cellpadding="0">

          <tr>
        <td width="1"><img src="images/spacer.gif" width="1" height="1"></td>
        <td width="100%"><img src="images/spacer.gif" width="1" height="1"></td>
      </tr>
          
          <!-- BOM Comments +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
          <%If (objBomCollector.Item("bom_comments") <> "") Then%>
      <tr>
        <td align="right" valign="top"><img src="icons/i_bom_properties.gif" width="30" height="30" hspace="3"></td>
        <td valign="top" class="body_txt">
                
                
                        <SPAN class="body_colb">BOM Comments</SPAN>
                        <hr width="100%" size="1px" noshade color="#808080">
                        <SPAN class="body_txt"><%= objFormater.TextToHTML( objBomCollector.Item("bom_comments") )%></SPAN><br><br><br><br>
        </td>
      </tr>
          <%End If%>
          
          
          <!-- COMPARE BOM +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
      <tr>
        <td align="right" valign="top"><img src="icons/i_bom_diff.gif" width="37" height="33" hspace="3"></td>
        <td valign="top" class="body_txt">
                
                <%
                '-- FROM START --------------------------------------------------------------------------------------------------------------
                objFormComponent.FormName = "OldVersion"
                objFormComponent.Action = SCRIPT_NAME
                objFormComponent.Method = "get"
                Call objFormComponent.FormStart()
                %>      
                <SPAN class="body_colb"><%Call RenderTitle( objBomCollector )%><br>compared with <%= GetCompareBomDetails( objFormCollector.Item("compare_bom_id") ) %></SPAN><br>
            <hr width="100%" size="1px" noshade color="#808080"><br>
                
                <SPAN class="body_txt">Show changes since BOM version&nbsp;</SPAN>
                <%=objFormComponent.Combo ( "compare_bom_id", GetBomTreeList(), False, "class='form_ivalue'" )%>
                <%=objPMod.ComposeHiddenTagsWithout("compare_bom_id")%>
                <%=objFormComponent.SubmitButton ( "Compare", "class='form_btn'" )%><br><br>

                <SPAN class="body_txtr"><b>Products/Patches Existing in <%= GetCompareBomDetails( objFormCollector.Item("compare_bom_id") ) %> but not yet deployed in Production BOM</b></SPAN><br>
                <SPAN id="spanShowDetails1" name="spanShowDetails" class="body_rowlite"><a href="javascript:;" class="body_rowlite" onClick="DisplaySPAN(true,'1');"><b>Display...</b></a><br><br></SPAN>
                <SPAN id="spanHideDetails1" name="spanHideDetails" style="display:none;"><a href="javascript:;" class="body_rowlite" onClick="DisplaySPAN(false,'1');"><b>Hide...</b></a><br><br></SPAN>
                

                
                <SPAN id="spanPkgInfo1" name="spanPkgInfo" style="display:none;">
                <table width="100%"  border="0" cellspacing="2" cellpadding="0">
          <tr>

                        <td width="20%" background="images/bg_table_border.gif"><table width="100%"  border="0" cellspacing="1" cellpadding="2">
              <tr>
                <td align="left" nowrap background="images/bg_table_col.gif" class="body_col">Product</td>
              </tr>
            </table></td>
                        <td width="20%" nowrap align="left" background="images/bg_table_col.gif" class="body_col">Version</td>
                        <td width="60%" nowrap align="left" background="images/bg_table_col.gif" class="body_col">Comments</td>
                        <td width="60%" nowrap align="left" background="images/bg_table_col.gif" class="body_col">Approval</td>
          </tr>
                  <%
                  Call GetProductList ( dbPARbom_id, objFormCollector.Item("compare_bom_id"), aProductList, "Less" )
                  
                  If NOT IsNull( aProductList ) Then
                        numOfRows = UBound( aProductList, 2 )
                        
                        For rowNum = 0 To numOfRows
                                
                                ProdId = aProductList( 0, rowNum )
                                ChangeType = aProductList( 3, rowNum )
                                PkgVersion = aProductList( 2, rowNum )
                                PkgId = aProductList( 6, rowNum )
                        If      ChangeType      =       "A"     or      ChangeType      =       "U"     Then    
                        
                        
                                OraDatabase.Parameters.Add "PRODUCTION_BOM", dbPARbom_id, ORAPARM_INPUT, ORATYPE_NUMBER
                                OraDatabase.Parameters.Add "PKG_ID", PkgId, ORAPARM_INPUT, ORATYPE_NUMBER
                        
                                Set rsQry = OraDatabase.DbCreateDynaset(GetQuery("ProdVersion.sql"), ORADYN_DEFAULT)
                                
                                OldProdId = rsQry("prod_id")
                                CurrentPkgVersion = rsQry("pkg_version")
                                Comments = rsQry("comments")
                                
                                OraDatabase.Parameters.Remove "PRODUCTION_BOM"
                                OraDatabase.Parameters.Remove "PKG_ID"  
                                IsDisplay = True
                                
                                Dim MajorA, MajorB, MinorA, MinorB, PatchA, PatchB, pos
                                                MajorA = NULL
                                                MajorB = NULL
                                                MinorA = NULL
                                                MinorB = NULL
                                                PatchA = NULL
                                                PatchB = NULL
                                                
                                ' Find the first occurence of the dot in package version A
                                                pos = InStr(PkgVersion, ".")
                                                If pos <> 0 Then
                                                        ' Extract the Major Version for A
                                                        MajorA = Mid(PkgVersion, 1, pos - 1)
                                                        ' Delete the Major Version Value from the string to get the minor and patch version
                                                        PkgVersion = Mid(PkgVersion, pos + 1, Len(PkgVersion))
                                                        ' Find the second occurence of the dot in package version A
                                                        pos = InStr(PkgVersion, ".")
                                                        ' Extract the Minor Version for A
                                                        If pos <> 0 Then
                                                                MinorA = Mid(PkgVersion, 1, pos - 1)
                                                                ' Delete the Minor Version value from the string to get the patch version
                                                                PkgVersion = Mid(PkgVersion, pos + 1, Len(PkgVersion))
                                                                ' Find the last occurence of the dot in package version A
                                                                pos = InStr(PkgVersion, ".")
                                                                If pos <> 0 Then
                                                                        ' Extract the Patch Version for A
                                                                        PatchA = Mid(PkgVersion, 1, pos - 1)
                                                                End If  
                                                        End If  
                                                End If  
                                                                        
                                                ' Find the first occurence of the dot in package version B
                                                pos = InStr(CurrentPkgVersion, ".")
                                                If pos <> 0 Then
                                                        ' Extract the Major Version for B
                                                        MajorB = Mid(CurrentPkgVersion, 1, pos - 1)
                                                        ' Delete the Major Version Value from the string to get the minor and patch version
                                                        CurrentPkgVersion = Mid(CurrentPkgVersion, pos + 1, Len(CurrentPkgVersion))
                                                        ' Find the second occurence of the dot in package version B
                                                        pos = InStr(CurrentPkgVersion, ".")
                                                        ' Extract the Minor Version for B
                                                        If pos <> 0 Then
                                                                MinorB = Mid(CurrentPkgVersion, 1, pos - 1)
                                                                ' Delete the Minor Version value from the string to get the patch version
                                                                CurrentPkgVersion = Mid(CurrentPkgVersion, pos + 1, Len(CurrentPkgVersion))
                                                                ' Find the last occurence of the dot in package version B
                                                                pos = InStr(CurrentPkgVersion, ".")
                                                                        If pos <> 0 Then
                                                                        ' Extract the Patch Version for B
                                                                        PatchB = Mid(CurrentPkgVersion, 1, pos - 1)
                                                                End If
                                                        End If
                                                End If
                                                
                                                If NOT isNull(PatchA) AND NOT isNull(PatchB) Then
                                                        If len(PatchA) < 4 Then PatchA = AddTrailingZeros(PatchA, 4)
                                                        If len(PatchB) < 4 Then PatchB = AddTrailingZeros(PatchB, 4)
                                                End If 
                                                
                                                If MajorA = MajorB Then
                                                        If MinorA = MinorB Then
                                                                If IsNumeric(PatchA) AND IsNumeric(PatchB) Then
                                                                        
                                                                        If CDbl(PatchB) > CDbl(PatchA) Then
                                                                                IsDisplay = False
                                                                        Else                                                                            
                                                                                IsDisplay = True
                                                                        End If
                                                                End If
                                                        Else
                                                                If IsNumeric(MinorA) AND IsNumeric(MinorB) Then
                                                                        If CInt(MinorB) > CInt(MinorA) Then
                                                                                IsDisplay = False
                                                                        Else
                                                                                IsDisplay = True                                                                
                                                                        End If                                                                  
                                                                End If
                                                        End If
                                                Else
                                                        If IsNumeric(MajorA) AND IsNumeric(MajorB) Then
                                                                If      CInt(MajorB) > CInt(MajorA) Then
                                                                        IsDisplay = False
                                                                Else
                                                                        IsDisplay = True
                                                                End If  
                                                        End If
                                                End If          
                                
                        If IsDisplay Then                                                       
                  %>
                  <tr>
            <td nowrap valign="top" class="menu_link">
                        <%

                        Set rsTemp = OraDatabase.DbCreateDynaset("SELECT * FROM PACKAGE_VERSIONS PV, PRODUCT_DETAILS PD WHERE PD.PROD_ID(+) = PV.PV_ID AND PV.PV_ID ="&ProdId, ORADYN_DEFAULT )
                        %>
                        <%=GetProductIcon( rsTemp ) &  aProductList( 1, rowNum )%>
                        <%
                        rsTemp.Close()
                        Set rsTemp = nothing
                        %>
                        </td>
            <td nowrap class="body_row" valign="top"><%=aProductList( 2, rowNum )%></td>
                        <td class="body_rowlite"><%=Comments%></td>
<%
                        Dim rsForm
                        Set rsForm = OraDatabase.DbCreateDynaset("SELECT * FROM RELEASE_AUTHORISATION WHERE PV_ID="&ProdId&" AND BOM_ID="&Request("bom_id"), ORADYN_DEFAULT)
                        
                        %>
                        <%If rsForm.RecordCount = 0 Then%>
        
                                        <td class="body_txtr">Awaiting Approval</td>
        
                        <%ElseIf IsNull(rsForm("is_official")) Then%>
        
                                <%If NOT IsNull(rsForm("tester_id"))Then%>
                                        <td class="body_txto">Tester Approved</td>
                                <%End If%>
                        <%Else%>
                                <td class="body_txtg">Approved</td>
                        <%End If

                        rsForm.Close()
                        Set rsForm = nothing
                        %>                      
          </tr>
                
                  <tr>
                                <td><img src="images/spacer.gif" width="1" height="1"></td>
                    <td nowrap valign="top" class="body_row" colspan="3">
                                <DIV id="PRODUCT_<%=ProdId & ChangeType%>" name="PRODUCT_<%=ProdId & ChangeType%>" style="display:none;"><%=enumLOADING%></DIV>
                                </td>
                  </tr>
                                  
                  <%If rowNum <> numOfRows Then%>
                  <tr>
            <td colspan="4" background="images/bg_table_border.gif"><img src="images/spacer.gif" width="1" height="1"></td>
          </tr>
                  <%End If%>
                   
                  <%End If%>
                  <%
                        rsQry.Close()
                        Set rsQry = Nothing
                        End If
                  
                        Next
                  Else%>
                  
                  <tr>
            <td colspan="4" class="body_txt">No Changes Found.</td>
          </tr>
                  
                  <%End If%>
                  </table>
                  <br>
                  <br>
                 </SPAN>
                  
                <SPAN class="body_txtr"><b>Products/Patches Existing in <%= GetCompareBomDetails( objFormCollector.Item("compare_bom_id") ) %> And Production BOM</b></SPAN><br>                  
                <SPAN id="spanShowDetails2" name="spanShowDetails" class="body_rowlite"><a href="javascript:;" class="body_rowlite" onClick="DisplaySPAN(true,'2');"><b>Display...</b></a><br><br></SPAN>
                <SPAN id="spanHideDetails2" name="spanHideDetails" style="display:none;"><a href="javascript:;" class="body_rowlite" onClick="DisplaySPAN(false,'2');"><b>Hide...</b></a><br><br></SPAN>  

                <SPAN id="spanPkgInfo2" name="spanPkgInfo" style="display:none;">

                <table width="100%"  border="0" cellspacing="2" cellpadding="0">

          <tr>

                        <td width="20%" background="images/bg_table_border.gif"><table width="100%"  border="0" cellspacing="1" cellpadding="2">
              <tr>
                <td align="left" nowrap background="images/bg_table_col.gif" class="body_col">Product</td>
              </tr>
            </table></td>
                        <td width="20%" nowrap align="left" background="images/bg_table_col.gif" class="body_col">Version</td>
                        <td width="60%" nowrap align="left" background="images/bg_table_col.gif" class="body_col"></td>
          </tr>
                  <%
                  Call GetProductList ( dbPARbom_id, objFormCollector.Item("compare_bom_id"), aProductList, "Equal" )
                  
                  If NOT IsNull( aProductList ) Then'2
                        numOfRows = UBound( aProductList, 2 )
                        
                        For rowNum = 0 To numOfRows
                                
                                ProdId = aProductList( 0, rowNum )

                                PkgVersion = aProductList( 1, rowNum )
                                PkgId = aProductList( 2, rowNum )
                                                                        
                  %>
                  <tr>
            <td nowrap valign="top" class="menu_link">
                        <%
                        
                        Set rsTemp = OraDatabase.DbCreateDynaset("SELECT * FROM PACKAGE_VERSIONS PV, PRODUCT_DETAILS PD WHERE PD.PROD_ID(+) = PV.PV_ID AND PV.PV_ID ="&ProdId, ORADYN_DEFAULT )
                        %>
                        <%=GetProductIcon( rsTemp ) &  aProductList( 3, rowNum )%>
                        <%
                        rsTemp.Close()
                        Set rsTemp = nothing
                        %>
                        </td>
            <td nowrap class="body_row" valign="top"><%=aProductList( 1, rowNum )%></td>
                        <td class="body_rowlite"></td>
          </tr>
                
                  <tr>
                                <td><img src="images/spacer.gif" width="1" height="1"></td>
                    <td nowrap valign="top" class="body_row" colspan="3">
                                <DIV id="PRODUCT_<%=ProdId & ChangeType%>" name="PRODUCT_<%=ProdId & ChangeType%>" style="display:none;"><%=enumLOADING%></DIV>
                                </td>
                  </tr>
                                  
                  <%If rowNum <> numOfRows Then'1%>
                  <tr>
            <td colspan="4" background="images/bg_table_border.gif"><img src="images/spacer.gif" width="1" height="1"></td>
          </tr>
                  <%End If'1%>
                   
                
                  <%

                
                  
                        Next
                  Else%>
                  
                  <tr>
            <td colspan="4" class="body_txt">No Changes Found.</td>
          </tr>
                  
                  <%End If'2%>
                </table>
                <br>
                <br>
                </SPAN>
                
                <SPAN class="body_txtr"><b>Products/Patches Existing in <%= GetCompareBomDetails( objFormCollector.Item("compare_bom_id") ) %> but Superceeded in Production BOM</b></SPAN><br>           
                <SPAN id="spanShowDetails3" name="spanShowDetails" class="body_rowlite"><a href="javascript:;" class="body_rowlite" onClick="DisplaySPAN(true,'3');"><b>Display...</b></a><br><br></SPAN>
                <SPAN id="spanHideDetails3" name="spanHideDetails" style="display:none;"><a href="javascript:;" class="body_rowlite" onClick="DisplaySPAN(false,'3');"><b>Hide...</b></a><br><br></SPAN>  

                <SPAN id="spanPkgInfo3" name="spanPkgInfo" style="display:none;">        
                
                <table width="100%"  border="0" cellspacing="2" cellpadding="0">
        
                
          <tr>

                        <td width="20%" background="images/bg_table_border.gif"><table width="100%"  border="0" cellspacing="1" cellpadding="2">
              <tr>
                <td align="left" nowrap background="images/bg_table_col.gif" class="body_col">Product</td>
              </tr>
            </table></td>
                        <td width="20%" nowrap align="left" background="images/bg_table_col.gif" class="body_col">Version</td>
                        <td width="60%" nowrap align="left" background="images/bg_table_col.gif" class="body_col"></td>
          </tr>
                  <%
                  Call GetProductList ( dbPARbom_id, objFormCollector.Item("compare_bom_id"), aProductList, "Less" )
                  
                  If NOT IsNull( aProductList ) Then
                        numOfRows = UBound( aProductList, 2 )
                        
                        For rowNum = 0 To numOfRows
                                
                                ProdId = aProductList( 0, rowNum )
                                ChangeType = aProductList( 3, rowNum )
                                PkgVersion = aProductList( 2, rowNum )
                                PkgId = aProductList( 6, rowNum )
                        If      ChangeType      =       "A"     or      ChangeType      =       "U"     Then    
                        
                        
                        
                                OraDatabase.Parameters.Add "PRODUCTION_BOM", dbPARbom_id, ORAPARM_INPUT, ORATYPE_NUMBER
                                OraDatabase.Parameters.Add "PKG_ID", PkgId, ORAPARM_INPUT, ORATYPE_NUMBER
                        
                                Set rsQry = OraDatabase.DbCreateDynaset(GetQuery("ProdVersion.sql"), ORADYN_DEFAULT)
                                
                                OldProdId = rsQry("prod_id")
                                CurrentPkgVersion = rsQry("pkg_version")
                                Comments = rsQry("comments")
                                
                                OraDatabase.Parameters.Remove "PRODUCTION_BOM"
                                OraDatabase.Parameters.Remove "PKG_ID"  
                                IsDisplay = True
                                
                                                MajorA = NULL
                                                MajorB = NULL
                                                MinorA = NULL
                                                MinorB = NULL
                                                PatchA = NULL
                                                PatchB = NULL
                                                
                                ' Find the first occurence of the dot in package version A
                                                pos = InStr(PkgVersion, ".")
                                                If pos <> 0 Then
                                                        ' Extract the Major Version for A
                                                        MajorA = Mid(PkgVersion, 1, pos - 1)
                                                        ' Delete the Major Version Value from the string to get the minor and patch version
                                                        PkgVersion = Mid(PkgVersion, pos + 1, Len(PkgVersion))
                                                        ' Find the second occurence of the dot in package version A
                                                        pos = InStr(PkgVersion, ".")
                                                        ' Extract the Minor Version for A
                                                        If pos <> 0 Then
                                                                MinorA = Mid(PkgVersion, 1, pos - 1)
                                                                ' Delete the Minor Version value from the string to get the patch version
                                                                PkgVersion = Mid(PkgVersion, pos + 1, Len(PkgVersion))
                                                                ' Find the last occurence of the dot in package version A
                                                                pos = InStr(PkgVersion, ".")
                                                                If pos <> 0 Then
                                                                        ' Extract the Patch Version for A
                                                                        PatchA = Mid(PkgVersion, 1, pos - 1)
                                                                End If  
                                                        End If  
                                                End If  
                                                                        
                                                ' Find the first occurence of the dot in package version B
                                                pos = InStr(CurrentPkgVersion, ".")
                                                If pos <> 0 Then
                                                        ' Extract the Major Version for B
                                                        MajorB = Mid(CurrentPkgVersion, 1, pos - 1)
                                                        ' Delete the Major Version Value from the string to get the minor and patch version
                                                        CurrentPkgVersion = Mid(CurrentPkgVersion, pos + 1, Len(CurrentPkgVersion))
                                                        ' Find the second occurence of the dot in package version B
                                                        pos = InStr(CurrentPkgVersion, ".")
                                                        ' Extract the Minor Version for B
                                                        If pos <> 0 Then
                                                                MinorB = Mid(CurrentPkgVersion, 1, pos - 1)
                                                                ' Delete the Minor Version value from the string to get the patch version
                                                                CurrentPkgVersion = Mid(CurrentPkgVersion, pos + 1, Len(CurrentPkgVersion))
                                                                ' Find the last occurence of the dot in package version B
                                                                pos = InStr(CurrentPkgVersion, ".")
                                                                        If pos <> 0 Then
                                                                        ' Extract the Patch Version for B
                                                                        PatchB = Mid(CurrentPkgVersion, 1, pos - 1)
                                                                End If
                                                        End If
                                                End If
                                                
                                                If NOT isNull(PatchA) AND NOT isNull(PatchB) Then
                                                        If len(PatchA) < 4 Then PatchA = AddTrailingZeros(PatchA, 4)
                                                        If len(PatchB) < 4 Then PatchB = AddTrailingZeros(PatchB, 4)
                                                End If 
                                                
                                                If MajorA = MajorB Then
                                                        If MinorA = MinorB Then
                                                                If IsNumeric(PatchA) AND IsNumeric(PatchB) Then
                                                                        
                                                                        If CDbl(PatchB) > CDbl(PatchA) Then
                                                                                IsDisplay = False
                                                                        Else                                                                            
                                                                                IsDisplay = True
                                                                        End If
                                                                End If
                                                        Else
                                                                If IsNumeric(MinorA) AND IsNumeric(MinorB) Then
                                                                        If CInt(MinorB) > CInt(MinorA) Then
                                                                                IsDisplay = False
                                                                        Else
                                                                                IsDisplay = True                                                                
                                                                        End If                                                                  
                                                                End If
                                                        End If
                                                Else
                                                        If IsNumeric(MajorA) AND IsNumeric(MajorB) Then
                                                                If      CInt(MajorB) > CInt(MajorA) Then
                                                                        IsDisplay = False
                                                                Else
                                                                        IsDisplay = True
                                                                End If  
                                                        End If
                                                End If          
                        
                If NOT IsDisplay Then                                                           
                  %>
                  <tr>
            <td nowrap valign="top" class="menu_link">
                        <%
                        
                        Set rsTemp = OraDatabase.DbCreateDynaset("SELECT * FROM PACKAGE_VERSIONS PV, PRODUCT_DETAILS PD WHERE PD.PROD_ID(+) = PV.PV_ID AND PV.PV_ID ="&ProdId, ORADYN_DEFAULT )
                        %>
                        <%=GetProductIcon( rsTemp ) &  aProductList( 1, rowNum )%>
                        <%
                        rsTemp.Close()
                        Set rsTemp = nothing
                        %>
                        </td>
            <td nowrap class="body_row" valign="top"><%=aProductList( 2, rowNum )%></td>
                        <td class="body_rowlite"><%=Comments%></td>
          </tr>
                
                  <tr>
                                <td><img src="images/spacer.gif" width="1" height="1"></td>
                    <td nowrap valign="top" class="body_row" colspan="3">
                                <DIV id="PRODUCT_<%=ProdId & ChangeType%>" name="PRODUCT_<%=ProdId & ChangeType%>" style="display:none;"><%=enumLOADING%></DIV>
                                </td>
                  </tr>
                                  
                  <%If rowNum <> numOfRows Then%>
                  <tr>
            <td colspan="4" background="images/bg_table_border.gif"><img src="images/spacer.gif" width="1" height="1"></td>
          </tr>
                  <%End If%>
                   
                  <%End If%>
                  <%
                        rsQry.Close()
                        Set rsQry = Nothing
                        End If
                  
                        Next
                  Else%>
                  
                  <tr>
            <td colspan="4" class="body_txt">No Changes Found.</td>
          </tr>
                  
                  <%End If%>
                  
                
        

  
          <tr>
            <td colspan="4" background="images/bg_table_border.gif">
                         <table width="100%"  border="0" cellspacing="1" cellpadding="2">
              <tr>
                <td nowrap background="images/bg_table_col.gif"><img src="images/spacer.gif" width="1" height="1"></td>
              </tr>
             </table>
                        </td>
          </tr>
         </table>       
                 </SPAN>
                <%
                Call objFormComponent.FormEnd()
                '-- FROM END ----------------------------------------------------------------------------------------------------------------
                %>
                
            </td>
      </tr>
    </table></td>
    <td width="1%" valign="top" background="images/bg_favourits.gif">
        <%If Request.Cookies( enumCOOKIE_NAME )( "user_bar" ) <> "hide" Then%>

        <%End If%>
   </td>
  </tr>
  <tr>
    <td background="images/bg_bage_0a.gif"><img src="images/spacer.gif" width="1" height="15"></td>
    <td background="images/bg_bage_1.gif"><img src="images/spacer.gif" width="1" height="1"></td>
    <td bgcolor="#FFFFFF"><img src="images/spacer.gif" width="1" height="1"></td>
    <td bgcolor="#FFFFFF"><img src="images/spacer.gif" width="1" height="1"></td>
  </tr>
  <tr>
    <td bgcolor="#FFFFFF"><img src="images/spacer.gif" width="1" height="20"></td>
    <td bgcolor="#FFFFFF"><img src="images/spacer.gif" width="1" height="1"></td>
    <td bgcolor="#FFFFFF"><img src="images/spacer.gif" width="1" height="1"></td>
    <td bgcolor="#FFFFFF">&nbsp;</td>
  </tr>
</table>
<!-- FOOTER ++++++++++++++++ -->
<!--#include file="_footer.asp"-->
<!-- +++++++++++++++++++++++ -->
</body>
</html>
<%
'------------ RUN AFTER PAGE RENDER -----------
Set objPMod = Nothing
Set objCrumbs = Nothing
Set objTabControl = Nothing
'----------------------------------------------
%><!--#include file="common/globals_destructor.asp"-->