use strict;
use vars qw( %info );
-use DBI;
+use FS::DBI;
#use FS::Record qw(qsearch qsearchs);
tie our %query_style, 'Tie::IxHash', (
'default' => '',
},
'query' => { 'name' => 'SQL query',
+ 'type' => 'textarea',
'default' => '',
},
my $price = 0;
my $quantity; # can be overridden; if not we use the default
- my $dbh = DBI->connect( map { $self->option($_) }
+ my $dbh = FS::DBI->connect( map { $self->option($_) }
qw( datasrc db_username db_password )
)
- or die $DBI::errstr;
+ or die $FS::DBI::errstr;
my $sth = $dbh->prepare( $self->option('query') )
or die $dbh->errstr;
}
sub cutoff_day {
- my $self = shift;
- my $cust_pkg = shift;
- my $cust_main = $cust_pkg->cust_main;
- # force it to act like a prorate package, is what this means
- # because we made a distinction once between prorate and flat packages
- if ( $cust_main->force_prorate_day and $cust_main->prorate_day ) {
- return ( $cust_main->prorate_day );
- }
- if ( $self->option('sync_bill_date',1) ) {
- my $next_bill = $cust_pkg->cust_main->next_bill_date;
- if ( $next_bill ) {
- return (localtime($next_bill))[3];
- } else {
- # This is the customer's only active package and hasn't been billed
- # yet, so set the cutoff day to either today or tomorrow, whichever
- # would result in a full period after rounding.
- my $setup = $cust_pkg->setup; # because it's "now"
- my $rounding_mode = $self->option('prorate_round_day',1);
- return () if !$setup or !$rounding_mode;
- my ($sec, $min, $hour, $mday, $mon, $year) = localtime($setup);
-
- if ( ( $rounding_mode == 1 and $hour >= 12 )
- or ( $rounding_mode == 3 and ( $sec > 0 or $min > 0 or $hour > 0 ))
- ) {
- # then the prorate period will be rounded down to start from
- # midnight tomorrow, so the cutoff day should be the current day +
- # 1.
- $setup = timelocal(59,59,23,$mday,$mon,$year) + 1;
- $mday = (localtime($setup))[3];
- }
- # otherwise, it will be rounded up, so leave the cutoff day at today.
- return $mday;
- }
- }
- return ();
+ my( $self, $cust_pkg ) = @_;
+ my $error = FS::part_pkg::flat::cutoff_day( $self, $cust_pkg );
+ return $error;
}
sub can_discount { 1; }