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

Вистроювання товарів у прайсі!!!

Автор medkatastrof, Січень 17, 2013, 18:51:36

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

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

medkatastrof

Привіт всім. Шукав шукав відповідь на своє запитання на форумі, втомився і прошу допомоги у Вас, можливо допоможете. Запитання в мене стосовно прайсів у програмі Украсклад. В групу товари ввожу близько 600 найменувань згідно свого каталогу товарів. Хочу вивести прайс-лист, а він вистроюється лише по наіменуванню товару, або я ще вичитав на форумі як ше зробити щоб прайс вистроювався по коду. Підкажіть, як зробити, щоб прайс видавався в тому порядку, в якому я ввожу його в групу товарів? Якщо він буде вистроюватись по імені, мої клієнти будуть багато часу і нервів тратити на пошук потрібного йому товару. В групі товарів якщо вибрати сортування додатково, товари видаються в тому порядку, в якому я їх повводив, тобто так як треба, а от в прайсі незнаю як це зробити. Заздалегідь вдячний.

TheOK

Вы хотите, чтобы товар группировался по группам (группы в алфавитном порядке?), а затем по времени добавления товара в группе? Такое в принципе возможно, но я бы советовал вам в одно из дополнительных полей или в любое другое, которое не используете (вес, длина, фасовка и т.д.) вводить числа, которые будут обозначать порядок сортировки товара в группе товара.
Таким образом, изменив число в этом поле сможете переместить данный товар в нужное место.
Уточните эти моменты.
Работа в УкрСклад(особенности и советы): [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]

medkatastrof

Я понял Вас, в принципе можно попробовать, идея мне нравиться. Спасибо огромное.

TheOK

Когда определитесь с тем, какое поле будете использовать для указания порядка сортировки, пишите сюда, нужно будет слегка (совсем чуток) изменить запрос на выборку данных для отчета, чтобы отсортировало по нужному полю.
В общем жду название поля (из справочника товаров), после чего смогу прикрепить здесь запрос с нужной сортировкой
Работа в УкрСклад(особенности и советы): [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]

medkatastrof

Поле Фасовка. Его могу использовать.

TheOK

Хороший выбор. Это поле числовое, в него можно вносить не только целые числа, но и дробные, что даст полную гибкость при организации сортировки.
Через несколько минут скину запрос для отчета и расскажу, что с ним делать
Работа в УкрСклад(особенности и советы): [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]

TheOK

Ниже прилагаю SQL запрос, что с ним делать, увидите на видео (прикреплю, через несколько минут).



