Exemple #1
0
        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);
        }
Exemple #3
0
 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));
        }
Exemple #5
0
        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);
 }