use strict;
use base qw( FS::TemplateItem_Mixin FS::Record );
-use FS::Record qw( qsearchs dbh ); #qsearch
+use FS::Record qw( qsearch qsearchs dbh );
use FS::part_pkg;
use FS::cust_location;
use FS::quotation;
my $oldAutoCommit = $FS::UID::AutoCommit;
local $FS::UID::AutoCommit = 0;
- foreach ($self->quotation_pkg_discount) {
+ foreach ($self->quotation_pkg_discount, $self->quotation_pkg_tax) {
my $error = $_->delete;
if ( $error ) {
$dbh->rollback if $oldAutoCommit;
if ( $self->waive_setup eq 'Y' || $self->{'_NO_SETUP_KLUDGE'} ) {
$unitsetup = '0.00';
} else {
- $unitsetup = $part_pkg->base_setup;
+ $unitsetup = $part_pkg->option('setup_fee',1) || '0.00'; # XXX 3.x only
}
if ( $self->{'_NO_RECUR_KLUDGE'} ) {
$unitrecur = '0.00';
# XXX the order of applying discounts is ill-defined, which matters
# if there are percentage and amount discounts on the same package.
+ #
+ # but right now there can only be one discount on any package, so
+ # it doesn't matter
foreach my $pkg_discount ($self->quotation_pkg_discount) {
my $discount = $pkg_discount->discount;
#my ($self, %options) = @_;
my $self = shift;
- my $cust_pkg_discount = FS::quotation_pkg_discount->new( {
+ my $quotation_pkg_discount = FS::quotation_pkg_discount->new( {
'quotationpkgnum' => $self->quotationpkgnum,
'discountnum' => $self->discountnum,
#for the create a new discount case
'setup' => $self->discountnum_setup,
} );
- $cust_pkg_discount->insert;
+ $quotation_pkg_discount->insert;
}
sub _item_discount {
push @ext, $pkg_discount->description;
$d->{setup_amount} -= $pkg_discount->setup_amount;
$d->{recur_amount} -= $pkg_discount->recur_amount;
- }
+ }
$d->{setup_amount} *= $self->quantity || 1;
$d->{recur_amount} *= $self->quantity || 1;
$d->{amount} = $d->{setup_amount} + $d->{recur_amount};
sub setup {
my $self = shift;
- ($self->unitsetup - sum(map { $_->setup_amount } $self->pkg_discount))
+ ($self->unitsetup - sum(0, map { $_->setup_amount } $self->pkg_discount))
* ($self->quantity || 1);
}
sub recur {
my $self = shift;
- ($self->unitrecur - sum(map { $_->recur_amount } $self->pkg_discount))
+ ($self->unitrecur - sum(0, map { $_->recur_amount } $self->pkg_discount))
* ($self->quantity || 1);
}
$quotation->cust_main;
}
+sub tax_locationnum {
+ my $self = shift;
+ $self->locationnum;
+}
+
+#stub for 3.x
+
+sub quotation {
+ my $self = shift;
+ FS::quotation->by_key($self->quotationnum);
+}
+
+sub quotation_pkg_discount {
+ my $self = shift;
+ qsearch('quotation_pkg_discount', { quotationpkgnum => $self->quotationpkgnum });
+}
+
+sub quotation_pkg_tax {
+ my $self = shift;
+ qsearch('quotation_pkg_tax', { quotationpkgnum => $self->quotationpkgnum });
+}
+
+sub cust_location {
+ my $self = shift;
+ $self->locationnum ? qsearchs('cust_location', { locationnum => $self->locationnum }) : '';
+}
+
=back
=head1 BUGS
-Doesn't support taxes, fees, or add-on packages.
+Doesn't support fees, or add-on packages.
=head1 SEE ALSO