now does drawings (requires more testing), hides drawings page if OFMAT or ADD-ON. More tidying up and bug fixing
git-svn-id: http://locode01.ad.dom/svn/WEBMIP/trunk@3179 248e525c-4dfb-0310-94bc-949c084e9493
This commit is contained in:
@@ -6,6 +6,8 @@ CREATE OR REPLACE PACKAGE mip_quotation_document IS
|
|||||||
|
|
||||||
-- Public type declarations
|
-- Public type declarations
|
||||||
--type <TypeName> is <Datatype>;
|
--type <TypeName> is <Datatype>;
|
||||||
|
type img_props is record(width number,
|
||||||
|
height number);
|
||||||
type cost_line is record(
|
type cost_line is record(
|
||||||
cost_description varchar2(80),
|
cost_description varchar2(80),
|
||||||
cost_price number);
|
cost_price number);
|
||||||
@@ -66,19 +68,88 @@ CREATE OR REPLACE PACKAGE mip_quotation_document IS
|
|||||||
-- Public variable declarations
|
-- Public variable declarations
|
||||||
--<VariableName> <Datatype>;
|
--<VariableName> <Datatype>;
|
||||||
|
|
||||||
function get_total_cost(p_quoteid number) return number;
|
--function get_total_cost(p_quoteid number) return number;
|
||||||
-- Public function and procedure declarations
|
-- Public function and procedure declarations
|
||||||
-- function <FunctionName>(<Parameter> <Datatype>) return <Datatype>;
|
-- function <FunctionName>(<Parameter> <Datatype>) return <Datatype>;
|
||||||
function get_mam(p_region_code varchar2) return varchar2;
|
--function get_mam(p_region_code varchar2) return varchar2;
|
||||||
function get_module_row(p_code varchar2) return modules%ROWTYPE;
|
--function get_module_row(p_code varchar2) return modules%ROWTYPE;
|
||||||
function get_max_lead_time(p_quoteid number) return number;
|
--function get_max_lead_time(p_quoteid number) return number;
|
||||||
FUNCTION determine_caveats(p_enquiryid in number) RETURN BOOLEAN;
|
--FUNCTION determine_caveats(p_enquiryid in number) RETURN BOOLEAN;
|
||||||
PROCEDURE set_quote_items_data (p_quote_data in out quote_data, p_quoteid number, p_enqu_row enquiries%ROWTYPE);
|
--PROCEDURE set_quote_items_data (p_quote_data in out quote_data, p_quoteid number, p_enqu_row enquiries%ROWTYPE);
|
||||||
FUNCTION get_detailed_quote_data(p_quoteid in number) RETURN quote_data;
|
--FUNCTION get_detailed_quote_data(p_quoteid in number) RETURN quote_data;
|
||||||
FUNCTION generate_detailed_quote_pdf(p_quote_data in quote_data) RETURN NUMBER;
|
--FUNCTION generate_detailed_quote_pdf(p_quote_data in quote_data) RETURN VARCHAR2;
|
||||||
|
FUNCTION generate_quote_pdf(p_quote_id in number) RETURN VARCHAR2;
|
||||||
END mip_quotation_document;
|
END mip_quotation_document;
|
||||||
/
|
/
|
||||||
CREATE OR REPLACE PACKAGE BODY mip_quotation_document IS
|
CREATE OR REPLACE PACKAGE BODY mip_quotation_document IS
|
||||||
|
|
||||||
|
/*
|
||||||
|
FUNCTION scale_image_dimensions
|
||||||
|
--The scale_image_dimensions provides the width and height of an image to
|
||||||
|
--correctly scale into a specified size.
|
||||||
|
%param p_req_width - The maximum width required for the image
|
||||||
|
%param p_req_height - The maximum height required for the image
|
||||||
|
%param p_image_blob - The image we may need to scale down
|
||||||
|
%return img_props - the new width and height of the image
|
||||||
|
*/
|
||||||
|
function scale_image_dimensions(p_req_width in number, p_req_height in number, p_image_blob in blob) return img_props is
|
||||||
|
l_new_width number;
|
||||||
|
l_ratio number;
|
||||||
|
l_new_height number;
|
||||||
|
l_cur_width number;
|
||||||
|
l_image_props plpdf_type.t_imageprops;
|
||||||
|
l_new_dimensions img_props;
|
||||||
|
begin
|
||||||
|
--Get the properties for the image from plpdf
|
||||||
|
l_image_props:=plpdf_img.getimageprops(p_image_blob);
|
||||||
|
--if the image is too heigh cut it down to the limit and record the ratio
|
||||||
|
--and cutting the width by the recored ratio
|
||||||
|
if l_image_props.height > p_req_height then
|
||||||
|
l_new_height := p_req_height;
|
||||||
|
l_ratio := l_image_props.height/p_req_height;
|
||||||
|
l_cur_width := l_image_props.width/l_ratio;
|
||||||
|
else
|
||||||
|
l_new_height := l_image_props.height;
|
||||||
|
l_cur_width := l_image_props.width;
|
||||||
|
end if;
|
||||||
|
--if it's too wide then cut it down to the limit and record the ratio
|
||||||
|
--and cutting the height by the recored ratio
|
||||||
|
if l_cur_width > p_req_width then
|
||||||
|
l_new_width := p_req_width;
|
||||||
|
l_ratio := l_cur_width/p_req_width;
|
||||||
|
l_new_height := l_new_height/l_ratio;
|
||||||
|
else
|
||||||
|
l_new_width := l_cur_width;
|
||||||
|
end if;
|
||||||
|
l_new_dimensions.width := l_new_width;
|
||||||
|
l_new_dimensions.height := l_new_height;
|
||||||
|
return l_new_dimensions;
|
||||||
|
end scale_image_dimensions;
|
||||||
|
/*
|
||||||
|
FUNCTION get_drawing
|
||||||
|
--The get_drawing function returns a blob of the drawing code
|
||||||
|
%param p_drwg_code - the code of the drawing you want the blob of.
|
||||||
|
%return blob the drawing image
|
||||||
|
*/
|
||||||
|
function get_drawing(p_drwg_code varchar2) return blob is
|
||||||
|
l_blob blob;
|
||||||
|
CURSOR c_get_drawing(cp_drwg varchar2) IS
|
||||||
|
SELECT blob_content
|
||||||
|
FROM wwv_flow_files
|
||||||
|
WHERE name = (SELECT uri
|
||||||
|
FROM documents
|
||||||
|
WHERE (SELECT docu_id
|
||||||
|
FROM document_roles
|
||||||
|
WHERE cp_drwg = drwg_code)=id);
|
||||||
|
begin
|
||||||
|
IF NOT c_get_drawing%ISOPEN THEN
|
||||||
|
OPEN c_get_drawing(p_drwg_code);
|
||||||
|
END IF;
|
||||||
|
FETCH c_get_drawing
|
||||||
|
INTO l_blob;
|
||||||
|
CLOSE c_get_drawing;
|
||||||
|
return l_blob;
|
||||||
|
end get_drawing;
|
||||||
/*
|
/*
|
||||||
FUNCTION get_mam
|
FUNCTION get_mam
|
||||||
--The get_mam function returns a meter asset manager description for the supplied region code.
|
--The get_mam function returns a meter asset manager description for the supplied region code.
|
||||||
@@ -822,8 +893,12 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation_document IS
|
|||||||
%param p_font - the type of font to use - typically 'Arial'.
|
%param p_font - the type of font to use - typically 'Arial'.
|
||||||
%param p_indent - the left margin measurement.
|
%param p_indent - the left margin measurement.
|
||||||
%param p_vertical_offset - the top margin measurement.
|
%param p_vertical_offset - the top margin measurement.
|
||||||
|
%param p_base_blob - the image of the base
|
||||||
|
%param p_house_blob - the image of the house
|
||||||
|
%param p_module_blob - the image of the module
|
||||||
*/
|
*/
|
||||||
PROCEDURE build_drawings_page(p_quote_data in quote_data, p_font in varchar2, p_indent in number, p_vertical_offset in number, p_module_blob blob) is
|
PROCEDURE build_drawings_page(p_quote_data in quote_data, p_font in varchar2, p_indent in number, p_vertical_offset in number, p_base_blob blob, p_house_blob blob, p_module_blob blob) is
|
||||||
|
l_img_props img_props;
|
||||||
begin
|
begin
|
||||||
--Okay here come the pretty pictures, the technical spec for the module, house & base
|
--Okay here come the pretty pictures, the technical spec for the module, house & base
|
||||||
--this will be page 4 for the quotation
|
--this will be page 4 for the quotation
|
||||||
@@ -836,6 +911,7 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation_document IS
|
|||||||
plpdf.PrintText(p_indent,p_vertical_offset,'Technical Specification for '||p_quote_data.quote_ref);
|
plpdf.PrintText(p_indent,p_vertical_offset,'Technical Specification for '||p_quote_data.quote_ref);
|
||||||
plpdf.SetPrintFont(p_font,'B',10); --set back to 10pt
|
plpdf.SetPrintFont(p_font,'B',10); --set back to 10pt
|
||||||
plpdf.PrintText(p_indent,p_vertical_offset+6,'Re: '||rtrim(ltrim(p_quote_data.site_address(1)||', '||p_quote_data.site_address(2)||', '||p_quote_data.site_address(3)||', '||p_quote_data.site_address(4)||', '||p_quote_data.site_address(5)||', '||p_quote_data.site_address(6)||', '||p_quote_data.site_address(7),', '),', ')); --site address --Base Details
|
plpdf.PrintText(p_indent,p_vertical_offset+6,'Re: '||rtrim(ltrim(p_quote_data.site_address(1)||', '||p_quote_data.site_address(2)||', '||p_quote_data.site_address(3)||', '||p_quote_data.site_address(4)||', '||p_quote_data.site_address(5)||', '||p_quote_data.site_address(6)||', '||p_quote_data.site_address(7),', '),', ')); --site address --Base Details
|
||||||
|
--Base Details
|
||||||
plpdf.SetPrintFont(p_font,'BU',12); --set bold,underline and 12pt
|
plpdf.SetPrintFont(p_font,'BU',12); --set bold,underline and 12pt
|
||||||
plpdf.PrintText(p_indent,p_vertical_offset+12,'Floor Area/Base Requirements');
|
plpdf.PrintText(p_indent,p_vertical_offset+12,'Floor Area/Base Requirements');
|
||||||
plpdf.SetPrintFont(p_font,null,10); --set back to 10pt plain
|
plpdf.SetPrintFont(p_font,null,10); --set back to 10pt plain
|
||||||
@@ -860,6 +936,12 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation_document IS
|
|||||||
plpdf.PrintCell(15,6,p_quote_data.base_dimensions(9),1,1,'R',0);
|
plpdf.PrintCell(15,6,p_quote_data.base_dimensions(9),1,1,'R',0);
|
||||||
plpdf.PrintCell(15,6,'Dim I:',1,0,'L',0);
|
plpdf.PrintCell(15,6,'Dim I:',1,0,'L',0);
|
||||||
plpdf.PrintCell(15,6,p_quote_data.base_dimensions(10),1,1,'R',0);
|
plpdf.PrintCell(15,6,p_quote_data.base_dimensions(10),1,1,'R',0);
|
||||||
|
if p_base_blob is null then
|
||||||
|
plpdf.PrintText(p_indent+50,p_vertical_offset+50,'No Base Diagram Available');
|
||||||
|
else
|
||||||
|
l_img_props := scale_image_dimensions(100, 60, p_module_blob );
|
||||||
|
plpdf.PutImage('base',p_base_blob,p_indent,10,l_img_props.width,l_img_props.height);
|
||||||
|
end if;
|
||||||
--House Details
|
--House Details
|
||||||
plpdf.SetPrintFont(p_font,'BU',12); --set bold,underline and 12pt
|
plpdf.SetPrintFont(p_font,'BU',12); --set bold,underline and 12pt
|
||||||
plpdf.PrintText(p_indent,p_vertical_offset+100,'Housing / Work Area');
|
plpdf.PrintText(p_indent,p_vertical_offset+100,'Housing / Work Area');
|
||||||
@@ -873,6 +955,12 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation_document IS
|
|||||||
plpdf.PrintCell(15,6,p_quote_data.house_dimensions(3),1,1,'R',0);
|
plpdf.PrintCell(15,6,p_quote_data.house_dimensions(3),1,1,'R',0);
|
||||||
plpdf.PrintCell(15,6,'Weight:',1,0,'L',0);
|
plpdf.PrintCell(15,6,'Weight:',1,0,'L',0);
|
||||||
plpdf.PrintCell(15,6,p_quote_data.house_dimensions(4),1,1,'R',0);
|
plpdf.PrintCell(15,6,p_quote_data.house_dimensions(4),1,1,'R',0);
|
||||||
|
if p_house_blob is null then
|
||||||
|
plpdf.PrintText(p_indent+50,p_vertical_offset+132,'No House Diagram Available');
|
||||||
|
else
|
||||||
|
l_img_props := scale_image_dimensions(100, 60, p_module_blob );
|
||||||
|
plpdf.PutImage('house',p_house_blob,p_indent+50,108,l_img_props.width,l_img_props.height);
|
||||||
|
end if;
|
||||||
--Module details
|
--Module details
|
||||||
plpdf.SetPrintFont(p_font,'BU',12); --set bold,underline and 12pt
|
plpdf.SetPrintFont(p_font,'BU',12); --set bold,underline and 12pt
|
||||||
plpdf.PrintText(p_indent,p_vertical_offset+168,'Module Dimensions');
|
plpdf.PrintText(p_indent,p_vertical_offset+168,'Module Dimensions');
|
||||||
@@ -896,7 +984,12 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation_document IS
|
|||||||
plpdf.PrintCell(15,6,p_quote_data.module_dimensions(8),1,1,'R',0);
|
plpdf.PrintCell(15,6,p_quote_data.module_dimensions(8),1,1,'R',0);
|
||||||
plpdf.PrintCell(15,6,'Weight:',1,0,'L',0);
|
plpdf.PrintCell(15,6,'Weight:',1,0,'L',0);
|
||||||
plpdf.PrintCell(15,6,p_quote_data.module_dimensions(9),1,1,'R',0);
|
plpdf.PrintCell(15,6,p_quote_data.module_dimensions(9),1,1,'R',0);
|
||||||
plpdf.PutImage('module',p_module_blob,p_indent,10,52,18);
|
if p_module_blob is null then
|
||||||
|
plpdf.PrintText(p_indent+50,p_vertical_offset+205,'No Module Diagram Available');
|
||||||
|
else
|
||||||
|
l_img_props := scale_image_dimensions(100, 60, p_module_blob );
|
||||||
|
plpdf.PutImage('module',p_module_blob,p_indent+50,p_vertical_offset+180,l_img_props.width,l_img_props.height);
|
||||||
|
end if;
|
||||||
plpdf.SetPrintFont(p_font,null,9); --set to 9pt
|
plpdf.SetPrintFont(p_font,null,9); --set to 9pt
|
||||||
plpdf.PrintText(p_indent,p_vertical_offset+245,'Note: All weights are in kg and all dimensions in mm Module Ref: '||p_quote_data.module_reference);
|
plpdf.PrintText(p_indent,p_vertical_offset+245,'Note: All weights are in kg and all dimensions in mm Module Ref: '||p_quote_data.module_reference);
|
||||||
plpdf.PrintText(p_indent,p_vertical_offset+260,'National Grid Metering, Abbotts Lane, Coventry, West Midlands, CV1 4AY Tel 02476 286000 Fax 02476 286022');
|
plpdf.PrintText(p_indent,p_vertical_offset+260,'National Grid Metering, Abbotts Lane, Coventry, West Midlands, CV1 4AY Tel 02476 286000 Fax 02476 286022');
|
||||||
@@ -979,8 +1072,8 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation_document IS
|
|||||||
plpdf.PrintCell(35,6,p_quote_data.module_outlet_size||'mm',1,1,'C',0);
|
plpdf.PrintCell(35,6,p_quote_data.module_outlet_size||'mm',1,1,'C',0);
|
||||||
plpdf.SetCurrentX(91.7);
|
plpdf.SetCurrentX(91.7);
|
||||||
plpdf.PrintCell(30,6,'Type',1,0,'C',0);
|
plpdf.PrintCell(30,6,'Type',1,0,'C',0);
|
||||||
plpdf.PrintCell(35,6,p_quote_data.module_inlet_type||'mm',1,0,'C',0);
|
plpdf.PrintCell(35,6,p_quote_data.module_inlet_type,1,0,'C',0);
|
||||||
plpdf.PrintCell(35,6,p_quote_data.module_outlet_type||'mm',1,1,'C',0);
|
plpdf.PrintCell(35,6,p_quote_data.module_outlet_type,1,1,'C',0);
|
||||||
plpdf.SetCurrentX(91.7);
|
plpdf.SetCurrentX(91.7);
|
||||||
plpdf.PrintCell(30,6,'Orientation',1,0,'C',0);
|
plpdf.PrintCell(30,6,'Orientation',1,0,'C',0);
|
||||||
plpdf.PrintCell(35,6,p_quote_data.module_inlet_orientation,1,0,'C',0);
|
plpdf.PrintCell(35,6,p_quote_data.module_inlet_orientation,1,0,'C',0);
|
||||||
@@ -1085,13 +1178,16 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation_document IS
|
|||||||
%param p_quote_data - the data to build into the quote.
|
%param p_quote_data - the data to build into the quote.
|
||||||
%return - l_pdf_id the id of the pdf file we have created
|
%return - l_pdf_id the id of the pdf file we have created
|
||||||
*/
|
*/
|
||||||
FUNCTION generate_detailed_quote_pdf(p_quote_data in quote_data) RETURN NUMBER is
|
FUNCTION generate_detailed_quote_pdf(p_quote_data in quote_data,p_quote_id in number) RETURN VARCHAR2 is
|
||||||
l_doc_id number; -- the id of the stored pdf
|
|
||||||
l_blob blob;
|
l_blob blob;
|
||||||
|
l_enty_code varchar(80); --the type of enquiry
|
||||||
l_logo_blob blob;
|
l_logo_blob blob;
|
||||||
l_signature_blob blob;
|
l_signature_blob blob;
|
||||||
|
l_success boolean; --holds whether the quote was saved i nthe docuemnts tables or not
|
||||||
|
l_base_blob blob; --the base drawing
|
||||||
|
l_house_blob blob; --the house drawing
|
||||||
l_module_blob blob; --the module drawing
|
l_module_blob blob; --the module drawing
|
||||||
l_pdf_id number; -- the id of the quote we generate
|
l_pdf_name varchar(90); -- the id of the quote we generate
|
||||||
l_indent number := 31.7;
|
l_indent number := 31.7;
|
||||||
l_vertical_offset number := 30;
|
l_vertical_offset number := 30;
|
||||||
l_font varchar2(40) := 'Arial'; --arial not daz
|
l_font varchar2(40) := 'Arial'; --arial not daz
|
||||||
@@ -1103,14 +1199,11 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation_document IS
|
|||||||
SELECT blob_content
|
SELECT blob_content
|
||||||
FROM wwv_flow_files
|
FROM wwv_flow_files
|
||||||
WHERE filename = cp_signature;
|
WHERE filename = cp_signature;
|
||||||
--!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1
|
CURSOR c_get_enty(cp_quid varchar2) IS
|
||||||
--This will not work need to reference through the
|
SELECT enty_code
|
||||||
--document roles table to get the file name (uri) then
|
FROM quote_items
|
||||||
--we can search the wwv_flow_files
|
WHERE qute_id = cp_quid and quit_type = 'LQI' ;
|
||||||
CURSOR c_get_module(cp_module varchar2) IS
|
|
||||||
SELECT blob_content
|
|
||||||
FROM wwv_flow_files
|
|
||||||
WHERE filename = cp_module;
|
|
||||||
begin
|
begin
|
||||||
IF NOT c_get_logo%ISOPEN THEN
|
IF NOT c_get_logo%ISOPEN THEN
|
||||||
OPEN c_get_logo('quote_logo.jpg');
|
OPEN c_get_logo('quote_logo.jpg');
|
||||||
@@ -1124,20 +1217,26 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation_document IS
|
|||||||
FETCH c_get_signature
|
FETCH c_get_signature
|
||||||
INTO l_signature_blob;
|
INTO l_signature_blob;
|
||||||
CLOSE c_get_signature;
|
CLOSE c_get_signature;
|
||||||
IF NOT c_get_module%ISOPEN THEN
|
IF NOT c_get_enty%ISOPEN THEN
|
||||||
OPEN c_get_module(p_quote_data.module_diagram);
|
OPEN c_get_enty(p_quote_id);
|
||||||
END IF;
|
END IF;
|
||||||
FETCH c_get_module
|
FETCH c_get_enty
|
||||||
INTO l_module_blob;
|
INTO l_enty_code;
|
||||||
CLOSE c_get_module;
|
CLOSE c_get_enty;
|
||||||
|
--get the quote diagrams
|
||||||
|
l_base_blob := get_drawing(p_quote_data.base_diagram);
|
||||||
|
l_house_blob := get_drawing(p_quote_data.house_diagram);
|
||||||
|
l_module_blob := get_drawing(p_quote_data.module_diagram);
|
||||||
-- Initialize PDF
|
-- Initialize PDF
|
||||||
plpdf.init;
|
plpdf.init;
|
||||||
--build the pages for the quote
|
--build the pages for the quote
|
||||||
build_covering_letter(p_quote_data,l_font,l_indent,l_vertical_offset,l_logo_blob, l_signature_blob);--1
|
build_covering_letter(p_quote_data,l_font,l_indent,l_vertical_offset,l_logo_blob, l_signature_blob);--1
|
||||||
build_costs_page(p_quote_data,l_font,l_indent,l_vertical_offset); --2
|
build_costs_page(p_quote_data,l_font,l_indent,l_vertical_offset); --2
|
||||||
build_caveats_page(p_quote_data,l_font,l_indent,l_vertical_offset); --3
|
build_caveats_page(p_quote_data,l_font,l_indent,l_vertical_offset); --3
|
||||||
build_drawings_page(p_quote_data,l_font,l_indent,l_vertical_offset, l_module_blob); --4
|
--OFMAT, Addon jobs don't have module diagrams
|
||||||
|
if not (l_enty_code = 'OFMAT' or l_enty_code = 'AMR' or l_enty_code = 'EMS') then
|
||||||
|
build_drawings_page(p_quote_data,l_font,l_indent,l_vertical_offset, l_base_blob, l_house_blob, l_module_blob); --4
|
||||||
|
end if;
|
||||||
build_module_specs_page(p_quote_data,l_font,l_indent,l_vertical_offset); --5
|
build_module_specs_page(p_quote_data,l_font,l_indent,l_vertical_offset); --5
|
||||||
build_acceptance_page(p_quote_data,l_font,l_indent,l_vertical_offset,l_logo_blob); --6
|
build_acceptance_page(p_quote_data,l_font,l_indent,l_vertical_offset,l_logo_blob); --6
|
||||||
--get our beautiful pdf into the local var l_blob
|
--get our beautiful pdf into the local var l_blob
|
||||||
@@ -1145,26 +1244,31 @@ CREATE OR REPLACE PACKAGE BODY mip_quotation_document IS
|
|||||||
--punt the created pdf into the APEX files table
|
--punt the created pdf into the APEX files table
|
||||||
insert into wwv_flow_files( name, title, mime_type, flow_id, doc_size ,description, blob_content )
|
insert into wwv_flow_files( name, title, mime_type, flow_id, doc_size ,description, blob_content )
|
||||||
values (TO_CHAR(SYSDATE,'SSSSS')||'/quote_'||p_quote_data.quote_ref||'.pdf', 'Quotation - '||p_quote_data.quote_ref, 'application/pdf', 190, DBMS_LOB.GETLENGTH(l_blob),'this is an auto generated quotation from mip_quotation_document.generate_detailed_quote for quotation '||p_quote_data.quote_ref, l_blob)
|
values (TO_CHAR(SYSDATE,'SSSSS')||'/quote_'||p_quote_data.quote_ref||'.pdf', 'Quotation - '||p_quote_data.quote_ref, 'application/pdf', 190, DBMS_LOB.GETLENGTH(l_blob),'this is an auto generated quotation from mip_quotation_document.generate_detailed_quote for quotation '||p_quote_data.quote_ref, l_blob)
|
||||||
returning id into l_pdf_id;
|
returning name into l_pdf_name;
|
||||||
--reference it in the documents table
|
--set up the file associations within our documents tables
|
||||||
insert into documents( uri, description, id, docu_type )
|
l_success:= mip_files.set_file_association(l_pdf_name,
|
||||||
values (TO_CHAR(SYSDATE,'SSSSS')||'/quote_'||p_quote_data.quote_ref||'.pdf',
|
'Automatically Generated Quotation for quote '||p_quote_data.quote_ref,
|
||||||
'Automatically Generated Quotation for quote '||p_quote_data.quote_ref,
|
'INDO',
|
||||||
docu_seq.NEXTVAL,
|
'GENERATED QUOTATION',
|
||||||
'INDO')
|
p_quote_data.quote_ref,
|
||||||
returning id into l_doc_id;
|
null,
|
||||||
--set up a role for the document
|
null,
|
||||||
insert into document_roles(rt_code, start_date,description,qute_id,id,doro_type,docu_id)
|
'QUDO');
|
||||||
values ('GENERATED QUOTATION',
|
return l_pdf_name; -- return the id of the newly created blob pdf record
|
||||||
sysdate,
|
|
||||||
'Automatically Generated Quotation for quote '||p_quote_data.quote_ref,
|
|
||||||
p_quote_data.quote_ref,
|
|
||||||
doro_seq.NEXTVAL,
|
|
||||||
'QUDO',
|
|
||||||
l_doc_id);
|
|
||||||
|
|
||||||
return l_pdf_id; -- return the id of the newly created blob pdf record
|
|
||||||
end generate_detailed_quote_pdf;
|
end generate_detailed_quote_pdf;
|
||||||
|
/*
|
||||||
|
FUNCTION generate_quote_pdf
|
||||||
|
--The generate_detailed_quote_pdf builds the pdf document for the quotation from
|
||||||
|
--the supplied quote id and stores the resulting pdf document in the database.
|
||||||
|
%param p_quote_id - the id of the quote you want to build a pdf for.
|
||||||
|
%return - the name of the pdf file we have created. This is a unique value within the wwv_flow_files table
|
||||||
|
*/
|
||||||
|
FUNCTION generate_quote_pdf(p_quote_id in number) RETURN VARCHAR2 is
|
||||||
|
l_quote_data quote_data;
|
||||||
|
begin
|
||||||
|
l_quote_data := get_detailed_quote_data(p_quote_id);
|
||||||
|
return generate_detailed_quote_pdf(l_quote_data, p_quote_id);
|
||||||
|
end generate_quote_pdf;
|
||||||
|
|
||||||
|
|
||||||
BEGIN
|
BEGIN
|
||||||
|
|||||||
Reference in New Issue
Block a user