Paycheck view under Self-Service

 19 Replies
 0 Subscribed to this topic
 68 Subscribed to this forum
Sort:
Author
Messages
John Costa
Veteran Member
Posts: 154
Veteran Member
    OK, here’s one to baffle the best of you. I sure hope you can help me find a solution.

    I have one employee who is unable to view his paychecks under Employee Self-Service (ESS). Whenever he clicks on the “Pay Checks” link to see a list of his paychecks, he gets a “Invalid Parameter: CHECK_DATE>” error. He is also unable to view “Year to Date” info. He gets these errors regardless of what PC he tries to log into the Portal with.

    I have over 2,000 employees in the same security class and no one else gets this error. That rules out a problem with the “paytyear.htm” file on my web server (var FUTUREPAYMTS = TRUE). I believe I’ve ruled out his PC because I can view my paychecks from his browser (Internet Explorer 7) without error. I’ve also modified my RD30 record to reflect his employee number, logged in to ESS on his machine, and was able to view his paychecks without error.

    I’ve gone as far as deleting his user ID from the environment on my application server and recreating it, along with deleting and recreating his RD30 record. An IOS cache refresh along with a reboot of both my application server and web server had no effect. I’ve tried testing with Lawson security turned completely off and yet the error remains.

    I had the user log into our backup environment. He was able to view his paychecks without any error. I think that narrows the issue down to something on either our production application server or the production web server.

    I am able to run DME queries directly from his browser on his machine, hitting the PRTIME and PAYMASTR tables without a problem, bringing back paycheck data in raw XML.

    Lawson GSC is at a loss to explain the error.

    Any suggestions from the gurus here on the forum? I’m at my wits end.
    _________________ John - Wichita, KS
    Sam Simpson
    Veteran Member
    Posts: 239
    Veteran Member
      Try this.

      1. Let the user login to Lawson.
      2. call the refresh profile servlet - http://:/servlet/Profile?_REFRESH=True
      3. resfresh ios cache.

      hope this helps.
      John Henley
      Posts: 3353
        What platform / version of IOS and ESS are you running?
        Thanks for using the LawsonGuru.com forums!
        John
        John Henley
        Posts: 3353
          Check versions between production and backup server of DME.
          Do a compare/diff of paytyear.htm between the two servers.
          Between those two you should find the problem.
          If that doesn't uncover it, try with security off to rule out a security bug or perhaps orphaned data security rule,etc.
          Thanks for using the LawsonGuru.com forums!
          John
          John Costa
          Veteran Member
          Posts: 154
          Veteran Member
            We are on version 8.0.3, service pack 3 of IOS. ESS is version 8.1.0.50 (Yes, I know, very out of date, we're working on it...) Refreshing the user profile followed by an IOS cache refresh had no effect, the error remains.
            _________________ John - Wichita, KS
            Ragu Raghavan
            Veteran Member
            Posts: 475
            Veteran Member
              A while back, I was customizing some ESS/MSS code and I got a similar message:

              "Invalid Paraamter B-COR".

              Truned out that the Supervisor was defined as "B-COR&HR".

              The "&" in the process-level threw a DME call off. I had to do some ESCAPE/UNESCAPE in the code to take care of this. You could check and see if the Supervisor, process_level, department etc for the employee are the same in production/backup and if the production one has any special characters.
              ridjayc
              Veteran Member
              Posts: 191
              Veteran Member

                What is the code that you have for function GetPayment() in file paytyear.htm?

                For the "Pay Checks" link you said you were getting an error of "Invalid Parameter: Check_date>:" Are you getting the same error on “Year to Date”?
                John Costa
                Veteran Member
                Posts: 154
                Veteran Member
                  Thanks so much for your prompt responses thus far. I sincerely appreciate the effort.

                  I'll have to spend some time looking at the Supervisor, Process_Level, Department etc. to see if there's any special characters. Since I am able to bring up this employee's data under my modified RD30 record, I'm not sure if this would be the cause but I'll certainly take a look. Besides, the backup system database is a mirror of the production database, so the data contained within them is virtually idnetical. The backup database was restored from production backup taken this past Sunday.

                  Here is the code from the GetPayment() function:

                  function GetPayment()
                  {
                  var dmeObj = new DMEObject(authUser.prodline,"paymastr");
                  dmeObj.out = "JAVASCRIPT";
                  dmeObj.index = "pymset4";
                  dmeObj.field = "check-nbr;check-type,xlt;check-date;per-end-date;"
                  + "gross-pay;check-net;net-pay-amt;check-id;employee.full-name;"
                  + "employee.last-name;employee.first-name;employee.middle-init;"
                  + "employee.fica-nbr;employee.process-level;employee.department;"
                  + "employee.addr1;employee.addr2;employee.addr3;employee.addr4;"
                  + "employee.city;employee.state;employee.zip;country-code;"
                  + "employee.label-name-1;currency-code;cucodes.forms-exp";
                  dmeObj.select = "status=9";
                  dmeObj.key = authUser.company+"="+authUser.employee+"=";
                  // If this is the first call and the flag is set, look for future dated payments.
                  if (FUTUREPAYMTS) {
                  dmeObj.select += "&check-date>="+YYYYMMDD1;
                  }
                  else {
                  dmeObj.key += YYYYMMDD1+"->"+YYYYMMDD2;
                  }

                  dmeObj.max = "600";
                  dmeObj.sortdesc = "check-date";
                  dmeObj.func = "ProcessThisPayment()";
                  dmeObj.debug = false;
                  DME(dmeObj,"dmedata");
                  }

                  _________________ John - Wichita, KS
                  John Costa
                  Veteran Member
                  Posts: 154
                  Veteran Member
                    When the employee clicks on the 'Year to Date' link, the blue ribbon at the top of frame starts animating but nothing ever gets returned. Normally, I should see a drop-down appear listing years (2004 thru 2007).
                    _________________ John - Wichita, KS
                    ridjayc
                    Veteran Member
                    Posts: 191
                    Veteran Member
                      I don't know how much time you want to spend on this. This is a possiblity although I don't know if you really want to do this unless you can figure out a way to recreate the problem in a test environment.

                      You can make a custom copy of paychecks.htm possibly called xxPayChecks.htm
                      and also paytyear.htm to say xxPaytYear.htm. You would then modify xxPayChecks to point to xxPayTYear.htm. Then you can then add an alert near the bottom of GetPayment().

                      Something like

                      GetPayment()
                      {
                      .
                      .
                      .
                      alert('The dmeobj.select is ' + dmeObj.select);
                      .
                      .
                      }

                      I am guess that variable YYYYMMDD1 is not set correctly. If you confirm that it is not being set correctly then you can step back through say GetDateRange() and hopefully at some point finding out why.

                      John Henley
                      Posts: 3353
                        John, let's do what Jay is recommending, but instead of putting the alert in to show the dmeObj.select, I want you to change
                        dmeObj.debug = false;
                        to
                        dmeObj.debug = true;

                        This will give you a pop-up dialog when it does the DME call. Take a screen shot and look closely at the call.
                        DO NOT post the screenshot since it contains the SSN.
                        Type that call manually into a browser window, using that employees login and see what happens.
                        I agree with Ragu that you may have a stray ampersand in the call...or the result.
                        or perhaps the SELECT part of the DME call is getting messed up.
                        Thanks for using the LawsonGuru.com forums!
                        John
                        John Costa
                        Veteran Member
                        Posts: 154
                        Veteran Member
                          Thanks for the help folks. I checked the employee's record in both EMPLOYEE and PAEMPLOYEE. I could see nothing there out of the ordinary (no use of funky characters or anything). I'll try and modify the GetPayment() function to see if I can capture the DME query. It might be tough to do it today since I will be upgrading our backup system to ESP7/MSP6.
                          _________________ John - Wichita, KS
                          John Costa
                          Veteran Member
                          Posts: 154
                          Veteran Member
                            Attached is the DME query resulting from changing the debug flag in the GetPayment() function from "false" to "true". I didn't see a SSN in the screenshot so it looked OK to post here. Anything look strange? (I've erased the server name for security purposes.)
                            Attachments
                            _________________ John - Wichita, KS
                            John Henley
                            Posts: 3353
                              I think this is an issue with the URL encoding, which changed with IE7. If I do a DME query without encoding that select, I get the same error you're reporting. If I encode it, it works fine. So, did you post this screen shot from that user's PC/browser? I'm guessing you didn't, based on the fact that the function code that you posted doesn't match the &SELECT part of the DME query in your screen shot. So, try this:

                              In paytyear.htm on the server where you are having this problem, change:

                              dmeObj.select = "status=9";
                              to
                              dmeObj.select = "status%3D9";

                              and change:

                              dmeObj.select += "&check-date>="+YYYYMMDD1;
                              to
                              dmeObj.select += "%26check-date%3E%3D"+YYYYMMDD1;

                              Then stop/restart that web server. From that user's computer, make sure they have the IE cache = everytime setting, and clear the cache.
                              Have them login and try that page.
                              Thanks for using the LawsonGuru.com forums!
                              John
                              John Costa
                              Veteran Member
                              Posts: 154
                              Veteran Member
                                I went ahead and made the changes you suggested, updated the DME select statements as you suggested. After I restarted the TomCat service, the issue on the user's PC was RESOLVED! But, and this is a big one, now no one else can view their paychecks or Year-to-Date info. The following error is received: SELECT Option: Field Name Must Preceed Value. COMPANY=1
                                (I've attached a screen shot below).

                                Since the needs of the many outweigh the needs of the few (or the one), I restored the original paytyear.htm file.

                                Where to from here?
                                Attachments
                                _________________ John - Wichita, KS
                                John Henley
                                Posts: 3353
                                  Well, I'll take it this is good news, since it shows we're on the right path.
                                  OK, where to go from here. I would copy the paytyear.htm to paytyear_test.htm and change the "dmeObj.debug = true" so you can see the DME call in its entirety...

                                  Are all your users on IE7??

                                  BTW, while you're testing this, you can always copy paytyear.htm to a different file name, e.g. paytyear_test.htm and execute it directly, i.e. http://myserver/lawson/hrnet/paytyear_test.htm
                                  Thanks for using the LawsonGuru.com forums!
                                  John
                                  John Costa
                                  Veteran Member
                                  Posts: 154
                                  Veteran Member
                                    Thanks, John, I appreciate your efforts. Regarding Internet Explorer, we have a mixture of folks using IE7 as well as IE6. I wish it was standardized across the domain, but unfortunately that's not within my realm of control.

                                    For your info, I got the SELECT option error on two machines when trying to view my paychecks, one using IE7 and the other using IE6.

                                    Here's the resulting DME:

                                    Attachments
                                    _________________ John - Wichita, KS
                                    John Henley
                                    Posts: 3353
                                      It looks like you have some stray encoding-related characters in the &SELECT. For example:
                                      &SELECT=status%253D9%2526check-date
                                      should be:
                                      &SELECT=status%3D9%26check-date

                                      In other words, it's "double-encoding" the percent sign!
                                      Thanks for using the LawsonGuru.com forums!
                                      John
                                      John Costa
                                      Veteran Member
                                      Posts: 154
                                      Veteran Member
                                        Would there be a setting on my web server that controls this, such as something in IIS or IOSRE? This is a strange one since everyone is able to log into my backup system without error. We are right in the middle of upgrading our backup system to service pack 7 and we are shooting for October 13th to upgrade our production system. I'm beginning to think we won't find a resolution to this and that it will magically resolve itself once the upgrade is complete. I know, wishful thinking....
                                        _________________ John - Wichita, KS
                                        John Costa
                                        Veteran Member
                                        Posts: 154
                                        Veteran Member
                                          Would the user's PC be doing the double-encoding somehow?
                                          _________________ John - Wichita, KS