diff options
author | Jonathan Prykop <jonathan@freeside.biz> | 2015-10-15 21:07:34 -0500 |
---|---|---|
committer | Jonathan Prykop <jonathan@freeside.biz> | 2015-10-15 21:07:34 -0500 |
commit | b6f16a22bd93ec66ffbb1da30e63f7e950b3b819 (patch) | |
tree | 88dc077ac63271cb2df290bbd20069acfdd71615 /httemplate | |
parent | 2b2dd969f3c18751afc583ad1e836ab8e6f73b5d (diff) |
RT#34960: Quotations
Diffstat (limited to 'httemplate')
-rw-r--r-- | httemplate/edit/cust_pkg_detail.html | 3 | ||||
-rw-r--r-- | httemplate/edit/process/quotation_pkg_detail.html | 45 | ||||
-rw-r--r-- | httemplate/edit/quotation_pkg_detail.html | 116 | ||||
-rw-r--r-- | httemplate/elements/popup_link.html | 4 | ||||
-rw-r--r-- | httemplate/images/Actions-document-edit-icon.png | bin | 0 -> 733 bytes | |||
-rwxr-xr-x | httemplate/view/quotation.html | 18 |
6 files changed, 183 insertions, 3 deletions
diff --git a/httemplate/edit/cust_pkg_detail.html b/httemplate/edit/cust_pkg_detail.html index 5e107066d..b1e60dad5 100644 --- a/httemplate/edit/cust_pkg_detail.html +++ b/httemplate/edit/cust_pkg_detail.html @@ -46,7 +46,7 @@ <TR> <TD></TD> <TD> - <INPUT TYPE="text" NAME="detail<% $row %>" SIZE="60" MAXLENGTH="65" VALUE="<% $_->detail |h %>" rownum="<% $row++ %>" onkeyup = "possiblyAddRow;" > + <INPUT TYPE="text" NAME="detail<% $row %>" SIZE="60" MAXLENGTH="65" VALUE="<% $_->detail |h %>" rownum="<% $row++ %>" onkeyup="possiblyAddRow" onchange="possiblyAddRow" > </TD> </TR> @@ -88,6 +88,7 @@ detail_input.setAttribute('maxLength', 65); detail_input.setAttribute('rownum', rownum); detail_input.onkeyup = possiblyAddRow; + detail_input.onchange = possiblyAddRow; detail_cell.appendChild(detail_input); row.appendChild(detail_cell); diff --git a/httemplate/edit/process/quotation_pkg_detail.html b/httemplate/edit/process/quotation_pkg_detail.html new file mode 100644 index 000000000..2fc420280 --- /dev/null +++ b/httemplate/edit/process/quotation_pkg_detail.html @@ -0,0 +1,45 @@ +% if ( $error ) { +<% header('Error') %> +<FONT COLOR="#ff0000"><B><% $error |h %></B></FONT><BR><BR> +<CENTER><INPUT TYPE="BUTTON" VALUE="OK" onClick="parent.cClick()"></CENTER> +</BODY></HTML> +% } else { +<% header($action) %> + <SCRIPT TYPE="text/javascript"> + window.top.location.reload(); + </SCRIPT> + </BODY></HTML> +% } +<%init> + +my $curuser = $FS::CurrentUser::CurrentUser; + +die "access denied" + unless $curuser->access_right('Generate quotation'); + +$cgi->param('pkgnum') =~ /^(\d+)$/ or die 'illegal pkgnum'; +my $pkgnum = $1; + +my $quotation_pkg = qsearchs({ + 'table' => 'quotation_pkg', + 'addl_from' => 'LEFT JOIN quotation USING ( quotationnum )'. + 'LEFT JOIN cust_main USING ( custnum )', + 'hashref' => { 'quotationpkgnum' => $pkgnum }, + 'extra_sql' => ' AND '. $curuser->agentnums_sql, +}); + +my @orig_details = $quotation_pkg->details(); + +my $action = 'Quotation details'. + ( scalar(@orig_details) ? ' changed ' : ' added ' ); + +my $param = $cgi->Vars; +my @details = (); +for ( my $row = 0; exists($param->{"detail$row"}); $row++ ) { + push @details, $param->{"detail$row"} + if $param->{"detail$row"} =~ /\S/; +} + +my $error = $quotation_pkg->set_details(@details); + +</%init> diff --git a/httemplate/edit/quotation_pkg_detail.html b/httemplate/edit/quotation_pkg_detail.html new file mode 100644 index 000000000..b8f589a9a --- /dev/null +++ b/httemplate/edit/quotation_pkg_detail.html @@ -0,0 +1,116 @@ +<% include("/elements/header-popup.html", $title, '', + ( $cgi->param('error') ? '' : 'onload="addRow()"' ), + ) +%> + +%# <% include('/elements/error.html') %> + +<FORM ACTION="process/quotation_pkg_detail.html" NAME="DetailForm" ID="DetailForm" METHOD="POST"> + +<INPUT TYPE="hidden" NAME="pkgnum" VALUE="<% $pkgnum %>"> + +<TABLE ID="DetailTable" BGCOLOR="#cccccc" BORDER=0 CELLSPACING=1 STYLE="background-color: #cccccc"> + + <TR> + <TD ALIGN="right">Package</TD> + <TD BGCOLOR="#ffffff"><% $part_pkg->pkg %></TD> + </TR> + + <TR> + <TD ALIGN="right">Comment</TD> + <TD BGCOLOR="#ffffff"><% $part_pkg->comment |h %></TD> + </TR> + + <TR> + <TD COLSPAN=2>Detail: </TD> + </TR> + +% my $row = 0; +% for ( @details ) { + + <TR> + <TD></TD> + <TD> + <INPUT TYPE="text" NAME="detail<% $row %>" SIZE="60" MAXLENGTH="65" VALUE="<% $_ |h %>" rownum="<% $row++ %>" onkeyup="possiblyAddRow" onchange="possiblyAddrow"> + </TD> + </TR> + +% } + +</TABLE> + +<BR> +<INPUT TYPE="submit" ID="submit" NAME="submit" VALUE="<% $title %>"> + +</FORM> + +<SCRIPT TYPE="text/javascript"> +% # abject false laziness with edit/cust_pkg_detail.html + + var rownum = <% $row %>; + + function possiblyAddRow() { + if ( ( rownum - this.getAttribute('rownum') ) == 1 ) { + addRow(); + } + } + + function addRow() { + + var table = document.getElementById('DetailTable'); + var tablebody = table.getElementsByTagName('tbody').item(0); + + var row = document.createElement('TR'); + + var empty_cell = document.createElement('TD'); + row.appendChild(empty_cell); + + var detail_cell = document.createElement('TD'); + + var detail_input = document.createElement('INPUT'); + detail_input.setAttribute('name', 'detail'+rownum); + detail_input.setAttribute('id', 'detail'+rownum); + detail_input.setAttribute('size', 60); + detail_input.setAttribute('maxLength', 65); + detail_input.setAttribute('rownum', rownum); + detail_input.onkeyup = possiblyAddRow; + detail_input.onchange = possiblyAddRow; + detail_cell.appendChild(detail_input); + + row.appendChild(detail_cell); + + tablebody.appendChild(row); + + rownum++; + + } + +</SCRIPT> + +</BODY> +</HTML> +<%init> + +my $curuser = $FS::CurrentUser::CurrentUser; + +die "access denied" + unless $curuser->access_right('Generate quotation'); + +$cgi->param('pkgnum') =~ /^(\d+)$/ or die 'illegal pkgnum'; +my $pkgnum = $1; + +my $quotation_pkg = qsearchs({ + 'table' => 'quotation_pkg', + 'addl_from' => 'LEFT JOIN quotation USING ( quotationnum )'. + 'LEFT JOIN cust_main USING ( custnum )', + 'hashref' => { 'quotationpkgnum' => $pkgnum }, + 'extra_sql' => ' AND '. $curuser->agentnums_sql, +}); + +my $part_pkg = $quotation_pkg->part_pkg; + +my @details = $quotation_pkg->details; + +my $title = ( scalar(@details) ? 'Edit ' : 'Add ' ). 'Quotation Details'; + +</%init> diff --git a/httemplate/elements/popup_link.html b/httemplate/elements/popup_link.html index 2b6b187e9..e9728ac1c 100644 --- a/httemplate/elements/popup_link.html +++ b/httemplate/elements/popup_link.html @@ -18,11 +18,13 @@ Example: 'height' => 336, 'color' => '#ff0000', 'closetext' => 'Go Away', # the value '' removes the link + 'title' => 'Hover Text', #uncommon opt 'aname' => "target", # link NAME= value, useful for #targets 'target' => '_parent', 'style' => 'css-attribute:value', + 'html_label' => '<IMG SRC="something.png">', # overrides label } &> @@ -30,6 +32,7 @@ Example: % if ($params->{'action'} && $label) { <A HREF="javascript:void(0);" onClick="<% $onclick |n %>" + <% $params->{'title'} ? 'TITLE="' . $params->{'title'}. '"' : '' |n %> <% $params->{'aname'} ? 'NAME="'. $params->{'aname'}. '"' : '' |n %> <% $params->{'target'} ? 'TARGET="'. $params->{'target'}. '"' : '' |n %> <% $params->{'style'} ? 'STYLE="'. $params->{'style'}. '"' : '' |n %> @@ -48,6 +51,7 @@ if (ref($_[0]) eq 'HASH') { my $label = $params->{'label'}; $label =~ s/ / /g; +$label = $params->{'html_label'} || $label; my $onclick = include('/elements/popup_link_onclick.html', $params); </%init> diff --git a/httemplate/images/Actions-document-edit-icon.png b/httemplate/images/Actions-document-edit-icon.png Binary files differnew file mode 100644 index 000000000..8bfc32943 --- /dev/null +++ b/httemplate/images/Actions-document-edit-icon.png diff --git a/httemplate/view/quotation.html b/httemplate/view/quotation.html index 67609a1c6..18625095e 100755 --- a/httemplate/view/quotation.html +++ b/httemplate/view/quotation.html @@ -91,6 +91,8 @@ my $curuser = $FS::CurrentUser::CurrentUser; #die "access denied" # unless $curuser->access_right('View quotations'); +my $can_generate_quotation = $curuser->access_right('Generate quotation'); + my $quotationnum; my($query) = $cgi->keywords; if ( $query =~ /^(\d+)$/ ) { @@ -119,11 +121,23 @@ my $link = "quotationnum=$quotationnum"; #$link .= ';notice_name='. $notice_name if $notice_name; my $preref_callback = sub { - areyousure_link("${p}misc/delete-quotation_pkg.html?". shift->quotationpkgnum, + my $quotation_pkg = shift; + $can_generate_quotation ? + areyousure_link("${p}misc/delete-quotation_pkg.html?". $quotation_pkg->quotationpkgnum, emt('Are you sure you want to remove this package from the quotation?'), emt('Remove this package'), #tooltip qq(<img src="${p}images/cross.png">), #link - ); + ) . + include('/elements/popup_link.html', + action => "${p}edit/quotation_pkg_detail.html?pkgnum=" . + $quotation_pkg->quotationpkgnum, + html_label => qq(<IMG SRC="${p}images/Actions-document-edit-icon.png">), + title => emt('Edit quotation details'), + actionlabel => emt('Edit quotation details'), + color => '#333399', + width => 763, + ) + : ''; }; sub areyousure_link { |