summaryrefslogtreecommitdiff
path: root/httemplate/edit
diff options
context:
space:
mode:
authorivan <ivan>2004-05-14 12:25:45 +0000
committerivan <ivan>2004-05-14 12:25:45 +0000
commite975ed0585280f4cbb90b02f57114dedc43f58be (patch)
tree907d80f711853116ce390a5d3306b52f7c7084fd /httemplate/edit
parentaa2daf29c5bb13a3728b434159afc4065367af91 (diff)
add per-agent invoice templates, add per-package suspend invoice events, fix automatic creation of invoice_latex alternate templates
Diffstat (limited to 'httemplate/edit')
-rwxr-xr-xhttemplate/edit/part_bill_event.cgi60
-rwxr-xr-xhttemplate/edit/process/part_bill_event.cgi5
2 files changed, 63 insertions, 2 deletions
diff --git a/httemplate/edit/part_bill_event.cgi b/httemplate/edit/part_bill_event.cgi
index 48ed791..d0fa973 100755
--- a/httemplate/edit/part_bill_event.cgi
+++ b/httemplate/edit/part_bill_event.cgi
@@ -68,6 +68,31 @@ print '<TR><TD ALIGN="right">Action</TD><TD>';
#print ntable();
+sub select_pkgpart {
+ my $label = shift;
+ my $plandata = shift;
+ my %selected = map { $_=>1 } split(/,\s*/, $plandata->{$label});
+ qq(<SELECT NAME="$label" MULTIPLE>).
+ join("\n", map {
+ '<OPTION VALUE="'. $_->pkgpart. '"'.
+ ( $selected{$_->pkgpart} ? ' SELECTED' : '' ).
+ '>'. $_->pkg. ' - '. $_->comment
+ } qsearch('part_pkg', { 'disabled' => '' } ) ).
+ '</SELECT>';
+}
+
+sub select_agentnum {
+ my $plandata = shift;
+ my $agentnum = $plandata->{'agentnum'};
+ '<SELECT NAME="agentnum">'.
+ join("\n", map {
+ '<OPTION VALUE="'. $_->agentnum. '"'.
+ ( $_->agentnum == $agentnum ? ' SELECTED' : '' ).
+ '>'. $_->agent
+ } qsearch('agent', { 'disabled' => '' } ) ).
+ '</SELECT>';
+}
+
#this is pretty kludgy right here.
tie my %events, 'Tie::IxHash',
@@ -84,6 +109,18 @@ tie my %events, 'Tie::IxHash',
'code' => '$cust_main->suspend();',
'weight' => 10,
},
+ 'suspend-if-pkgpart' => {
+ 'name' => 'Suspend packages',
+ 'code' => '$cust_main->suspend_if_pkgpart(%%%if_pkgpart%%%);',
+ 'html' => sub { &select_pkgpart('if_pkgpart', @_) },
+ 'weight' => 10,
+ },
+ 'suspend-unless-pkgpart' => {
+ 'name' => 'Suspend packages except',
+ 'code' => '$cust_main->suspend_unless_pkgpart(%%%unless_pkgpart%%%);',
+ 'html' => sub { &select_pkgpart('unless_pkgpart', @_) },
+ 'weight' => 10,
+ },
'cancel' => {
'name' => 'Cancel',
'code' => '$cust_main->cancel();',
@@ -140,6 +177,26 @@ tie my %events, 'Tie::IxHash',
'weight' => 50,
},
+ 'send_agent' => {
+ 'name' => 'Send invoice (email/print) ',
+ 'code' => '$cust_bill->send(\'%%%agent_templatename%%%\', %%%agentnum%%%);',
+ 'html' => sub {
+ '<TABLE BORDER=0>
+ <TR>
+ <TD ALIGN="right">only for agent </TD>
+ <TD>'. &select_agentnum(@_). '</TD>
+ </TR>
+ <TR>
+ <TD ALIGN="right">with template </TD>
+ <TD>
+ <INPUT TYPE="text" NAME="agent_templatename" VALUE="%%%agent_templatename%%%">
+ </TD>
+ </TR>
+ </TABLE>';
+ },
+ 'weight' => 50,
+ },
+
'send_csv_ftp' => {
'name' => 'Upload CSV invoice data to an FTP server',
'code' => '$cust_bill->send_csv( protocol => \'ftp\',
@@ -188,6 +245,9 @@ foreach my $event ( keys %events ) {
my %plandata = map { /^(\w+) (.*)$/; ($1, $2); }
split(/\n/, $part_bill_event->plandata);
my $html = $events{$event}{html};
+ if ( ref($html) eq 'CODE' ) {
+ $html = &{$html}(\%plandata);
+ }
while ( $html =~ /%%%(\w+)%%%/ ) {
my $field = $1;
$html =~ s/%%%$field%%%/$plandata{$field}/;
diff --git a/httemplate/edit/process/part_bill_event.cgi b/httemplate/edit/process/part_bill_event.cgi
index e224bf6..77dcd24 100755
--- a/httemplate/edit/process/part_bill_event.cgi
+++ b/httemplate/edit/process/part_bill_event.cgi
@@ -5,7 +5,7 @@ my $eventpart = $cgi->param('eventpart');
my $old = qsearchs('part_bill_event',{'eventpart'=>$eventpart}) if $eventpart;
#s/days/seconds/
-$cgi->param('seconds', $cgi->param('days') * 86400 );
+$cgi->param('seconds', int( $cgi->param('days') * 86400 ) );
my $error;
if ( ! $cgi->param('plan_weight_eventcode') ) {
@@ -21,7 +21,8 @@ if ( ! $cgi->param('plan_weight_eventcode') ) {
my $plandata = '';
while ( $eventcode =~ /%%%(\w+)%%%/ ) {
my $field = $1;
- my $value = $cgi->param($field);
+ my $value = join(', ', $cgi->param($field) );
+ $cgi->param($field, $value); #in case it errors out
$eventcode =~ s/%%%$field%%%/$value/;
$plandata .= "$field $value\n";
}