X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=FS%2FFS%2Fpart_bill_event.pm;h=4774b8df92147c7fd95b2c34bd75ec652ca0ca2d;hp=fb2c06ad41f46a7ab5ce494f45331686dab674ba;hb=e975ed0585280f4cbb90b02f57114dedc43f58be;hpb=69a0a7504f84aa9bb1f204d1f3522e1520e0885e diff --git a/FS/FS/part_bill_event.pm b/FS/FS/part_bill_event.pm index fb2c06ad4..4774b8df9 100644 --- a/FS/FS/part_bill_event.pm +++ b/FS/FS/part_bill_event.pm @@ -3,6 +3,7 @@ package FS::part_bill_event; use strict; use vars qw( @ISA ); use FS::Record qw( qsearch qsearchs ); +use FS::Conf; @ISA = qw(FS::Record); @@ -36,7 +37,7 @@ FS::Record. The following fields are currently supported: =item eventpart - primary key -=item payby - CARD, BILL, or COMP +=item payby - CARD, DCRD, CHEK, DCHK, LECB, BILL, or COMP =item event - event name @@ -44,6 +45,12 @@ FS::Record. The following fields are currently supported: =item seconds - how long after the invoice date events of this type are triggered +=item weight - ordering for events with identical seconds + +=item plan - eventcode plan + +=item plandata - additional plan data + =item disabled - Disabled flag, empty or `Y' =back @@ -106,13 +113,60 @@ insert and replace methods. sub check { my $self = shift; - $self->ut_numbern('eventpart') - || $self->ut_enum('payby', [qw( CARD BILL COMP )] ) + $self->weight(0) unless $self->weight; + + 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|ach|lec)|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 DCRD CHEK DCHK 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_textn('plan') + || $self->ut_anything('plandata') ; + #|| $self->ut_snumber('seconds') + return $error if $error; + + #quelle kludge + if ( $self->plandata =~ /^(agent_)?templatename\s+(.*)$/m ) { + my $name= $2; + + foreach my $file (qw( template latex latexnotes )) { + unless ( $conf->exists("invoice_${file}_$name") ) { + $conf->set( + "invoice_${file}_$name" => + join("\n", $conf->config("invoice_$file") ) + ); + } + } + } + + $self->SUPER::check; } =back