diff options
author | ivan <ivan> | 2002-04-12 13:22:03 +0000 |
---|---|---|
committer | ivan <ivan> | 2002-04-12 13:22:03 +0000 |
commit | e6ea57971831f25d682d97a0ba508c39b66ecd8b (patch) | |
tree | bdf395ca96a3eca52e9f4974c8bc289cbc0fe4ed /httemplate | |
parent | a7c1b602f88c177db34477ed4cdc1f72603f8995 (diff) |
- should finish off the part_svc -> part_export s/one-to-many/many-to-many/
transition (closes: Bug#375)
- fixes a nasty export scoping bug with message catalogs, whew
Diffstat (limited to 'httemplate')
-rwxr-xr-x | httemplate/browse/part_svc.cgi | 8 | ||||
-rw-r--r-- | httemplate/edit/part_export.cgi | 80 | ||||
-rwxr-xr-x | httemplate/edit/part_svc.cgi | 26 | ||||
-rwxr-xr-x | httemplate/edit/process/agent_type.cgi | 1 | ||||
-rw-r--r-- | httemplate/edit/process/part_export.cgi | 8 | ||||
-rwxr-xr-x | httemplate/edit/process/part_svc.cgi | 23 | ||||
-rwxr-xr-x | httemplate/misc/delete-customer.cgi | 14 |
7 files changed, 79 insertions, 81 deletions
diff --git a/httemplate/browse/part_svc.cgi b/httemplate/browse/part_svc.cgi index c8adebcd6..4c9b1bd95 100755 --- a/httemplate/browse/part_svc.cgi +++ b/httemplate/browse/part_svc.cgi @@ -66,8 +66,12 @@ function part_export_areyousure(href) { <%= $hashref->{svcdb} %></TD> <TD ROWSPAN=<%= $rowspan %>><%= itable() %> <% - my @part_export = qsearch('part_export', { svcpart => $part_svc->svcpart } ); - foreach my $part_export ( @part_export ) { +# my @part_export = +map { qsearchs('part_export', { exportnum => $_->exportnum } ) } qsearch('export_svc', { svcpart => $part_svc->svcpart } ) ; + foreach my $part_export ( + map { qsearchs('part_export', { exportnum => $_->exportnum } ) } + qsearch('export_svc', { svcpart => $part_svc->svcpart } ) + ) { %> <TR> <TD><A HREF="<%= $p %>edit/part_export.cgi?<%= $part_export->exportnum %>"><%= $part_export->exporttype %> to <%= $part_export->machine %></A></TD></TR> diff --git a/httemplate/edit/part_export.cgi b/httemplate/edit/part_export.cgi index f3127403e..77b80d06f 100644 --- a/httemplate/edit/part_export.cgi +++ b/httemplate/edit/part_export.cgi @@ -21,76 +21,10 @@ if ( $cgi->param('error') ) { } $action ||= $part_export->exportnum ? 'Edit' : 'Add'; -my %exports = ( - 'svc_acct' => { - 'sysvshell' => { - 'desc' => - 'Batch export of /etc/passwd and /etc/shadow files (Linux/SysV)', - 'options' => {}, - }, - 'bsdshell' => { - 'desc' => - 'Batch export of /etc/passwd and /etc/master.passwd files (BSD)', - 'options' => {}, - }, -# 'nis' => { -# 'desc' => -# 'Batch export of /etc/global/passwd and /etc/global/shadow for NIS ', -# 'options' => {}, -# }, - 'bsdshell' => { - 'desc' => - 'Batch export of /etc/passwd and /etc/master.passwd files (BSD)', - 'options' => {}, - }, - 'textradius' => { - 'desc' => 'Batch export of a text /etc/raddb/users file (Livingston, Cistron)', - }, - 'sqlradius' => { - 'desc' => 'Real-time export to SQL-backed RADIUS (ICRADIUS, FreeRADIUS)', - 'options' => { - 'datasrc' => { label=>'DBI data source' }, - 'username' => { label=>'Database username' }, - 'password' => { label=>'Database password' }, - }, - 'nodomain' => 'Y', - 'notes' => 'Not specifying datasrc will export to the freeside database? (no... notes on MySQL replication, DBI::Proxy, etc., from Conf.pm && export.html etc., reset with bin/sqlradius_reset', - }, - 'cyrus' => { - 'desc' => 'Real-time export to Cyrus IMAP server', - }, - 'cp' => { - 'desc' => 'Real-time export to Critical Path Account Provisioning Protocol', - }, - 'infostreet' => { - 'desc' => 'Real-time export to InfoStreet streetSmartAPI', - 'options' => { - 'url' => { label=>'XML-RPC Access URL', }, - 'login' => { label=>'InfoStreet login', }, - 'password' => { label=>'InfoStreet password', }, - 'groupID' => { label=>'InfoStreet groupID', }, - }, - 'nodomain' => 'Y', - 'notes' => 'Real-time export to <a href="http://www.infostreet.com/">InfoStreet</a> streetSmartAPI. Requires installation of <a href="http://search.cpan.org/search?dist=Frontier-Client">Frontier::Client</a> from CPAN.', - } - }, - - 'svc_domain' => {}, - - 'svc_acct_sm' => {}, - - 'svc_forward' => {}, - - 'svc_www' => {}, - -); - -#my $svcdb = $part_export->part_svc->svcdb; -#YUCK -my $svcdb = 'svc_acct'; +#my $exports = FS::part_export::export_info($svcdb); +my $exports = FS::part_export::export_info(); -my %layers = map { $_ => "$_ - ". $exports{$svcdb}{$_}{desc} } - keys %{$exports{$svcdb}}; +my %layers = map { $_ => "$_ - ". $exports->{$_}{desc} } keys %$exports; $layers{''}=''; my $widget = new HTML::Widgets::SelectLayers( @@ -105,9 +39,9 @@ my $widget = new HTML::Widgets::SelectLayers( my $layer = shift; my $html = qq!<INPUT TYPE="hidden" NAME="exporttype" VALUE="$layer">!. ntable("#cccccc",2); - foreach my $option ( keys %{$exports{$svcdb}->{$layer}{options}} ) { + foreach my $option ( keys %{$exports->{$layer}{options}} ) { # foreach my $option ( qw(url login password groupID ) ) { - my $optinfo = $exports{$svcdb}->{$layer}{options}{$option}; + my $optinfo = $exports->{$layer}{options}{$option}; my $label = $optinfo->{label}; my $value = $cgi->param($option) || $part_export->option($option); $html .= qq!<TR><TD ALIGN="right">$label</TD><TD>!. @@ -117,10 +51,10 @@ my $widget = new HTML::Widgets::SelectLayers( $html .= '</TABLE>'; $html .= '<INPUT TYPE="hidden" NAME="options" VALUE="'. - join(',', keys %{$exports{$svcdb}->{$layer}{options}} ). '">'; + join(',', keys %{$exports->{$layer}{options}} ). '">'; $html .= '<INPUT TYPE="hidden" NAME="nodomain" VALUE="'. - $exports{$svcdb}->{$layer}{nodomain}. '">'; + $exports->{$layer}{nodomain}. '">'; $html .= '<INPUT TYPE="submit" VALUE="'. ( $part_export->exportnum ? "Apply changes" : "Add export" ). diff --git a/httemplate/edit/part_svc.cgi b/httemplate/edit/part_svc.cgi index b4900a01c..e9c571f9c 100755 --- a/httemplate/edit/part_svc.cgi +++ b/httemplate/edit/part_svc.cgi @@ -132,8 +132,30 @@ my %defs = ( 'form_checkbox' => [ 'disabled' ], 'layer_callback' => sub { my $layer = shift; - my $html = qq!<INPUT TYPE="hidden" NAME="svcdb" VALUE="$layer">!. - table(). "<TH>Field</TH><TH COLSPAN=2>Modifier</TH>"; + my $html = qq!<INPUT TYPE="hidden" NAME="svcdb" VALUE="$layer">!; + + my $columns = 3; + my $count = 0; + my @part_export = + grep { $layer eq FS::part_export::exporttype2svcdb($_->exporttype) } + qsearch( 'part_export', {} ); + $html .= '<BR><BR>'. table(). + table(). "<TR><TH COLSPAN=$columns>Exports</TH></TR><TR>"; + foreach my $part_export ( @part_export ) { + $html .= '<TD><INPUT TYPE="checkbox"'. + ' NAME="exportnum'. $part_export->exportnum. '" VALUE="1" '; + $html .= 'CHECKED' + if qsearchs( 'export_svc', { + exportnum => $part_export->exportnum, + svcpart => $part_svc->svcpart }); + $html .= '> '. $part_export->exporttype. ' to '. $part_export->machine. + '</TD>'; + $count++; + $html .= '</TR><TR>' unless $count % $columns; + } + $html .= '</TR></TABLE><BR><BR>'; + + $html .= table(). "<TH>Field</TH><TH COLSPAN=2>Modifier</TH>"; #yucky kludge my @fields = defined( $FS::Record::dbdef->table($layer) ) ? grep { $_ ne 'svcnum' } fields($layer) diff --git a/httemplate/edit/process/agent_type.cgi b/httemplate/edit/process/agent_type.cgi index 67aacfdd5..516594573 100755 --- a/httemplate/edit/process/agent_type.cgi +++ b/httemplate/edit/process/agent_type.cgi @@ -22,6 +22,7 @@ if ( $error ) { print $cgi->redirect(popurl(2). "agent_type.cgi?". $cgi->query_string ); } else { + #false laziness w/ edit/process/part_svc.cgi foreach my $part_pkg (qsearch('part_pkg',{})) { my($pkgpart)=$part_pkg->getfield('pkgpart'); diff --git a/httemplate/edit/process/part_export.cgi b/httemplate/edit/process/part_export.cgi index 34eb699bf..6b4d007e4 100644 --- a/httemplate/edit/process/part_export.cgi +++ b/httemplate/edit/process/part_export.cgi @@ -5,7 +5,7 @@ my $exportnum = $cgi->param('exportnum'); my $old = qsearchs('part_export', { 'exportnum'=>$exportnum } ) if $exportnum; #fixup options -warn join('-', split(',',$cgi->param('options'))); +#warn join('-', split(',',$cgi->param('options'))); my %options = map { $_=>$cgi->param($_) } split(',',$cgi->param('options')); my $new = new FS::part_export ( { @@ -16,9 +16,9 @@ my $new = new FS::part_export ( { my $error; if ( $exportnum ) { - warn $old; - warn $exportnum; - warn $new->machine; + #warn $old; + #warn $exportnum; + #warn $new->machine; $error = $new->replace($old,\%options); } else { $error = $new->insert(\%options); diff --git a/httemplate/edit/process/part_svc.cgi b/httemplate/edit/process/part_svc.cgi index 31ab13438..859670b17 100755 --- a/httemplate/edit/process/part_svc.cgi +++ b/httemplate/edit/process/part_svc.cgi @@ -33,6 +33,29 @@ if ( $error ) { $cgi->param('error', $error); print $cgi->redirect(popurl(2). "part_svc.cgi?". $cgi->query_string ); } else { + + #false laziness w/ edit/process/agent_type.cgi + foreach my $part_export (qsearch('part_export',{})) { + my $exportnum = $part_export->exportnum; + my $export_svc = qsearchs('export_svc', { + 'exportnum' => $part_export->exportnum, + 'svcpart' => $new->svcpart, + } ); + if ( $export_svc && ! $cgi->param("exportnum". $part_export->exportnum) ) { + $error = $export_svc->delete; + die $error if $error; + } elsif ( $cgi->param("exportnum". $part_export->exportnum) + && ! $export_svc ) { + $export_svc = new FS::export_svc ( { + 'exportnum' => $part_export->exportnum, + 'svcpart' => $new->svcpart, + } ); + $error = $export_svc->insert; + die $error if $error; + } + + } + print $cgi->redirect(popurl(3)."browse/part_svc.cgi"); } diff --git a/httemplate/misc/delete-customer.cgi b/httemplate/misc/delete-customer.cgi index 5088fef7b..7016c9166 100755 --- a/httemplate/misc/delete-customer.cgi +++ b/httemplate/misc/delete-customer.cgi @@ -43,4 +43,18 @@ canceled service with you. For that, cancel all of the customer's packages. </form></body></html> END +#Deleting a customer you have financial records on (i.e. credits) is +#typically considered fraudulant bookkeeping. Remember, deleting +#customers should ONLY be used for completely bogus records. You should +#NOT delete real customers who simply discontinue service. +# +#For real customers who simply discontinue service, cancel all of the +#customer's packages. Customers with all cancelled packages are not +#billed. There is no need to take further action to prevent billing on +#customers with all cancelled packages. +# +#Also see the "hidecancelledcustomers" and "hidecancelledpackages" +#configuration options, which will allow you to surpress the display of +#cancelled customers and packages, respectively. + %> |