• Ласкаво просимо на Спільнота для обміну досвідом між користувачами програм УкрБланк, УкрСклад, УкрЗарплата.
 

Ціна товару , націнка на новий товар !!!

Автор vhid, Вересень 20, 2012, 21:07:14

Попередня тема - Наступна тема

0 Користувачі і 10 Гостей дивляться цю тему.

Creat

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

admin

Цитата: TheOK від Жовтень 17, 2012, 16:15:44
Да, о доступе из шаблонов документов, чтобы можно было проще организовывать выборку и избежать ошибок, если есть товар, клиенты, документы с одинаковыми данными. Конечно, эти данные есть на закладке Поля БД, однако, я отношусь к ним, как к переменным с непредвиденным поведением, да и доступа к ним нет в режиме редактирования.

Даже и не знаю появятся они или нет, переменная будет неверная при создании нового документа, т.к. на момент создания документа, программа еще не знает будущий ID, а уже в момент нажатия на кнопку "Сохранить" получает идентификатор. Разве по связке дата + номер документа не получиться  отловить? Даже если и появиться, то сроки назвать не можем.

Цитата: TheOK від Жовтень 17, 2012, 16:15:44
Как я понимаю, величина наценки для цены в документе приходная накладная, даст возможность не изменять структуру базы, а анализировать пришедший товар на предмет изменения розничной цены для него путем анализа разницы цены в документе (той, которая рассчитывается согласно правил наценки в программе исходя из цен на товар в приходной накладной и текущей расходной). Мне кажется, что это более простой вариант.
Может быть есть функция, которая возвращает расходную цену на основании приходной и ее можно сделать доступной в шаблоне?

Не думаю что это будет более простой вариант + больше будет нагрузки на базу/проц (может и незначительно, надо пробовать), ничего страшного в создании пользовательского триггера и таблицы нет. Хотя вам видней, может именно вам так будет удобней.

Функцию наценки просто так не вынести в документ, она просто идет проходом по группе или по всем группам, а не на товар. Плюс думаю никому больше не понадобиться кроме Вас.

Цитата: Creat від Жовтень 17, 2012, 16:23:56
Это не автомат но очень удобно и упростит работу.

Это даже тут не автомат:

Цитата: Creat від Жовтень 16, 2012, 09:16:11
На данный момент программа внедрена на магазине одежды, где поток и ассортимент товаров не очень большой.

А будет больше клиентов и товаров, будет просто рутина.

admin

#32
В общем много полемики  :)

1. Делаем ОБЯЗАТЕЛЬНО резерв базы данных.
2. Обязательно делаем п.1
3. Заходим в меню Опции : SQL менеджер и выполняем подряд все эти запросы, по !!!одному!!! т.е. скопировали один клацнули Выполнить, скопировали второй клацнули Выполнить и т.д.

CREATE GENERATOR usr_gen_tovar_cena_change_id;

CREATE TABLE usr_tovar_cena_change
(
  num tnum NOT NULL,
  tovar_id tnum NOT NULL,
  change_date tdate,
  cena_r_old tmoney,
  cena_r tmoney,
  is_update tnum
);


ALTER TABLE usr_tovar_cena_change ADD PRIMARY KEY (num);

CREATE OR ALTER TRIGGER usr_tovar_cena_change_bi FOR usr_tovar_cena_change
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  IF (NEW.num IS NULL) THEN
    NEW.num = GEN_ID(usr_gen_tovar_cena_change_id,1);
END


CREATE TRIGGER usr_cena_change_ai FOR tovar_name
ACTIVE AFTER INSERT POSITION 0
AS
BEGIN
  INSERT INTO usr_tovar_cena_change
    (tovar_id, change_date, cena_r, is_update)
  VALUES
    (NEW.num, CURRENT_TIMESTAMP, NEW.cena_r, 0);
END


CREATE TRIGGER usr_cena_change_au FOR tovar_name
ACTIVE AFTER UPDATE POSITION 0
AS
BEGIN
  IF (NEW.cena_r != OLD.cena_r) THEN
    INSERT INTO usr_tovar_cena_change
      (tovar_id, change_date, cena_r_old, cena_r, is_update)
    VALUES
      (NEW.num, CURRENT_TIMESTAMP, OLD.cena_r, NEW.cena_r, 1);
