- Detect missing invoice lines, open orders not invoiced, quantity drops, price changes - Import e-conomic invoices and Simply CRM sales orders - Dashboard and issues UI with sag/ordre-draft actions - Scheduled daily sync job at 05:00 - Add invoice_error_finder permissions
59 lines
2.3 KiB
SQL
59 lines
2.3 KiB
SQL
-- Migration 1007: Invoice Error Finder module fixes and permissions
|
|
|
|
-- Add stable Simply CRM source record id to issues so detection survives import-run re-imports
|
|
ALTER TABLE invoice_error_finder_issues
|
|
ADD COLUMN IF NOT EXISTS simply_source_record_id VARCHAR(80);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_ief_issues_simply_source
|
|
ON invoice_error_finder_issues(simply_source_record_id);
|
|
|
|
-- Module permissions
|
|
INSERT INTO permissions (code, description, category) VALUES
|
|
('invoice_error_finder.view', 'View invoice error finder dashboard and issues', 'invoice_error_finder'),
|
|
('invoice_error_finder.run_import', 'Trigger invoice/error data imports', 'invoice_error_finder'),
|
|
('invoice_error_finder.analyze', 'Run invoice error detection analysis', 'invoice_error_finder'),
|
|
('invoice_error_finder.update_status', 'Update issue status and assignee', 'invoice_error_finder'),
|
|
('invoice_error_finder.create_sag', 'Create/link sag from invoice error issue', 'invoice_error_finder'),
|
|
('invoice_error_finder.create_ordre_draft', 'Create ordre draft from invoice error issue', 'invoice_error_finder'),
|
|
('invoice_error_finder.ignore', 'Ignore invoice error issues', 'invoice_error_finder'),
|
|
('invoice_error_finder.admin', 'Administer invoice error finder settings', 'invoice_error_finder')
|
|
ON CONFLICT (code) DO NOTHING;
|
|
|
|
-- Assign permissions to groups
|
|
INSERT INTO group_permissions (group_id, permission_id)
|
|
SELECT g.id, p.id
|
|
FROM groups g
|
|
CROSS JOIN permissions p
|
|
WHERE g.name = 'Administrators'
|
|
AND p.category = 'invoice_error_finder'
|
|
ON CONFLICT DO NOTHING;
|
|
|
|
INSERT INTO group_permissions (group_id, permission_id)
|
|
SELECT g.id, p.id
|
|
FROM groups g
|
|
CROSS JOIN permissions p
|
|
WHERE g.name = 'Managers'
|
|
AND p.category = 'invoice_error_finder'
|
|
ON CONFLICT DO NOTHING;
|
|
|
|
INSERT INTO group_permissions (group_id, permission_id)
|
|
SELECT g.id, p.id
|
|
FROM groups g
|
|
CROSS JOIN permissions p
|
|
WHERE g.name = 'Technicians'
|
|
AND p.code IN (
|
|
'invoice_error_finder.view',
|
|
'invoice_error_finder.update_status',
|
|
'invoice_error_finder.create_sag',
|
|
'invoice_error_finder.create_ordre_draft'
|
|
)
|
|
ON CONFLICT DO NOTHING;
|
|
|
|
INSERT INTO group_permissions (group_id, permission_id)
|
|
SELECT g.id, p.id
|
|
FROM groups g
|
|
CROSS JOIN permissions p
|
|
WHERE g.name = 'Viewers'
|
|
AND p.code = 'invoice_error_finder.view'
|
|
ON CONFLICT DO NOTHING;
|