[freeside-commits] branch FREESIDE_3_BRANCH updated. ad46607a14730f6ce4d70cd796b803591d90070e

Ivan ivan at 420.am
Sun Aug 18 02:01:26 PDT 2013


The branch, FREESIDE_3_BRANCH has been updated
       via  ad46607a14730f6ce4d70cd796b803591d90070e (commit)
      from  ca87449136cd950891603a71e83ba31b55c76938 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit ad46607a14730f6ce4d70cd796b803591d90070e
Author: Ivan Kohler <ivan at freeside.biz>
Date:   Sun Aug 18 02:01:23 2013 -0700

    continue sales person work: customer and package selection, commissions, reporting.  RT#23402

diff --git a/FS/FS/agent.pm b/FS/FS/agent.pm
index 2312591..68a5912 100644
--- a/FS/FS/agent.pm
+++ b/FS/FS/agent.pm
@@ -602,6 +602,21 @@ sub num_prepay_credit {
   $sth->fetchrow_arrayref->[0];
 }
 
+=item num_sales
+
+Returns the number of non-disabled sales people for this agent.
+
+=cut
+
+sub num_sales {
+  my $self = shift;
+  my $sth = dbh->prepare(
+    "SELECT COUNT(*) FROM sales WHERE agentnum = ?
+                                  AND ( disabled = '' OR disabled IS NULL )"
+  ) or die dbh->errstr;
+  $sth->execute($self->agentnum) or die $sth->errstr;
+  $sth->fetchrow_arrayref->[0];
+}
 
 =back
 
diff --git a/FS/FS/cust_pkg.pm b/FS/FS/cust_pkg.pm
index 766357b..a627e24 100644
--- a/FS/FS/cust_pkg.pm
+++ b/FS/FS/cust_pkg.pm
@@ -1,9 +1,9 @@
 package FS::cust_pkg;
