[freeside-commits] branch master updated. 5f2093d63b321716766535a0ff3e7420882a8888

Ivan ivan at 420.am
Sat Aug 17 23:19:21 PDT 2013


The branch, master has been updated
       via  5f2093d63b321716766535a0ff3e7420882a8888 (commit)
      from  d5fa12d1022afb592e80803971e90d18eac414e0 (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 5f2093d63b321716766535a0ff3e7420882a8888
Author: Ivan Kohler <ivan at freeside.biz>
Date:   Sat Aug 17 23:19:19 2013 -0700

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

diff --git a/FS/FS/Sales_Mixin.pm b/FS/FS/Sales_Mixin.pm
new file mode 100644
index 0000000..3b30ac9
--- /dev/null
+++ b/FS/FS/Sales_Mixin.pm
@@ -0,0 +1,43 @@
+package FS::Sales_Mixin;
+
+use strict;
+use FS::Record qw( qsearchs );
+use FS::sales;
+
+=head1 NAME
+
+FS::Agent_Mixin - Mixin class for objects that have an sales person.
+
+=over 4
+
+=item sales
+
+Returns the sales person (see L<FS::sales>) for this object.
+
+=cut
+
+sub sales {
+  my $self = shift;
+  qsearchs( 'sales', { 'salesnum' => $self->salesnum } );
+}
+
+=item salesperson
+
+Returns the sales person name for this object, if any.
+
+=cut
+
+sub salesperson {
+  my $self = shift;
+  my $sales = $self->sales or return '';
+  $sales->salesperson;
+}
+
+=back
+
+=head1 BUGS
+
+=cut
+
+1;
+
diff --git a/FS/FS/cust_main.pm b/FS/FS/cust_main.pm
index 8e7c3e7..ef6628f 100644
--- a/FS/FS/cust_main.pm
+++ b/FS/FS/cust_main.pm
@@ -9,7 +9,7 @@ use base qw( FS::cust_main::Packages FS::cust_main::Status
              FS::cust_main::Billing_ThirdParty
              FS::cust_main::Location
              FS::otaker_Mixin FS::payinfo_Mixin FS::cust_main_Mixin
-             FS::geocode_Mixin FS::Quotable_Mixin
+             FS::geocode_Mixin FS::Quotable_Mixin FS::Sales_Mixin
              FS::o2m_Common
              FS::Record
            );
diff --git a/httemplate/edit/cust_main/top_misc.html b/httemplate/edit/cust_main/top_misc.html
index b7e86ba..bceb5e1 100644
--- a/httemplate/edit/cust_main/top_misc.html
+++ b/httemplate/edit/cust_main/top_misc.html
@@ -129,6 +129,11 @@
              'label'       => emt("Class"),
 &>
 
+%#sales person
+<& /elements/tr-select-sales.html,
+     'curr_value' => $cust_main->salesnum,
+&>
+
 %# referral (advertising source)
 %my $refnum = $cust_main->refnum || $conf->config('referraldefault') || 0;
 %if ( $custnum && ! $conf->exists('editreferrals') ) {
diff --git a/httemplate/elements/select-sales.html b/httemplate/elements/select-sales.html
new file mode 100644
index 0000000..555799e
--- /dev/null
+++ b/httemplate/elements/select-sales.html
@@ -0,0 +1,19 @@
+<& /elements/select-table.html,
+                 'table'         => 'sales',
+                 'name_col'      => 'salesperson',
+                 'value'         => $salesnum || '',
+                 'agent_virt'    => 1,
+                 'empty_label'   => emt('(none)'),
+                 'hashref'       => { 'disabled' => '' },
+                 'order_by'      => ' ORDER BY salesperson',
+                 %opt,
+&>
+<%init>
+
+my %opt = @_;
+my $salesnum = $opt{'curr_value'} || $opt{'value'};
+
+$opt{'records'} = delete $opt{'sales'}
+  if $opt{'sales'};
+
+</%init>
diff --git a/httemplate/elements/tr-select-sales.html b/httemplate/elements/tr-select-sales.html
new file mode 100644
index 0000000..f77ef50
--- /dev/null
+++ b/httemplate/elements/tr-select-sales.html
@@ -0,0 +1,72 @@
+<%doc>
+
+Example:
+
+  <& /elements/tr-select-sales.html',
+
+    #recommended to keep things "sticky" on errors
+    'curr_value'    => $curr_value,
+
+    ##
+    # optional
+    ##
+
+    'label'         => 'Sales Person',
+    'empty_label'   => 'Select sales person', #override default 
+    #on already# 'disable_empty' => 1,
+
+  &>
+
+</%doc>
+% if ( scalar(@sales) == 0 || $opt{'fixed'} ) { 
+
+  <INPUT TYPE  = "hidden"
+         NAME  = "<% $opt{'field'} || 'salesnum' %>"
+         ID    = "<% $opt{'field'} || 'salesnum' %>"
+         VALUE = "<% $salesnum %>"
+  >
+
+%   if ( scalar(@sales) > 0 ) {
+      <TR>
+        <TD ALIGN="right"><% $opt{'label'} || emt('Sales Person') %></TD>
+        <TD BGCOLOR="#dddddd" <% $colspan %>>
+%         my $sales = qsearchs('sales', { 'salesnum' => $salesnum });
+          <% $sales ? $sales->salesperson : '(none)' |h %>
+        </TD>
+      </TR>
+
+%   } else { # YUCK.  empty row so we don't throw g_row in edit.html off :/
+      <TR>
+      </TR>
+%   }
+%
+% } else { 
+
+  <TR>
+    <TD ALIGN="right"><% $opt{'label'} || emt('Sales Person') %></TD>
+    <TD <% $colspan %>>
+      <& /elements/select-sales.html,
+                     'curr_value' => $salesnum,
+                     'sales'     => \@sales,
+                     %opt,
+      &>
+    </TD>
+  </TR>
+
+% } 
+
+<%init>
+
+my $curuser = $FS::CurrentUser::CurrentUser;
+
+my %opt = @_;
+my $salesnum = $opt{'curr_value'} || $opt{'value'};
+
+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/view/cust_main/misc.html b/httemplate/view/cust_main/misc.html
index 263c266..5311aa5 100644
--- a/httemplate/view/cust_main/misc.html
+++ b/httemplate/view/cust_main/misc.html
@@ -52,6 +52,13 @@
      </TR>
 %  #}
 
+% if ( $cust_main->salesnum ) {
+    <TR>
+      <TD ALIGN="right"><% mt('Sales Person') |h %></TD>
+      <TD BGCOLOR="#ffffff"><% $cust_main->salesperson |h %></TD>
+    </TR>
+% }
+
 %  unless ( FS::part_referral->num_part_referral == 1 ) {
 %    my $referral = qsearchs('part_referral', {
 %      'refnum' => $cust_main->refnum

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

Summary of changes:
 FS/FS/Sales_Mixin.pm                     |   43 ++++++++++++++++++
 FS/FS/cust_main.pm                       |    2 +-
 httemplate/edit/cust_main/top_misc.html  |    5 ++
 httemplate/elements/select-sales.html    |   19 ++++++++
 httemplate/elements/tr-select-sales.html |   72 ++++++++++++++++++++++++++++++
 httemplate/view/cust_main/misc.html      |    7 +++
 6 files changed, 147 insertions(+), 1 deletions(-)
 create mode 100644 FS/FS/Sales_Mixin.pm
 create mode 100644 httemplate/elements/select-sales.html
 create mode 100644 httemplate/elements/tr-select-sales.html




More information about the freeside-commits mailing list