epb_view_models 1.0.15 → 1.0.18

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 44ac3c497106cfad05b3f659f0f67c680bec0d68bf129dba9ee85f4b84c92ea1
4
- data.tar.gz: f4a5b74aa6b3fe31dd79d3b6b0e3895c33c6652faccfd59fe7ef580a077599a8
3
+ metadata.gz: 21ae4bba2efbc28d42200e7a331a4111b76071399e0a1f901313c2d57035196a
4
+ data.tar.gz: 0e244cf4dec75c6213a3c3e8bac4aa2fea2c02f44c9958419d5bf9b9bb2f4f38
5
5
  SHA512:
6
- metadata.gz: e991f69ff3f8990512da92df7aaeb1b2a2c0b0014e925d8da0ffbbc4560e09b39446e1731a76a8b0aa87dbdd48d101ae79dda7746cba426c53b9e8146d8c5a32
7
- data.tar.gz: 36600d67398158417c478bb42366d7d7dea759ea75a746d5864ba4b1e24c7c55e3b4d164fdd949018e8b0c0954ddc73c606112e5d7ba70c5dca2bf33c2878648
6
+ metadata.gz: a2e9785b8c3141d8eaf2b1bf5c1cd647efe67022417b5922e94e44af3b57ce157dab168f4499d4a1b1bce1a6092d8aa87ef954a8ab09cc03335b5bc0a1417571
7
+ data.tar.gz: dcf95783220f96004c33f270bd844dd22de531f57136d7f9d230e7244a42b880c310088ca070b60aaedaf78dfb2f766f7f783098603302ca5cb2085b1afbc03f
@@ -18,7 +18,7 @@ As such the broad description of a Property can be regarded as a framework, cont
18
18
  <xs:documentation>Address for the property.</xs:documentation>
19
19
  </xs:annotation>
20
20
  </xs:element>
21
- <xs:element name="UPRN" type="UPRNType">
21
+ <xs:element name="UPRN" type="UPRNType" minOccurs="0">
22
22
  <xs:annotation>
23
23
  <xs:documentation>Unique Property Reference Number</xs:documentation>
24
24
  </xs:annotation>
@@ -43,7 +43,7 @@ As such the broad description of a Property can be regarded as a framework, cont
43
43
  </xs:documentation>
44
44
  </xs:annotation>
45
45
  <xs:sequence>
46
- <xs:element name="Address-Line-1" type="xs:string" minOccurs="0"/>
46
+ <xs:element name="Address-Line-1" type="xs:string"/>
47
47
  <xs:element name="Address-Line-2" type="xs:string" minOccurs="0"/>
48
48
  <xs:element name="Address-Line-3" type="xs:string" minOccurs="0"/>
49
49
  <xs:element name="Post-Town" type="xs:string"/>
@@ -57,10 +57,10 @@ As such the broad description of a Property can be regarded as a framework, cont
57
57
  </xs:complexType>
58
58
  <xs:simpleType name="UPRNType">
59
59
  <xs:annotation>
60
- <xs:documentation>Unique Property Reference Number - a 10-digit numeric string unmiquely identifuying each Property that may have a HCR registered against it.</xs:documentation>
60
+ <xs:documentation>Unique Property Reference Number</xs:documentation>
61
61
  </xs:annotation>
62
62
  <xs:restriction base="xs:string">
63
- <xs:pattern value="[0-9]{10}"/>
63
+ <xs:pattern value="UPRN-[0-9]{10,12}|RRN-[0-9]{4}-[0-9]{4}-[0-9]{4}-[0-9]{4}-[0-9]{4}"/>
64
64
  </xs:restriction>
65
65
  </xs:simpleType>
66
66
  <xs:simpleType name="PostcodeType">
@@ -54,7 +54,15 @@
54
54
  <xs:element name="Report-Header" type="Report-Header"/>
55
55
  <xs:element name="Energy-Assessment" type="Energy-Assessment"/>
