Перейти к содержанию
Официальный форум поддержки Simpla

Ввод цен вариантов в любой удобной валюте(поставки в евро-долларах)


Перейти к решению Решено ExtraBash,

Рекомендуемые сообщения

  • Ответов 142
  • Дата создания
  • Последний ответ

Лучшие авторы в теме

Лучшие авторы в теме

Изображения в теме

В denver показывает ошибку 

Warning: Invalid argument supplied for foreach() in Z:\home\site\www\simpla\ProductsAdmin.php on line 75

Так а что у вас на этой строке в этом файле?

 

перевод гласит неправильный аргумент для foreach

Ссылка на сообщение
Поделиться на другие сайты

Так а что у вас на этой строке в этом файле?

 

перевод гласит неправильный аргумент для foreach

foreach($prices as $id=>$price)

пункт 2.4.3

Ссылка на сообщение
Поделиться на другие сайты

для начала перед
 

foreach($prices as $id=>$price)

print_r('<pre>');
print_r($prices);

покажет приходит ли массив с ценами от инпута price[]

 

Если нет данных из него, смотрите сам инпут

 

 

Ставить просто нет желания, если хотите пишите в личку помогу бесплатно.

Ссылка на сообщение
Поделиться на другие сайты
  • 2 недели спустя...

У меня проблема. Все установил. Все работает. Но при сохранении нового товара или при изменении старого. Добавляются пустые варианты товар. Причем кол-во пустых совпадает с кол-вом нормальных 

 

Ссылка на сообщение
Поделиться на другие сайты

У меня проблема. Все установил. Все работает. Но при сохранении нового товара или при изменении старого. Добавляются пустые варианты товар. Причем кол-во пустых совпадает с кол-вом нормальных 

 

Скорее всего где-то скобку не закрыли. Пересмотрите еще раз код.

Ссылка на сообщение
Поделиться на другие сайты

 

Хорошо сделал и молодец что выложил с подробным описанием. Рекомендую проделать немного по другому в файле api/Variants.php создай функцию для пересчета цен и постоянно обращайся к ней в функциях get_variants, get_variant.

Пример моей реализации:

А как реализовать такое количество типов цен? 

Ссылка на сообщение
Поделиться на другие сайты

Ребята, я внес небольшие правки, добавились несколько стилей, обрамили в шаблоне Products.tpl нашу новую строчку в  div.old_wrap:

 <div class="old_wrap">
	<div class="old_price">
	<div class="op_cover"
	{if $variant->compare_price>0}title="Старая цена — {$variant->compare_price} {$currency->sign}"{elseif $variant->base_compare_price>0}title="Старая цена — {$variant->base_compare_price} {$currency->sign}"{/if}></div>
	<input  
	type="text" 
	name="price[{$variant->id}]" 
	value="{if $variant->currency}{if $variant->base_price}{$variant->base_price*$currencies[$variant->currency]->rate_to/$currencies[$variant->currency]->rate_from|escape}{else}{$variant->price*$currencies[$variant->currency]->rate_to/$currencies[$variant->currency]->rate_from|escape}{/if}{else}{$variant->price}{/if}"/>	
	</div>
	
	<input class="stock" type="text" name="stock[{$variant->id}]" value="{if $variant->infinity}?{else}{$variant->stock}{/if}" /><span class="v_unit">{$settings->units}</span>
</div>

Два новых стиля, первый ясно откуда, второй для того чтобы в Product.tpl не съезжала кнопка загрузки электронного контента:

.old_wrap {
	float: right;
	width: 182px;
}
#variants_block li.variant_download {
	width: 50px;
}

 


Упростил метод обновления цен на сайте при изменении валюты, он стал значительно проще:

2.5. Решение проблемы обновления расчетных цен на сайте.

(кто использовал старое - Функцию update_currency в api/Money.php меняем на стандартную)


Будем менять /simpla/CurrencyAdmin.php

 

При обновлении измененной валюты обновим и все варианты с такой-же валютой,

начало и конец заменяемого кода обрамлены неизменными частями кода, обратите внимание, в 2.3.6

самое начало кода выглядит не совсем так, так что отчеркрутое слешами не советую копировать:

foreach($this->request->post('currency') as $n=>$va)
	foreach($va as $i=>$v)
		$currencies[$i]->$n = $v;
 
//////////////////////////////////////////////////////////////
 
$currencies_ids = array();
foreach($currencies as $currency)
{
	if($currency->id)
	{
		$this->money->update_currency($currency->id, $currency);
		$this->db->query("UPDATE __variants SET price=base_price*? WHERE currency=?"  , $currency->rate_to/$currency->rate_from, $currency->id);
	}
	else
		$currency->id = $this->money->add_currency($currency);
	$currencies_ids[] = $currency->id;
}
 
//////////////////////////////////////////////////////////////
 
// Удалить непереданные валюты
$query = $this->db->placehold('DELETE FROM __currencies WHERE id NOT IN(?@)', $currencies_ids);
$this->db->query($query);

 

 

Пока всё, позже может еще чего допилю, как будет время.

Ссылка на сообщение
Поделиться на другие сайты

Упростил метод обновления цен на сайте при изменении валюты, он стал значительно проще:

2.5. Решение проблемы обновления расчетных цен на сайте.

Да, стало лучше в плане рациональности.

Но в плане правильности метода и надежности работы практически ничего не изменилось.

Метод правильно работает лишь в простейших случаях.

 

Рекомендуется пользоваться с осторожностью. В некоторых ситуациях предлагаемая доработка может сильно испортить данные по ценам. В теме мной уже сообщалось об этом с полмесяца тому назад, автор пока этого замечать не желает.

Ссылка на сообщение
Поделиться на другие сайты
  • 4 недели спустя...

Ребята, я внес небольшие правки, добавились несколько стилей, обрамили в шаблоне Products.tpl нашу новую строчку в  div.old_wrap:

 <div class="old_wrap">
	<div class="old_price">
	<div class="op_cover"
	{if $variant->compare_price>0}title="Старая цена — {$variant->compare_price} {$currency->sign}"{elseif $variant->base_compare_price>0}title="Старая цена — {$variant->base_compare_price} {$currency->sign}"{/if}></div>
	<input  
	type="text" 
	name="price[{$variant->id}]" 
	value="{if $variant->currency}{if $variant->base_price}{$variant->base_price*$currencies[$variant->currency]->rate_to/$currencies[$variant->currency]->rate_from|escape}{else}{$variant->price*$currencies[$variant->currency]->rate_to/$currencies[$variant->currency]->rate_from|escape}{/if}{else}{$variant->price}{/if}"/>	
	</div>
	
	<input class="stock" type="text" name="stock[{$variant->id}]" value="{if $variant->infinity}?{else}{$variant->stock}{/if}" /><span class="v_unit">{$settings->units}</span>
</div>

Два новых стиля, первый ясно откуда, второй для того чтобы в Product.tpl не съезжала кнопка загрузки электронного контента:

.old_wrap {
	float: right;
	width: 182px;
}
#variants_block li.variant_download {
	width: 50px;
}

 

 

Упростил метод обновления цен на сайте при изменении валюты, он стал значительно проще:

2.5. Решение проблемы обновления расчетных цен на сайте.

(кто использовал старое - Функцию update_currency в api/Money.php меняем на стандартную)

 

Будем менять /simpla/CurrencyAdmin.php

 

При обновлении измененной валюты обновим и все варианты с такой-же валютой,

начало и конец заменяемого кода обрамлены неизменными частями кода, обратите внимание, в 2.3.6

самое начало кода выглядит не совсем так, так что отчеркрутое слешами не советую копировать:

foreach($this->request->post('currency') as $n=>$va)
	foreach($va as $i=>$v)
		$currencies[$i]->$n = $v;
 
//////////////////////////////////////////////////////////////
 
$currencies_ids = array();
foreach($currencies as $currency)
{
	if($currency->id)
	{
		$this->money->update_currency($currency->id, $currency);
		$this->db->query("UPDATE __variants SET price=base_price*? WHERE currency=?"  , $currency->rate_to/$currency->rate_from, $currency->id);
	}
	else
		$currency->id = $this->money->add_currency($currency);
	$currencies_ids[] = $currency->id;
}
 
//////////////////////////////////////////////////////////////
 
// Удалить непереданные валюты
$query = $this->db->placehold('DELETE FROM __currencies WHERE id NOT IN(?@)', $currencies_ids);
$this->db->query($query);

 

 

Пока всё, позже может еще чего допилю, как будет время.

Можно ли сделать чтоб еще в карточке товара или на весь товар в категории можно было изменять курс валют? Например: Общий курс евро в интернет-магазине 23грн. но у меня есть позиции товара которым нужно задать курс евро 19грн.

Ссылка на сообщение
Поделиться на другие сайты

Можно ли сделать чтоб еще в карточке товара или на весь товар в категории можно было изменять курс валют? Например: Общий курс евро в интернет-магазине 23грн. но у меня есть позиции товара которым нужно задать курс евро 19грн.

Создай еще 1 валюту, назови ее евро2 и сделай товары по 19 - евро2.

Ссылка на сообщение
Поделиться на другие сайты

Спасибо за код, все работает, но столкнулся с 2-мя проблемами, при добавлении в ручную товар, при сохранении карточки появляеются пустые поля где артикул и т.д. Если импортировать товар, то в карточке товара не отображается артикул. В чем может быть проблема подскажите плиз

Ссылка на сообщение
Поделиться на другие сайты

Спасибо за код, все работает, но столкнулся с 2-мя проблемами, при добавлении в ручную товар, при сохранении карточки появляеются пустые поля где артикул и т.д. Если импортировать товар, то в карточке товара не отображается артикул. В чем может быть проблема подскажите плиз

Напишите в скайп, обсудим. abashyrov

Ссылка на сообщение
Поделиться на другие сайты
  • 1 месяц спустя...

Господа, нашел ошибку в пункте 2.5 в файле simpla/CurrencyAdmin.php

Забыл обновить цены скидочные, правильный запрос:

$this->db->query("UPDATE __variants SET price=base_price*?, compare_price=base_compare_price*? WHERE currency=?"  , $currency->rate_to/$currency->rate_from, $currency->rate_to/$currency->rate_from, $currency->id);


П.С.
Вопрос к местным - стало нельзя редактировать свои старые сообщения?
Мне нужно полную инструкцию поправить.

Изменено пользователем ExtraBash
Ссылка на сообщение
Поделиться на другие сайты
  • 2 недели спустя...

что то этот модуль все спортил!!!

Не понял, что испортил? Давай подробности.

У всех работает...

Ссылка на сообщение
Поделиться на другие сайты

Не понял, что испортил? Давай подробности.

У всех работает...

 

Логика уже работает нормально, я изначально не понял логику... все цены слетели, я так и не понял, моя была ли вина или нет. Но это не проблема, одним запросом в БД вылечил.

 

сделал все по инструкции, но:

1. в карточке товара в админке исчез диск и кол-во товара, поправил

2. в карточке товара в админке при добавлении нового варианта отсутствуют поля с выбором валюты и ценой пересчета, поправил.

3. изменил базовые стили, ибо все поля не вмещались в одну строку (с диском и кол-вом товара на складе)

Изменено пользователем cernos
Ссылка на сообщение
Поделиться на другие сайты

Логика уже работает нормально, я изначально не понял логику... все цены слетели, я так и не понял, моя была ли вина или нет. Но это не проблема, одним запросом в БД вылечил.

 

сделал все по инструкции, но:

1. в карточке товара в админке исчез диск и кол-во товара, поправил

2. в карточке товара в админке при добавлении нового варианта отсутствуют поля с выбором валюты и ценой пересчета, поправил.

3. изменил базовые стили, ибо все поля не вмещались в одну строку (с диском и кол-вом товара на складе)

Ну ничосе ты хакер)))

 

1. Странно, видимо лишнего заменил

2. Ага

3. Можно любоваться)

Ссылка на сообщение
Поделиться на другие сайты

Желательно все эти изменения внести сразу : )

 

Дополнение хорошее, логика в принципе отличная, когда себе делал, по другому сделал, более замудренно.

Одно только но, в запросе у тебя есть "ADD `currency` TEXT,"

замени TEXT на varchar 255 - зачем этому полю более 10 000 символов? ))) Не принципиально в данном случае, но правильнее будет varchar

Ссылка на сообщение
Поделиться на другие сайты

Логика уже работает нормально, я изначально не понял логику... все цены слетели, я так и не понял, моя была ли вина или нет.

Но в плане правильности метода и надежности работы практически ничего не изменилось.

Метод правильно работает лишь в простейших случаях.

 

Рекомендуется пользоваться с осторожностью. В некоторых ситуациях предлагаемая доработка может сильно испортить данные по ценам. В теме мной уже сообщалось об этом с полмесяца тому назад, автор пока этого замечать не желает.

Ссылка на сообщение
Поделиться на другие сайты

 

Логика уже работает нормально, я изначально не понял логику... все цены слетели, я так и не понял, моя была ли вина или нет.

>>Но в плане правильности метода и надежности работы практически ничего не изменилось.

Метод правильно работает лишь в простейших случаях.

 

Рекомендуется пользоваться с осторожностью. В некоторых ситуациях предлагаемая доработка может сильно испортить данные по ценам. В теме мной уже сообщалось об этом с полмесяца тому назад, автор пока этого замечать не желает.

 

В некотором плане соглашусь, в некотором нет.

 

У меня логика более сложна, тобишь в моей реализации цены хранятся в валюте, а при выводе в запросе уже перемножаются в валюту магазина. С одной стороны - это правильно, с другой стороны мне пришлось править слишком много запросов связанных с отображением товара + нагрузка на БД.

 

В данном примере цены уже хранятся пересчитанные, что конечно может повлечь проблемы с неправильным обращением, но значительно упрощает установку + снижает нагрузку на БД.

Изменено пользователем cernos
Ссылка на сообщение
Поделиться на другие сайты

Корс Просто продает свою, там проработан более качественно функционал CurrencyAdmin, если я все правильно понимаю...

Изменено пользователем ExtraBash
Ссылка на сообщение
Поделиться на другие сайты

Автору безграничный респект!

 

Но в шапке последнее верное решение? пилю, пилю.... и все криво :) Я ясен пень нуб в вебдеве, но в кризис приходится вспоминать уроки информатики :)

 

 

в товарах вроде норм:

Изменено пользователем RusLi
Ссылка на сообщение
Поделиться на другие сайты

Незаменимое дополнение в данный период, когда курс валют постоянно меняется.Все отлично работает, спасибо.

Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...

×
×
  • Создать...