' (cust_credit.crednum '. $self->crednum. ')';
}
-=item insert
+=item insert [ OPTION => VALUE ... ]
Adds this credit to the database ("Posts" the credit). If there is an error,
returns the error, otherwise returns false.
+Ooptions are passed as a list of keys and values. Available options:
+
+=over 4
+
+=item reason_type
+
+L<FS::reason_type|Reason> type for newly-inserted reason
+
+=item cust_credit_source_bill_pkg
+
+An arrayref of
+L<FS::cust_credit_source_bill_pkg|FS::cust_credit_source_bilL_pkg> objects.
+They will have their crednum set and will be inserted along with this credit.
+
+=back
+
=cut
sub insert {
return "error inserting $self: $error";
}
+ if ( $options{'cust_credit_source_bill_pkg'} ) {
+ foreach my $ccsbr ( @{ $options{'cust_credit_source_bill_pkg'} } ) {
+ $ccsbr->crednum( $self->crednum );
+ $error = $ccsbr->insert;
+ if ( $error ) {
+ $dbh->rollback if $oldAutoCommit;
+ return "error inserting $ccsbr: $error";
+ }
+ }
+ }
+
$dbh->commit or die $dbh->errstr if $oldAutoCommit;
#false laziness w/ cust_pay::insert
'apply' => 1, #0 leaves the credit unapplied
#the credit
- 'newreasonnum' => scalar($cgi->param('newreasonnum')),
- 'newreasonnum_type' => scalar($cgi->param('newreasonnumT')),
map { $_ => scalar($cgi->param($_)) }
#fields('cust_credit')
- qw( custnum _date amount reason reasonnum addlinfo ), #pkgnum eventnum
+ qw( custnum _date amount reasonnum addlinfo ), #pkgnum eventnum
);
#});
my $error = '';
- if ($arg{reasonnum} == -1) {
-
- $error = 'Enter a new reason (or select an existing one)'
- unless $arg{newreasonnum} !~ /^\s*$/;
- my $reason = new FS::reason {
- 'reason' => $arg{newreasonnum},
- 'reason_type' => $arg{newreasonnum_type},
- };
- $error ||= $reason->insert;
- if ( $error ) {
- $dbh->rollback if $oldAutoCommit;
- return "Error inserting reason: $error";
- }
- $arg{reasonnum} = $reason->reasonnum;
- }
my $cust_credit = new FS::cust_credit ( {
map { $_ => $arg{$_} }
#fields('cust_credit')
- qw( custnum _date amount reason reasonnum addlinfo ), #pkgnum eventnum
+ qw( custnum _date amount reasonnum addlinfo ), #pkgnum eventnum
} );
$error = $cust_credit->insert;
if ( $error ) {