19.08.2017 06:51
Приветствую!
Постоянно расходятся данные по сумме скидок и в Z отчетах в SET Retail выдает сообщение например:
Общая сумма скидок. В смене: 6463.48/Расчет: 6463.49
и смена при этом соответственно красная, как можно исправить?
Сумма расхождений в 99% случаев +-1 копейка.
22.08.2017 08:17
Думаю написать скрипт SQL который будет править эти копейки

Нашел что при изменении и проверке смены в Crystal в таблице OperGang изменяются следующие столбцы:
SummaDiscCash - копейки в смене +- 0,01
CheckStatus - в таблице OperGang если 1 то смена непроверена (красная), если 0 то смена проверена (зеленая)
CheckTime - время проверки смены
CheckDuration - промежуток времени за сколько прошла проверка смены
CheckMessage - сообщение в смене например: "Общая сумма скидок. В смене: 6463.48/Расчет: 6463.49" если красная смена, если зеленая то поле пустое

Подскажите что еще изменяется в БД ? И еще, что и где меняется в Centrum при изменении и переотправке смены из Crystal в Centrum ?
22.08.2017 13:58
Надо не скрипты писать, а проблему искоренять. У вас внешняя система лояльности или родная? Если родная - то это явно баг. У Кристалл вообще все деньги хранятся в double, и иногда они где-то их забывают округлять...
23.08.2017 07:26
Родная, суммы там хранятся в float даже при создании скрипта трудности с этим float. А где копать тогда? Подскажите. Обычно меняем SummaDiscCash чтоб Общую сумму скидок В смене прировнять к Общей сумме скидок Расчет. Делаем проверить смену и обычно все встает нормально.
23.08.2017 13:17
трудности можно избежать, если сделать Math.Round((decimal)sum, 2); не помню как это в диалекте SQL, но суть такая, сначала сумму привести к decimal, округлить в типе данных decimal, а потом уже обратно перевести в float (или double, в зависимости от типа данных в БД), тогда всё сойдется.
Копать же надо так: вклчюить логирование trace у службы лояльности и в логах службы смотреть, в каких случаях в chequeDisc в кассу уходит в цене (или сумме) позиции знаков после запятой, более чем 2, там же видно будет какая скидка при этом применена.
На самом деле даже просто по chequeDisc можно увидеть запросом вида
sum-Math.Round((decimal)sum, 2)<>0 || price-Math.Round((price)sum, 2)<>0
(в диалект SQL думаю сами сможете перевести)
(предполагаю что где-то так: (на базе SES и при необходимости SES_Archive)
SELECT TOP 1000 *
FROM SES_Archive.[dbo].[ChequeDisc]
where ROUND(cast([DiscSumm] as decimal(18,3)),2)-cast([DiscSumm] as decimal(18,3)) <>0

SELECT TOP 1000 *
FROM SES_Archive.[dbo].[ChequeHead]
where ROUND(cast([Disc_Sum] as decimal(18,3)) ,2)-cast([Disc_Sum] as decimal(18,3)) <>0

SELECT TOP 1000 *
FROM SES_Archive.[dbo].[ChequePos]
where ROUND(cast([Disc_Summ] as decimal(18,3)) ,2)-cast([Disc_Summ] as decimal(18,3)) <>0
)
во вложении результат
К примеру у меня это при применении скидок 262154 и 43
Id DiscType Name DiscGroup Visible DiscountTypeValueFromCash
41 141 Скидка на текущую позицию по купонингу NULL 1 262154
Id DiscType Name DiscGroup Visible DiscountTypeValueFromCash
43 143 Суммируемая скидка по купонингу NULL 1 43
(смотреть скидки в [SES].[dbo].[DiscountType] по DiscountTypeValueFromCash=)

Что является правдой, ибо у кристалл был баг как раз связанный с "забыли окгруглить" при применении купонинга.
Вложения
Тип файла: 7z Скидки.7z (8.2 Кб, 37 просмотров)
24.08.2017 10:43
Спасибо буду копать где там что, попытался выполнить ваши запросы ничего не нашлось в сожалению.
24.08.2017 11:01
Цитата:
talkon Спасибо буду копать где там что, попытался выполнить ваши запросы ничего не нашлось в сожалению.
а запросы выполняли по какой БД?
я пример привел по SES_Archive
надо по-хорошему прогнать их по SES, SES_Archive, [SES_CENTRUM] (если есть центрум - смотря где проблема).
25.08.2017 06:11
Цитата:
grafstroganov а запросы выполняли по какой БД?
я пример привел по SES_Archive
надо по-хорошему прогнать их по SES, SES_Archive, [SES_CENTRUM] (если есть центрум - смотря где проблема).
Прогонял по SES и SES_Archive.
Центрум есть, но изначально смены красные в Кристале
25.08.2017 06:24
По сути у нас и товаров с копейками то нет
25.08.2017 11:18
Цитата:
talkon По сути у нас и товаров с копейками то нет
так речь идет о "по сумме скидок" же?
после применения скидок новые цены у товара или у суммы позиций могут содержать копейки
Часовой пояс GMT +3, время: 11:47.

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