diff --git a/Hcs.Client/Client/Api/HouseManagementApi.cs b/Hcs.Client/Client/Api/HouseManagementApi.cs index 15e5e10..0fcc45d 100644 --- a/Hcs.Client/Client/Api/HouseManagementApi.cs +++ b/Hcs.Client/Client/Api/HouseManagementApi.cs @@ -1,4 +1,5 @@ -using Hcs.Client.Api.Request.HouseManagement; +using Hcs.Client.Api.Payload.HouseManagement; +using Hcs.Client.Api.Request.HouseManagement; using Hcs.Service.Async.HouseManagement; using System; using System.Collections.Generic; @@ -56,5 +57,18 @@ namespace Hcs.Client.Api var request = new ExportSupplyResourceContractObjectAddressDataRequest(client); return await request.ExecuteAsync(contractRootGuid, token); } + + + /// + /// Импорт договора ресурсоснабжения с РСО + /// + /// Пейлоад договора ресурсоснабжения + /// Токен отмены + /// Импортированный договор + public async Task ImportSupplyResourceContractDataAsync(ImportSupplyResourceContractDataPayload payload, CancellationToken token = default) + { + var request = new ImportSupplyResourceContractDataRequest(client); + return await request.ExecuteAsync(payload, token); + } } } diff --git a/Hcs.Client/Client/Api/Payload/HouseManagement/ImportSupplyResourceContractDataPayload.cs b/Hcs.Client/Client/Api/Payload/HouseManagement/ImportSupplyResourceContractDataPayload.cs new file mode 100644 index 0000000..aefb1e1 --- /dev/null +++ b/Hcs.Client/Client/Api/Payload/HouseManagement/ImportSupplyResourceContractDataPayload.cs @@ -0,0 +1,212 @@ +using Hcs.Service.Async.HouseManagement; +using System; + +namespace Hcs.Client.Api.Payload.HouseManagement +{ + // http://open-gkh.ru/HouseManagement/SupplyResourceContractType.html + public class ImportSupplyResourceContractDataPayload + { + /// + /// Если договор не является публичным и/или присутствует заключенный на бумажном носителе + /// (электронной форме) и/или не заключен в отношении нежилых помещений в многоквартирных домах, + /// то равно true, иначе - false + /// + public bool isContract; + + /// + /// Номер договора + /// + public string contractNumber; + + /// + /// Дата заключения + /// + public DateTime signingDate; + + /// + /// Дата вступления в силу + /// + public DateTime effectiveDate; + + /// + /// Необязательное. По умолчанию = true. Договор заключен на неопределенный срок или нет + /// + public bool? indefiniteTerm; + + /// + /// Необязательное. По умолчанию = true. Автоматически пролонгировать договор на один год при наступлении + /// даты окончания действия или нет. + /// + public bool? automaticRollOverOneYear; + + /// + /// Условное. Дата окончания действия. Обязательно для заполнения, если + /// = true. + /// + public DateTime? comptetionDate; + + /// + /// Условное. Период передачи текущих показаний по индивидуальным приборам учета. Обязателен для + /// заполнения, если поле = true ИЛИ если поле + /// = true. + /// + public SupplyResourceContractTypePeriod period; + + /// + /// Необязательное. По умолчанию = true. Показывает, разрешена ли гражданам передача текущих показаний по + /// индивидуальным приборам учета в любой день месяца. Заполнение возможно только если: в настройках + /// организации установлена настройка "Разрешить передачу гражданам показаний индивидуальных или общих + /// (квартирных) приборов учета в любой день месяца" ИЛИ в настройках организации установлена настройка + /// "Разрешить передачу гражданам показаний индивидуальных или общих (квартирных) приборов учета только + /// в сроки, установленные в договоре, или в любой день месяца, если в договоре установлен признак + /// "Разрешить передачу показаний приборов учета в любой день месяца" И заполнен . + /// + public bool? indicationsAnyDay; + + /// + /// Необязательное. Ссылка на НСИ "Основание заключения договора" (реестровый номер 58). Значения + /// брать из . + /// + public nsiRef[] contractBase; + + /// + /// Контрагент. По умолчанию = true. Подходящие типы: + /// , + /// , + /// , + /// , + /// либо true, если это договор оферты. + /// + public object counterparty = true; + + /// + /// Если в договоре в наличии плановый объем и режим подачи поставки ресурсов то true, иначе - false + /// + public bool isPlannedVolume; + + /// + /// Необязательное. Тип ведения планового объема и режима подачи: D - в разрезе договора, + /// O - в разрезе объектов жилищного фонда. Заполняется при наличии в договоре планового объема и + /// режима поставки ресурсов. + /// + public SupplyResourceContractTypePlannedVolumeType? plannedVolumeType; + + /// + /// Предмет договора. Максимум 100 записей. + /// + public SupplyResourceContractTypeContractSubject[] contractSubject; + + /// + /// Условное. Размещение информации о начислениях за коммунальные услуги осуществляет: R(SO)- РСО, + /// P(roprietor) - исполнитель коммунальных услуг. Заполняется, если порядок размещения информации + /// о начислениях за коммунальные услуги ведется в разрезе договора. + /// + public SupplyResourceContractTypeCountingResource? countingResource; + + /// + /// Показатели качества коммунальных ресурсов и температурный график ведутся: D - в разрезе договора, + /// O - в разрезе объектов жилищного фонда + /// + public SupplyResourceContractTypeSpecifyingQualityIndicators specifyingQualityIndicators; + + /// + /// Необязательное. По умолчанию = true. Признак "Отсутствие присоединения сетей объектов жилищного + /// фонда к централизованной системе водоснабжения". Может быть указан, только если показатели качества + /// коммунальных ресурсов ведутся в разрезе договора и предмет договора включает коммунальную услугу + /// "Холодное водоснабжение" И/ИЛИ "Горячее водоснабжение"/ + /// + public bool? noConnectionToWaterSupply; + + /// + /// Условное. Данные об объекте жилищного фонда. При импорте договора должен быть добавлен как минимум + /// один адрес объекта жилищного фонда. + /// + public SupplyResourceContractTypeObjectAddress[] objectAddress; + + /// + /// Необязательное. Показатель качества (содержащийся в справочнике показателей качества). Если + /// показатели указываются в разрезе договора, то ссылка на ОЖФ не заполняется. Если показатели + /// указываются в разрезе ОЖФ, то ссылка на ОЖФ обязательна. + /// + public SupplyResourceContractTypeQuality[] quality; + + /// + /// Необязательное. Иной показатель качества коммунального ресурса (не содержащийся в справочнике + /// показателей качества). Если показатели указываются в разрезе договора, то ссылка на ОЖФ + /// не заполняется. Если показатели указываются в разрезе ОЖФ, то ссылка на ОЖФ обязательна. + /// + public SupplyResourceContractTypeOtherQualityIndicator[] otherQualityIndicator; + + /// + /// Необязательное. Информация о температурном графике. Если показатели качества указываются в разрезе + /// договора, то ссылка на ОЖФ в данном элементе не заполняется и элемент может заполняться только если + /// в предмете договора хотя бы раз встречается ресурс "Тепловая энергия". Если показатели качества + /// указываются в разрезе ОЖФ, то ссылка на ОЖФ обязательна и элемент заполняется только если + /// в рамках ОЖФ встречается ресурс "Тепловая энергия". + /// + public SupplyResourceContractTypeTemperatureChart[] temperatureChart; + + /// + /// Условное. Срок представления (выставления) платежных документов, не позднее. Является + /// обязательным, если вторая сторона договора отличается от "Управляющая организация" ИЛИ если + /// заполнено поле . Не заполняется, если + /// = true. + /// + public SupplyResourceContractTypeBillingDate billingDate; + + /// + /// Условное. Срок внесения платы, не позднее. Является обязательным, если вторая сторона договора + /// отличается от "Управляющая организация" И договор не является публичным И/ИЛИ присутствует + /// заключенный на бумажном носителе или в электронной форме И в поле + /// = false. Не заполняется, если = true. + /// + public SupplyResourceContractTypePaymentDate paymentDate; + + /// + /// Условное. Срок предоставления информации о поступивших платежах, не позднее. Является + /// обязательным, если второй стороной договора является "Управляющая организация", + /// "Размещение информации о начислениях за коммунальные услуги осуществляет" = "РСО" И + /// договор не является публичным и/или присутствует заключенный на бумажном носителе или в + /// электронной форме. + /// + public SupplyResourceContractTypeProvidingInformationDate providingInformationDate; + + /// + /// Условное. Указывает на то, что размещение информации об индивидуальных приборах учета и их + /// показаниях осуществляет ресурсоснабжающая организация или нет. Обязательно для заполнения, + /// если в указано "РСО". В остальных случаях не заполняется. + /// + public bool? meteringDeviceInformation; + + /// + /// Необязательное. Указывает на то, что объем поставки ресурса(ов) определяется на основании прибора + /// учета или нет. Поле не заполняется, если вторая сторона договора "Управляющая организация" + /// ИЛИ поле = true. + /// + public bool? volumeDepends; + + /// + /// Необязательное. Указывает на то, что оплата предоставленных услуг осуществляется ли единоразово + /// при отгрузке указанных ресурсов без заведения лицевых счетов для потребителей. Доступно + /// для заполнения, только если вторая сторона договора отлична от "Управляющая организация". + /// + public bool? oneTimePayment; + + /// + /// Необязательное. Порядок размещения информации о начислениях за коммунальные услуги ведется: D - в + /// разрезе договора, O - в разрезе объектов жилищного фонда. Заполняется, если второй стороной договора + /// является исполнитель коммунальных услуг. + /// + public SupplyResourceContractTypeAccrualProcedure? accrualProcedure; + + /// + /// Необязательное. Информация о применяемом тарифе. + /// + public SupplyResourceContractTypeTariff[] tariff; + + /// + /// Необязательное. Информация о нормативе потребления коммунальной услуги. + /// + public SupplyResourceContractTypeNorm[] norm; + } +} diff --git a/Hcs.Client/Client/Api/Registry/Registry239.cs b/Hcs.Client/Client/Api/Registry/Registry239.cs new file mode 100644 index 0000000..0b01940 --- /dev/null +++ b/Hcs.Client/Client/Api/Registry/Registry239.cs @@ -0,0 +1,20 @@ +using Hcs.Service.Async.HouseManagement; + +namespace Hcs.Client.Api.Registry +{ + /// + /// НСИ "Тарифицируемый ресурс" (реестровый номер 239) + /// Взято из https://dom.gosuslugi.ru/opendataapi/nsi-239/v1. + /// + public static class Registry239 + { + /// + /// Тепловая энергия + /// + public static ContractSubjectTypeMunicipalResource Element4 => new() + { + Code = "4", + GUID = "eec6e4b8-76c8-4fce-99b7-c95718edad19" + }; + } +} diff --git a/Hcs.Client/Client/Api/Registry/Registry276.cs b/Hcs.Client/Client/Api/Registry/Registry276.cs new file mode 100644 index 0000000..769bda0 --- /dev/null +++ b/Hcs.Client/Client/Api/Registry/Registry276.cs @@ -0,0 +1,29 @@ +using Hcs.Service.Async.HouseManagement; + +namespace Hcs.Client.Api.Registry +{ + /// + /// НСИ "Показатели качества коммунальных ресурсов" (реестровый номер 276) + /// Взято из https://dom.gosuslugi.ru/opendataapi/nsi-276/v1. + /// + public static class Registry276 + { + /// + /// Величина тепловой нагрузки + /// + public static nsiRef Element4 => new() + { + Code = "4", + GUID = "f5624700-3c3f-460f-8313-8fcae00d261c" + }; + + /// + /// Диапазон давления теплоносителя в подающем трубопроводе + /// + public static nsiRef Element10 => new() + { + Code = "10", + GUID = "88443e22-867c-4420-9945-f8c8bc6e7f08" + }; + } +} diff --git a/Hcs.Client/Client/Api/Registry/Registry3.cs b/Hcs.Client/Client/Api/Registry/Registry3.cs new file mode 100644 index 0000000..1d3551d --- /dev/null +++ b/Hcs.Client/Client/Api/Registry/Registry3.cs @@ -0,0 +1,20 @@ +using Hcs.Service.Async.HouseManagement; + +namespace Hcs.Client.Api.Registry +{ + /// + /// НСИ "Вид коммунальной услуги" (реестровый номер 3) + /// Взято из https://dom.gosuslugi.ru/opendataapi/nsi-3/v1. + /// + public static class Registry3 + { + /// + /// Отопление + /// + public static ContractSubjectTypeServiceType Element6 => new() + { + Code = "6", + GUID = "74925764-ddf3-4b4b-b18d-85994187c13a" + }; + } +} diff --git a/Hcs.Client/Client/Api/Registry/Registry58.cs b/Hcs.Client/Client/Api/Registry/Registry58.cs new file mode 100644 index 0000000..bab4056 --- /dev/null +++ b/Hcs.Client/Client/Api/Registry/Registry58.cs @@ -0,0 +1,101 @@ +using Hcs.Service.Async.HouseManagement; + +namespace Hcs.Client.Api.Registry +{ + /// + /// НСИ "Основание заключения договора" (реестровый номер 58). + /// Взято из https://dom.gosuslugi.ru/opendataapi/nsi-58/v1. + /// + public static class Registry58 + { + /// + /// Решение собрания собственников + /// + public static nsiRef Element1 => new() + { + Code = "1", + GUID = "110d48b2-32a9-4a44-939c-b784d9794621" + }; + + /// + /// Открытый конкурс + /// + public static nsiRef Element2 => new() + { + Code = "2", + GUID = "a9dc59c3-d53f-42eb-ba98-cf8c74d88d36" + }; + + /// + /// Договор управления + /// + public static nsiRef Element3 => new() + { + Code = "3", + GUID = "11efe618-79f8-4f53-bfd6-11620e8e9e1e" + }; + + /// + /// Устав + /// + public static nsiRef Element4 => new() + { + Code = "4", + GUID = "a2eb920c-8163-4958-812a-ad153a5dfde6" + }; + + /// + /// Решение правления + /// + public static nsiRef Element5 => new() + { + Code = "5", + GUID = "58639715-2708-4b8e-a5e6-7cae4ddbf03b" + }; + + /// + /// Решение органа управления застройщика + /// + public static nsiRef Element6 => new() + { + Code = "6", + GUID = "9b606ef5-7701-4a12-a837-d81b50939160" + }; + + /// + /// Заявление потребителя + /// + public static nsiRef Element7 => new() + { + Code = "7", + GUID = "93cd9d85-91b8-4bf9-ae48-c5f1e691949f" + }; + + /// + /// Нормативный правовой акт + /// + public static nsiRef Element8 => new() + { + Code = "8", + GUID = "8b8ee37b-fa79-40cc-b98d-0e51f0c38d03" + }; + + /// + /// Разрешение на ввод в эксплуатацию + /// + public static nsiRef Element9 => new() + { + Code = "9", + GUID = "16331000-d96e-4a33-a6c7-3cb9eacf4927" + }; + + /// + /// Устав + /// + public static nsiRef Element10 => new() + { + Code = "10", + GUID = "555638ae-a207-46fa-99bd-88bdb297c45a" + }; + } +} diff --git a/Hcs.Client/Client/Api/Request/HouseManagement/ImportSupplyResourceContractDataRequest.cs b/Hcs.Client/Client/Api/Request/HouseManagement/ImportSupplyResourceContractDataRequest.cs new file mode 100644 index 0000000..e1f1e4b --- /dev/null +++ b/Hcs.Client/Client/Api/Request/HouseManagement/ImportSupplyResourceContractDataRequest.cs @@ -0,0 +1,214 @@ +using Hcs.Client.Api.Payload.HouseManagement; +using Hcs.Client.Api.Request.Exception; +using Hcs.Client.Internal; +using Hcs.Service.Async.HouseManagement; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; + +namespace Hcs.Client.Api.Request.HouseManagement +{ + internal class ImportSupplyResourceContractDataRequest(ClientBase client) : HouseManagementRequestBase(client) + { + protected override bool CanBeRestarted => false; + + internal async Task ExecuteAsync(ImportSupplyResourceContractDataPayload payload, CancellationToken token) + { + var contract = new importSupplyResourceContractRequestContract + { + TransportGUID = Guid.NewGuid().ToString(), + Item1 = GetContractFromPayload(payload) + }; + + // http://open-gkh.ru/HouseManagement/importSupplyResourceContractRequest.html + var request = new importSupplyResourceContractRequest + { + Id = Constants.SIGNED_XML_ELEMENT_ID, + version = "11.3.0.5", + Contract = [contract] + }; + + var result = await SendAndWaitResultAsync(request, async asyncClient => + { + var response = await asyncClient.importSupplyResourceContractDataAsync(CreateRequestHeader(), request); + return response.AckRequest.Ack; + }, token); + + result.Items.OfType().ToList().ForEach(error => + { + throw RemoteException.CreateNew(error.ErrorCode, error.Description); + }); + + var importResults = result.Items.OfType(); + var commonResults = GetCommonResults(importResults); + foreach (var commonResult in commonResults) + { + if (commonResult.ItemElementName == ItemChoiceType26.ImportSupplyResourceContract) + { + if (commonResult.Item is getStateResultImportResultCommonResultImportSupplyResourceContract importedContract) + { + return importedContract; + } + } + } + + return null; + } + + private SupplyResourceContractType GetContractFromPayload(ImportSupplyResourceContractDataPayload payload) + { + var contract = new SupplyResourceContractType(); + + if (payload.isContract) + { + var isContract = new SupplyResourceContractTypeIsContract() + { + ContractNumber = payload.contractNumber, + SigningDate = payload.signingDate, + EffectiveDate = payload.effectiveDate + }; + contract.Item = isContract; + } + else + { + var isNotContract = new SupplyResourceContractTypeIsNotContract() + { + ContractNumber = payload.contractNumber, + SigningDate = payload.signingDate, + EffectiveDate = payload.effectiveDate + }; + contract.Item = isNotContract; + } + + var items = new List(); + var itemsElementName = new List(); + if (payload.indefiniteTerm.HasValue) + { + items.Add(payload.indefiniteTerm.Value); + itemsElementName.Add(ItemsChoiceType9.IndefiniteTerm); + } + if (payload.automaticRollOverOneYear.HasValue) + { + items.Add(payload.automaticRollOverOneYear.Value); + itemsElementName.Add(ItemsChoiceType9.AutomaticRollOverOneYear); + + if (!payload.comptetionDate.HasValue) + { + throw new InvalidOperationException("comptetionDate is empty"); + } + + items.Add(payload.comptetionDate.Value); + itemsElementName.Add(ItemsChoiceType9.ComptetionDate); + } + if (items.Count > 0 && itemsElementName.Count > 0) + { + contract.Items = [.. items]; + contract.ItemsElementName = [.. itemsElementName]; + } + + if (payload.period != null) + { + contract.Period = payload.period; + } + + if (payload.indicationsAnyDay.HasValue) + { + contract.IndicationsAnyDay = payload.indicationsAnyDay.Value; + contract.IndicationsAnyDaySpecified = true; + } + + if (payload.contractBase != null && payload.contractBase.Length > 0) + { + contract.ContractBase = payload.contractBase; + } + + contract.Item1 = payload.counterparty; + contract.IsPlannedVolume = payload.isPlannedVolume; + + if (payload.plannedVolumeType.HasValue) + { + contract.PlannedVolumeType = payload.plannedVolumeType.Value; + contract.PlannedVolumeTypeSpecified = true; + } + + contract.ContractSubject = payload.contractSubject; + + if (payload.countingResource.HasValue) + { + contract.CountingResource = payload.countingResource.Value; + contract.CountingResourceSpecified = true; + } + + contract.SpecifyingQualityIndicators = payload.specifyingQualityIndicators; + + if (payload.noConnectionToWaterSupply.HasValue) + { + contract.NoConnectionToWaterSupply = payload.noConnectionToWaterSupply.Value; + contract.NoConnectionToWaterSupplySpecified = true; + } + + contract.ObjectAddress = payload.objectAddress; + contract.Quality = payload.quality; + contract.OtherQualityIndicator = payload.otherQualityIndicator; + contract.TemperatureChart = payload.temperatureChart; + contract.BillingDate = payload.billingDate; + contract.PaymentDate = payload.paymentDate; + contract.ProvidingInformationDate = payload.providingInformationDate; + + if (payload.meteringDeviceInformation.HasValue) + { + contract.MeteringDeviceInformation = payload.meteringDeviceInformation.Value; + contract.MeteringDeviceInformationSpecified = true; + } + + if (payload.volumeDepends.HasValue) + { + contract.VolumeDepends = payload.volumeDepends.Value; + contract.VolumeDependsSpecified = true; + } + + if (payload.oneTimePayment.HasValue) + { + contract.OneTimePayment = payload.oneTimePayment.Value; + contract.OneTimePaymentSpecified = true; + } + + if (payload.accrualProcedure.HasValue) + { + contract.AccrualProcedure = payload.accrualProcedure.Value; + contract.AccrualProcedureSpecified = true; + } + + contract.Tariff = payload.tariff; + contract.Norm = payload.norm; + + return contract; + } + + private getStateResultImportResultCommonResult[] GetCommonResults(IEnumerable importResults) + { + var result = new List(); + foreach (var importResult in importResults) + { + importResult.Items.OfType().ToList().ForEach(error => + { + throw RemoteException.CreateNew(error.ErrorCode, error.Description); + }); + + var commonResults = importResult.Items.OfType(); + foreach (var commonResult in commonResults) + { + commonResult.Items.OfType().ToList().ForEach(error => + { + throw RemoteException.CreateNew(error.ErrorCode, error.Description); + }); + } + + result.AddRange(commonResults); + } + return [.. result]; + } + } +} diff --git a/Hcs.Client/Hcs.Client.csproj b/Hcs.Client/Hcs.Client.csproj index 570280e..a2993c0 100644 --- a/Hcs.Client/Hcs.Client.csproj +++ b/Hcs.Client/Hcs.Client.csproj @@ -69,6 +69,11 @@ + + + + + @@ -84,6 +89,7 @@ + diff --git a/Hcs.TestApp/TestApp/Program.cs b/Hcs.TestApp/TestApp/Program.cs index 985c0af..5ddecf0 100644 --- a/Hcs.TestApp/TestApp/Program.cs +++ b/Hcs.TestApp/TestApp/Program.cs @@ -48,6 +48,8 @@ namespace Hcs.TestApp //houseManagementScenario.ExportSupplyResourceContractObjectAddressData(); + //houseManagementScenario.ImportSupplyResourceContractData(); + //nsiScenario.ExportDataProviderNsiItem1(); //nsiScenario.ExportDataProviderNsiItem51(); //nsiScenario.ExportDataProviderNsiItem59(); diff --git a/Hcs.TestApp/TestApp/Scenario/HouseManagementScenario.cs b/Hcs.TestApp/TestApp/Scenario/HouseManagementScenario.cs index 310ac9d..3bdc33b 100644 --- a/Hcs.TestApp/TestApp/Scenario/HouseManagementScenario.cs +++ b/Hcs.TestApp/TestApp/Scenario/HouseManagementScenario.cs @@ -1,4 +1,7 @@ using Hcs.Client; +using Hcs.Client.Api.Payload.HouseManagement; +using Hcs.Client.Api.Registry; +using Hcs.Service.Async.HouseManagement; using System; namespace Hcs.TestApp.Scenario @@ -30,5 +33,106 @@ namespace Hcs.TestApp.Scenario var result = client.HouseManagement.ExportSupplyResourceContractObjectAddressDataAsync(Guid.Parse("575a7ff9-5473-4ab4-b077-fa80c1f85f0b")).Result; Console.WriteLine("Scenario execution " + (result != null ? "succeeded" : "failed")); } + + internal void ImportSupplyResourceContractData() + { + var signingDate = new DateTime(2017, 01, 01); + var effectiveDate = new DateTime(2017, 01, 01); + var comptetionDate = new DateTime(2078, 12, 31); + + var objectAddressGuid = Guid.NewGuid().ToString(); + var contractSubjectGuid = Guid.NewGuid().ToString(); + var normGuid = Guid.NewGuid().ToString(); + + var payload = new ImportSupplyResourceContractDataPayload() + { + isContract = false, + contractNumber = "239297999", + signingDate = signingDate, + effectiveDate = effectiveDate, + indefiniteTerm = false, + automaticRollOverOneYear = true, + comptetionDate = comptetionDate, + period = new SupplyResourceContractTypePeriod() + { + Start = new SupplyResourceContractTypePeriodStart() + { + StartDate = 20, + NextMonth = false + }, + End = new SupplyResourceContractTypePeriodEnd() + { + EndDate = 25, + NextMonth = false + } + }, + isPlannedVolume = false, + contractSubject = [new SupplyResourceContractTypeContractSubject() + { + TransportGUID = contractSubjectGuid, + ServiceType = Registry3.Element6, + MunicipalResource = Registry239.Element4, + StartSupplyDate = effectiveDate, + EndSupplyDate = comptetionDate + }], + specifyingQualityIndicators = SupplyResourceContractTypeSpecifyingQualityIndicators.D, + objectAddress = [new SupplyResourceContractTypeObjectAddress() + { + TransportGUID = objectAddressGuid, + Pair = [new SupplyResourceContractTypeObjectAddressPair() + { + PairKey = contractSubjectGuid, + StartSupplyDate = effectiveDate, + EndSupplyDate = comptetionDate, + HeatingSystemType = new SupplyResourceContractTypeObjectAddressPairHeatingSystemType() + { + OpenOrNot = SupplyResourceContractTypeObjectAddressPairHeatingSystemTypeOpenOrNot.Opened, + CentralizedOrNot = SupplyResourceContractTypeObjectAddressPairHeatingSystemTypeCentralizedOrNot.Decentralized + } + }], + FIASHouseGuid = "e606fca9-1ac4-41a1-8478-a9feb6cdfa78" + }], + quality = [new SupplyResourceContractTypeQuality() + { + PairKey = contractSubjectGuid, + QualityIndicator = Registry276.Element4, + IndicatorValue = new SupplyResourceContractTypeQualityIndicatorValue() + { + Items = [9.76, 10, "214"], + ItemsElementName = [ItemsChoiceType10.StartRange, ItemsChoiceType10.EndRange, ItemsChoiceType10.OKEI] + } + }, new SupplyResourceContractTypeQuality() + { + PairKey = contractSubjectGuid, + QualityIndicator = Registry276.Element10, + IndicatorValue = new SupplyResourceContractTypeQualityIndicatorValue() + { + Items = [0.05, 0.3, "298"], + ItemsElementName = [ItemsChoiceType10.StartRange, ItemsChoiceType10.EndRange, ItemsChoiceType10.OKEI] + } + }], + billingDate = new SupplyResourceContractTypeBillingDate() + { + Date = 1, + DateType = SupplyResourceContractTypeBillingDateDateType.N + }, + paymentDate = new SupplyResourceContractTypePaymentDate() + { + Date = 10, + DateType = SupplyResourceContractTypePaymentDateDateType.N + }, + meteringDeviceInformation = true, + volumeDepends = false, + oneTimePayment = false, + norm = [new SupplyResourceContractTypeNorm() + { + PairKey = contractSubjectGuid, + Items = [true], + NormGUID = normGuid + }] + }; + var result = client.HouseManagement.ImportSupplyResourceContractDataAsync(payload).Result; + Console.WriteLine("Scenario execution " + (result != null ? "succeeded" : "failed")); + } } }