Saturday, November 2, 2013

Open UI -->Client not opening after the updagrade to 8.1.1.11 or 8.2.2.4 -->Message: Object expected error /23030/scripts/siebel/navctrlmngr.js?_scb=8.2.2.4_SIA_[23030]_ENU

Hi ,

last week i upgraded to 8.1.1.11 .upgrade went successful . i upgraded the client and tools .
when i opened the tools it opened successful but i was not able to open the client .


issue : IE browser opens and it will show the callcenter in the top tab but it wont load the page correctly . And when i tired debug i got below error message
/****************************************************************
Webpage error details

User Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; .NET4.0C; .NET4.0E)
Timestamp: Sun, 3 Nov 2013 06:12:09 UTC


Message: Object expected
Line: 38
Char: 799
Code: 0
URI: http://jo-pc/23030/scripts/siebel/navctrlmngr.js?_scb=8.2.2.4_SIA_[23030]_ENU

********************************************************************

intially i thought i did something wrong at the time of installation . i reinstalled eveything again . downloaded again , installed 8.1.1.11 and 8.2.2.4 .. Still the same message .

Solution : as part of the upgrade we have to download new srf from oracle . we have to replace it with new it with new srf

please find the details below

Find Siebel Repository Files (SRF) as below and click "Download" button.
Name: Siebel Industry Applications Version 8.1.1.11 Siebel Repository Files
Part Number: V39883-01 
Note : follow the same for 8.2.2.4

Advice: Dont waste your time :-)

regards
Jo 
joju2002@gmail.com

Thursday, October 17, 2013

Open UI --> Custom Button In List Applet -- Not working

Hi

i tired to bring a Button in Open UI list Applet .once i mention the custom method name applet wont display properly !!!!!Anyone facing this issue ???

Regards
jo  

Scenario Config : Applet has to display only current year record at the initial load

Scenario : Applet has to display only current Year record at the initial load. But when i do a query an go it has to show all the records [ previous year records also]

ie :only on the applet load it has to show the current year records

My Solution :

 1)      At the time of applet load  --- Set one profile attribute  --This will make sure our code only fire at the time of loading the applet
a.       Set the profile attribute
b.      Set the some value to profile attribute
2
          2)In     function BusComp_PreQuery () before we entering to the code you have to make sure below two things
a.       Whether we are that active view
b.      Whether profile attribute got set or not
                                                               i.      if (TheApplication().ActiveViewName() == "<<ViewName>>" && TheApplication().GetProfileAttr("<<ProfileAttrib>>") == "<<value check>>")
                                                             ii.                      {<<Our code goes here >>           }
c.       Once we execute the code change back the profile attribute to previous value àimportant


Pseudo Code : 
function BusComp_PreQuery ()
{
               
var sSearchExpr;
               
                sSearchExpr = this.GetSearchExpr();
         if (TheApplication().ActiveViewName() == "<<ViewName>>" && TheApplication().GetProfileAttr("<<ProfileAttrib>>") == "<<value check>>")
                if (sSearchExpr != null && sSearchExpr != "")
                    {
                                var dtToday = new Date();
                                dtToday.setDate("1");
                                  dtToday.setMonth("0");
                               dtToday =dtToday.getDate() + "/" + ToNumber(dtToday.getMonth()+1) + "/" +                    dtToday.getFullYear();
                                this.SetSearchExpr("[Agreement Start Date] >='"+dtToday+"'") ;
                } // end of if sSearchExpr 
}// end of if Active View name 
               
return (ContinueOperation);
}

Agreement Start Date  à mention ur field name

Note:Please let me know if there is any other better approach to the above solution.

regards
jo
joju2002@gmail.com




Saturday, September 21, 2013

Open UI -->For list Applet /Form Applet which all js files to include [ For Desktop]

Hi All,

including the proper js files is very important in open ui. otherwise the view wont be rendering properly .

List Applet -- PM  ---[Desktop]
Include below files

<KEY Name="ContactLstPModel">
<FILE_NAME> siebel/applet.js        </FILE_NAME>
<FILE_NAME> siebel/listapplet.js    </FILE_NAME>
<FILE_NAME> siebel/pmodel.js        </FILE_NAME>
<FILE_NAME> siebel/listpmodel.js    </FILE_NAME>
<FILE_NAME> siebel/custom/<<myjsfile>>.js   </FILE_NAME>
</KEY>


List Applet --PR -- [Desktop]
Include below files

<KEY Name="ContactListPRenderer">
 <FILE_NAME> 3rdParty/jqGrid/current/js/i18n/grid.locale-en.js    </FILE_NAME>
               <FILE_NAME> 3rdParty/jqGrid/current/js/jquery.jqGrid.min.js      </FILE_NAME>
               <FILE_NAME> 3rdParty/jqgrid-ext.js                               </FILE_NAME>
               <FILE_NAME> siebel/phyrenderer.js                                </FILE_NAME>
               <FILE_NAME> siebel/jqgridrenderer.js                             </FILE_NAME>
<FILE_NAME> siebel/custom/<<myjsfile>>.js                  </FILE_NAME>
</KEY>


Form Applet --PM --[Desktop]
Include below file

<KEY Name="AccountFormPModel">
<FILE_NAME> siebel/applet.js                    </FILE_NAME>
<FILE_NAME> siebel/pmodel.js                    </FILE_NAME>
<FILE_NAME> siebel/custom/<<Myjsfile>>.js   </FILE_NAME>
</KEY>

Form Applet --PR--[Desktop]
Include beloe file

<KEY Name="AccountFormPRenderer">
<FILE_NAME> siebel/phyrenderer.js                           </FILE_NAME>
<FILE_NAME> siebel/custom/AccountFormPR.js                  </FILE_NAME>
</KEY>

Note: it is very important to extend the correct class name in our js files. 

Regards
Joseph Thomas
joju2002@gmail.com




Wednesday, September 18, 2013

Siebel Open UI: Portlet in External Application


Dear Readers,
The following screenshot shows a Siebel Case List Applet loaded in an external application as a portlet. Good feature that can be leveraged to display Siebel data in Legacy Portals.



- OptimusPrime

Monday, September 16, 2013

OpenUI Custom Theme

Dear Readers ! I was experimenting with Open UI Desktop Themes and realized the UI is thrown open for mods. This is how I ended up after 25 mins. Note the Closed Records are auto highlighted by the mods.
- OptimusPrime

Wednesday, August 7, 2013

Open UI Scenario 2 --> In Account Form Applet Hide/Unhide Phone Number and Fax Number depending on Address field


Open UI Scenario 2 --> In Account Form Applet Hide/Unhide Phone Number and Fax Number depending on Address
by jo [joju2002@gmail.com]

if the Address field is blank we will hide above two fields. If the Addres field having some values we unhide those two fields we have to make

Solution :
Step1: Create new PM
Step2: Create New PR
Step3:Update the Manifest file

PM Code Below 

// check it is already present
if( typeof( SiebelAppFacade.AccountFormPM_Jo ) === "undefined" ){

// add the namespace
    SiebelJS.Namespace( "SiebelAppFacade.AccountFormPM_Jo" );

// Key
    SiebelApp.S_App.RegisterConstructorAgainstKey( "AccountFormPM_Joodel", "SiebelAppFacade.AccountFormPM_Jo" );


    SiebelAppFacade.AccountFormPM_Jo = ( function(){

// call the superclass
        function AccountFormPM_Jo( proxy ){
            SiebelAppFacade.AccountFormPM_Jo.superclass.constructor.call( this, proxy );
        }

// extend the presentation model
        SiebelJS.Extend( AccountFormPM_Jo, SiebelAppFacade.PresentationModel );

// For PM we need init method
        AccountFormPM_Jo.prototype.Init = function(){
            SiebelAppFacade.AccountFormPM_Jo.superclass.Init.call( this );
            this.AddProperty( "ShowAddressRelatedField", "" );
            this.AddMethod( "ShowSelection",  SelectionChange, { sequence : false, scope : this } );
            this.AddMethod( "FieldChange",  OnFieldChange, { sequence : false, scope: this } );
        };

// Custom function: When a new record is selected, set ShowAddressRelatedField to true or false, depending on
 function SelectionChange(){
            var controls = this.Get( "GetControls" );
            var control = controls[ "StreetAddress" ];
            var value = this.ExecuteMethod( "GetFieldValue", control );
            this.SetProperty( "ShowAddressRelatedField", ( value ? true: false ) );
SiebelJS.Log("The value of ShowAddressRelatedField is " + this.Get( "ShowAddressRelatedField"));
        }


// street address field, determine whether or not it is now empty, and set ShowAddressRelatedField accordingly.
        function OnFieldChange( control, value ){
            if( control.GetName() === "StreetAddress" ){
                this.SetProperty( "ShowAddressRelatedField", ( value ? true: false ) );
SiebelJS.Log("The value of ShowAddressRelatedField is " + this.Get( "ShowAddressRelatedField"));
            }
        }
        return AccountFormPM_Jo;
    }());
}



PR Code Below 

if (typeof (SiebelAppFacade.AccountPartialRefreshPR) === "undefined") {
    SiebelJS.Namespace("SiebelAppFacade.AccountPartialRefreshPR");
    SiebelApp.S_App.RegisterConstructorAgainstKey( "AccountPartialRefreshPR", "SiebelAppFacade.AccountPartialRefreshPR" );
    SiebelAppFacade.AccountPartialRefreshPR = ( function(){
SiebelJS.Extend( AccountPartialRefreshPR, SiebelAppFacade.PhysicalRenderer );
                               
        function AccountPartialRefreshPR( pm ){
            SiebelAppFacade.AccountPartialRefreshPR.superclass.constructor.call( this, pm );
            this.GetPM().AttachPMBinding( "ShowAddressRelatedField",  ModifyLayout, { scope: this });
        }
 
        function ModifyLayout( ){
            var controls = this.GetPM().Get( "GetControls" );
            var canShow = this.GetPM().Get( "ShowAddressRelatedField" );
            var WorkPhoneNum = controls[ "MainPhoneNumber" ];
            var FaxPhoneNum = controls[ "MainFaxNumber" ];

            if( canShow ){
                $( "span#MainPhoneNumber_Label" ).parent().fadeIn(500);
                $( "[name='" + WorkPhoneNum.GetInputName() + "']" ).fadeIn(500);
                $( "span#MainFaxNumber_Label" ).parent().fadeIn(500);
                $( "[name='" + FaxPhoneNum.GetInputName() + "']" ).fadeIn(500);
            }
            else{
                $( "span#MainPhoneNumber_Label" ).parent().fadeOut(500);
                $( "[name='" + WorkPhoneNum.GetInputName() + "']" ).fadeOut(500);
                $( "span#MainFaxNumber_Label" ).parent().fadeOut(500);
                $( "[name='" + FaxPhoneNum.GetInputName() + "']" ).fadeOut(500);
            }
}
        return AccountPartialRefreshPR;
    }());

}


Step 3
Update the Manifest and custom_Manifest.xm file

Note: Make sure you clear the history of your browser[With IP 2013 they will remove this issue. IP2013 will be launching on Nov 2013]

Account having address field having value 
Account having address field null. in this case two fields become hidden 

Tuesday, July 30, 2013

Open UI -->Scenario 1--Change the colour of the ROW in the list applet when the revenue is more than 2,000,000

Only PR change is required for this .

if (typeof(SiebelAppFacade.OpptyListPR) === "undefined") {
    SiebelJS.Namespace("SiebelAppFacade.OpptyListPR");
    SiebelApp.S_App.RegisterConstructorAgainstKey("OpptyListPR", "SiebelAppFacade.OpptyListPR");

    SiebelAppFacade.OpptyListPR = (function () {
        function OpptyListPR(pm) {
            SiebelAppFacade.OpptyListPR.superclass.constructor.call(this, pm);
        }

        SiebelJS.Extend(OpptyListPR, SiebelAppFacade.JQGridRenderer);

        OpptyListPR.prototype.BindData = function SetColor() {
            SiebelAppFacade.OpptyListPR.superclass.BindData.call(this, SetColor);
            var pm = this.GetPM();
            var recordset = pm.Get("GetRecordSet");
            var placeholder = pm.Get("GetPlaceholder");
            var rsLength = recordset ? recordset.length : 0;
            var trFinder;
            var trtdFinder;
var amt;

            if (rsLength > 0) {
                for (var i = 0; i < rsLength; i++) {
                    trFinder = $('#' + placeholder).find('[Id=' + (i + 1) + ']');
                    trtdFinder = $(trFinder).find('td')[1];
amt =recordset[i]["Primary Revenue Amount"];
var number = Number(amt.replace(/[^0-9\.]+/g,""));
                    if (number >= "2000000") {
                        $(trFinder).css('background-color', 'Red');
                    }
                }
            }
        }
        return OpptyListPR;
    }());

}

we have to update manifest and customer files with the above js names

Screen shot 









Tuesday, April 23, 2013

i am back

Hi All,


after a long gap i am back in action

regards
jo

Scripting -->In an Read Only view i want to make the buttons Read Only


IsViewReadOnly Method

You can use the IsViewReadOnly method to test whether a view is read-only

Syntax
Application.InvokeMethod("IsViewReadOnly",viewName)


viewName: The name of a view, as defined in Siebel Tools, in double quotes or a variable containing the name of a view.
 Returns:Returns TRUE if the view is read-only, else it returns FALSE. If neither of these values is returned, then an error has occurred. Your script must provide a handler if neither TRUE nor FALSE is returned.

Sample Code :
function WebApplet_PreCanInvokeMethod (MethodName, &CanInvoke)
{
                var sviewname = TheApplication().ActiveViewName();
 if (TheApplication().InvokeMethod("IsViewReadOnly",sviewname) == "TRUE")
                {
                                if (MethodName == "<<CustomMethod>>")
                                 CanInvoke = "FALSE";
                                 else
                                CanInvoke = "TRUE";
                                return CancelOperation;
                }
                return (ContinueOperation);
}


regards
jo