Rev 62 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
<%@LANGUAGE="VBSCRIPT"%><%'====================================================='| |'| Bom_Comparison |'| |'=====================================================%><%Option explicitResponse.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, rsTempDim aProductListDim parProd_id_selectDim parShowallDim numOfRowsDim rowNumDim objFormCollectorDim objFormComponentDim sMessageDim ProdIdDim ChangeTypeDim PkgVersion, CurrentPkgVersion, IsDisplay, CommentsDim 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 thenAddTrailingZeros = nexit functionend ifdim c, s, ic = count - len(n)for i = 1 to cs = s & "0"nexts = cstr(n) & sAddTrailingZeros = sEnd 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 IfOraDatabase.Parameters.Add "BOM_ID", nBom_id, ORAPARM_INPUT, ORATYPE_NUMBEROraDatabase.Parameters.Add "COMPARE_BOM_ID", nComparedBomId, ORAPARM_INPUT, ORATYPE_NUMBERIf Flag = "Less" ThenSet rsQry = OraDatabase.DbCreateDynaset( GetQuery ("OrigBomCompare.sql"), ORADYN_DEFAULT )ElseSet rsQry = OraDatabase.DbCreateDynaset( GetQuery ("SameProducts.sql"), ORADYN_DEFAULT )End IfIf rsQry.RecordCount > 0 ThenoutProductList = rsQry.GetRows()ElseoutProductList = NULLEnd IfOraDatabase.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_idIf Request("compare_bom_id") <> "" ThenoutobjDetails.Item("compare_bom_id") = Request("compare_bom_id")ElseDim rsQry, query, GetBomTreeOraDatabase.Parameters.Add "BRANCH_ID", objFormCollector.Item("rtag_id_fk"), ORAPARM_INPUT, ORATYPE_NUMBEROraDatabase.Parameters.Add "COMPARE_BOM_ID", Request("bom_id"), ORAPARM_INPUT, ORATYPE_NUMBERSet 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) ThenGetBomTree = rsQry("bom_id")'rsQry.MoveNext'WendElseGetBomTree = NULLEnd IfOraDatabase.Parameters.Remove "BRANCH_ID"OraDatabase.Parameters.Remove "COMPARE_BOM_ID"rsQry.CloseSet rsQry = NothingoutobjDetails.Item("compare_bom_id") = GetBomTreeEnd IfEnd Sub'--------------------------------------------------------------------------------------------------------------Sub GetBomTreeListMaxDim rsQry, query, GetBomTreeOraDatabase.Parameters.Add "BRANCH_ID", objFormCollector.Item("rtag_id_fk"), ORAPARM_INPUT, ORATYPE_NUMBEROraDatabase.Parameters.Add "COMPARE_BOM_ID", Request("bom_id"), ORAPARM_INPUT, ORATYPE_NUMBERSet 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) ThenGetBomTree = rsQry("bom_id")'rsQry.MoveNext'WendElseGetBomTree = NULLEnd IfOraDatabase.Parameters.Remove "BRANCH_ID"OraDatabase.Parameters.Remove "COMPARE_BOM_ID"rsQry.CloseSet rsQry = NothingEnd Sub'--------------------------------------------------------------------------------------------------------------Function GetBomTreeList ()Dim rsQry, queryOraDatabase.Parameters.Add "BRANCH_ID", objFormCollector.Item("rtag_id_fk"), ORAPARM_INPUT, ORATYPE_NUMBEROraDatabase.Parameters.Add "COMPARE_BOM_ID", Request("compare_bom_id"), ORAPARM_INPUT, ORATYPE_NUMBERSet rsQry = OraDatabase.DbCreateDynaset( GetQuery ("ProductionTreeCombo_Selected.sql"), ORADYN_DEFAULT )If rsQry.RecordCount > 0 ThenGetBomTreeList = rsQry.GetRows()ElseGetBomTreeList = NULLEnd IfOraDatabase.Parameters.Remove "BRANCH_ID"OraDatabase.Parameters.Remove "COMPARE_BOM_ID"rsQry.CloseSet rsQry = NothingEnd Function'--------------------------------------------------------------------------------------------------------------Function GetCompareBomDetails ( nBomId )Dim rsQry, queryOraDatabase.Parameters.Add "BOM_ID", nBomId, ORAPARM_INPUT, ORATYPE_NUMBERSet rsQry = OraDatabase.DbCreateDynaset( GetQuery ("BomLocationDetails.sql"), ORADYN_DEFAULT )If rsQry.RecordCount > 0 ThenGetCompareBomDetails = rsQry("proj_name") &" / "& rsQry("branch_name") &" / "& rsQry("bom_name") &" "& rsQry("bom_version") &"."& rsQry("bom_lifecycle")ElseGetCompareBomDetails = NULLEnd IfOraDatabase.Parameters.Remove "BOM_ID"rsQry.CloseSet rsQry = NothingEnd 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 bomrequestURL = 'RequestBomDiffProductLocation.asp';// Show divToggleDisplay( 'PRODUCT_'+ rowId, 'IMG_EXPAND_PRODUCT_' + rowId, 'IMG_COLLAPSE_PRODUCT_' + rowId );// Set ajax divnameajaxdivname = 'PRODUCT_'+ rowId;if ( MM_findObj( ajaxdivname ).innerHTML == '<%=enumLOADING%>'){//Append the name to search for to the requestURLvar 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 urlxmlHttp_Get(xmlHttp, url);}}function MM_findObj(n, d) { //v4.0var 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 TabControlobjTabControl.TemplateDoc = ReadFile( Server.MapPath("controls/ERGTabStyleWinXP/tab_style.html") ) ' Supply tab style definitionobjTabControl.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> </td><td> </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_NUMBEROraDatabase.Parameters.Add "ENUM_ENTITY_TYPE", "enumENTITY_TYPE_BOM", ORAPARM_INPUT, ORATYPE_VARCHAR2Set 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 ThensMessage = sMessage &"BOM is REJECTED!<br>"ElsesMessage = sMessage &"BOM is Accepted!<br>"End IfsMessage = 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.MoveNextWEndrsQry.ClosesMessage = 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_NAMEobjFormComponent.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 </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 ) ThennumOfRows = UBound( aProductList, 2 )For rowNum = 0 To numOfRowsProdId = aProductList( 0, rowNum )ChangeType = aProductList( 3, rowNum )PkgVersion = aProductList( 2, rowNum )PkgId = aProductList( 6, rowNum )If ChangeType = "A" or ChangeType = "U" ThenOraDatabase.Parameters.Add "PRODUCTION_BOM", dbPARbom_id, ORAPARM_INPUT, ORATYPE_NUMBEROraDatabase.Parameters.Add "PKG_ID", PkgId, ORAPARM_INPUT, ORATYPE_NUMBERSet 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 = TrueDim MajorA, MajorB, MinorA, MinorB, PatchA, PatchB, posMajorA = NULLMajorB = NULLMinorA = NULLMinorB = NULLPatchA = NULLPatchB = NULL' Find the first occurence of the dot in package version Apos = InStr(PkgVersion, ".")If pos <> 0 Then' Extract the Major Version for AMajorA = Mid(PkgVersion, 1, pos - 1)' Delete the Major Version Value from the string to get the minor and patch versionPkgVersion = Mid(PkgVersion, pos + 1, Len(PkgVersion))' Find the second occurence of the dot in package version Apos = InStr(PkgVersion, ".")' Extract the Minor Version for AIf pos <> 0 ThenMinorA = Mid(PkgVersion, 1, pos - 1)' Delete the Minor Version value from the string to get the patch versionPkgVersion = Mid(PkgVersion, pos + 1, Len(PkgVersion))' Find the last occurence of the dot in package version Apos = InStr(PkgVersion, ".")If pos <> 0 Then' Extract the Patch Version for APatchA = Mid(PkgVersion, 1, pos - 1)End IfEnd IfEnd If' Find the first occurence of the dot in package version Bpos = InStr(CurrentPkgVersion, ".")If pos <> 0 Then' Extract the Major Version for BMajorB = Mid(CurrentPkgVersion, 1, pos - 1)' Delete the Major Version Value from the string to get the minor and patch versionCurrentPkgVersion = Mid(CurrentPkgVersion, pos + 1, Len(CurrentPkgVersion))' Find the second occurence of the dot in package version Bpos = InStr(CurrentPkgVersion, ".")' Extract the Minor Version for BIf pos <> 0 ThenMinorB = Mid(CurrentPkgVersion, 1, pos - 1)' Delete the Minor Version value from the string to get the patch versionCurrentPkgVersion = Mid(CurrentPkgVersion, pos + 1, Len(CurrentPkgVersion))' Find the last occurence of the dot in package version Bpos = InStr(CurrentPkgVersion, ".")If pos <> 0 Then' Extract the Patch Version for BPatchB = Mid(CurrentPkgVersion, 1, pos - 1)End IfEnd IfEnd IfIf NOT isNull(PatchA) AND NOT isNull(PatchB) ThenIf len(PatchA) < 4 Then PatchA = AddTrailingZeros(PatchA, 4)If len(PatchB) < 4 Then PatchB = AddTrailingZeros(PatchB, 4)End IfIf MajorA = MajorB ThenIf MinorA = MinorB ThenIf IsNumeric(PatchA) AND IsNumeric(PatchB) ThenIf CDbl(PatchB) > CDbl(PatchA) ThenIsDisplay = FalseElseIsDisplay = TrueEnd IfEnd IfElseIf IsNumeric(MinorA) AND IsNumeric(MinorB) ThenIf CInt(MinorB) > CInt(MinorA) ThenIsDisplay = FalseElseIsDisplay = TrueEnd IfEnd IfEnd IfElseIf IsNumeric(MajorA) AND IsNumeric(MajorB) ThenIf CInt(MajorB) > CInt(MajorA) ThenIsDisplay = FalseElseIsDisplay = TrueEnd IfEnd IfEnd IfIf 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 rsFormSet 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 IfrsForm.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 = NothingEnd IfNextElse%><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'2numOfRows = UBound( aProductList, 2 )For rowNum = 0 To numOfRowsProdId = 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%><%NextElse%><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 ) ThennumOfRows = UBound( aProductList, 2 )For rowNum = 0 To numOfRowsProdId = aProductList( 0, rowNum )ChangeType = aProductList( 3, rowNum )PkgVersion = aProductList( 2, rowNum )PkgId = aProductList( 6, rowNum )If ChangeType = "A" or ChangeType = "U" ThenOraDatabase.Parameters.Add "PRODUCTION_BOM", dbPARbom_id, ORAPARM_INPUT, ORATYPE_NUMBEROraDatabase.Parameters.Add "PKG_ID", PkgId, ORAPARM_INPUT, ORATYPE_NUMBERSet 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 = TrueMajorA = NULLMajorB = NULLMinorA = NULLMinorB = NULLPatchA = NULLPatchB = NULL' Find the first occurence of the dot in package version Apos = InStr(PkgVersion, ".")If pos <> 0 Then' Extract the Major Version for AMajorA = Mid(PkgVersion, 1, pos - 1)' Delete the Major Version Value from the string to get the minor and patch versionPkgVersion = Mid(PkgVersion, pos + 1, Len(PkgVersion))' Find the second occurence of the dot in package version Apos = InStr(PkgVersion, ".")' Extract the Minor Version for AIf pos <> 0 ThenMinorA = Mid(PkgVersion, 1, pos - 1)' Delete the Minor Version value from the string to get the patch versionPkgVersion = Mid(PkgVersion, pos + 1, Len(PkgVersion))' Find the last occurence of the dot in package version Apos = InStr(PkgVersion, ".")If pos <> 0 Then' Extract the Patch Version for APatchA = Mid(PkgVersion, 1, pos - 1)End IfEnd IfEnd If' Find the first occurence of the dot in package version Bpos = InStr(CurrentPkgVersion, ".")If pos <> 0 Then' Extract the Major Version for BMajorB = Mid(CurrentPkgVersion, 1, pos - 1)' Delete the Major Version Value from the string to get the minor and patch versionCurrentPkgVersion = Mid(CurrentPkgVersion, pos + 1, Len(CurrentPkgVersion))' Find the second occurence of the dot in package version Bpos = InStr(CurrentPkgVersion, ".")' Extract the Minor Version for BIf pos <> 0 ThenMinorB = Mid(CurrentPkgVersion, 1, pos - 1)' Delete the Minor Version value from the string to get the patch versionCurrentPkgVersion = Mid(CurrentPkgVersion, pos + 1, Len(CurrentPkgVersion))' Find the last occurence of the dot in package version Bpos = InStr(CurrentPkgVersion, ".")If pos <> 0 Then' Extract the Patch Version for BPatchB = Mid(CurrentPkgVersion, 1, pos - 1)End IfEnd IfEnd IfIf NOT isNull(PatchA) AND NOT isNull(PatchB) ThenIf len(PatchA) < 4 Then PatchA = AddTrailingZeros(PatchA, 4)If len(PatchB) < 4 Then PatchB = AddTrailingZeros(PatchB, 4)End IfIf MajorA = MajorB ThenIf MinorA = MinorB ThenIf IsNumeric(PatchA) AND IsNumeric(PatchB) ThenIf CDbl(PatchB) > CDbl(PatchA) ThenIsDisplay = FalseElseIsDisplay = TrueEnd IfEnd IfElseIf IsNumeric(MinorA) AND IsNumeric(MinorB) ThenIf CInt(MinorB) > CInt(MinorA) ThenIsDisplay = FalseElseIsDisplay = TrueEnd IfEnd IfEnd IfElseIf IsNumeric(MajorA) AND IsNumeric(MajorB) ThenIf CInt(MajorB) > CInt(MajorA) ThenIsDisplay = FalseElseIsDisplay = TrueEnd IfEnd IfEnd IfIf 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 = NothingEnd IfNextElse%><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"> </td></tr></table><!-- FOOTER ++++++++++++++++ --><!--#include file="_footer.asp"--><!-- +++++++++++++++++++++++ --></body></html><%'------------ RUN AFTER PAGE RENDER -----------Set objPMod = NothingSet objCrumbs = NothingSet objTabControl = Nothing'----------------------------------------------%><!--#include file="common/globals_destructor.asp"-->