[freeside-commits] freeside/FS/FS/part_event/Condition pkg_balance.pm, NONE, 1.1 pkg_balance_under.pm, NONE, 1.1 times.pm, NONE, 1.1
Ivan,,,
ivan at wavetail.420.am
Tue Mar 22 22:59:20 PDT 2011
Update of /home/cvs/cvsroot/freeside/FS/FS/part_event/Condition
In directory wavetail.420.am:/tmp/cvs-serv25856
Added Files:
pkg_balance.pm pkg_balance_under.pm times.pm
Log Message:
add new conditions: package balances and N times, RT#11834
--- NEW FILE: pkg_balance.pm ---
package FS::part_event::Condition::pkg_balance;
use strict;
use FS::cust_main;
use base qw( FS::part_event::Condition );
sub description { 'Package balance'; }
sub option_fields {
(
'balance' => { 'label' => 'Balance over',
'type' => 'money',
'value' => '0.00', #default
},
);
}
sub eventtable_hashref {
{ 'cust_pkg' => 1, };
}
sub condition {
my($self, $cust_pkg) = @_;
my $cust_main = $self->cust_main($cust_pkg);
my $over = $self->option('balance');
$over = 0 unless length($over);
$cust_main->balance_pkgnum($cust_pkg->pkgnum) > $over;
}
1;
--- NEW FILE: times.pm ---
package FS::part_event::Condition::times;
use strict;
use FS::Record qw( qsearch );
use FS::part_event;
use FS::cust_event;
use base qw( FS::part_event::Condition );
sub description { "Run this event the specified number of times"; }
sub option_fields {
(
'run_times' => { label=>'Interval', type=>'text', value=>'1', },
);
}
sub condition {
my($self, $object, %opt) = @_;
my $obj_pkey = $object->primary_key;
my $tablenum = $object->$obj_pkey();
my @existing = qsearch( {
'table' => 'cust_event',
'hashref' => {
'eventpart' => $self->eventpart,
'tablenum' => $tablenum,
'status' => { op=>'!=', value=>'failed' },
},
'extra_sql' => ( $opt{'cust_event'}->eventnum =~ /^(\d+)$/
? " AND eventnum != $1 "
: ''
),
} );
scalar(@existing) <= $self->option('run_times');
}
sub condition_sql {
my( $class, $table ) = @_;
my %tablenum = %{ FS::part_event->eventtable_pkey_sql };
my $existing = "( SELECT COUNT(*) FROM cust_event
WHERE cust_event.eventpart = part_event.eventpart
AND cust_event.tablenum = $tablenum{$table}
AND status != 'failed'
)";
"$existing <= ". $class->condition_sql_option('run_times');
}
1;
--- NEW FILE: pkg_balance_under.pm ---
package FS::part_event::Condition::pkg_balance_under;
use strict;
use FS::cust_main;
use base qw( FS::part_event::Condition );
sub description { 'Package balance (under)'; }
sub option_fields {
(
'balance' => { 'label' => 'Balance under (or equal to)',
'type' => 'money',
'value' => '0.00', #default
},
);
}
sub eventtable_hashref {
{ 'cust_pkg' => 1, };
}
sub condition {
my($self, $cust_pkg) = @_;
my $cust_main = $self->cust_main($cust_pkg);
my $under = $self->option('balance');
$under = 0 unless length($under);
$cust_main->balance_pkgnum($cust_pkg->pkgnum) <= $under;
}
1;
More information about the freeside-commits
mailing list