From ac67ba5d343e1e704b9e706e2aa19ecd979a5863 Mon Sep 17 00:00:00 2001 From: Ivan Kohler Date: Thu, 24 Oct 2013 00:39:47 -0700 Subject: [PATCH] discount classes, RT#24911 --- FS/FS/discount_class.pm | 109 ++++++++++++++++++++++ FS/t/discount_class.t | 5 + httemplate/browse/discount_class.html | 34 +++++++ httemplate/edit/discount_class.html | 10 ++ httemplate/edit/process/discount_class.html | 11 +++ httemplate/elements/select-discount_class.html | 18 ++++ httemplate/elements/tr-select-discount_class.html | 27 ++++++ 7 files changed, 214 insertions(+) create mode 100644 FS/FS/discount_class.pm create mode 100644 FS/t/discount_class.t create mode 100644 httemplate/browse/discount_class.html create mode 100644 httemplate/edit/discount_class.html create mode 100644 httemplate/edit/process/discount_class.html create mode 100644 httemplate/elements/select-discount_class.html create mode 100644 httemplate/elements/tr-select-discount_class.html diff --git a/FS/FS/discount_class.pm b/FS/FS/discount_class.pm new file mode 100644 index 000000000..f5b8769f3 --- /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 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, L, 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 000000000..1ccf92e21 --- /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 000000000..7f09102ec --- /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.

'. + qq!Add a discount class

!; + +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 ]; + + diff --git a/httemplate/edit/discount_class.html b/httemplate/edit/discount_class.html new file mode 100644 index 000000000..2bf27d996 --- /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 000000000..e7249464b --- /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'); + + diff --git a/httemplate/elements/select-discount_class.html b/httemplate/elements/select-discount_class.html new file mode 100644 index 000000000..41a27c53a --- /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'}; + + diff --git a/httemplate/elements/tr-select-discount_class.html b/httemplate/elements/tr-select-discount_class.html new file mode 100644 index 000000000..5489fe6e8 --- /dev/null +++ b/httemplate/elements/tr-select-discount_class.html @@ -0,0 +1,27 @@ +% if ( scalar(@{ $opt{'discount_class'} }) == 0 ) { + + + +% } else { + + + <% $opt{'label'} || 'Discount class' %> + + <% include( '/elements/select-discount_class.html', + 'curr_value' => $classnum, + %opt + ) + %> + + + +% } + +<%init> + +my %opt = @_; +my $classnum = $opt{'curr_value'} || $opt{'value'}; + +$opt{'discount_class'} ||= [ qsearch( 'discount_class', { disabled=>'' } ) ]; + + -- 2.11.0