Nueva version:
CREATE PROCEDURE [dbo].[ARSP_DailyInterest]
-- Add the parameters for the stored procedure here
@iDate DATE
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
----BEGIN TRY
DECLARE @ID INT
IF (dbo.FN_MatchCurrentDateWithLoansDeadline(@iDate) = 1)
BEGIN
INSERT INTO dbo.Bill(Text,FK_BillStatus,Date,PayDate,Fee,MonthInterests,Amortization,FK_PaymentMethod,Amount,FK_Loan)
SELECT dbo.FN_FormatBillText(1,@iDate,DATEADD(DAY, L.Deadline,@iDate),L.Fee,L.MonthAcumInterest,MonthAcumInterest,NULL,(L.Fee-L.MonthAcumInterest),L.ID),
1,@iDate,DATEADD(DAY, L.Deadline,@iDate),L.Fee,L.MonthAcumInterest,L.MonthAcumInterest,NULL,L.NonAppliedBalance+(L.Fee-L.MonthAcumInterest),L.ID
FROM dbo.Loan L
WHERE (DATEPART(DAY,@iDate) = L.Deadline)
SET @ID = SCOPE_IDENTITY() -- Newly inserted bill id
INSERT INTO dbo.NonAppliedBalanceMovement(Date,Amortization,Interests,FK_Loan,FK_NonAppliedBalanceMovementType,FK_Bill,Amount)
SELECT @iDate,l.MonthAcumInterest,l.MonthAcumInterest,L.ID,0,@ID,L.Fee-L.MonthAcumInterest
FROM dbo.Loan L
WHERE (DATEPART(DAY,@iDate) = L.Deadline)
UPDATE dbo.Loan SET NonAppliedBalance = NonAppliedBalance + (L.Fee-L.MonthAcumInterest)
FROM dbo.Loan L
WHERE (DATEPART(DAY,@iDate) = L.Deadline)
END
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
BEGIN TRANSACTION
INSERT INTO dbo.DailyInterestMovement(Date,Amount,FK_Loan,FK_DailyInterestMovementType)
SELECT @iDate, dbo.FN_GetDailyInterest(L.ID), L.ID, 0
FROM dbo.Loan L
UPDATE dbo.Loan SET MonthAcumInterest = MonthAcumInterest + dbo.FN_GetDailyInterest(L.ID)
FROM dbo.Loan L
COMMIT
RETURN 1
---END TRY
/*BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK
PRINT 'Something went wrong!'
RETURN -1 * @@ERROR
END CATCH*/
END
Horas de realizacion: 3 horas y media
No hay comentarios:
Publicar un comentario