CREATE OR ALTER PROCEDURE [dbo].[Prc_P_PurchaseOrderSend] @Id uniqueidentifier, @UserId uniqueidentifier = NULL AS BEGIN SET NOCOUNT ON; DECLARE @Tenant uniqueidentifier, @No nvarchar(32), @Status nvarchar(16), @Email nvarchar(256), @Supplier nvarchar(256), @TypeName nvarchar(64), @Type uniqueidentifier, @Subject nvarchar(256), @Lines nvarchar(max), @Total decimal(18,4), @Cur nvarchar(8); SELECT @Tenant = o.TenantId, @No = o.OrderNo, @Status = o.Status, @Email = c.Email, @Supplier = c.Name, @Total = o.TotalAmount, @Cur = o.CurrencyId FROM Prc_T_PurchaseOrder o LEFT JOIN Adm_T_Contact c ON c.Id = o.SupplierId WHERE o.Id = @Id; IF NOT EXISTS (SELECT 1 FROM Prc_T_PurchaseOrderLine WHERE PurchaseOrderId = @Id AND IsDeleted = 0) THROW 50111, N'Kalemi olmayan belge gönderilemez.', 1; IF ISNULL(@Email, N'') = N'' THROW 50112, N'Tedarikçinin kontak kartında e-posta adresi yok.', 1; IF @Status = 'Purchase' SELECT @TypeName = N'Prc.PurchaseOrderSent', @Subject = N'Satınalma Siparişi ' + @No; ELSE SELECT @TypeName = N'Prc.RfqSent', @Subject = N'Teklif Talebi ' + @No; SELECT TOP 1 @Type = Id FROM Adm_T_NotificationType WHERE Name = @TypeName AND IsDeleted = 0 AND (TenantId = @Tenant OR (TenantId IS NULL AND @Tenant IS NULL)); SELECT @Lines = (SELECT N'
Sayın ' + ISNULL(@Supplier, N'') + N',
' + @Subject + N' aşağıda bilgilerinize sunulmuştur.
' + N'| Ürün | Açıklama | Miktar | Birim Fiyat | KDV | Tutar |
|---|
Toplam: ' + FORMAT(@Total, 'N2', 'tr-TR') + N' ' + @Cur + N'
', 0, 0, GETUTCDATE(), @UserId, 0); UPDATE Prc_T_PurchaseOrder SET LastSentDate = GETUTCDATE(), Status = CASE WHEN Status = 'Draft' THEN 'Sent' ELSE Status END WHERE Id = @Id; END