예제 #1
0
        public async Task <FinancialStatementsData> GetFinancialStatementAsync(string customerNumber, string reportType, string accountingMethod, int year)
        {
            if (string.IsNullOrEmpty(customerNumber))
            {
                //  _logger.LogError("Could not fetch party data without customer number.");
                throw new Exception("No customer number!");
            }

            using (var httpClient = _httpClientFactory.CreateClient())
            {
                httpClient.AddDefaultJsonHeaders();
                try
                {
                    using (HttpResponseMessage response = await httpClient.GetAsync(_apiEndPoints.GetServiceUrl("financial-statements") + "reports/customer/" + customerNumber + "?year=" + year + "&report-type=" + reportType + "&accounting-method=" + accountingMethod))
                    {
                        FinancialStatementsData fsd = new FinancialStatementsData();
                        var res = await response.Content.ReadAsStringAsync();

                        if (res.Equals("[]"))
                        {
                            fsd.ReportId = null;
                        }
                        else
                        {
                            JArray list = JArray.Parse(res);


                            //   AutoMapper.Mapper.Map(json, fsd, typeof(JObject), typeof(List<FinancialStatementsData>));



                            foreach (var item in list)
                            {
                                fsd.ReportId   = Convert.ToInt64(item["report-header"]["report-id"]);
                                fsd.ReportType = item["report-header"]["report-type"].ToString();
                                fsd.ReportDate = Convert.ToDateTime(item["report-header"]["report-date"].ToString());
                            }
                        }



                        return(fsd);
                    }


                    //    else
                    //    {
                    //    _logger.LogError("Unknown Party type ({partyKind}) while fetching party data for party number: {partyNumber}", partyKind, party.CustomerNumber);
                    //    throw new Exception("Unknown Party type: " + partyKind);
                    //}
                }
                catch (HttpRequestException e)
                {
                    //_logger.LogError(e, "Could not fetch party data for party number: {partyNumber}", customerNumber);
                    throw e;
                }
            }
        }
예제 #2
0
        public async Task <bool> Handle(UpdateFinancialStatementsCommand message, CancellationToken cancellationToken)
        {
            var mandatoryReports = await _configurationService.GetEffective("financial-statements/mandatory-reports");

            JObject json = JObject.Parse(mandatoryReports);
            JArray  list = (JArray)json["mandatory-reports"];

            foreach (var involvedPartyItem in message.Application.InvolvedParties)
            {
                if (involvedPartyItem is OrganizationParty organization)
                {
                    var fslist = new List <FinancialStatement>();
                    organization.FinancialStatements = new List <FinancialStatement>();
                    foreach (var item in list)
                    {
                        JArray reports       = (JArray)item["reports"];
                        var    distinctYears = (from foo in reports
                                                select foo["year"]).Distinct().ToArray();
                        foreach (var year in distinctYears)
                        {
                            FinancialStatement statement = new FinancialStatement();
                            statement.Reports = new List <Report>();
                            statement.Year    = Convert.ToInt32(year);
                            foreach (var statementItem in reports)
                            {
                                if (Convert.ToInt32(statementItem["year"]) == Convert.ToInt32(year))
                                {
                                    FinancialStatementsData financialStatementsData = await _financialStatementsService.GetFinancialStatementAsync(organization.CustomerNumber, statementItem["report-type"].ToString(), statementItem["accounting-method"].ToString(), Convert.ToInt32(statementItem["year"]));

                                    Report r = new Report
                                    {
                                        ReportId         = (financialStatementsData.ReportId != 0) ? financialStatementsData.ReportId : null,
                                        ReportType       = statementItem["report-type"].ToString(),
                                        AccountingMethod = statementItem["accounting-method"].ToString(),
                                        ReportDate       = financialStatementsData.ReportDate
                                    };
                                    statement.Reports.Add(r);
                                }
                            }
                            fslist.Add(statement);
                        }
                    }
                    organization.FinancialStatements = fslist;
                }
            }

            _involvedPartyRepository.PublishFinancialStatementsChangeEvent(message.Application.ApplicationNumber,
                                                                           message.Application.CustomerNumber);
            return(true);
        }