Fixed issue with 'Too few operands' where a vertical offset value of null was being passed causing the costs page not displaying. Also made some changes to tidy up the output on the costs page. Replaces missing cont_sum caveat that was missing.
git-svn-id: http://locode01.ad.dom/svn/WEBMIP/trunk@12539 248e525c-4dfb-0310-94bc-949c084e9493
This commit is contained in:
@@ -254,9 +254,10 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation_document IS
|
|||||||
END get_current_font_details;
|
END get_current_font_details;
|
||||||
|
|
||||||
PROCEDURE print_costs(p_description IN VARCHAR2
|
PROCEDURE print_costs(p_description IN VARCHAR2
|
||||||
,p_description_width IN NUMBER DEFAULT 80
|
,p_description_width IN NUMBER DEFAULT 70
|
||||||
,p_cost IN NUMBER DEFAULT NULL
|
,p_cost IN NUMBER DEFAULT NULL
|
||||||
,p_border IN VARCHAR2 DEFAULT '0') IS
|
,p_border IN VARCHAR2 DEFAULT '0'
|
||||||
|
,p_suffix IN VARCHAR2 DEFAULT NULL) IS
|
||||||
l_row_data plpdf_type.t_row_datas;
|
l_row_data plpdf_type.t_row_datas;
|
||||||
l_row_width plpdf_type.t_row_widths;
|
l_row_width plpdf_type.t_row_widths;
|
||||||
l_row_align plpdf_type.t_row_aligns;
|
l_row_align plpdf_type.t_row_aligns;
|
||||||
@@ -266,17 +267,19 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation_document IS
|
|||||||
BEGIN
|
BEGIN
|
||||||
l_row_data(1) := p_description;
|
l_row_data(1) := p_description;
|
||||||
IF p_cost IS NOT NULL THEN
|
IF p_cost IS NOT NULL THEN
|
||||||
l_row_data(2) := '<27>';
|
l_row_data(2) := TO_CHAR(p_cost
|
||||||
l_row_data(3) := TO_CHAR(p_cost
|
,'FML999G990D00');else
|
||||||
,'FM999G990D00');
|
l_row_data(2) := NULL;
|
||||||
END IF;
|
END IF;
|
||||||
|
l_row_data(3) := p_suffix;
|
||||||
|
|
||||||
l_row_width(1) := p_description_width;
|
l_row_width(1) := p_description_width;
|
||||||
l_row_width(2) := 12;
|
l_row_width(2) := 25;
|
||||||
l_row_width(3) := 30;
|
l_row_width(3) := 0;
|
||||||
|
|
||||||
l_row_align(1) := 'L';
|
l_row_align(1) := 'L';
|
||||||
l_row_align(2) := 'R';
|
l_row_align(2) := 'R';
|
||||||
l_row_align(3) := 'R';
|
l_row_align(3) := 'L';
|
||||||
|
|
||||||
l_row_border(1) := p_border;
|
l_row_border(1) := p_border;
|
||||||
l_row_border(2) := p_border;
|
l_row_border(2) := p_border;
|
||||||
@@ -389,6 +392,8 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation_document IS
|
|||||||
l_caveats_counter NUMBER;
|
l_caveats_counter NUMBER;
|
||||||
l_cell_margin NUMBER;
|
l_cell_margin NUMBER;
|
||||||
BEGIN
|
BEGIN
|
||||||
|
cout_assert.isnotnull(p_vertical_offset
|
||||||
|
,p_message => 'veritcal offest null!');
|
||||||
--set up the screen so we can have our size 4 spacing
|
--set up the screen so we can have our size 4 spacing
|
||||||
l_cell_margin := plpdf.getcellmargin;
|
l_cell_margin := plpdf.getcellmargin;
|
||||||
plpdf.setleftmargin(33.7);
|
plpdf.setleftmargin(33.7);
|
||||||
@@ -409,6 +414,24 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation_document IS
|
|||||||
plpdf.setcellmargin(l_cell_margin);
|
plpdf.setcellmargin(l_cell_margin);
|
||||||
plpdf.setleftmargin(31.7);
|
plpdf.setleftmargin(31.7);
|
||||||
END print_caveats;
|
END print_caveats;
|
||||||
|
/*
|
||||||
|
FUNCTION glue_one_line_caveat
|
||||||
|
--Concats the supplied caveats into one line of text
|
||||||
|
%param p_caveats - an array of caveat paragraphs to join together
|
||||||
|
*/
|
||||||
|
FUNCTION glue_one_line_caveat(p_caveats IN caveat_text) RETURN VARCHAR2 IS
|
||||||
|
l_caveats_counter NUMBER;
|
||||||
|
l_caveat_total_text VARCHAR2(5000);
|
||||||
|
BEGIN
|
||||||
|
l_caveats_counter := 1;
|
||||||
|
WHILE p_caveats(l_caveats_counter) IS NOT NULL LOOP
|
||||||
|
l_caveat_total_text := l_caveat_total_text || ' ' ||
|
||||||
|
p_caveats(l_caveats_counter);
|
||||||
|
l_caveats_counter := l_caveats_counter + 1;
|
||||||
|
END LOOP;
|
||||||
|
RETURN l_caveat_total_text;
|
||||||
|
END glue_one_line_caveat;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
PROCEDURE print_one_line_caveats
|
PROCEDURE print_one_line_caveats
|
||||||
--Prints the supplied caveats to the current PLPDF page on one line
|
--Prints the supplied caveats to the current PLPDF page on one line
|
||||||
@@ -421,24 +444,20 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation_document IS
|
|||||||
,p_vertical_offset IN NUMBER
|
,p_vertical_offset IN NUMBER
|
||||||
,p_horizontal_offset IN NUMBER
|
,p_horizontal_offset IN NUMBER
|
||||||
,p_line_spacing IN NUMBER := 4) IS
|
,p_line_spacing IN NUMBER := 4) IS
|
||||||
l_caveats_counter NUMBER;
|
|
||||||
l_cell_margin NUMBER;
|
l_cell_margin NUMBER;
|
||||||
l_caveat_total_text VARCHAR2(5000);
|
l_caveat_total_text VARCHAR2(5000);
|
||||||
BEGIN
|
BEGIN
|
||||||
|
cout_assert.isnotnull(p_vertical_offset
|
||||||
|
,'vertical offset null!!');
|
||||||
|
cout_assert.isnotnull(p_horizontal_offset
|
||||||
|
,'horz offset null!!');
|
||||||
--set up the screen so we can have our size 4 spacing
|
--set up the screen so we can have our size 4 spacing
|
||||||
l_cell_margin := plpdf.getcellmargin;
|
l_cell_margin := plpdf.getcellmargin;
|
||||||
plpdf.setleftmargin(33.7);
|
plpdf.setleftmargin(33.7);
|
||||||
plpdf.setcellmargin(-2);
|
plpdf.setcellmargin(-2);
|
||||||
plpdf.setcurrenty(p_vertical_offset);
|
plpdf.setcurrenty(p_vertical_offset);
|
||||||
plpdf.setcurrentx(p_horizontal_offset);
|
plpdf.setcurrentx(p_horizontal_offset);
|
||||||
l_caveats_counter := 1;
|
l_caveat_total_text := glue_one_line_caveat(p_caveats);
|
||||||
l_caveat_total_text := '';
|
|
||||||
|
|
||||||
WHILE p_caveats(l_caveats_counter) IS NOT NULL LOOP
|
|
||||||
l_caveat_total_text := l_caveat_total_text || ' ' ||
|
|
||||||
p_caveats(l_caveats_counter);
|
|
||||||
l_caveats_counter := l_caveats_counter + 1;
|
|
||||||
END LOOP;
|
|
||||||
plpdf.printflowingtext(p_line_spacing
|
plpdf.printflowingtext(p_line_spacing
|
||||||
,l_caveat_total_text);
|
,l_caveat_total_text);
|
||||||
plpdf.linebreak;
|
plpdf.linebreak;
|
||||||
@@ -1587,7 +1606,7 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation_document IS
|
|||||||
|
|
||||||
plpdf.setprintfont(p_font
|
plpdf.setprintfont(p_font
|
||||||
,'B'
|
,'B'
|
||||||
,10); --set bold
|
,10); --set bold
|
||||||
l_works_counter := p_quote_data.quote_works.FIRST;
|
l_works_counter := p_quote_data.quote_works.FIRST;
|
||||||
LOOP
|
LOOP
|
||||||
EXIT WHEN l_works_counter IS NULL;
|
EXIT WHEN l_works_counter IS NULL;
|
||||||
@@ -1616,33 +1635,13 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation_document IS
|
|||||||
plpdf.setprintfont(p_font
|
plpdf.setprintfont(p_font
|
||||||
,'B'
|
,'B'
|
||||||
,10); --set bold
|
,10); --set bold
|
||||||
|
|
||||||
plpdf.printtext(140
|
plpdf.printtext(140
|
||||||
,p_vertical_offset + 106
|
,p_vertical_offset + 106
|
||||||
,p_quote_data.lead_time || ' working days');
|
,p_quote_data.lead_time || ' working days');
|
||||||
plpdf.setprintfont(p_font
|
plpdf.setprintfont(p_font
|
||||||
,NULL
|
,NULL
|
||||||
,10); --unset bold
|
,10); --unset bold
|
||||||
|
|
||||||
/*
|
|
||||||
plpdf.printtext(p_indent
|
|
||||||
,p_vertical_offset + 114
|
|
||||||
,'Contract sum (excluding V.A.T): ');
|
|
||||||
plpdf.printtext(85
|
|
||||||
,p_vertical_offset + 114
|
|
||||||
,print_cost_aligned(p_quote_data.total_cost));
|
|
||||||
-- ,'<27>' || TO_CHAR(p_quote_data.total_cost
|
|
||||||
-- ,'FM999999D90'));
|
|
||||||
*/
|
|
||||||
l_ybefore := plpdf.getcurrenty;
|
l_ybefore := plpdf.getcurrenty;
|
||||||
|
|
||||||
-- CONT_SUM caveat here
|
|
||||||
IF p_quote_data.caveat_cont_sum IS NOT NULL THEN
|
|
||||||
print_one_line_caveats(p_quote_data.caveat_cont_sum
|
|
||||||
,p_vertical_offset + 111
|
|
||||||
,plpdf.getcurrenty + 8
|
|
||||||
,4);
|
|
||||||
END IF;
|
|
||||||
l_vertical_offset_for_costs := l_vertical_offset_for_costs +
|
l_vertical_offset_for_costs := l_vertical_offset_for_costs +
|
||||||
(plpdf.getcurrenty - l_ybefore);
|
(plpdf.getcurrenty - l_ybefore);
|
||||||
plpdf.setprintfont(p_font
|
plpdf.setprintfont(p_font
|
||||||
@@ -1650,90 +1649,34 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation_document IS
|
|||||||
,10); --unset bold
|
,10); --unset bold
|
||||||
plpdf.setcurrenty(p_vertical_offset + 114);
|
plpdf.setcurrenty(p_vertical_offset + 114);
|
||||||
print_costs(p_description => 'Contract sum (excluding V.A.T):'
|
print_costs(p_description => 'Contract sum (excluding V.A.T):'
|
||||||
,p_cost => p_quote_data.total_cost);
|
,p_cost => p_quote_data.total_cost
|
||||||
|
,p_suffix => glue_one_line_caveat(p_quote_data.caveat_cont_sum));-- CONT_SUM caveat here
|
||||||
plpdf.linebreak(20); -- line break, height is 20
|
plpdf.linebreak(20); -- line break, height is 20
|
||||||
print_costs(p_description => 'Analysis of Costs (all costs exclude V.A.T)');
|
print_costs(p_description => 'Analysis of Costs (all costs exclude V.A.T)');
|
||||||
|
|
||||||
/* plpdf.printtext(p_indent
|
|
||||||
,plpdf.getcurrenty + 4
|
|
||||||
,'Analysis of Costs (all costs exclude V.A.T)');
|
|
||||||
*/
|
|
||||||
plpdf.setprintfont(p_font
|
plpdf.setprintfont(p_font
|
||||||
,'B'
|
,'B'
|
||||||
,10); --set bold
|
,10); --set bold
|
||||||
|
|
||||||
plpdf.linebreak(20); -- line break, height is 20
|
plpdf.linebreak(20); -- line break, height is 20
|
||||||
|
--
|
||||||
--plpdf.setcurrenty( l_vertical_offset_for_costs + 4);
|
|
||||||
/*
|
|
||||||
l_cost_line_counter := 1;
|
l_cost_line_counter := 1;
|
||||||
WHILE p_quote_data.quote_costs(l_cost_line_counter)
|
WHILE p_quote_data.quote_costs(l_cost_line_counter)
|
||||||
.cost_description IS NOT NULL LOOP
|
.cost_description IS NOT NULL LOOP
|
||||||
plpdf.printtext(p_indent
|
|
||||||
,l_vertical_offset_for_costs +
|
|
||||||
l_cost_line_counter * 4
|
|
||||||
, p_quote_data.quote_costs(l_cost_line_counter)
|
|
||||||
.cost_description);
|
|
||||||
-- some items do not show a cost value
|
|
||||||
IF p_quote_data.quote_costs(l_cost_line_counter)
|
|
||||||
.cost_price IS NOT NULL THEN
|
|
||||||
plpdf.printtext(120
|
|
||||||
,l_vertical_offset_for_costs +
|
|
||||||
l_cost_line_counter * 4
|
|
||||||
,print_cost_aligned(p_quote_data.quote_costs(l_cost_line_counter)
|
|
||||||
.cost_price));
|
|
||||||
-- '<27>' || TO_CHAR(p_quote_data.quote_costs(l_cost_line_counter)
|
|
||||||
-- .cost_price
|
|
||||||
-- ,'FM999,999D90'));
|
|
||||||
plpdf.setprintfont(p_font
|
|
||||||
,'B'
|
|
||||||
,10);
|
|
||||||
END IF;
|
|
||||||
l_cost_line_counter := l_cost_line_counter + 1;
|
|
||||||
END LOOP;
|
|
||||||
*/
|
|
||||||
|
|
||||||
l_cost_line_counter := 1;
|
|
||||||
WHILE p_quote_data.quote_costs(l_cost_line_counter)
|
|
||||||
.cost_description IS NOT NULL LOOP
|
|
||||||
|
|
||||||
print_costs(p_description => p_quote_data.quote_costs(l_cost_line_counter)
|
print_costs(p_description => p_quote_data.quote_costs(l_cost_line_counter)
|
||||||
.cost_description
|
.cost_description
|
||||||
,p_cost => p_quote_data.quote_costs(l_cost_line_counter)
|
,p_cost => p_quote_data.quote_costs(l_cost_line_counter)
|
||||||
.cost_price);
|
.cost_price);
|
||||||
|
|
||||||
l_cost_line_counter := l_cost_line_counter + 1;
|
l_cost_line_counter := l_cost_line_counter + 1;
|
||||||
|
|
||||||
END LOOP;
|
END LOOP;
|
||||||
|
--
|
||||||
/* l_cost_totals_offset := l_vertical_offset_for_costs +
|
l_cost_totals_offset := l_vertical_offset_for_costs +
|
||||||
l_cost_line_counter * 4;
|
l_cost_line_counter * 4;
|
||||||
plpdf.drawline(p_indent
|
|
||||||
,l_cost_totals_offset + 2
|
|
||||||
,185
|
|
||||||
,l_cost_totals_offset + 2);
|
|
||||||
*/
|
|
||||||
print_costs(p_description => 'Total costs:'
|
print_costs(p_description => 'Total costs:'
|
||||||
,p_cost => p_quote_data.total_cost
|
,p_cost => p_quote_data.total_cost
|
||||||
,p_border => 'T');
|
,p_border => 'T'
|
||||||
/*
|
,p_suffix => glue_one_line_caveat(p_quote_data.caveat_cont_sum)); -- CONT_SUM caveat here
|
||||||
plpdf.printtext(p_indent
|
|
||||||
,l_cost_totals_offset + 6
|
|
||||||
,'Total costs:');
|
|
||||||
plpdf.printtext(120
|
|
||||||
,l_cost_totals_offset + 6
|
|
||||||
,print_cost_aligned(p_quote_data.total_cost));
|
|
||||||
-- ,'<27>' || TO_CHAR(p_quote_data.total_cost
|
|
||||||
-- ,'FM999999D90'));
|
|
||||||
*/
|
|
||||||
-- CONT_SUM caveat here
|
|
||||||
IF p_quote_data.caveat_cont_sum IS NOT NULL THEN
|
|
||||||
print_one_line_caveats(p_quote_data.caveat_cont_sum
|
|
||||||
,l_cost_totals_offset + 2.8
|
|
||||||
,plpdf.getcurrenty
|
|
||||||
,4);
|
|
||||||
END IF;
|
|
||||||
END build_costs_page;
|
END build_costs_page;
|
||||||
/*
|
/*
|
||||||
PROCEDURE build_caveats_page
|
PROCEDURE build_caveats_page
|
||||||
@@ -1839,7 +1782,7 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation_document IS
|
|||||||
plpdf.printtext(130
|
plpdf.printtext(130
|
||||||
,p_vertical_offset + 230
|
,p_vertical_offset + 230
|
||||||
,print_cost_aligned(p_quote_data.liquid_damage_day));
|
,print_cost_aligned(p_quote_data.liquid_damage_day));
|
||||||
-- ,'<EFBFBD>' || TO_CHAR(p_quote_data.liquid_damage_day
|
-- ,'#' || TO_CHAR(p_quote_data.liquid_damage_day
|
||||||
-- ,'FM999999D90'));
|
-- ,'FM999999D90'));
|
||||||
plpdf.printtext(p_indent
|
plpdf.printtext(p_indent
|
||||||
,p_vertical_offset + 238
|
,p_vertical_offset + 238
|
||||||
@@ -1847,7 +1790,7 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation_document IS
|
|||||||
plpdf.printtext(130
|
plpdf.printtext(130
|
||||||
,p_vertical_offset + 238
|
,p_vertical_offset + 238
|
||||||
,print_cost_aligned(p_quote_data.liquid_damage_cap));
|
,print_cost_aligned(p_quote_data.liquid_damage_cap));
|
||||||
-- ,'<EFBFBD>' || TO_CHAR(p_quote_data.liquid_damage_cap
|
-- ,'#' || TO_CHAR(p_quote_data.liquid_damage_cap
|
||||||
-- ,'FM999999D90'));
|
-- ,'FM999999D90'));
|
||||||
*/
|
*/
|
||||||
END build_caveats_page;
|
END build_caveats_page;
|
||||||
@@ -2934,7 +2877,7 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation_document IS
|
|||||||
,10); --set bold
|
,10); --set bold
|
||||||
plpdf.printtext(85
|
plpdf.printtext(85
|
||||||
,p_vertical_offset + 62
|
,p_vertical_offset + 62
|
||||||
,'<EFBFBD>' || TO_CHAR(p_quote_data.total_cost
|
,'#' || TO_CHAR(p_quote_data.total_cost
|
||||||
,'FM999999D90'));
|
,'FM999999D90'));
|
||||||
plpdf.setcurrenty(66);
|
plpdf.setcurrenty(66);
|
||||||
l_ybefore := plpdf.getcurrenty;
|
l_ybefore := plpdf.getcurrenty;
|
||||||
|
|||||||
Reference in New Issue
Block a user