/****************************************************************************** Procedure: set_pt_contrib Purpose: Set Mean Collection Geography, Genetic Worth (GW), Effective Population Size (Ne) and other values calculated based on Parent Tree Contribution. p_replace_values = TRUE forces replacing of calculated values (otherwise they are only replaced based on status or the user blanking-out the current value) ******************************************************************************/ PROCEDURE set_pt_contrib ( p_replace_values IN BOOLEAN ) IS CONST_DEFAULT_UNTESTED_GW_G CONSTANT NUMBER(1) := SPR_CONSTANTS.CONST_DEFAULT_GEN_QLTY_G; CONST_DEFAULT_CUSTOM_GW_G CONSTANT NUMBER(1) := SPR_CONSTANTS.CONST_DEFAULT_GEN_QLTY_G; CONST_DEFAULT_UNTESTED_GW_D CONSTANT NUMBER(1) := SPR_CONSTANTS.CONST_DEFAULT_GEN_QLTY_D; CONST_DEFAULT_CUSTOM_GW_D CONSTANT NUMBER(1) := SPR_CONSTANTS.CONST_DEFAULT_GEN_QLTY_D; CONST_DEFAULT_UNTESTED_GW_R CONSTANT NUMBER(1) := SPR_CONSTANTS.CONST_DEFAULT_GEN_QLTY_R; CONST_DEFAULT_CUSTOM_GW_R CONSTANT NUMBER(1) := SPR_CONSTANTS.CONST_DEFAULT_GEN_QLTY_R; CONST_DEFAULT_UNTESTED_GW_M CONSTANT NUMBER(1) := SPR_CONSTANTS.CONST_DEFAULT_GEN_QLTY_R; CONST_DEFAULT_CUSTOM_GW_M CONSTANT NUMBER(1) := SPR_CONSTANTS.CONST_DEFAULT_GEN_QLTY_R; b_all_gw_blank boolean := FALSE; BEGIN --Collection Elev (do mean/min/max as a unit since only mean is --on the page and can be blanked for replacing) IF replace_area_of_use(TO_CHAR(g_collection_elevation)) OR p_replace_values THEN set_collection_elevation(r_pt_contrib.collection_elevation); set_collection_elevation_min(r_pt_contrib.collection_elevation_min); set_collection_elevation_max(r_pt_contrib.collection_elevation_max); END IF; --Collection Latitude IF is_area_of_use_status OR is_collection_lat_empty OR p_replace_values THEN set_collection_lat_deg(r_pt_contrib.collection_lat_deg); set_collection_lat_min(r_pt_contrib.collection_lat_min); set_collection_lat_sec(r_pt_contrib.collection_lat_sec); END IF; --Collection Longitude IF is_area_of_use_status OR is_collection_long_empty OR p_replace_values THEN set_collection_long_deg(r_pt_contrib.collection_long_deg); set_collection_long_min(r_pt_contrib.collection_long_min); set_collection_long_sec(r_pt_contrib.collection_long_sec); END IF; --SMP Mean BV-G IF replace_area_of_use(TO_CHAR(g_smp_mean_bv_growth)) OR p_replace_values THEN set_smp_mean_bv_growth(r_pt_contrib.smp_mean_bv_growth); END IF; --SMP Mean BV-D IF replace_area_of_use(TO_CHAR(g_smp_mean_bv_density)) OR p_replace_values THEN set_smp_mean_bv_density(r_pt_contrib.smp_mean_bv_density); END IF; --SMP Mean BV-R IF replace_area_of_use(TO_CHAR(g_smp_mean_bv_resistance)) OR p_replace_values THEN set_smp_mean_bv_resistance(r_pt_contrib.smp_mean_bv_resistance); END IF; --SMP Mean BV-M IF replace_area_of_use(TO_CHAR(g_smp_mean_bv_major_gene)) OR p_replace_values THEN set_smp_mean_bv_major_gene(r_pt_contrib.smp_mean_bv_major_gene); END IF; --SMP Success IF replace_area_of_use(TO_CHAR(g_smp_success_pct)) OR p_replace_values THEN set_smp_success_pct(r_pt_contrib.smp_success_pct); END IF; --Orchard Contam IF replace_area_of_use(TO_CHAR(g_orchard_contamination_pct)) OR p_replace_values THEN set_orchard_contamination_pct(r_pt_contrib.orchard_contamination_pct); END IF; --Effective Population Size IF replace_area_of_use(TO_CHAR(g_effective_pop_size)) OR p_replace_values THEN set_effective_pop_size(r_pt_contrib.effective_pop_size); END IF; --Total Parent Trees and ratio untested and tested set_total_parent_trees(r_pt_contrib.total_parent_trees); g_tested_parent_trees_pct := r_pt_contrib.pct_tested_parent_trees; g_untested_parent_trees_pct := r_pt_contrib.pct_untested_parent_trees; -- If all the gw values have been blanked-out, reset to the calculated gw values. IF g_gw_g IS NULL AND g_gw_d IS NULL AND g_gw_r IS NULL AND g_gw_m IS NULL THEN b_all_gw_blank := TRUE; END IF; --Genetic Worth - Growth -->NOTE: Interim rule (see pt#28587) - if GW-G has been blanked and another GW value exists do not replace GW-G IF is_area_of_use_status OR p_replace_values OR b_all_gw_blank THEN set_gw_g(NULL); IF g_seedlot_source_code = 'UPT' THEN IF r_pt_contrib.total_parent_trees > 0 THEN --Untested lots get default GW-G value set_gw_g(CONST_DEFAULT_UNTESTED_GW_G); END IF; ELSIF g_seedlot_source_code = 'CUS' THEN IF r_pt_contrib.total_parent_trees > 0 THEN --Custom lots get default GW-G value set_gw_g(CONST_DEFAULT_CUSTOM_GW_G); END IF; ELSE set_gw_g(r_pt_contrib.gw_g); END IF; END IF; --Genetic Worth - Density IF is_area_of_use_status OR p_replace_values OR b_all_gw_blank THEN set_gw_d(NULL); IF g_seedlot_source_code = 'UPT' AND r_pt_contrib.gw_d IS NOT NULL THEN IF r_pt_contrib.total_parent_trees > 0 THEN --Untested lots get default GW-D value set_gw_d(CONST_DEFAULT_UNTESTED_GW_D); END IF; ELSIF g_seedlot_source_code = 'CUS' AND r_pt_contrib.gw_d IS NOT NULL THEN IF r_pt_contrib.total_parent_trees > 0 THEN --Custom lots get default GW-D value set_gw_d(CONST_DEFAULT_CUSTOM_GW_D); END IF; ELSE set_gw_d(r_pt_contrib.gw_d); END IF; END IF; --Genetic Worth - Resistance IF is_area_of_use_status OR p_replace_values OR b_all_gw_blank THEN set_gw_r(NULL); IF g_seedlot_source_code = 'UPT' AND r_pt_contrib.gw_r IS NOT NULL THEN IF r_pt_contrib.total_parent_trees > 0 THEN --Untested lots get default GW-R value set_gw_r(CONST_DEFAULT_UNTESTED_GW_R); END IF; ELSIF g_seedlot_source_code = 'CUS' AND r_pt_contrib.gw_r IS NOT NULL THEN IF r_pt_contrib.total_parent_trees > 0 THEN --Custom lots get default GW-R value set_gw_r(CONST_DEFAULT_CUSTOM_GW_R); END IF; ELSE set_gw_r(r_pt_contrib.gw_r); END IF; END IF; --Genetic Worth - Major Gene Resistance IF is_area_of_use_status OR p_replace_values OR b_all_gw_blank THEN set_gw_m(NULL); IF g_seedlot_source_code = 'UPT' AND r_pt_contrib.gw_m IS NOT NULL THEN IF r_pt_contrib.total_parent_trees > 0 THEN --Untested lots get default GW-M value set_gw_m(CONST_DEFAULT_UNTESTED_GW_M); END IF; ELSIF g_seedlot_source_code = 'CUS' AND r_pt_contrib.gw_m IS NOT NULL THEN IF r_pt_contrib.total_parent_trees > 0 THEN --Custom lots get default GW-M value set_gw_m(CONST_DEFAULT_CUSTOM_GW_M); END IF; ELSE set_gw_m(r_pt_contrib.gw_m); END IF; END IF; END set_pt_contrib;