Modified mip_quotation.pck to generate labour quote items for installations.
git-svn-id: http://locode01.ad.dom/svn/WEBMIP/trunk@3150 248e525c-4dfb-0310-94bc-949c084e9493
This commit is contained in:
@@ -245,23 +245,26 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation IS
|
|||||||
,l_rec_costs.cost_price
|
,l_rec_costs.cost_price
|
||||||
,l_rec_costs.delivery_cost
|
,l_rec_costs.delivery_cost
|
||||||
,l_rec_costs.adit_code
|
,l_rec_costs.adit_code
|
||||||
FROM (SELECT decode(regi_code
|
FROM additional_items adit
|
||||||
,p_regi_code
|
,(SELECT selling_price
|
||||||
,1
|
|
||||||
,999) AS accuracy
|
|
||||||
,selling_price
|
|
||||||
,cost_price
|
,cost_price
|
||||||
,delivery_cost
|
,delivery_cost
|
||||||
,adit_code
|
,adit_code
|
||||||
FROM v_aico cost
|
FROM (SELECT row_number() over(PARTITION BY adit_code ORDER BY(decode(regi_code, p_regi_code, 1, 999))) AS accuracy
|
||||||
WHERE adit_code = p_adit_code
|
,adit_code
|
||||||
AND SYSDATE BETWEEN cost.effective_from AND cost.effective_to
|
,selling_price
|
||||||
AND regi_code = p_regi_code
|
,cost_price
|
||||||
OR regi_code IS NULL
|
,delivery_cost
|
||||||
ORDER BY 1) cost
|
,ROWID
|
||||||
,additional_items adit
|
FROM v_aico cost
|
||||||
WHERE adit.code = cost.adit_code(+)
|
WHERE adit_code = p_adit_code
|
||||||
AND rownum < 2;
|
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;
|
RETURN l_rec_costs;
|
||||||
|
|
||||||
@@ -285,6 +288,10 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation IS
|
|||||||
cout_assert.isnotnull(l_regi_code
|
cout_assert.isnotnull(l_regi_code
|
||||||
,'Attempted to produce an install quote for enquiry for a installation postcode (' ||
|
,'Attempted to produce an install quote for enquiry for a installation postcode (' ||
|
||||||
p_enqu.install_postcode || ') without a region.');
|
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
|
FOR l_rec_module IN (SELECT modu.code AS modu_code
|
||||||
,modu.selling_price AS modu_selling_price
|
,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.selling_price AS metr_selling_price
|
||||||
,metr.cost_price AS metr_cost_price
|
,metr.cost_price AS metr_cost_price
|
||||||
,metr.delivery_cost AS metr_delivery_cost
|
,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_cost_id
|
||||||
,NULL AS amr_selling_price
|
,NULL AS amr_selling_price
|
||||||
,NULL AS amr_cost_price
|
,NULL AS amr_cost_price
|
||||||
@@ -356,6 +367,45 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation IS
|
|||||||
OR regi_code IS NULL)
|
OR regi_code IS NULL)
|
||||||
WHERE accuracy <= 1) cost
|
WHERE accuracy <= 1) cost
|
||||||
WHERE modu.code = cost.modu_code(+)) modu
|
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
|
,(SELECT code
|
||||||
,selling_price
|
,selling_price
|
||||||
,cost_price
|
,cost_price
|
||||||
@@ -408,6 +458,7 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation IS
|
|||||||
,metr.qmax
|
,metr.qmax
|
||||||
,metr.qmin
|
,metr.qmin
|
||||||
,metr.qnom
|
,metr.qnom
|
||||||
|
,metr.mety_code
|
||||||
,selling_price
|
,selling_price
|
||||||
,cost_price
|
,cost_price
|
||||||
,delivery_cost
|
,delivery_cost
|
||||||
@@ -436,6 +487,16 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation IS
|
|||||||
p_enqu.required_metering_pressure
|
p_enqu.required_metering_pressure
|
||||||
AND metr.code = modu.metr_code
|
AND metr.code = modu.metr_code
|
||||||
AND metr.qmax >= p_enqu.qmax
|
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
|
AND ((bas_code IS NULL AND
|
||||||
p_enqu.base_required <> 'YES') OR
|
p_enqu.base_required <> 'YES') OR
|
||||||
(bas_code IS NOT NULL AND
|
(bas_code IS NOT NULL AND
|
||||||
@@ -478,6 +539,22 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation IS
|
|||||||
l_rec_module.metr_code || '.'
|
l_rec_module.metr_code || '.'
|
||||||
,p_internal_or_external => g_internal_reason);
|
,p_internal_or_external => g_internal_reason);
|
||||||
END IF;*/
|
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'
|
IF p_enqu.base_required = 'YES'
|
||||||
AND l_rec_module.bas_selling_price IS NULL THEN
|
AND l_rec_module.bas_selling_price IS NULL THEN
|
||||||
l_this_is_automatic_quote := FALSE;
|
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_reason => 'Unable to find selling price for EMS.'
|
||||||
,p_internal_or_external => g_internal_reason);
|
,p_internal_or_external => g_internal_reason);
|
||||||
END IF;
|
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;
|
l_this_is_automatic_quote := FALSE;
|
||||||
add_quote_reason(p_enqu.id
|
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);
|
,p_internal_or_external => g_internal_reason);
|
||||||
END IF;
|
END IF;
|
||||||
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_selling_price := l_aico_costs.selling_price;
|
||||||
l_rec_module.logger_cost_price := l_aico_costs.cost_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_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
|
IF l_rec_module.logger_selling_price IS NULL THEN
|
||||||
l_this_is_automatic_quote := FALSE;
|
l_this_is_automatic_quote := FALSE;
|
||||||
add_quote_reason(p_enqu.id
|
add_quote_reason(p_enqu.id
|
||||||
@@ -623,6 +701,22 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation IS
|
|||||||
,l_rec_module.modu_delivery_cost
|
,l_rec_module.modu_delivery_cost
|
||||||
,'MQI');
|
,'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
|
IF l_rec_module.hou_code IS NOT NULL THEN
|
||||||
INSERT INTO quote_items
|
INSERT INTO quote_items
|
||||||
(id
|
(id
|
||||||
|
|||||||
Reference in New Issue
Block a user