SELECT
  tz.kolvo,
  t.*,
  CASE
    WHEN (t.cena_curr_id = par.param) THEN t.cena 
    WHEN (c.how_to_calc = 0 AND ct_in.how_to_calc = 1) THEN t.cena/c.kurs/ct_in.kurs
    WHEN (c.how_to_calc = 1 AND ct_in.how_to_calc = 1) THEN t.cena*c.kurs/ct_in.kurs
    WHEN (c.how_to_calc = 0 AND ct_in.how_to_calc = 0) THEN t.cena/c.kurs*ct_in.kurs
    WHEN (c.how_to_calc = 1 AND ct_in.how_to_calc = 0) THEN t.cena*c.kurs*ct_in.kurs
  END AS cena_national_valuta,
  CASE
    WHEN (t.cena_out_curr_id = par.param) THEN t.cena_r
    WHEN (c.how_to_calc = 0 AND ct_out.how_to_calc = 1) THEN t.cena_r/c.kurs/ct_out.kurs
    WHEN (c.how_to_calc = 1 AND ct_out.how_to_calc = 1) THEN t.cena_r*c.kurs/ct_out.kurs
    WHEN (c.how_to_calc = 0 AND ct_out.how_to_calc = 0) THEN t.cena_r/c.kurs*ct_out.kurs
    WHEN (c.how_to_calc = 1 AND ct_out.how_to_calc = 0) THEN t.cena_r*c.kurs*ct_out.kurs
  END AS cena_r_national_valuta,
  CASE
    WHEN (t.cena_out_curr_id = par.param) THEN t.cena_o
    WHEN (c.how_to_calc = 0 AND ct_out.how_to_calc = 1) THEN t.cena_o/c.kurs/ct_out.kurs
    WHEN (c.how_to_calc = 1 AND ct_out.how_to_calc = 1) THEN t.cena_o*c.kurs/ct_out.kurs
    WHEN (c.how_to_calc = 0 AND ct_out.how_to_calc = 0) THEN t.cena_o/c.kurs*ct_out.kurs
    WHEN (c.how_to_calc = 1 AND ct_out.how_to_calc = 0) THEN t.cena_o*c.kurs*ct_out.kurs
  END AS cena_o_national_valuta,
  CASE
    WHEN (t.cena_out_curr_id = par.param) THEN t.cena_1
    WHEN (c.how_to_calc = 0 AND ct_out.how_to_calc = 1) THEN t.cena_1/c.kurs/ct_out.kurs
    WHEN (c.how_to_calc = 1 AND ct_out.how_to_calc = 1) THEN t.cena_1*c.kurs/ct_out.kurs
    WHEN (c.how_to_calc = 0 AND ct_out.how_to_calc = 0) THEN t.cena_1/c.kurs*ct_out.kurs
    WHEN (c.how_to_calc = 1 AND ct_out.how_to_calc = 0) THEN t.cena_1*c.kurs*ct_out.kurs
  END AS cena_1_national_valuta,
  CASE
    WHEN (t.cena_out_curr_id = par.param) THEN t.cena_2
    WHEN (c.how_to_calc = 0 AND ct_out.how_to_calc = 1) THEN t.cena_2/c.kurs/ct_out.kurs
    WHEN (c.how_to_calc = 1 AND ct_out.how_to_calc = 1) THEN t.cena_2*c.kurs/ct_out.kurs
    WHEN (c.how_to_calc = 0 AND ct_out.how_to_calc = 0) THEN t.cena_2/c.kurs*ct_out.kurs
    WHEN (c.how_to_calc = 1 AND ct_out.how_to_calc = 0) THEN t.cena_2*c.kurs*ct_out.kurs
  END AS cena_2_national_valuta,
  CASE
    WHEN (t.cena_out_curr_id = par.param) THEN t.cena_3
    WHEN (c.how_to_calc = 0 AND ct_out.how_to_calc = 1) THEN t.cena_3/c.kurs/ct_out.kurs
    WHEN (c.how_to_calc = 1 AND ct_out.how_to_calc = 1) THEN t.cena_3*c.kurs/ct_out.kurs
    WHEN (c.how_to_calc = 0 AND ct_out.how_to_calc = 0) THEN t.cena_3/c.kurs*ct_out.kurs
    WHEN (c.how_to_calc = 1 AND ct_out.how_to_calc = 0) THEN t.cena_3*c.kurs*ct_out.kurs
  END AS cena_3_national_valuta,
  CASE
    WHEN (t.cena_curr_id = 0) THEN t.cena
    WHEN (ct_in.how_to_calc = 1) THEN t.cena/ct_in.kurs
    WHEN (ct_in.how_to_calc = 0) THEN t.cena*ct_in.kurs
  END AS cena_main_valuta,
  CASE
    WHEN (t.cena_curr_id = 0) THEN t.cena_r
    WHEN (ct_out.how_to_calc = 1) THEN t.cena_r/ct_out.kurs
    WHEN (ct_out.how_to_calc = 0) THEN t.cena_r*ct_out.kurs
  END AS cena_r_main_valuta,
  CASE
    WHEN (t.cena_curr_id = 0) THEN t.cena_o
    WHEN (ct_out.how_to_calc = 1) THEN t.cena_o/ct_out.kurs
    WHEN (ct_out.how_to_calc = 0) THEN t.cena_o*ct_out.kurs
  END AS cena_o_main_valuta,
  CASE
    WHEN (t.cena_curr_id = 0) THEN t.cena_1
    WHEN (ct_out.how_to_calc = 1) THEN t.cena_1/ct_out.kurs
    WHEN (ct_out.how_to_calc = 0) THEN t.cena_1*ct_out.kurs
  END AS cena_1_main_valuta,
  CASE
    WHEN (t.cena_curr_id = 0) THEN t.cena_2
    WHEN (ct_out.how_to_calc = 1) THEN t.cena_2/ct_out.kurs
    WHEN (ct_out.how_to_calc = 0) THEN t.cena_2*ct_out.kurs
  END AS cena_2_main_valuta,
  CASE
    WHEN (t.cena_curr_id = 0) THEN t.cena_3
    WHEN (ct_out.how_to_calc = 1) THEN t.cena_3/ct_out.kurs
    WHEN (ct_out.how_to_calc = 0) THEN t.cena_3*ct_out.kurs
  END AS cena_3_main_valuta,
  gr.group_name,
  ti.tov_image,
  ti.tov_image_type
