CREATE OR REPLACE PROCEDURE public."Prc_P_PurchaseOrderSend"(p_id uuid, p_user_id uuid DEFAULT NULL) LANGUAGE plpgsql AS $$ DECLARE v_tenant uuid; v_no varchar(32); v_status varchar(16); v_email varchar(256); v_supplier varchar(256); v_type_name varchar(64); v_type uuid; v_subject varchar(256); v_lines text; v_total numeric; v_cur varchar(8); BEGIN SELECT o."TenantId", o."OrderNo", o."Status", c."Email", c."Name", o."TotalAmount", o."CurrencyId" INTO v_tenant, v_no, v_status, v_email, v_supplier, v_total, v_cur FROM "Prc_T_PurchaseOrder" o LEFT JOIN "Adm_T_Contact" c ON c."Id" = o."SupplierId" WHERE o."Id" = p_id; IF NOT EXISTS (SELECT 1 FROM "Prc_T_PurchaseOrderLine" WHERE "PurchaseOrderId" = p_id AND "IsDeleted" = false) THEN RAISE EXCEPTION 'Kalemi olmayan belge gönderilemez.'; END IF; IF COALESCE(v_email, '') = '' THEN RAISE EXCEPTION 'Tedarikçinin kontak kartında e-posta adresi yok.'; END IF; IF v_status = 'Purchase' THEN v_type_name := 'Prc.PurchaseOrderSent'; v_subject := 'Satınalma Siparişi ' || v_no; ELSE v_type_name := 'Prc.RfqSent'; v_subject := 'Teklif Talebi ' || v_no; END IF; SELECT "Id" INTO v_type FROM "Adm_T_NotificationType" WHERE "Name" = v_type_name AND "IsDeleted" = false AND ("TenantId" = v_tenant OR ("TenantId" IS NULL AND v_tenant IS NULL)) LIMIT 1; SELECT string_agg('
Sayın ' || COALESCE(v_supplier, '') || ',
' || v_subject || ' aşağıda bilgilerinize sunulmuştur.
' || '| Ürün | Açıklama | Miktar | Birim Fiyat | KDV | Tutar |
|---|
Toplam: ' || TRIM(TO_CHAR(v_total, 'FM999G999G990D00')) || ' ' || v_cur || '
', false, false, CURRENT_TIMESTAMP, p_user_id, false); UPDATE "Prc_T_PurchaseOrder" SET "LastSentDate" = CURRENT_TIMESTAMP, "Status" = CASE WHEN "Status" = 'Draft' THEN 'Sent' ELSE "Status" END WHERE "Id" = p_id; END; $$;