diff --git a/Modules/mip_quotation.pck b/Modules/mip_quotation.pck index d675b28..a69e029 100644 --- a/Modules/mip_quotation.pck +++ b/Modules/mip_quotation.pck @@ -245,23 +245,26 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation IS ,l_rec_costs.cost_price ,l_rec_costs.delivery_cost ,l_rec_costs.adit_code - FROM (SELECT decode(regi_code - ,p_regi_code - ,1 - ,999) AS accuracy - ,selling_price + FROM additional_items adit + ,(SELECT selling_price ,cost_price ,delivery_cost ,adit_code - FROM v_aico cost - WHERE adit_code = p_adit_code - AND SYSDATE BETWEEN cost.effective_from AND cost.effective_to - AND regi_code = p_regi_code - OR regi_code IS NULL - ORDER BY 1) cost - ,additional_items adit - WHERE adit.code = cost.adit_code(+) - AND rownum < 2; + FROM (SELECT row_number() over(PARTITION BY adit_code ORDER BY(decode(regi_code, p_regi_code, 1, 999))) AS accuracy + ,adit_code + ,selling_price + ,cost_price + ,delivery_cost + ,ROWID + FROM v_aico cost + WHERE adit_code = p_adit_code + AND SYSDATE BETWEEN cost.effective_from AND + cost.effective_to + AND regi_code = p_regi_code + OR regi_code IS NULL) + WHERE accuracy <= 1) cost + WHERE adit.code = cost.adit_code + AND adit.code = p_adit_code; RETURN l_rec_costs; @@ -285,6 +288,10 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation IS cout_assert.isnotnull(l_regi_code ,'Attempted to produce an install quote for enquiry for a installation postcode (' || p_enqu.install_postcode || ') without a region.'); + add_quote_reason(p_enqu.id + ,p_reason => 'Attempting an automatic quote for ' || + p_enqu.id || '.' + ,p_internal_or_external => g_internal_reason); FOR l_rec_module IN (SELECT modu.code AS modu_code ,modu.selling_price AS modu_selling_price @@ -306,6 +313,10 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation IS ,metr.selling_price AS metr_selling_price ,metr.cost_price AS metr_cost_price ,metr.delivery_cost AS metr_delivery_cost + ,metr.mety_code + ,laco.selling_price /*NULL*/ AS laco_selling_price + ,laco.cost_price /*NULL*/ AS laco_cost_price + ,laco.delivery_cost /*NULL*/ AS laco_delivery_cost ,NULL AS amr_cost_id ,NULL AS amr_selling_price ,NULL AS amr_cost_price @@ -356,6 +367,45 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation IS OR regi_code IS NULL) WHERE accuracy <= 1) cost WHERE modu.code = cost.modu_code(+)) modu + ,(SELECT enty_code + ,mety_code + ,svcpt_code + ,mesc_code + ,svcp_code + ,selling_price + ,cost_price + ,delivery_cost + FROM enquiry_types enty + ,(SELECT enty_code + ,mety_code + ,svcpt_code + ,mesc_code + ,svcp_code + ,selling_price + ,cost_price + ,delivery_cost + FROM (SELECT row_number() over(PARTITION BY enty_code, mety_code, cost.svcpt_code, mesc_code ORDER BY(decode(regi_code, l_regi_code, 1, 999))) AS accuracy + ,enty_code + ,mety_code + ,cost.svcpt_code + ,mesc_code + ,selling_price + ,cost_price + ,delivery_cost + ,cost.ROWID + ,svcp.code AS svcp_code + FROM v_laco cost + ,service_pressures svcp + WHERE SYSDATE BETWEEN + cost.effective_from AND + cost.effective_to + AND (regi_code = + l_regi_code OR + regi_code IS NULL) + AND cost.svcpt_code = + svcp.svcpt_code(+)) + WHERE accuracy <= 1) cost + WHERE enty.code = cost.enty_code(+)) laco ,(SELECT code ,selling_price ,cost_price @@ -408,6 +458,7 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation IS ,metr.qmax ,metr.qmin ,metr.qnom + ,metr.mety_code ,selling_price ,cost_price ,delivery_cost @@ -436,6 +487,16 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation IS p_enqu.required_metering_pressure AND metr.code = modu.metr_code AND metr.qmax >= p_enqu.qmax + AND (laco.enty_code = p_enqu.enty_code AND + laco.mety_code = metr.mety_code AND + ((laco.svcp_code = + p_enqu.required_svcp_code) OR + (laco.svcp_code IS NULL AND + p_enqu.required_svcp_code IS NULL)) AND + ((laco.mesc_code = + p_enqu.required_mesc_code) OR + (laco.mesc_code IS NULL AND + p_enqu.required_mesc_code IS NULL))) AND ((bas_code IS NULL AND p_enqu.base_required <> 'YES') OR (bas_code IS NOT NULL AND @@ -478,6 +539,22 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation IS l_rec_module.metr_code || '.' ,p_internal_or_external => g_internal_reason); END IF;*/ + IF l_rec_module.laco_selling_price IS NULL THEN + l_this_is_automatic_quote := FALSE; + add_quote_reason(p_enqu.id + ,p_reason => 'Labour costs: enty_code=' || + p_enqu.enty_code || ', svcp_code=' || + p_enqu.required_svcp_code || + ', mesc_code=' || + p_enqu.required_mesc_code || + ', mety_code=' || + l_rec_module.mety_code || '.' + /* + ,p_reason => 'Unable to find Labour Cost (selling price) for enquiry type ' || + p_enqu.enty_code || CASE l_regi_code WHEN NULL THEN '' ELSE ' for region code ' || l_regi_code END || '.' + */ + ,p_internal_or_external => g_internal_reason); + END IF; IF p_enqu.base_required = 'YES' AND l_rec_module.bas_selling_price IS NULL THEN l_this_is_automatic_quote := FALSE; @@ -527,10 +604,10 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation IS ,p_reason => 'Unable to find selling price for EMS.' ,p_internal_or_external => g_internal_reason); END IF; - IF l_rec_module.amr_lead_time IS NULL THEN + IF l_rec_module.ems_lead_time IS NULL THEN l_this_is_automatic_quote := FALSE; add_quote_reason(p_enqu.id - ,p_reason => 'Unable to find lead time for AMR.' + ,p_reason => 'Unable to find lead time for EMS.' ,p_internal_or_external => g_internal_reason); END IF; END IF; @@ -561,6 +638,7 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation IS l_rec_module.logger_selling_price := l_aico_costs.selling_price; l_rec_module.logger_cost_price := l_aico_costs.cost_price; l_rec_module.logger_delivery_cost := l_aico_costs.delivery_cost; + l_rec_module.logger_lead_time := l_aico_costs.lead_time; IF l_rec_module.logger_selling_price IS NULL THEN l_this_is_automatic_quote := FALSE; add_quote_reason(p_enqu.id @@ -623,6 +701,22 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation IS ,l_rec_module.modu_delivery_cost ,'MQI'); + INSERT INTO quote_items + (id + ,qute_id + ,enty_code + ,cost_price + ,selling_price + ,delivery_price + ,quit_type) + VALUES + (quit_seq.NEXTVAL + ,l_qute_id + ,p_enqu.enty_code + ,l_rec_module.laco_cost_price + ,l_rec_module.laco_selling_price + ,l_rec_module.laco_delivery_cost + ,'LQI'); IF l_rec_module.hou_code IS NOT NULL THEN INSERT INTO quote_items (id