commerce_qb_webconnect-8.x-2.0-alpha7/src/Form/QuickbooksAdminForm.php
src/Form/QuickbooksAdminForm.php
<?php namespace Drupal\commerce_qb_webconnect\Form; use Drupal\Core\Form\ConfigFormBase; use Drupal\Core\Form\FormStateInterface; /** * Class QuickbooksAdminForm. * * @package Drupal\commerce_qb_webconnect\Form */ class QuickbooksAdminForm extends ConfigFormBase { /** * {@inheritdoc} */ protected function getEditableConfigNames() { return [ 'commerce_qb_webconnect.quickbooks_admin', ]; } /** * {@inheritdoc} */ public function getFormId() { return 'qb_webconnect_admin_form'; } /** * {@inheritdoc} */ public function buildForm(array $form, FormStateInterface $form_state) { $config = $this->config('commerce_qb_webconnect.quickbooks_admin'); // Check if we have a GUID before creating one. if (empty($config->get('qwc_owner_id'))) { $uuid = \Drupal::service('uuid'); $qwc_owner_id = $uuid->generate(); } else { $qwc_owner_id = $config->get('qwc_owner_id'); } $form['#tree'] = TRUE; $form['exportables'] = [ '#type' => 'fieldset', '#title' => $this->t('Export data'), ]; $form['exportables']['products'] = [ '#type' => 'checkbox', '#title' => $this->t('Export products'), '#description' => $this->t('Products do not have a price. Only product variations. All product variations will be exported and related to their parent product in Quickbooks.'), '#default_value' => $config->get('exportables')['products'], ]; $form['exportables']['order_type'] = [ '#type' => 'select', '#title' => $this->t('Order export type'), '#description' => $this->t('Select order export type. Invoices are for sales that have a payment at a later date. Sales receipts are for payments effective immediately.'), '#options' => [ 'invoices' => $this->t('Invoices'), 'sales_receipts' => $this->t('Sales receipts'), ], '#default_value' => $config->get('exportables')['order_type'], '#size' => 2, ]; $form['accounts'] = [ '#type' => 'fieldset', '#title' => $this->t('Product Export Settings'), '#description' => $this->t('The default account names for Product sales; these are mandatory and must match the full display name in Quickbooks, but can be changed at any time.'), ]; $form['accounts']['main_income_account'] = [ '#type' => 'textfield', '#title' => $this->t('Quickbooks main income account'), '#description' => $this->t('When exporting products through Quickbooks WebConnect, the resulting Quickbooks products will be linked to this account.'), '#maxlength' => 64, '#size' => 64, '#default_value' => $config->get('accounts')['main_income_account'], '#required' => TRUE, ]; $form['accounts']['cogs_account'] = [ '#type' => 'textfield', '#title' => $this->t('Quickbooks COGS account'), '#description' => $this->t('Provide the name of the Cost of Goods Sold (COGS) account for exported products.'), '#maxlength' => 64, '#size' => 64, '#default_value' => $config->get('accounts')['cogs_account'], '#required' => TRUE, ]; $form['accounts']['assets_account'] = [ '#type' => 'textfield', '#title' => $this->t('Quickbooks assets account'), '#maxlength' => 64, '#size' => 64, '#default_value' => $config->get('accounts')['assets_account'], '#required' => TRUE, ]; $form['adjustments'] = [ '#type' => 'fieldset', '#title' => $this->t('Adjustment settings'), ]; $form['adjustments']['discount_service'] = [ '#type' => 'textfield', '#title' => $this->t('Discount service'), '#description' => $this->t('Provide the name of default discount-item so that QuickBooks can keep track of order promotions.'), '#default_value' => $config->get('adjustments')['discount_service'], ]; $form['adjustments']['shipping_service'] = [ '#type' => 'textfield', '#title' => $this->t('Shipping item'), '#description' => $this->t('Provide the name of default shipping service-item so that Quickbooks can keep track of shipping charges.'), '#maxlength' => 64, '#size' => 64, '#default_value' => $config->get('adjustments')['shipping_service'], ]; $form['id_prefixes'] = [ '#type' => 'fieldset', '#title' => $this->t('Custom ID prefixes'), '#description' => $this->t('If your Quickbooks setup requires custom IDs, you can set a prefix here to prepend to generated reference numbers.'), '#collapsible' => TRUE, '#collapsed' => TRUE, ]; $form['id_prefixes']['po_number_prefix'] = [ '#type' => 'textfield', '#title' => $this->t('Quickbooks invoice/sales receipt number prefix'), '#description' => $this->t('Specify the prefix to the order id to be used when generating the invoice or sales receipt number.'), '#maxlength' => 32, '#size' => 32, '#default_value' => $config->get('id_prefixes')['po_number_prefix'], ]; $form['id_prefixes']['payment_prefix'] = [ '#type' => 'textfield', '#title' => $this->t('Quickbooks payment reference number prefix'), '#description' => $this->t('Specify the prefix to the payment number to be used when generating the payment reference number.'), '#maxlength' => 32, '#size' => 32, '#default_value' => $config->get('id_prefixes')['payment_prefix'], ]; $form['qwc_owner_id'] = [ '#type' => 'hidden', '#value' => $qwc_owner_id, ]; return parent::buildForm($form, $form_state); } /** * {@inheritdoc} */ public function validateForm(array &$form, FormStateInterface $form_state) { parent::validateForm($form, $form_state); } /** * {@inheritdoc} */ public function submitForm(array &$form, FormStateInterface $form_state) { parent::submitForm($form, $form_state); $config = $this->config('commerce_qb_webconnect.quickbooks_admin'); $config->delete(); $values = $form_state->cleanValues()->getValues(); unset($values['actions']); foreach ($values as $key => $value) { $config->set($key, $value); } $config->save(); } }