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

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

29.03.2024 8:19


23.04.2015 11:49
Starter
 
Не знает ли кто - как можно скриптом получить остатки в закупочных ценах (то, что в супермаге в отчете бухгалтерские/остатки в закупочных ценах) ?
В бизнес анализе такие остатки берутся из SVARemainsCP, которая, в свою очередь, ссылается на TTRemains, в которой, в свою очередь есть поле CP_FULL
Однако, там пусто. Количество есть, а вот себестоимости нет. Какая процедура заполняет эти остатки ? Пробовали supermag.Rep_Ostatki - количество заполняется, CP_FULL - нет.
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 ценами посл. прихода, но не себестоимостью
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) в рамках одного запроса не получится ?
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);
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);

Ну и нужно учитывать, что остатки "в закупочных ценах" и "остатки в ценах последнего прихода" - это две разные вещи, даже по количеству. Если есть накладные в "розовом статусе", то остаток в ценах ПП изменится, остаток в зак. ценах - нет.
23.04.2015 14:28
svtl
 
Раньше вместо Rep_Ostatki использовалось явно remains.calc(sysdate-1, FALSE, 23, 0, FALSE);
там как раз 23 - это статус доков красный и зеленый. т.е. если я вместо 23 ставлю 3 - то получаю остатки в кол-ве только по "зеленым" документам, т.е. как и после использования
FixRemains.calc (при условии расчитанного товародвижения)
24.02.2017 23:15
Starter
 
Цитата:
svtl Вообще, когда речь идет о закупочных ценах - с опорой на товародвижение - Rеmains.calc не подходит. При расчете остатков (как в отчете Остатки группы Товарные) там опционально делается заполнение таблицы ttremains ценами посл. прихода, но не себестоимостью
Подниму ка старую тему про расчеты остатков - А как сделать так, чтобы в ttremains оказались цены последнего прихода ?
24.03.2017 16:57
svtl
 
procedure Calc
( i_Date in date, -- расчетная дата
i_IsAddingData in boolean default FALSE, -- признак добавления данных
i_DocStateMode in number default 23, -- режим учета статуса документов
i_CalcMode in number default REMCALCMODE_AUTOMAT, -- метод расчета
i_IsAllRemains in boolean default FALSE ); -- признак учета нулевых остатков


i_CalcMode = 0 - без цен
= 1 - учетные цены
== 2 - цены посл. приходов.
Вроде так
Часовой пояс GMT +3, время: 08:19.

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