From f7e13fe2f0a39fd277f2990e076b662f00c2b088 Mon Sep 17 00:00:00 2001 From: Ivan Kohler Date: Tue, 16 Sep 2014 23:39:45 -0700 Subject: [PATCH] customer quotations are work orders? RT#25561 --- httemplate/edit/process/quotation_convert.html | 15 +++++- httemplate/edit/quotation.html | 23 ++++----- httemplate/elements/quotations.html | 66 ++++++++++++++++++++++++++ httemplate/view/cust_main.cgi | 52 ++++++++++++++++++++ httemplate/view/cust_main/quotations.html | 10 ++++ httemplate/view/prospect_main.html | 47 +----------------- 6 files changed, 155 insertions(+), 58 deletions(-) create mode 100644 httemplate/elements/quotations.html create mode 100644 httemplate/view/cust_main/quotations.html diff --git a/httemplate/edit/process/quotation_convert.html b/httemplate/edit/process/quotation_convert.html index b387d0607..dc00a88d3 100644 --- a/httemplate/edit/process/quotation_convert.html +++ b/httemplate/edit/process/quotation_convert.html @@ -10,8 +10,19 @@ my $quotation = qsearchs( 'quotation' => { quotationnum => scalar( $cgi->param('quotationnum') ), } ) or die 'unknown quotationnum'; -my $cust_main = $quotation->convert_cust_main; -errorpage($cust_main) unless ref($cust_main);# eq 'FS::cust_main'; +my $cust_main = $quotation->cust_main; +if ( $cust_main ) { + my $error = $quotation->order; + errorpage($error) if $error; + + #i should be part of the order transaction + $quotation->disabled('Y'); + $quotation->replace; + +} else { + $cust_main = $quotation->convert_cust_main; + errorpage($cust_main) unless ref($cust_main);# eq 'FS::cust_main'; +} diff --git a/httemplate/edit/quotation.html b/httemplate/edit/quotation.html index 8b6062355..cc95d8781 100644 --- a/httemplate/edit/quotation.html +++ b/httemplate/edit/quotation.html @@ -1,19 +1,20 @@ <% include( 'elements/edit.html', - 'name' => 'Quotation', - 'table' => 'quotation', - 'labels' => { - 'quotationnum' => 'Quotation number', - 'prospectnum' => 'Prospect', - 'custnum' => 'Customer', - '_date' => 'Date', - 'disabled' => 'Disabled', - }, - 'fields' => [ + 'name' => 'Quotation', + 'table' => 'quotation', + 'menubar' => [], + 'labels' => { + 'quotationnum' => 'Quotation number', + 'prospectnum' => 'Prospect', + 'custnum' => 'Customer', + '_date' => 'Date', + 'disabled' => 'Disabled', + }, + 'fields' => [ { field=>'prospectnum', type=>'fixed-prospect_main' }, { field=>'custnum', type=>'fixed-cust_main' }, { field=>'_date', type=>'fixed-date' }, { field=>'disabled', type=>'checkbox', value=>'Y'}, - ], + ], #XXX some way to disable the "view all" 'new_callback' => sub { my( $cgi, $quotation) = @_; $quotation->$_( $cgi->param($_) ) diff --git a/httemplate/elements/quotations.html b/httemplate/elements/quotations.html new file mode 100644 index 000000000..0cf150022 --- /dev/null +++ b/httemplate/elements/quotations.html @@ -0,0 +1,66 @@ +% if ( $curuser->access_right('Generate quotation') ) { + + <% mt( 'Quotations' ) |h %> + New quotation + +% if ( @quotations ) { + <& /elements/table-grid.html &> +% my $bgcolor1 = '#eeeeee'; +% my $bgcolor2 = '#ffffff'; +% my $bgcolor = ''; + + # + <% mt('Date') |h %> + <% mt('Setup') |h %> + <% mt('Recurring') |h %> + + +% foreach my $quotation (@quotations) { +% if ( $bgcolor eq $bgcolor1 ) { +% $bgcolor = $bgcolor2; +% } else { +% $bgcolor = $bgcolor1; +% } +% my $a = qq(quotationnum. '">'; + + <% $a %><% $quotation->quotationnum %> + <% $a %><% time2str($date_format, $quotation->_date) |h %> + <% $a %><% $quotation->total_setup |h %> + <% $a %><% $quotation->total_recur |h %> + <% $opt{convert_label} || 'Convert to customer' %> + +% } + +% } +

