use strict;
use vars qw( %info );
-use DBI;
+use FS::DBI;
#use FS::Record qw(qsearch qsearchs);
tie our %query_style, 'Tie::IxHash', (
'shortname' => 'External SQL query',
'inherit_fields' => [ 'prorate_Mixin', 'global_Mixin' ],
'fields' => {
+ 'sync_bill_date' => { 'name' => 'Prorate first month to synchronize '.
+ 'with the customer\'s other packages',
+ 'type' => 'checkbox',
+ },
'cutoff_day' => { 'name' => 'Billing Day (1 - 28) for prorating or '.
'subscription',
'default' => '1',
'default' => '',
},
'query' => { 'name' => 'SQL query',
+ 'type' => 'textarea',
'default' => '',
},
},
},
- 'fieldorder' => [qw( recur_method cutoff_day ),
+ 'fieldorder' => [qw( recur_method cutoff_day sync_bill_date),
FS::part_pkg::prorate_Mixin::fieldorder,
qw( datasrc db_username db_password query query_style
)],
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;
die "sql_external query returned non-numeric amount: $row->{amount}";
}
}
- if (exists $row->{quantity}) {
- $quantity ||= 0;
+ if (defined $row->{quantity}) {
if ( $row->{quantity} eq '' ) {
# treat as zero
} elsif ( $row->{quantity} =~ /^\d+$/ ) {
($cust_pkg->quantity || 1) * $self->calc_recur_Common($cust_pkg,$sdate,$details,$param);
}
+sub cutoff_day {
+ my( $self, $cust_pkg ) = @_;
+ my $error = FS::part_pkg::flat::cutoff_day( $self, $cust_pkg );
+ return $error;
+}
+
sub can_discount { 1; }
sub is_free { 0; }