56
56
  <xs:element name="SAP10-Data" type="SAP10-Data"/>
57
- <xs:element name="PDF" type="xs:base64Binary" minOccurs="0"/>
57
+ <xs:element name="PDF" type="xs:base64Binary" minOccurs="0">
58
+ <xs:annotation>
59
+ <xs:documentation>
60
+ DEPRECATED - DO NOT USE
61
+ This element is allowed for backwards-compatibility but any data sent here will
62
+ not be read, processed or stored by the register.
63
+ </xs:documentation>
64
+ </xs:annotation>
65
+ </xs:element>
58
66
  <xs:element name="Insurance-Details" type="Insurance-Details" minOccurs="0"/>
59
67
  <xs:element name="ExternalDefinitions-Revision-Number" type="xs:string">
60
68
  <xs:annotation>
@@ -5,7 +5,7 @@ loader = Zeitwerk::Loader.for_gem
5
5
  loader.setup
6
6
 
7
7
  module EpbViewModels
8
- VERSION = "1.0.15"
8
+ VERSION = "1.0.18"
9
9
  end
10
10
 
11
11
  # Monkey patching to avoid using ActiveRecord::Type::Boolean.new.cast
@@ -274,6 +274,20 @@ module Helper
274
274
  "76" => "bioethanol from any biomass source",
275
275
  "99" => "Community heating schemes: special fuel",
276
276
  }.freeze
277
+ MAIN_HEATING_CATEGORY = {
278
+ "1" => "none",
279
+ "2" => "boiler with radiators or underfloor heating",
280
+ "3" => "micro-cogeneration",
281
+ "4" => "heat pump with radiators or underfloor heating",
282
+ "5" => "heat pump with warm air distribution",
283
+ "6" => "community heating system",
284
+ "7" => "electric storage heaters",
285
+ "8" => "electric underfloor heating",
286
+ "9" => "warm air system (not heat pump)",
287
+ "10" => "room heaters",
288
+ "11" => "other system",
289
+ "12" => "not recorded",
290
+ }.freeze
277
291
 
278
292
  def self.built_form_string(number)
279
293
  BUILT_FORM[number]
@@ -358,6 +372,7 @@ module Helper
358
372
  ]
359
373
 
360
374
  schemes_that_use_l = %i[
375
+ SAP-Schema-19.0.0
361
376
  SAP-Schema-18.0.0
362
377
  SAP-Schema-17.1
363
378
  SAP-Schema-17.0
@@ -561,6 +576,7 @@ module Helper
561
576
  ]
562
577
 
