Data Transfer Objects (DTOs)

From version 1.1.14

Using DTOs

The package provides Data Transfer Objects (DTOs) to help with creating and updating resources:

ContactDTO

use Dcblogdev\Xero\DTOs\ContactDTO;
use Dcblogdev\Xero\Enums\ContactStatus;

// Create a new contact DTO
$contactDTO = new ContactDTO(
    name: 'ACME Inc',
    firstName: 'John',
    lastName: 'Doe',
    emailAddress: 'john.doe@example.com',
    accountNumber: 'ACME001',
    bankAccountDetails: '12-3456-7890123-00',
    taxNumber: '123-456-789',
    contactStatus: ContactStatus::Active->value,
    isSupplier: false,
    isCustomer: true,
    website: 'https://example.com'
);

// Add an address
$contactDTO->addresses[] = ContactDTO::createAddress(
    addressType: 'POBOX',
    addressLine1: '123 Main St',
    city: 'New York',
    region: 'NY',
    postalCode: '10001',
    country: 'USA'
);

// Add a phone number
$contactDTO->phones[] = ContactDTO::createPhone(
    phoneType: 'MOBILE',
    phoneNumber: '555-1234'
);

// Add a contact person
$contactDTO->contactPersons[] = ContactDTO::createContactPerson(
    firstName: 'Jane',
    lastName: 'Smith',
    emailAddress: 'jane.smith@example.com',
    includeInEmails: true
);

// Convert to array for API request
$contactArray = $contactDTO->toArray();

InvoiceDTO

use Dcblogdev\Xero\DTOs\InvoiceDTO;
use Dcblogdev\Xero\Enums\InvoiceType;
use Dcblogdev\Xero\Enums\InvoiceStatus;
use Dcblogdev\Xero\Enums\InvoiceLineAmountType;

// Create a new invoice DTO
$invoiceDTO = new InvoiceDTO(
    type: InvoiceType::AccRec->value,
    invoiceNumber: 'INV-001',
    reference: 'REF-001',
    date: date('Y-m-d'),
    dueDate: date('Y-m-d', strtotime('+30 days')),
    status: InvoiceStatus::Draft->value,
    lineAmountTypes: InvoiceLineAmountType::Exclusive->value,
    currencyCode: 'USD',
    contactID: 'contact-id'
);

// Add line items
$invoiceDTO->lineItems[] = InvoiceDTO::createLineItem(
    description: 'Web Development Services',
    quantity: 10,
    unitAmount: 100.00,
    accountCode: 200,
    taxType: 'OUTPUT',
    discountRate: 10
);

// Convert to array for API request
$invoiceArray = $invoiceDTO->toArray();

Copyright © 2006 - 2025 DC Blog - All rights reserved.