Форум OlegON > Программы и оборудование для автоматизации торговли > Системы автоматизации торговли > Супермаг Плюс (Супермаг 2000)

Создание отчета для вывода суммы на остаток с приходных накладных : Супермаг Плюс (Супермаг 2000)

22.11.2024 7:42


27.02.2019 18:15
Добрый день.
Появилась необходимость создать отчет для вывода суммы на остаток с приходных накладных. За основу взята таблица FFMAPREP, как наиболее подходящая.
Собственно описание задачи:
Нужно отобрать все документы у которых разница значения WI (приход) и сумма значений WO (расход) + CS (продажи) не равна 0, т.е. еще остался товар от данного прихода

WI - (WO+CS)) или WI-WO-CS != 0 (не равна нулю) .
Взять остаток из каждого документа, отобранного таким образом и перемножить на цену товара (расчитывается путем деления суммы приходной накладной на кол-во), например:
Есть док 1 и док 2 в обоих остаток 5 шт и цена по 20$ (приход 100шт сумма 2000$)- нам нужно вывести в бизнес-анализе таблицу вида -

док1 цена:20 кол-во 5 сумма 100
док2 цена:20 кол-во 5 сумма 100

Как вводные данные используем артикул, номенклатуру, группу товаров и .д.
27.02.2019 20:55
Что не получается-то?
28.02.2019 09:56
не получается построить логику запросов
28.02.2019 10:01
Какой запрос удалось построить сейчас?
28.02.2019 10:37
select ((select SALEQ from FFMAPREP WHERE SALETYPE = 'WI' AND INCOMEID = '40000007905' AND ARTICLE = '000005')
-(select sum(SALEQ) from FFMAPREP WHERE SALETYPE = 'WO' AND INCOMEID = '40000007905' AND ARTICLE = '000005')
-(select SALEQ from FFMAPREP WHERE SALETYPE = 'CS' AND INCOMEID = '40000007905' AND ARTICLE = '000005'))
* ( (select SALESUM from FFMAPREP WHERE SALETYPE = 'WI' AND INCOMEID = '40000007905' AND ARTICLE = '000005' )
/ (select SALEQ from FFMAPREP WHERE SALETYPE = 'WI' AND INCOMEID = '40000007905' AND ARTICLE = '000005' ) ) AS "SUM" from dual;

этот запрос делает расчет суммы (остаток умножает на цену 1 ед товара), но только по одному документу
Нужно вместо 40000007905 задать какую то переменную IncomeId в которую будут передаваться данные с запроса вида

select INCOMEID from FFMAPREP where article = '000005' and SALETYPE = 'WI'.

но такой запрос возвращает множество значений и вот тут самая проблема, у меня с SQL(PL/SQL) совсем плохо, точнее никак (я больше по JS) и я не знаю как обрабатывать результат выборки - по логике нужно множество полученных значений запихнуть в массив, циклично перебрать, получить множество переменных IncomeId[i] и каждую передать в пред запрос, получив несколько строк в которых будет остаток и сумма по всем отобранным документам
28.02.2019 14:08
Вместо ffmaprep лучше использовать fvmaprep.
Сильно в условия не вникал, кучу условий еще соблюсти надо бы - возвраты например.
Но на базе этого можно двигаться дальше.
SQL код:
select inc.article, inc.docid in_doc, inc.qty in_qty, inc.sum in_sum, NVL(outc.qty, 0) out_qty, NVL(outc.sum, 0) out_sum,
      (inc.qty-NVL(outc.qty, 0)) ost_qty
from
(   select m.article, m.saleid docid, sum(m.saleq) qty, sum(m.salesum) sum 
      from FVMAPREP m
     where m.article = '512345' and m.saletype = 'WI' and m.saleop=0
     group by m.article, m.saleid
) inc,
(   select m.article, m.incomeid docid, sum(m.quantity) qty, sum(decode(m.SaleQ, 0, 0, m.SaleSum*m.Quantity/m.SaleQ)) sum 
      from FVMAPREP m
     where article = '512345' and saletype in ('WO','CS') and m.saleop=1
     group by m.article, m.incomeid
) outc
where inc.article=outc.article(+) and inc.docid=outc.docid(+)
  and (inc.qty-NVL(outc.qty,0))>0
; 
28.02.2019 17:15
Большое спасибо. Все то что нужно, только вопрос - Как результат этого запроса полностью вывести в бизнес анализе?
04.03.2019 04:05
Цитата:
OnixO Большое спасибо. Все то что нужно, только вопрос - Как результат этого запроса полностью вывести в бизнес анализе?
Хороший вопрос. Я краем уха слышал что в бизнес анализе можно использовать sql запросы а вот как это работает не понял. Может у кого то есть пример простенький?
04.03.2019 04:31
Есть документация на FTP HELP/SM+/Бизнес анализ
04.03.2019 07:14
В бизнес-анализе есть куб "Товародвижение FIFO".
На его основе и создай задачу, которая тебе нужна.
И не понадобятся дополнительные запросы.
Часовой пояс GMT +3, время: 07:42.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.