From: Ivan Kohler Date: Wed, 3 Jul 2013 02:52:06 +0000 (-0700) Subject: rt time price plan doesn't pick up all RT time; better to not have it available at... X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=commitdiff_plain;h=a1183aad7a409d1212c7e3cdb4a9f02e93578d31;ds=sidebyside rt time price plan doesn't pick up all RT time; better to not have it available at all than underbill --- diff --git a/FS/FS/part_pkg/incomplete/rt_time.pm b/FS/FS/part_pkg/incomplete/rt_time.pm new file mode 100644 index 000000000..f96eba628 --- /dev/null +++ b/FS/FS/part_pkg/incomplete/rt_time.pm @@ -0,0 +1,82 @@ +package FS::part_pkg::rt_time; + +use strict; +use FS::Conf; +use FS::Record qw(qsearchs qsearch); +use FS::part_pkg::recur_Common; +use Carp qw(cluck); + +our @ISA = qw(FS::part_pkg::recur_Common); + +our $DEBUG = 0; + +our %info = ( + 'name' => 'Bill from Time Worked on tickets in RT', + 'shortname' => 'Project Billing (RT)', + 'weight' => 55, + 'inherit_fields' => [ 'global_Mixin' ], + 'fields' => { + 'base_rate' => { 'name' => 'Rate (per minute)', + 'default' => 0, + }, + 'recur_fee' => {'disabled' => 1}, + }, + 'fieldorder' => [ 'base_rate' ], +); + +sub price_info { + my $self = shift; + my $str = $self->SUPER::price_info; + my $rate = $self->option('base_rate'); + $str .= " plus $rate/min" if $rate; + $str; +} + +sub calc_setup { + my($self, $cust_pkg ) = @_; + $self->option('setup_fee'); +} + +sub calc_recur { + my $self = shift; + my($cust_pkg, $sdate, $details, $param ) = @_; + + my $charges = 0; + + $charges += $self->calc_usage(@_); + $charges += ($cust_pkg->quantity || 1) * $self->calc_recur_Common(@_); + + $charges; + +} + +sub can_discount { 0; } + +# use the default +#sub calc_cancel { +# my $self = shift; +# my($cust_pkg, $sdate, $details, $param ) = @_; +# +# $self->calc_usage(@_); +#} + +sub calc_usage { + my $self = shift; + my($cust_pkg, $sdate, $details, $param ) = @_; + + my $last_bill = $cust_pkg->get('last_bill') || $cust_pkg->get('setup'); + my @tickets = @{ FS::TicketSystem->comments_on_tickets( $cust_pkg->custnum, 100, $last_bill ) }; + + my $charges = 0; + + my $rate = $self->option('base_rate'); + + foreach my $ding ( @tickets) { + $charges += sprintf('%.2f', $ding->{'timetaken'} * $rate); + push @$details, join( ", ", ("($ding->{timetaken}) Minutes", substr($ding->{'content'},0,255))); + } + cluck $rate, $charges, @$details if $DEBUG > 0; + return $charges; +} + +1; diff --git a/FS/FS/part_pkg/rt_time.pm b/FS/FS/part_pkg/rt_time.pm deleted file mode 100644 index 11b7ee85c..000000000 --- a/FS/FS/part_pkg/rt_time.pm +++ /dev/null @@ -1,82 +0,0 @@ -package FS::part_pkg::rt_time; - -use strict; -use FS::Conf; -use FS::Record qw(qsearchs qsearch); -use FS::part_pkg::recur_Common; -use Carp qw(cluck); - -our @ISA = qw(FS::part_pkg::recur_Common); - -our $DEBUG = 0; - -our %info = ( - 'name' => 'Bill from Time Worked on tickets in RT', - 'shortname' => 'Project Billing (RT)', - 'weight' => 55, - 'inherit_fields' => [ 'global_Mixin' ], - 'fields' => { - 'base_rate' => { 'name' => 'Rate (per minute)', - 'default' => 0, - }, - 'recur_fee' => {'disabled' => 1}, - }, - 'fieldorder' => [ 'base_rate' ], -); - -sub price_info { - my $self = shift; - my $str = $self->SUPER::price_info; - my $rate = $self->option('base_rate'); - $str .= " plus $rate/min" if $rate; - $str; -} - -sub calc_setup { - my($self, $cust_pkg ) = @_; - $self->option('setup_fee'); -} - -sub calc_recur { - my $self = shift; - my($cust_pkg, $sdate, $details, $param ) = @_; - - my $charges = 0; - - $charges += $self->calc_usage(@_); - $charges += $self->calc_recur_Common(@_); - - $charges; - -} - -sub can_discount { 0; } - -# use the default -#sub calc_cancel { -# my $self = shift; -# my($cust_pkg, $sdate, $details, $param ) = @_; -# -# $self->calc_usage(@_); -#} - -sub calc_usage { - my $self = shift; - my($cust_pkg, $sdate, $details, $param ) = @_; - - my $last_bill = $cust_pkg->get('last_bill') || $cust_pkg->get('setup'); - my @tickets = @{ FS::TicketSystem->comments_on_tickets( $cust_pkg->custnum, 100, $last_bill ) }; - - my $charges = 0; - - my $rate = $self->option('base_rate'); - - foreach my $ding ( @tickets) { - $charges += sprintf('%.2f', $ding->{'timetaken'} * $rate); - push @$details, join( ", ", ("($ding->{timetaken}) Minutes", substr($ding->{'content'},0,255))); - } - cluck $rate, $charges, @$details if $DEBUG > 0; - return $charges; -} - -1;