X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;ds=inline;f=httemplate%2Fbrowse%2Fpart_svc.cgi;h=8b596752f814ebd7fe959fed66d24103cfc0752f;hb=3f2a7b01b59902faed5767d81e2959e131bdbdfd;hp=f941ae586d65fd568ba898e7ab2a1142f86d1559;hpb=942431fdcb3803b7ef98b1be8c4dc188e1a4b5aa;p=freeside.git
diff --git a/httemplate/browse/part_svc.cgi b/httemplate/browse/part_svc.cgi
index f941ae586..8b596752f 100755
--- a/httemplate/browse/part_svc.cgi
+++ b/httemplate/browse/part_svc.cgi
@@ -61,8 +61,9 @@ function part_export_areyousure(href) {
Modifier |
+ Required |
+
-% my $conf = FS::Conf->new;
% foreach my $part_svc ( @part_svc ) {
% my $svcdb = $part_svc->svcdb;
% my $svc_x = "FS::$svcdb"->new( { svcpart => $part_svc->svcpart } );
@@ -78,6 +79,9 @@ function part_export_areyousure(href) {
% $col->columnflag || ( $col->columnlabel !~ /^\S*$/
% && $col->columnlabel ne $def->{'label'}
% )
+% || ( $col->required
+% && !$def->{'required'}
+% )
% )
% }
% @dfields ;
@@ -107,17 +111,37 @@ function part_export_areyousure(href) {
% }
- CLASS="grid" BGCOLOR="<% $bgcolor %>">
- <% $part_svc->svc %> |
+ CLASS="grid" BGCOLOR="<% $bgcolor %>">
+
+ <% $part_svc->svc %>
+
+% # any alternate names of the service
+% my %msgcat = map { $_->locale => $_ } $part_svc->part_svc_msgcat;
+% my %labels = map { $_ => FS::Locales->description($_) } keys %msgcat;
+% my @locales = sort { $labels{$a} cmp $labels{$b} } keys %msgcat;
+% if ( @locales ) {
+
+
+% foreach my $locale (@locales) {
+ <% $labels{$locale} %>: <% $msgcat{$locale}->get('svc') %>
+
+% }
+
+% }
+ |
CLASS="grid" BGCOLOR="<% $bgcolor %>">
<% $svcdb %> |
CLASS="grid" BGCOLOR="<% $bgcolor %>">
- <% $num_active_cust_svc{$part_svc->svcpart} %> <% $num_active_cust_svc{$part_svc->svcpart} ? svc_url( 'ahref' => 1, 'm' => $m, 'action' => 'search', 'part_svc' => $part_svc, 'query' => "svcpart=". $part_svc->svcpart ) : '' %>active
-
-% if ( $num_active_cust_svc{$part_svc->svcpart} ) {
- [ change ]
+% my $svcurl_active = svc_url( 'ahref' => 1, 'm' => $m, 'action' => 'search', 'part_svc' => $part_svc, 'query' => "svcpart=". $part_svc->svcpart . "&cancelled=0");
+% my $svcurl_cancel = svc_url( 'ahref' => 1, 'm' => $m, 'action' => 'search', 'part_svc' => $part_svc, 'query' => "svcpart=". $part_svc->svcpart . "&cancelled=1");
+ <% $num_cust_svc_active{$part_svc->svcpart} %> <% $num_cust_svc_active{$part_svc->svcpart} || $disable_counts ? $svcurl_active : '' %>active<% $num_cust_svc_active{$part_svc->svcpart} || $disable_counts ? '' : '' %>
+% if ( $num_cust_svc_cancelled{$part_svc->svcpart} || $disable_counts ) {
+ <% $num_cust_svc_cancelled{$part_svc->svcpart} %> <% $svcurl_cancel %>cancelled
+% }
+% if ( $num_cust_svc{$part_svc->svcpart} || $disable_counts ) {
+ [ change ]
% }
|
@@ -150,13 +174,13 @@ function part_export_areyousure(href) {
% unless ( @fields ) {
-% for ( 1..4 ) {
+% for ( 1..5 ) {
% }
% }
%
% my($n1)='';
-% foreach my $field ( @fields ) {
+% foreach my $field ( sort @fields ) {
%
% #a few lines of false laziness w/edit/part_svc.cgi
% my $def = FS::part_svc->svc_table_fields($svcdb)->{$field};
@@ -170,23 +194,29 @@ function part_export_areyousure(href) {
| <% $field %> |
<% $label %> |
<% $flag{$flag} %> |
-
% my $value = &$formatter($part_svc->part_svc_column($field)->columnvalue);
% if ( $flag =~ /^[MAH]$/ ) {
% my $select_table = ($flag eq 'H') ? 'hardware_class' : 'inventory_class';
-% $select_class{$value} ||=
-% qsearchs($select_table, { 'classnum' => $value } );
+% foreach my $classnum ( split(',', $value) ) {
+% $select_class{$classnum} =
+% qsearchs($select_table, { 'classnum' => $classnum } );
%
- <% $select_class{$value}
- ? $select_class{$value}->classname
- : "WARNING: $select_table.classnum $value not found" %>
+ <% $select_class{$classnum}
+ ? $select_class{$classnum}->classname
+ : "WARNING: $select_table.classnum $classnum not found" %>
+% }
% } else {
<% $value %>
% }
|
+
+% if ($part_svc_column->required) {
+ Yes
+% }
+ |
% $n1="";
% } #foreach $field
% if ( $part_svc->restrict_edit_password ) {
@@ -208,6 +238,9 @@ function part_export_areyousure(href) {
die "access denied"
unless $FS::CurrentUser::CurrentUser->access_right('Configuration');
+my $conf = FS::Conf->new;
+my $disable_counts = $conf->exists('config-disable_counts') ? 1 : 0;
+
#code duplication w/ edit/part_svc.cgi, should move this hash to part_svc.pm
my %flag = (
'' => '',
@@ -220,6 +253,7 @@ my %flag = (
'A' => 'Automatically filled in from inventory',
'H' => 'Selected from hardware class',
'X' => 'Excluded',
+ 'P' => 'From package 477 information',
);
my %search;
@@ -234,11 +268,28 @@ my @part_svc =
qsearch('part_svc', \%search );
my $total = scalar(@part_svc);
-my %num_active_cust_svc = map { $_->svcpart => $_->num_cust_svc } @part_svc;
+## The Active/Cancelled distinction is a bit awkward,
+## active currently includes unattached and suspended services,
+## but we've previously referred to EVERY existing cust_svc as "Active",
+## and we don't really want to know numbers by individual package status,
+## so for now the UI will distinguish these as "Active" and "Cancelled",
+## but please let's not go so far as to introduce the idea of "Service Status"
+
+my %num_cust_svc_active;
+my %num_cust_svc_cancelled;
+my %num_cust_svc;
+
+unless ( $disable_counts ) {
+ foreach my $part_svc (@part_svc) {
+ $num_cust_svc{$part_svc->svcpart} = $part_svc->num_cust_svc;
+ $num_cust_svc_cancelled{$part_svc->svcpart} = $part_svc->num_cust_svc_cancelled;
+ $num_cust_svc_active{$part_svc->svcpart} = $num_cust_svc{$part_svc->svcpart} - $num_cust_svc_cancelled{$part_svc->svcpart};
+ }
+}
if ( $cgi->param('orderby') eq 'active' ) {
- @part_svc = sort { $num_active_cust_svc{$b->svcpart} <=>
- $num_active_cust_svc{$a->svcpart} } @part_svc;
+ @part_svc = sort { $num_cust_svc{$b->svcpart} <=>
+ $num_cust_svc{$a->svcpart} } @part_svc;
} elsif ( $cgi->param('orderby') eq 'svc' ) {
@part_svc = sort { lc($a->svc) cmp lc($b->svc) } @part_svc;
}