%@LANGUAGE="VBSCRIPT"%>
<%
'=====================================================
'| |
'| wSyncProducts |
'| |
'=====================================================
%>
<%
Option explicit
Response.Expires = 0
%>
<%
'To enable the script timeout to 10 mins
Server.ScriptTimeout=360
%>
<%
'------------ ACCESS CONTROL ------------------
%>
<%
'------------ VARIABLE DEFINITION -------------
Dim rsQry
Dim aProducts
Dim numOfRows
Dim rowNum
Dim objFormCollector
Dim currPkg_id
Dim Query_String
'------------ CONSTANTS DECLARATION -----------
'------------ VARIABLE INIT -------------------
parBom_id = Request("bom_id")
Set objFormCollector = CreateObject("Scripting.Dictionary")
'------------ CONDITIONS ----------------------
'----------------------------------------------
%>
<%
'----------------------------------------------------------------------------------------------------------------------------------
Sub GetFormDetails ( nBom_id, ByRef outobjDetails )
Dim rsQry, query
OraDatabase.Parameters.Add "BOM_ID", nBom_id, ORAPARM_INPUT, ORATYPE_NUMBER
query = _
" SELECT rt.RTAG_ID, "&_
" rt.RTAG_NAME, "&_
" rt.PRODUCT_STATE_USED "&_
" FROM RELEASE_TAGS rt,"&_
" BOMS bo"&_
" WHERE bo.RTAG_ID_FK = rt.RTAG_ID"&_
" AND bo.BOM_ID = :BOM_ID"
Set rsQry = OraDatabase.DbCreateDynaset( query, ORADYN_DEFAULT )
If (NOT rsQry.BOF) AND (NOT rsQry.EOF)Then
outobjDetails.Item ("rtag_id_fk") = rsQry("rtag_id")
outobjDetails.Item ("rtag_name") = rsQry("rtag_name")
outobjDetails.Item ("product_state_used") = rsQry("product_state_used")
End If
OraDatabase.Parameters.Remove "BOM_ID"
rsQry.Close
Set rsQry = Nothing
End Sub
'----------------------------------------------------------------------------------------------------------------------------------
Sub UpdateProducts()
Dim aDiffList, numOfRows, rowNum, OraParameter
Const os_id_column = 2
Const old_prod_id_column = 1
'/* Get Latest From Release Manager */
OraDatabase.Parameters.Add "BOM_ID", parBom_id, ORAPARM_INPUT, ORATYPE_NUMBER
OraDatabase.Parameters.Add "RTAG_ID", objFormCollector.Item("rtag_id_fk"), ORAPARM_INPUT, ORATYPE_NUMBER
Query_String = ReadFile( rootPath & "queries\CompareBomWithLatestFromRM.sql" )
If objFormCollector.Item ("product_state_used") = "Y" Then
Query_String = Replace( Query_String, "/* AND rc.PRODUCT_STATE = 3 */", " AND rc.PRODUCT_STATE = 3")
End If
Set rsQry = OraDatabase.DbCreateDynaset( Query_String, ORADYN_DEFAULT )
'-- Get Rows
If rsQry.RecordCount > 0 Then
aDiffList = rsQry.GetRows()
Else
'-- No differencses with Release Manager, hence exit
OraDatabase.Parameters.Remove "BOM_ID"
OraDatabase.Parameters.Remove "RTAG_ID"
Exit Sub
End If
' Get the project id so we can filter out PopulateSBOMField() for SSW later.
Dim rsProjId, proj_id
Set rsProjId = OraDatabase.DbCreateDynaset("SELECT proj_id FROM branches br, boms b WHERE br.branch_id = b.branch_id AND b.bom_id = " & parBom_id, cint(0))
proj_id = rsProjId("proj_id")
rsProjId.Close()
Set rsProjId = nothing
'/* Update Versions */
'On Error Resume Next
OraDatabase.Parameters.Add "OLD_PROD_ID", 0, ORAPARM_INPUT, ORATYPE_NUMBER
OraDatabase.Parameters.Add "NEW_PROD_ID", 0, ORAPARM_INPUT, ORATYPE_NUMBER
OraDatabase.Parameters.Add "OS_ID", 0, ORAPARM_INPUT, ORATYPE_NUMBER
OraDatabase.Parameters.Add "USER_ID", objAccessControl.UserId, ORAPARM_INPUT, ORATYPE_NUMBER
Set OraParameter = OraDatabase.Parameters
objEH.TryORA ( OraSession )
numOfRows = UBound( aDiffList, 2 )
For rowNum = 0 To numOfRows
If Request("update_"& aDiffList( os_id_column, rowNum ) &"_"& aDiffList( old_prod_id_column, rowNum ) ) <> "" Then
OraParameter("OLD_PROD_ID").Value = aDiffList( old_prod_id_column, rowNum )
OraParameter("NEW_PROD_ID").Value = Request("update_"& aDiffList( os_id_column, rowNum ) &"_"& aDiffList( old_prod_id_column, rowNum ) )
OraParameter("OS_ID").Value = aDiffList( os_id_column, rowNum )
'******************************************************************************
' This is causing problems for SSW, VTK and SEA and they don't use it, so it
' has been disabled for those projects until a fix is found.
'******************************************************************************
If proj_id <> 421 AND proj_id <> 361 AND proj_id <> 122 AND proj_id <> 164 AND proj_id <> 581 Then
Call PopulateSBOMField(parBom_id, Request("update_"& aDiffList( os_id_column, rowNum ) &"_"& aDiffList( old_prod_id_column, rowNum ) ), NULL, NULL )
End If
'Response.Write("")
OraDatabase.ExecuteSQL "BEGIN pk_Product.Replace_Product ( :OLD_PROD_ID, :NEW_PROD_ID, :OS_ID, :USER_ID ); END;"
End If
Next
'--- Log Action ---
'objEH.LogAction _
'objAccessControl.UserId, _
'enumAT_EVENT_COMMENT, _
'"Sub UpdateProducts for OS list="& Request("spos_id_list"), _
'SCRIPT_NAME, _
'"Updated Products with new versions.", _
'OraDatabase
objEH.CatchORA ( OraSession )
OraDatabase.Parameters.Remove "BOM_ID"
OraDatabase.Parameters.Remove "RTAG_ID"
OraDatabase.Parameters.Remove "OLD_PROD_ID"
OraDatabase.Parameters.Remove "NEW_PROD_ID"
OraDatabase.Parameters.Remove "OS_ID"
OraDatabase.Parameters.Remove "USER_ID"
End Sub
'----------------------------------------------------------------------------------------------------------------------------------
Sub AddPatches()
Dim aDiffList, numOfRows, rowNum, OraParameter
Const os_id_column = 2
Const prod_id_column = 1
'/* Get Lates Release Manager */
OraDatabase.Parameters.Add "BOM_ID", parBom_id, ORAPARM_INPUT, ORATYPE_NUMBER
Set rsQry = OraDatabase.DbCreateDynaset( GetQuery ("NewPatches.sql"), ORADYN_DEFAULT )
'-- Get Rows
If rsQry.RecordCount > 0 Then
aDiffList = rsQry.GetRows()
Else
'-- No differences with Release Manager, hence exit
OraDatabase.Parameters.Remove "BOM_ID"
Exit Sub
End If
'/* Update Versions */
On Error Resume Next
OraDatabase.Parameters.Add "NEW_PROD_ID", 0, ORAPARM_INPUT, ORATYPE_NUMBER
OraDatabase.Parameters.Add "OS_ID", 0, ORAPARM_INPUT, ORATYPE_NUMBER
OraDatabase.Parameters.Add "USER_ID", objAccessControl.UserId, ORAPARM_INPUT, ORATYPE_NUMBER
Set OraParameter = OraDatabase.Parameters
objEH.TryORA ( OraSession )
numOfRows = UBound( aDiffList, 2 )
For rowNum = 0 To numOfRows
If Request("add_"& aDiffList( os_id_column, rowNum ) &"_"& aDiffList( prod_id_column, rowNum ) ) <> "" Then
OraParameter("NEW_PROD_ID").Value = Request("add_"& aDiffList( os_id_column, rowNum ) &"_"& aDiffList( prod_id_column, rowNum ) )
OraParameter("OS_ID").Value = aDiffList( os_id_column, rowNum )
OraDatabase.ExecuteSQL "BEGIN pk_Product.Add_Product ( :NEW_PROD_ID, :OS_ID, :USER_ID ); END;"
End If
Next
objEH.CatchORA ( OraSession )
OraDatabase.Parameters.Remove "BOM_ID"
OraDatabase.Parameters.Remove "NEW_PROD_ID"
OraDatabase.Parameters.Remove "OS_ID"
OraDatabase.Parameters.Remove "USER_ID"
End Sub
'----------------------------------------------------------------------------------------------------------------------------------
Sub HideProducts()
Dim aDiffList, numOfRows, rowNum, OraParameter
Const os_id_column = 2
Const old_prod_id_column = 1
'/* Get Latest from Release Manager */
OraDatabase.Parameters.Add "BOM_ID", parBom_id, ORAPARM_INPUT, ORATYPE_NUMBER
OraDatabase.Parameters.Add "RTAG_ID", objFormCollector.Item("rtag_id_fk"), ORAPARM_INPUT, ORATYPE_NUMBER
Query_String = ReadFile( rootPath & "queries\CompareBomWithLatestFromRM.sql" )
If objFormCollector.Item ("product_state_used") = "Y" Then
Query_String = Replace( Query_String, "/* AND rc.PRODUCT_STATE IN (3, 5) */", " AND rc.PRODUCT_STATE IN (3, 5)")
End If
Set rsQry = OraDatabase.DbCreateDynaset( Query_String, ORADYN_DEFAULT )
'-- Get Rows
If rsQry.RecordCount > 0 Then
aDiffList = rsQry.GetRows()
Else
'-- No differences with Release Manager, hence exit
OraDatabase.Parameters.Remove "BOM_ID"
OraDatabase.Parameters.Remove "RTAG_ID"
Exit Sub
End If
'/* Hide Versions */
On Error Resume Next
OraDatabase.Parameters.Add "NEW_PROD_ID", 0, ORAPARM_INPUT, ORATYPE_NUMBER
OraDatabase.Parameters.Add "OS_ID", 0, ORAPARM_INPUT, ORATYPE_NUMBER
OraDatabase.Parameters.Add "USER_ID", objAccessControl.UserId, ORAPARM_INPUT, ORATYPE_NUMBER
Set OraParameter = OraDatabase.Parameters
objEH.TryORA ( OraSession )
numOfRows = UBound( aDiffList, 2 )
For rowNum = 0 To numOfRows
If Request("hide_"& aDiffList( os_id_column, rowNum ) &"_"& aDiffList( old_prod_id_column, rowNum ) ) <> "" Then
OraParameter("NEW_PROD_ID").Value = Request("hide_"& aDiffList( os_id_column, rowNum ) &"_"& aDiffList( old_prod_id_column, rowNum ) )
OraParameter("OS_ID").Value = aDiffList( os_id_column, rowNum )
OraDatabase.ExecuteSQL "BEGIN pk_Product.Hide_Product ( :NEW_PROD_ID, :OS_ID, :USER_ID ); END;"
End If
Next
'--- Log Action ---
'objEH.LogAction _
'objAccessControl.UserId, _
'enumAT_EVENT_COMMENT, _
'"Sub UpdateProducts for OS list="& Request("spos_id_list"), _
'SCRIPT_NAME, _
'"Updated Products with new versions.", _
'OraDatabase
objEH.CatchORA ( OraSession )
OraDatabase.Parameters.Remove "BOM_ID"
OraDatabase.Parameters.Remove "RTAG_ID"
OraDatabase.Parameters.Remove "OLD_PROD_ID"
OraDatabase.Parameters.Remove "NEW_PROD_ID"
OraDatabase.Parameters.Remove "OS_ID"
OraDatabase.Parameters.Remove "USER_ID"
End Sub
'----------------------------------------------------------------------------------------------------------------------------------
Sub HidePatches()
Dim aDiffList, numOfRows, rowNum, OraParameter
Const os_id_column = 2
Const prod_id_column = 1
'/* Get Latest from Release Manager */
OraDatabase.Parameters.Add "BOM_ID", parBom_id, ORAPARM_INPUT, ORATYPE_NUMBER
Set rsQry = OraDatabase.DbCreateDynaset( GetQuery ("NewPatches.sql"), ORADYN_DEFAULT )
'-- Get Rows
If rsQry.RecordCount > 0 Then
aDiffList = rsQry.GetRows()
Else
'-- No differencses with Release Manager, hence exit
OraDatabase.Parameters.Remove "BOM_ID"
Exit Sub
End If
'/* Hide Versions */
On Error Resume Next
OraDatabase.Parameters.Add "NEW_PROD_ID", 0, ORAPARM_INPUT, ORATYPE_NUMBER
OraDatabase.Parameters.Add "OS_ID", 0, ORAPARM_INPUT, ORATYPE_NUMBER
OraDatabase.Parameters.Add "USER_ID", objAccessControl.UserId, ORAPARM_INPUT, ORATYPE_NUMBER
Set OraParameter = OraDatabase.Parameters
objEH.TryORA ( OraSession )
numOfRows = UBound( aDiffList, 2 )
For rowNum = 0 To numOfRows
If Request("hide_"& aDiffList( os_id_column, rowNum ) &"_"& aDiffList( prod_id_column, rowNum ) ) <> "" Then
OraParameter("NEW_PROD_ID").Value = Request("hide_"& aDiffList( os_id_column, rowNum ) &"_"& aDiffList( prod_id_column, rowNum ) )
OraParameter("OS_ID").Value = aDiffList( os_id_column, rowNum )
OraDatabase.ExecuteSQL "BEGIN pk_Product.Hide_Product ( :NEW_PROD_ID, :OS_ID, :USER_ID ); END;"
End If
Next
objEH.CatchORA ( OraSession )
OraDatabase.Parameters.Remove "BOM_ID"
OraDatabase.Parameters.Remove "NEW_PROD_ID"
OraDatabase.Parameters.Remove "OS_ID"
OraDatabase.Parameters.Remove "USER_ID"
End Sub
'----------------------------------------------------------------------------------------------------------------------------------
%>
<%
'------------ RUN BEFORE PAGE RENDER ----------
Call GetFormDetails ( parBom_id, objFormCollector )
If Request("action") <> "" Then
' --- Form is Valid ---
Call UpdateProducts()
Call AddPatches()
Call HideProducts()
Call HidePatches()
If objEH.Finally Then
Call OpenInParentWindow ("Bom_Home.asp?UPDATED=OK"& objPMod.ComposeURLWithout("rfile") )
Call CloseWindow()
End If
End If
'----------------------------------------------
%>
Deployment Manager
Update Products
Update Products, selecting the latest from "Release Manager".
<%
'-- FROM START --------------------------------------------------------------------------------------------------------------
objFormComponent.FormName = "FormName"
objFormComponent.Action = SCRIPT_NAME
objFormComponent.OnSubmit = "ShowProgress();"
Call objFormComponent.FormStart()
%>
<%
If objFormCollector.Item("rtag_id_fk") = "" Then
Call Messenger ( "This BOM does not have Release Manager Reference release. Please edit BOM properties first. ", 1, "100%" )
End If
%>
Select Products and click Update.
Update
Location
Version
Hide
Latest
<%
OraDatabase.Parameters.Add "BOM_ID", parBom_id, ORAPARM_INPUT, ORATYPE_NUMBER
OraDatabase.Parameters.Add "RTAG_ID", objFormCollector.Item("rtag_id_fk"), ORAPARM_INPUT, ORATYPE_NUMBER
Query_String = ReadFile( rootPath & "queries\CompareBomWithLatestFromRM.sql" )
If objFormCollector.Item ("product_state_used") = "Y" Then
Query_String = Replace( Query_String, "/* AND rc.PRODUCT_STATE = 3 */", " AND rc.PRODUCT_STATE = 3")
End If
Set rsQry = OraDatabase.DbCreateDynaset( Query_String, ORADYN_DEFAULT )
Dim rsTemp
Dim hideResult()
Dim numHiddenProducts
Dim len_hideResult
Dim i_hideResult
' Evaluate hidden status of products
numHiddenProducts = 0
len_hideResult = 0
While (NOT rsQry.BOF) AND (NOT rsQry.EOF)
Set rsTemp = OraDatabase.DbCreateDynaset( "SELECT * FROM HIDE_PRODUCTS WHERE OS_ID="& rsQry("os_id") &" AND PROD_ID="& rsQry("prod_id"), ORADYN_DEFAULT )
len_hideResult = len_hideResult + 1
ReDim Preserve hideResult(len_hideResult)
If rsTemp.RecordCount = 0 Then
hideResult(len_hideResult - 1) = False
Else
hideResult(len_hideResult - 1) = True
numHiddenProducts = numHiddenProducts + 1
End If
rsTemp.Close()
Set rsTemp = nothing
rsQry.MoveNext
Wend
If (rsQry.RecordCount = numHiddenProducts) Then
%>
No Products to Update (some products are hidden and status of those has not been shown)
<%ElseIf (rsQry.RecordCount < 1) Then%>
No Products to Update.
<%End If
' Now render the product rows themselves
currPkg_id = 0
rsQry.MoveFirst
i_hideResult = 0
While (NOT rsQry.BOF) AND (NOT rsQry.EOF)
If hideResult(i_hideResult) = False Then
If currPkg_id <> rsQry("pkg_id") Then
%>
<%=rsQry("prod_name")%>
<%
currPkg_id = rsQry("pkg_id")
End If
%>
" value="<%=rsQry("latest_prod_id")%>">
" align="absmiddle" border="0"><%=rsQry("prod_location")%>
<%=rsQry("prod_version")%>
" value="<%=rsQry("prod_id")%>">
<%=rsQry("rm_latest_version")%>
<%
End If
rsQry.MoveNext
i_hideResult = i_hideResult + 1
Wend
%>
<%
Dim strAdd, rsAdd, strHide
Set rsQry = OraDatabase.DbCreateDynaset( GetQuery ("NewPatches.sql"), ORADYN_DEFAULT )
Set rsAdd = OraDatabase.DbCreateDynaset( GetQuery ("NewPatches.sql"), ORADYN_DEFAULT )
currPkg_id = 0
If rsQry.RecordCount > 0 Then
While (NOT rsAdd.BOF) AND (NOT rsAdd.EOF)
Set rsTemp = OraDatabase.DbCreateDynaset( "SELECT * FROM HIDE_PRODUCTS WHERE OS_ID="& rsAdd("os_id") &" AND PROD_ID="& rsAdd("prod_id"), ORADYN_DEFAULT )
If rsTemp.RecordCount = 0 Then
strAdd = strAdd + "'add_"&rsAdd("os_id") &"_"& rsAdd("prod_id")&"',"
strHide = strHide + "'hide_"&rsAdd("os_id") &"_"& rsAdd("prod_id")&"',"
End If
rsAdd.MoveNext
Wend
rsAdd.Close()
rsTemp.Close()
Set rsAdd = nothing
Set rsTemp = nothing
If NOT IsEmpty(strAdd) Then
strAdd = Mid(strAdd, 1, Len(strAdd)-1) + ", 'checkalladd'"
End If
If NOT IsEmpty(strHide) Then
strHide = Mid(strHide, 1, Len(strHide)-1) + ", 'checkallhide'"
End If
%>
Add
Location
Version
Hide
Comments
<%If NOT IsEmpty(strAdd) Then%>
<%
End If
While (NOT rsQry.BOF) AND (NOT rsQry.EOF)
Set rsTemp = OraDatabase.DbCreateDynaset( "SELECT * FROM HIDE_PRODUCTS WHERE OS_ID="& rsQry("os_id") &" AND PROD_ID="& rsQry("prod_id"), ORADYN_DEFAULT )
If rsTemp.RecordCount = 0 Then
If currPkg_id <> rsQry("pkg_id") Then
%>
<%=rsQry("prod_name")%>
<%
currPkg_id = rsQry("pkg_id")
End If
%>
" value="<%=rsQry("prod_id")%>">
" align="absmiddle" border="0"><%=rsQry("prod_location")%>
<%=rsQry("prod_version")%>
" value="<%=rsQry("prod_id")%>">
<%=rsQry("comments")%>
<%
End If
rsTemp.Close()
Set rsTemp = nothing
rsQry.MoveNext
Wend
End If
%>
<%
OraDatabase.Parameters.Remove "RTAG_ID"
OraDatabase.Parameters.Remove "BOM_ID"
rsQry.Close
Set rsQry = Nothing
%>
<%=objPMod.ComposeHiddenTags()%>
<%
Call objFormComponent.FormEnd()
'-- FROM END ----------------------------------------------------------------------------------------------------------------
%>
<%
'------------ RUN AFTER PAGE RENDER -----------
'----------------------------------------------
%>