trainracing Posted May 27, 2015 Report Share Posted May 27, 2015 Видно только админу, вводим цену закупки, можно с текстом, сохраняем, и все ок. Иногда полезно, чтоб не искать в 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. Готово Quote Link to post Share on other sites
mishanya Posted May 27, 2015 Report Share Posted May 27, 2015 круто, только вы сделали просто дополнительное поле для товара, в которое можно вписать что угодно. только если у вас 2 и больше вариантов товара с разными ценами? цены лучше прикреплять к вариантам как это сделано в симпла с ценой и скидочной ценой Quote Link to post Share on other sites
trainracing Posted May 28, 2015 Author Report Share Posted May 28, 2015 круто, только вы сделали просто дополнительное поле для товара, в которое можно вписать что угодно. только если у вас 2 и больше вариантов товара с разными ценами? цены лучше прикреплять к вариантам как это сделано в симпла с ценой и скидочной ценой Я не программист, и не разбираюсь в php/mysql как вы. Знаю только слегка примерно что куда. Quote Link to post Share on other sites
aleksoid Posted May 28, 2015 Report Share Posted May 28, 2015 А есть мысли, как это реализовать для вариантов товаров? и чтобы на общей странице продуктов редактировалось? Quote Link to post Share on other sites
Solution mishanya Posted May 28, 2015 Solution Report Share Posted May 28, 2015 (edited) выполнить запрос к базе: 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 July 4, 2015 by mishanya Quote Link to post Share on other sites
Kors Posted May 28, 2015 Report Share Posted May 28, 2015 И хорошо бы новые поля обрабатывать в экспорте-импорте... Quote Link to post Share on other sites
mishanya Posted May 29, 2015 Report Share Posted May 29, 2015 (edited) И хорошо бы новые поля обрабатывать в экспорте-импорте... для експорта открыть файл 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 July 4, 2015 by mishanya Quote Link to post Share on other sites
Kors Posted May 29, 2015 Report Share Posted May 29, 2015 все.Несколько самоуверенно. Еще можно было бы в комментарий на странице импорта вывести новое поле... Quote Link to post Share on other sites
chubr Posted June 16, 2015 Report Share Posted June 16, 2015 подскажите, это с 1С будет выгружаться? Quote Link to post Share on other sites
shooroop Posted June 16, 2015 Report Share Posted June 16, 2015 подскажите, это с 1С будет выгружаться? выгружаться будет если вы настроите и добавите в обработчик 1c_exchange.php а так нет Quote Link to post Share on other sites
Tshcheglov Posted July 3, 2015 Report Share Posted July 3, 2015 Приветствую mishanya ! делал все по написанному - но есть проблема если на общей странице товаров поменять закупочную цену , то товар сохраняется , но закупочная цена при этом просто удаляется причем из всех товаров сразу Quote Link to post Share on other sites
Tshcheglov Posted July 3, 2015 Report Share Posted July 3, 2015 выполнить запрос к базе: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 !посмотрите? я проблемку выше описал Quote Link to post Share on other sites
Kors Posted July 3, 2015 Report Share Posted July 3, 2015 Проблемка возникает из-за того, что в предпоследней инструкции используется переменная $purchase_prices, а в последней - ДРУГАЯ переменная $purchase_price. А должны быть одинаковые имена... Quote Link to post Share on other sites
LUN Posted July 3, 2015 Report Share Posted July 3, 2015 Круто, а можно сделать еще дополнительное поле, для поставщика? чтобы там отображалось название например ООО "Козявка" Quote Link to post Share on other sites
mishanya Posted July 4, 2015 Report Share Posted July 4, 2015 Круто, а можно сделать еще дополнительное поле, для поставщика? чтобы там отображалось название например ООО "Козявка"это нужно делать для товара, как выбор бренда, как по мне. Проблемка возникает из-за того, что в предпоследней инструкции используется переменная $purchase_prices, а в последней - ДРУГАЯ переменная $purchase_price. А должны быть одинаковые имена...обновил, спасибо! Quote Link to post Share on other sites
Tshcheglov Posted July 6, 2015 Report Share Posted July 6, 2015 Вот спасибо !теперь всё отлично Quote Link to post Share on other sites
Sharfik Posted December 12, 2016 Report Share Posted December 12, 2016 для експорта открыть файл 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']); все. Мишаня, большое спасибо за вашу работу! Отличное исполнение Quote Link to post Share on other sites
Sharfik Posted December 24, 2016 Report Share Posted December 24, 2016 А можно ли добавить закупочную цену в таблицу s_purchases при выгрузке базы данных? Quote Link to post Share on other sites
mishanya Posted December 24, 2016 Report Share Posted December 24, 2016 А можно ли добавить закупочную цену в таблицу s_purchases при выгрузке базы данных? что значит добавить при выгрузке бызы? можно передавать закупочную цену при оформлении заказа в покупки. Quote Link to post Share on other sites
Sharfik Posted December 24, 2016 Report Share Posted December 24, 2016 я веду статистику в экселе путем выгрузки базы phpmyadmin таблицы purchases. В этой таблице есть номера заказов, товары, цены, шт и артикул. Было бы очень здорово в эту таблицу добавить закупочную цену Quote Link to post Share on other sites
Sharfik Posted December 28, 2016 Report Share Posted December 28, 2016 У меня небольшой прогресс, я выполнил запросALTER TABLE `s_purchases` ADD `purchase_price` DECIMAL(14,2) NULL AFTER `sku`;и создал в таблице purchases столбец с закупочной ценой, но он заполнен NULL. Подскажите пожалуйста как ему теперь передать существующие значения закупочной цены? Quote Link to post Share on other sites
mishanya Posted December 28, 2016 Report Share Posted December 28, 2016 (edited) У меня небольшой прогресс, я выполнил запрос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 December 28, 2016 by mishanya Quote Link to post Share on other sites
Sharfik Posted December 29, 2016 Report Share Posted December 29, 2016 Мишаня! БОЛЬШОЕ СПАСИБО!! Куда можно благодарность направить? Quote Link to post Share on other sites
kislotnik Posted December 5, 2017 Report Share Posted December 5, 2017 выполнить запрос к базе: 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)); } Подскажите как вывести это поле на странице корзины? Quote Link to post Share on other sites
mishanya Posted December 5, 2017 Report Share Posted December 5, 2017 Подскажите как вывести это поле на странице корзины?видимо $purchase->variant->purchase_price Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.