Sysparameter Changes
Changes in Sysparameter Modify
- If user is making Sys Condition as Yes, then need to check SysParameterRules table if any record for this parameter is there
- If record exists and ind is L then then the referene sysparameter also should be Y
- If record exists and ind is D then then need to check the status of reference sysparameter if that is on we must sayThe following Sysparamter is On need to set off before updating this
Controller Changes
var sysParameterLinkedInfo = _ISystemParameterRepository.GetSystemParameterLinkedInfo(_SystemParameter.ShortName, dbname);
if(sysParameterLinkedInfo != null)
{
if(sysParameterLinkedInfo.RuleType == "I" && sysParameterLinkedInfo.SysCondition == "N")
{
ModelState.AddModelError("SysCondition", $"Need to make SysParameter : {sysParameterLinkedInfo.Name} On");
}
else if(sysParameterLinkedInfo.RuleType == "D" && sysParameterLinkedInfo.SysCondition == "Y")
{
ModelState.AddModelError("SysCondition", $"Need to make SysParameter : {sysParameterLinkedInfo.Name} Off");
}
}Repository Changes
public SystemParameter GetSystemParameterLinkedInfo(string sysParameterName, string dbname)
{
var query = @"SELECT ruletype, SP.name, syscondition
FROM SysParameterRules S
LEFT JOIN sysparameters SP ON S.RelatedParameter = SP.shortname
WHERE S.SourceParameter = @sysparametername";
using var connection = _DapperContext.SetClientConnection(dbname);
var data = connection.QuerySingleOrDefault<SystemParameter>(query, new{sysParameterName});
return data;
}Table Structure
CREATE TABLE SysParameterRules
(
Id INT PRIMARY KEY IDENTITY(1,1),
SourceParameter NVARCHAR(30),
RuleType NVARCHAR(1), --- L - Linked, D - Delinked
RelatedParameter NVARCHAR(30)
);
INSERT INTO SysParameterRules (SourceParameter, RuleType, RelatedParameter)
VALUES ('EnableEInvoiceJSON', 'D', 'AutoEInvoice'),
('AutoEInvoice', 'D', 'AutoEWayBill'),
('AutoEWayBill', 'I', 'AutoEInvoice'),
('InvoiceCarrierCharges', 'D', 'ForceIndent4AllBills'),
('ForceIndent4AllBills', 'D', 'InvoiceCarrierCharges')
---test case
--- Enable E-Invoice JSON is on then AutoEInvoice must be off
---- AutoEInvoice is off then AutoEWayBill must be off
---- AutoEWayBill is on then AutoEInvoice must be on
---- InvoiceCarrierCharges is on ForceIndent4AllBills must be off (vice-versa)Other Changes
New Property : ShortName, RuleType New Methods : SystemParameterValidateModify, GetSystemParameterLinkedInfo