tiseza_oss_live/Add_Application_Fixed.sql

142 lines
5.9 KiB
MySQL
Raw Permalink Normal View History

2025-11-20 19:42:58 +00:00
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