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

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

29.03.2024 12:33


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



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



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

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

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

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

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

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

Поэтому уравнивать остатки в базах буду текущие, в SMGOODS, и далее - периодическая сверка баз.
12.05.2016 16:08
-Den-
 
Цитата:
DMaslov ... [url="https://storage.olegon.ru/supermag/upload/2016/restsss1.png"]...
По двум верхним вложениям каким таким образом при отборе всего и вся вдруг появляется сличительная ведомость от 21,04,2015, фотки ЦО и МХ?
Что тогда на вкладках остатки и там и там?
12.05.2016 19:57
DMaslov
 
Начинал работать со сличилкой.:
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+rownum8961+rownumarticle0supermag.SMGETPRICEONDATERL(article4346to_date('25.04.2016''dd.mm.yyyy')), 0nullnull0,
       
supermag.SMGETPRICEONDATERL(article4346to_date('25.04.2016''dd.mm.yyyy')), null,nullnull
from 
(
select article
  from 
(
    
select spc.articlenvl(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(23)
       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'specitem0000
from smspec
where doctype 
'RL' and docid 'СВЮГ00003' and specitem 8961


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

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

create table rest 
as
    
select spc.articlenvl(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(23)
       and (
head.location 46 or head.locationfrom 46 or head.locationto 46)
     
group by spc.article


select rest
.articlerest.quantityrest1.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(doctypedocidspecitemdisplayitemarticlequantity,
                   
itemprice,
                   
totalprice,
                   
itempricenotax,
                   
totalpricenotaxitempricecurtotalpricecurcausetypecauseidcausespecitem)
select 'WO',  'РНПЮ0000000008'rownumrownumarticleabs(diff),
       
nvl(supermag.SMGETPRICEONDATERL(article4346to_date('25.04.2016''dd.mm.yyyy')), 0.01),
       
nvl(abs(diff) * supermag.SMGETPRICEONDATERL(article4346to_date('25.04.2016''dd.mm.yyyy')), 0.01),
       
nullnull
       
nvl(supermag.SMGETPRICEONDATERL(article4346to_date('25.04.2016''dd.mm.yyyy')), 0.01),
       
nvl(abs(diff) * supermag.SMGETPRICEONDATERL(article4346to_date('25.04.2016''dd.mm.yyyy')), 0.01),
       
null,nullnull

from 
(
select r2.articler1.quantityr2.quantitynvl(r2.quantity0) - nvl(r1.quantity0diff
  from smgoods r1
,
   
smgoods@DBNOHT18 r2 
   where r1
.article(+) = r2.article
   
and r1.storeloc (+) = 46
   
and r2.storeloc 46
   
and nvl(r1.quantity0) != nvl(r2.quantity0)
      )
where diff 0      
 
delete from smspec where doctype 
'WI' and docid 'ПНЮГ02810'
insert into smspec(doctypedocidspecitemdisplayitemarticlequantity,
                   
itemprice,
                   
totalprice,
                   
itempricenotax,
                   
totalpricenotaxitempricecurtotalpricecurcausetypecauseidcausespecitem)
select 'WI',  'ПНЮГ02810'rownumrownumarticleabs(diff),
       
nvl(supermag.SMGETPRICEONDATERL(article4346to_date('25.04.2016''dd.mm.yyyy')), 0.01),
       
nvl(abs(diff) * supermag.SMGETPRICEONDATERL(article4346to_date('25.04.2016''dd.mm.yyyy')), 0.01),
       
nullnull
       
nvl(supermag.SMGETPRICEONDATERL(article4346to_date('25.04.2016''dd.mm.yyyy')), 0.01),
       
nvl(abs(diff) * supermag.SMGETPRICEONDATERL(article4346to_date('25.04.2016''dd.mm.yyyy')), 0.01),
       
null,nullnull

from 
(
select r2.articler1.quantityr2.quantitynvl(r2.quantity0) - nvl(r1.quantity0diff
  from smgoods r1
,
   
smgoods@DBNOHT18 r2 
   where r1
.article(+) = r2.article
   
and r1.storeloc (+) = 46
   
and r2.storeloc 46
   
and nvl(r1.quantity0) != nvl(r2.quantity0)
      )
where diff 0      

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

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



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

SQL:
SQL код:
insert into smprices(storelocarticlepricetypeprice)
select p2.storelocp2.article43p2.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.price0) != nvl(p2.price0


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

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