Simplify CHS - Standard Tariff Mst [Import]
Changes in StdTariffMstIndex
- In Standard Tariff Mst Index need to add Import Button
Changes in StdTariffMstImport
- Need to add StdTariffMstImport razor page and in that do not allow to Import if records are there (stdTariffCnt > 0)
- On StdTariffMstImport we will show MudAlert Records already exists. You may not Import. same like membermstimport
- use stdTariffCnt as varibale name not lineCnt on Import Page.
Download Model
| Label Name | Instructions |
|---|---|
| Tariff Name | Can be upto 100 characters. |
| Main A/c | Must be 6 digits. |
| Sub A/c | Must be 6 digits. |
| Tax Type | Must be N, Y, or I (N-Not Applicable, Y-Intrastate, I-Interstate). |
| Amount | Must be between 0 - 9999999. |
| Cost | Must be between 0 - 9999999. |
Reading XL error codes
| Error Code | Description |
|---|---|
| Z1 | Tariff Name, Main A/c, Sub A/c, Tax Type, Amount, Cost are mandatory to fill |
| Z2 | Tariff Name can be up to 100 characters only |
| Z3 | Main A/c must be 6 digits |
| Z4 | Sub A/c must be 6 digits |
| Z5 | Tax Type must be N, Y, or I |
| Z6 | Amount must be in valid number format |
| Z7 | Cost must be in valid number format |
| Z8 | If entity GSTIN is “URP”, Tax Type must be N (Not Applicable) |
Error Codes
| Error Code | Description |
|---|---|
| A | Tariff Name must be unique throughout the Excel. |
| B | Invalid / Inactive Main A/c , Sub A/c . |
| C | Amount must be greater than Cost. |
| recordCntMsg | Only 1000 Tariff details can be imported. |
Sysgen XL
| Column Name | Field Name |
|---|---|
| Error Code | ErrorCode |
| Tariff Code | TariffCode |
| Tariff Name | TariffName |
| Amount | Amount |
| Cost | Cost |
| Main A/c | MainAc |
| Sub A/c | SubAc |
| Account Particulars | MainSubAcName |
| Tax Type | TaxIndName |
Queries for error code
var tempcreation = @"CREATE TABLE #stdtariffmst
(
id INT PRIMARY KEY IDENTITY(1,1),
tariffname NVARCHAR(100) COLLATE DATABASE_DEFAULT,
mainac NVARCHAR(6) COLLATE DATABASE_DEFAULT,
subac NVARCHAR(6) COLLATE DATABASE_DEFAULT,
taxind NVARCHAR(1) COLLATE DATABASE_DEFAULT,
amount NUMERIC(10,2),
cost NUMERIC(10,2),
errorcode NVARCHAR(200) COLLATE DATABASE_DEFAULT,
tariffcode NVARCHAR(6) COLLATE DATABASE_DEFAULT
)";
var inserttemp = @"INSERT INTO #stdtariffmst(tariffname,mainac,subac,taxind,amount,cost)
VALUES(UPPER(TRIM(@tariffname)),@mainac,@subac,UPPER(TRIM(@taxind)),@amount,@cost)";
/* -------------------- ERROR VALIDATIONS -------------------- */
// Error Code A - Duplicate Tariff Name within Excel
var errorcodeA = @"WITH A(tariffname) AS
(
SELECT tariffname FROM #stdtariffmst
GROUP BY tariffname
HAVING COUNT(tariffname) > 1
)
UPDATE #stdtariffmst SET errorcode = COALESCE(RTRIM(errorcode),'') + ' A'
FROM A WHERE #stdtariffmst.tariffname = A.tariffname";
// Error Code B - Main A/c + Sub A/c must exist in account master
var errorcodeB = @"WITH A (mainac, subac) AS
(
SELECT A1.mainac, A1.subac
FROM accounts A
INNER JOIN accounts1 A1 ON A.mainac = A1.mainac
WHERE A.actype IN ('N','A','E','I','L') AND A1.IsActive = 'Y'
)
UPDATE ##stdtariffmst SET errorcode = COALESCE(RTRIM(errorcode),'') + ' B'
WHERE NOT EXISTS (SELECT mainac,subac FROM A WHERE ##stdtariffmst.mainac = A.mainac AND ##stdtariffmst.subac = A.subac)";
// Error Code C - Amount must be greater than Cost
var errorcodeC = @"UPDATE #stdtariffmst SET errorcode = COALESCE(RTRIM(errorcode),'') + ' C'
WHERE amount <= cost";
// Error Code D - Only 1000 Tariff details can be imported.
var recordCntQuery = @"SELECT COUNT(*) AS cnt FROM #stdtariffmst;";
// Count of total error rows
var cnterror = @"SELECT COUNT(errorcode) AS CNT FROM #stdtariffmst
WHERE COALESCE(errorcode,'') != ''";
var tariffCodeQuery = @"WITH A (rowno,id) AS
(
SELECT ROW_NUMBER() OVER (ORDER BY id) AS rowno,id FROM #stdtariffmst
)
UPDATE #stdtariffmst
SET tariffcode = FORMAT(A.rowno, '000000')
FROM A
WHERE #stdtariffmst.id = A.id";
// Query to fetch data after validations
var data = @"SELECT tariffcode,tariffname,amount,cost,
IIF(M.taxind = 'Y', 'Intrastate',IIF(M.taxind = 'N', 'Not Applicable', 'Interstate')) AS taxindname,
errorcode,IIF(A.achead = A1.acname, A.achead,
CONCAT_WS(',',A.achead,COALESCE(A1.acname,'Invalid Account Name'))) AS mainsubacname,
CONCAT(M.mainac,M.subac) AS mainsubacno
FROM #stdtariffmst M
LEFT JOIN accounts A ON M.mainac = A.mainac
LEFT JOIN accounts1 A1 ON M.mainac = A1.mainac AND M.subac = A1.subac
ORDER BY M.id ASC;";
var stdTariffMstInsert = @"INSERT INTO StdTariffMst (tariffcode,tariffname,amount,cost,taxind,taxgroup,
mainac,subac,chargetype,isactive)
SELECT tariffcode,tariffname,amount,cost,taxind,'NA' AS taxgroup,
mainac,subac,'F' AS chargetype,'Y' AS isactive
FROM #stdtariffmst;";New Classes and Methods
StdTariffMstImportGetStdTariffMstCntStdTariffMstDownloadModel
public class StdTariffMst
{
public string ErrorCode { get; set; } = string.Empty; // New Column
}