34 lines
776 B
PL/PgSQL
34 lines
776 B
PL/PgSQL
-- Items: ITEM document series for auto item_code generation
|
|
-- Run before deploying BE that auto-generates item_code via document_series.
|
|
|
|
BEGIN;
|
|
|
|
INSERT INTO document_series (code, prefix, current_number, padding, description, is_active)
|
|
SELECT
|
|
'ITEM',
|
|
'ITM-',
|
|
COALESCE((
|
|
SELECT COUNT(*)::int
|
|
FROM items
|
|
WHERE deleted_at IS NULL
|
|
), 0),
|
|
5,
|
|
'Item master code',
|
|
TRUE
|
|
WHERE NOT EXISTS (
|
|
SELECT 1 FROM document_series WHERE code = 'ITEM'
|
|
);
|
|
|
|
UPDATE document_series ds
|
|
SET current_number = GREATEST(
|
|
ds.current_number,
|
|
COALESCE((SELECT COUNT(*)::int FROM items WHERE deleted_at IS NULL), 0)
|
|
),
|
|
updated_at = NOW()
|
|
WHERE ds.code = 'ITEM';
|
|
|
|
COMMIT;
|
|
|
|
-- Verify:
|
|
-- SELECT code, prefix, current_number, padding FROM document_series WHERE code = 'ITEM';
|