563
578
  sap = %i[
579
+ SAP-Schema-19.0.0
564
580
  SAP-Schema-18.0.0
565
581
  SAP-Schema-17.1
566
582
  SAP-Schema-17.0
@@ -611,6 +627,10 @@ module Helper
611
627
  end
612
628
  end
613
629
 
630
+ def self.main_heating_category(value:)
631
+ MAIN_HEATING_CATEGORY[value] || value
632
+ end
633
+
614
634
  private_class_method :is_rdsap, :is_sap
615
635
  end
616
636
  end
@@ -0,0 +1,42 @@
1
+ module Presenter
2
+ module RdSap
3
+ class Hera
4
+ TYPE_OF_ASSESSMENT = "RdSAP".freeze
5
+ private_constant :TYPE_OF_ASSESSMENT
6
+
7
+ def initialize(view_model, schema_type)
8
+ @view_model = view_model
9
+ @schema_type = schema_type
10
+ end
11
+
12
+ def to_hera_hash
13
+ {
14
+ type_of_assessment: TYPE_OF_ASSESSMENT,
15
+ assessment_id: @view_model.assessment_id,
16
+ date_of_registration: @view_model.date_of_registration,
17
+ address: {
18
+ address_line1: @view_model.address_line1,
19
+ address_line2: @view_model.address_line2,
20
+ address_line3: @view_model.address_line3,
21
+ address_line4: @view_model.address_line4,
22
+ town: @view_model.town,
23
+ postcode: @view_model.postcode,
24
+ },
25
+ dwelling_type: @view_model.dwelling_type,
26
+ built_form: Helper::XmlEnumsToOutput.built_form_string(@view_model.built_form),
27
+ main_dwelling_construction_age_band_or_year: Helper::XmlEnumsToOutput.construction_age_band_lookup(
28
+ @view_model.main_dwelling_construction_age_band_or_year,
29
+ @schema_type,
30
+ @view_model.report_type,
31
+ ),
32
+ property_summary: @view_model.property_summary,
33
+ main_heating_category: Helper::XmlEnumsToOutput.main_heating_category(value: @view_model.main_heating_category),
34
+ main_fuel_type: Helper::XmlEnumsToOutput.fuel_type(@view_model.main_fuel_type,
35
+ @schema_type,
36
+ @view_model.report_type),
37
+ has_hot_water_cylinder: @view_model.has_hot_water_cylinder,
38
+ }
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,39 @@
1
+ module Presenter
2
+ module Sap
3
+ class Hera
4
+ def initialize(view_model, schema_type)
5
+ @view_model = view_model
6
+ @schema_type = schema_type
7
+ end
8
+
9
+ def to_hera_hash
10
+ {
11
+ type_of_assessment: @view_model.type_of_assessment,
12
+ assessment_id: @view_model.assessment_id,
13
+ date_of_registration: @view_model.date_of_registration,
14
+ address: {
15
+ address_line1: @view_model.address_line1,
16
+ address_line2: @view_model.address_line2,
17
+ address_line3: @view_model.address_line3,
18
+ address_line4: nil,
19
+ town: @view_model.town,
20
+ postcode: @view_model.postcode,
21
+ },
22
+ dwelling_type: @view_model.dwelling_type,
23
+ built_form: Helper::XmlEnumsToOutput.built_form_string(@view_model.built_form),
24
+ main_dwelling_construction_age_band_or_year: Helper::XmlEnumsToOutput.construction_age_band_lookup(
25
+ @view_model.main_dwelling_construction_age_band_or_year,
26
+ @schema_type,
27
+ @view_model.report_type,
28
+ ),
29
+ property_summary: @view_model.property_summary,
30
+ main_heating_category: Helper::XmlEnumsToOutput.main_heating_category(value: @view_model.main_heating_category),
31
+ main_fuel_type: Helper::XmlEnumsToOutput.fuel_type(@view_model.main_fuel_type,
32
+ @schema_type,
33
+ @view_model.report_type),
34
+ has_hot_water_cylinder: @view_model.has_hot_water_cylinder,
35
+ }
36
+ end
37
+ end
38
+ end
39
+ end
@@ -54,6 +54,16 @@ module ViewModel
54
54
  xpath(%w[Water-Heating-Code])
55
55
  end
56
56
 
57
+ def has_hot_water_cylinder
58
+ return "false" if xpath(%w[Has-Hot-Water-Cylinder]).nil?
59
+
60
+ xpath(%w[Has-Hot-Water-Cylinder])
61
+ end
62
+
63
+ def main_heating_category
64
+ xpath(%w[Main-Heating-Category])
65
+ end
66
+
57
67
  private
58
68
 
59
69
  def fetch_addendum_numbers
@@ -350,10 +350,6 @@ module ViewModel
350
350
  xpath(%w[Immersion-Heating-Type])
351
351
  end
352
352
 
353
- def main_heating_category
354
- xpath(%w[Main-Heating-Category])
355
- end
356
-
357
353
  def main_fuel_type
358
354
  xpath(%w[Main-Fuel-Type])
359
355
  end
@@ -337,10 +337,6 @@ module ViewModel
337
337
  xpath(%w[Immersion-Heating-Type])
338
338
  end
339
339
 
340
- def main_heating_category
341
- xpath(%w[Main-Heating-Category])
342
- end
343
-
344
340
  def main_fuel_type
345
341
  xpath(%w[Main-Fuel-Type])
346
342
  end
@@ -8,6 +8,7 @@ module ViewModel
8
8
  @summary = Presenter::RdSap::Summary.new(view_model)
9
9
  @report = Presenter::RdSap::Report.new(view_model, schema_type, additional_data)
10
10
  @recommendation_report = Presenter::RdSap::RecommendationReport.new(view_model)
11
+ @hera = Presenter::RdSap::Hera.new(view_model, schema_type)
11
12
  end
12
13
 
13
14
  def type
@@ -30,6 +31,10 @@ module ViewModel
30
31
  @recommendation_report.to_hash
31
32
  end
32
33
 
34
+ def to_hera_hash
35
+ @hera.to_hera_hash
36
+ end
37
+
33
38
  def get_view_model
34
39
  view_model
35
40
  end
@@ -301,10 +301,6 @@ module ViewModel
301
301
  xpath(%w[Immersion-Heating-Type])
302
302
  end
303
303
 
304
- def main_heating_category
305
- xpath(%w[Main-Heating-Category])
306
- end
307
-
308
304
  def main_fuel_type
309
305
  xpath(%w[Main-Fuel-Type])
310
306
  end
@@ -301,10 +301,6 @@ module ViewModel
301
301
  xpath(%w[Immersion-Heating-Type])
302
302
  end
303
303
 
304
- def main_heating_category
305
- xpath(%w[Main-Heating-Category])
306
- end
307
-
308
304
  def main_fuel_type
309
305
  xpath(%w[Main-Fuel-Type])
310
306
  end
@@ -271,10 +271,6 @@ module ViewModel
271
271
  xpath(%w[Immersion-Heating-Type])
272
272
  end
273
273
 
274
- def main_heating_category
275
- xpath(%w[Main-Heating-Category])
276
- end
277
-
278
274
  def main_fuel_type
279
275
  xpath(%w[Main-Fuel-Type])
280
276
  end
@@ -8,6 +8,7 @@ module ViewModel
8
8
  @summary = Presenter::Sap::Summary.new(view_model)
9
9
  @report = Presenter::Sap::Report.new(view_model, schema_type, additional_data)
10
10
  @recommendation_report = Presenter::Sap::RecommendationReport.new(view_model)
11
+ @hera = Presenter::Sap::Hera.new(view_model, schema_type)
11
12
  end
12
13
 
13
14
  def type
@@ -30,6 +31,10 @@ module ViewModel
30
31
  @recommendation_report.to_hash
31
32
  end
32
33
 
34
+ def to_hera_hash
35
+ @hera.to_hera_hash
36
+ end
37
+
33
38
  def get_view_model
34
39
  view_model
35
40
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: epb_view_models
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.15
4
+ version: 1.0.18
5
5
  platform: ruby
6
6
  authors:
7
7
  - MHCLG Energy Performance of Buildings
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-05-10 00:00:00.000000000 Z
11
+ date: 2022-06-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -1675,10 +1675,12 @@ files:
1675
1675
  - lib/presenter/export/domestic.rb
1676
1676
  - lib/presenter/export/statistics.rb
1677
1677
  - lib/presenter/rd_sap/export_configuration.rb
1678
+ - lib/presenter/rd_sap/hera.rb
1678
1679
  - lib/presenter/rd_sap/recommendation_report.rb
1679
1680
  - lib/presenter/rd_sap/report.rb
1680
1681
  - lib/presenter/rd_sap/summary.rb
1681
1682
  - lib/presenter/sap/export_configuration.rb
1683
+ - lib/presenter/sap/hera.rb
1682
1684
  - lib/presenter/sap/recommendation_report.rb
1683
1685
  - lib/presenter/sap/report.rb
1684
1686
  - lib/presenter/sap/summary.rb