Jump to content

Recommended Posts

Видно только админу, вводим цену закупки, можно с текстом, сохраняем, и все ок. Иногда полезно, чтоб не искать в 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. Готово

 

Link to post
Share on other sites

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

 

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

Link to post
Share on other sites

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

 

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

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

Link to post
Share on other sites
  • Solution

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

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));
}
Edited by mishanya
Link to post
Share on other sites

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

 

 

для експорта открыть файл 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']);

все.

Edited by mishanya
Link to post
Share on other sites

все.

Несколько самоуверенно.

 

Еще можно было бы в комментарий на странице импорта вывести новое поле...

Link to post
Share on other sites
  • 3 weeks later...
  • 3 weeks later...

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

 

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

 

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

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

 

Link to post
Share on other sites

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

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  !

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

Link to post
Share on other sites

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

Link to post
Share on other sites

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

Link to post
Share on other sites

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

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

 

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

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

Link to post
Share on other sites
  • 1 year later...

для експорта открыть файл 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']);

все.

 

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

Link to post
Share on other sites
  • 2 weeks later...

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

 

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

Link to post
Share on other sites

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

Link to post
Share on other sites

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

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

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

Link to post
Share on other sites

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

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;
}

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

Edited by mishanya
Link to post
Share on other sites
  • 11 months later...

 

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

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));
}

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

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...