SQL-скрипты
Могут пригодиться в особых ситуаций для решения проблем, для которых не предусмотрено кнопок в интерфейсе «админки».
Скрипт, сбрасывающий блокировки получателей рассылок в telegram
Tсли система конкретному гостю трижды не смогла отправить сообщение, то она перестанет пытаться это делать до тех пор, пока гость не проявит какую-то активность в боте.
Чтобы сбросить эту блокировку - можно использовать скрипт:
UPDATE additional_contact SET telegram_fail_count = 0 WHERE type = 1 AND is_deleted = 0 AND telegram_fail_count > 0;
Скрипт, позволяющий посчитать через заказы какого официанта было большее начисление бонусов за период
WITH EmployeeBonuses AS (
SELECT
c.[id] as check_id,
EmployeeNode.value('@name', 'NVARCHAR(255)') AS EmployeeName,
EmployeeNode.value('@code', 'NVARCHAR(50)') AS EmployeeCode,
EmployeeNode.value('@role', 'NVARCHAR(10)') AS EmployeeRole,
EmployeeNode.value('@id', 'NVARCHAR(100)') AS EmployeeId,
(SELECT SUM(BonusNode.value('@sum', 'DECIMAL(18,2)'))
FROM c.xml_native.nodes('/CHECK/CHECKDATA/CHECKBONUSES/BONUS') AS T(BonusNode)
) AS CheckBonusSum
FROM
[dbo].[check] c
CROSS APPLY
c.xml_native.nodes('/CHECK/CHECKDATA/CHECKPERSONS/PERSON') AS T(EmployeeNode)
)
SELECT
EmployeeName,
EmployeeCode,
EmployeeRole,
SUM(CheckBonusSum) AS TotalBonus,
COUNT(DISTINCT check_id) AS CheckCount
FROM
EmployeeBonuses
WHERE
CheckBonusSum IS NOT NULL
GROUP BY
EmployeeName, EmployeeCode, EmployeeRole
ORDER BY
TotalBonus DESC;