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

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

22.11.2024 21:42


25.04.2016 21:00
Друзья, что делать с данным крайне информативным сообщением?



В C:\SM2000\Data ничо полезного не прочитал.
25.04.2016 21:12
Цитата:
DMaslov Друзья, что делать с данным крайне информативным сообщением?



В C:\SM2000\Data ничо полезного не прочитал.
Ну первый самый глупый вопрос - а они есть по факту в этой ведомости? А по другим ведомостям создавались?
25.04.2016 21:26
Да, полагаю, что лучше было бы заскринить не ряд нулей справа, а какие-то числа в этой колонке...
25.04.2016 21:56
Цитата:
bob Ну первый самый глупый вопрос - а они есть по факту в этой ведомости? А по другим ведомостям создавались?
Токо хотел спросить "а кто это ОНИ", и меня озарило :).

Тем не менее, с разработчиков СуперМАГ ответственности это не снимает - могли бы и пояснить, что ПН/РН уже есть.

Но проблемы это не снимает. ПН/РН удалил, а сообщение все то же.
25.04.2016 22:02
Цитата:
DMaslov Токо хотел спросить "а кто это ОНИ", и меня озарило :).

Тем не менее, с разработчиков СуперМАГ ответственности это не снимает - могли бы и пояснить, что ПН/РН уже есть.

Но проблемы это не снимает. ПН/РН удалил, а сообщение все то же.
Ну когда я имел ввиду - "ОНИ" - я хотел спросить - есть ли вообще отклонения в ведомости. Если есть, то второй вопрос - связанные документы, созданные на основании данного документа ПН и РН есть? Если нет - третий вопрос - тестово создать сличилку создать ПН и РН - создаются или нет?
25.04.2016 22:37
Цитата:
bob есть ли вообще отклонения в ведомости
В точку.

"Забыл" сообщить, что эта ведомость - выравнивание остатков в магазинной и в центральной БД. Изымаем ПН/РН, пришедшие из магазинной БД, делаем расчет остатков по данной сличилке в центральной БД, создаем по ней ПН/РН. Еще завтра какие-нить отличия Центр/магазин выявлю, не вошедшие в сличилку. И вуаля - остатки в центре и магазине сходятся. Такова задача. О возникших проблемах поговорим.
12.05.2016 15:01
К сожалению, обнаружил, что остаток на дату в СуперМАГе считается иногда неверно. Что по кнопке "остатки" в сличительной ведомости, что в отчете "остатки на дату".
Печально, что программе уже много лет, а такая элементарная арифметика страдает. Если что-то не заметил я сам, подскажите.

Поэтому уравнивать остатки в базах буду текущие, в SMGOODS, и далее - периодическая сверка баз.
12.05.2016 16:08
Цитата:
DMaslov ... [url="https://storage.olegon.ru/supermag/upload/2016/restsss1.png"]...
По двум верхним вложениям каким таким образом при отборе всего и вся вдруг появляется сличительная ведомость от 21,04,2015, фотки ЦО и МХ?
Что тогда на вкладках остатки и там и там?
12.05.2016 19:57
Начинал работать со сличилкой.:
SQL код:
------- перенос остатков в центр из магазинной БД
------- различие остатков произошло вследствие различия документов
------- выкапывать все различия документов рехнешься, поэтому переносим остатки

---- отменяем ПН и РН, пришедшие из магазинной БД вслед за сличилкой

---- в сличилку надо добавить товары, не входящие в нее (значит, в магазинной БД они по нулям), но имеющие остаток в центре
--select * from smlocprices where locid = 46
delete from smspec where doctype = 'RL' and docid = 'СВЮГ00003' and specitem > 8961


insert into smspec
select 'RL',  'СВЮГ00003', 8961+rownum, 8961+rownum, article, 0, supermag.SMGETPRICEONDATERL(article, 43, 46, to_date('25.04.2016', 'dd.mm.yyyy')), 0, null, null, 0,
       supermag.SMGETPRICEONDATERL(article, 43, 46, to_date('25.04.2016', 'dd.mm.yyyy')), null,null, null
from (
select article
  from (
    select spc.article, nvl(sum(
                                   decode(head.doctype,
                                          'WI', spc.quantity,
                                          'CR', spc.quantity,
                                          'CS', -spc.quantity,
                                          'WO', -spc.quantity,
                                          0
                                         )
                               ), 0
                           ) quantity
     
      from smdocuments head, smspec spc
     where head.doctype = spc.doctype
       and head.id = spc.docid
       and head.createdat <= to_date('25.04.2016', 'dd.mm.yyyy')
       and head.docstate in(2, 3)
       and spc.article = '003769'
       and (head.location = 46 or head.locationfrom = 46 or head.locationto = 46)
     group by spc.article
)
where quantity != 0
minus
select article from smspec where doctype = 'RL' and docid = 'СВЮГ00003'
)

insert into smspecrl
select 'RL',  'СВЮГ00003', specitem, 0, 0, 0, 0
from smspec
where doctype = 'RL' and docid = 'СВЮГ00003' and specitem > 8961


---- затем рассчитываем остатки в сличилке, создаем ПН и РН в центре
---- они, конечно, будут отличаться от ПН и РН в магазинной БД, но по их итогам остатки должны совпасть

-- не совпадают, разбираемся
-- создаем таблицы в обеих БД

create table rest as
    select spc.article, nvl(sum(
                                   decode(head.doctype,
                                          'WI', spc.quantity,
                                          'CR', spc.quantity,
                                          'CS', -spc.quantity,
                                          'WO', -spc.quantity,
                                          0
                                         )
                               ), 0
                           ) quantity
     
      from smdocuments head, smspec spc
     where head.doctype = spc.doctype
       and head.id = spc.docid
       and head.createdat <= to_date('25.04.2016', 'dd.mm.yyyy')
       and head.docstate in(2, 3)
       and (head.location = 46 or head.locationfrom = 46 or head.locationto = 46)
     group by spc.article