END


4. Все готово, думаю дальше понятно как сделать связку по товарам, например

SELECT
  ch.*,
  tn.kod,
  tn.name
FROM
  usr_tovar_cena_change ch
    LEFT JOIN tovar_name tn ON (ch.tovar_id = tn.num)


По полям:
  tovar_id  - идентификатор товара
  change_date - точное время изменения цены,
  cena_r_old  - старая цена если цена обновлялась, если новый товар тогда поле NULL
  cena_r - новая цена
  is_update - если 1 то цена менялась в уже существующем товаре, если 0 то это новый товар добавлялся.


Захотите все поставить на место т.е. удалить все пользовательские таблицы, генераторы, триггеры, выполните по порядку:

DROP TRIGGER usr_cena_change_au;

DROP TRIGGER usr_cena_change_ai;

DROP TRIGGER usr_tovar_cena_change_bi;

DROP TABLE usr_tovar_cena_change;

DROP GENERATOR usr_gen_tovar_cena_change_id;

Creat

Мне тёмному понятно что получим пользовательскую таблицу в которой будет записано когда менялась розничная цена на товар.
Это красивое решение, но требующее понимания в SQL.
Потом можно создать отчёт и всё это анализировать.
Для TheOK здесь всё понятно. А мне слишком сложно.
Кроме того мне надо понять вообще стоить ставить новую цену или нет. И соображения тут тоже разные, от того как продавался этот товар раньше и в каком качестве он пришёл в эту поставку. Отправная точка наценка на группу.
Но всё же может ещё подскажите - как выбрать наценку на товар в накладную?

TheOK

Я вечером посмотрю, отпишусь.
Как по мне, оба механизма имеют свою ценность. Способ с созданием дополнительных таблиц, механизм  мощный и довольно удобный (можно быстрее анализировать данные, т.к. все данные можно вывести в один отчет). Однако, Create прав, под это нужно писать отдельный отчет .Мне кажется, что именно отчет будет более интересен в данном случае, т.к. можно проанализировать за один раз все накладные за день, а не по одной (как через шаблон документов).
Отчет не очень сложный, смогу накидать запрос на выборку приходных накладных за день и изменения цены на товар в накладных. Но, на данный момент Create ориентируется на другой способ.
Вечером гляну, на каком способе он остановился, в том направлении и будем двигаться.

P.S. мне такой функционал не нужен, ориентируйтесь на Create, я просто участвую в обсуждении
Работа в УкрСклад(особенности и советы): [url="//www.softbalance.com.ua/forum/index.php/topic,2362.0.html"]www.softbalance.com.ua/forum/index.php/topic,2362.0.html[/url]
Некоторые мои отчеты можно найти здесь: [url="http://www.softbalance.com.ua/forum/index.php/topic,2307.0.html"]http://www.softbalance.com.ua/forum/index.php/topic,2307.0.html[/url]

Creat

Цитата: TheOK від Жовтень 17, 2012, 18:24:11
Как по мне, оба механизма имеют свою ценность. Способ с созданием дополнительных таблиц, механизм  мощный и довольно удобный (можно быстрее анализировать данные, т.к. все данные можно вывести в один отчет). Однако, Create прав, под это нужно писать отдельный отчет .Мне кажется, что именно отчет будет более интересен в данном случае, т.к. можно проанализировать за один раз все накладные за день, а не по одной (как через шаблон документов).
Отчет не очень сложный, смогу накидать запрос на выборку приходных накладных за день и изменения цены на товар в накладных. Но, на данный момент Create ориентируется на другой способ.
Вечером гляну, на каком способе он остановился, в том направлении и будем двигаться.

P.S. мне такой функционал не нужен, ориентируйтесь на Create, я просто участвую в обсуждении

Этот отчёт удобен если в конце дня проанализировать все накладные и определить все товары на которые надо напечатать ценники. И это конечно интересно и полезно.

Но именно для проведения наценки переоценки интересен вариант из накладной. Я уже и сделал шаблон. Осталось только определить прогнозную розничную цену.

