Enhance contract removal logic and handle financial statement updates

This commit is contained in:
2025-12-04 10:36:59 +03:30
parent b5c1a4c29d
commit a533850f24
2 changed files with 41 additions and 4 deletions

View File

@@ -888,6 +888,7 @@ public class InstitutionContractApplication : IInstitutionContractApplication
public void RemoveContract(long id)
{
_institutionContractRepository.RemoveContract(id);
}

View File

@@ -638,9 +638,19 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
public void RemoveContract(long id)
{
var op = new OperationResult();
var institutionContarct = _context.InstitutionContractSet.FirstOrDefault(x => x.id == id);
var contactInfo = _context.InstitutionContractContactInfos.Where(x => x.InstitutionContractId == id)
var institutionContarct = _context.InstitutionContractSet
.FirstOrDefault(x => x.id == id);
var prevInstitutionContracts = _context.InstitutionContractSet
.Where(x => x.ContractingPartyId == institutionContarct.ContractingPartyId)
.OrderByDescending(x => x.ContractEndGr).Skip(1).FirstOrDefault();
var transaction = _context.Database.BeginTransaction();
var contactInfo = _context.InstitutionContractContactInfos
.Where(x => x.InstitutionContractId == id)
.ToList();
if (contactInfo.Count > 0)
{
foreach (var item in contactInfo)
@@ -656,6 +666,31 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
_context.SaveChanges();
}
if (prevInstitutionContracts != null)
{
var now = DateTime.Now;
var financialStatement =
_context.FinancialStatments
.Include(x => x.FinancialTransactionList)
.FirstOrDefault(x=>x.ContractingPartyId == institutionContarct.ContractingPartyId);
if (financialStatement != null)
{
var sumDebtor = financialStatement.FinancialTransactionList
.Sum(x => x.Deptor);
var sumCreditor = financialStatement.FinancialTransactionList
.Sum(x => x.Creditor);
var balance = sumDebtor - sumCreditor;
if (balance>0 && prevInstitutionContracts.ContractEndGr<now)
{
prevInstitutionContracts.DeActiveBlue();
_context.SaveChanges();
}
}
}
transaction.Commit();
}
public void CreateContractingPartyAccount(long contractingPartyid, long accountId)
@@ -1999,7 +2034,7 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
{
legalPartyRequest = new CreateInstitutionContractLegalPartyRequest()
{
NationalCode = contractingParty.Nationalcode=="*"?string.Empty:contractingParty.Nationalcode,
NationalCode = contractingParty.Nationalcode == "*" ? string.Empty : contractingParty.Nationalcode,
BirthDateFa = contractingParty.DateOfBirth.ToFarsi(),
PhoneNumber = contractingParty.Phone,
FatherName = contractingParty.FatherName,
@@ -2098,7 +2133,8 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
legalCommand.PhoneNumber);
}
legalPersonalContractingParty?.EditLegalPartyFromInstitution(legalCommand.Position, legalCommand.CompanyName,
legalPersonalContractingParty?.EditLegalPartyFromInstitution(legalCommand.Position,
legalCommand.CompanyName,
legalCommand.RegisterId, legalCommand.NationalId);
break;
case LegalType.Real: