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

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

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

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;
/
 
"Спасибо" Evelyn от:
27.11.2015 20:34  
Neutron
Народ, а как можно получить реальные остатки всех товаров на время запуска скрипта?
Процедура выше выводит только оперативные остатки, если я правильно понял. Если запрашивать только из smgoods, то получаем остатки без оперативной продажи. А вот как получить остатки всех товаров учитывая оперативные продажи и возвраты?
 
27.11.2015 22:18  
OlegON
открой для себя smopergoods
 
"Спасибо" OlegON от:
 


Опции темы



Часовой пояс GMT +3, время: 21:32.

Все в прочитанное - Календарь - RSS - - Карта - Вверх 👫 Яндекс.Метрика
Форум сделан на основе vBulletin®
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.