projects
/
freeside.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
add E911 address to self-service provision_phone, document it, RT#34069
[freeside.git]
/
FS
/
FS
/
quotation_pkg.pm
diff --git
a/FS/FS/quotation_pkg.pm
b/FS/FS/quotation_pkg.pm
index
dae459e
..
1674d2b
100644
(file)
--- a/
FS/FS/quotation_pkg.pm
+++ b/
FS/FS/quotation_pkg.pm
@@
-2,7
+2,7
@@
package FS::quotation_pkg;
use base qw( FS::TemplateItem_Mixin FS::Record );
use strict;
use base qw( FS::TemplateItem_Mixin FS::Record );
use strict;
-use FS::Record qw( qsearchs
dbh ); #qsearch
+use FS::Record qw( qsearchs
qsearch dbh );
use FS::part_pkg;
use FS::quotation_pkg_discount; #so its loaded when TemplateItem_Mixin needs it
use List::Util qw(sum);
use FS::part_pkg;
use FS::quotation_pkg_discount; #so its loaded when TemplateItem_Mixin needs it
use List::Util qw(sum);
@@
-70,6
+70,11
@@
The amount per package that will be charged in setup/one-time fees.
The amount per package that will be charged per billing cycle.
The amount per package that will be charged per billing cycle.
+=item freq
+
+The length of the billing cycle. If zero it's a one-time charge; if any
+other number it's that many months; other values are in L<FS::Misc::pkg_freqs>.
+
=back
=head1 METHODS
=back
=head1 METHODS
@@
-180,6
+185,8
@@
and replace methods.
sub check {
my $self = shift;
sub check {
my $self = shift;
+ my @freqs = ('', keys (%{ FS::Misc->pkg_freqs }));
+
my $error =
$self->ut_numbern('quotationpkgnum')
|| $self->ut_foreign_key( 'quotationnum', 'quotation', 'quotationnum' )
my $error =
$self->ut_numbern('quotationpkgnum')
|| $self->ut_foreign_key( 'quotationnum', 'quotation', 'quotationnum' )
@@
-190,6
+197,7
@@
sub check {
|| $self->ut_numbern('quantity')
|| $self->ut_moneyn('unitsetup')
|| $self->ut_moneyn('unitrecur')
|| $self->ut_numbern('quantity')
|| $self->ut_moneyn('unitsetup')
|| $self->ut_moneyn('unitrecur')
+ || $self->ut_enum('freq', \@freqs)
|| $self->ut_enum('waive_setup', [ '', 'Y'] )
;
|| $self->ut_enum('waive_setup', [ '', 'Y'] )
;
@@
-199,7
+207,11
@@
sub check {
if ($quotation->custnum) {
$self->set('locationnum', $quotation->cust_main->ship_locationnum);
} elsif ($quotation->prospectnum) {
if ($quotation->custnum) {
$self->set('locationnum', $quotation->cust_main->ship_locationnum);
} elsif ($quotation->prospectnum) {
- $self->set('locationnum', $quotation->prospect_main->locationnum);
+ # use the first non-disabled location for that prospect
+ my $cust_location = qsearchs('cust_location',
+ { prospectnum => $quotation->prospectnum,
+ disabled => '' });
+ $self->set('locationnum', $cust_location->locationnum) if $cust_location;
} # else the quotation is invalid
}
} # else the quotation is invalid
}
@@
-427,11
+439,6
@@
sub cust_bill_pkg_display {
$recur->{'type'} = 'R';
if ( $type eq 'S' ) {
$recur->{'type'} = 'R';
if ( $type eq 'S' ) {
-sub tax_locationnum {
- my $self = shift;
- $self->locationnum;
-}
-
return ($setup);
} elsif ( $type eq 'R' ) {
return ($recur);
return ($setup);
} elsif ( $type eq 'R' ) {
return ($recur);
@@
-468,6
+475,11
@@
sub prospect_main {
$quotation->prospect_main;
}
$quotation->prospect_main;
}
+sub tax_locationnum {
+ my $self = shift;
+ $self->locationnum;
+}
+
sub _upgrade_data {
my $class = shift;
sub _upgrade_data {
my $class = shift;