FROM
  tovar_name t
    LEFT JOIN currency ct_in ON t.cena_curr_id = ct_in.num
    LEFT JOIN currency ct_out ON t.cena_out_curr_id = ct_out.num
    LEFT JOIN tovar_images ti ON (ti.num = (SELECT FIRST 1 ti2.num FROM tovar_images ti2 WHERE ti2.tovar_id = t.num ORDER BY ti2.isort )),
  print_view_sklad(#товар_группа_№#,#склад_№#) gr,
  tovar_zal tz,
  currency c,
  params par
WHERE
  par.name = 'NationalValutaId' AND
  c.num = par.param AND
  t.tip = gr.num AND
  t.visible = 1 AND
  t.is_price_invisible = 0 AND
  t.num=tz.tovar_id AND
  tz.sklad_id=#склад_№#
ORDER BY
  gr.group_name,
  t.TOV_FASOVKA,
  t.name
Работа в УкрСклад(особенности и советы): [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]

medkatastrof


medkatastrof

Может быть еще подскажете как отдельно делать прайс по розничным ценам и отдельно по оптовым?

TheOK

Опишу в тексте порядок добавления отчета, чтобы было понятно, что творится на видео.

Сохраняем отчет прайс как новый (С сохранением отчета, автоматически сохранился и основной шаблон отчета, так и будем его называть, основной).
Смотрим название шаблона отчета, который мы только что сохранили (на видео это

UserZvit013.fr3 у вас будет другой номер в конце). Таким образом мы определили, что имя файла нового основного отчета  UserZvit013.fr3.
Заходим в оригинальный отчет (встроенный в программу, а не сохраненный перед этим) и сохраняем остальные необходимые нам шаблоны отчетов (не обязательно все, а только те, которые нужно) в любой каталог под теми же именами файлов, что и Основной шаблон ( в моем случае это был  UserZvit013.fr3)  с добавлением к имени файлу чисел (1,2,3 и т.д.).  В моем случае это получились файлы UserZvit0131.fr3, UserZvit0132.fr3, UserZvit0133.fr3...
После того, как шаблоны (те, которые нам нужны) переименованы, перенесем их в каталог, где хранятся
все шаблоны отчетов (их 2: каталог для украинских шаблонов отчетов (...UkrSklad/rep)и для русскоязычных шаблонов отчетов (...UkrSklad/rep/rus), где UkrSklad - каталог, где установлена ваша клиентская часть УкрСклада (или локальная).
Теперь, заменим SQL запрос отчета (копируем с этой темы), чтобы сортировка
была по полю фасовка. Вот и все, запускаем отчет и любуемся результатом.
Перенос шаблонов
Работа в УкрСклад(особенности и советы): [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]

TheOK

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

Оптовая:
[FormatFloat(<формат_цена_табл>,<DataRep."CENA_O_NATIONAL_VALUTA">*<НДС.НаТоварДляАФирмы>)]
Розничная:
[FormatFloat(<формат_цена_табл>,<DataRep."CENA_R_NATIONAL_VALUTA">*<НДС.НаТоварДляАФирмы>)]
Цена1:
[FormatFloat(<формат_цена_табл>,<DataRep."CENA_1">*<НДС.НаТоварДляАФирмы>)]
Работа в УкрСклад(особенности и советы): [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]

medkatastrof

Да, красиво Вы это делаете, спасибо, все получилось.

medkatastrof

Здравствуйте еще раз. Помогите пожалуйста с таким вопросом. Каким образом на последнюю страницу прайса можно добавить текст или картинку? На первую могу добавить, на последнюю не могу разобраться как. Спасибо Вам.

TheOK

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

Добавление данных в конец отчета
Работа в УкрСклад(особенности и советы): [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]

medkatastrof