-
-use strict;
-use base qw( FS::otaker_Mixin FS::cust_main_Mixin
+use base qw( FS::otaker_Mixin FS::cust_main_Mixin FS::Sales_Mixin
              FS::contact_Mixin FS::location_Mixin
              FS::m2m_Common FS::option_Common );
+
+use strict;
 use vars qw($disable_agentcheck $DEBUG $me);
 use Carp qw(cluck);
 use Scalar::Util qw( blessed );
diff --git a/httemplate/edit/process/quick-cust_pkg.cgi b/httemplate/edit/process/quick-cust_pkg.cgi
index fe5ee5e..7dcd232 100644
--- a/httemplate/edit/process/quick-cust_pkg.cgi
+++ b/httemplate/edit/process/quick-cust_pkg.cgi
@@ -70,6 +70,9 @@ my $quantity = $1 || 1;
 $cgi->param('refnum') =~ /^(\d*)$/
   or die 'illegal refnum '. $cgi->param('refnum');
 my $refnum = $1;
+$cgi->param('salesnum') =~ /^(\d*)$/
+  or die 'illegal salesnum '. $cgi->param('salesnum');
+my $salesnum = $1;
 $cgi->param('contactnum') =~ /^(\-?\d*)$/
   or die 'illegal contactnum '. $cgi->param('contactnum');
 my $contactnum = $1;
@@ -111,6 +114,7 @@ my %hash = (
                                   ? parse_datetime($cgi->param('start_date'))
                                   : ''
                               ),
+    'salesnum'             => $salesnum,
     'refnum'               => $refnum,
     'contactnum'           => $contactnum,
     'locationnum'          => $locationnum,
diff --git a/httemplate/elements/tr-select-sales.html b/httemplate/elements/tr-select-sales.html
index f77ef50..2a2edf0 100644
--- a/httemplate/elements/tr-select-sales.html
+++ b/httemplate/elements/tr-select-sales.html
@@ -28,7 +28,11 @@ Example:
 
 %   if ( scalar(@sales) > 0 ) {
       <TR>
-        <TD ALIGN="right"><% $opt{'label'} || emt('Sales Person') %></TD>
+%       if ( $opt{'th'} ) {
+          <TH ALIGN="right"><% $opt{'label'} || emt('Sales Person') %></TH>
+%       } else {
+          <TD ALIGN="right"><% $opt{'label'} || emt('Sales Person') %></TD>
+%       }
         <TD BGCOLOR="#dddddd" <% $colspan %>>
 %         my $sales = qsearchs('sales', { 'salesnum' => $salesnum });
           <% $sales ? $sales->salesperson : '(none)' |h %>
@@ -43,7 +47,11 @@ Example:
 % } else { 
 
   <TR>
-    <TD ALIGN="right"><% $opt{'label'} || emt('Sales Person') %></TD>
+%   if ( $opt{'th'} ) {
+      <TH ALIGN="right"><% $opt{'label'} || emt('Sales Person') %></TH>
+%   } else {
+      <TD ALIGN="right"><% $opt{'label'} || emt('Sales Person') %></TD>
+%   }
     <TD <% $colspan %>>
       <& /elements/select-sales.html,
                      'curr_value' => $salesnum,
@@ -66,7 +74,8 @@ my @sales = qsearch({ 'table'   => 'sales',
                       'hashref' => { 'disabled' => '' },
                       'extra_sql' => ' AND '. $curuser->agentnums_sql,
                    });
-warn scalar(@sales);
+
 my $colspan = $opt{'colspan'} ? 'COLSPAN="'.$opt{'colspan'}.'"' : '';
 
+
 </%init>
diff --git a/httemplate/misc/order_pkg.html b/httemplate/misc/order_pkg.html
index 66c405a..0573468 100644
--- a/httemplate/misc/order_pkg.html
+++ b/httemplate/misc/order_pkg.html
@@ -1,5 +1,8 @@
-<& /elements/header-popup.html, $quotationnum ? mt('Add package to quotation')
-                                              : mt('Order new package')
+<& /elements/header-popup.html, {
+     'title' =>  $quotationnum ? mt('Add package to quotation')
+                               : mt('Order new package'),
+     'nobr'  => 1,
+   }
 &>
 
 <LINK REL="stylesheet" TYPE="text/css" HREF="../elements/calendar-win2k-2.css" TITLE="win2k-2">
@@ -21,7 +24,39 @@
     <INPUT TYPE="hidden" NAME="svcpart" VALUE="<% $svcpart %>">
 % }
 
+% my $num_sales = $agent->num_sales;
+% my $conf_pkg_referral = $conf->exists('pkg_referral');
+% my $show_sales = $num_sales && $conf_pkg_referral;
+% my $show_sales_table = $num_sales || $conf_pkg_referral;
+
+% if ( $show_sales ) {
+  <FONT CLASS="fsinnerbox-title"><% mt('Sales') |h %></FONT>
+% }
+% if ( $show_sales_table ) {
+  <% ntable("#cccccc", 2) %>
+% }
+
+<& /elements/tr-select-sales.html,
+     'curr_value' => scalar($cgi->param('salesnum')),
+     'th' => 1,
+&>
+
+% if ( $conf->exists('pkg_referral') ) {
+  <& /elements/tr-select-part_referral.html,
+               'curr_value'    => scalar( $cgi->param('refnum') ), #get rid of empty_label first# || $cust_main->refnum,
+               'disable_empty' => 1,
+               'multiple'      => $conf->exists('pkg_referral-multiple'),
+               'colspan'       => 7,
+  &>
+% }
+
+% if ( $show_sales_table ) {
+  </TABLE><BR>
+% }
+
+<FONT CLASS="fsinnerbox-title"><% mt('Package') |h %></FONT>
 <% ntable("#cccccc", 2) %>
+
 % if ( $part_pkg ) {
     <INPUT TYPE="hidden" NAME="pkgpart" VALUE="<% $part_pkg->pkgpart %>">
     <TR>
@@ -39,6 +74,14 @@
 
 <& /elements/tr-input-pkg-quantity.html, curr_value => $quantity &>
 
+% if ( $cust_main && $cust_main->payby =~ /^(CARD|CHEK)$/ ) {
+%   my $what = lc(FS::payby->shortname($cust_main->payby));
+    <TR>
+      <TH ALIGN="right"><% mt("Disable automatic $what charge") |h %> </TH>
+      <TD COLSPAN=6><INPUT TYPE="checkbox" NAME="no_auto" VALUE="Y"></TD>
+    </TR>
+% }
+
 <TR>
   <TH ALIGN="right"><% mt('Start date') |h %> </TD>
   <TD COLSPAN=6>
@@ -55,38 +98,53 @@
   </TD>
 </TR>
 
-% if ( $cust_main && $cust_main->payby =~ /^(CARD|CHEK)$/ ) {
-%   my $what = lc(FS::payby->shortname($cust_main->payby));
-    <TR>
-      <TH ALIGN="right"><% mt("Disable automatic $what charge") |h %> </TH>
-      <TD COLSPAN=6><INPUT TYPE="checkbox" NAME="no_auto" VALUE="Y"></TD>
-    </TR>
-% }
+<TR>
+  <TH ALIGN="right"><% mt('Contract end date') |h %> </TD>
+  <TD COLSPAN=6>
+    <& /elements/input-date-field.html,{
+                'name'      => 'contract_end',
+                'format'    => $date_format,
+                'value'     => '',
+                'noinit'    => 1,
+                } &>
+  </TD>
+</TR>
+
+</TABLE><BR>
+
+% my $discount_cust_pkg = $curuser->access_right('Discount customer package');
+% my $waive_setup_fee   = $curuser->access_right('Waive setup fee');
+%
+% if ( $discount_cust_pkg || $waive_setup_fee ) {
+  <FONT CLASS="fsinnerbox-title"><% mt('Discounting') |h %></FONT>
+  <% ntable("#cccccc", 2) %>
 
-% if ( $curuser->access_right('Discount customer package') ) {
-  <& /elements/tr-select-discount.html,
+%   if ( $waive_setup_fee ) {
+      <TR>
+        <TH ALIGN="right"><% mt('Waive setup fee') |h %> </TH>
+        <TD COLSPAN=6><INPUT TYPE="checkbox" NAME="waive_setup" VALUE="Y"></TD>
+      </TR>
+%   }
+
+%   if ( $discount_cust_pkg ) {
+      <& /elements/tr-select-discount.html,
                'element_etc' => 'DISABLED',
                'colspan'     => 7,
                'cgi'         => $cgi,
-  &>
-% }
+      &>
+%   }
 
-% if ( $curuser->access_right('Waive setup fee') ) {
-    <TR>
-      <TH ALIGN="right"><% mt('Waive setup fee') |h %> </TH>
-      <TD COLSPAN=6><INPUT TYPE="checkbox" NAME="waive_setup" VALUE="Y"></TD>
-    </TR>
-% }
+  </TABLE><BR>
 
-% if ( $conf->exists('pkg_referral') ) {
-  <& /elements/tr-select-part_referral.html,
-               'curr_value'    => scalar( $cgi->param('refnum') ), #get rid of empty_label first# || $cust_main->refnum,
-               'disable_empty' => 1,
-               'multiple'      => $conf->exists('pkg_referral-multiple'),
-               'colspan'       => 7,
-  &>
 % }
 
+
+% my $lock_locationnum = scalar($cgi->param('lock_locationnum'));
+% my $contact_title = $lock_locationnum ? 'Contact'
+%                                       : 'Contact and Location';
+<FONT CLASS="fsinnerbox-title"><% mt($contact_title) |h %></FONT>
+<% ntable("#cccccc", 2) %>
+
 <& /elements/tr-select-contact.html,
              'cgi'           => $cgi,
              'cust_main'     => $cust_main,
@@ -111,18 +169,6 @@
 
 % }
 
-<TR>
-  <TH ALIGN="right"><% mt('Contract end date') |h %> </TD>
-  <TD COLSPAN=6>
-    <& /elements/input-date-field.html,{
-                'name'      => 'contract_end',
-                'format'    => $date_format,
-                'value'     => '',
-                'noinit'    => 1,
-                } &>
-  </TD>
-</TR>
-
 </TABLE>
 
 % unless ( $cgi->param('lock_locationnum') ) {
@@ -186,15 +232,15 @@ if ( $cgi->param('quotationnum') =~ /^(\d+)$/ ) {
 
 die 'no custnum or prospectnum' unless $cust_main || $prospect_main;
 
+my $agent =  $cust_main ? $cust_main->agent
+                        : $prospect_main->agent;
+
 my $part_pkg = '';
 if ( $cgi->param('lock_pkgpart') ) {
   $part_pkg = qsearchs({
     'table'     => 'part_pkg',
     'hashref'   => { 'pkgpart' => scalar($cgi->param('lock_pkgpart')) },
-    'extra_sql' => ' AND '. FS::part_pkg->agent_pkgs_sql(
-                              $cust_main ? $cust_main->agent
-                                         : $prospect_main->agent
-                            ),
+    'extra_sql' => ' AND '. FS::part_pkg->agent_pkgs_sql($agent),
   })
     or die "unknown pkgpart ". $cgi->param('lock_pkgpart');
 }
diff --git a/httemplate/search/cust_pkg.cgi b/httemplate/search/cust_pkg.cgi
index 110da91..1cb61bc 100755
--- a/httemplate/search/cust_pkg.cgi
+++ b/httemplate/search/cust_pkg.cgi
@@ -9,6 +9,7 @@
                                      emt('Package'),
                                      emt('Class'),
                                      emt('Status'),
+                                     emt('Sales Person'),
                                      emt('Ordered by'),
                                      emt('Setup'),
                                      emt('Base Recur'),
@@ -35,6 +36,7 @@
                     sub { $_[0]->pkg; },
                     'classname',
                     sub { ucfirst(shift->status); },
+                    'salesperson',
                     'otaker',
                     sub { sprintf( $money_char.'%.2f',
                                    shift->part_pkg->option('setup_fee'),
@@ -99,13 +101,14 @@
                     '',
                     '',
                     '',
+                    '',
                     FS::UI::Web::cust_colors(),
                     '',
                   ],
-                  'style' => [ '', '', '', '', 'b', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
+                  'style' => [ '', '', '', '', 'b', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
                                FS::UI::Web::cust_styles() ],
                   'size'  => [ '', '', '', '', '-1' ],
-                  'align' => 'rrlcccrrlrrrrrrrrrrl'. FS::UI::Web::cust_aligns(). 'r',
+                  'align' => 'rrlccccrrlrrrrrrrrrrl'. FS::UI::Web::cust_aligns(). 'r',
                   'links' => [
                     $link,
                     $link,
@@ -123,6 +126,7 @@
                     '',
                     '',
                     '',
+                    '',
                     '', # link to changed-from package?
                     '',
                     '',

-----------------------------------------------------------------------

Summary of changes:
 FS/FS/agent.pm                             |   15 +++
 FS/FS/cust_pkg.pm                          |    6 +-
 httemplate/edit/process/quick-cust_pkg.cgi |    4 +
 httemplate/elements/tr-select-sales.html   |   15 +++-
 httemplate/misc/order_pkg.html             |  130 +++++++++++++++++++---------
 httemplate/search/cust_pkg.cgi             |    8 ++-
 6 files changed, 128 insertions(+), 50 deletions(-)




More information about the freeside-commits mailing list