[OPEN-ILS-DEV] Address missing when calling open-ils.actor.patron.update
Mark Gavillet
mark.gavillet at ptfs-europe.com
Tue Dec 20 11:59:34 EST 2011
Thanks Jason - looks like I eventually narrowed the problem down. The address was being written to the database but not linked to the patron. In _add_update_addresses in Actor.pm the following lines were to blame:
if( $patron->billing_address() and
$patron->billing_address() == $current_id ) {
$new_patron->billing_address($address->id());
$logger->info("setting billing addr to $current_id");
$new_patron->ischanged(1);
}
if( $patron->mailing_address() and
$patron->mailing_address() == $current_id ) {
$new_patron->mailing_address($address->id());
$logger->info("setting mailing addr to $current_id");
$new_patron->ischanged(1);
}
At this point neither $patron->mailing_address or $patron->billing_address exist so the address id is not passed into $new_patron. Adding the following seems to do the trick:
if (!$patron->mailing_address() and !$patron->billing_address())
{
$new_patron->mailing_address($address->id());
$new_patron->billing_address($address->id());
$logger->info("setting mailing and billing addr to $current_id");
$new_patron->ischanged(1);
}
Thanks again for the advice - I doubt I'd have got to the bottom of it otherwise!
Mark
On 20 Dec 2011, at 14:27, Jason Etheridge wrote:
>> Thanks for this. In this particular instance the library in question would like the borrowers to be loaded automatically to a restricted borrower category so that they meet current customer service response standards and minimise staff intervention.
>
> Ah, well in that case...
>
>> I have a feeling that the problem may be caused by something to do with the address fieldmapper object - I have seen something in the log about no response being returned within 10 seconds so the transaction is rolled back.
>
> Hrmm.
>
>> [
>> 'MAILING', '<city>', <country>', '<county>', undef, '<postcode>', '<state>', '<street1>', '<street2>', -1, 't', 't', undef, 'f'
>> ], 'Fieldmapper::actor::user_address'
>
> Nothing leaps out at me here. You're using
> Fieldmapper::actor::user_address->new I assume? Oh wait, are you
> setting isnew to true on that?
>
>> Does anyone have any idea where I'm going wrong? Any help is greatly appreciated as this has been driving me mad for hours!
>
> If isnew isn't the issue, I would try sprinkling Actor.pm with lots of
> $logger->info('here, there, etc.');, especially inside sub
> _add_address and the caller.
>
> --
> Jason Etheridge
> | Equinox Software, Inc. / The Open Source Experts
> | phone: 1-877-OPEN-ILS (673-6457)
> | email: jason at esilibrary.com
> | web: http://www.esilibrary.com
More information about the Open-ils-dev
mailing list