select rest.article, rest.quantity, rest1.quantity
from rest, rest@DBNOHT18 rest1
where rest.article = rest1.article
and rest.quantity != rest1.quantity

---- К сожалению, выяснилось, что остаток на дату в СуперМАГе считается иногда неверно. Что по кнопке "остатки" в сличительной ведомости, что в отчете "остатки на дату".
---- Поэтому уравнивать остатки в базах будем текущие, в SMGOODS, и далее - периодическая сверка баз. 


Далее решил с остатками на дату не работать, работать с текущими, SMGOODS. Создаем ПН и РН, в них отбираем различия.

SQL:
SQL код:
delete from smspec where doctype = 'WO' and docid = 'РНПЮ0000000008'
insert into smspec(doctype, docid, specitem, displayitem, article, quantity,
                   itemprice,
                   totalprice,
                   itempricenotax,
                   totalpricenotax, itempricecur, totalpricecur, causetype, causeid, causespecitem)
select 'WO',  'РНПЮ0000000008', rownum, rownum, article, abs(diff),
       nvl(supermag.SMGETPRICEONDATERL(article, 43, 46, to_date('25.04.2016', 'dd.mm.yyyy')), 0.01),
       nvl(abs(diff) * supermag.SMGETPRICEONDATERL(article, 43, 46, to_date('25.04.2016', 'dd.mm.yyyy')), 0.01),
       null, null, 
       nvl(supermag.SMGETPRICEONDATERL(article, 43, 46, to_date('25.04.2016', 'dd.mm.yyyy')), 0.01),
       nvl(abs(diff) * supermag.SMGETPRICEONDATERL(article, 43, 46, to_date('25.04.2016', 'dd.mm.yyyy')), 0.01),
       null,null, null

from (
select r2.article, r1.quantity, r2.quantity, nvl(r2.quantity, 0) - nvl(r1.quantity, 0) diff
  from smgoods r1,
   smgoods@DBNOHT18 r2 
   where r1.article(+) = r2.article
   and r1.storeloc (+) = 46
   and r2.storeloc = 46
   and nvl(r1.quantity, 0) != nvl(r2.quantity, 0)
      )
where diff < 0      
 
delete from smspec where doctype = 'WI' and docid = 'ПНЮГ02810'
insert into smspec(doctype, docid, specitem, displayitem, article, quantity,
                   itemprice,
                   totalprice,
                   itempricenotax,
                   totalpricenotax, itempricecur, totalpricecur, causetype, causeid, causespecitem)
select 'WI',  'ПНЮГ02810', rownum, rownum, article, abs(diff),
       nvl(supermag.SMGETPRICEONDATERL(article, 43, 46, to_date('25.04.2016', 'dd.mm.yyyy')), 0.01),
       nvl(abs(diff) * supermag.SMGETPRICEONDATERL(article, 43, 46, to_date('25.04.2016', 'dd.mm.yyyy')), 0.01),
       null, null, 
       nvl(supermag.SMGETPRICEONDATERL(article, 43, 46, to_date('25.04.2016', 'dd.mm.yyyy')), 0.01),
       nvl(abs(diff) * supermag.SMGETPRICEONDATERL(article, 43, 46, to_date('25.04.2016', 'dd.mm.yyyy')), 0.01),
       null,null, null

from (
select r2.article, r1.quantity, r2.quantity, nvl(r2.quantity, 0) - nvl(r1.quantity, 0) diff
  from smgoods r1,
   smgoods@DBNOHT18 r2 
   where r1.article(+) = r2.article
   and r1.storeloc (+) = 46
   and r2.storeloc = 46
   and nvl(r1.quantity, 0) != nvl(r2.quantity, 0)
      )
where diff > 0      

update smdocuments set
totalsum = (select sum(totalprice) from smspec where docid = 'ПНЮГ02810' and doctype = 'WI'),
totalsumcur = (select sum(totalprice) from smspec where docid = 'ПНЮГ02810' and doctype = 'WI')
where id = 'ПНЮГ02810' and doctype = 'WI'

update smdocuments set
totalsum = (select sum(totalprice) from smspec where docid = 'РНПЮ0000000008' and doctype = 'WO'),
totalsumcur = (select sum(totalprice) from smspec where docid = 'РНПЮ0000000008' and doctype = 'WO')
where id = 'РНПЮ0000000008' and doctype = 'WO' 



Отличия цен уже скопировал прямо в SMPRICES, поскольку устал копать.

SQL:
SQL код:
insert into smprices(storeloc, article, pricetype, price)
select p2.storeloc, p2.article, 43, p2.price
  from smprices p1,
   smprices@DBNOHT18 p2,
   smgoods@DBNOHT18 r2
   where p1.article (+) = p2.article
   and p1.storeloc (+) = p2.storeloc
   and p1.pricetype (+) = p2.pricetype
   and p2.storeloc = 46
   and p2.pricetype = 43
   and p2.article = r2.article
   and p2.storeloc = r2.storeloc
   and r2.quantity != 0
   and nvl(p1.price, 0) != nvl(p2.price, 0) 


Итого - остатки перенесены из магазина в центр.
12.05.2016 20:07
Горе от ума... Вы такими идеями доломаете себе базу вконец. Где заполнение истории документов (smdoclog), где таблица налогов (smspectax)? Это навскидку.
Часовой пояс GMT +3, время: 21:42.

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