+ +% } +<%init> + +my $curuser = $FS::CurrentUser::CurrentUser; + +#die "access denied" +# unless $curuser->access_right('Generate quotation'); + +my $conf = new FS::Conf; + +my $date_format = $conf->config('date_format') || '%m/%d/%Y'; + +my %opt = @_; + +my $new_query; +my @quotations; +if ( $opt{cust_main} ) { + $new_query = 'custnum='. $opt{cust_main}->custnum; + @quotations = $opt{cust_main}->quotation; +} elsif ( $opt{prospect_main} ) { + $new_query = 'quotationnum='. $opt{prospect_main}->quotationnum; + @quotations = $opt{prospect_main}->quotation; +} else { + die 'guru meditation #&&: neither cust_main nor prospect_main specified'; +} + +@quotations = grep ! $_->disabled, @quotations; + + diff --git a/httemplate/view/cust_main.cgi b/httemplate/view/cust_main.cgi index c6266ce34..7a6e425be 100755 --- a/httemplate/view/cust_main.cgi +++ b/httemplate/view/cust_main.cgi @@ -40,6 +40,11 @@ function areyousure(href, message) { } + +% ### +% # Basics +% ### + % if ( $view eq 'basics' || $view eq 'jumbo' ) { % if ( $curuser->access_right('Edit customer') ) { @@ -189,6 +194,11 @@ function areyousure(href, message) { % } + +% ### +% # Notes +% ### + % if ( $view eq 'notes' || $view eq 'jumbo' ) { <& cust_main/notes.html, 'cust_main' => $cust_main &> @@ -201,6 +211,11 @@ function areyousure(href, message) {
+ +% ### +% # Tickets +% ### + % if ( $view eq 'tickets' || $view eq 'jumbo' ) { % if ( $conf->config('ticket_system') ) { @@ -210,6 +225,10 @@ function areyousure(href, message) { % } +% ### +% # Appointments +% ### + % if ( $view eq 'appointments' || $view eq 'jumbo' ) { % if ( $conf->config('ticket_system') @@ -220,6 +239,28 @@ function areyousure(href, message) { % } + +% ### +% # Quotations +% ### + +% if ( $view eq 'jumbo' && $curuser->access_right('Generate quotation') ) { + <% mt('Quotations') |h %>
+% } + +% if ( $view eq 'quotations' || $view eq 'jumbo' ) { + +% if ( $curuser->access_right('Generate quotation') ) { + <& cust_main/quotations.html, $cust_main &> +% } + +% } + + +% ### +% # Packages +% ### + % if ( $view eq 'jumbo' ) { #XXX enable me && $curuser->access_right('View customer packages') { <% mt('Packages') |h %>
@@ -233,6 +274,11 @@ function areyousure(href, message) { % } + +% ### +% # Payment History +% ### + % if ( $view eq 'jumbo' ) {

<% mt('Payment History') |h %> @@ -247,6 +293,11 @@ function areyousure(href, message) { % } + +% ### +% # Change History +% ### + % if ( $view eq 'change_history' ) { # || $view eq 'jumbo' <& cust_main/change_history.html, $cust_main &> % } @@ -305,6 +356,7 @@ if ( $conf->config('ticket_system') ) { $views{emt('Appointments')} = 'appointments' if $curuser->access_right('View appointments'); } +$views{emt('Quotations')} = 'quotations'; $views{emt('Packages')} = 'packages'; $views{emt('Payment History')} = 'payment_history' unless $conf->config('payby-default' eq 'HIDE'); diff --git a/httemplate/view/cust_main/quotations.html b/httemplate/view/cust_main/quotations.html new file mode 100644 index 000000000..4e3a207fe --- /dev/null +++ b/httemplate/view/cust_main/quotations.html @@ -0,0 +1,10 @@ +<& /elements/quotations.html, + cust_main => $cust_main, + convert_label => 'Place order', +&> + +<%init> + +my $cust_main = shift; + + diff --git a/httemplate/view/prospect_main.html b/httemplate/view/prospect_main.html index 689b422a4..66abffcdd 100644 --- a/httemplate/view/prospect_main.html +++ b/httemplate/view/prospect_main.html @@ -1,7 +1,4 @@ -<% include('/elements/header.html', - 'Prospect View: '. $prospect_main->company - ) -%> +<& /elements/header.html, 'Prospect View: '. $prospect_main->company &> % if ( $curuser->access_right('Edit prospect') ) { Edit this prospect @@ -76,43 +73,7 @@
-% if ( $curuser->access_right('Generate quotation') ) { - <% mt( 'Quotations' ) |h %> - New quotation -% my @quotations = $prospect_main->quotation; -% if ( @quotations ) { - <& /elements/table-grid.html &> -% my $bgcolor1 = '#eeeeee'; -% my $bgcolor2 = '#ffffff'; -% my $bgcolor = ''; - - # - <% mt('Date') |h %> - <% mt('Setup') |h %> - <% mt('Recurring') |h %> - - -% foreach my $quotation (@quotations) { -% if ( $bgcolor eq $bgcolor1 ) { -% $bgcolor = $bgcolor2; -% } else { -% $bgcolor = $bgcolor1; -% } -% my $a = qq(quotationnum. '">'; - - <% $a %><% $quotation->quotationnum %> - <% $a %><% time2str($date_format, $quotation->_date) |h %> - <% $a %><% $quotation->total_setup |h %> - <% $a %><% $quotation->total_recur |h %> - Convert to customer - -% } - -% } -

-% } - +<& /elements/quotations.html, prospect_main=>$prospect_main &> % if ( $curuser->access_right('Qualify service') ) { <% include( '/elements/popup_link-prospect_main.html', @@ -147,10 +108,6 @@ my $curuser = $FS::CurrentUser::CurrentUser; die "access denied" unless $curuser->access_right('View prospect'); -my $conf = new FS::Conf; - -my $date_format = $conf->config('date_format') || '%m/%d/%Y'; - my $prospectnum; if ( $cgi->param('prospectnum') =~ /^(\d+)$/ ) { $prospectnum = $1; -- 2.11.0