Зробив звіт "планування замовлень" з вибором постачальника.
Як зробити щоб в ньому показувало не тільки ті товари, що треба замовити, а взагалі всі товари по даному постачальнику?,
наприклад є:
№ Код Назва Ціна (прихід грн.) Продано (шт) Залишок на складі (шт) Рекомендоване замовлення (шт)
1 09332 Рукавиці 7,860 34,00 0,00 3,00
а щоб було:
№ Код Назва Ціна (прихід грн.) Продано (шт) Залишок на складі (шт) Рекомендоване замовлення (шт)
1 09332 Рукавиці 7,860 34,00 0,00 3,00
2 09333 пакет БМВ 7,860 100,00 500 0
код звіту і зам звіт додаю, може комусь пригодиться:
SELECT
sw.group_name,
tn.kod,
tn.name,
tn.cena,
CASE
WHEN (tn.cena_curr_id = #валюта_№#) THEN tn.cena
WHEN (c.how_to_calc = 0 AND ct_in.how_to_calc = 1) THEN tn.cena/c.kurs/ct_in.kurs
WHEN (c.how_to_calc = 1 AND ct_in.how_to_calc = 1) THEN tn.cena*c.kurs/ct_in.kurs
WHEN (c.how_to_calc = 0 AND ct_in.how_to_calc = 0) THEN tn.cena/c.kurs*ct_in.kurs
WHEN (c.how_to_calc = 1 AND ct_in.how_to_calc = 0) THEN tn.cena*c.kurs*ct_in.kurs
END AS cena_valuta,
tz.kolvo AS tov_kolvo_zal,
SUM(tm.from_kolvo) AS tov_kolvo
FROM
tovar_move tm,
print_view_sklad(#товар_группа_№#,#склад_№#) sw,
tovar_name tn
LEFT JOIN currency ct_in ON tn.cena_curr_id = ct_in.num,
currency c,
tovar_zal tz
WHERE
c.num = #валюта_№# AND
tm.doc_type_id = 1 AND
tm.mdate >= '#дата_с#' AND
tm.mdate <= '#дата_по#' AND
sw.num = tn.tip AND
tm.tovar_id = tn.num AND
tm.from_sklad_id = #склад_№# AND
tm.tovar_id = tz.tovar_id AND
tz.last_post_id = #поставщик_№# AND
tz.sklad_id = #склад_№#
GROUP BY
1,2,3,4,5,6
HAVING
SUM(tm.from_kolvo) > 0
ORDER BY
1,2
Шановне панство, все ще чекаю Вашої допомоги =)) ??? (http://img-fotki.yandex.ru/get/4411/10421757.0/0_5cf0b_c2e22adc_orig.jpg) (http://0027.ru/pp.php) (http://img-fotki.yandex.ru/get/4411/10421757.0/0_5cf1b_75be0356_orig.jpg) (http://0027.ru/pp.php)
Цитата: molotokk від Лютий 28, 2017, 11:06:39
Шановне панство, все ще чекаю Вашої допомоги =)) ??? (http://img-fotki.yandex.ru/get/4411/10421757.0/0_5cf0b_c2e22adc_orig.jpg) (http://0027.ru/pp.php) (http://img-fotki.yandex.ru/get/4411/10421757.0/0_5cf1b_75be0356_orig.jpg) (http://0027.ru/pp.php)
Вот ваш скрипт просто переделанный чтобы показывалась вся номенклатура:
SELECT
sw.group_name,
tn.kod,
tn.name,
tn.cena,
CASE
WHEN (tn.cena_curr_id = #валюта_№#) THEN tn.cena
WHEN (c.how_to_calc = 0 AND ct_in.how_to_calc = 1) THEN tn.cena/c.kurs/ct_in.kurs
WHEN (c.how_to_calc = 1 AND ct_in.how_to_calc = 1) THEN tn.cena*c.kurs/ct_in.kurs
WHEN (c.how_to_calc = 0 AND ct_in.how_to_calc = 0) THEN tn.cena/c.kurs*ct_in.kurs
WHEN (c.how_to_calc = 1 AND ct_in.how_to_calc = 0) THEN tn.cena*c.kurs*ct_in.kurs
END AS cena_valuta,
tz.kolvo AS tov_kolvo_zal,
SUM(tm.from_kolvo) AS tov_kolvo
FROM
tovar_name tn
LEFT JOIN tovar_move tm ON (tm.doc_type_id =1 AND tm.mdate >= '#дата_с#' AND tm.mdate <= '#дата_по#' AND tm.from_sklad_id = #склад_№# AND tm.tovar_id = tn.num)
LEFT JOIN currency ct_in ON tn.cena_curr_id = ct_in.num,
print_view_sklad(#товар_группа_№#,#склад_№#) sw,
currency c,
tovar_zal tz
WHERE
c.num = #валюта_№# AND
sw.num = tn.tip AND
tn.num = tz.tovar_id AND
tz.last_post_id = #поставщик_№# AND
tz.sklad_id = #склад_№#
GROUP BY
1,2,3,4,5,6
ORDER BY
1,2
Дуже вдячний. :)
Спасибо, удобный отчет.
В этом отчете не выводятся товары поставщика, если в период анализа не было закупок этого товара. Т.е. по факту продажи товара (от данного поставщика) в период анализа были, а товара в отчете нет, и соответственно, нет плана заказа. Можно это как-то поправить?
И еще вопрос: Можно ли вывести план заказа на тот же период, что и период анализа? Т.е., если выбирается период анализа с 1.03.16 по 31.05.16 (92 дня), то и рекомендуемый заказ автоматически (а не высчитывать дни на календаре) расчитывается за период 92 дня. Это связано с сезонностью.
Спасибо.
Цитата: fyodor від Березень 05, 2017, 22:50:49
Спасибо, удобный отчет.
В этом отчете не выводятся товары поставщика, если в период анализа не было закупок этого товара. Т.е. по факту продажи товара (от данного поставщика) в период анализа были, а товара в отчете нет, и соответственно, нет плана заказа. Можно это как-то поправить?
И еще вопрос: Можно ли вывести план заказа на тот же период, что и период анализа? Т.е., если выбирается период анализа с 1.03.16 по 31.05.16 (92 дня), то и рекомендуемый заказ автоматически (а не высчитывать дни на календаре) расчитывается за период 92 дня. Это связано с сезонностью.
Спасибо.
1. робіть по коду адміна і будуть всі товари по постачальнику, але ті що не треба купляти - рекомендоване замовлення буде 0.
2. я думаю то буде зайвий геморой в редагуванні коду. простіше вибрати дату вручну. =)
1. Вопрос именно по коду админа. Если пользуетесь этим кодом, обратите внимание: в отчет не выводится товар поставщика, если не было закупок за анализируемый период у этого поставщика. Хотя продаж было много. Он в плане должен быть по логике.
Например, за месяц его продали 100 шт, на остатке 0. План на следующий месяц должен быть 100шт. А этого товара вообще нет в отчете по данному поставщику.
потестував я нарешті звіт. того що треба - немає, найліпший мені потрібний результат все ж в тому звіті, що я зробив.
SELECT
sw.group_name,
tn.kod,
tn.name,
tn.cena,
CASE
WHEN (tn.cena_curr_id = #валюта_№#) THEN tn.cena
WHEN (c.how_to_calc = 0 AND ct_in.how_to_calc = 1) THEN tn.cena/c.kurs/ct_in.kurs
WHEN (c.how_to_calc = 1 AND ct_in.how_to_calc = 1) THEN tn.cena*c.kurs/ct_in.kurs
WHEN (c.how_to_calc = 0 AND ct_in.how_to_calc = 0) THEN tn.cena/c.kurs*ct_in.kurs
WHEN (c.how_to_calc = 1 AND ct_in.how_to_calc = 0) THEN tn.cena*c.kurs*ct_in.kurs
END AS cena_valuta,
tz.kolvo AS tov_kolvo_zal,
SUM(tm.from_kolvo) AS tov_kolvo
FROM
tovar_move tm,
print_view_sklad(#товар_группа_№#,#склад_№#) sw,
tovar_name tn
LEFT JOIN currency ct_in ON tn.cena_curr_id = ct_in.num,
currency c,
tovar_zal tz
WHERE
c.num = #валюта_№# AND
tm.doc_type_id = 1 AND
tm.mdate >= '#дата_с#' AND
tm.mdate <= '#дата_по#' AND
sw.num = tn.tip AND
tm.tovar_id = tn.num AND
tm.from_sklad_id = #склад_№# AND
tm.tovar_id = tz.tovar_id AND
tz.last_post_id = #поставщик_№# AND
tz.sklad_id = #склад_№#
GROUP BY
1,2,3,4,5,6
HAVING
SUM(tm.from_kolvo) > 0
ORDER BY
1,2
(файл звіту (шаблон також змінено) я прикріпив нижче.
Мені і "fyodor" потрібно фактично одне і теж (як я зрозумів) - щоб відображався ВЕСЬ список товару даного постачальника, незалежно чи період дат я поставив з 10.01.2015 по сьогодні, чи з 15.02.2017 по сьогодні, а вибір дати на день/місяць/рік вперед, а те, що не треба замовляти - було 0 в колонці "рекомендоване замовлення".
Поки що я добився що відображає більшість товару (наприклад якщо період дат невеликий то 25 з 30 найменувань, якщо ставлю рік/два то відображає всі але й аналіз проводить по великому періоду), а треба щоб відображало весь список, а аналіз і планування замовлення робило по заданому періоду дат як і робить зараз.
Хто має які ідеї - пропонуйте =)
п.с. і ще - як прописати щоб показувало не лише від продажів, а й від переміщення - ми з основного складу близько 30-40% кидаєм на переміщення, а відповідно воно в плануванні не враховується, бо там прив'язка до вікна касира.
+1
Да, как-то не корректно подтягивается список товаров выбранного поставщика.
Вот мне тут помогали с отчетом Движение товара по контрагенту. Добавили переменную остатка в отчет. Так там все норм.: выводится весь список товаров поставщика, которые когда-либо покупались у этого поставщика.
Надеемся на помощь.
я не можу знайти яка змінна відповідає за те щоб показало всі товари даного постачальника без прив'язки до продаж/руху товару/закупки і т.д.
Ще питання по даному звіту:
В нас близько 50% товару іде переміщенням на інші склади, а при плануванні замовлень переміщений товар не враховується.
Як зробити щоб в плануванні відштовхувалось від продаж і переміщення, а не лише від продаж.
Цитата: admin від Березень 03, 2017, 15:05:28
Вот ваш скрипт просто переделанный чтобы показывалась вся номенклатура:
Кстати выше нашли ошибку, надо не
LEFT JOIN tovar_move tm ON (tm.doc_type_id = #склад_№# AND tm.mdate >= '#дата_с#' AND tm.mdate <= '#дата_по#' AND tm.from_sklad_id = 1 AND tm.tovar_id = tn.num)
а вот такой:
LEFT JOIN tovar_move tm ON (tm.doc_type_id =1 AND tm.mdate >= '#дата_с#' AND tm.mdate <= '#дата_по#' AND tm.from_sklad_id = #склад_№# AND tm.tovar_id = tn.num)
выше код уже подправили.
Цитата: molotokk від Квітень 11, 2017, 14:34:41
Ще питання по даному звіту:
В нас близько 50% товару іде переміщенням на інші склади, а при плануванні замовлень переміщений товар не враховується.
Як зробити щоб в плануванні відштовхувалось від продаж і переміщення, а не лише від продаж.
Возможно поможет, если заменить tm.doc_type_id =1 на tm.doc_type_id IN (1,10)
Дякую, буду пробувати))
привіт)
знову граюсь з цим звітом ) таке питання
як мені прописати в цей звіт щоб по постачальнику відбирало не лише той товар що замовлявся в нього останнього разу, а наприклад якщо я колись давнооо в цього постачальника брав цей товар то щоб його теж в цей звіт кидало.
SELECT
sw.group_name,
tn.kod,
tn.name,
tn.cena,
CASE
WHEN (tn.cena_curr_id = #валюта_№#) THEN tn.cena
WHEN (c.how_to_calc = 0 AND ct_in.how_to_calc = 1) THEN tn.cena/c.kurs/ct_in.kurs
WHEN (c.how_to_calc = 1 AND ct_in.how_to_calc = 1) THEN tn.cena*c.kurs/ct_in.kurs
WHEN (c.how_to_calc = 0 AND ct_in.how_to_calc = 0) THEN tn.cena/c.kurs*ct_in.kurs
WHEN (c.how_to_calc = 1 AND ct_in.how_to_calc = 0) THEN tn.cena*c.kurs*ct_in.kurs
END AS cena_valuta,
tz.kolvo AS tov_kolvo_zal,
SUM(tm.from_kolvo) AS tov_kolvo
FROM
tovar_move tm,
print_view_sklad(#товар_группа_№#,#склад_№#) sw,
tovar_name tn
LEFT JOIN currency ct_in ON tn.cena_curr_id = ct_in.num,
currency c,
tovar_zal tz
WHERE
c.num = #валюта_№# AND
tm.doc_type_id IN (1,10) AND
tm.mdate >= '#дата_с#' AND
tm.mdate <= '#дата_по#' AND
sw.num = tn.tip AND
tm.tovar_id = tn.num AND
tm.from_sklad_id = #склад_№# AND
tm.tovar_id = tz.tovar_id AND
tz.last_post_id = #поставщик_№# AND
tz.sklad_id = #склад_№#
GROUP BY
1,2,3,4,5,6
HAVING
SUM(tm.from_kolvo) > 0
ORDER BY
1,3