The "pay period number" is interesting. Looks like you are chopping up all 2 week periods since April 29, 2017 into sequential pay weeks since starting operations or something. With the first two weeks being pay period 1 and the most recent two weeks being 95. Let me know if that's not accurate. Here is a step by step, color-coded breakdown of the components of your existing expression for "pay period number" into a Cognos expression:
As for the "pay period end date", it looks like your pay periods begin, and include, a Saturday and then end, and include, a Friday two weeks later. An example on my end is:
Let me know if this is the case, or if it the logic needs to be adjusted. Depending on our answer, we might be able to come up with something for this expression.
P.S. - You may want to consider putting these calculations into the underlying database or within the framework. Reason is if you have a lot of data and you, for example, put this calculation into a report and want to filter for pay period number = 90... the application has to first calculate all the data in the database first before it can then filter on the pay period number you want. I've encountered this when calculating different timezones and wanting to filter on everything that was, let's say, 9:00am CST. Takes forever to run.Another option is to create a table called PAY_PERIODS in your database with three columns named DATE, PAY PERIOD NUMBER, and PAY PERIOD END DATE. You can pre-calculate all the values from April 29, 2017 through the next 20 years or whatever (in Excel is easy). Then insert all those records to the Oracle database table. Once done, you use the Framework Manager to map PAY_PERIODS.DATE to 'Table'[Date] from above. This would be a more optimal solution.
Hope this helps!