summaryrefslogtreecommitdiff
path: root/FS/FS/part_svc.pm
diff options
context:
space:
mode:
authorJonathan Prykop <jonathan@freeside.biz>2015-04-24 22:19:34 -0500
committerJonathan Prykop <jonathan@freeside.biz>2015-04-24 22:19:34 -0500
commit4fda726fa9f8e709c68ec823edc5ae702723281c (patch)
tree1436b287dc8467b16aa2f11c6cdc62f36e2fae82 /FS/FS/part_svc.pm
parent326075e45814387624303357207eae9069301f58 (diff)
RT#34289: Flag service fields as mandatory
Diffstat (limited to 'FS/FS/part_svc.pm')
-rw-r--r--FS/FS/part_svc.pm16
1 files changed, 15 insertions, 1 deletions
diff --git a/FS/FS/part_svc.pm b/FS/FS/part_svc.pm
index f56878a..1da30cb 100644
--- a/FS/FS/part_svc.pm
+++ b/FS/FS/part_svc.pm
@@ -95,8 +95,12 @@ the part_svc_column table appropriately (see L<FS::part_svc_column>).
=item I<svcdb>__I<field> - Default or fixed value for I<field> in I<svcdb>.
+=item I<svcdb>__I<field>_label
+
=item I<svcdb>__I<field>_flag - defines I<svcdb>__I<field> action: null or empty (no default), `D' for default, `F' for fixed (unchangeable), , `S' for selectable choice, `M' for manual selection from inventory, or `A' for automatic selection from inventory. For virtual fields, can also be 'X' for excluded.
+=item I<svcdb>__I<field>_required - I<field> should always have a true value
+
=back
If you want to add part_svc_column records for fields that do not exist as
@@ -145,6 +149,7 @@ sub insert {
foreach my $field (
grep { $_ ne 'svcnum'
&& ( defined( $self->getfield($svcdb.'__'.$_.'_flag') )
+ || defined($self->getfield($svcdb.'__'.$_.'_required'))
|| $self->getfield($svcdb.'__'.$_.'_label') !~ /^\s*$/ )
} (fields($svcdb), @fields)
) {
@@ -156,6 +161,7 @@ sub insert {
my $flag = $self->getfield($svcdb.'__'.$field.'_flag');
my $label = $self->getfield($svcdb.'__'.$field.'_label');
+ my $required = $self->getfield($svcdb.'__'.$field.'_required') ? 'Y' : '';
if ( uc($flag) =~ /^([A-Z])$/ || $label !~ /^\s*$/ ) {
if ( uc($flag) =~ /^([A-Z])$/ ) {
@@ -170,6 +176,8 @@ sub insert {
$part_svc_column->setfield('columnlabel', $label)
if $label !~ /^\s*$/;
+ $part_svc_column->setfield('required', $required);
+
if ( $previous ) {
$error = $part_svc_column->replace($previous);
} else {
@@ -279,6 +287,7 @@ sub replace {
foreach my $field (
grep { $_ ne 'svcnum'
&& ( defined( $new->getfield($svcdb.'__'.$_.'_flag') )
+ || defined($new->getfield($svcdb.'__'.$_.'_required'))
|| $new->getfield($svcdb.'__'.$_.'_label') !~ /^\s*$/ )
} (fields($svcdb),@fields)
) {
@@ -291,6 +300,7 @@ sub replace {
my $flag = $new->getfield($svcdb.'__'.$field.'_flag');
my $label = $new->getfield($svcdb.'__'.$field.'_label');
+ my $required = $new->getfield($svcdb.'__'.$field.'_required') ? 'Y' : '';
if ( uc($flag) =~ /^([A-Z])$/ || $label !~ /^\s*$/ ) {
@@ -309,6 +319,8 @@ sub replace {
$part_svc_column->setfield('columnlabel', $label)
if $label !~ /^\s*$/;
+ $part_svc_column->setfield('required', $required);
+
if ( $previous ) {
$error = $part_svc_column->replace($previous);
} else {
@@ -699,6 +711,8 @@ some components specified by "select-.*.html", and a bunch more...
=item select_allow_empty - Used with select_table, adds an empty option
+=item required - This field should always have a true value (do not use with type checkbox or disabled)
+
=back
=cut
@@ -773,7 +787,7 @@ sub process {
and ref($param->{ $f }) ) {
$param->{ $f } = join(',', @{ $param->{ $f } });
}
- ( $f, $f.'_flag', $f.'_label' );
+ ( $f, $f.'_flag', $f.'_label', $f.'_required' );
}
@fields;