Как обновить счет с помощью XERO API? - PullRequest
0 голосов
/ 27 января 2020

Я использую xero api для интеграции его с моим веб-приложением для управления счетами, в настоящее время я хочу обновить счет с помощью идентификатора счета, у меня есть вспомогательный файл xero. php для обработки операций crud. У меня есть функция получить счет по идентификатору счета, я хочу обновить InvoiceNumber. Каков наилучший способ обновить счет?

update_invoice_function

 public function update_invoice(){
        $invoice_id = '******-***-****-****-************';

        $updated_invoice = Xero::find_invoice_by_id($invoice_id);

        $updated_invoice['response']->TotalDiscount = "1";
        $updated_invoice['response']->Date = "2020-01-20";
        $updated_invoice['response']->Status = "DRAFT";
        $get_invoice_response =   Xero::update_invoice_by_id($invoice_id,$updated_invoice['response']);
        dd($get_invoice_response);

    }

update_invoice_by_id function

public static function update_invoice_by_id($invoice_id,$updated_invoice){

        self::instanciate();


        try{
            $update = self::$xero->loadByGUID('Accounting\\Invoice',$invoice_id);
            dd($update);
            $update->jsonSerialize($updated_invoice);

            $invoice_response = self::$xero->save($update);

            $response = [

                'error'     =>  false,

                'status'    =>  200,

                'message'   =>  'Invoice updated successfully',

                'response'  =>   $invoice_response->getElements()
            ];
        }
        catch (Exception $e){

            $response = [

                'error'     =>  true,

                'status'    =>  $e->getCode(),

                'message'   =>  $e->getMessage()
            ];
        }
        return $response;
    }

1 Ответ

0 голосов
/ 27 января 2020

у нас есть пример приложения, которое показывает некоторые примеры вызовов для таких вещей, как createInvoice. Однако стоит отметить, что недавно произошла серьезная перемена в более новой версии API для поддержки пакетных вызовов для счета Create & Updates:

Старый путь

$result = $apiInstance->updateInvoice($xeroTenantId, $guid, $invoice); 

Новый путь

-> updateOrCreateInvoices - это новейший способ. Я рекомендую посмотреть вашу версию пакета, который вы используете, так как функция изменилась.

https://github.com/XeroAPI/xero-php-oauth2-app/blob/4bf74e915df1b0fee66f954ffcbdc331e762a06a/example.php#L1222

Однако, как правило, выполнение процедуры POST для существующего счета с идентификатором счета и новым номером позволит вам обновить его.

{
  "InvoiceID": "292532ba-xxxx-xxxx-xxxx-60e7c39c4360",
  "InvoiceNumber": "INV-im-a-new-number"
}

enter image description here Надеюсь, это разблокирует вас!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...