Clarity

 View Only
  • 1.  Custom Timesheet portlet row data repetition

    Posted Jan 11, 2017 12:16 AM

    Hi,

    With a grid portlet, I've displayed time sheet entry with timesheet status posted and adjusted. But in this case I get repetition where a resource is charged twice with status Posted time sheet entry and again with status Adjusted time sheet status. Can you please suggest a work around to avoid this recurrence with the portlet?

     

    Thanks in advance.

     

    Monica



  • 2.  Re: Custom Timesheet portlet row data repetition

    Broadcom Employee
    Posted Jan 11, 2017 12:54 AM

    Hi Monica,

     

    If there is repetition then there is something wrong with the query, if you can post your query that will help.

     

    Regards

    Suman Pramanik  



  • 3.  Re: Custom Timesheet portlet row data repetition

    Posted Jan 11, 2017 01:48 AM

    Sure, Suman! I'm new to timesheet and I'm reworking on an existing portlet, so it would be great if you can incorporate some basic details about timesheet tables too! Here is my query:

     

    SELECT tp.prid period_int_id
    , tp.prfinish period_ending
    , srm.id res_int_id
    , srm.full_name res_name
    , st.name timesheet_status
    , inv.id proj_int_id
    , inv.odf_object_code task_type
    , inv.name || '/' || tsk.prname proj_task_name
    , rcc.name res_cost_center
    , res_obs.obs_unit_id res_obs_id
    , res_obs.level2_name res_function
    , rol.full_name res_role
    , dep_obs.level3_name res_region
    , dep_obs.level4_name res_country
    , srm.date_of_hire res_hire_date
    , mgr.full_name proj_manager
    , odfp.cost_center proj_cost_center
    , odfp.ge_region proj_region
    , odfp.ge_country proj_country
    , odfp.ge_company_code proj_company_code
    , odfp.ge_cps_number proj_cps_number
    , odfp.ge_exp_prj_code exp_proj_code
    , odfp.ge_local_sap_prj_num local_sap_proj_num
    , odfp.ge_wbs_element proj_wbs_element
    , odfp.ge_asiapac_int_order proj_asiapac_int_order
    , odfp.ge_se_dummy_code proj_se_dummy_code
    , odfp.ge_uk_dummy_code proj_uk_dummy_code
    , odfp.ge_status proj_ge_status
    , proj_obs.obs_unit_id proj_obs_id
    , pacc.id res_class_id
    , pacr.resource_class res_class
    , ppav.numval1 labour_rate
    , SUM(te.practsum/3600) hours_billed
    , ppav.numval1*SUM(te.practsum/3600) proj_billing_charge
    FROM prtimeentry te
    INNER JOIN prtimesheet ts
    ON ts.prid = te.prtimesheetid
    INNER JOIN prtimeperiod tp
    ON tp.prid = ts.prtimeperiodid
    INNER JOIN srm_resources srm
    ON srm.id = ts.prresourceid
    INNER JOIN odf_ca_resource odfr
    ON odfr.id = srm.id
    INNER JOIN prj_resources res
    ON res.prid = srm.id
    INNER JOIN pac_mnt_resources pacr
    ON pacr.id = srm.id
    INNER JOIN srm_resources rol
    ON rol.id = res.prprimaryroleid
    INNER JOIN cmn_lookups_v st
    ON st.lookup_type    = 'TIMESHEET_STATUS'
    AND st.language_code = 'en'
    AND st.lookup_enum   = ts.prstatus
    INNER JOIN prassignment asn
    ON asn.prid = te.prassignmentid
    INNER JOIN prtask tsk
    ON tsk.prid = asn.prtaskid
    INNER JOIN inv_investments inv
    ON inv.id = tsk.prprojectid
    INNER JOIN odf_ca_project odfp
    ON odfp.id = inv.id
    INNER JOIN srm_resources mgr
    ON mgr.user_id = inv.manager_id
    LEFT OUTER JOIN pac_fos_resource_class pacc
    ON pacc.resource_class = pacr.resource_class
    LEFT OUTER JOIN ppa_matrixvalues ppav
    ON ppav.value2 = pacr.resource_class
    LEFT OUTER JOIN ppa_matrix ppa
    ON ppa.matrixkey = ppav.matrixkey
    AND ppa.description = 'Labor Rate Matrix'
    LEFT OUTER JOIN cmn_lookups_v rcc
    ON rcc.lookup_type = 'AZ_RES_COST_CENTER'
    AND rcc.language_code = 'en'
    AND rcc.lookup_enum = odfr.az_cost_center
    LEFT OUTER JOIN
    (
    SELECT obsa.record_id
    , obsu.obs_unit_id
    , obsu.level2_name
    FROM prj_obs_associations obsa
    INNER JOIN nbi_dim_obs obsu
    ON obsu.obs_unit_id = obsa.unit_id
    AND obsu.obs_type_name  = 'Delivery and Resource Management'
    WHERE obsa.table_name = 'SRM_RESOURCES'
    ) res_obs
    ON res_obs.record_id = srm.id
    LEFT OUTER JOIN
    (
    SELECT obsa.record_id
    , obsu.obs_unit_id
    , obsu.level3_name
    , obsu.level4_name
    FROM prj_obs_associations obsa
    INNER JOIN nbi_dim_obs obsu
    ON obsu.obs_unit_id = obsa.unit_id
    AND obsu.obs_type_name  = 'AstraZeneca Dept Organisation'
    WHERE obsa.table_name = 'SRM_RESOURCES'
    ) dep_obs
    ON dep_obs.record_id = srm.id
    LEFT OUTER JOIN
    (
    SELECT obsa.record_id
    , obsu.obs_unit_id
    FROM prj_obs_associations obsa
    INNER JOIN nbi_dim_obs obsu
    ON obsu.obs_unit_id = obsa.unit_id
    AND obsu.obs_type_name  = 'AstraZeneca Dept Organisation'
    WHERE obsa.table_name = 'SRM_PROJECTS'
    ) proj_obs
    ON proj_obs.record_id = inv.id
    GROUP BY tp.prid
    , tp.prfinish
    , srm.id
    , srm.full_name
    , st.name
    , inv.odf_object_code
    , inv.id
    , inv.name
    , tsk.prname
    , rcc.name
    , res_obs.obs_unit_id
    , res_obs.level2_name
    , rol.full_name
    , dep_obs.level3_name
    , dep_obs.level4_name
    , srm.date_of_hire
    , mgr.full_name
    , odfp.cost_center
    , odfp.ge_region
    , odfp.ge_country
    , odfp.ge_company_code
    , odfp.ge_cps_number
    , odfp.ge_exp_prj_code
    , odfp.ge_local_sap_prj_num
    , odfp.ge_wbs_element
    , odfp.ge_asiapac_int_order
    , odfp.ge_se_dummy_code
    , odfp.ge_uk_dummy_code
    , odfp.ge_status
    , ppav.numval1
    , proj_obs.obs_unit_id
    , pacc.id
    , pacr.resource_class



  • 4.  Re: Custom Timesheet portlet row data repetition

    Broadcom Employee
    Posted Jan 11, 2017 02:04 AM

    Hi Monica,

     

    I see you are joining rate matrix and OBS, you can make it much simpler by taking prtimesheet table for timesheet, joining with srm resources. It will give you the desired results.

     

    Regards

    Suman Pramanik 



  • 5.  Re: Custom Timesheet portlet row data repetition

    Posted Jan 11, 2017 02:10 AM

    Suman, can you please brief it?



  • 6.  Re: Custom Timesheet portlet row data repetition
    Best Answer

    Posted Jan 11, 2017 02:58 AM

    Hey Monica,

       I think, you need to put in a logic that does this:

    1. If for a given PRTIMESHEET.PRTIMEPERIODID, there are rows with PRSTATUS = 4 AND PRSTATUS = 5, then ignore rows with PRSTATUS = 5 (because these are Adjusted rows and no longer give the correct data)

     

    A simple query to do this below.. I have not validated it.. This is just to give you an idea of how it can be accomplished.


    select pre.practsum/3600, prta.prname
    from prtimeentry pre
    join prtimesheet prs on prs.prid = pre.prtimesheetid
    join prtimeperiod prt on prt.prid = prs.prtimeperiodid
    join prassignment pra on pra.prid = pre.prassignmentid
    join prtask prta on prta.prid = pra.prtaskid

     

    minus

     

    select pre.practsum/3600, prta.prname
    from prtimeentry pre
    join prtimesheet prs on prs.prid = pre.prtimesheetid
    join prtimeperiod prt on prt.prid = prs.prtimeperiodid
    join prassignment pra on pra.prid = pre.prassignmentid
    join prtask prta on prta.prid = pra.prtaskid
    and prs.prstatus = 5
    ;



  • 7.  Re: Custom Timesheet portlet row data repetition

    Posted Jan 11, 2017 03:41 AM

    Hey thanks a lot, Jeevan. That was so helpful and it worked! Also with the query,  I added PRSTATUS =4 and PRSTATUS=5 to the first part.