142 lines
5.9 KiB
Transact-SQL
142 lines
5.9 KiB
Transact-SQL
USE [LotusDB1]
|
|
GO
|
|
|
|
SET ANSI_NULLS ON
|
|
GO
|
|
SET QUOTED_IDENTIFIER ON
|
|
GO
|
|
|
|
ALTER PROCEDURE [dbo].[Add_Application]
|
|
@CompanyName [nvarchar](max),
|
|
@ProjectName [nvarchar](max),
|
|
@CompanyTIN [nvarchar](128),
|
|
@ProjectCode [nvarchar](max),
|
|
@EvaluationStatus [nvarchar](max),
|
|
@MobileNo [nvarchar](max),
|
|
@Station [nvarchar](max),
|
|
@StartDate [datetime2](7),
|
|
@CreatedDate [datetime2](7),
|
|
@Expiredate [datetime2](7),
|
|
@Amount [decimal](18, 2),
|
|
@ControlNo [nvarchar](max),
|
|
@UpdatedDate [datetime2](7),
|
|
@PaymentStatus [nvarchar](max),
|
|
@CompanyEmail [nvarchar](128),
|
|
@ReceiptNo [nvarchar](max),
|
|
@PayedDate [datetime2](7),
|
|
@CertificateNo [nvarchar](max),
|
|
@ServiceName [nvarchar](max),
|
|
@Comments [nvarchar](max),
|
|
@FullName [nvarchar](max),
|
|
@InvoiceID bigint,
|
|
@GePGComment [nvarchar](max),
|
|
@Currency [nvarchar](max)
|
|
AS
|
|
BEGIN
|
|
SET NOCOUNT ON;
|
|
|
|
INSERT [dbo].[ApplicationManagers]([CompanyName], [ProjectName], [CompanyTIN], [ProjectCode], [EvaluationStatus], [MobileNo], [Station], [StartDate], [CreatedDate], [Expiredate], [Amount], [ControlNo], [UpdatedDate], [PaymentStatus], [CompanyEmail], [ReceiptNo], [PayedDate], [CertificateNo], [ServiceName],[Comments],[FullName],[InvoiceID],[GePGComment],[Currency])
|
|
VALUES (@CompanyName, @ProjectName, @CompanyTIN, @ProjectCode, @EvaluationStatus, @MobileNo, @Station, @StartDate, @CreatedDate, @Expiredate, @Amount, @ControlNo, @UpdatedDate, @PaymentStatus, @CompanyEmail, @ReceiptNo, @PayedDate, @CertificateNo, @ServiceName,@Comments,@FullName,@InvoiceID,@GePGComment,@Currency)
|
|
|
|
DECLARE @ApplicationID bigint
|
|
SELECT @ApplicationID = [ApplicationID]
|
|
FROM [dbo].[ApplicationManagers]
|
|
WHERE @@ROWCOUNT > 0 AND [ApplicationID] = scope_identity()
|
|
|
|
SELECT t0.[ApplicationID]
|
|
FROM [dbo].[ApplicationManagers] AS t0
|
|
WHERE @@ROWCOUNT > 0 AND t0.[ApplicationID] = @ApplicationID
|
|
|
|
-- Find full name of informant
|
|
DECLARE @ServiceTypeID bigint
|
|
DECLARE @FrontUserId bigint
|
|
|
|
SET @FrontUserId = (SELECT InvestorID FROM InvestorProfileExternals WHERE CompanyEmail=@CompanyEmail)
|
|
SET @FullName = (SELECT FirstName + ' ' + COALESCE(MiddleName, '') + ' ' + LastName FROM InvestorProfileExternals WHERE CompanyEmail = @CompanyEmail)
|
|
|
|
-- SET Service TypeID
|
|
IF(@ServiceName='New' AND @Currency='USD')
|
|
SET @ServiceTypeID = 1
|
|
ELSE IF(@ServiceName='Amendment' AND @Currency='USD')
|
|
SET @ServiceTypeID = 2
|
|
ELSE IF(@ServiceName='Expansion' AND @Currency='USD')
|
|
SET @ServiceTypeID = 3
|
|
ELSE IF(@ServiceName='Extension' AND @Currency='USD')
|
|
SET @ServiceTypeID = 4
|
|
ELSE IF(@ServiceName='New' AND @Currency='TZS')
|
|
SET @ServiceTypeID = 5
|
|
ELSE IF(@ServiceName='Amendment' AND @Currency='TZS')
|
|
SET @ServiceTypeID = 6
|
|
ELSE IF(@ServiceName='Expansion' AND @Currency='TZS')
|
|
SET @ServiceTypeID = 7
|
|
ELSE IF(@ServiceName='Extension' AND @Currency='TZS')
|
|
SET @ServiceTypeID = 8
|
|
ELSE IF(@ServiceName='New_Foreign' AND @Currency='TZS')
|
|
SET @ServiceTypeID = 9
|
|
ELSE IF(@ServiceName='Expansion_Foreign' AND @Currency='TZS')
|
|
SET @ServiceTypeID = 10
|
|
ELSE
|
|
SET @ServiceTypeID = 11
|
|
|
|
-- Generate Billcode
|
|
DECLARE @MaxID AS varchar(max)
|
|
SELECT @MaxID=MAX([InvoiceID]) FROM [dbo].[tblInvoice] WHERE Year([StartDate]) = Year(Getdate()) AND month([StartDate]) = month(Getdate())
|
|
|
|
DECLARE @BillCode varchar(max)
|
|
DECLARE @invoiceNo varchar(max)
|
|
DECLARE @Year nvarchar(max)
|
|
DECLARE @Month nvarchar(max)
|
|
DECLARE @Yrmth nvarchar(max)
|
|
SELECT @Year = Year(getdate())
|
|
SELECT @Month = Month(getdate())
|
|
SET @Yrmth = @Year + @Month
|
|
SET @invoiceNo = (COALESCE(@MaxID,0)+1)
|
|
SET @BillCode = @Yrmth + @invoiceNo
|
|
|
|
-- Find GFSCode from tblService - determine correct ServiceName based on ownership
|
|
DECLARE @GFSCode nvarchar(50)
|
|
DECLARE @TypeofOwnership nvarchar(max)
|
|
DECLARE @ServiceNameForLookup nvarchar(max) = @ServiceName
|
|
|
|
-- Get ownership from ProjectProfilesExternal to determine correct ServiceName for lookup
|
|
SELECT @TypeofOwnership = TypeofOwnership
|
|
FROM ProjectProfilesExternal
|
|
WHERE ProjectCode = @ProjectCode
|
|
|
|
-- Adjust ServiceName for lookup if foreign/mixed ownership and TZS currency
|
|
IF (@TypeofOwnership IS NOT NULL AND @TypeofOwnership <> 'Local' AND @Currency = 'TZS')
|
|
BEGIN
|
|
IF (@ServiceName = 'New')
|
|
SET @ServiceNameForLookup = 'New_Foreign'
|
|
ELSE IF (@ServiceName = 'Expansion')
|
|
SET @ServiceNameForLookup = 'Expansion_Foreign'
|
|
END
|
|
|
|
-- Get GFSCode from tblService using the correct ServiceName
|
|
SELECT @GFSCode = GFSCode
|
|
FROM [dbo].[tblService]
|
|
WHERE ServiceName = @ServiceNameForLookup AND [Currency] = @Currency AND Status = '1'
|
|
|
|
-- Use default GFSCode if not found
|
|
IF (@GFSCode IS NULL OR @GFSCode = '')
|
|
SET @GFSCode = '142201370002'
|
|
|
|
-- Insert into tblInvoice using @Amount (already calculated correctly in C#) instead of querying tblService for Fee
|
|
-- This ensures ApplicationManagers.Amount matches tblInvoice.Amount
|
|
INSERT INTO [dbo].[tblInvoice] ([FullName],[PhoneNo],[GFSCode],[BillItemRefNo],[SubServiceName],[Amount],FrontUserId,ApplicationID,StartDate,Expiredate,ServiceTypeID,ApplicationCode,[Currency],[TIN_No])
|
|
VALUES (@FullName,@MobileNo,@GFSCode,@BillCode,@ServiceName,@Amount,@FrontUserId,@ApplicationID,getdate(),getdate()+30,@ServiceTypeID,@ProjectCode,@Currency,@CompanyTIN)
|
|
|
|
-- Update ApplicationManagers with FullName and InvoiceID
|
|
DECLARE @NewInvoiceID bigint
|
|
SELECT @NewInvoiceID = InvoiceID
|
|
FROM tblInvoice
|
|
WHERE ApplicationCode = @ProjectCode AND ApplicationID = @ApplicationID
|
|
ORDER BY InvoiceID DESC
|
|
|
|
UPDATE ApplicationManagers
|
|
SET FullName = @FullName, InvoiceID = @NewInvoiceID
|
|
WHERE ProjectCode = @ProjectCode AND ApplicationID = @ApplicationID
|
|
END
|
|
GO
|
|
|