Я считаю, что способы дополняют друг друга. Через накладную логично определиться с розничной ценой, а через отчёт напечатать ценники.

TheOK

#36
Выложите свой шаблон документа, я в него буду выводить необходимые данные (сделайте отдельное поле, куда выводить цену с наценкой, взятой из группы товаров).
И еще момент. Приходные накладные со скидкой у вас бывают? Как-то не хочется рассчитывать приходную цену товара со скидкой)))

Ограничение:
1) Возможно, придется производить печать уже сохраненного документа (т.е. не в режиме редактирования приходной накладной)
2) Наценка будет браться только из наценок по группам (наценка, для товаров, для которых наценка по группе не выставлена будет считаться нулевой)


Если какие-то из ограничений критичны, пишите
Работа в УкрСклад(особенности и советы): [url="//www.softbalance.com.ua/forum/index.php/topic,2362.0.html"]www.softbalance.com.ua/forum/index.php/topic,2362.0.html[/url]
Некоторые мои отчеты можно найти здесь: [url="http://www.softbalance.com.ua/forum/index.php/topic,2307.0.html"]http://www.softbalance.com.ua/forum/index.php/topic,2307.0.html[/url]

Creat

Со скидкой редко, но бывают. И собственники в цене товара её не учитывают, т.е.  наценивают без учёта скидки. Считают, что скидка это уже их заработок ^-^

1) Если печать уже сохранённого, то ничего страшного. Но тогда надо учитывать, что в остатке на складе уже будут товары из этой приходной накладной. Это я и сам смогу отминусовать. Ну и ещё я подумал, что можно и поставить автоматическое корректирование цены товара - только если новая цена больше - для автоматического сохранения приходной цены. Тогда при сохранении документа будет затираться старая цена. Это конечно не критично, но усложнит.

2) Наценка только из наценок по группам.

TheOK

#38
Сегодня вечером скину шаблон сюда.
Хорошо, что считается, что скидка - это прибыль, т.к. не придется расчитывать стоимость цены для товара со скидкой.
Печатать нужно будет сохраненный вариант, однако не проведенный если стоит корректировка цены, если не стоит корректировка цены из документа то можно как проведенный документ так и нет (это вы уже решите сами).
Еще можно будет задать выделение цветом, которое зависит от разницы на цену. Например, выделять цветом поле с ценой, если: цена пришедшего товара до 100 грн, и разница между ценами более 1 грн или цена пришедшего товара до 1000 грн и разница между ценами более 5 грн. (и т.д.).
Работа в УкрСклад(особенности и советы): [url="//www.softbalance.com.ua/forum/index.php/topic,2362.0.html"]www.softbalance.com.ua/forum/index.php/topic,2362.0.html[/url]
Некоторые мои отчеты можно найти здесь: [url="http://www.softbalance.com.ua/forum/index.php/topic,2307.0.html"]http://www.softbalance.com.ua/forum/index.php/topic,2307.0.html[/url]

Creat

#39
Что удивительно интерес к вопросу слабенький. Народ как-то приспособился и не возникают такие вопросы. Хотя судя по тексту используют программу для достаточно больших магазинов.
И ещё проверил для спортивного интереса если документ не проводить, но сохранять и выставлено автоматическая корректировка цены , то цену меняет.
Спасибо жду.

TheOK

#40
Во вложениях архив с двумя шаблонами (портретная и альбомная ориентация).
Ваш немножко подкорректировал, чтобы лучше переносился в Excel.
Обратите внимание:
1) шаблоны нужно подкорректировать, детали ниже
2) В шаблоне с портретной ориентацией везде цена берется с НДС (приходная из документа, предполагаемая розничная)
3) В шаблоне с альбомной ориентацией предполагаемая розничная цена берется с НДС, приходная из документа без НДС.
4) Округление производится до копеек в поле
Нова роздрібна ціна
5) в поле разница в шаблоне с альбомной ориентацией забыл произвести изменение формулы для поля Зміна роздрібної ціни. Кроме того, округление идет по всему выражению согласно формату (т.е. до копеек).

