Добрый день!
Сейчас переходим на УкрСклад и в процессе работы возник вопрос как/какой отчет формировать что бы посмотреть задолженность перед поставщиком?
У нас товары поступают под реализацию от ~180 поставщиков. И нужно видеть задолженность перед каждым в отдельности?
Вот пример:
Я оприходовал 100 товаров по 15 грн от Поставщика№1. Итого на сумму 1500 грн.
Продал 6-ть товаров Поставщика№1 по цене реализации 39 грн, сформировал проводки.
На складе товар снялся и показывает остаток 94 шт.
Но в отчете "Взаиморасчеты с поставщиками" мне показывает:
Поставщик№1, Остаток на начало периода 0, Расход 0, Приход 1500, Остаток на конец периода 1500.
Почему так? Когда должно быть:
Поставщик№1, Остаток на начало периода 0, Расход 90, Приход 1500, Остаток на конец периода 1410.
Может я не тот отчет использую? Тогда какой использовать нужно, что бы увидеть задолженность перед поставщиком, что бы на основе него можно было выписывать РКО и рассчитаться за реализованный товар?
Вы продали этот товар поставщику? Нет. Взаиморасчеты с поставщиком у вас 1500, а то что вы продали товар клиентам то это же поставщика не касается и этого отчета.
Комментарий ошибочен, невнимательно прочитал первое сообщение ТС.Цитата: crazyjonyster від Березень 19, 2012, 03:58:21
...
Может я не тот отчет использую?
...
Не тот =) Отчет взаиморасчеты с поставщиками не учитывает расходные накладные, т.к. Вы не можете (так устроена программа, лично мне эта особенность кажется странной) продать товар поставщику... Короче говоря программа делит взаиморасчеты с клиентом и поставщиком, не смотря на то что это один и тот же контрагент, но делит, на сколько я понимаю, только документы ПН, РН, ВоК, ВП, а вот кассовые ордера по идее будут все "в куче", по этому, если Вы ведете взаиморасчеты с поставщиком взаимозачетом РН и ПН, то Вам нужно смотреть отчет "Взаиморасчеты с контрагентами (поставщики и клиенты)", он Вам должен показать правильную цифру, либо использовать не РН а ВП, чтобы отпускать товар поставщику, правда оно как-то не то... ведь товар то продали, а не вернули поставщику его же товар...
Цитата: admin від Березень 19, 2012, 10:46:33
Вы продали этот товар поставщику? Нет. Взаиморасчеты с поставщиком у вас 1500, а то что вы продали товар клиентам то это же поставщика не касается и этого отчета.
Ну допустим логично, но вот тогда как мне вычислить сколько денег за товар я должен поставщику отдать, На примере выше: отчет должен был бы сказать что я должен 90 грн Поставщику№1 за такие-то товары...
Какой отчет использовать?
Цитата: vasos від Березень 20, 2012, 14:38:06
Цитата: crazyjonyster від Березень 19, 2012, 03:58:21
...
Может я не тот отчет использую?
...
Не тот =) Отчет взаиморасчеты с поставщиками не учитывает расходные накладные, т.к. Вы не можете (так устроена программа, лично мне эта особенность кажется странной) продать товар поставщику... Короче говоря программа делит взаиморасчеты с клиентом и поставщиком, не смотря на то что это один и тот же контрагент, но делит, на сколько я понимаю, только документы ПН, РН, ВоК, ВП, а вот кассовые ордера по идее будут все "в куче", по этому, если Вы ведете взаиморасчеты с поставщиком взаимозачетом РН и ПН, то Вам нужно смотреть отчет "Взаиморасчеты с контрагентами (поставщики и клиенты)", он Вам должен показать правильную цифру, либо использовать не РН а ВП, чтобы отпускать товар поставщику, правда оно как-то не то... ведь товар то продали, а не вернули поставщику его же товар...
Взаиморасчеты с контрагентами (поставщики и клиенты) - не показывает нужной информации ((
Цитата: crazyjonyster від Березень 19, 2012, 03:58:21
Почему так? Когда должно быть:
Поставщик№1, Остаток на начало периода 0, Расход 90, Приход 1500, Остаток на конец периода 1410.
А чому борг повинен бути 1410 грн? Ви ж 90 грн не повернули постачальнику, вони у вас в касі. Віддайте постачальнику 90 грн видатковим касовим, тоді і буде борг 1410.
Покористуйтесь програмою на різних прикладах, щоб її вивчити.
Цитата: Павло від Березень 20, 2012, 21:06:37
Цитата: crazyjonyster від Березень 19, 2012, 03:58:21
Почему так? Когда должно быть:
Поставщик№1, Остаток на начало периода 0, Расход 90, Приход 1500, Остаток на конец периода 1410.
А чому борг повинен бути 1410 грн? Ви ж 90 грн не повернули постачальнику, вони у вас в касі. Віддайте постачальнику 90 грн видатковим касовим, тоді і буде борг 1410.
Покористуйтесь програмою на різних прикладах, щоб її вивчити.
Ну так мне ж нужно из какого-то отчета узнать сколько я должен поставщику! или вы предлагаете все чеки пересматривать и вручную это считать?
Вообщем поизучав форум нашел вот эту тему http://www.softbalance.com.ua/forum/index.php?topic=2205.0 (http://www.softbalance.com.ua/forum/index.php?topic=2205.0)
Она решает мою проблему частично. В этом отчете отображаются розничные цены: вот если бы отчет выдавал закупочные цены, то моя проблема была бы решена!
Кто подскажет что нужно менять в коде что бы в отчете получить закупочные цены, а не розничные?
Вот код отчета:
SELECT
sw.group_name,
tm.tovar_id,
tn.kod,
tn.name,
tn.ed_izm,
tn.cena,
tn.cena_r,
tn.cena_o,
SUM(tm.suma_znig_diff) AS tov_znig,
SUM(tm.from_kolvo) AS tov_kolvo,
AVG(tm.from_cena) AS tov_cena,
AVG(tm.cena_pdv) AS tov_cena_pdv,
SUM(tm.from_suma) AS tov_suma,
SUM(tm.suma_pdv) AS tov_pdv,
SUM(tm.from_suma+tm.suma_pdv) AS tov_suma_pdv
FROM
tovar_move tm,
vnakl vn,
print_view_sklad(#товар_группа_№#,#склад_№#) sw,
tovar_name tn,
tovar_zal tz
WHERE
tm.doc_type_id = 1 AND
tm.doc_id = vn.num AND
tz.sklad_id = #склад_№# AND
tn.num = tz.tovar_id AND
tz.last_post_id = #поставщик_№# AND
#if #пользователь_№# = -1 #then
#else
vn.doc_user_id = #пользователь_№# AND
#endif
tm.mdate >= '#дата_с#' AND
tm.mdate <= '#дата_по#' AND
sw.num = tn.tip AND
tm.tovar_id = tn.num AND
tm.from_sklad_id = #склад_№#
GROUP BY
1,2,3,4,5,6,7,8
HAVING
SUM(tm.from_kolvo) > 0
ORDER BY
sw.group_name
Цитата: crazyjonyster від Березень 20, 2012, 18:14:27
Какой отчет использовать?
Мы используем отчет РЕАЛИЗАЦИЯ
Цитата: DILEMMA від Березень 20, 2012, 23:01:52
Цитата: crazyjonyster від Березень 20, 2012, 18:14:27
Какой отчет использовать?
Мы используем отчет РЕАЛИЗАЦИЯ
В моем случае не прокатит! У нас Есть склад магазина, он поделен на категории: бижутерия, билеты, одежда и т.д.
В отчете реализация показывается просто вся реализованная продукция за период без деления на поставщиков. А их у нас более 180... представляете как в конце месяца 10 000 - 20 000 позиций рассортировать на 180 поставщиков вручную?
В идеале мне нужно только подправить код который я постил выше. Но увы я не знаю как там розничную цену поменять на закупочную ((
Цитата: crazyjonyster від Березень 20, 2012, 23:08:01
В идеале мне нужно только подправить код который я постил выше. Но увы я не знаю как там розничную цену поменять на закупочную ((
А что там менять? cena это приходная цена, cena_r это расходная цена, cena_o это оптовая. И все они есть в скрипте, а значит и доступны в дизайнере как переменные.
Цитата: admin від Березень 21, 2012, 09:04:28
Цитата: crazyjonyster від Березень 20, 2012, 23:08:01
В идеале мне нужно только подправить код который я постил выше. Но увы я не знаю как там розничную цену поменять на закупочную ((
А что там менять? cena это приходная цена, cena_r это расходная цена, cena_o это оптовая. И все они есть в скрипте, а значит и доступны в дизайнере как переменные.
Понял, тогда буду править шаблон в дизайнере.
Цитата: crazyjonyster від Березень 20, 2012, 23:06:42
В отчете реализация показывается просто вся реализованная продукция за период без деления на поставщиков. А их у нас более 180... представляете как в конце месяца 10 000 - 20 000 позиций рассортировать на 180 поставщиков вручную?
представляю, мы для этого сразу заводили поставщика как СКЛАД, это надо было делать с самого начала, теперь конечно вы в пролете.
Цитата: DILEMMA від Березень 21, 2012, 21:26:42
Цитата: crazyjonyster від Березень 20, 2012, 23:06:42
В отчете реализация показывается просто вся реализованная продукция за период без деления на поставщиков. А их у нас более 180... представляете как в конце месяца 10 000 - 20 000 позиций рассортировать на 180 поставщиков вручную?
представляю, мы для этого сразу заводили поставщика как СКЛАД, это надо было делать с самого начала, теперь конечно вы в пролете.
Та не в пролете. Переместить не сложно, но это ИМХО не правильно. Тем более что все разрулилось при помощи отчетов.
А не правильно потому, что у нас и так несколько складов. Основной + еще пару точек реализации и товары поставщиков могут продаваться на всех точках или только на некоторых...
Цитата: crazyjonyster від Березень 22, 2012, 18:58:37
А не правильно потому, что у нас и так несколько складов. Основной + еще пару точек реализации и товары поставщиков могут продаваться на всех точках или только на некоторых...
Так в чем проблема, на пару точек от склада поставщика делаете перемещение и все.
Если есть возможность вывести необходимые данные при помощи отчета, не усложняя значительно структуру складов и групп, думаю, это лучший вариант.
К счастью, в данном случае, судя из комментария crazyjonyster, это именно такой случай)
Прошу помощи у TheOK и semp, какой надо вставить скрипт, что бы получился новый отчет Взаиморасчеты с постащикам в котором после поля ФИО поставщика в моем случае отображался расчетный счет данного поставщика?
Если вы не изменяли изначальный SQL-запрос отчета Взаиморасчеты с поставщиками (Взаєморозрахунки з постачальниками), то вам необходимо заменить SQL запрос на приведенный ниже (конечно же,это делается в созданном новом, пользовательском отчете, через кнопку Сохранить как новый).
Для добавления в текстовое поле использовать конструкцию: [DataRep."ROZR_R"]
P.S. На форуме минимум 5 человек (не считая разработчиков), которые, как я заметил, обладают некоторыми знаниями по построению запросов. Поэтому, думаю, они могли бы так же включаться в обсуждение
SELECT
c.fio,
CASE
WHEN (tm.doc_type_id IN (3,8,16)) THEN tm.from_firma_id
ELSE tm.to_firma_id
END AS client_id,
C.ROZR_R ,
SUM(CASE
WHEN (tm.doc_type_id IN (3,8,16) AND tm.mdate < '#дата_с#') THEN tm.#валюта_преф#from_suma+tm.#валюта_преф#suma_pdv
WHEN (tm.doc_type_id IN (4,5,18) AND tm.mdate < '#дата_с#') THEN (-1)*(tm.#валюта_преф#from_suma+tm.#валюта_преф#suma_pdv)
ELSE 0
END) AS suma_zal,
SUM(CASE
WHEN (tm.doc_type_id IN (4,5,18) AND tm.mdate >= '#дата_с#') THEN tm.#валюта_преф#from_suma+tm.#валюта_преф#suma_pdv
ELSE 0
END) AS suma_out,
SUM(CASE
WHEN (tm.doc_type_id IN (3,8,16) AND tm.mdate >= '#дата_с#') THEN tm.#валюта_преф#from_suma+tm.#валюта_преф#suma_pdv
ELSE 0
END) AS suma_in
FROM
tovar_move tm,
client c
WHERE
c.visible = 1 AND
c.main_pid = -11 AND
#if #валюта_№# = -1 #then
#else
tm.curr_type = #валюта_№# AND
#endif
tm.doc_type_id IN (3,8,4,5,16,18) AND
tm.mdate <= '#дата_по#' AND
CASE
WHEN (tm.doc_type_id = 3) THEN tm.to_firma_id
WHEN (tm.doc_type_id = 8) THEN tm.to_firma_id
WHEN (tm.doc_type_id = 16) THEN tm.to_firma_id
ELSE tm.from_firma_id
END = #активная_фирма_№# AND
CASE
WHEN (tm.doc_type_id = 3) THEN tm.from_firma_id
WHEN (tm.doc_type_id = 8) THEN tm.from_firma_id
WHEN (tm.doc_type_id = 16) THEN tm.from_firma_id
ELSE tm.to_firma_id
END = c.num
GROUP BY
1,2,3
HAVING
(udf_roundto(SUM(CASE
WHEN (tm.doc_type_id IN (3,8,16) AND tm.mdate < '#дата_с#') THEN tm.#валюта_преф#from_suma+tm.#валюта_преф#suma_pdv
WHEN (tm.doc_type_id IN (4,5,18) AND tm.mdate < '#дата_с#') THEN (-1)*(tm.#валюта_преф#from_suma+tm.#валюта_преф#suma_pdv)
ELSE 0
END),5) != 0 OR
udf_roundto(SUM(CASE
WHEN (tm.doc_type_id IN (4,5,18) AND tm.mdate >= '#дата_с#') THEN tm.#валюта_преф#from_suma+tm.#валюта_преф#suma_pdv
ELSE 0
END),5) != 0 OR
udf_roundto(SUM(CASE
WHEN (tm.doc_type_id IN (3,8,16) AND tm.mdate >= '#дата_с#') THEN tm.#валюта_преф#from_suma+tm.#валюта_преф#suma_pdv
ELSE 0
END),5) != 0 )
ORDER BY
1
Жаль не заработал запрос выдал такую ошибку
похоже ему не понравилась 34 линия? WHEN (tm.doc_type_id = 3) THEN tm.to_firma_id
Цитата: DILEMMA від Лютий 06, 2013, 00:59:51
похоже ему не понравилась 34 линия? WHEN (tm.doc_type_id = 3) THEN tm.to_firma_id
Ему не понравилась немножко другая строка (под той, которую вы указали)... я как-то потерял 2-3 символа в запросе....
Запрос исправил, замените SQL запрос в том отчете, где ошибочка выскочила
я уже нашел это 8
огромнейшее спасибо за помощь все получилось супер-пупер, р/с все прописываются
Подскажите пожалуйста, а можно в отчете сделать так: если в 4 колонке у клиента оплата стоит 0,00 как у поставщика под номером 4, чтобы данная колонка не появлялась в отчете, а скрывалась, так сказать "ушла в туман".
Точнее сформулирую вопрос: необходимо скрыть строку споставщиком если в колонке ПРИХОД остновного отчета Взаиморасчеты с поставщиками стоит0,00
Замените SQL запрос отчета на приведенный ниже (или создайте новый отчет на основе того, что вы сейчас сделали и внесите изменения в нем). Вы столкнулись с проблемой округления данных, данные сформировались по поставщику и они округлились до 5 знаков после запятой, а в отчете данные округлились до двух знаков, вот и светит вам в отчете 0, хотя там может быть 0.004
SELECT
c.fio,
CASE
WHEN (tm.doc_type_id IN (3,8,16)) THEN tm.from_firma_id
ELSE tm.to_firma_id
END AS client_id,
C.ROZR_R ,
SUM(CASE
WHEN (tm.doc_type_id IN (3,8,16) AND tm.mdate < '#дата_с#') THEN tm.#валюта_преф#from_suma+tm.#валюта_преф#suma_pdv
WHEN (tm.doc_type_id IN (4,5,18) AND tm.mdate < '#дата_с#') THEN (-1)*(tm.#валюта_преф#from_suma+tm.#валюта_преф#suma_pdv)
ELSE 0
END) AS suma_zal,
SUM(CASE
WHEN (tm.doc_type_id IN (4,5,18) AND tm.mdate >= '#дата_с#') THEN tm.#валюта_преф#from_suma+tm.#валюта_преф#suma_pdv
ELSE 0
END) AS suma_out,
SUM(CASE
WHEN (tm.doc_type_id IN (3,8,16) AND tm.mdate >= '#дата_с#') THEN tm.#валюта_преф#from_suma+tm.#валюта_преф#suma_pdv
ELSE 0
END) AS suma_in
FROM
tovar_move tm,
client c
WHERE
c.visible = 1 AND
c.main_pid = -11 AND
#if #валюта_№# = -1 #then
#else
tm.curr_type = #валюта_№# AND
#endif
tm.doc_type_id IN (3,8,4,5,16,18) AND
tm.mdate <= '#дата_по#' AND
CASE
WHEN (tm.doc_type_id = 3) THEN tm.to_firma_id
WHEN (tm.doc_type_id = 8) THEN tm.to_firma_id
WHEN (tm.doc_type_id = 16) THEN tm.to_firma_id
ELSE tm.from_firma_id
END = #активная_фирма_№# AND
CASE
WHEN (tm.doc_type_id = 3) THEN tm.from_firma_id
WHEN (tm.doc_type_id = 8) THEN tm.from_firma_id
WHEN (tm.doc_type_id = 16) THEN tm.from_firma_id
ELSE tm.to_firma_id
END = c.num
GROUP BY
1,2,3
HAVING
(udf_roundto(SUM(CASE
WHEN (tm.doc_type_id IN (3,8,16) AND tm.mdate < '#дата_с#') THEN tm.#валюта_преф#from_suma+tm.#валюта_преф#suma_pdv
WHEN (tm.doc_type_id IN (4,5,18) AND tm.mdate < '#дата_с#') THEN (-1)*(tm.#валюта_преф#from_suma+tm.#валюта_преф#suma_pdv)
ELSE 0
END),2) != 0 OR
udf_roundto(SUM(CASE
WHEN (tm.doc_type_id IN (4,5,18) AND tm.mdate >= '#дата_с#') THEN tm.#валюта_преф#from_suma+tm.#валюта_преф#suma_pdv
ELSE 0
END),2) != 0 OR
udf_roundto(SUM(CASE
WHEN (tm.doc_type_id IN (3,8,16) AND tm.mdate >= '#дата_с#') THEN tm.#валюта_преф#from_suma+tm.#валюта_преф#suma_pdv
ELSE 0
END),2) != 0 )
ORDER BY
1
Заменил SQL запрос, в отчете не произошло сокрытия строки с поставщиком если в колонке ПРИХОД основного отчета Взаиморасчеты с поставщиками стоит 0,00. Дело не в округлении данных до определенного знака, основной вопрос ставится так, что надо убрать ( скрыть, спрятать ) хотябы в печатной форме строку с поставщиком у которого в колонке ПРИХОД основного отчета Взаиморасчеты с поставщиками стоит 0,00. Это нужно для того чтобы "портянка" подаваемая мной кассиру в Мегабанке была только с поставщиками у которых есть положительный баланс для оплаты, т.е. если из 200 поставщиков на сегодняшний день у 180 баланс 0,00 , то в "портянке" на оплату должно значится только 20 человек.
Проблема не только в округлении (и в ней тоже была, но не факт, что ваши 0.00 зависели от нее), а еще и в том, что в отчет выводятся данные по всем поставщикам у которых был остаток (на начало или конец) или движение товара или денежных средств.
Чтобы убрать постивщиков с 0.00, нужно знать какая переменная у вас в отчете выводится в последнем столбце (правом) "Оплата в....".
Так я и спрашиваю: можно ли скрыть и не выводить на печать целую строчку в которой находится ПОСТАВЩИК если в колонке ПРИХОД 0, если нельзя связать колонку ПРИХОД где стоит 0 и сокрытие на печать строки с данным ПОСТАВЩИКОМ скажите нет.
Цитата: DILEMMA від Лютий 07, 2013, 13:00:30
Так я и спрашиваю: можно ли скрыть и не выводить на печать целую строчку в которой находится ПОСТАВЩИК если в колонке ПРИХОД 0, если нельзя связать колонку ПРИХОД где стоит 0 и сокрытие на печать строки с данным ПОСТАВЩИКОМ скажите нет.
Как это нельзя скрыть? В отчетах можно делать такое.... не то, чтобы скрыть
Вот SQL запрос. Если в поле приход 0.00, то данные не должны выводиться. У себя не тестировал, но думаю, что так и должно работать.
SELECT
c.fio,
CASE
WHEN (tm.doc_type_id IN (3,8,16)) THEN tm.from_firma_id
ELSE tm.to_firma_id
END AS client_id,
C.ROZR_R ,
SUM(CASE
WHEN (tm.doc_type_id IN (3,8,16) AND tm.mdate < '#дата_с#') THEN tm.#валюта_преф#from_suma+tm.#валюта_преф#suma_pdv
WHEN (tm.doc_type_id IN (4,5,18) AND tm.mdate < '#дата_с#') THEN (-1)*(tm.#валюта_преф#from_suma+tm.#валюта_преф#suma_pdv)
ELSE 0
END) AS suma_zal,
SUM(CASE
WHEN (tm.doc_type_id IN (4,5,18) AND tm.mdate >= '#дата_с#') THEN tm.#валюта_преф#from_suma+tm.#валюта_преф#suma_pdv
ELSE 0
END) AS suma_out,
SUM(CASE
WHEN (tm.doc_type_id IN (3,8,16) AND tm.mdate >= '#дата_с#') THEN tm.#валюта_преф#from_suma+tm.#валюта_преф#suma_pdv
ELSE 0
END) AS suma_in
FROM
tovar_move tm,
client c
WHERE
c.visible = 1 AND
c.main_pid = -11 AND
#if #валюта_№# = -1 #then
#else
tm.curr_type = #валюта_№# AND
#endif
tm.doc_type_id IN (3,8,4,5,16,18) AND
tm.mdate <= '#дата_по#' AND
CASE
WHEN (tm.doc_type_id = 3) THEN tm.to_firma_id
WHEN (tm.doc_type_id = 8) THEN tm.to_firma_id
WHEN (tm.doc_type_id = 16) THEN tm.to_firma_id
ELSE tm.from_firma_id
END = #активная_фирма_№# AND
CASE
WHEN (tm.doc_type_id = 3) THEN tm.from_firma_id
WHEN (tm.doc_type_id = 8) THEN tm.from_firma_id
WHEN (tm.doc_type_id = 16) THEN tm.from_firma_id
ELSE tm.to_firma_id
END = c.num
GROUP BY
1,2,3
HAVING
udf_roundto(SUM(CASE
WHEN (tm.doc_type_id IN (3,8,16) AND tm.mdate >= '#дата_с#') THEN tm.#валюта_преф#from_suma+tm.#валюта_преф#suma_pdv
ELSE 0
END),2) != 0
ORDER BY
1
Спасибо скрипт работает "портянка" с 0-лями превращяется в "элегантные шорты", следующий вопрос, правильно ли я понимаю если я делаю выборку по складу и поставщик на этот склад ничего не поставлял то и отчет должен быть пустой правильно? Но на деле получается что показываются все склады при чем кучей.
То, что вы включили галочку показывать тот или иной параметр (или выключили) не значит, что данный параметр будет (или не будет) учитываться.
Все параметры обрабатываются внутри запроса (до отправки данных на обработку), если так можно сказать. Т.к. вы просто отобразили параметр для конечного пользователя, но не указали как он должен учитываться в SQL запросе, то это значит, что ничего особенного произойти не должно. Что отчет показывал до этого, то и будет показывать после.
Данные в стандартных отчетах выводятся не по складу, а по активным фирмам (по текущей), на которую был проведен документ, а так же в зависимости от отчета который вы используете по различным группам, клиентам, поставщикам или всем сразу.
Возможно, кто-то изменит запрос под ваши нужды с учетом складов (я свой лимит исчерпал).