-
Notifications
You must be signed in to change notification settings - Fork 13
/
Copy pathnj_additional_dependents_pdf.rb
58 lines (49 loc) · 1.83 KB
/
nj_additional_dependents_pdf.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
module PdfFiller
class NjAdditionalDependentsPdf
include PdfHelper
include StateFile::NjPdfHelper
def source_pdf_name
"nj_additional_dependents"
end
def initialize(submission)
@submission = submission
builder = StateFile::StateInformationService.submission_builder_class(:nj)
@xml_document = builder.new(submission).document
end
def hash_for_pdf
answers = {
'Names(s) as shown on NJ 1040': get_name(@xml_document),
'Social Security Number': get_taxpayer_ssn
}
answers.merge!(fill_dependents)
answers
end
private
def get_dependents
@xml_document.css("Dependents").map do |dependent|
{
first_name: dependent.at("DependentsName FirstName")&.text,
last_name: dependent.at("DependentsName LastName")&.text,
middle_initial: dependent.at("DependentsName MiddleInitial")&.text,
suffix: dependent.at("DependentsName NameSuffix")&.text,
ssn: dependent.at("DependentsSSN")&.text,
birth_year: dependent.at("BirthYear")&.text,
nj_did_not_have_health_insurance: dependent.at("NoHealthInsurance")&.text == 'X' ? 'Yes' : 'Off'
}
end
end
def get_taxpayer_ssn
@xml_document.at("ReturnHeaderState Filer Primary TaxpayerSSN")&.text
end
def fill_dependents
answers = {}
get_dependents[4..].each.with_index do |dependent, index|
answers["Name_Row#{index + 1}"] = format_name(dependent[:first_name], dependent[:last_name], dependent[:middle_initial], dependent[:suffix])
answers["SSN_Row#{index + 1}"] = dependent[:ssn]
answers["BirthYear_Row#{index + 1}"] = dependent[:birth_year]
answers["HealthInsurance_Row#{index + 1}"] = dependent[:nj_did_not_have_health_insurance]
end
answers
end
end
end