X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fcust_main.pm;h=640eee359826cc993a6b484d9019903c107d4f42;hb=c145d0efaf3c9d43ca6cad0ec36342f92a6dd646;hp=e0855d847282af958f7f951dca8babca0c63134c;hpb=edd6a339eb7ea156272264ffd164711fc8af792e;p=freeside.git diff --git a/FS/FS/cust_main.pm b/FS/FS/cust_main.pm index e0855d847..640eee359 100644 --- a/FS/FS/cust_main.pm +++ b/FS/FS/cust_main.pm @@ -1509,6 +1509,14 @@ sub replace { $implicit_contact->set('emailaddress', $email); $implicit_contact->set('invoice_dest', 'Y'); $implicit_contact->set('custnum', $self->custnum); + my $i_cust_contact = + qsearchs('cust_contact', { + contactnum => $implicit_contact->contactnum, + custnum => $self->custnum, + } + ); + $implicit_contact->set($_, $i_cust_contact->$_) + foreach qw( classnum selfservice_access comment ); my $error; if ( $implicit_contact->contactnum ) { @@ -3267,6 +3275,7 @@ sub charge { my $cust_pkg_ref = ''; my ( $bill_now, $invoice_terms ) = ( 0, '' ); my $locationnum; + my ( $discountnum, $discountnum_amount, $discountnum_percent ) = ( '','','' ); if ( ref( $_[0] ) ) { $amount = $_[0]->{amount}; $setup_cost = $_[0]->{setup_cost}; @@ -3287,6 +3296,9 @@ sub charge { $invoice_terms = exists($_[0]->{invoice_terms}) ? $_[0]->{invoice_terms} : ''; $locationnum = $_[0]->{locationnum} || $self->ship_locationnum; $separate_bill = $_[0]->{separate_bill} || ''; + $discountnum = $_[0]->{setup_discountnum}; + $discountnum_amount = $_[0]->{setup_discountnum_amount}; + $discountnum_percent = $_[0]->{setup_discountnum_percent}; } else { # yuck $amount = shift; $setup_cost = ''; @@ -3350,13 +3362,16 @@ sub charge { } my $cust_pkg = new FS::cust_pkg ( { - 'custnum' => $self->custnum, - 'pkgpart' => $pkgpart, - 'quantity' => $quantity, - 'start_date' => $start_date, - 'no_auto' => $no_auto, - 'separate_bill' => $separate_bill, - 'locationnum'=> $locationnum, + 'custnum' => $self->custnum, + 'pkgpart' => $pkgpart, + 'quantity' => $quantity, + 'start_date' => $start_date, + 'no_auto' => $no_auto, + 'separate_bill' => $separate_bill, + 'locationnum' => $locationnum, + 'setup_discountnum' => $discountnum, + 'setup_discountnum_amount' => $discountnum_amount, + 'setup_discountnum_percent' => $discountnum_percent, } ); $error = $cust_pkg->insert; @@ -3425,6 +3440,20 @@ sub num_cust_attachments_deleted { ); } +=item max_invnum + +Returns the most recent invnum (invoice number) for this customer. + +=cut + +sub max_invnum { + my $self = shift; + $self->scalar_sql( + " SELECT MAX(invnum) FROM cust_bill WHERE custnum = ?", + $self->custnum + ); +} + =item cust_bill [ OPTION => VALUE... | EXTRA_QSEARCH_PARAMS_HASHREF ] Returns all the invoices (see L) for this customer. @@ -5451,11 +5480,12 @@ sub _upgrade_next_recnum { my $recnum = shift @$recnums; return $recnum if $recnum; my $tclass = 'FS::'.$table; + my $paycardtypecheck = ($table ne 'cust_pay_pending') ? q( OR paycardtype = 'Tokenized') : ''; my $sql = 'SELECT '.$tclass->primary_key. ' FROM '.$table. ' WHERE '.$tclass->primary_key.' > '.$$lastrecnum. " AND payby IN ( 'CARD', 'DCRD', 'CHEK', 'DCHK' ) ". - " AND ( length(payinfo) < 80 OR paycardtype = 'Tokenized' ) ". + " AND ( length(payinfo) < 80$paycardtypecheck ) ". ' ORDER BY '.$tclass->primary_key.' LIMIT 500'; my $sth = $dbh->prepare($sql) or die $dbh->errstr; $sth->execute() or die $sth->errstr;