X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2FAPI.pm;h=77ae03b10e746f005b64c08ce7da171e675b3d88;hb=b7f8a7cfd566881a6d89117d17e391ceb58097d4;hp=32400f7c3c9743aee075f14d55885ce4b176d79f;hpb=53846367793e58f00ce32b2fcbd05e9f0ddd179e;p=freeside.git diff --git a/FS/FS/API.pm b/FS/FS/API.pm index 32400f7c3..77ae03b10 100644 --- a/FS/FS/API.pm +++ b/FS/FS/API.pm @@ -8,6 +8,7 @@ use FS::cust_location; use FS::cust_pay; use FS::cust_credit; use FS::cust_refund; +use FS::cust_pkg; =head1 NAME @@ -556,6 +557,57 @@ sub location_info { return \%return; } +=item change_package_location + +Updates package location. Takes a list of keys and values +as paramters with the following keys: + +pkgnum + +secret + +locationnum - pass this, or the following keys (don't pass both) + +address1 + +address2 + +city + +county + +state + +zip + +country + +On error, returns a hashref with an 'error' key. +On success, returns a hashref with 'pkgnum' and 'locationnum' keys, +containing the new values. + +=cut + +sub change_package_location { + my $self = shift; + my %opt = @_; + return _shared_secret_error() unless _check_shared_secret($opt{'secret'}); + + my $cust_pkg = qsearchs('cust_pkg', { 'pkgnum' => $opt{'pkgnum'} }) + or return { 'error' => 'Unknown pkgnum' }; + + my %changeopt; + $changeopt{'pkgnum'} = $pkgnum; + + my $cust_location = FS::cust_location->new({ + 'custnum' => $cust_pkg->custnum, + %location_hash, + }); + $changeopt{'cust_location'} = $cust_location; + + $cust_pkg->API_change(%changeopt); +} + =item bill_now OPTION => VALUE, ... Bills a single customer now, in the same fashion as the "Bill now" link in the