Xero API: updateOrCreateInvoices перезаписывает контактные данные

Я использую API учета Xero с PHP (OAuth2), в частности функцию updateOrCreateInvoices в API Xero для синхронизации транзакций. Однако я заметил, что каждый раз, когда я запускаю эту функцию, некоторые контактные данные обновляются или перезаписываются, особенно поле «дополнительные лица». Это поле очищается после процесса синхронизации.

Я был бы признателен за любые идеи или разъяснения о поведении функции updateOrCreateInvoices. Существует ли особый способ структурирования запроса для обеспечения целостности контактной информации? Любая помощь или предложения будут очень признательны.

Используемая функция: updateOrCreateInvoices

Проблема: контактные данные, в частности поле «дополнительные лица», перезаписываются или удаляются.

Вот фрагмент кода, который я использую для синхронизации счетов.

public function create_or_update_invoice($xero_tenant_id, $api_instance, $invoice_list = array()){
    $arr_invoices = array();
    foreach ($invoice_list as $invoice) {
        //Retrieve Existing Contact Details (using the getContacts function):
        $contact = $this->get_contact_by_id($xero_tenant_id, $api_instance, $xero_contact_id, $contact_name);
    
        //Prepare Invoice Data with Existing Contact & Invoice Details:
        $new_invoice = new XeroAPI\XeroPHP\Models\Accounting\Invoice;
        $new_invoice->setType(XeroAPI\XeroPHP\Models\Accounting\Invoice::TYPE_ACCREC)
        ->setContact($contact)
        ...
        ...
        ->setStatus(XeroAPI\XeroPHP\Models\Accounting\Invoice::STATUS_AUTHORISED);
    
        $arr_invoices[] = $new_invoice;
    }

    $invoices = new XeroAPI\XeroPHP\Models\Accounting\Invoices;
    $invoices->setInvoices($arr_invoices);

    try{
        //Update or Create Invoice:
        $result = $api_instance->updateOrCreateInvoices($xero_tenant_id, $invoices); 
        return $result;
    }catch(Exception $e){
        return $e;
    }
}

После вышеописанных действий поле «дополнительные лица» в контактных данных очищается или перезаписывается.

Как ответил sallyhornet, я проверил и подтвердил, что, отмечая только ContactID в счете, я могу синхронизировать счета с Xero, не перезаписывая контактные данные.

Обновленный фрагмент примера:

        ...
        //Retrieve Existing Contact Details (using the getContacts function):
        //original
        //$contact = $this->get_contact_by_id($xero_tenant_id, $api_instance, $xero_contact_id, $contact_name);
        //new
        $contact = new XeroAPI\XeroPHP\Models\Accounting\Contact;
        $contact->setContactID($xero_contact_id);
    
        //Prepare Invoice Data with Existing Contact & Invoice Details:
        $new_invoice = new XeroAPI\XeroPHP\Models\Accounting\Invoice;
        $new_invoice->setType(XeroAPI\XeroPHP\Models\Accounting\Invoice::TYPE_ACCREC)
        ->setContact($contact)
        ...
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
58
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вы включаете поле контактных лиц, вам необходимо включить всех дополнительных людей, поскольку сведения о контактных лицах в Xero обновляются в соответствии с тем, что вы отправляете в это поле.

В счете-фактуре требуется только идентификатор контакта, а не полные контактные данные, поэтому, если вы не хотите обновлять контакт, вы можете просто указать идентификатор, а не полные контактные данные.

Я проверил и кажется, что это работает, я бы не подумал, что перезапись произошла из-за дополнительных контактных данных, включенных в счет! Спасибо!

Sebastian Cheong 17.07.2024 05:33

Другие вопросы по теме