Trattore Case IH Optum 300 CVX e Rimorchio Caricaballe Bruder Giocattoli
L’autunno è la stagione in cui le balle di insilato e di paglia devono essere trasportate nei fienili o nelle stalle. Per questa attività, BRUDER ha creato una squadra affascinante con trattori potenti e versatili. Il modellino BRUDER Optum in scala 1:16 riproduce fedelmente le caratteristiche dei trattori reali, con un design innovativo e una maneggevolezza eccezionale.
Caratteristiche principali:
- Cabina di guida: realizzata in plastica trasparente di alta qualità, completamente vetrata e con porte apribili.
- Cofano motore: apribile, rivelando il motore dettagliato.
- Sterzo: orientabile tramite una barra sterzante che può essere inserita dal tetto scorrevole.
- Asse oscillante: orientabile, adatto a tutti i terreni, per un’esperienza di gioco realistica.
- Ruote staccabili: permettono un ulteriore livello di personalizzazione e divertimento.
- Caricatore frontale: completamente funzionante, già installato sul modellino per attività agricole dinamiche.
- Gancio traino: regolabile in altezza, compatibile con tutti i rimorchi della serie Pro.
Rimorchio caricaballe:
- Montanti pieghevoli: per facilitare il carico e il trasporto.
- Set di 8 balle rotonde: incluse nel rimorchio per un’esperienza di gioco completa.
- Compatibilità: può essere combinato con il set personaggio agricoltore (n. art. 62610) per un gioco ancora più interattivo.
Materiali e sicurezza:
- Materiali: realizzato in plastica di alta qualità come l'ABS.
- Sicurezza: non adatto a bambini sotto i 36 mesi per rischio di soffocamento dovuto a piccole parti. Età consigliata: dai 3 anni in su.
Ideale per il gioco all’interno e all’esterno, questo set combina tutti i rimorchi e gli attrezzi agricoli BRUDER, offrendo un divertimento infinito ai piccoli agricoltori.
Disponibilità limitata! 1 Disponibilità limitata: ancora pochi pezzi.
Spedizione rapida e sicura: ogni ordine viene accuratamente imballato per garantire che il prodotto arrivi integro e in condizioni perfette.
Collaboriamo con corrieri affidabili per offrire un servizio efficiente, tracciabile e puntuale.
Riceverai un link per seguire la spedizione in ogni fase, fino alla consegna.
Utilizziamo materiali protettivi di qualità e, ove possibile, imballaggi eco-friendly.
La nostra priorità è che il tuo acquisto arrivi senza sorprese, pronto all’uso.
16 altri prodotti nella stessa categoria:
name = 'rk_productreviews';
$this->tab = 'front_office_features';
$this->version = '1.3.1';
$this->author = 'Servizio Clienti Raim';
$this->need_instance = 0;
$this->bootstrap = true;
parent::__construct();
$this->displayName = $this->l('Recensioni e Stelline Raim');
$this->description = $this->l('Sistema Amazon Style con login obbligatorio e moderazione interna.');
$this->ps_versions_compliancy = array('min' => '1.7', 'max' => _PS_VERSION_);
}
public function install()
{
$sql = "CREATE TABLE IF NOT EXISTS `" . _DB_PREFIX_ . "rk_product_reviews` (
`id_rk_review` INT(11) NOT NULL AUTO_INCREMENT,
`id_product` INT(11) NOT NULL,
`id_customer` INT(11) NOT NULL,
`customer_name` VARCHAR(64) NOT NULL,
`grade` TINYINT(1) NOT NULL,
`comment` TEXT NOT NULL,
`active` TINYINT(1) DEFAULT 0,
`date_add` DATETIME NOT NULL,
PRIMARY KEY (`id_rk_review`)
) ENGINE=" . _MYSQL_ENGINE_ . " DEFAULT CHARSET=utf8;";
return Db::getInstance()->execute($sql) &&
parent::install() &&
$this->registerHook('displayFooterProduct') &&
$this->registerHook('displayProductButtons') &&
$this->registerHook('displayProductListReviews') &&
$this->registerHook('displayHeader');
}
public function uninstall()
{
return parent::uninstall();
}
public function getContent()
{
$output = '';
if (Tools::isSubmit('statusrk_product_reviews')) {
$id_review = (int)Tools::getValue('id_rk_review');
$current_status = Db::getInstance()->getValue('SELECT active FROM ' . _DB_PREFIX_ . 'rk_product_reviews WHERE id_rk_review = ' . $id_review);
$new_status = ($current_status == 1) ? 0 : 1;
Db::getInstance()->execute('UPDATE `' . _DB_PREFIX_ . 'rk_product_reviews` SET `active` = ' . $new_status . ' WHERE `id_rk_review` = ' . $id_review);
$output .= $this->displayConfirmation($this->l('Stato della recensione aggiornato con successo!'));
}
if (Tools::isSubmit('deleterk_product_reviews')) {
$id_review = (int)Tools::getValue('id_rk_review');
Db::getInstance()->execute('DELETE FROM `' . _DB_PREFIX_ . 'rk_product_reviews` WHERE `id_rk_review` = ' . $id_review);
$output .= $this->displayConfirmation($this->l('Recensione eliminata correttamente.'));
}
return $output . $this->renderAdminList();
}
protected function renderAdminList()
{
$fields_list = [
'id_rk_review' => ['title' => $this->l('ID'), 'align' => 'center', 'class' => 'fixed-width-xs'],
'customer_name' => ['title' => $this->l('Cliente')],
'grade' => ['title' => $this->l('Voto (1-5)'), 'align' => 'center'],
'comment' => ['title' => $this->l('Commento')],
'active' => ['title' => $this->l('Approvata'), 'active' => 'status', 'type' => 'bool', 'align' => 'center'],
'date_add' => ['title' => $this->l('Data Invio'), 'type' => 'datetime']
];
$helper = new HelperList();
$helper->shopLinkType = '';
$helper->simple_header = false;
$helper->actions = ['delete'];
$helper->identifier = 'id_rk_review';
$helper->title = $this->l('Moderazione Recensioni Raim');
$helper->table = 'rk_product_reviews';
$helper->token = Tools::getAdminTokenLite('AdminModules');
$helper->currentIndex = AdminController::$currentIndex . '&configure=' . $this->name;
$content = Db::getInstance()->executeS('SELECT * FROM `' . _DB_PREFIX_ . 'rk_product_reviews` ORDER BY `date_add` DESC');
return $helper->generateList($content, $fields_list);
}
protected function sendInternalNotification($customer_name, $id_product)
{
$product = new Product($id_product, false, $this->context->language->id);
$ct = new CustomerThread();
$ct->id_shop = (int)$this->context->shop->id;
$ct->id_contact = 0;
$ct->id_customer = (int)$this->context->customer->id;
$ct->id_order = 0;
$ct->id_product = (int)$id_product;
$ct->status = 'open';
$ct->email = $this->context->customer->email;
$ct->token = Tools::passwdGen(12);
$ct->add();
$cm = new CustomerMessage();
$cm->id_customer_thread = $ct->id;
$cm->message = "NUOVA RECENSIONE DA MODERARE - Cliente: $customer_name per il prodotto: " . $product->name;
$cm->ip_address = ip2long(Tools::getRemoteAddr());
$cm->add();
}
public function hookDisplayHeader()
{
$this->context->controller->registerStylesheet(
'modules-rkproductreviews',
'modules/'.$this->name.'/views/css/rk_productreviews.css'
);
}
public function hookDisplayProductListReviews($params)
{
$id_product = (int)$params['product']['id_product'];
$stats = $this->getReviewStats($id_product);
if ($stats['total'] <= 0) return;
$this->context->smarty->assign([
'avg_grade' => $stats['avg'],
'total_reviews' => $stats['total'],
'is_list' => true
]);
return $this->display(__FILE__, 'views/templates/hook/product_stars.tpl');
}
public function hookDisplayProductButtons($params)
{
$id_product = (int)Tools::getValue('id_product');
$stats = $this->getReviewStats($id_product);
$this->context->smarty->assign([
'avg_grade' => $stats['avg'],
'total_reviews' => $stats['total'],
'is_list' => false
]);
return $this->display(__FILE__, 'views/templates/hook/product_stars.tpl');
}
public function hookDisplayFooterProduct($params)
{
$id_product = (int)Tools::getValue('id_product');
$is_logged = $this->context->customer->isLogged();
if ($is_logged && Tools::isSubmit('submit_rk_review')) {
$this->processReview($id_product);
}
$reviews = Db::getInstance()->executeS('SELECT * FROM `' . _DB_PREFIX_ . 'rk_product_reviews` WHERE `id_product` = ' . $id_product . ' AND `active` = 1 ORDER BY `date_add` DESC');
$this->context->smarty->assign([
'reviews' => $reviews,
'id_product' => $id_product,
'logged' => $is_logged,
'login_url' => $this->context->link->getPageLink('authentication', true, null, ['back' => $_SERVER['REQUEST_URI']])
]);
return $this->display(__FILE__, 'views/templates/hook/product_footer.tpl');
}
protected function getReviewStats($id_product)
{
$sql = 'SELECT AVG(grade) as avg, COUNT(*) as total FROM `' . _DB_PREFIX_ . 'rk_product_reviews` WHERE `id_product` = ' . $id_product . ' AND `active` = 1';
$result = Db::getInstance()->getRow($sql);
$avg = (isset($result['avg']) && $result['avg'] !== null) ? round((float)$result['avg'], 1) : 0;
return [
'avg' => $avg,
'total' => (int)$result['total']
];
}
protected function processReview($id_product)
{
$grade = (int)Tools::getValue('rk_grade');
$comment = pSQL(Tools::getValue('rk_comment'));
$customer_name = $this->context->customer->firstname . ' ' . substr($this->context->customer->lastname, 0, 1) . '.';
if (!empty($comment) && $grade > 0) {
Db::getInstance()->insert('rk_product_reviews', [
'id_product' => (int)$id_product,
'id_customer' => (int)$this->context->customer->id,
'customer_name' => $customer_name,
'grade' => $grade,
'comment' => $comment,
'active' => 0,
'date_add' => date('Y-m-d H:i:s'),
]);
$this->sendInternalNotification($customer_name, $id_product);
$this->context->controller->confirmations[] = $this->l('Recensione inviata! Sarà visibile dopo la convalida del Servizio Clienti Raim.');
}
}
}