xero-8.x-2.x-dev/src/TypedData/Definition/AccountDefinition.php

src/TypedData/Definition/AccountDefinition.php
<?php

namespace Drupal\xero\TypedData\Definition;

use Drupal\Core\TypedData\ComplexDataDefinitionBase;
use Drupal\Core\TypedData\DataDefinition;
use Drupal\xero\TaxTypeTrait;

/**
 * Xero Account data definition.
 */
class AccountDefinition extends ComplexDataDefinitionBase implements XeroDefinitionInterface {

  use TaxTypeTrait;

  /**
   * {@inheritdoc}
   */
  public function getPropertyDefinitions() {
    if (!isset($this->propertyDefinitions)) {
      $info = &$this->propertyDefinitions;
      $type_options = ['choices' => $this->getAccountTypes()];
      $tax_type_options = ['choices' => self::getTaxTypes()];
      $class_options = [
        'choices' => ['ASSET', 'EQUITY', 'EXPENSE', 'LIABILITY', 'REVENUE'],
      ];
      $status_options = ['choices' => ['ACTIVE', 'ARCHIVED']];

      // UUID is read only.
      $info['AccountID'] = DataDefinition::create('string')->setLabel('Account ID')->addConstraint('XeroGuidConstraint');

      // Writeable properties.
      $info['Code'] = DataDefinition::create('string')->setLabel('Code');
      $info['Name'] = DataDefinition::create('string')->setRequired(TRUE)->setLabel('Name');
      $info['Type'] = DataDefinition::create('string')->setRequired(TRUE)->setLabel('Type')->addConstraint('XeroChoiceConstraint', $type_options);
      $info['Description'] = DataDefinition::create('string')->setLabel('Description');
      $info['TaxType'] = DataDefinition::create('string')->setLabel('Tax type')->addConstraint('XeroChoiceConstraint', $tax_type_options);
      $info['EnablePaymentsToAccount'] = DataDefinition::create('boolean')->setLabel('May have payments');
      $info['ShowInExpenseClaims'] = DataDefinition::create('boolean')->setLabel('Shown in expense claims');

      // Read-only properties.
      $info['Class'] = DataDefinition::create('string')->setLabel('Class')->setReadOnly(TRUE)->addConstraint('XeroChoiceConstraint', $class_options);
      $info['Status'] = DataDefinition::create('string')->setLabel('Status')->setReadOnly(TRUE)->addConstraint('XeroChoiceConstraint', $status_options);
      $info['SystemAccount'] = DataDefinition::create('string')->setLabel('System account')->setReadOnly(TRUE);
      $info['BankAccountNumber'] = DataDefinition::create('string')->setLabel('Bank account')->setReadOnly(TRUE);
      $info['CurrencyCode'] = DataDefinition::create('string')->setLabel('Currency code')->setReadOnly(TRUE);
      $info['ReportingCode'] = DataDefinition::create('string')->setLabel('Reporting code')->setReadOnly(TRUE);
      $info['ReportingCodeName'] = DataDefinition::create('string')->setLabel('Reporting code name')->setReadOnly(TRUE);
    }
    return $this->propertyDefinitions;
  }

  /**
   * Provide the correct Xero Account Types for validation.
   */
  protected function getAccountTypes() {
    return [
      'BANK', 'CURRENT', 'CURRLIAB', 'DEPRECIATN', 'DIRECTCOSTS', 'EQUITY',
      'EXPENSE', 'FIXED', 'LIABILITY', 'NONCURRENT', 'OTHERINCOME',
      'OVERHEADS', 'PREPAYMENT', 'REVENUE', 'SALES', 'TERMLIAB',
      'PAYGLIABILITY', 'SUPERANNUATIONEXPENSE', 'SUPERANNUATIONLIABILITY',
      'WAGESEXPENSE',
    ];
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc