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

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

Видно только админу, вводим цену закупки, можно с текстом, сохраняем, и все ок. Иногда полезно, чтоб не искать в 1с постоянно

 

Приступим:

Выполняем запрос в БД

ALTER TABLE `s_products` ADD `zakupka` varchar(50) DEFAULT NULL

в /simpla/ProductAdmin.php ищем строчку 

$product->featured = $this->request->post('featured') 

и вставляете после нее 

$product->zakupka = $this->request->post('zakupka');

в /simpla/design/html/product.tpl ищите строка 610:

<!-- Левая колонка свойств товара -->
        <div id="column_left">

И ниже вставляете:

<!-- закупочная цена -->
        <div class="block layer">
                
                <ul>
                <li><div class="page_url" style="width: 83px;">ЗАКУПКА, {$currency->sign}</div><input class="name simpla_inp" name=zakupka type="text" value="{$product->zakupka|escape}" style="width: 100px;"/> </li>
                </ul>
        </div>
<!-- закупочная цена (The End)-->

 

в /api/products.php добавляем в функцию get_product (строка 112) ищем:

$query = "SELECT  
                                        p.id,
                                        p.url,

и после p.url, ниже вставляем:

 

p.zakupka,

 

Аналогично в этом же файле после строки 238. Готово

 

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

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

 

только если у вас 2 и больше вариантов товара с разными ценами? цены лучше прикреплять к вариантам как это сделано в симпла с ценой и скидочной ценой

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

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

 

только если у вас 2 и больше вариантов товара с разными ценами? цены лучше прикреплять к вариантам как это сделано в симпла с ценой и скидочной ценой

 Я не программист, и не разбираюсь в php/mysql  как вы. Знаю только слегка примерно что куда.

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

выполнить запрос к базе:

ALTER TABLE `s_variants` ADD `purchase_price` DECIMAL(14,2) NULL AFTER `compare_price`;

 

 затем в api/variants.php в функции get_variants() и get_variant() в запрос добавить поле v.purchase_price примерно так:
$query = $this->db->placehold("SELECT v.id, v.product_id , v.price, v.compare_price, v.purchase_price, ...

в /simpla/design/html/product.tpl после (строка ~572):

<li class="variant_discount">Старая, {$currency->sign}</li>

добавим в названия закупочную цену:

<li class="variant_price">Закупочная, {$currency->sign}</li>	

чуть ниже в этом же файле после (строка ~582):

<li class="variant_discount"><input name="variants[compare_price][]" type="text" value="{$variant->compare_price|escape}" /></li>

добавим нашу закупочную цену для существующего варианта товара:

<li class="variant_price"><input name="variants[purchase_price][]" type="text" value="{$variant->purchase_price|escape}" /></li>

ниже там же после (~строка 606):

<li class="variant_discount"><input name="variants[compare_price][]" type="" value="" /></li>

добавим закупочную цену для нового варианта (когда нажимаем на добавить вариант):

 

<li class="variant_price"><input name="variants[purchase_price][]" type="" value="" /></li>

чтобы вывести закупочную цену на общую страницу товаров нужно в /simpla/design/html/products.tpl после (~81 строка):

<input class="price {if $variant->compare_price>0}compare_price{/if}" type="text" name="price[{$variant->id}]" value="{$variant->price}" {if $variant->compare_price>0}title="Старая цена — {$variant->compare_price} {$currency->sign}"{/if} />{$currency->sign}  

вывести поле для закупочной цены каждого варианта:

<input class="price" type="text" name="purchase_price[{$variant->id}]" value="{$variant->purchase_price}" />{$currency->sign}

дальше в обработчик /simpla/ProductsAdmin.php после (~строка 65):

// Сохранение цен и наличия
$prices = $this->request->post('price');

добавить:

$purchase_prices = $this->request->post('purchase_price');

в этом же файле ниже фукцию (строка 70):

            foreach($prices as $id=>$price)
            {
                $stock = $stocks[$id];
                if($stock == '∞' || $stock == '')
                    $stock = null;
                    
                $this->variants->update_variant($id, array('price'=>$price, 'stock'=>$stock));
            }

 

заменить на:

foreach($prices as $id=>$price)
{
	$stock = $stocks[$id];
	$p_price = $purchase_prices[$id];
	if($stock == '∞' || $stock == '')
		$stock = null;
	$this->variants->update_variant($id, array('price'=>$price, 'purchase_price'=>$p_price, 'stock'=>$stock));
}
Изменено пользователем mishanya
Ссылка на сообщение
Поделиться на другие сайты

И хорошо бы новые поля обрабатывать в экспорте-импорте...

 

 

для експорта открыть файл simpla/ajax/export.php и после (строка 16)

'compare_price'=>    'Старая цена',

добавить:

'purchase_price'=>    'Закупочная цена',

далее после (строка 128):

$v['compare_price']   = $variant->compare_price;

добавить

$v['purchase_price']   = $variant->purchase_price;

 

 

для импорта открыть файл simpla/ajax/import.php и после (строка 18)

'compare_price'=>    array('compare price', 'старая цена'),

добавить

'purchase_price'=>    array('purchase price', 'закупочная цена'),

после (строка 189)

		if(isset($item['compare_price']))
			$variant['compare_price'] = trim($item['compare_price']);

добавить

		if(isset($item['purchase_price']))
			$variant['purchase_price'] = trim($item['purchase_price']);

все.

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

подскажите, это с 1С будет выгружаться?

 

выгружаться будет если вы настроите и добавите в обработчик 1c_exchange.php  а так нет

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

Приветствую mishanya  !

 

делал все по написанному  - но есть проблема

 

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

 причем из всех товаров сразу

 

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

выполнить запрос к базе:

ALTER TABLE `s_variants` ADD `purchase_price` DECIMAL(14,2) NULL AFTER `compare_price`;

 

 затем в api/variants.php в функции get_variants() и get_variant() в запрос добавить поле v.purchase_price примерно так:
$query = $this->db->placehold("SELECT v.id, v.product_id , v.price, v.compare_price, v.purchase_price, ...

в /simpla/design/html/product.tpl после (строка ~572):

<li class="variant_discount">Старая, {$currency->sign}</li>

добавим в названия закупочную цену:

<li class="variant_price">Закупочная, {$currency->sign}</li>	

чуть ниже в этом же файле после (строка ~582):

<li class="variant_discount"><input name="variants[compare_price][]" type="text" value="{$variant->compare_price|escape}" /></li>

добавим нашу закупочную цену для существующего варианта товара:

<li class="variant_price"><input name="variants[purchase_price][]" type="text" value="{$variant->purchase_price|escape}" /></li>

ниже там же после (~строка 606):

<li class="variant_discount"><input name="variants[compare_price][]" type="" value="" /></li>

добавим закупочную цену для нового варианта (когда нажимаем на добавить вариант):

 

<li class="variant_price"><input name="variants[purchase_price][]" type="" value="" /></li>

чтобы вывести закупочную цену на общую страницу товаров нужно в /simpla/design/html/products.tpl после (~81 строка):

<input class="price {if $variant->compare_price>0}compare_price{/if}" type="text" name="price[{$variant->id}]" value="{$variant->price}" {if $variant->compare_price>0}title="Старая цена — {$variant->compare_price} {$currency->sign}"{/if} />{$currency->sign}  

вывести поле для закупочной цены каждого варианта:

<input class="price" type="text" name="purchase_price[{$variant->id}]" value="{$variant->purchase_price}" />{$currency->sign}

дальше в обработчик /simpla/ProductsAdmin.php после (~строка 65):

// Сохранение цен и наличия$prices = $this->request->post('price');

добавить:

$purchase_prices = $this->request->post('purchase_price');

в этом же файле ниже фукцию (строка 70):

            foreach($prices as $id=>$price)            {                $stock = $stocks[$id];                if($stock == '∞' || $stock == '')                    $stock = null;                                    $this->variants->update_variant($id, array('price'=>$price, 'stock'=>$stock));            }

 

заменить на:

foreach($prices as $id=>$price){	$stock = $stocks[$id];	$p_price = $purchase_price[$id];	if($stock == '∞' || $stock == '')		$stock = null;	$this->variants->update_variant($id, array('price'=>$price, 'purchase_price'=>$p_price, 'stock'=>$stock));}

Приветствую mishanya  !

посмотрите?   я проблемку выше описал 

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

Проблемка возникает из-за того, что в предпоследней инструкции используется переменная $purchase_prices, а в последней - ДРУГАЯ переменная $purchase_price.  А должны быть одинаковые имена...

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

Круто, а можно сделать еще дополнительное поле, для поставщика? чтобы там отображалось название например ООО "Козявка"

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

Круто, а можно сделать еще дополнительное поле, для поставщика? чтобы там отображалось название например ООО "Козявка"

это нужно делать для товара, как выбор бренда, как по мне.

 

Проблемка возникает из-за того, что в предпоследней инструкции используется переменная $purchase_prices, а в последней - ДРУГАЯ переменная $purchase_price.  А должны быть одинаковые имена...

обновил, спасибо!

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

для експорта открыть файл simpla/ajax/export.php и после (строка 16)

'compare_price'=>    'Старая цена',

добавить:

'purchase_price'=>    'Закупочная цена',

далее после (строка 128):

$v['compare_price']   = $variant->compare_price;

добавить

$v['purchase_price']   = $variant->purchase_price;

 

 

для импорта открыть файл simpla/ajax/import.php и после (строка 18)

'compare_price'=>    array('compare price', 'старая цена'),

добавить

'purchase_price'=>    array('purchase price', 'закупочная цена'),

после (строка 189)

		if(isset($item['compare_price']))
			$variant['compare_price'] = trim($item['compare_price']);

добавить

		if(isset($item['purchase_price']))
			$variant['purchase_price'] = trim($item['purchase_price']);

все.

 

Мишаня, большое спасибо за вашу работу! Отличное исполнение

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

А можно ли добавить закупочную цену в таблицу s_purchases при выгрузке базы данных?

 

что значит добавить при выгрузке бызы? можно передавать закупочную цену при оформлении заказа в покупки.

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

я веду статистику в экселе путем выгрузки базы phpmyadmin таблицы purchases. В этой таблице есть номера заказов, товары, цены, шт и артикул. Было бы очень здорово в эту таблицу добавить закупочную цену

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

У меня небольшой прогресс, я выполнил запрос

ALTER TABLE `s_purchases` ADD `purchase_price` DECIMAL(14,2) NULL AFTER `sku`;

и создал в таблице purchases столбец с закупочной ценой, но он заполнен NULL. Подскажите пожалуйста как ему теперь передать существующие значения закупочной цены?

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

У меня небольшой прогресс, я выполнил запрос

ALTER TABLE `s_purchases` ADD `purchase_price` DECIMAL(14,2) NULL AFTER `sku`;

и создал в таблице purchases столбец с закупочной ценой, но он заполнен NULL. Подскажите пожалуйста как ему теперь передать существующие значения закупочной цены?

 

вам нужно при заказе передавать в эту цену в покупку. в файле api/Orders.php для ф-и add_purchase добавьте

 

if(!isset($purchase->purchase_price) && !empty($variant)) {
   $purchase->purchase_price = $variant->purchase_price;
}

тогда это поле будет заполняться но для новых заказов.

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

 

выполнить запрос к базе:

ALTER TABLE `s_variants` ADD `purchase_price` DECIMAL(14,2) NULL AFTER `compare_price`;

 

 затем в api/variants.php в функции get_variants() и get_variant() в запрос добавить поле v.purchase_price примерно так:
$query = $this->db->placehold("SELECT v.id, v.product_id , v.price, v.compare_price, v.purchase_price, ...

в /simpla/design/html/product.tpl после (строка ~572):

<li class="variant_discount">Старая, {$currency->sign}</li>

добавим в названия закупочную цену:

<li class="variant_price">Закупочная, {$currency->sign}</li>	

чуть ниже в этом же файле после (строка ~582):

<li class="variant_discount"><input name="variants[compare_price][]" type="text" value="{$variant->compare_price|escape}" /></li>

добавим нашу закупочную цену для существующего варианта товара:

<li class="variant_price"><input name="variants[purchase_price][]" type="text" value="{$variant->purchase_price|escape}" /></li>

ниже там же после (~строка 606):

<li class="variant_discount"><input name="variants[compare_price][]" type="" value="" /></li>

добавим закупочную цену для нового варианта (когда нажимаем на добавить вариант):

 

<li class="variant_price"><input name="variants[purchase_price][]" type="" value="" /></li>

чтобы вывести закупочную цену на общую страницу товаров нужно в /simpla/design/html/products.tpl после (~81 строка):

<input class="price {if $variant->compare_price>0}compare_price{/if}" type="text" name="price[{$variant->id}]" value="{$variant->price}" {if $variant->compare_price>0}title="Старая цена — {$variant->compare_price} {$currency->sign}"{/if} />{$currency->sign}  

вывести поле для закупочной цены каждого варианта:

<input class="price" type="text" name="purchase_price[{$variant->id}]" value="{$variant->purchase_price}" />{$currency->sign}

дальше в обработчик /simpla/ProductsAdmin.php после (~строка 65):

// Сохранение цен и наличия
$prices = $this->request->post('price');

добавить:

$purchase_prices = $this->request->post('purchase_price');

в этом же файле ниже фукцию (строка 70):

            foreach($prices as $id=>$price)
            {
                $stock = $stocks[$id];
                if($stock == '∞' || $stock == '')
                    $stock = null;
                    
                $this->variants->update_variant($id, array('price'=>$price, 'stock'=>$stock));
            }

 

заменить на:

foreach($prices as $id=>$price)
{
	$stock = $stocks[$id];
	$p_price = $purchase_prices[$id];
	if($stock == '∞' || $stock == '')
		$stock = null;
	$this->variants->update_variant($id, array('price'=>$price, 'purchase_price'=>$p_price, 'stock'=>$stock));
}

Подскажите как вывести это поле на странице корзины?

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

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

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

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

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

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

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

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

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

Загрузка...
×
×
  • Создать...