public function getFields()
 {
     $allTaxClassesArray = array();
     foreach (TaxClass::getAllClasses()->toArray() as $instanceArray) {
         $allTaxClassesArray[$instanceArray['ID']] = $instanceArray['name_lang'];
     }
     return array(array('type' => 'select', 'label' => '_tax_class', 'name' => 'taxClassID', 'options' => $allTaxClassesArray));
 }
Пример #2
0
 /**
  * List all system currencies
  * @return ActionResponse
  */
 public function index()
 {
     $response = new ActionResponse();
     $classesForms = array();
     $classes = array();
     foreach (TaxClass::getAllClasses() as $class) {
         $classes[] = $class->toArray();
         $classesForms[] = $this->createClassForm($class);
     }
     $response->set("classesForms", $classesForms);
     $response->set("classes", $classes);
     $newClass = TaxClass::getNewInstance('');
     $response->set("newClassForm", $this->createClassForm($newClass));
     $response->set("newClass", $newClass->toArray());
     return $response;
 }
Пример #3
0
 private function saveTaxRates(Tax $tax)
 {
     $zones = DeliveryZone::getAll();
     $zones->add(DeliveryZone::getDefaultZoneInstance());
     $classes = TaxClass::getAllClasses();
     ActiveRecord::beginTransaction();
     foreach ($zones as $zone) {
         // delete all zone tax rates
         $taxRates = $zone->getTaxRates();
         foreach ($taxRates as $rate) {
             if ($rate->taxID->get()->getID() == $tax->getID()) {
                 $rate->delete();
             }
         }
         $this->saveRate($zone, $tax);
         foreach ($classes as $class) {
             $this->saveRate($zone, $tax, $class);
         }
     }
     ActiveRecord::commit();
 }
Пример #4
0
 private function productForm(Product $product)
 {
     $productFormData = $product->toArray();
     if ($product->isLoaded()) {
         $product->loadSpecification();
         $productFormData = array_merge($productFormData, $product->getSpecification()->getFormData());
         if (isset($productFormData['Manufacturer']['name'])) {
             $productFormData['manufacturer'] = $productFormData['Manufacturer']['name'];
         }
     } else {
         $product->load(ActiveRecord::LOAD_REFERENCES);
     }
     $product->loadPricing();
     $form = $this->buildForm($product);
     $pricing = $product->getPricingHandler();
     $pricesData = $product->toArray();
     $listPrices = $pricing->toArray(ProductPricing::DEFINED, ProductPricing::LIST_PRICE);
     $pricesData['shippingHiUnit'] = (int) $pricesData['shippingWeight'];
     $pricesData['shippingLoUnit'] = ($pricesData['shippingWeight'] - $pricesData['shippingHiUnit']) * 1000;
     if (array_key_exists('defined', $pricesData)) {
         foreach ($pricesData['calculated'] as $currency => $price) {
             $pricesData['price_' . $currency] = isset($pricesData['defined'][$currency]) ? $pricesData['defined'][$currency] : '';
             $productFormData['price_' . $currency] = $pricesData['price_' . $currency];
         }
     }
     foreach ($listPrices as $currency => $price) {
         $pricesData['listPrice_' . $currency] = $price;
     }
     $form->setData($productFormData);
     // status values
     $status = array(0 => $this->translate('_disabled'), 1 => $this->translate('_enabled'));
     // product types
     $types = array(Product::TYPE_TANGIBLE => $this->translate('_tangible'), Product::TYPE_DOWNLOADABLE => $this->translate('_intangible'), Product::TYPE_BUNDLE => $this->translate('_bundle'));
     // default product type
     if (!$product->isLoaded()) {
         $product->type->set(substr($this->config->get('DEFAULT_PRODUCT_TYPE'), -1));
         $form->set('type', $product->type->get());
     }
     $response = new ActionResponse();
     $product->getSpecification()->setFormResponse($response, $form);
     $response->set("cat", $product->getCategory()->getID());
     $response->set("hideFeedbackMessage", $this->request->get("afterAdding") == 'on');
     $response->set("productForm", $form);
     $response->set("path", $product->getCategory()->getPathNodeArray(true));
     $response->set("productTypes", $types);
     $response->set("productStatuses", $status);
     $response->set("baseCurrency", $this->application->getDefaultCurrency()->getID());
     $response->set("otherCurrencies", $this->application->getCurrencyArray(LiveCart::EXCLUDE_DEFAULT_CURRENCY));
     $response->set("shippingClasses", $this->getSelectOptionsFromSet(ShippingClass::getAllClasses()));
     $response->set("taxClasses", $this->getSelectOptionsFromSet(TaxClass::getAllClasses()));
     $productData = $product->toArray();
     if (empty($productData['ID'])) {
         $productData['ID'] = 0;
     }
     $response->set("product", $productData);
     return $response;
 }
Пример #5
0
 private function productForm($isExisting)
 {
     ClassLoader::import('application.LiveCartRenderer');
     ClassLoader::import('application.model.presentation.CategoryPresentation');
     $response = new BlockResponse();
     $response->set('themes', array_merge(array(''), LiveCartRenderer::getThemeList()));
     $form = $this->buildForm($isExisting);
     // status values
     $status = array(0 => $this->translate('_disabled'), 1 => $this->translate('_enabled'));
     // product types
     $types = array(Product::TYPE_TANGIBLE => $this->translate('_tangible'), Product::TYPE_DOWNLOADABLE => $this->translate('_intangible'), Product::TYPE_BUNDLE => $this->translate('_bundle'), Product::TYPE_RECURRING => $this->translate('_recurring'));
     //$product->type->set(substr($this->config->get('DEFAULT_PRODUCT_TYPE'), -1));
     $response->set("productForm", $form);
     $response->set("productTypes", $types);
     $response->set("productStatuses", $status);
     $response->set("baseCurrency", $this->application->getDefaultCurrency()->getID());
     $response->set("otherCurrencies", $this->application->getCurrencyArray(LiveCart::EXCLUDE_DEFAULT_CURRENCY));
     $response->set("shippingClasses", $this->getSelectOptionsFromSet(ShippingClass::getAllClasses()));
     $response->set("taxClasses", $this->getSelectOptionsFromSet(TaxClass::getAllClasses()));
     // get user groups
     $f = new ARSelectFilter();
     $f->setOrder(new ARFieldHandle('UserGroup', 'name'));
     $groups[0] = $this->translate('_all_customers');
     foreach (ActiveRecordModel::getRecordSetArray('UserGroup', $f) as $group) {
         $groups[$group['ID']] = $group['name'];
     }
     $groups[''] = '';
     $response->set('userGroups', $groups);
     return $response;
 }
Пример #6
0
 /**
  * @return RequestValidator
  */
 private function createTaxRateFormValidator()
 {
     $validator = $this->getValidator('shippingService', $this->request);
     $taxes = Tax::getAllTaxes();
     $classes = TaxClass::getAllClasses();
     foreach ($taxes as $tax) {
         $this->setFieldValidation($validator, $tax, null);
         foreach ($classes as $class) {
             $this->setFieldValidation($validator, $tax, $class);
         }
     }
     return $validator;
 }