[freeside-commits] branch FREESIDE_3_BRANCH updated. 13f185857802e292d34216a26d4ee097b62e549b

Ivan ivan at 420.am
Thu Oct 24 00:39:54 PDT 2013


The branch, FREESIDE_3_BRANCH has been updated
       via  13f185857802e292d34216a26d4ee097b62e549b (commit)
      from  67501ae6d2b92fc9a233f66d3a4d9b2cfd1ba3dc (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 13f185857802e292d34216a26d4ee097b62e549b
Author: Ivan Kohler <ivan at freeside.biz>
Date:   Thu Oct 24 00:39:51 2013 -0700

    discount classes, RT#24911

diff --git a/FS/FS/discount_class.pm b/FS/FS/discount_class.pm
new file mode 100644
index 0000000..f5b8769
--- /dev/null
+++ b/FS/FS/discount_class.pm
@@ -0,0 +1,109 @@
+package FS::discount_class;
+use base qw( FS::class_Common );
+
+use strict;
+use FS::Record qw( qsearch qsearchs );
+
+=head1 NAME
+
+FS::discount_class - Object methods for discount_class records
+
+=head1 SYNOPSIS
+
+  use FS::discount_class;
+
+  $record = new FS::discount_class \%hash;
+  $record = new FS::discount_class { 'column' => 'value' };
+
+  $error = $record->insert;
+
+  $error = $new_record->replace($old_record);
+
+  $error = $record->delete;
+
+  $error = $record->check;
+
+=head1 DESCRIPTION
+
+An FS::discount_class object represents a discount class.  FS::discount_class
+inherits from FS::Record.  The following fields are currently supported:
+
+=over 4
+
+=item classnum
+
+primary key
+
+=item classname
+
+classname
+
+=item disabled
+
+disabled
+
+=back
+
+=head1 METHODS
+
+=over 4
+
+=item new HASHREF
+
+Creates a new discount class.  To add the discount class to the database, see
+L<"insert">.
+
+Note that this stores the hash reference, not a distinct copy of the hash it
+points to.  You can ask the object for a copy with the I<hash> method.
+
+=cut
+
+sub table { 'discount_class'; }
+
+=item insert
+
+Adds this record to the database.  If there is an error, returns the error,
+otherwise returns false.
+
+=item delete
+
+Delete this record from the database.
+
+=item replace OLD_RECORD
+
+Replaces the OLD_RECORD with this one in the database.  If there is an error,
+returns the error, otherwise returns false.
+
+=item check
+
+Checks all fields to make sure this is a valid discount class.  If there is
+an error, returns the error, otherwise returns false.  Called by the insert
+and replace methods.
+
+=cut
+
+sub check {
+  my $self = shift;
+
+  my $error = 
+    $self->ut_numbern('classnum')
+    || $self->ut_text('classname')
+    || $self->ut_enum('disabled', [ '', 'Y' ])
+  ;
+  return $error if $error;
+
+  $self->SUPER::check;
+}
+
+=back
+
+=head1 BUGS
+
+=head1 SEE ALSO
+
+L<FS::discount>, L<FS::Record>, schema.html from the base documentation.
+
+=cut
+
+1;
+
diff --git a/FS/t/discount_class.t b/FS/t/discount_class.t
new file mode 100644
index 0000000..1ccf92e
--- /dev/null
+++ b/FS/t/discount_class.t
@@ -0,0 +1,5 @@
+BEGIN { $| = 1; print "1..1\n" }
+END {print "not ok 1\n" unless $loaded;}
+use FS::discount_class;
+$loaded=1;
+print "ok 1\n";
diff --git a/httemplate/browse/discount_class.html b/httemplate/browse/discount_class.html
new file mode 100644
index 0000000..7f09102
--- /dev/null
+++ b/httemplate/browse/discount_class.html
@@ -0,0 +1,34 @@
+<% include( 'elements/browse.html',
+                 'title'       => 'Discount classes',
+                 'html_init'   => $html_init,
+                 'name'        => 'discount classes',
+                 'disableable' => 1,
+                 'disabled_statuspos' => 1,
+                 'query'       => { 'table'     => 'discount_class',
+                                    'hashref'   => {},
+                                    'order_by' => 'ORDER BY classnum',
+                                  },
+                 'count_query' => $count_query,
+                 'header'      => $header,
+                 'fields'      => $fields,
+                 'links'       => $links,
+             )
+%>
+<%init>
+
+die "access denied"
+  unless $FS::CurrentUser::CurrentUser->access_right('Configuration');
+
+my $html_init = 
+  'Discount classes define reporing classifications for discounts.<BR><BR>'.
+  qq!<A HREF="${p}edit/discount_class.html"><I>Add a discount class</I></A><BR><BR>!;
+
+my $count_query = 'SELECT COUNT(*) FROM discount_class';
+
+my $link = [ $p.'edit/discount_class.html?', 'classnum' ];
+
+my $header = [ '#', 'Class' ];
+my $fields = [ 'classnum', 'classname' ];
+my $links  = [ $link, $link ];
+
+</%init>
diff --git a/httemplate/edit/discount_class.html b/httemplate/edit/discount_class.html
new file mode 100644
index 0000000..2bf27d9
--- /dev/null
+++ b/httemplate/edit/discount_class.html
@@ -0,0 +1,10 @@
+<% include( 'elements/class_Common.html',
+              'name_singular'   => 'Discount class',
+              'table'  => 'discount_class',
+	      'nocat' => 1,
+              'addl_labels' => { 'classnum'  => 'Class',
+                                 'classname' => 'Class',
+                                 'disabled'  => 'Disable',
+                               },
+          )
+%>
diff --git a/httemplate/edit/process/discount_class.html b/httemplate/edit/process/discount_class.html
new file mode 100644
index 0000000..e724946
--- /dev/null
+++ b/httemplate/edit/process/discount_class.html
@@ -0,0 +1,11 @@
+<% include( 'elements/process.html',
+               'table'       => 'discount_class',
+               'viewall_dir' => 'browse',
+           )
+%>
+<%init>
+
+die "access denied"
+  unless $FS::CurrentUser::CurrentUser->access_right('Configuration');
+
+</%init>
diff --git a/httemplate/elements/select-discount_class.html b/httemplate/elements/select-discount_class.html
new file mode 100644
index 0000000..41a27c5
--- /dev/null
+++ b/httemplate/elements/select-discount_class.html
@@ -0,0 +1,18 @@
+<% include( '/elements/select-table.html',
+                 'table'       => 'discount_class',
+                 'name_col'    => 'classname',
+                 'value'       => $classnum,
+                 'empty_label' => '(none)',
+                 'hashref'     => { 'disabled' => '' },
+                 %opt,
+             )
+%>
+<%init>
+
+my %opt = @_;
+my $classnum = $opt{'curr_value'} || $opt{'value'};
+
+$opt{'records'} = delete $opt{'discount_class'}
+  if $opt{'discount_class'};
+
+</%init>
diff --git a/httemplate/elements/tr-select-discount_class.html b/httemplate/elements/tr-select-discount_class.html
new file mode 100644
index 0000000..5489fe6
--- /dev/null
+++ b/httemplate/elements/tr-select-discount_class.html
@@ -0,0 +1,27 @@
+% if ( scalar(@{ $opt{'discount_class'} }) == 0 ) { 
+
+  <INPUT TYPE="hidden" NAME="<% $opt{'element_name'} || $opt{'field'} || 'classnum' %>" VALUE="">
+
+% } else { 
+
+  <TR>
+    <TD ALIGN="right"><% $opt{'label'} || 'Discount class' %></TD>
+    <TD>
+      <% include( '/elements/select-discount_class.html',
+                    'curr_value' => $classnum,
+                    %opt
+                )
+      %>
+    </TD>
+  </TR>
+
+% } 
+
+<%init>
+
+my %opt = @_;
+my $classnum = $opt{'curr_value'} || $opt{'value'};
+
+$opt{'discount_class'} ||= [ qsearch( 'discount_class', { disabled=>'' } ) ];
+
+</%init>

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

Summary of changes:
 FS/FS/{cable_model.pm => discount_class.pm}        |   36 ++++++++++----------
 FS/t/{AccessRight.t => discount_class.t}           |    2 +-
 .../{part_svc_class.html => discount_class.html}   |   14 ++++----
 httemplate/edit/discount_class.html                |   10 +++++
 .../{contact_class.html => discount_class.html}    |    2 +-
 ...-cust_class.html => select-discount_class.html} |    6 ++--
 ...vc_class.html => tr-select-discount_class.html} |    8 ++--
 7 files changed, 44 insertions(+), 34 deletions(-)
 copy FS/FS/{cable_model.pm => discount_class.pm} (60%)
 copy FS/t/{AccessRight.t => discount_class.t} (80%)
 copy httemplate/browse/{part_svc_class.html => discount_class.html} (62%)
 create mode 100644 httemplate/edit/discount_class.html
 copy httemplate/edit/process/{contact_class.html => discount_class.html} (80%)
 copy httemplate/elements/{select-cust_class.html => select-discount_class.html} (73%)
 copy httemplate/elements/{tr-select-part_svc_class.html => tr-select-discount_class.html} (59%)




More information about the freeside-commits mailing list