my %part_pkg_currency = %{ $options{'part_pkg_currency'} || {} };
foreach my $key ( keys %part_pkg_currency ) {
$key =~ /^(.+)_([A-Z]{3})$/ or next;
+ my( $optionname, $currency ) = ( $1, $2 );
+ if ( $part_pkg_currency{$key} =~ /^\s*$/ ) {
+ if ( $self->option($optionname) == 0 ) {
+ $part_pkg_currency{$key} = '0';
+ } else {
+ $dbh->rollback if $oldAutoCommit;
+ ( my $thing = $optionname ) =~ s/_/ /g;
+ return ucfirst($thing). " $currency is required";
+ }
+ }
my $part_pkg_currency = new FS::part_pkg_currency {
'pkgpart' => $self->pkgpart,
- 'optionname' => $1,
- 'currency' => $2,
+ 'optionname' => $optionname,
+ 'currency' => $currency,
'optionvalue' => $part_pkg_currency{$key},
};
my $error = $part_pkg_currency->insert;
my $error = $self->ut_numbern('pkgpart')
|| $self->ut_text('pkg')
- || $self->ut_text('comment')
+ || $self->ut_textn('comment')
|| $self->ut_textn('promo_code')
|| $self->ut_alphan('plan')
|| $self->ut_enum('setuptax', [ '', 'Y' ] )
#$self->pkg. ' - '. $self->comment;
#$self->pkg. ' ('. $self->comment. ')';
my $pre = $opt{nopkgpart} ? '' : $self->pkgpart. ': ';
- $pre. $self->pkg. ' - '. $self->custom_comment;
+ my $custom_comment = $self->custom_comment(%opt);
+ $pre. $self->pkg. ( $custom_comment ? " - $custom_comment" : '' );
}
sub price_info { # safety, in case a part_pkg hasn't defined price_info
sub custom_comment {
my $self = shift;
- ( $self->custom ? '(CUSTOM) ' : '' ). $self->comment . ' ' . $self->price_info;
+ my $price_info = $self->price_info(@_);
+ ( $self->custom ? '(CUSTOM) ' : '' ).
+ $self->comment.
+ ( ($self->custom || $self->comment) ? ' - ' : '' ).
+ ($price_info || 'No charge');
+}
+
+sub pkg_price_info {
+ my $self = shift;
+ $self->pkg. ' - '. ($self->price_info || 'No charge');
}
=item pkg_class
# whether the plan allows changing the start date
sub can_start_date { 1; }
+
+# whether the plan supports part_pkg_usageprice add-ons (a specific kind of
+# pre-selectable usage pricing, there's others this doesn't refer to)
+sub can_usageprice { 0; }
# the delay start date if present
sub delay_start_date {