use strict;
use vars qw( @ISA );
use FS::Record qw( qsearch qsearchs );
+use FS::Conf;
@ISA = qw(FS::Record);
=item eventpart - primary key
-=item payby - CARD, BILL, or COMP
+=item payby - CARD, CHEK, LECB, BILL, or COMP
=item event - event name
$self->weight(0) unless $self->weight;
- $self->ut_numbern('eventpart')
- || $self->ut_enum('payby', [qw( CARD BILL COMP )] )
+ my $conf = new FS::Conf;
+ if ( $conf->exists('safe-part_bill_event') ) {
+ my $error = $self->ut_anything('eventcode');
+ return $error if $error;
+
+ my $c = $self->eventcode;
+
+ $c =~ /^\s*\$cust_main\->(suspend|cancel|invoicing_list_addpost|bill|collect)\(\);\s*("";)?\s*$/
+
+ or $c =~ /^\s*\$cust_bill\->(comp|realtime_card|realtime_ach|realtime_card_cybercash|batch_card|send)\(\);\s*$/
+
+ or $c =~ /^\s*\$cust_bill\->send\(\'\w+\'\);\s*$/
+
+ or $c =~ /^\s*\$cust_main\->apply_payments; \$cust_main->apply_credits; "";\s*$/
+
+ or $c =~ /^\s*\$cust_main\->charge\( \s*\d*\.?\d*\s*,\s*\'[\w \!\@\#\$\%\&\(\)\-\+\;\:\"\,\.\?\/]*\'\s*\);\s*$/
+
+ or do {
+ #log
+ return "illegal eventcode: $c";
+ };
+
+ }
+
+ my $error = $self->ut_numbern('eventpart')
+ || $self->ut_enum('payby', [qw( CARD CHEK LECB BILL COMP )] )
|| $self->ut_text('event')
|| $self->ut_anything('eventcode')
|| $self->ut_number('seconds')
|| $self->ut_enum('disabled', [ '', 'Y' ] )
|| $self->ut_number('weight')
- || $self->ut_alphan('plan')
+ || $self->ut_textn('plan')
|| $self->ut_anything('plandata')
;
+ return $error if $error;
+
+ #quelle kludge
+ if ( $self->plandata =~ /^templatename\s+(.*)$/ ) {
+ my $name= $1;
+ unless ( $conf->exists("invoice_template_$name") ) {
+ $conf->set(
+ "invoice_template_$name" =>
+ join("\n", $conf->config('invoice_template') )
+ );
+ }
+ }
+
+ '';
+
}
=back