[freeside-commits] branch master updated. 5c0cfcb8dec7c4f3a7aecea4c550ffb4bfb774c3

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


The branch, master has been updated
       via  5c0cfcb8dec7c4f3a7aecea4c550ffb4bfb774c3 (commit)
      from  5f2093d63b321716766535a0ff3e7420882a8888 (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 5c0cfcb8dec7c4f3a7aecea4c550ffb4bfb774c3
Author: Ivan Kohler <ivan at freeside.biz>
Date:   Sun Aug 18 02:01:19 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 57093e3..0cd07ef 100644
--- a/FS/FS/agent.pm
+++ b/FS/FS/agent.pm
@@ -626,6 +626,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 3948c2f..676757e 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