Skip to content

Instantly share code, notes, and snippets.

@direvus
Created May 10, 2017 05:41
Show Gist options
  • Save direvus/bcffbdd1554413431ae8cf272506e62e to your computer and use it in GitHub Desktop.
Save direvus/bcffbdd1554413431ae8cf272506e62e to your computer and use it in GitHub Desktop.

Revisions

  1. direvus created this gist May 10, 2017.
    120 changes: 120 additions & 0 deletions xero-php-payment-terms-181.diff
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,120 @@
    commit ac5e415d468b655d8c425aef443846dad2fabef7
    Author: Brendan Jurd <[email protected]>
    Date: Wed May 10 15:09:52 2017 +1000

    Manually patch XeroPHP to work with Contact/PaymentTerms properly.

    See https://github.com/calcinai/xero-php/issues/181.

    diff --git a/src/XeroPHP/Models/Accounting/Contact.php b/src/XeroPHP/Models/Accounting/Contact.php
    index a84b15c..2fd0248 100644
    --- a/src/XeroPHP/Models/Accounting/Contact.php
    +++ b/src/XeroPHP/Models/Accounting/Contact.php
    @@ -180,7 +180,7 @@ class Contact extends Remote\Object
    /**
    * The default payment terms for the contact – see Payment Terms
    *
    - * @property PaymentTerm[] PaymentTerms
    + * @property PaymentTerm PaymentTerms
    */

    /**
    @@ -333,7 +333,7 @@ class Contact extends Remote\Object
    'PurchasesTrackingCategories' => [false, self::PROPERTY_TYPE_OBJECT, 'Accounting\\TrackingCategory', true, false],
    'TrackingCategoryName' => [false, self::PROPERTY_TYPE_STRING, null, false, false],
    'TrackingCategoryOption' => [false, self::PROPERTY_TYPE_STRING, null, false, false],
    - 'PaymentTerms' => [false, self::PROPERTY_TYPE_OBJECT, 'Accounting\\Organisation\\PaymentTerm', true, false],
    + 'PaymentTerms' => [false, self::PROPERTY_TYPE_OBJECT, 'Accounting\\Organisation\\PaymentTerm', false, false],
    'UpdatedDateUTC' => [false, self::PROPERTY_TYPE_TIMESTAMP, '\\DateTimeInterface', false, false],
    'ContactGroups' => [false, self::PROPERTY_TYPE_OBJECT, 'Accounting\\ContactGroup', true, false],
    'Website' => [false, self::PROPERTY_TYPE_STRING, null, false, false],
    @@ -855,8 +855,7 @@ class Contact extends Remote\Object
    }

    /**
    - * @return PaymentTerm[]|Remote\Collection
    - * Always returns a collection, switch is for type hinting
    + * @return PaymentTerm
    */
    public function getPaymentTerms()
    {
    @@ -867,13 +866,10 @@ class Contact extends Remote\Object
    * @param PaymentTerm $value
    * @return Contact
    */
    - public function addPaymentTerm(PaymentTerm $value)
    + public function setPaymentTerms(PaymentTerm $value)
    {
    $this->propertyUpdated('PaymentTerms', $value);
    - if (!isset($this->_data['PaymentTerms'])) {
    - $this->_data['PaymentTerms'] = new Remote\Collection();
    - }
    - $this->_data['PaymentTerms'][] = $value;
    + $this->_data['PaymentTerms'] = $value;
    return $this;
    }

    diff --git a/src/XeroPHP/Models/Accounting/Organisation/PaymentTerm.php b/src/XeroPHP/Models/Accounting/Organisation/PaymentTerm.php
    index 3615e61..b74425f 100644
    --- a/src/XeroPHP/Models/Accounting/Organisation/PaymentTerm.php
    +++ b/src/XeroPHP/Models/Accounting/Organisation/PaymentTerm.php
    @@ -87,8 +87,8 @@ class PaymentTerm extends Remote\Object
    public static function getProperties()
    {
    return [
    - 'Bills' => [false, self::PROPERTY_TYPE_OBJECT, 'Accounting\\Organisation\\Bill', true, false],
    - 'Sales' => [false, self::PROPERTY_TYPE_OBJECT, 'Accounting\\Organisation\\Sale', true, false]
    + 'Bills' => [false, self::PROPERTY_TYPE_OBJECT, 'Accounting\\Organisation\\Bill', false, false],
    + 'Sales' => [false, self::PROPERTY_TYPE_OBJECT, 'Accounting\\Organisation\\Sale', false, false]
    ];
    }

    @@ -98,8 +98,7 @@ class PaymentTerm extends Remote\Object
    }

    /**
    - * @return Bill[]|Remote\Collection
    - * Always returns a collection, switch is for type hinting
    + * @return Bill
    */
    public function getBills()
    {
    @@ -110,19 +109,15 @@ class PaymentTerm extends Remote\Object
    * @param Bill $value
    * @return PaymentTerm
    */
    - public function addBill(Bill $value)
    + public function setBill(Bill $value)
    {
    $this->propertyUpdated('Bills', $value);
    - if (!isset($this->_data['Bills'])) {
    - $this->_data['Bills'] = new Remote\Collection();
    - }
    - $this->_data['Bills'][] = $value;
    + $this->_data['Bills'] = $value;
    return $this;
    }

    /**
    - * @return Sale[]|Remote\Collection
    - * Always returns a collection, switch is for type hinting
    + * @return Sale
    */
    public function getSales()
    {
    @@ -133,13 +128,10 @@ class PaymentTerm extends Remote\Object
    * @param Sale $value
    * @return PaymentTerm
    */
    - public function addSale(Sale $value)
    + public function setSale(Sale $value)
    {
    $this->propertyUpdated('Sales', $value);
    - if (!isset($this->_data['Sales'])) {
    - $this->_data['Sales'] = new Remote\Collection();
    - }
    - $this->_data['Sales'][] = $value;
    + $this->_data['Sales'] = $value;
    return $this;
    }