41 lines
2.1 KiB
Transact-SQL
41 lines
2.1 KiB
Transact-SQL
-- Fiyat Girişi (Prc.PurchaseRfqComparison) satır kaydı. Batch kaydı her satırı ayrı ve eşzamanlı istekle gönderir;
|
||
-- satır güncellemesi ile teklifin yeniden hesabı aynı işlemde, önce ihalenin kök teklifi kilitlenerek yapılır. Grid ihalenin
|
||
-- bütün tedarikçi tekliflerinin satırlarını taşır; kilit ihale düzeyinde olduğu için bu satırlar sırayla işlenir ve satırı
|
||
-- kilitleyip diğer isteğin satırını bekleyen iki istek kilitlenmez (deadlock).
|
||
CREATE OR ALTER PROCEDURE [dbo].[Prc_P_PurchaseRfqComparisonSave]
|
||
@Id uniqueidentifier,
|
||
@UnitPrice decimal(18, 4),
|
||
@DeliveryDate datetime,
|
||
@IsSelected bit,
|
||
@TenantId uniqueidentifier,
|
||
@LastModificationTime datetime2,
|
||
@LastModifierId uniqueidentifier
|
||
AS
|
||
BEGIN
|
||
SET NOCOUNT ON;
|
||
SET XACT_ABORT ON;
|
||
|
||
DECLARE @RfqId uniqueidentifier = (SELECT PurchaseRfqId FROM Prc_T_PurchaseRfqLine WHERE Id = @Id), @Group uniqueidentifier, @Status nvarchar(16);
|
||
SELECT @Group = ISNULL(TenderGroupId, Id) FROM Prc_T_PurchaseRfq WHERE Id = @RfqId;
|
||
|
||
BEGIN TRAN;
|
||
SELECT @Group = Id FROM Prc_T_PurchaseRfq WITH (UPDLOCK, HOLDLOCK) WHERE Id = @Group;
|
||
SELECT @Status = Status FROM Prc_T_PurchaseRfq WHERE Id = @RfqId;
|
||
IF @Status IN ('Purchase', 'Cancelled')
|
||
THROW 50142, N'Siparişe dönüştürülmüş ya da iptal edilmiş teklifin kalemi değiştirilemez.', 1;
|
||
|
||
UPDATE Prc_T_PurchaseRfqLine
|
||
SET UnitPrice = @UnitPrice, DeliveryDate = @DeliveryDate, IsSelected = @IsSelected,
|
||
LastModificationTime = @LastModificationTime, LastModifierId = @LastModifierId
|
||
WHERE Id = @Id AND (TenantId = @TenantId OR (TenantId IS NULL AND @TenantId IS NULL));
|
||
|
||
-- Fiyatı girilen teklif yanıtlanmış sayılır; geçerlilik verilmemişse sipariş son tarihine kadar geçerlidir.
|
||
IF @UnitPrice > 0
|
||
UPDATE Prc_T_PurchaseRfq
|
||
SET SupplierResponse = 'Quoted', QuoteDate = ISNULL(QuoteDate, GETUTCDATE()),
|
||
QuoteValidUntil = ISNULL(QuoteValidUntil, CAST(OrderDeadline AS date))
|
||
WHERE Id = @RfqId AND SupplierResponse = 'Waiting';
|
||
|
||
EXEC Prc_P_PurchaseRfqRecalc @RfqId;
|
||
COMMIT;
|
||
END
|