public NPReportCompany(ProjectCompanyFactShare factShare, CompanyNumberContainer numbers) { ProjectCompany = factShare.DependentProjectCompany; OwnerCompany = factShare.OwnerProjectCompany; this.factShare = factShare; switch (ProjectCompany.State) { case State.Domestic: Number = ++numbers.DomesticCompanyNumber; break; case State.ForeignLight: Number = ++numbers.ForeignLightCompanyNumber; break; case State.Foreign: Number = ++numbers.ForeignCompanyNumber; break; case State.Individual: default: throw new ArgumentException($"Expected Project Company State Domestic, Foreign, ForeignLight. Got {ProjectCompany.State}"); } }
public bool CalculateIsNotificationOfParticipationRequired( ProjectCompanyFactShare factShare ) { var owner = factShare.OwnerProjectCompany; var dependent = factShare.DependentProjectCompany; //CheckDependent(dependent); if (owner.State == State.Foreign || owner.State == State.ForeignLight || dependent.State == State.Domestic) { return(false); } if (factShare.IsFounder || factShare.IsControlledBy) { return(true); } if (factShare.ShareFactPart > 10) { return(true); } return(false); }
public static IEnumerable <ProjectCompanyShare> GetShares(this ProjectCompanyFactShare factShare, IEnumerable <ProjectCompany> companies) { return(factShare.OwnerProjectCompanyId .GetCompany(companies) .OwnerProjectCompanyShares .Where(x => x.OwnerProjectCompanyId == factShare.OwnerProjectCompanyId && x.DependentProjectCompanyId == factShare.DependentProjectCompanyId)); }
public bool IsKIKCompany(ProjectCompanyFactShare share) { if (share.OwnerProjectCompany.State == State.Domestic && share.OwnerProjectCompany.DomesticCompany.IsPublic) { return(false); } return(IsCompanyForegin(share) && IsCompanyNotResident(share) && IsCompanyControlFaceIsResident(share)); }
private ICollection <ProjectCompanyFactShare> GetCalcualtedFactParts(IList <int> orderedIds, IEnumerable <ProjectCompanyShare> shares) { var factShareList = new List <ProjectCompanyFactShare>(); var level = orderedIds.Count(); var cstMatrix = new DenseMatrix(level); var shareLookup = shares.ToLookup(x => x.OwnerProjectCompanyId); foreach (var share in shares) { cstMatrix[orderedIds.IndexOf(share.OwnerProjectCompanyId), orderedIds.IndexOf(share.DependentProjectCompanyId)] += share.SharePart / 100; } var oneMatrix = DenseMatrix.CreateIdentity(level); var minusMatrix = oneMatrix - cstMatrix; var inverseMatrix = minusMatrix.Inverse(); for (var y = 0; y < inverseMatrix.RowCount; y++) { for (var x = 0; x < inverseMatrix.ColumnCount; x++) { if (y != x) { var directShares = shareLookup[orderedIds[y]].Where(q => q.DependentProjectCompanyId == orderedIds[x]); var factShare = new ProjectCompanyFactShare { OwnerProjectCompanyId = orderedIds[y], OwnerProjectCompany = shareLookup[orderedIds[y]].FirstOrDefault()?.OwnerProjectCompany, DependentProjectCompanyId = orderedIds[x], DependentProjectCompany = shares.FirstOrDefault(q => q.DependentProjectCompanyId == orderedIds[x])?.DependentProjectCompany, ShareFactPart = inverseMatrix[y, x] * 100, ShareDirectPart = directShares.Sum(q => q.SharePart), IsControlledBy = directShares.Any(q => true.Equals(q.IsControlledBy)), IsFounder = directShares.Any(q => true.Equals(q.IsFounder)), IsOwnInterest = directShares.Any(q => true.Equals(q.IsOwnInterest)), IsPartnerInterest = directShares.Any(q => true.Equals(q.IsPartnerInterest)), IsChildInterest = directShares.Any(q => true.Equals(q.IsChildInterest)), DirectShares = directShares.ToArray(), }; factShareList.Add(factShare); } } } return(factShareList); }
private void ProcessListA(int currentSheetNum, int companyNumber, XLWorkbook wb, ProjectCompanyShare share, ProjectCompanyFactShare factShare) { int shareType = 1; double shareResult = share.SharePart; if (factShare.ShareFactPart > 0 && share.SharePart == 0) { shareType = 2; } if (factShare.ShareFactPart > 0 && share.SharePart > 0) { shareType = 3; shareResult += factShare.ShareFactPart; } wb.Worksheet(currentSheetNum).Name = NamedRusSheet + currentSheetNum; WriteStringInTripledCells(13, 52, companyNumber.ToString("D5"), wb, currentSheetNum); WriteMultipleStringInTripledCells(17, 1, share.DependentProjectCompany.ForeignCompany.FullName, wb, currentSheetNum); WriteMultipleStringInTripledCells(25, 1, share.DependentProjectCompany.ForeignCompany.Name, wb, currentSheetNum); WriteStringInTripledCells(33, 44, share.DependentProjectCompany.ForeignCompany.CountryCodeId.ToString("D3") ?? "---", wb, currentSheetNum); WriteMultipleStringInTripledCells(37, 1, share.DependentProjectCompany.ForeignCompany.RegistrationNumber, wb, currentSheetNum); WriteMultipleStringInTripledCells(43, 1, share.DependentProjectCompany.ForeignCompany.TaxPayerCodeId.ToString() ?? "-", wb, currentSheetNum); WriteStringInTripledCells(37, 1, share.DependentProjectCompany.ForeignCompany.RegistrationNumber, wb, currentSheetNum); WriteStringInTripledCells(56, 43, (shareType).ToString(), wb, currentSheetNum); WriteStringInTripledCells(58, 43, share.ShareStartDate.Date.ToString("dd"), wb, currentSheetNum); WriteStringInTripledCells(58, 52, share.ShareStartDate.Month.ToString("D2"), wb, currentSheetNum); WriteStringInTripledCells(58, 61, share.ShareStartDate.Date.Year.ToString("D4"), wb, currentSheetNum); WriteStringInTripledCells(60, 43, Math.Truncate(shareResult).ToString("000"), wb, currentSheetNum); WriteStringInTripledCells(60, 55, ((shareResult - Math.Truncate(shareResult)) * 100000).ToString("00000"), wb, currentSheetNum); var isDateNull = share.ShareFinishDate == null; WriteStringInTripledCells(62, 43, isDateNull ? "--" : share.ShareFinishDate.Value.Date.ToString("dd"), wb, currentSheetNum); WriteStringInTripledCells(62, 52, isDateNull ? "--" : share.ShareFinishDate.Value.Month.ToString("D2"), wb, currentSheetNum); WriteStringInTripledCells(62, 61, isDateNull ? "----" : share.ShareFinishDate.Value.Year.ToString("D4"), wb, currentSheetNum); }
public bool IsCompanyForegin(ProjectCompanyFactShare share) { return(share.DependentProjectCompany.State == State.ForeignLight || share.DependentProjectCompany.State == State.Foreign); }
public bool IsCompanyControlFaceIsResident(ProjectCompanyFactShare share) { return(share.OwnerProjectCompany.IsControlCompany && share.OwnerProjectCompany.IsResident); }
public bool IsCompanyNotResident(ProjectCompanyFactShare share) { return(!share.DependentProjectCompany.IsResident); }