[ОТВЕТИТЬ]
Опции темы
23.04.2015 11:49  
Starter
Не знает ли кто - как можно скриптом получить остатки в закупочных ценах (то, что в супермаге в отчете бухгалтерские/остатки в закупочных ценах) ?
В бизнес анализе такие остатки берутся из SVARemainsCP, которая, в свою очередь, ссылается на TTRemains, в которой, в свою очередь есть поле CP_FULL
Однако, там пусто. Количество есть, а вот себестоимости нет. Какая процедура заполняет эти остатки ? Пробовали supermag.Rep_Ostatki - количество заполняется, CP_FULL - нет.
 
23.04.2015 11:59  
OlegON
Supermag.Remains.Calс? Откуда берет данные отчет супермага ? - Страница 2 ты же видел... Не оно?
 
23.04.2015 12:11  
Starter
Вряд ли оно, вариант execute supermag.remains.calc(sysdate-1, FALSE, 23, 0, FALSE); срабатывает только на количество, CP_FULL пусто. Судя по описанию Описание CALC нет в этой процедуре параметра для расчета этой С/С.
 
23.04.2015 12:14  
svtl
Нужно использовать fixremincome (или fixremains).calc

если по-порядку:
supermag.SQL_Filter.Clear_AllFilters; -- чистим все фильтры

-- далее можно прописать фильтры вручную - примерно так:
supermag.SQL_Filter.Set_ArticleFromSQL('select article from supermag.smcard'); -- все артикулы
supermag.SQL_Filter.Set_LocFromSQL('select 7 from dual'); -- код МХ

-- либо используем параметры отчета и задаем фильтры по-другому
-- (см.параметры в описании RepExample_ReadMe.doc)
supermag.RepTools.LoadClass(:P_Group_All, :P_BGroup, :P_Group_Tree); -- для артикулов
supermag.RepTools.LoadLoc(:P_Stored_All,:P_Stored_Name,:P_Partner,null,:P_DATE); --для МХ

(дальше можно побаловаться со списокм МХ - убрать те из них, по которым остатки получить нельзя)
-- и последняя процедура - расчет остатков.
-- если нужна детализация по налогам и поставщикам - то
delete from supermag.ttremincome;
supermag.FixRemIncome.Calc(:P_Date);
-- и результат в ttremincome

-- если такая детализация не нужна -
delete from supermag.ttremains;
supermag.FixRemains.Calc(:P_Date);
-- и результат в ttremains

Вообще, когда речь идет о закупочных ценах - с опорой на товародвижение - Rеmains.calc не подходит. При расчете остатков (как в отчете Остатки группы Товарные) там опционально делается заполнение таблицы ttremains ценами посл. прихода, но не себестоимостью
 
"Спасибо" svtl от:
23.04.2015 13:00  
Starter
Требовалось именно то, что в бухгалтерских. Про цены последнего прихода - отдельная песня, что с ними делать - понятно.

Проверили следующее:
execute supermag.FixRemains.calc(trunc(sysdate-1));
затем:
select sum(rem.Quantity),sum(rem.cp_full) from supermag.TTRemains rem;
Получаем цифры сальдо из отчета Товарный отчет в закупочных ценах (бухгалтерские).

затем:
select sum(rem.Quantity),sum(round(rem.cp_full,2)) from supermag.TTRemains rem,supermag.SVCardName crd where crd.article = rem.article and crd.datatype in (0,3,4);

Получаем то, что в отчете остатки в закупочных ценах (бухгалтерские).

К сожалению, так понимаю, совместить остаток в закупочных ценах и остаток в ценах ПП (цены из ttostatki2) в рамках одного запроса не получится ?
 
"Спасибо" Starter от:
23.04.2015 13:23  
Starter
А нет, совместить получится.
Сперва рассчитываем остатки с заполнением таблиц ttostatki1,ttostatki2, затем рассчитываем остатки в закупочных ценах.

call supermag.Rep_Ostatki(to_char(sysdate-54,'dd.mm.yyyy'),0,0,0,2,0,0,0);
execute supermag.FixRemains.calc(trunc(sysdate-54));
select sum(rem.Quantity),sum(round(rem.cp_full,2)) from supermag.TTRemains rem,supermag.SVCardName crd where crd.article = rem.article and crd.datatype in (0,3,4);
SELECT sum(rem.qty),SUM(nvl(round(o2.Price1*rem.Qty, o2.PricePrec),0)) FROM SVARemainsCP REM,ttostatki2 o2,supermag.SVCardName crd where crd.article = rem.article and o2.Article(+)=rem.Article and o2.locid(+)=rem.StoreLoc and crd.datatype in (0,3,4);
 
"Спасибо" Starter от:
23.04.2015 13:30  
Starter
Ну или точнее в одном запросе:
SELECT sum(rem.qty),sum(rem.cp),SUM(nvl(round(o2.Price1*rem.Qty, o2.PricePrec),0)) FROM SVARemainsCP REM,ttostatki2 o2,supermag.SVCardName crd where crd.article = rem.article and o2.Article(+)=rem.Article and o2.locid(+)=rem.StoreLoc and crd.datatype in (0,3,4);

Ну и нужно учитывать, что остатки "в закупочных ценах" и "остатки в ценах последнего прихода" - это две разные вещи, даже по количеству. Если есть накладные в "розовом статусе", то остаток в ценах ПП изменится, остаток в зак. ценах - нет.
 
"Спасибо" Starter от:
23.04.2015 14:28  
svtl
Раньше вместо Rep_Ostatki использовалось явно remains.calc(sysdate-1, FALSE, 23, 0, FALSE);
там как раз 23 - это статус доков красный и зеленый. т.е. если я вместо 23 ставлю 3 - то получаю остатки в кол-ве только по "зеленым" документам, т.е. как и после использования
FixRemains.calc (при условии расчитанного товародвижения)
 
"Спасибо" svtl от:
 
Опции темы



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

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