public function TaxRateForm::form in Ubercart 8.4
Gets the actual form array to be built.
Overrides EntityForm::form
See also
\Drupal\Core\Entity\EntityForm::processForm()
\Drupal\Core\Entity\EntityForm::afterBuild()
File
- uc_tax/
src/ Form/ TaxRateForm.php, line 40
Class
- TaxRateForm
- Builds the form to edit tax rate entities.
Namespace
Drupal\uc_tax\FormCode
public function form(array $form, FormStateInterface $form_state) {
$definition = $this->plugin
->getPluginDefinition();
$form['type'] = [
'#type' => 'item',
'#title' => $this
->t('Type'),
'#markup' => $definition['label'],
];
$form['label'] = [
'#type' => 'textfield',
'#title' => $this
->t('Label'),
'#maxlength' => 255,
'#default_value' => $this->entity
->label(),
'#description' => $this
->t('The tax rate name shown to the customer at checkout.'),
'#required' => TRUE,
];
$form['id'] = [
'#type' => 'machine_name',
'#default_value' => $this->entity
->id(),
'#maxlength' => 32,
'#machine_name' => [
'exists' => '\\Drupal\\uc_tax\\Entity\\TaxRate::load',
],
'#disabled' => !$this->entity
->isNew(),
];
$form['settings'] = $this->plugin
->buildConfigurationForm([], $form_state);
$form['settings']['#tree'] = TRUE;
$form['shippable'] = [
'#type' => 'radios',
'#title' => $this
->t('Taxed products'),
'#options' => [
0 => $this
->t('Apply tax to any product regardless of its shippability.'),
1 => $this
->t('Apply tax to shippable products only.'),
],
'#default_value' => (int) $this->entity
->isForShippable(),
];
// @todo Remove the need for a special case for product kit module.
$options = [];
foreach (node_type_get_names() as $type => $name) {
if ($type != 'product_kit' && uc_product_is_product($type)) {
$options[$type] = $name;
}
}
$options['blank-line'] = $this
->t('"Blank line" product');
$form['product_types'] = [
'#type' => 'checkboxes',
'#title' => $this
->t('Taxed product types'),
'#description' => $this
->t('Apply taxes to the specified product types/classes.'),
'#default_value' => $this->entity
->getProductTypes(),
'#options' => $options,
];
$options = [];
$definitions = \Drupal::service('plugin.manager.uc_order.line_item')
->getDefinitions();
foreach ($definitions as $id => $line_item) {
if (!in_array($id, [
'subtotal',
'tax_subtotal',
'total',
'tax_display',
])) {
$options[$id] = $line_item['title'];
}
}
$form['line_item_types'] = [
'#type' => 'checkboxes',
'#title' => $this
->t('Taxed line items'),
'#description' => $this
->t('Adds the checked line item types to the total before applying this tax.'),
'#default_value' => $this->entity
->getLineItemTypes(),
'#options' => $options,
];
$form['display_include'] = [
'#type' => 'checkbox',
'#title' => $this
->t('Include this tax when displaying product prices.'),
'#default_value' => $this->entity
->isIncludedInPrice(),
];
$form['inclusion_text'] = [
'#type' => 'textfield',
'#title' => $this
->t('Tax inclusion text'),
'#description' => $this
->t('This text will be displayed near the price to indicate that it includes tax.'),
'#default_value' => $this->entity
->getInclusionText(),
];
return parent::form($form, $form_state);
}