[freeside-commits] branch master updated. ac67ba5d343e1e704b9e706e2aa19ecd979a5863

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


The branch, master has been updated
       via  ac67ba5d343e1e704b9e706e2aa19ecd979a5863 (commit)
      from  adc62b5c44f6e6fddda75aff0d594d7a7d95a403 (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 ac67ba5d343e1e704b9e706e2aa19ecd979a5863
Author: Ivan Kohler <ivan at freeside.biz>
Date:   Thu Oct 24 00:39:47 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/{vend_class.pm => discount_class.pm}         |   29 +++++++++-----------
 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, 39 insertions(+), 32 deletions(-)
 copy FS/FS/{vend_class.pm => discount_class.pm} (65%)
 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