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

Скрипт, показывающий оперативные остатки : Супермаг Плюс (Супермаг 2000)

22.11.2024 11:11


12.09.2014 09:32
konst, отсутствие ш/к может быть у неактивных карточек, т.к. в случае отсутствия ш/к при создании карточки должны создаваться внутренний. А вот с несколькими ш/к - это вторая проблема, которая оставлена на потом. Я не подумала, выложила сюда полную версию запроса - без баркода все также.. Пока волнуют остатки
12.09.2014 11:01
Цитата:
Evelyn OlegON, где именно?
оперативный остаток - это же остаток с учетом продаж (опер.чеков), а SMGoods хранит доступные остатки, SMOpergoods -уже проданное кол-во по кассе.
Везде. Подразумевалась просто проверка скрипта, раз он ничего не выводит. Сейчас негде проверить. Можно вообще просто прогнать с выводом первых 10 карточек из smcard без других условий. Как вариант - накосячили с выводом. Кстати, МХ игнорится специально?
12.09.2014 11:24
МХ игнорится, потому что скрипт будет работать на самом МХ (у каждого МХ своя БД и чеки только в ней)

выборка по smcard - то же самое.. выводит строки c запятой и пробелами, т.е. прописанное разделение в output без значений v_name И v_article (
12.09.2014 11:55
если на магазине N касс - смены разные, соответственно будет N разных позиций с SALEQUANTITY на один артикул. блин..
12.09.2014 15:22
Цитата:
Evelyn компилируется без ошибок, но ничего не выводит (((
Цитата:
Evelyn то же самое.. выводит строки c запятой и пробелами, т.е. прописанное разделение в output без значений v_name И v_article (
вы уж определитесь, что происходит...
12.09.2014 15:37
Dr.Hyde, ничего не выводит - это и имелось ввиду никаких значений.
Если dbms_output.put_line(v_operquan)
Просто выводит PL/SQL procedure successfully completed.
Или если прописаны разделители между переменными для вывода, то только их выводит и в конце PL/SQL procedure successfully completed.
12.09.2014 16:38
По ш/кодам - можно выбирать один ш/код - в порядке приоритета, можно все через запятую в одном поле как стринговую переменную
по самому скрипту - попробуйте в for убрать блок into переменные.
т.е. в курсоре просто выборка, можете поля обозвать как хотите.
а в строку вывода - значения r.<имя столбца> соответствующие.
15.09.2014 12:23
Поняла свои ошибки, спасибо!

Рабочий вариант:

set serveroutput on
DECLARE
v_operquan real;
v_count integer:=1;

BEGIN
for r in ( select supermag.smcard.name,
supermag.smcard.article,
supermag.smopergoods.salequantity,
supermag.smopergoods.returnquantity,
supermag.smgoods.quantity,
Listagg(supermag.smstoreunits.barcode, ', ')WITHIN GROUP (ORDER BY supermag.smstoreunits.barcode) as barcode
from supermag.smcard,
supermag.smopergoods,
supermag.smgoods,
supermag.smstoreunits
where supermag.smcard.accepted='1'
and supermag.smcard.article=supermag.smgoods.article
and supermag.smcard.article=supermag.smopergoods.article
and supermag.smstoreunits.article=supermag.smcard.article
group by supermag.smcard.name,
supermag.smcard.article,
supermag.smopergoods.returnquantity,
supermag.smopergoods.salequantity,
supermag.smgoods.quantity)
loop
V_count:=V_count+1;
v_operquan:=r.quantity-NVL((r.salequantity),0)+NVL((r.returnquantity),0);
dbms_output.put_line (r.name||', '||r.article||', '||r.barcode||', '||v_operquan);
exit when SQL%NOTFOUND;
end loop;
END;
/
27.11.2015 20:34
Народ, а как можно получить реальные остатки всех товаров на время запуска скрипта?
Процедура выше выводит только оперативные остатки, если я правильно понял. Если запрашивать только из smgoods, то получаем остатки без оперативной продажи. А вот как получить остатки всех товаров учитывая оперативные продажи и возвраты?
27.11.2015 22:18
открой для себя smopergoods
Часовой пояс GMT +3, время: 11:11.

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