%PDF- %PDF-
Direktori : /home1/lightco1/www/plugins/csviaddon/virtuemart/com_virtuemart/model/import/ |
Current File : //home1/lightco1/www/plugins/csviaddon/virtuemart/com_virtuemart/model/import/price.php |
<?php /** * @package CSVI * @subpackage VirtueMart * * @author Roland Dalmulder <contact@csvimproved.com> * @copyright Copyright (C) 2006 - 2015 RolandD Cyber Produksi. All rights reserved. * @license GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html * @link http://www.csvimproved.com */ defined('_JEXEC') or die; /** * Price import. * * @package CSVI * @subpackage VirtueMart * @since 6.0 */ class Com_VirtuemartModelImportPrice extends RantaiImportEngine { /** * Price table. * * @var VirtueMartTableProductPrice * @since 6.0 */ private $productPriceTable = null; /** * The addon helper * * @var Com_VirtuemartHelperCom_Virtuemart * @since 6.0 */ protected $helper = null; /** * CSVI fields * * @var CsviHelperImportfields * @since 6.0 */ protected $fields = null; /** * Start the product import process. * * @return bool True on success | false on failure. * * @since 6.0 */ public function getStart() { $this->setState('virtuemart_product_id', $this->helper->getProductId()); $this->setState('virtuemart_vendor_id', $this->helper->getVendorId()); // Process data foreach ($this->fields->getData() as $fields) { foreach ($fields as $name => $details) { $value = $details->value; switch ($name) { case 'product_price_publish_up': case 'product_price_publish_down': if (!empty($value)) { $this->setState($name, $this->convertDate($value, 'sql', 'user')); } break; case 'product_currency': $this->setState($name, $this->helper->getCurrencyId(strtoupper($value), $this->getState('virtuemart_vendor_id'))); break; case 'product_price': case 'product_price_new': $this->setState($name, $this->toPeriod($value)); break; default: $this->setState($name, $value); break; } } } // Reset loaded state $this->loaded = true; // Required fields are calc_kind, calc_value_mathop, calc_value if ($this->getState('product_sku', false) && $this->getState('product_price', false)) { // Get the product ID if we don't already have it if (!$this->getState('virtuemart_product_id', false)) { $this->setState('virtuemart_product_id', $this->helper->getProductId()); } /** * Get the shopper group ID * * The shopper group ID takes preference over the shopper group name */ if (strlen(trim($this->getState('virtuemart_shoppergroup_id', ''))) == 0) { if (strlen(trim($this->getState('shopper_group_name', ''))) > 0) { if ($this->getState('shopper_group_name') == '*') { $this->setState('virtuemart_shoppergroup_id', 0); } else { $this->setState('virtuemart_shoppergroup_id', $this->helper->getShopperGroupId($this->getState('shopper_group_name'))); } } else { $this->setState('virtuemart_shoppergroup_id', $this->helper->getDefaultShopperGroupID()); } } // Currency check as we need a currency, take VM default currency if not set if (!$this->getState('product_currency', false)) { $this->setState('product_currency', $this->helper->getVendorCurrency($this->getState('virtuemart_vendor_id'))); } // Bind the values $this->productPriceTable->bind($this->state); if ($this->productPriceTable->check()) { $this->setState('virtuemart_product_price_id', $this->productPriceTable->get('virtuemart_product_price_id')); // Check if we have an existing item if ($this->getState('virtuemart_product_price_id', 0) > 0 && !$this->template->get('overwrite_existing_data', true)) { $this->log->add(JText::sprintf('COM_CSVI_DATA_EXISTS_CONTENT', $this->getState('product_sku'))); $this->log->addStats('skipped', JText::sprintf('COM_CSVI_DATA_EXISTS_CONTENT', $this->getState('product_sku'))); $this->loaded = false; } else { // Load the current content data $this->productPriceTable->load(); $this->loaded = true; } } } else { $this->loaded = false; $this->log->addStats('skipped', JText::_('COM_CSVI_MISSING_REQUIRED_FIELDS')); } return true; } /** * Process a record. * * @return bool Returns true if all is OK | Returns false if no product SKU or product ID can be found. * * @since 6.0 */ public function getProcessRecord() { if ($this->loaded) { if (!$this->getState('virtuemart_product_price_id', false) && $this->template->get('ignore_non_exist')) { // Do nothing for new rules when user chooses to ignore new rules $this->log->addStats('skipped', JText::sprintf('COM_CSVI_DATA_EXISTS_IGNORE_NEW', $this->getState('product_sku'))); } else { // Let's check for modified and creation dates if (!$this->getState('virtuemart_product_price_id', false)) { $this->productPriceTable->created_on = $this->date->toSql(); $this->productPriceTable->modified_on = $this->date->toSql(); // Check for some other default fields if (!$this->getState('override', false)) { $this->productPriceTable->override = 0; } if (!$this->getState('product_override_price', false)) { $this->productPriceTable->product_override_price = 0; } if (!$this->getState('product_tax_id', false)) { $this->productPriceTable->product_tax_id = 0; } if (!$this->getState('product_discount_id', false)) { $this->productPriceTable->product_discount_id = 0; } if (!$this->getState('product_price_publish_up', false)) { $this->productPriceTable->product_price_publish_up = '0000-00-00 00:00:00'; } if (!$this->getState('product_price_publish_down', false)) { $this->productPriceTable->product_price_publish_down = '0000-00-00 00:00:00'; } } else { $this->productPriceTable->modified_on = $this->date->toSql(); } // Check if the user wants to delete a price if (strtoupper($this->getState('price_delete')) == 'Y') { if ($this->getState('virtuemart_product_price_id', false)) { $this->productPriceTable->delete($this->getState('virtuemart_product_price_id')); } else { $this->log->addStats('incorrect', 'COM_CSVI_PRICE_NOT_DELETED_NO_ID'); } } else { if (!$this->getState('virtuemart_product_id')) { $this->log->add(JText::sprintf('COM_CSVI_NO_PRODUCT_ID_FOUND', $this->getState('product_sku'))); $this->log->AddStats('skipped', JText::sprintf('COM_CSVI_NO_PRODUCT_ID_FOUND', $this->getState('product_sku'))); } elseif (!$this->getState('virtuemart_product_price_id', false) && !$this->getState('product_price')) { $this->log->add('COM_CSVI_NO_PRODUCT_PRICE_FOUND'); $this->log->AddStats('skipped', 'COM_CSVI_NO_PRODUCT_PRICE_FOUND'); } else { // Check if we need to change the product price if ($this->getState('product_price_new', false)) { $this->productPriceTable->product_price = $this->getState('product_price_new', false); } // Check if there is an override price if ($this->getState('product_override_price')) { $this->productPriceTable->product_override_price = $this->getState('product_override_price', false); } // Check if we need to change the shopper group name $shopper_group_name_new = $this->getState('shopper_group_name_new', false); if ($shopper_group_name_new) { if ($shopper_group_name_new == '*') { $this->productPriceTable->virtuemart_shoppergroup_id = 0; } else { $this->productPriceTable->virtuemart_shoppergroup_id = $this->helper->getShopperGroupId($shopper_group_name_new); } } // See if there is any calculation needed on the prices if ($this->getState('virtuemart_product_price_id')) { $this->productPriceTable->CalculatePrice(); } // Store the price if (!$this->productPriceTable->store()) { $this->log->addStats('incorrect', JText::sprintf('COM_CSVI_MULTIPLE_PRICES_NOT_ADDED', $this->productPriceTable->getError())); } } } } return true; } else { return false; } } /** * Load the necessary tables. * * @return void. * * @since 6.0 */ public function loadTables() { $this->productPriceTable = $this->getTable('ProductPrice'); } /** * Clear the loaded tables. * * @return void. * * @since 6.0 */ public function clearTables() { $this->productPriceTable->reset(); } }