42 lines
2.1 KiB
MySQL
42 lines
2.1 KiB
MySQL
|
|
-- Fiyat Girişi (App.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
|