X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fpart_pkg%2Fsql_external.pm;h=5233c5403b7c46370b6dd2b711670c46d336083d;hb=dc83512c36dc6bea2585abada4f88d714c600e55;hp=9bf107b7df314b3b919c8cf698b95794dca6895c;hpb=4b05b20576ddb14577d59c87c8257c6804449410;p=freeside.git diff --git a/FS/FS/part_pkg/sql_external.pm b/FS/FS/part_pkg/sql_external.pm index 9bf107b7d..5233c5403 100644 --- a/FS/FS/part_pkg/sql_external.pm +++ b/FS/FS/part_pkg/sql_external.pm @@ -3,7 +3,7 @@ use base qw( FS::part_pkg::discount_Mixin FS::part_pkg::recur_Common ); use strict; use vars qw( %info ); -use DBI; +use FS::DBI; #use FS::Record qw(qsearch qsearchs); tie our %query_style, 'Tie::IxHash', ( @@ -19,6 +19,10 @@ our @detail_cols = ( qw(amount format duration phonenum accountcode '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', @@ -40,6 +44,7 @@ our @detail_cols = ( qw(amount format duration phonenum accountcode 'default' => '', }, 'query' => { 'name' => 'SQL query', + 'type' => 'textarea', 'default' => '', }, @@ -50,7 +55,7 @@ our @detail_cols = ( qw(amount format duration phonenum accountcode }, }, - '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 )], @@ -70,10 +75,10 @@ sub calc_recur { 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; @@ -140,6 +145,12 @@ sub calc_recur { ($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; }