appraisermetrics_report_service 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/appraisermetrics_report_service/version.rb +1 -1
- data/lib/closed_sale.rb +21 -2
- data/lib/eval_report.rb +23 -43
- data/spec/lib/eval_report_spec.rb +4 -82
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6c1943150bf8449feab4a3a0c0b491de2dc1b9af
|
4
|
+
data.tar.gz: 69ad532b4a0c36300e2657f1443909c9d305e154
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5176424d1dac01ddaea2b9a36b31b8f19fb83813384c98af5614b3e95880202532244eb2f878c9606386ae206293695ba0d82f25f9dc4e941d339b7d349673a2
|
7
|
+
data.tar.gz: d12e1d8e29e46dcc5490f04bc8bb9ffeed386af49d8a5e333136c4953e98d630d87c419e2b200a9ae89de455ed1df58baead2968279361f97116c7f27729a074
|
data/lib/closed_sale.rb
CHANGED
@@ -303,10 +303,29 @@ class ClosedSale < Prawn::Document
|
|
303
303
|
|
304
304
|
def comments
|
305
305
|
comments_data = [
|
306
|
-
["Comments"]
|
307
|
-
["#{@rep[:general_comments]}"]
|
306
|
+
["Comments"]
|
308
307
|
]
|
309
308
|
|
309
|
+
comment_sections = [
|
310
|
+
:sale_adjustment_comments,
|
311
|
+
:general_comments,
|
312
|
+
:atmarket_comments,
|
313
|
+
:lease_comments,
|
314
|
+
:change_of_use,
|
315
|
+
:water_rights_cont,
|
316
|
+
:water_distribution_comment,
|
317
|
+
:easements_description,
|
318
|
+
:mineral_rights,
|
319
|
+
:permanent_plantings,
|
320
|
+
:property_improvement_comments
|
321
|
+
]
|
322
|
+
|
323
|
+
comment_sections.each do |c| # only include if exists
|
324
|
+
if @rep[c]
|
325
|
+
comments_data << ["#{@rep[c]}"]
|
326
|
+
end
|
327
|
+
end
|
328
|
+
|
310
329
|
table(comments_data) do
|
311
330
|
row(0).style align: :center
|
312
331
|
column(0).width = 270
|
data/lib/eval_report.rb
CHANGED
@@ -45,8 +45,6 @@ class EvalReport < Prawn::Document
|
|
45
45
|
ag_sales_map
|
46
46
|
val_method_and_recon
|
47
47
|
assumptions_and_conditions
|
48
|
-
addendum_a
|
49
|
-
addendum_b
|
50
48
|
additional_docs
|
51
49
|
finish_toc
|
52
50
|
end
|
@@ -343,7 +341,7 @@ class EvalReport < Prawn::Document
|
|
343
341
|
end
|
344
342
|
|
345
343
|
def topo_maps
|
346
|
-
header("
|
344
|
+
header("SUBJECT MAPS")
|
347
345
|
move_down 25
|
348
346
|
text "MAPS", size: 14, align: :center
|
349
347
|
|
@@ -374,7 +372,7 @@ class EvalReport < Prawn::Document
|
|
374
372
|
|
375
373
|
def property_description
|
376
374
|
header("PROPERTY DESCRIPTION")
|
377
|
-
move_down
|
375
|
+
move_down 10
|
378
376
|
text "PROPERTY DESCRIPTION, SURROUNDING LAND USES, REGIONAL ECONOMIC AND DEMOGRAPHIC OVERVIEW", size: 14, style: :bold
|
379
377
|
font_size 6
|
380
378
|
bounding_box([0, 645], height: 300, width: 340) do
|
@@ -670,6 +668,9 @@ class EvalReport < Prawn::Document
|
|
670
668
|
end
|
671
669
|
|
672
670
|
def property_features # container method to create various tables
|
671
|
+
move_down 3
|
672
|
+
header("PROPERTY DESCRIPTION")
|
673
|
+
move_down 5
|
673
674
|
font_size 7
|
674
675
|
stroke_bounds
|
675
676
|
if @sub[:transactions] && @sub[:transactions].any?
|
@@ -744,7 +745,7 @@ class EvalReport < Prawn::Document
|
|
744
745
|
|
745
746
|
def property_comparison
|
746
747
|
header("DIRECT COMPARISON ANALYSIS")
|
747
|
-
move_down
|
748
|
+
move_down 10
|
748
749
|
font_size 7
|
749
750
|
|
750
751
|
table(flip_comp_array(@comps.first(5))) do
|
@@ -752,12 +753,15 @@ class EvalReport < Prawn::Document
|
|
752
753
|
columns(1..6).width = 75
|
753
754
|
cells.padding = [1, 2.5]
|
754
755
|
columns(1..6).style(align: :center)
|
756
|
+
row(0).style(border_right_width: 0, border_top_width: 0, border_left_width: 0, border_bottom_width: 0)
|
757
|
+
row(0).style(font_style: :bold, size: 11)
|
755
758
|
end
|
756
759
|
|
757
760
|
if @comps.length > 5
|
758
761
|
start_new_page
|
762
|
+
font_size 11
|
759
763
|
header("DIRECT COMPARISON ANALYSIS")
|
760
|
-
move_down
|
764
|
+
move_down 10
|
761
765
|
font_size 7
|
762
766
|
|
763
767
|
second_page_comps = flip_comp_array(@comps[5..9])
|
@@ -767,6 +771,8 @@ class EvalReport < Prawn::Document
|
|
767
771
|
columns(1..6).width = 75
|
768
772
|
cells.padding = [1, 2.5]
|
769
773
|
columns(1..6).style(align: :center)
|
774
|
+
row(0).style(border_right_width: 0, border_top_width: 0, border_left_width: 0, border_bottom_width: 0)
|
775
|
+
row(0).style(font_style: :bold, size: 11)
|
770
776
|
end
|
771
777
|
end
|
772
778
|
|
@@ -775,13 +781,13 @@ class EvalReport < Prawn::Document
|
|
775
781
|
end
|
776
782
|
|
777
783
|
def discussion_of_sales
|
778
|
-
header("DIRECT COMPARISON ANALYSIS")
|
779
|
-
font_size 10
|
780
784
|
if @comps && @comps.any? # just skip the table if there aren't any comps
|
785
|
+
header("COMPARABLE SALES COMMENTS")
|
786
|
+
font_size 9
|
781
787
|
|
782
788
|
table(flip_discussions(@comps.first(5))) do
|
783
789
|
cells.padding = [1, 2.5]
|
784
|
-
columns(0..
|
790
|
+
columns(0..4).width = 108
|
785
791
|
row(0).style(align: :center, background_color: 'd7d7d7')
|
786
792
|
cells.style(border_width: 0)
|
787
793
|
columns(0..5).style(border_right_width: 0.5)
|
@@ -789,10 +795,10 @@ class EvalReport < Prawn::Document
|
|
789
795
|
|
790
796
|
if @comps.length > 5
|
791
797
|
start_new_page
|
792
|
-
header("
|
798
|
+
header("COMPARABLE SALES COMMENTS")
|
793
799
|
table(flip_discussions(@comps[5..9])) do
|
794
800
|
cells.padding = [1, 2.5]
|
795
|
-
columns(0..
|
801
|
+
columns(0..4).width = 108
|
796
802
|
row(0).style(align: :center, background_color: 'd7d7d7')
|
797
803
|
cells.style(border_width: 0)
|
798
804
|
columns(0..5).style(border_right_width: 0.5)
|
@@ -806,9 +812,9 @@ class EvalReport < Prawn::Document
|
|
806
812
|
def flip_discussions(comps_to_flip)
|
807
813
|
@discussion_increment ||= 1
|
808
814
|
discussion_data = [
|
809
|
-
[
|
815
|
+
[]
|
810
816
|
]
|
811
|
-
sale_discussions = [
|
817
|
+
sale_discussions = []
|
812
818
|
|
813
819
|
comps_to_flip.each do |c|
|
814
820
|
c_string = " "
|
@@ -842,7 +848,7 @@ class EvalReport < Prawn::Document
|
|
842
848
|
end
|
843
849
|
|
844
850
|
def ag_sales_map
|
845
|
-
header("
|
851
|
+
header("SALES LOCATION MAP")
|
846
852
|
move_down 50
|
847
853
|
if @docs[:agsalesmap] && @docs[:agsalesmap].any?
|
848
854
|
image "#{@docs[:agsalesmap][0]}", width: 500, position: :center
|
@@ -957,34 +963,6 @@ class EvalReport < Prawn::Document
|
|
957
963
|
text "Evaluators Associated with this Evaluation Report are identified as follows:"
|
958
964
|
move_down 10
|
959
965
|
text "#{@sub[:validentification]}"
|
960
|
-
start_new_page
|
961
|
-
end
|
962
|
-
|
963
|
-
def addendum_a
|
964
|
-
# if an engagement letter is present, use it as a template for this page
|
965
|
-
if @docs[:engagementletter] && @docs[:engagementletter].any?
|
966
|
-
start_new_page(template: @docs[:engagementletter][0])
|
967
|
-
header("ENGAGEMENT LETTER")
|
968
|
-
else
|
969
|
-
start_new_page
|
970
|
-
header("ENGAGEMENT LETTER")
|
971
|
-
move_down 25
|
972
|
-
text "No engagement letter present.", size: 14, style: :bold
|
973
|
-
end
|
974
|
-
end
|
975
|
-
|
976
|
-
def addendum_b
|
977
|
-
|
978
|
-
if @docs[:legaldescription] && @docs[:legaldescription].any?
|
979
|
-
start_new_page(template: @docs[:legaldescription][0])
|
980
|
-
header("LEGAL DESCRIPTION")
|
981
|
-
else
|
982
|
-
start_new_page
|
983
|
-
header("LEGAL DESCRIPTION")
|
984
|
-
move_down 25
|
985
|
-
text "No Legal Description file present.", size: 14, style: :bold
|
986
|
-
end
|
987
|
-
# end of document
|
988
966
|
end
|
989
967
|
|
990
968
|
def additional_docs
|
@@ -1004,6 +982,8 @@ class EvalReport < Prawn::Document
|
|
1004
982
|
end
|
1005
983
|
end
|
1006
984
|
|
985
|
+
pdf_doc_proc.call(:engagementletter, "ENGAGEMENT LETTER")
|
986
|
+
pdf_doc_proc.call(:legaldescription, "LEGAL DESCRIPTION")
|
1007
987
|
pdf_doc_proc.call(:warrantydeed, "WARRANTY DEED/TRANSFER DEED")
|
1008
988
|
pdf_doc_proc.call(:titleinsurancepolicy, "TITLE INSURANCE POLICY")
|
1009
989
|
pdf_doc_proc.call(:lease, "LEASE")
|
@@ -1056,7 +1036,7 @@ class EvalReport < Prawn::Document
|
|
1056
1036
|
props = [@sub, comps_to_flip].compact.flatten
|
1057
1037
|
@comp_increment ||= 0
|
1058
1038
|
final_a = [
|
1059
|
-
[{content: 'Valuation Analysis
|
1039
|
+
[{content: 'Valuation Analysis', colspan: 7}], # [0]
|
1060
1040
|
['Characteristic', 'Subject'], # [1]
|
1061
1041
|
['Record No.'], ['Tax Parcel #(s)'], ['Address'], ['City'], ['State'], ['Zip Code'], ['Sale Date'], ['Sale Price'], # [2] -> [9]
|
1062
1042
|
['Conditions of Sale'], ['Adjusted Sale Price'], ['Property Rights Conveyed'], ['Unit of Comparison'], # [10 -> 13]
|
@@ -300,7 +300,7 @@ describe 'eval report class' do
|
|
300
300
|
end
|
301
301
|
|
302
302
|
@comparison_content = PDF::Reader.new(StringIO.new(@pdf.render)).page(1).to_s
|
303
|
-
expect(@comparison_content).to include('DIRECT', '
|
303
|
+
expect(@comparison_content).to include('DIRECT', 'Conditions')
|
304
304
|
end
|
305
305
|
|
306
306
|
it 'renders dynamic content from keys' do
|
@@ -327,7 +327,7 @@ describe 'eval report class' do
|
|
327
327
|
end
|
328
328
|
|
329
329
|
@comparison_content = PDF::Reader.new(StringIO.new(@pdf.render)).page(1).to_s
|
330
|
-
expect(@comparison_content).to include('DIRECT', '
|
330
|
+
expect(@comparison_content).to include('DIRECT', 'Conditions')
|
331
331
|
end
|
332
332
|
end
|
333
333
|
end
|
@@ -360,7 +360,7 @@ describe 'eval report class' do
|
|
360
360
|
end
|
361
361
|
|
362
362
|
context 'without keys' do
|
363
|
-
it '
|
363
|
+
it 'does not render content' do
|
364
364
|
@pdf = EvalReport.new do
|
365
365
|
@sub = Sampler.get_eval1
|
366
366
|
@comps = []
|
@@ -368,7 +368,7 @@ describe 'eval report class' do
|
|
368
368
|
end
|
369
369
|
|
370
370
|
@discussion_content = PDF::Reader.new(StringIO.new(@pdf.render)).page(1).to_s
|
371
|
-
expect(@discussion_content).to include('
|
371
|
+
expect(@discussion_content).to include('')
|
372
372
|
end
|
373
373
|
end
|
374
374
|
|
@@ -483,84 +483,6 @@ describe 'eval report class' do
|
|
483
483
|
end
|
484
484
|
end
|
485
485
|
|
486
|
-
describe '#addendum_a' do
|
487
|
-
context 'with keys' do
|
488
|
-
it 'renders static content' do
|
489
|
-
@pdf = EvalReport.new do
|
490
|
-
@sub = Sampler.get_eval1
|
491
|
-
@docs = {engagementletter: ['./spec/test_data/pdfs/engagement_letter.pdf']}
|
492
|
-
addendum_a
|
493
|
-
end
|
494
|
-
|
495
|
-
@addendum_a_content = PDF::Reader.new(StringIO.new(@pdf.render)).page(2).to_s
|
496
|
-
expect(@addendum_a_content).to include('ENGAGEMENT')
|
497
|
-
end
|
498
|
-
|
499
|
-
it 'renders dynamic content from keys' do
|
500
|
-
@pdf = EvalReport.new do
|
501
|
-
@sub = Sampler.get_eval1
|
502
|
-
@docs = {engagementletter: ['./spec/test_data/pdfs/engagement_letter.pdf']}
|
503
|
-
addendum_a
|
504
|
-
end
|
505
|
-
|
506
|
-
@addendum_a_content = PDF::Reader.new(StringIO.new(@pdf.render)).page(2).to_s
|
507
|
-
expect(@addendum_a_content).to include('test')
|
508
|
-
end
|
509
|
-
end
|
510
|
-
|
511
|
-
context 'without keys' do
|
512
|
-
it 'renders static content' do
|
513
|
-
@pdf = EvalReport.new do
|
514
|
-
@sub = {}
|
515
|
-
@docs = {}
|
516
|
-
addendum_a
|
517
|
-
end
|
518
|
-
|
519
|
-
@addendum_a_content = PDF::Reader.new(StringIO.new(@pdf.render)).page(2).to_s
|
520
|
-
expect(@addendum_a_content).to include('ENGAGEMENT', 'present')
|
521
|
-
end
|
522
|
-
end
|
523
|
-
end
|
524
|
-
|
525
|
-
describe '#addendum_b' do
|
526
|
-
context 'with keys' do
|
527
|
-
it 'renders static content' do
|
528
|
-
@pdf = EvalReport.new do
|
529
|
-
@sub = {}
|
530
|
-
@docs = {legaldescription: ['./spec/test_data/pdfs/legal_description.pdf']}
|
531
|
-
addendum_b
|
532
|
-
end
|
533
|
-
|
534
|
-
@addendum_b_content = PDF::Reader.new(StringIO.new(@pdf.render)).page(2).to_s
|
535
|
-
expect(@addendum_b_content).to include('LEGAL')
|
536
|
-
end
|
537
|
-
|
538
|
-
it 'renders inserts dynamic content from pdf' do
|
539
|
-
@pdf = EvalReport.new do
|
540
|
-
@sub = Sampler.get_eval1
|
541
|
-
@docs = {legaldescription: ['./spec/test_data/pdfs/legal_description.pdf']}
|
542
|
-
addendum_b
|
543
|
-
end
|
544
|
-
|
545
|
-
@addendum_b_content = PDF::Reader.new(StringIO.new(@pdf.render)).page(2).to_s
|
546
|
-
expect(@addendum_b_content).to include('test')
|
547
|
-
end
|
548
|
-
end
|
549
|
-
|
550
|
-
context 'without keys' do
|
551
|
-
it 'renders static content' do
|
552
|
-
@pdf = EvalReport.new do
|
553
|
-
@sub = Sampler.get_eval1
|
554
|
-
@docs = {}
|
555
|
-
addendum_b
|
556
|
-
end
|
557
|
-
|
558
|
-
@addendum_b_content = PDF::Reader.new(StringIO.new(@pdf.render)).page(2).to_s
|
559
|
-
expect(@addendum_b_content).to include('LEGAL')
|
560
|
-
end
|
561
|
-
end
|
562
|
-
end
|
563
|
-
|
564
486
|
describe '#header' do
|
565
487
|
context 'with keys' do
|
566
488
|
it 'renders static header content'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: appraisermetrics_report_service
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- StackPoint
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-02-
|
11
|
+
date: 2015-02-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ttfunk
|
@@ -210,7 +210,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
210
210
|
version: '0'
|
211
211
|
requirements: []
|
212
212
|
rubyforge_project:
|
213
|
-
rubygems_version: 2.
|
213
|
+
rubygems_version: 2.2.2
|
214
214
|
signing_key:
|
215
215
|
specification_version: 4
|
216
216
|
summary: '["A service to generate pdf reports"]'
|