[ОТВЕТИТЬ]
Опции темы
11.09.2014 10:50  
skier2
Добрый день!

Имеем в базе Супермага оперативные чеки с неправильной датой, возможности заново выгрузить данные с касс и поправить выгрузку нет (данные потеряны).
Возможно с помощью Sql-запроса поменять дату в оперативных чеках за определенную смену? Чтобы потом перевести их в закрытые следующим скриптом:

Код:
DECLARE
-- Номер места хранения. Берем из Разделы->Склады и магазины.
   vlocid          NUMBER := 2;
-- Номер кассы
   vdesknum        NUMBER := 2;
-- Номер смены
   vznum           NUMBER := 1834;
-- Дата закрытия смены. Заменить на нужную.
   vclosedate      DATE   := TO_DATE ('13.04.2013', 'DD.MM.YYYY');

BEGIN
-- Чистим таблицы
   DELETE FROM smcashz
         WHERE locid = vlocid AND desknum = vdesknum AND znum = vznum;

   DELETE FROM smcashdisccard
         WHERE locid = vlocid AND desknum = vdesknum AND znum = vznum;

   DELETE FROM smcashdisc
         WHERE locid = vlocid AND desknum = vdesknum AND znum = vznum;

   DELETE FROM smcashcredcardchecks
         WHERE locid = vlocid AND desknum = vdesknum AND znum = vznum;

   DELETE FROM smcashchecksprinted
         WHERE locid = vlocid AND desknum = vdesknum AND znum = vznum;

   DELETE FROM smcashcheckcomplexitems
         WHERE locid = vlocid AND desknum = vdesknum AND znum = vznum;

   DELETE FROM smcashcheckitems
         WHERE locid = vlocid AND desknum = vdesknum AND znum = vznum;

   DELETE FROM smcashchecks
         WHERE locid = vlocid AND desknum = vdesknum AND znum = vznum;

-- Добавляем смену
   INSERT INTO smcashz (locid, desknum, znum, closedate, zready, doccreated)
        VALUES (vlocid, vdesknum, vznum, vclosedate, 1, 0);

-- Переносим оперативные чеки
   INSERT INTO smcashchecks (locid, desknum, znum, checknum, printtime, cashier, totalsum, opcode, depid)
      SELECT o.locid, o.desknum, o.znum, o.checknum, o.printtime, o.cashier, o.totalsum, o.opcode, 0
        FROM smonlinechecks o
       WHERE o.locid = vlocid AND o.desknum = vdesknum AND o.znum = vznum;

-- Переносим товары из оперативных чеков
   INSERT INTO smcashcheckitems (locid, desknum, znum, checknum, item, article, quantity, itemprice, totalsum, credcardbrand, seller, depid, subarticle)
      SELECT o.locid, o.desknum, o.znum, o.checknum, o.item, o.article, o.quantity, o.itemprice, o.totalsum,
             o.credcardbrand, o.seller, o.depid, o.subarticle
        FROM smonlinecheckitems o
       WHERE o.locid = vlocid AND o.desknum = vdesknum AND o.znum = vznum;

-- Переносим скидки по дисконтам
  insert into smcashdisсcard(locid, desknum, znum, checknum, code, discsum)
  select o.locid, o.desknum, o.znum, o.checknum, o.code, o.discsum
  from smonlinedisccard o
  where o.locid = vLocID and o.desknum = vDeskNum and o.znum = vZNum;

-- Удаляем оперативные чеки
   DELETE FROM smonlinechecksprinted
         WHERE locid = vlocid AND desknum = vdesknum AND znum = vznum;

   DELETE FROM smonlinedisccard
         WHERE locid = vlocid AND desknum = vdesknum AND znum = vznum;

   DELETE FROM smonlinechecks
         WHERE locid = vlocid AND desknum = vdesknum AND znum = vznum;

   DELETE FROM smonlinecheckitems
         WHERE locid = vlocid AND desknum = vdesknum AND znum = vznum;

   COMMIT;
END;
/
Версия Супермаг 1.025.1, Оракл 8.1.6
 
11.09.2014 10:54  
Mtirt
А даты чеков обязательно менять? Дата закрытия Z-отчета не устроит?
 
11.09.2014 12:34  
skier2
Цитата:
Сообщение от Mtirt
А даты чеков обязательно менять? Дата закрытия Z-отчета не устроит?
Дата закрытия Z-отчета устроит, но хотелось чтобы дата кассовых чеков и Z-отчета совпадали.
И отчет "Распределение сумм в чеках будет правильным"
 
11.09.2014 14:32  
kadr
вот этот кусок
Цитата:
-- Переносим оперативные чеки
INSERT INTO smcashchecks (locid, desknum, znum, checknum, printtime, cashier, totalsum, opcode, depid)
SELECT o.locid, o.desknum, o.znum, o.checknum, o.printtime, o.cashier, o.totalsum, o.opcode, 0
FROM smonlinechecks o
WHERE o.locid = vlocid AND o.desknum = vdesknum AND o.znum = vznum;
переписываем так
Цитата:
-- Переносим оперативные чеки
INSERT INTO smcashchecks (locid, desknum, znum, checknum, printtime, cashier, totalsum, opcode, depid)
SELECT o.locid, o.desknum, o.znum, o.checknum, o.printtime+1, o.cashier, o.totalsum, o.opcode, 0
FROM smonlinechecks o
WHERE o.locid = vlocid AND o.desknum = vdesknum AND o.znum = vznum;
где +1 это прибавить 1 день, ну и дальше по логике, от того на сколько и в какую сторону надо изменить дату, сами ставьте знак и величину
 
"Спасибо" kadr от:
11.09.2014 14:39  
skier2
Цитата:
Сообщение от kadr
вот этот кусок

переписываем так

где +1 это прибавить 1 день, ну и дальше по логике, от того на сколько и в какую сторону надо изменить дату, сами ставьте знак и величину
Спасибо всем за участие.
Ночью сделаем, когда пользователей не будет и сохранив бэкап базы.
 
11.09.2014 15:43  
skier2
Просматривал оперативные чеки и заметил, один чек с датой 04.09.2014, а остальные с датой 14.09.2014.
Как в этом случае поменять определенные (по номерам чеков) оперативные чеки, за одну смену?
 
15.09.2014 07:58  
kadr
поставить условие, по которому будут однозначно определяться необходимые чеки
 
 
Опции темы



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

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