Jump to content

Gadem

Members
  • Posts

    4
  • Joined

  • Last visited

Gadem's Achievements

Newbie

Newbie (1/14)

0

Reputation

  1. Not Work in 1.7.7.x 😕 use PrestaShop\PrestaShop\Core\Module\WidgetInterface; use PrestaShop\PrestaShop\Adapter\Image\ImageRetriever; use PrestaShop\PrestaShop\Adapter\Product\PriceFormatter; use PrestaShop\PrestaShop\Core\Product\ProductListingPresenter; use PrestaShop\PrestaShop\Adapter\Product\ProductColorsRetriever; if (!defined('_PS_VERSION_')) { exit; } class Ps_Specials extends Module implements WidgetInterface { private $templateFile; public function __construct() { $this->name = 'ps_specials'; $this->author = 'PrestaShop'; $this->version = '1.0.1'; $this->need_instance = 0; $this->ps_versions_compliancy = array( 'min' => '1.7.0.0', 'max' => _PS_VERSION_ ); $this->bootstrap = true; parent::__construct(); $this->displayName = $this->trans('Specials block', array(), 'Modules.Specials.Admin'); $this->description = $this->trans('Displays your products that are currently on sale in a dedicated block.', array(), 'Modules.Specials.Admin'); $this->templateFile = 'module:ps_specials/views/templates/hook/ps_specials.tpl'; } public function install() { $this->_clearCache('*'); Configuration::updateValue('BLOCKSPECIALS_SPECIALS_NBR', 8); return parent::install() && $this->registerHook('actionProductAdd') && $this->registerHook('actionProductUpdate') && $this->registerHook('actionProductDelete') && $this->registerHook('actionObjectSpecificPriceCoreDeleteAfter') && $this->registerHook('actionObjectSpecificPriceCoreAddAfter') && $this->registerHook('actionObjectSpecificPriceCoreUpdateAfter') && $this->registerHook('displayHome'); } public function uninstall() { $this->_clearCache('*'); return parent::uninstall(); } public function hookActionProductAdd($params) { $this->_clearCache('*'); } public function hookActionProductUpdate($params) { $this->_clearCache('*'); } public function hookActionProductDelete($params) { $this->_clearCache('*'); } public function hookActionObjectSpecificPriceCoreDeleteAfter($params) { $this->_clearCache('*'); } public function hookActionObjectSpecificPriceCoreAddAfter($params) { $this->_clearCache('*'); } public function hookActionObjectSpecificPriceCoreUpdateAfter($params) { $this->_clearCache('*'); } public function _clearCache($template, $cache_id = null, $compile_id = null) { parent::_clearCache($this->templateFile); } public function getContent() { $output = ''; if (Tools::isSubmit('submitSpecials')) { Configuration::updateValue('BLOCKSPECIALS_SPECIALS_NBR', (int)Tools::getValue('BLOCKSPECIALS_SPECIALS_NBR')); $this->_clearCache('*'); $output .= $this->displayConfirmation($this->trans('The settings have been updated.', array(), 'Admin.Notifications.Success')); } return $output.$this->renderForm(); } public function renderForm() { $fields_form = array( 'form' => array( 'legend' => array( 'title' => $this->trans('Settings', array(), 'Admin.Global'), 'icon' => 'icon-cogs' ), 'input' => array( array( 'type' => 'text', 'label' => $this->trans('Products to display', array(), 'Modules.Specials.Admin'), 'name' => 'BLOCKSPECIALS_SPECIALS_NBR', 'class' => 'fixed-width-xs', 'desc' => $this->trans('Define the number of products to be displayed in this block on home page.', array(), 'Modules.Specials.Admin'), ), ), 'submit' => array( 'title' => $this->trans('Save', array(), 'Admin.Actions'), ), ), ); $lang = new Language((int)Configuration::get('PS_LANG_DEFAULT')); $helper = new HelperForm(); $helper->show_toolbar = false; $helper->table = $this->table; $helper->default_form_language = $lang->id; $helper->allow_employee_form_lang = Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') ? Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') : 0; $helper->identifier = $this->identifier; $helper->submit_action = 'submitSpecials'; $helper->currentIndex = $this->context->link->getAdminLink('AdminModules', false) . '&configure=' . $this->name . '&tab_module=' . $this->tab . '&module_name=' . $this->name; $helper->token = Tools::getAdminTokenLite('AdminModules'); $helper->tpl_vars = array( 'fields_value' => $this->getConfigFieldsValues(), 'languages' => $this->context->controller->getLanguages(), 'id_language' => $this->context->language->id ); return $helper->generateForm(array($fields_form)); } public function getConfigFieldsValues() { return array( 'BLOCKSPECIALS_SPECIALS_NBR' => Tools::getValue('BLOCKSPECIALS_SPECIALS_NBR', Configuration::get('BLOCKSPECIALS_SPECIALS_NBR')), ); } public function renderWidget($hookName = null, array $configuration = []) { if (!$this->isCached($this->templateFile, $this->getCacheId('ps_specials'))) { $variables = $this->getWidgetVariables($hookName, $configuration); if (empty($variables)) { return false; } $this->smarty->assign($variables); } return $this->fetch($this->templateFile, $this->getCacheId('ps_specials')); } public function getWidgetVariables($hookName = null, array $configuration = []) { $products = $this->getSpecialProducts(); if (!empty($products)) { return array( 'products' => $products, 'allSpecialProductsLink' => Context::getContext()->link->getPageLink('prices-drop'), ); } return false; } private function getSpecialProducts() { $products = Product::getPricesDrop( (int)Context::getContext()->language->id, 0, (int)Configuration::get('BLOCKSPECIALS_SPECIALS_NBR') ); $assembler = new ProductAssembler($this->context); $presenterFactory = new ProductPresenterFactory($this->context); $presentationSettings = $presenterFactory->getPresentationSettings(); $presenter = new ProductListingPresenter( new ImageRetriever( $this->context->link ), $this->context->link, new PriceFormatter(), new ProductColorsRetriever(), $this->context->getTranslator() ); $products_for_template = array(); if (is_array($products)) { foreach ($products as $rawProduct) { $products_for_template[] = $presenter->present( $presentationSettings, $assembler->assembleProduct($rawProduct), $this->context->language ); } } return $products_for_template; } }
  2. Hola amigos, antes que nada, un saludo y gracias por entrar a mi tema. Les explico, tengo activada la multistore, con 4 tiendas compartiendo productos, usuarios, tema, etc. Cada una de mis tiendas están ligadas a un almacén. Respecto al feed de stock, todo bien, cada combinación tiene su stock, y todo bien, pero al entrar y modificar un producto, solo con entrar, este me desaparece del Stock instantáneo y tengo que desactivar y volver a activar el stock avanzado de dicho producto. También uso RockPOS, que al momento de vender un producto lo desaparece del Stock Instantáneo. No tengo idea de por donde comenzar, he activado y desactivado los casi 987 productos que tenemos en las 4 tiendas. Agradecería consejos, Pensé en migrar a 1.7 pero por ley necesito Multistore con Sotck Avanzado.
×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More