From 4a041ca8e2e30cb4d52b92fd165471e57a1f4e75 Mon Sep 17 00:00:00 2001 From: mahan Date: Wed, 3 Dec 2025 12:10:48 +0330 Subject: [PATCH 1/5] add condition for null rollcall employee in IfEmloyeeHasNewLeftWorkDateAddEndDateToRollCallStatus --- .../LeftWorkTempApplication.cs | 49 ++++++++++--------- 1 file changed, 27 insertions(+), 22 deletions(-) diff --git a/CompanyManagment.Application/LeftWorkTempApplication.cs b/CompanyManagment.Application/LeftWorkTempApplication.cs index 3f2b2dab..75a27a98 100644 --- a/CompanyManagment.Application/LeftWorkTempApplication.cs +++ b/CompanyManagment.Application/LeftWorkTempApplication.cs @@ -290,8 +290,34 @@ public class LeftWorkTempApplication : ILeftWorkTempApplication //get rollCallEmployee associated with those leftworks which have a higher end date than leftworkDate + var rollCallsEmployee = _rollCallEmployeeRepository.GetBy(employeeId, workshopId); + if (rollCallsEmployee != null) + { + var status = rollCallsEmployee.EmployeesStatus.OrderByDescending(z => z.StartDate) + .FirstOrDefault(rollCallEmployeeStatus => rollCallEmployeeStatus.StartDate.Date < maxLeftWork.LeftWorkDateGr + && rollCallEmployeeStatus.EndDate.Date > + maxLeftWork.LeftWorkDateGr); + + if (status != null) + { + var adjust = new AdjustRollCallEmployeesWithEmployeeLeftWork() + { + LeaveDate = maxLeftWork.LeftWorkDateGr, + RollCallStatusId = status.id + }; + _rollCallEmployeeStatusRepository.AdjustRollCallStatusEndDates([adjust]); + } + + var rollCallEmployeeStatusList = rollCallsEmployee.EmployeesStatus + .Where(x => x.StartDate >= maxLeftWork.LeftWorkDateGr).ToList(); + if (rollCallEmployeeStatusList.Any()) + { + _rollCallEmployeeStatusRepository.RemoveRange(rollCallEmployeeStatusList); + _rollCallEmployeeStatusRepository.SaveChanges(); + } + } // var joinedList = rollCallsEmployee.Join(leftWorks, x => x.WorkshopId, y => y.WorkshopId, (x, y) => new // { // x.WorkshopId, @@ -301,27 +327,6 @@ public class LeftWorkTempApplication : ILeftWorkTempApplication // }); - var status = rollCallsEmployee.EmployeesStatus.OrderByDescending(z => z.StartDate) - .FirstOrDefault(rollCallEmployeeStatus => rollCallEmployeeStatus.StartDate.Date < maxLeftWork.LeftWorkDateGr - && rollCallEmployeeStatus.EndDate.Date > - maxLeftWork.LeftWorkDateGr); - - if (status != null) - { - var adjust = new AdjustRollCallEmployeesWithEmployeeLeftWork() - { - LeaveDate = maxLeftWork.LeftWorkDateGr, - RollCallStatusId = status.id - }; - _rollCallEmployeeStatusRepository.AdjustRollCallStatusEndDates([adjust]); - } - - var rollCallEmployeeStatusList = rollCallsEmployee.EmployeesStatus - .Where(x => x.StartDate >= maxLeftWork.LeftWorkDateGr).ToList(); - if (rollCallEmployeeStatusList.Any()) - { - _rollCallEmployeeStatusRepository.RemoveRange(rollCallEmployeeStatusList); - _rollCallEmployeeStatusRepository.SaveChanges(); - } + } } \ No newline at end of file From b5c1a4c29dfbed54b027bc8437df6b219f13a721 Mon Sep 17 00:00:00 2001 From: mahan Date: Wed, 3 Dec 2025 20:21:08 +0330 Subject: [PATCH 2/5] Refactor legal party handling logic Replaced `realPersonalContractingParty` with `legalPersonalContractingParty` to ensure correct variable usage in legal party operations. Updated the authentication logic to handle both authenticated and unauthenticated states, introducing a new `else` block for `LegalAuthentication`. Adjusted method calls (`UnAuthenticateLegalEdit` and `EditLegalPartyFromInstitution`) to use the updated variable and ensure consistent updates to legal party details. --- .../InstitutionContractRepository.cs | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/CompanyManagment.EFCore/Repository/InstitutionContractRepository.cs b/CompanyManagment.EFCore/Repository/InstitutionContractRepository.cs index 61a43882..65259abb 100644 --- a/CompanyManagment.EFCore/Repository/InstitutionContractRepository.cs +++ b/CompanyManagment.EFCore/Repository/InstitutionContractRepository.cs @@ -2078,19 +2078,27 @@ public class InstitutionContractRepository : RepositoryBase x.NationalId == legalCommand.NationalId); if (!request.LegalParty.IsAuth) { - if (realPersonalContractingParty is { IsAuthenticated: false }) + if (legalPersonalContractingParty is { IsAuthenticated: false }) { - realPersonalContractingParty.UnAuthenticateLegalEdit(legalCommand.FName, legalCommand.LName, - legalCommand.FatherName, legalCommand.IdNumber, realPersonalContractingParty.IdNumberSeri, - realPersonalContractingParty.IdNumberSerial, legalCommand.BirthDateFa, legalCommand.Gender, + legalPersonalContractingParty.UnAuthenticateLegalEdit(legalCommand.FName, legalCommand.LName, + legalCommand.FatherName, legalCommand.IdNumber, legalPersonalContractingParty.IdNumberSeri, + legalPersonalContractingParty.IdNumberSerial, legalCommand.BirthDateFa, legalCommand.Gender, legalCommand.PhoneNumber); } } - realPersonalContractingParty?.EditLegalPartyFromInstitution(legalCommand.Position, legalCommand.CompanyName, + else + { + legalPersonalContractingParty?.LegalAuthentication(legalCommand.FName, legalCommand.LName, + legalCommand.FatherName, legalCommand.IdNumber, legalPersonalContractingParty.IdNumberSeri, + legalPersonalContractingParty.IdNumberSerial, legalCommand.BirthDateFa, legalCommand.Gender, + legalCommand.PhoneNumber); + } + + legalPersonalContractingParty?.EditLegalPartyFromInstitution(legalCommand.Position, legalCommand.CompanyName, legalCommand.RegisterId, legalCommand.NationalId); break; case LegalType.Real: From a533850f24b00db1dffcd09882293528f2119886 Mon Sep 17 00:00:00 2001 From: mahan Date: Thu, 4 Dec 2025 10:36:59 +0330 Subject: [PATCH 3/5] Enhance contract removal logic and handle financial statement updates --- .../InstitutionContractApplication.cs | 1 + .../InstitutionContractRepository.cs | 44 +++++++++++++++++-- 2 files changed, 41 insertions(+), 4 deletions(-) diff --git a/CompanyManagment.Application/InstitutionContractApplication.cs b/CompanyManagment.Application/InstitutionContractApplication.cs index ffbcb7d9..41fcf9a2 100644 --- a/CompanyManagment.Application/InstitutionContractApplication.cs +++ b/CompanyManagment.Application/InstitutionContractApplication.cs @@ -888,6 +888,7 @@ public class InstitutionContractApplication : IInstitutionContractApplication public void RemoveContract(long id) { _institutionContractRepository.RemoveContract(id); + } diff --git a/CompanyManagment.EFCore/Repository/InstitutionContractRepository.cs b/CompanyManagment.EFCore/Repository/InstitutionContractRepository.cs index 65259abb..bcb8bf5a 100644 --- a/CompanyManagment.EFCore/Repository/InstitutionContractRepository.cs +++ b/CompanyManagment.EFCore/Repository/InstitutionContractRepository.cs @@ -638,9 +638,19 @@ public class InstitutionContractRepository : RepositoryBase 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 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 Date: Sat, 6 Dec 2025 10:41:03 +0330 Subject: [PATCH 4/5] Add menu item for bank account information MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Added a new menu item with `permission="307"` to `_Menu.cshtml` for accessing the `account-number-database` page. The link is dynamically constructed using `AppSetting.Value.Domain` and styled with `class="clik10"` and inline styles. Included an SVG icon and the text "اطلاعات بانکی طرف حساب" ("Bank account information of the counterparty"). Maintained the hierarchical structure of the menu. --- ServiceHost/Areas/Admin/Pages/Shared/_Menu.cshtml | 7 +++++++ ServiceHost/Areas/AdminNew/Pages/Shared/_Menu.cshtml | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/ServiceHost/Areas/Admin/Pages/Shared/_Menu.cshtml b/ServiceHost/Areas/Admin/Pages/Shared/_Menu.cshtml index 06228481..956fdd4f 100644 --- a/ServiceHost/Areas/Admin/Pages/Shared/_Menu.cshtml +++ b/ServiceHost/Areas/Admin/Pages/Shared/_Menu.cshtml @@ -507,6 +507,13 @@ لیست تراکنش های درگاه پرداخت +
  • + + + + + اطلاعات بانکی طرف حساب +
  • diff --git a/ServiceHost/Areas/AdminNew/Pages/Shared/_Menu.cshtml b/ServiceHost/Areas/AdminNew/Pages/Shared/_Menu.cshtml index 6e57e512..f6ec0b36 100644 --- a/ServiceHost/Areas/AdminNew/Pages/Shared/_Menu.cshtml +++ b/ServiceHost/Areas/AdminNew/Pages/Shared/_Menu.cshtml @@ -655,6 +655,13 @@ لیست تراکنش های درگاه پرداخت +
  • + + + + + اطلاعات بانکی طرف حساب +
  • From 343f830d0d7561df575d7eeceb469901138e1515 Mon Sep 17 00:00:00 2001 From: mahan Date: Sat, 6 Dec 2025 16:46:02 +0330 Subject: [PATCH 5/5] Fix calculation of discounted payment amount in institution contract repository --- .../Repository/InstitutionContractRepository.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CompanyManagment.EFCore/Repository/InstitutionContractRepository.cs b/CompanyManagment.EFCore/Repository/InstitutionContractRepository.cs index bcb8bf5a..1a22db1f 100644 --- a/CompanyManagment.EFCore/Repository/InstitutionContractRepository.cs +++ b/CompanyManagment.EFCore/Repository/InstitutionContractRepository.cs @@ -2397,7 +2397,7 @@ public class InstitutionContractRepository : RepositoryBase