Files
psp_api/prisma/migrations/20260609075207_optimize_sale_invoices/migration.sql
T

51 lines
1.1 KiB
SQL
Raw Normal View History

-- ALTER TABLE
ALTER TABLE `sales_invoices`
ADD COLUMN `last_attempt_no` INT NULL,
ADD COLUMN `last_tsp_status` ENUM(
'NOT_SEND',
'QUEUED',
'FISCAL_QUEUED',
'SEND_FAILURE',
'SUCCESS',
'FAILURE'
) NULL;
-- INDEX
CREATE INDEX `sales_invoices_pos_id_invoice_date_idx`
ON `sales_invoices` (`pos_id`, `invoice_date`);
-- BACKFILL LAST ATTEMPT
UPDATE sales_invoices si
JOIN (
SELECT invoice_id, attempt_no, status
FROM (
SELECT
invoice_id,
attempt_no,
status,
ROW_NUMBER() OVER (
PARTITION BY invoice_id
ORDER BY created_at DESC
) rn
FROM sale_invoice_tsp_attempts
) t
WHERE rn = 1
) la ON la.invoice_id = si.id
SET
si.last_attempt_no = la.attempt_no,
si.last_tsp_status = la.status;
-- SET NOT_SEND FOR NO ATTEMPTS
UPDATE sales_invoices si
LEFT JOIN sale_invoice_tsp_attempts att
ON att.invoice_id = si.id
SET
si.last_attempt_no = NULL,
si.last_tsp_status = 'NOT_SEND'
WHERE att.invoice_id IS NULL;
-- SAFETY FILL
UPDATE sales_invoices
SET last_tsp_status = 'NOT_SEND'
WHERE last_tsp_status IS NULL;