public function TaxRateFormBase::buildForm in Ubercart 8.4
Form constructor.
Parameters
array $form: An associative array containing the structure of the form.
\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form.
Return value
array The form structure.
Overrides EntityForm::buildForm
1 call to TaxRateFormBase::buildForm()
- TaxRateEditForm::buildForm in uc_tax/
src/ Form/ TaxRateEditForm.php - Form constructor.
1 method overrides TaxRateFormBase::buildForm()
- TaxRateEditForm::buildForm in uc_tax/
src/ Form/ TaxRateEditForm.php - Form constructor.
File
- uc_tax/
src/ Form/ TaxRateFormBase.php, line 28
Class
- TaxRateFormBase
- Defines the tax rate add/edit form.
Namespace
Drupal\uc_tax\FormCode
public function buildForm(array $form, FormStateInterface $form_state) {
$form = parent::buildForm($form, $form_state);
$rate = $this->entity;
$form['label'] = [
'#type' => 'textfield',
'#title' => $this
->t('Label'),
'#description' => $this
->t('This name will appear to the customer when this tax is applied to an order.'),
'#default_value' => $rate
->label(),
'#required' => TRUE,
];
$form['id'] = [
'#type' => 'machine_name',
'#title' => $this
->t('Machine name'),
'#default_value' => $rate
->id(),
'#maxlength' => 32,
'#machine_name' => [
'exists' => [
$this,
'exists',
],
'replace_pattern' => '([^a-z0-9_]+)|(^custom$)',
'error' => 'The machine-readable name must be unique, and can only contain lowercase letters, numbers, and underscores. Additionally, it can not be the reserved word "custom".',
],
];
$form['rate'] = [
'#type' => 'textfield',
'#title' => $this
->t('Rate'),
'#description' => $this
->t('The tax rate as a percent or decimal. Examples: 6%, .06'),
'#size' => 15,
'#default_value' => (double) $rate
->getRate() * 100.0 . '%',
'#required' => 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) $rate
->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' => $rate
->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' => $rate
->getLineItemTypes(),
'#options' => $options,
];
$form['weight'] = [
'#type' => 'weight',
'#title' => $this
->t('Weight'),
'#description' => $this
->t('Taxes are sorted by weight and then applied to the order sequentially. This value is important when taxes need to include other tax line items.'),
'#default_value' => $rate
->getWeight(),
];
$form['display_include'] = [
'#type' => 'checkbox',
'#title' => $this
->t('Include this tax when displaying product prices.'),
'#default_value' => $rate
->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' => $rate
->getInclusionText(),
];
return $form;
}