diff --git a/0_Framework/Domain/CustomizeCheckoutShared/ValueObjects/CheckoutDynamicDeductionItem.cs b/0_Framework/Domain/CustomizeCheckoutShared/ValueObjects/CheckoutDynamicDeductionItem.cs new file mode 100644 index 00000000..911f3c87 --- /dev/null +++ b/0_Framework/Domain/CustomizeCheckoutShared/ValueObjects/CheckoutDynamicDeductionItem.cs @@ -0,0 +1,9 @@ +namespace _0_Framework.Application.Enums +{ + public class CheckoutDynamicDeductionItem + { + public string Name { get; set; } + public int Count { get; set; } + public string Amount { get; set; } + } +} diff --git a/Company.Domain/CustomizeCheckoutAgg/CustomizeCheckout.cs b/Company.Domain/CustomizeCheckoutAgg/CustomizeCheckout.cs index 637290cc..992573d7 100644 --- a/Company.Domain/CustomizeCheckoutAgg/CustomizeCheckout.cs +++ b/Company.Domain/CustomizeCheckoutAgg/CustomizeCheckout.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Linq; using _0_Framework.Application; +using _0_Framework.Application.Enums; using _0_Framework.Domain; using _0_Framework.Domain.CustomizeCheckoutShared.Enums; using _0_Framework.Domain.CustomizeCheckoutShared.ValueObjects; @@ -33,7 +34,8 @@ public class CustomizeCheckout : EntityBase ICollection customizeCheckoutSalaryAids, ICollection customizeCheckoutRewards, TimeSpan lateToWorkValue, double settingSalary, double dailyWage, WorkshopShiftStatus shiftStatus, IrregularShift irregularShift, - ICollection customizeRotatingShifts, ICollection employeeSettingsShifts) + ICollection customizeRotatingShifts, ICollection employeeSettingsShifts, + ICollection checkoutDynamicDeductions) { YearInt = Convert.ToInt32(contractStart.ToFarsi().Substring(0, 4)); MonthInt = Convert.ToInt32(contractStart.ToFarsi().Substring(5, 2)); @@ -83,6 +85,7 @@ public class CustomizeCheckout : EntityBase IrregularShift = irregularShift; CustomizeRotatingShifts = customizeRotatingShifts; RegularShifts = employeeSettingsShifts; + CheckoutDynamicDeductions = checkoutDynamicDeductions; } @@ -286,6 +289,7 @@ public class CustomizeCheckout : EntityBase public ICollection CustomizeCheckoutLoanInstallments { get; set; } public ICollection CustomizeCheckoutSalaryAids { get; set; } public ICollection CustomizeCheckoutRewards { get; set; } + public ICollection CheckoutDynamicDeductions { get; private set; } public IrregularShift IrregularShift { get; set; } public ICollection CustomizeRotatingShifts { get; set; } diff --git a/Company.Domain/CustomizeCheckoutTempAgg/CustomizeCheckoutTemp.cs b/Company.Domain/CustomizeCheckoutTempAgg/CustomizeCheckoutTemp.cs index d6330491..cf888f0c 100644 --- a/Company.Domain/CustomizeCheckoutTempAgg/CustomizeCheckoutTemp.cs +++ b/Company.Domain/CustomizeCheckoutTempAgg/CustomizeCheckoutTemp.cs @@ -9,6 +9,7 @@ using Company.Domain.CustomizeCheckoutTempAgg.ValueObjects; using _0_Framework.Domain.CustomizeCheckoutShared.Enums; using _0_Framework.Domain.CustomizeCheckoutShared.ValueObjects; using System.Linq; +using _0_Framework.Application.Enums; namespace Company.Domain.CustomizeCheckoutTempAgg; @@ -21,7 +22,8 @@ public class CustomizeCheckoutTemp : EntityBase { LateToWorkValue = lateToWorkValue; } - public CustomizeCheckoutTemp(DateTime contractStart, DateTime contractEnd, long employeeId, string employeeFName, + public CustomizeCheckoutTemp( + DateTime contractStart, DateTime contractEnd, long employeeId, string employeeFName, string employeeLName, DateTime employeeDateOfBirth, string employeeNationalCode, string workshopFullName, long workshopId, long? contractId, double monthlySalary, double fridayPay, double overTimePay, double baseYearsPay, double bonusesPay, @@ -37,7 +39,8 @@ public class CustomizeCheckoutTemp : EntityBase ICollection customizeCheckoutSalaryAids, ICollection customizeCheckoutRewards, TimeSpan lateToWorkValue, double settingSalary, double dailyWage, WorkshopShiftStatus shiftStatus, IrregularShift irregularShift, - ICollection customizeRotatingShifts, ICollection employeeSettingsShifts) + ICollection customizeRotatingShifts, ICollection employeeSettingsShifts, + ICollection checkoutDynamicDeductions) { YearInt = Convert.ToInt32(contractStart.ToFarsi().Substring(0, 4)); MonthInt = Convert.ToInt32(contractStart.ToFarsi().Substring(5, 2)); @@ -87,6 +90,7 @@ public class CustomizeCheckoutTemp : EntityBase IrregularShift = irregularShift; CustomizeRotatingShifts = customizeRotatingShifts; RegularShifts = employeeSettingsShifts; + CheckoutDynamicDeductions = checkoutDynamicDeductions; } #region Getters @@ -123,6 +127,7 @@ public class CustomizeCheckoutTemp : EntityBase public IrregularShift IrregularShift { get; set; } public ICollection CustomizeRotatingShifts { get; set; } public ICollection RegularShifts { get; set; } + public ICollection CheckoutDynamicDeductions { get; private set; } #endregion @@ -389,4 +394,4 @@ public class CustomizeCheckoutTemp : EntityBase { HasAmountConflict = hasConflict; } -} \ No newline at end of file +} diff --git a/CompanyManagment.App.Contracts/CustomizeCheckout/CustomizeCheckoutMandatoryViewModel.cs b/CompanyManagment.App.Contracts/CustomizeCheckout/CustomizeCheckoutMandatoryViewModel.cs index 19dfc86a..8d025842 100644 --- a/CompanyManagment.App.Contracts/CustomizeCheckout/CustomizeCheckoutMandatoryViewModel.cs +++ b/CompanyManagment.App.Contracts/CustomizeCheckout/CustomizeCheckoutMandatoryViewModel.cs @@ -3,6 +3,7 @@ using System; using System.Collections.Generic; using System.Security.AccessControl; using _0_Framework.Application; +using _0_Framework.Application.Enums; using _0_Framework.Domain.CustomizeCheckoutShared.Base; using _0_Framework.Domain.CustomizeCheckoutShared.Enums; using _0_Framework.Domain.CustomizeCheckoutShared.ValueObjects; @@ -18,8 +19,6 @@ namespace CompanyManagment.App.Contracts.CustomizeCheckout; public class CustomizeCheckoutMandatoryViewModel { - - /// /// حقوق ماهانه /// @@ -207,6 +206,8 @@ public class CustomizeCheckoutMandatoryViewModel public ICollection CustomizeRotatingShifts { get; set; } = []; public ICollection EmployeeSettingsShifts { get; set; } = []; + public List DynamicDeductions { get; set; } = new(); + } diff --git a/CompanyManagment.App.Contracts/CustomizeCheckout/CustomizeCheckoutViewModel.cs b/CompanyManagment.App.Contracts/CustomizeCheckout/CustomizeCheckoutViewModel.cs index 0da3d689..049eeb25 100644 --- a/CompanyManagment.App.Contracts/CustomizeCheckout/CustomizeCheckoutViewModel.cs +++ b/CompanyManagment.App.Contracts/CustomizeCheckout/CustomizeCheckoutViewModel.cs @@ -4,6 +4,7 @@ using System; using System.Collections.Generic; using System.Runtime; using System.Security.AccessControl; +using _0_Framework.Application.Enums; using _0_Framework.Domain.CustomizeCheckoutShared.Base; using _0_Framework.Domain.CustomizeCheckoutShared.Enums; using _0_Framework.Domain.CustomizeCheckoutShared.ValueObjects; @@ -12,116 +13,115 @@ using CompanyManagment.App.Contracts.Loan; using CompanyManagment.App.Contracts.Reward; using CompanyManagment.App.Contracts.SalaryAid; -namespace CompanyManagment.App.Contracts.CustomizeCheckout +namespace CompanyManagment.App.Contracts.CustomizeCheckout; + +public class CustomizeCheckoutViewModel { - public class CustomizeCheckoutViewModel - { - public long Id { get; set; } - public DateTime CreationDate { get; set; } - public string Month { get; set; } - public string Year { get; set; } - public int PrintCounter { get; set; } + public long Id { get; set; } + public DateTime CreationDate { get; set; } + public string Month { get; set; } + public string Year { get; set; } + public int PrintCounter { get; set; } - public long EmployeeId { get; set; } - public string EmployeeFName { get; set; } - public string EmployeeLName { get; set; } - public string EmployeeFullName => $"{EmployeeFName} {EmployeeLName}"; - public string FatherName { get; set; } - public string NationalCode { get; set; } - public string DateOfBirth { get; set; } - public long PersonnelCode { get; set; } - public string PersonnelCodeString => PersonnelCode.ToString(); + public long EmployeeId { get; set; } + public string EmployeeFName { get; set; } + public string EmployeeLName { get; set; } + public string EmployeeFullName => $"{EmployeeFName} {EmployeeLName}"; + public string FatherName { get; set; } + public string NationalCode { get; set; } + public string DateOfBirth { get; set; } + public long PersonnelCode { get; set; } + public string PersonnelCodeString => PersonnelCode.ToString(); - public string WorkshopName { get; set; } - public long WorkshopId { get; set; } + public string WorkshopName { get; set; } + public long WorkshopId { get; set; } - public long EmployerId { get; set; } - public string EmployerName { get; set; } - public List EmployerList { get; set; } + public long EmployerId { get; set; } + public string EmployerName { get; set; } + public List EmployerList { get; set; } - public long ContractId { get; set; } - public string ContractNo { get; set; } - public DateTime ContractStartGr { get; set; } - public DateTime ContractEndGr { get; set; } - public string ContractStartFa { get; set; } - public string ContractEndFa { get; set; } - //[JsonIgnore] - //public string LastDayOfWork => LeftWorkDateGr.AddDays(-1).ToFarsi(); - //[JsonIgnore] - //public string LeftWorkDateFa => LeftWorkDateGr.ToFarsi(); - public DateTime LeftWorkDateGr { get; set; } + public long ContractId { get; set; } + public string ContractNo { get; set; } + public DateTime ContractStartGr { get; set; } + public DateTime ContractEndGr { get; set; } + public string ContractStartFa { get; set; } + public string ContractEndFa { get; set; } + //[JsonIgnore] + //public string LastDayOfWork => LeftWorkDateGr.AddDays(-1).ToFarsi(); + //[JsonIgnore] + //public string LeftWorkDateFa => LeftWorkDateGr.ToFarsi(); + public DateTime LeftWorkDateGr { get; set; } - public string SumOfWorkingDays { get; set; } + public string SumOfWorkingDays { get; set; } - public string MonthlySalary { get; set; } - public string BaseYearsPay { get; set; } + public string MonthlySalary { get; set; } + public string BaseYearsPay { get; set; } - public string MarriedAllowance { get; set; } - public string OvertimePay { get; set; } - public string NightworkPay { get; set; } - public string FridayPay { get; set; } - public string MissionPay { get; set; } - public string ShiftPay { get; set; } - public string FamilyAllowance { get; set; } - public string BonusesPay { get; set; } - public string LeavePay { get; set; } - public string RewardPay { get; set; } + public string MarriedAllowance { get; set; } + public string OvertimePay { get; set; } + public string NightworkPay { get; set; } + public string FridayPay { get; set; } + public string MissionPay { get; set; } + public string ShiftPay { get; set; } + public string FamilyAllowance { get; set; } + public string BonusesPay { get; set; } + public string LeavePay { get; set; } + public string RewardPay { get; set; } - public bool IsBirthday { get; set; } = true; - public string FineDeduction { get; set; } - public string InsuranceDeduction { get; set; } - public string TaxDeducation { get; set; } - public string InstallmentDeduction { get; set; } - public string SalaryAidDeduction { get; set; } - public string AbsenceDeduction { get; set; } - public string EarlyExitDeduction { get; set; } - public string LateToWorkDeduction { get; set; } + public bool IsBirthday { get; set; } = true; + public string FineDeduction { get; set; } + public string InsuranceDeduction { get; set; } + public string TaxDeducation { get; set; } + public string InstallmentDeduction { get; set; } + public string SalaryAidDeduction { get; set; } + public string AbsenceDeduction { get; set; } + public string EarlyExitDeduction { get; set; } + public string LateToWorkDeduction { get; set; } - public string TotalClaims { get; set; } - public string TotalDeductions { get; set; } - public string TotalPayment { get; set; } + public string TotalClaims { get; set; } + public string TotalDeductions { get; set; } + public string TotalPayment { get; set; } - public List FineViewModelList { get; set; } - public List RewardViewModels { get; set; } - public List InstallmentViewModels { get; set; } - public List SalaryAidViewModels { get; set; } - public bool TotalPaymentHide { get; set; } - public PersonnelCheckoutDailyRollCallViewModel MonthlyRollCall { get; set; } - public double TotalPaymentD { get; set; } + public List FineViewModelList { get; set; } + public List RewardViewModels { get; set; } + public List InstallmentViewModels { get; set; } + public List SalaryAidViewModels { get; set; } + public bool TotalPaymentHide { get; set; } + public PersonnelCheckoutDailyRollCallViewModel MonthlyRollCall { get; set; } + public double TotalPaymentD { get; set; } - public string TotalLateToWorkDeduction { get; set; } + public string TotalLateToWorkDeduction { get; set; } - public string LateToWorkValue { get; set; } + public string LateToWorkValue { get; set; } - public string SettingSalary { get; set; } - public string DailyWage { get; set; } - public WorkshopShiftStatus ShiftStatus { get; set; } + public string SettingSalary { get; set; } + public string DailyWage { get; set; } + public WorkshopShiftStatus ShiftStatus { get; set; } - public string EmployeePicture { get; set; } + public string EmployeePicture { get; set; } - public IrregularShift IrregularShift { get; set; } - public List CustomizeRotatingShifts { get; set; } - public List RegularShift { get; set; } + public IrregularShift IrregularShift { get; set; } + public List CustomizeRotatingShifts { get; set; } + public List RegularShift { get; set; } - public bool HasAmountConflict { get; set; } + public bool HasAmountConflict { get; set; } - // New: up to three dynamic deduction items (title -> amount string) - public IDictionary DynamicDeductions { get; set; } = new Dictionary(); + // New: up to three dynamic deduction items (name, count, amount) + public List CheckoutDynamicDeductions { get; set; } = new List(); - //public bool HasLeft { get; set; } - //public string IsBlockCantracingParty { get; set; } - //public string IsActiveString { get; set; } - //public long WorkingHoursId { get; set; } - //public string ArchiveCode { get; set; } - //public string ConsumableItems { get; set; } - //public string HousingAllowance { get; set; } - //public string YearsPay { get; set; } + //public bool HasLeft { get; set; } + //public string IsBlockCantracingParty { get; set; } + //public string IsActiveString { get; set; } + //public long WorkingHoursId { get; set; } + //public string ArchiveCode { get; set; } + //public string ConsumableItems { get; set; } + //public string HousingAllowance { get; set; } + //public string YearsPay { get; set; } - } } diff --git a/CompanyManagment.Application/CustomizeCheckoutApplication.cs b/CompanyManagment.Application/CustomizeCheckoutApplication.cs index 8c41e745..fab2a84e 100644 --- a/CompanyManagment.Application/CustomizeCheckoutApplication.cs +++ b/CompanyManagment.Application/CustomizeCheckoutApplication.cs @@ -123,7 +123,7 @@ namespace CompanyManagment.Application result.LateToWorkDeduction, result.EarlyExitDeduction, result.RewardPay, result.SalaryAidDeduction, result.InstallmentDeduction, result.FineDeduction, result.TaxDeduction, result.SumOfWorkingDays, result.TotalClaimsStr, result.TotalDeductionsStr, result.TotalPayment, contract?.ContractNo ?? "-", fines, loanInstallments, salaryAids, rewards, result.LateToWorkValue, result.SettingSalary, result.DailyWage, result.ShiftStatus, result.IrregularShift, result.CustomizeRotatingShifts, - regularShift); + regularShift,result.DynamicDeductions); _customizeCheckoutRepository.Create(entity); @@ -187,7 +187,7 @@ namespace CompanyManagment.Application computations.LateToWorkDeduction, computations.EarlyExitDeduction, computations.RewardPay, computations.SalaryAidDeduction, computations.InstallmentDeduction, computations.FineDeduction, computations.TaxDeduction, computations.SumOfWorkingDays, computations.TotalClaimsStr, computations.TotalDeductionsStr, computations.TotalPayment, contract?.ContractNo ?? "-", fines, loanInstallments, salaryAids, rewards, computations.LateToWorkValue, computations.SettingSalary, computations.DailyWage, computations.ShiftStatus, computations.IrregularShift, - computations.CustomizeRotatingShifts, regularShift); + computations.CustomizeRotatingShifts, regularShift,computations.DynamicDeductions); _customizeCheckoutRepository.Create(entity); _customizeCheckoutRepository.RemoveEmployeeCustomizeCheckoutInDates(command.WorkshopId, employeeId, command.ContractStart, command.ContractEnd); diff --git a/CompanyManagment.Application/CustomizeCheckoutTempApplication.cs b/CompanyManagment.Application/CustomizeCheckoutTempApplication.cs index 750e9a96..406d3238 100644 --- a/CompanyManagment.Application/CustomizeCheckoutTempApplication.cs +++ b/CompanyManagment.Application/CustomizeCheckoutTempApplication.cs @@ -98,7 +98,7 @@ namespace CompanyManagment.Application result.LateToWorkDeduction, result.EarlyExitDeduction, result.RewardPay, result.SalaryAidDeduction, result.InstallmentDeduction, result.FineDeduction, result.TaxDeduction, result.SumOfWorkingDays, result.TotalClaimsStr, result.TotalDeductionsStr, result.TotalPayment, contract?.ContractNo ?? "-", fines, loanInstallments, salaryAids, rewards, result.LateToWorkValue, result.SettingSalary, result.DailyWage, result.ShiftStatus, result.IrregularShift, result.CustomizeRotatingShifts, - regularShift); + regularShift,result.DynamicDeductions); _customizeCheckoutTempRepository.Create(entity); @@ -146,7 +146,8 @@ namespace CompanyManagment.Application var regularShift = computations.EmployeeSettingsShifts.Select(x => new CustomizeCheckoutRegularShift(x.StartTime, x.EndTime, x.Placement)).ToList(); - + + var entity = new CustomizeCheckoutTemp(command.ContractStart, command.ContractEnd, employeeId, employee.FName, employee.LName, employee.DateOfBirth, employee.NationalCode, workshop.WorkshopFullName, command.WorkshopId, contract?.Id, computations.MonthlySalary, computations.FridayPay, computations.OverTimePay, computations.BaseYearsPay, @@ -155,7 +156,7 @@ namespace CompanyManagment.Application computations.LateToWorkDeduction, computations.EarlyExitDeduction, computations.RewardPay, computations.SalaryAidDeduction, computations.InstallmentDeduction, computations.FineDeduction, computations.TaxDeduction, computations.SumOfWorkingDays, computations.TotalClaimsStr, computations.TotalDeductionsStr, computations.TotalPayment, contract?.ContractNo ?? "-", fines, loanInstallments, salaryAids, rewards, computations.LateToWorkValue, computations.SettingSalary, computations.DailyWage, computations.ShiftStatus, computations.IrregularShift, - computations.CustomizeRotatingShifts, regularShift); + computations.CustomizeRotatingShifts, regularShift,computations.DynamicDeductions); _customizeCheckoutTempRepository.Create(entity); _customizeCheckoutTempRepository.RemoveEmployeeTemporaryCheckoutInDates(command.WorkshopId, employeeId, command.ContractStart, command.ContractEnd); } diff --git a/CompanyManagment.EFCore/Repository/RollCallMandatoryRepository.cs b/CompanyManagment.EFCore/Repository/RollCallMandatoryRepository.cs index e4f32f41..d78fbec5 100644 --- a/CompanyManagment.EFCore/Repository/RollCallMandatoryRepository.cs +++ b/CompanyManagment.EFCore/Repository/RollCallMandatoryRepository.cs @@ -20,6 +20,7 @@ using CompanyManagment.App.Contracts.Fine; using System.Globalization; using System.IO; using System.Threading.Tasks; +using _0_Framework.Application.Enums; using _0_Framework.Domain.CustomizeCheckoutShared.Base; using _0_Framework.Domain.CustomizeCheckoutShared.Enums; using _0_Framework.Domain.CustomizeCheckoutShared.ValueObjects; @@ -4304,19 +4305,25 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll long workshopId, DateTime contractStart, DateTime contractEnd) { + var dynamicdeductions = new List(); //مقدار جریمه تاخیر ورود double lateEntryFine = 0; //مرز جریمه جداگانه تاخیر ورود int minuteThresholdForLateEntryFine = 16; - - int lateEntryFineTimes = 0; +//تعداد دفعاتی که پرسنل بیش از مرز تاخیر ورود داشته است + int lateEntryFineTimes = 0; //مرز محاسبه تعجیل خروج int minuteThresholdForEarlyExitCalculation = 30; //مبلغ جریمه تاخیر ورود - int lateEntryFineAmount = 40_000; + int lateEntryFineAmount = 400_000; + //مقدار جریمه افرادی که دارای بیمه هستند ولی غیبت کرده اند - int absenceForInsuranceEmployeesAmount = 150_000; + int absenceForInsuranceEmployeesAmount = 1500_000; + //جریمه غیبت برای پرسنل بیمه شده + double absenceForInsuranceFine = 0; + //تعداد روز غیبت پرسنل بیمه شده + int absenceForInsuranceDays = 0; var checkoutEnd = contractEnd; @@ -4726,12 +4733,14 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll leavePermittedDays -= absenceDays; leavePayAmount = leavePermittedDays * dailyWage; absentsDeductionAmount = 0; + absenceDays = 0; } else { absenceDays -= leavePermittedDays; absentsDeductionAmount = absenceDays * dailyWage; leavePayAmount = 0; + leavePermittedDays = 0; } #endregion @@ -5046,6 +5055,7 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll { lateEntryFineTimes = (int)minutes / minuteThresholdForLateEntryFine; lateEntryFine = lateEntryFineTimes * lateEntryFineAmount; + } lateToWorkDeduction += dayMinuteWage * minutes; @@ -5060,6 +5070,14 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll } } + dynamicdeductions.Add(new() + { + Amount = lateEntryFine.ToMoney(), + Name = "جریمه 40 تومانی", + Count = lateEntryFineTimes + }); + + // if (mandatoryDays == 31) // { @@ -5067,6 +5085,28 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll // } #endregion + + + # region جریمه افراد غایبی که بیمه هستند + + var leftWorkInsurance = _context.LeftWorkInsuranceList.FirstOrDefault(x => x.WorkshopId == workshopId && x.EmployeeId == employeeId + &&( x.StartWorkDate <= contractEnd && + x.LeftWorkDate >= contractStart) + || (x.LeftWorkDate == null && x.StartWorkDate <= contractEnd)); + if (leftWorkInsurance != null && absenceDays >0) + { + absenceForInsuranceFine = absenceDays * absenceForInsuranceEmployeesAmount; + absenceForInsuranceDays = absenceDays; + + dynamicdeductions.Add(new CheckoutDynamicDeductionItem + { + Amount = absenceForInsuranceFine.ToMoney(), + Name = "جریمه بیمه", + Count = absenceForInsuranceDays + }); + } + #endregion + return new CustomizeCheckoutMandatoryViewModel { @@ -5110,6 +5150,7 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll CustomizeRotatingShifts = customizeWorkshopEmployeeSettings.CustomizeRotatingShifts, EmployeeSettingsShifts = customizeWorkshopEmployeeSettings.CustomizeWorkshopEmployeeSettingsShifts .Select(x => (CustomizeSifts)x).ToList(), + DynamicDeductions = dynamicdeductions, }; } diff --git a/_0_Framework/_0_Framework_b.csproj b/_0_Framework/_0_Framework_b.csproj index ceb20d98..bb6a3bd7 100644 --- a/_0_Framework/_0_Framework_b.csproj +++ b/_0_Framework/_0_Framework_b.csproj @@ -13,4 +13,8 @@ + + + +