You are here

function uc_tax_rate_save in Ubercart 8.4

Saves a tax rate to the database.

Parameters

$rate: The tax rate object to be saved.

bool $reset: If TRUE, resets the Rules cache after saving. Defaults to TRUE.

Return value

The saved tax rate object including the rate ID for new rates.

2 calls to uc_tax_rate_save()
InclusiveTaxTest::testProductKitAttributes in uc_tax/tests/src/Functional/InclusiveTaxTest.php
Test inclusive taxes with product kit attributes.
StoredTaxTest::testTaxDisplay in uc_tax/tests/src/Functional/StoredTaxTest.php
Tests display of taxes.

File

uc_tax/uc_tax.module, line 208
Ubercart Tax module.

Code

function uc_tax_rate_save($rate, $reset = TRUE) {
  $connection = \Drupal::database();
  $fields = [
    'name' => $rate->name,
    'rate' => $rate->rate,
    'shippable' => $rate->shippable,
    'weight' => $rate->weight,
    'display_include' => $rate->display_include,
    'inclusion_text' => $rate->inclusion_text,
  ];
  if (isset($rate->id)) {
    $connection
      ->merge('uc_tax')
      ->key('id', $rate->id)
      ->fields($fields)
      ->execute();
  }
  else {
    $rate->id = $connection
      ->insert('uc_tax')
      ->fields($fields)
      ->execute();
  }
  $connection
    ->delete('uc_tax_taxed_product_types')
    ->condition('tax_id', $rate->id)
    ->execute();
  $connection
    ->delete('uc_tax_taxed_line_items')
    ->condition('tax_id', $rate->id)
    ->execute();
  $p_insert = $connection
    ->insert('uc_tax_taxed_product_types')
    ->fields([
    'tax_id',
    'type',
  ]);
  $l_insert = $connection
    ->insert('uc_tax_taxed_line_items')
    ->fields([
    'tax_id',
    'type',
  ]);
  foreach ($rate->taxed_product_types as $type) {
    $p_insert
      ->values([
      'tax_id' => $rate->id,
      'type' => $type,
    ]);
  }
  foreach ($rate->taxed_line_items as $type) {
    $l_insert
      ->values([
      'tax_id' => $rate->id,
      'type' => $type,
    ]);
  }
  $p_insert
    ->execute();
  $l_insert
    ->execute();

  // if ($reset) {
  //   // Ensure Rules picks up the new condition.
  //   entity_flush_caches();
  // }
  return $rate;
}