This page (revision-4) was last changed on 26-Nov-2021 10:22 by khiggs

This page was created on 26-Nov-2021 10:22 by khiggs

Only authorized users are allowed to rename pages.

Only authorized users are allowed to delete pages.

Page revision history

Version Date Modified Size Author Changes ... Change note
4 26-Nov-2021 10:22 5 KB khiggs to previous
3 26-Nov-2021 10:22 4 KB khiggs to previous | to last
2 26-Nov-2021 10:22 7 KB khiggs to previous | to last
1 26-Nov-2021 10:22 7 KB khiggs to last

Page References

Incoming links Outgoing links

Version management

Difference between version and

At line 1 changed one line
PL/SQL validation routine can be called to replace the default "submit" function on a timesheet. When a timesheet is submitted, if the timesheet does not meet the criteria of the validation routine, a customer-defined message will appear as a pop-up dialog and the timesheet will not change status.
PL/SQL validation routine can be called to replace the default "submit" function on a timesheet. When a timesheet is submitted, if the timesheet does not meet the criteria of the validation routine, a customer defined message will appear as a pop up dialog and the timesheet will not change status.
At line 6 changed one line
A user-defined system message must be created on IMMS. The message should be prefixed with PTSV_######
A user defined system message must be created on IMMS. The message should be prefixed with PTSV_######
At line 8 changed 3 lines
The message will be text and will need to be a predefined hardcoded value built into the MESSAGE_TEXT field.
!Function Definition (PL/SQL)
The function must be defined in the database as a PL/SQL function.
!Function Definition
The function must be defined in the data base as a PL/SQL function.
At line 12 changed one line
*The function must return either a NULL or the number portion of a code name of a user-defined message defined in the IMMS screen.
*The function must return either a NULL or the number portion of a code name of a user defined message defined in the IMMS screen.
At line 17 changed one line
** If you are going to have many conditions that will require validation, you may find it advantageous to create a package with your customer prefix, and then include all the different validation routines as separate functions within that package. This keeps all your work together in one place.
** If you are going to have many conditions that will require validation, you may find it advantageous to create a package with your customer prefix, and then include all the different validation routines as seperate functions within that package. This keeps all your work together in one place.
At line 22 changed one line
Once the function and system message have been established, all the functions that will use the routine must be set up. There are two steps required on each function in which the routine is to be called
Once the function and system message has been established, all the functions that will use the routine must be set up. There are two steps required on each function in which the routine is to be called
At line 24 changed one line
2) On the Form Layout tab, add the PTS.ACT_VALIDATE_SUBMIT_TIME_SHEET_NO_DLG to the form. If the form is "Pre-Loaded" use object security to remove the default PTS.ACT_SUBMIT_TIME_SHEET option (If custom, the PTS.ACT_SUBMIT_TIME_SHEET can be deleted from the form).
2) On the Form Layout tab, add the PTS.ACT_VALIDATE_SUBMIT_TIME_SHEET_NO_DLG to the form. If the form is "Pre-Loaded" use object security to remove the default PTS.ACT_SUBMIT_TIME_SHEET option (If custom, the PTS.ACT_SUBMIT_TIME_SHEET can be delete from the form).
At line 30 changed one line
*If the total number of hours in the timesheet is less than the number 40, the function will return the number "0001".
*If the total number of hours in the timesheet is less than the number defined on the IEAS, the function will return the number "0001".
At line 32 removed one line
*Built into this function is a requirement for a TIME_CODE_SET set up on [IDTCS] called "TIME_SHEET_TOTALS"
At line 38 changed 32 lines
CREATE OR REPLACE
FUNCTION ACME_PTS_SCHED_HOURS(P_PTS_ID IN NUMBER)
RETURN VARCHAR2 AS
--Return system message 0001 if the TS total is less than 40.
v_return VARCHAR2(60);
v_pts_id NUMBER(10):=P_PTS_ID;
v_total_hrs NUMBER(10,2);
BEGIN
SELECT SUM(TIME_OR_AMOUNT)
INTO v_total_hrs
FROM p2k_PR_TIME_SHEET_ENTRIES
WHERE TIME_SHEET_ENTRY_SOURCE <> '05'
AND PTS_ID = v_pts_id
AND DTC_ID IN
(SELECT DTCD.DTC_ID
FROM P2K_CM_TIME_CODE_SETS DTCS, P2K_CM_TIME_CODE_SET_DETAILS DTCD
WHERE DTCS.TIME_CODE_SET_CODE = 'TIME_SHEET_TOTALS'
AND DTCS.ID = DTCD.DTCS_ID);
IF v_total_hrs > 40
THEN v_return:='0001';
END IF;
RETURN v_return;
EXCEPTION
WHEN OTHERS THEN
RETURN '0000';
END ACME_PTS_SCHED_HOURS;
//
create or replace
FUNCTION ACME_PADAYS (p_eem_id IN NUMBER) RETURN NUMBER AS
v_return number(18,6);
BEGIN
select AMOUNT
into v_return
from P2K_HR_STATISTICS
where eem_id = p_eem_id
and dsc_id = (select ID from p2k_cm_statistic_components
where stat_code = 'STAT-PA-DAYS');
return v_return;
EXCEPTION
WHEN OTHERS then return NULL;
END ACME_PADAYS;
/
At line 75 changed 2 lines
create public synonym ACME_PTS_SCHED_HOURSfor ACME_PTS_SCHED_HOURS;
grant execute on ACME_PTS_SCHED_HOURSto P2K_USER;
create public synonym ACME_PADAYS for ACME_PADAYS;
grant execute on ACME_PADAYS to P2K_USER;
At line 62 added 34 lines
[More User Formula Examples|USER_FORMULA_EXAMPLES]
This function can be tested with the following select statements:
* {{SELECT ACME_PADAYS(12345) FROM DUAL;}} where 12345 is the ID of an employee's EMPLOYMENT record ([IEEI])
* {{SELECT ACME_PADAYS(ID) FROM P2K_HR_EMPLOYMENTS WHERE ...}}etc. will take the ID straight from the table.
!!Table Definition (IMCD)
Once we have the function defined and working, we can extend the table (in our example [P2K_HR_EMPLOYMENTS]) to include this User Formula Column. This is done in the [IMCD] screen by adding a new column with the following fields filled in:
;[Sequence]:It is recommended that you start your sequencing at 9000 and work down, so as to not collide with provided sequence numbers
;[Column Name|COLUMN_NAME]:The name you wish to refer to this column in screen design. It is recommended that you start your column name with the same identifier as your function, so as to preclude confusion with provided values. (i.e. ACME_xxxx)
;[Prompt|FIELD_PROMPT]:This is optional, but recommended. Any prompt you provide here will be used in screen layouts, but can always be overridden at each usage.
;[Column Usage|COLUMN_USAGE]: __Must be User Formula__
;[Data Type|DATA_TYPE]: Must be the same type that the function returns (Number, Date, Varchar2)
;[Domain Name|DOMAIN]: __Must be of the type indicated by the function return__ ([DATE] for date fields; [VARCHARnn] for character fields (e.g. VARCHAR30); [NUMBERn] for whole number fields; [AMTnn]Vn for numeric fields with decimals, must be one of the standard set.
;[Length|VALUE_LENGTH]: Optional, but recommended
;[Format|VALUE_FORMAT]: Optional, but may be used for date or number variables
;[User Formula (Defaulted From)|DEFAULT_FROM]: __Must contain the name of the PL/SQL Function__
%%information
Note that once the field has been added to the table, you will not see this new field right away as this information is key to the application and thus will only be picked up on an instance restart.
Restart the application instance.
%%
!!Screen Definition (IMFD)
Now that we have a field on the table that will return to us the value we wish, we can add this field to any form that has access to the ID referred to in the function / table definition. This is performed on the [IMFD] screen's form layout tab.
It is important to note that any such fields added, must be added with:
;[Item Type|ITEM_TYPE]:''Display Only'' so end users are not given the impression that they can update this value on the screen indicated.
;[Item Usage|FORM_ITEM_USAGE]: ''User Defined'' so it is not overlaid by a subsequent release.