Вы ориентируетесь в дизайнере, думаю, что эти нюансы сможете сами подкорректировать.
В переменной NAC находится размер наценки на группу товаров. Она формируется перед печатью Band1 (см. процедуру Band1OnBeforePrint). Перед выводом шаблона на экран (условно) производится выборка наценок из базы.
Работа в УкрСклад(особенности и советы): [url="//www.softbalance.com.ua/forum/index.php/topic,2362.0.html"]www.softbalance.com.ua/forum/index.php/topic,2362.0.html[/url]
Некоторые мои отчеты можно найти здесь: [url="http://www.softbalance.com.ua/forum/index.php/topic,2307.0.html"]http://www.softbalance.com.ua/forum/index.php/topic,2307.0.html[/url]

Creat

#41
2) У меня предприниматель упрощенец и потому НДС не играет роли.
5) Увидел поправил.
Книжная ориентация мне и поинтересней. Я альбомную от лени делал что бы побыстрее.
Если с автоматической корректировкой то надо работать до сохранения накладной. Если без то разницы конечно нет, тогда главное не тормозить проведён документ или нет для правильного количества.

Всё работает супер, большое спасибо!
Я бы сам конечно не выбрал наценку. Нормально сработало и когда нет наценки по группе показало 0. То что надо.

Нет придела совершенству и каждый может подделать под себя. Можно добавить колонку и минусовать остатки на складе и приход. Можно всё это делать и с сохранённым и проведённым документом. Главное это учитывать. И автоматическую корректировку лучше выключить и при большом желании просто после проведения наценок переоценок включить и повторно сохранить накладную для приведения приходной цены в справочнике к новому значению.

TheOK

Цитата: admin від Жовтень 17, 2012, 16:58:55
Цитата: TheOK від Жовтень 17, 2012, 16:15:44
Да, о доступе из шаблонов документов, чтобы можно было проще организовывать выборку и избежать ошибок, если есть товар, клиенты, документы с одинаковыми данными. Конечно, эти данные есть на закладке Поля БД, однако, я отношусь к ним, как к переменным с непредвиденным поведением, да и доступа к ним нет в режиме редактирования.
Даже и не знаю появятся они или нет, переменная будет неверная при создании нового документа, т.к. на момент создания документа, программа еще не знает будущий ID, а уже в момент нажатия на кнопку "Сохранить" получает идентификатор. Разве по связке дата + номер документа не получиться  отловить? Даже если и появиться, то сроки назвать не можем.
С ID документа согласен, но ID товара, Клиента, активной фирмы, ID валюты и т.д. уже существует. Еще, мне кажется, что в документах было бы хорошо поместить переменную цена на товар со  скидкой.
Добавить в список доработки не прошу. Просто пишу о том, что такой функционал был бы полезен.
Цитата: admin від Жовтень 17, 2012, 16:58:55
Функцию наценки просто так не вынести в документ, она просто идет проходом по группе или по всем группам, а не на товар. Плюс думаю никому больше не понадобиться кроме Вас.
Уточню, на всякий случай, я подразумевал что-то на подобии функции ToNacValuta в отчетах, шаблонах, например, на входе ID группы и цена, на выходе наценка.
Согласен, что, судя по всему, такое нужно только для Create, поэтому о добавлении в стандартный функционал речь не идет.
Работа в УкрСклад(особенности и советы): [url="//www.softbalance.com.ua/forum/index.php/topic,2362.0.html"]www.softbalance.com.ua/forum/index.php/topic,2362.0.html[/url]
Некоторые мои отчеты можно найти здесь: [url="http://www.softbalance.com.ua/forum/index.php/topic,2307.0.html"]http://www.softbalance.com.ua/forum/index.php/topic,2307.0.html[/url]

Creat

Цитата: Creat від Жовтень 18, 2012, 17:33:13
И автоматическую корректировку лучше выключить и при большом желании просто после проведения наценок переоценок включить и повторно сохранить накладную для приведения приходной цены в справочнике к новому значению.
Это я так думал. А в действительности - если включить в справочнике автоматическую корректировку цены товара, то при сохранении накладной цена в справочнике не меняется. Что бы цена изменилась, надо зайти в цену и нажат ентер.