Esempio n. 1
0
def fill_out(form, pdf):
    f = form
    pdf.load('us.f8829--{}.pdf'.format(f.form_version))

    if f.form_version < u'2014':
        return fill_out_pre_2014(form, pdf)

    pdf.pattern = 'p1-t{}[0]'

    pdf[1] = f.name
    pdf[2] = f.ssn

    pdf[3] = zstr(f.line1)
    pdf[4] = zstr(f.line2)
    pdf[5] = zstr(f.line3 * hundred).rstrip(u'0 ')
    # pdf[8] = zstr(f.line4)
    # pdf[9] = zstr(f.line6)
    pdf[9] = zstr(f.line7 * hundred).rstrip(u'0 ')

    n = 10
    for seq in ([[8]] + [ab(i) for i in range(9, 13)] + [[13, 14, 15]] +
                [ab(i) for i in range(16, 23)] + [range(23, 40)]):
        for i in seq:
            pdf[n], pdf[n + 1] = zzstr(f['line', i])
            n += 2

    pdf[96] = zstr(f.line40 * hundred).rstrip(u'0 ')
    pdf[97], pdf[98] = zzstr(f.line41)
    pdf[99], pdf[100] = zzstr(f.line42)
    pdf[101], pdf[102] = zzstr(f.line43)
Esempio n. 2
0
File: f8829.py Progetto: B-Rich/luca
def fill_out(form, pdf):
    f = form
    pdf.load('us.f8829--{}.pdf'.format(f.form_version))

    pdf.pattern = 'p1-t{}[0]'

    pdf[1] = f.name
    pdf[2] = f.ssn

    pdf[5] = zstr(f.line1)
    pdf[6] = zstr(f.line2)
    pdf[7] = zstr(f.line3 * hundred).rstrip(u'0 ')
    # pdf[8] = zstr(f.line4)
    # pdf[9] = zstr(f.line6)
    pdf[10] = zstr(f.line7 * hundred).rstrip(u'0 ')

    n = 11
    for seq in (
          [[8]] + [ab(i) for i in range(9, 13)] + [[13, 14, 15]]
          + [ab(i) for i in range(16, 23)] + [range(23, 40)]
          ):
        for i in seq:
            pdf[n], pdf[n+1] = zzstr(f['line', i])
            n += 2

    pdf[97] = zstr(f.line40 * hundred).rstrip(u'0 ')
    pdf[98], pdf[99] = zzstr(f.line41)
    pdf[100], pdf[101] = zzstr(f.line42)
    pdf[102], pdf[103] = zzstr(f.line43)
Esempio n. 3
0
def fill_out_pre_2014(form, pdf):
    f = form
    pdf.pattern = 'p1-t{}[0]'

    pdf[1] = f.name
    pdf[2] = f.ssn

    pdf[5] = zstr(f.line1)
    pdf[6] = zstr(f.line2)
    pdf[7] = zstr(f.line3 * hundred).rstrip(u'0 ')
    # pdf[8] = zstr(f.line4)
    # pdf[9] = zstr(f.line6)
    pdf[10] = zstr(f.line7 * hundred).rstrip(u'0 ')

    n = 11
    for seq in ([[8]] + [ab(i) for i in range(9, 13)] + [[13, 14, 15]] +
                [ab(i) for i in range(16, 23)] + [range(23, 40)]):
        for i in seq:
            pdf[n], pdf[n + 1] = zzstr(f['line', i])
            n += 2

    pdf[97] = zstr(f.line40 * hundred).rstrip(u'0 ')
    pdf[98], pdf[99] = zzstr(f.line41)
    pdf[100], pdf[101] = zzstr(f.line42)
    pdf[102], pdf[103] = zzstr(f.line43)
Esempio n. 4
0
def fill_out_pre_2014(form, pdf):
    f = form
    pdf.pattern = "p1-t{}[0]"

    pdf[1] = f.name
    pdf[2] = f.ssn

    pdf[5] = zstr(f.line1)
    pdf[6] = zstr(f.line2)
    pdf[7] = zstr(f.line3 * hundred).rstrip(u"0 ")
    # pdf[8] = zstr(f.line4)
    # pdf[9] = zstr(f.line6)
    pdf[10] = zstr(f.line7 * hundred).rstrip(u"0 ")

    n = 11
    for seq in (
        [[8]] + [ab(i) for i in range(9, 13)] + [[13, 14, 15]] + [ab(i) for i in range(16, 23)] + [range(23, 40)]
    ):
        for i in seq:
            pdf[n], pdf[n + 1] = zzstr(f["line", i])
            n += 2

    pdf[97] = zstr(f.line40 * hundred).rstrip(u"0 ")
    pdf[98], pdf[99] = zzstr(f.line41)
    pdf[100], pdf[101] = zzstr(f.line42)
    pdf[102], pdf[103] = zzstr(f.line43)
Esempio n. 5
0
def fill_out(form, pdf):
    f = form
    pdf.load("us.f8829--{}.pdf".format(f.form_version))

    if f.form_version < u"2014":
        return fill_out_pre_2014(form, pdf)

    pdf.pattern = "p1-t{}[0]"

    pdf[1] = f.name
    pdf[2] = f.ssn

    pdf[3] = zstr(f.line1)
    pdf[4] = zstr(f.line2)
    pdf[5] = zstr(f.line3 * hundred).rstrip(u"0 ")
    # pdf[8] = zstr(f.line4)
    # pdf[9] = zstr(f.line6)
    pdf[9] = zstr(f.line7 * hundred).rstrip(u"0 ")

    n = 10
    for seq in (
        [[8]] + [ab(i) for i in range(9, 13)] + [[13, 14, 15]] + [ab(i) for i in range(16, 23)] + [range(23, 40)]
    ):
        for i in seq:
            pdf[n], pdf[n + 1] = zzstr(f["line", i])
            n += 2

    pdf[96] = zstr(f.line40 * hundred).rstrip(u"0 ")
    pdf[97], pdf[98] = zzstr(f.line41)
    pdf[99], pdf[100] = zzstr(f.line42)
    pdf[101], pdf[102] = zzstr(f.line43)
Esempio n. 6
0
 def split(value, i=None, j=None):
     if i is None:
         i = last_split[0] + 2
     last_split[0] = i
     if j is None:
         j = i + 1
     pdf[i], pdf[j] = zzstr(value)
Esempio n. 7
0
 def split(value, i=None, j=None):
     if i is None:
         i = last_split[0] + 2
     last_split[0] = i
     if j is None:
         j = i + 1
     pdf[i], pdf[j] = zzstr(value)
Esempio n. 8
0
def fill_out(form, pdf):
    f = form
    pdf.load('us.f1040sse--{}.pdf'.format(f.form_version))
    pdf.pages = 2,

    pdf.pattern = 'p2-t{}[0]'

    pdf[1] = f.name
    pdf[2] = f.ssn

    n = 5
    for v in (f.line1a, f.line1b, f.line2, f.line3, f.line4a, f.line4b,
              f.line4c, f.line5a, f.line5b, f.line6, f.line8a, f.line8b,
              f.line8c, f.line8d, f.line9, f.line10, f.line11, f.line12):
        pdf[n], pdf[n + 1] = zzstr(v)
        n += 2

    pdf[52], pdf[53] = zzstr(f.line13)
Esempio n. 9
0
def fill_out(form, pdf):
    f = form
    pdf.load('us.f1040sse--{}.pdf'.format(f.form_version))
    pdf.pages = 2,

    pdf.pattern = 'p2-t{}[0]'

    pdf[1] = f.name
    pdf[2] = f.ssn

    n = 5
    for v in (f.line1a, f.line1b, f.line2, f.line3,
              f.line4a, f.line4b, f.line4c, f.line5a, f.line5b,
              f.line6, f.line8a, f.line8b, f.line8c, f.line8d,
              f.line9, f.line10, f.line11, f.line12):
        pdf[n], pdf[n+1] = zzstr(v)
        n += 2

    pdf[52], pdf[53] = zzstr(f.line13)
Esempio n. 10
0
def fill_out(form, pdf):
    f = form
    pdf.load('us.f1040sse--{}.pdf'.format(f.form_version))
    pdf.pages = 1,

    pdf.pattern = 'p1-t{}[0]'

    pdf[1] = f.name
    pdf[2] = f.ssn

    pdf[5], pdf[6] = zzstr(f.line1a)
    pdf[7], pdf[8] = zzstr(f.line1b)
    pdf[9], pdf[10] = zzstr(f.line2)
    pdf[11], pdf[12] = zzstr(f.line3)
    pdf[13], pdf[14] = zzstr(f.line4)
    pdf[15], pdf[16] = zzstr(f.line5)
    pdf[17], pdf[18] = zzstr(f.line6)
Esempio n. 11
0
def fill_out(form, pdf):
    f = form
    pdf.load('us.f1040sse--{}.pdf'.format(f.form_version))
    pdf.pages = 1,

    pdf.pattern = 'p1-t{}[0]'

    pdf[1] = f.name
    pdf[2] = f.ssn

    pdf[5], pdf[6] = zzstr(f.line1a)
    pdf[7], pdf[8] = zzstr(f.line1b)
    pdf[9], pdf[10] = zzstr(f.line2)
    pdf[11], pdf[12] = zzstr(f.line3)
    pdf[13], pdf[14] = zzstr(f.line4)
    pdf[15], pdf[16] = zzstr(f.line5)
    pdf[17], pdf[18] = zzstr(f.line6)
Esempio n. 12
0
def fill_out(form, pdf):
    f = form
    pdf.load('us.f1040sb--{}.pdf'.format(f.form_version))
    pdf.pages = 1,

    pdf['_01['] = f.name
    pdf['_02['] = f.ssn

    pdf.pattern = 'f1-{:02}['

    n = 3
    for payer, amount in f.line1:
        pdf[n] = payer
        pdf[n+1], pdf[n+2] = zzstr(amount)
        n += 3

    pdf[45], pdf[46] = zzstr(f.line2)
    pdf[47], pdf[48] = zzstr(f.line3)
    pdf[49], pdf[50] = zzstr(f.line4)

    n = 51
    for payer, amount in f.line5:
        pdf[n] = payer
        pdf[n+1], pdf[n+2] = zzstr(amount)
        n += 3

    pdf[96], pdf[97] = zzstr(f.line6)
    pdf[98] = f.line7b

    pdf.pattern = '{}'

    a, b = f.line7a
    pdf['-cb1[0]'] = 'yes' if a else 'Off'
    pdf['-cb1[1]'] = 'no' if not a else 'Off'
    pdf['-cb2[0]'] = 'yes' if b else 'Off'
    pdf['-cb2[1]'] = 'no' if not b else 'Off'
    pdf['-cb3[0]'] = 'yes' if f.line8 else 'Off'
    pdf['-cb3[1]'] = 'no' if not f.line8 else 'Off'
Esempio n. 13
0
def fill_out(form, pdf):
    f = form
    pdf.load('us.f1040sb--{}.pdf'.format(f.form_version))
    pdf.pages = 1,

    pdf['_01['] = f.name
    pdf['_02['] = f.ssn

    pdf.pattern = 'f1-{:02}['

    n = 3
    for payer, amount in f.line1:
        pdf[n] = payer
        pdf[n + 1], pdf[n + 2] = zzstr(amount)
        n += 3

    pdf[45], pdf[46] = zzstr(f.line2)
    pdf[47], pdf[48] = zzstr(f.line3)
    pdf[49], pdf[50] = zzstr(f.line4)

    n = 51
    for payer, amount in f.line5:
        pdf[n] = payer
        pdf[n + 1], pdf[n + 2] = zzstr(amount)
        n += 3

    pdf[96], pdf[97] = zzstr(f.line6)
    pdf[98] = f.line7b

    pdf.pattern = '{}'

    a, b = f.line7a
    pdf['-cb1[0]'] = 'yes' if a else 'Off'
    pdf['-cb1[1]'] = 'no' if not a else 'Off'
    pdf['-cb2[0]'] = 'yes' if b else 'Off'
    pdf['-cb2[1]'] = 'no' if not b else 'Off'
    pdf['-cb3[0]'] = 'yes' if f.line8 else 'Off'
    pdf['-cb3[1]'] = 'no' if not f.line8 else 'Off'
Esempio n. 14
0
def _old_2013_fill_out(f, pdf):
    pdf.pattern = 'topmostSubform[0].Page1[0].EntityArea[0].Text3{}[0]'
    for letter, digit in zip(' abcdefgh', f.ein.replace('-', '')):
        pdf[letter.strip()] = digit

    pdf.pattern = 'topmostSubform[0].Page1[0].EntityArea[0].Text{}[0]'
    pdf[5] = f.name
    pdf[6] = f.trade_name
    pdf[7] = f.address
    pdf[8] = f.city
    pdf[9] = f.state
    pdf[10] = f.zip
    # TODO: Foreign address

    pdf.pattern = 'topmostSubform[0].Page1[0].#subform[{}].Check_Box{}[0]'
    pdf[5, 23] = '1' if f.line4a else 'Off'
    pdf[5, 24] = '1' if f.line4b else 'Off'
    pdf[6, 25] = '1' if f.line4c else 'Off'
    pdf[6, 26] = '1' if f.line4d else 'Off'
    pdf.pattern = 'topmostSubform[0].Page1[0].Check_Box{}[0]'
    pdf[23] = '1' if f.line4e else 'Off'

    pdf.pattern = 'topmostSubform[0].Page1[0].Text{}[0]'
    pdf[16] = f.line1a[0]
    pdf[17] = f.line1a[1]
    # TODO: check marks on lines 1b and 2

    pdf['21'], pdf['21a'] = zzstr(f.line3)
    pdf['22'], pdf['22a'] = zzstr(f.line4)
    # TODO: check boxes on line 4
    pdf['28'], pdf['28a'] = zzstr(f.line5)
    pdf['29'], pdf['29a'] = zzstr(f.line6)
    pdf['500'], pdf['500a'] = zzstr(f.line7)
    pdf['31'], pdf['31a'] = zzstr(f.line8)

    pdf['32'], pdf['32a'] = zzstr(f.line9)
    pdf['33'], pdf['33a'] = zzstr(f.line10)
    pdf['34'], pdf['34a'] = zzstr(f.line11)

    pdf['35'], pdf['35a'] = zzstr(f.line12)
    pdf['36'], pdf['36a'] = zzstr(f.line13)
    pdf['37'], pdf['37a'] = zzstr(f.line14)
    pdf['38'], pdf['38a'] = zzstr(f.line15)

    pdf.pattern = 'topmostSubform[0].Page2[0].{}'

    pdf['Text41[0]'] = f.name
    pdf['Text42[0]'] = f.ein

    # TODO: Part 5
    # TODO: Part 6 designee

    pdf['p2-cb1[1]'] = 'Off' if f.part6 else '2'

    pdf.pattern = 'topmostSubform[0].Page2[0].Text{}[0]'
    pdf['59'] = f.sign_name
    pdf['61'] = f.sign_title
    pdf['64'] = f.sign_phone
Esempio n. 15
0
def fill_out(form, pdf):
    pdf.load('us.f1040--{}.pdf'.format(form.form_version))

    if form.form_version < u'2014':
        return fill_out_2013_and_before(form, pdf)

    f = form
    #v = info_dict[f.form_version]

    pdf.pattern = 'f1_{:02}[0]'

    pdf[4] = f.first_name
    pdf[5] = f.last_name
    pdf[6] = f.ssn.replace('-', '')
    pdf[7] = f.spouse_first_name
    pdf[8] = f.spouse_last_name
    pdf[9] = f.spouse_ssn.replace('-', '')

    pdf.pattern = 'f1-{:02}[0]'

    pdf[10] = f.address
    pdf[11] = f.apartment_number
    pdf[12] = f.city_state_zip
    pdf[13] = f.foreign_country
    pdf[14] = f.foreign_province
    pdf[15] = f.foreign_postal_code

    pdf.pattern = '{}'

    pdf['Lines1-3[0].c1_03[0]'] = ('S' if f.filing_status == 'S' else 'Off')
    pdf['Lines1-3[0].c1_03[1]'] = ('MJ' if f.filing_status == 'MJ' else 'Off')
    pdf['Lines1-3[0].c1_03[2]'] = ('MS' if f.filing_status == 'MS' else 'Off')
    pdf['Page1[0].c1_03[0]'] = ('HoH' if f.filing_status == 'HoH' else 'Off')
    pdf['Page1[0].c1_03[1]'] = ('QW' if f.filing_status == 'QW' else 'Off')

    if f.filing_status == 'MS':
        pdf['Lines1-3[0].f1-16[0]'] = f.spouse_ssn

    pdf['c1_04[0]'] = ('1' if f.line6a else 'Off')
    pdf['c1_05[0]'] = ('1' if f.line6b else 'Off')

    # TODO: Dependents

    pdf.pattern = 'Page1[0].f1_{:02}[0]'

    pdf[30] = f.line6ab
    pdf[34] = f.line6d

    i = 35
    for n in ('7 8a 8b 9a 9b 10 11 12 13 14 15a 15b 16a 16b 17 18 19 '
              '20a 20b 21 22 23 24 25 26 27 28 29 '
              '30 31a 32 33 34 35 36 37').split():
        pdf[i], pdf[i + 1] = zzstr(f['line', n])
        if n in ('21', '31a'):
            i += 3
        else:
            i += 2

    pdf.pattern = '{}'
    pdf['f1-_51[0]'] = zzstr(f.line13)[0]

    pdf.pattern = '.f2_{:02}[0]'

    i = 1
    for n in ([38] + range(40, 60) + '60a 60b'.split() + range(61, 66) +
              '66a 66b'.split() + range(67, 76) + '76a 77 78 79'.split()):
        pdf[i], pdf[i + 1] = zzstr(f['line', n])
        if n == '76a':
            i += 4
        elif n in (38, 43, 53, 61, 72):
            i += 3
        else:
            i += 2
Esempio n. 16
0
def fill_out_2013_and_before(form, pdf):
    f = form
    v = info_dict[f.form_version]

    pdf.pattern = 'p1-t{}['

    pdf[4] = f.first_name
    pdf[5] = f.last_name
    pdf[6] = f.spouse_first_name
    pdf[7] = f.spouse_last_name
    pdf[8] = f.address
    pdf[9] = f.apartment_number
    pdf[10] = f.city_state_zip
    pdf['011'] = f.foreign_country
    pdf['012'] = f.foreign_province
    pdf['013'] = f.foreign_postal_code

    pdf[11] = f.ssn.replace('-', '')
    pdf[14] = f.spouse_ssn.replace('-', '')

    # TODO: checkboxes for the Presidential Election Campaign (or not?)

    pdf.pattern = '{}'

    pdf['c1_04['] = [(status if f.filing_status == status else u'Off')
                     for status in filing_statuses]
    # TODO: text fields that go along with filing statuses

    pdf['c1_05[0]'] = '1' if f.line6a else 'Off'
    pdf['c1_06[0]'] = '1' if f.line6b else 'Off'

    d_pos = [20, 21, 24, 25, 26, 30, 31, 32, 35, 36, 37,
             40]  # not uniform numbering
    d_cbox = 7
    for (d_name, d_ssn, d_rel, d_credit) in getattr(f, 'dependents', []):
        pdf['p1-t%s[' % d_pos.pop(0)] = d_name
        pdf['p1-t%s[' % d_pos.pop(0)] = d_ssn.replace('-', '')
        pdf['p1-t%s[' % d_pos.pop(0)] = d_rel
        pdf['c1_%02d[' % d_cbox] = '1' if d_credit else 'Off'
        d_cbox += 1

    pdf.pattern = 'p1-t{}['

    pdf[19] = str(f.line6ab)
    pdf[42] = str(getattr(f, 'line6c_lived_with', ''))
    pdf[43] = str(getattr(f, 'line6c_not_lived_with', ''))
    pdf[44] = str(getattr(f, 'line6c_other', ''))
    pdf[45] = str(f.line6d)

    n = 46
    for line in income_lines + lines('22') + adjustments + lines('36 37'):
        pdf[n], pdf[n + 1] = zzstr(getattr(f, line))
        if n == 82:
            n = 85
        elif n == 103:
            if f.form_version <= u'2012':
                n = 108
            else:
                n = 106
        else:
            n += 2

    pdf.pattern = '{}'

    pdf['Page1[0].p1-t84[0]'] = f.line21_text

    pdf.pattern = 'p2-t{}[0]'

    n = 1
    for line in (lines([38] + range(40, 47)) + v.credits + lines('54 55') +
                 v.other_taxes + lines('61') + v.payments +
                 lines('72 73 74a') + lines(range(75, 78))):
        pdf[n], pdf[n + 1] = zzstr(getattr(f, line,
                                           zero))  # todo: remove default
        if f.form_version == u'2013':
            if n == 1:
                n = 4
            elif n == 60:
                n = 65
            elif n == 65:  # TODO: more fields are wrong here; look for [1]'s
                n = 62
            else:
                n += 2
        elif f.form_version == u'2012':
            if n == 1:
                n = 4
            elif n == 20:
                n = 24
            elif n == 32:
                n = 37
            elif n == 45 and pdf.pattern == 'p2-t{}[0]':
                pdf.pattern = 'p2-t{}[1]'
            elif n == 45 and pdf.pattern == 'p2-t{}[1]':
                pdf.pattern = 'p2-t{}[2]'
            elif n == 45 and pdf.pattern == 'p2-t{}[2]':
                pdf.pattern = 'p2-t{}[0]'
                n = 47
            elif n == 49:
                n = 53
            elif n == 69 and pdf.pattern == 'p2-t{}[0]':
                pdf.pattern = 'p2-t{}[1]'
            elif n == 69 and pdf.pattern == 'p2-t{}[1]':
                pdf.pattern = 'p2-t{}[0]'
                n = 71
            elif n == 77:
                n = 105
            else:
                n += 2
Esempio n. 17
0
def fill_out(form, pdf):
    f = form
    pdf.load('us.f1040se--{}.pdf'.format(f.form_version))

    pdf['p1-t1['] = [f.name, f.name]
    pdf['t2['] = [f.ssn, f.ssn]

    pdf['c1_01['] = yesno(f.is_1099_required)
    pdf['c1_03['] = yesno(f.is_1099_required)

    # Part I: Income or Loss From Rental Real Estate and Royalties

    subforms = [getattr(form.Part_I, letter) for letter in 'ABC']

    pdf['Pg1Table1a'] = [s.address for s in subforms]
    pdf['Pg1Table1b'] = [str(s.type) for s in subforms]
    pdf['Table_Line2[0]'] = concat(
            [z(s.fair_rental_days), z(s.personal_use_days), z(s.qjv)]
            for s in subforms
            )

    if f.form_version <= u'2012':
        pdf.pattern = 'Pg1Table2[0].Line{}[0]'
    elif f.form_version <= u'2013':
        pdf.pattern = 'Pg1Table2[0].#subform[1].Line{}[1]'
    else:
        pdf.pattern = 'Pg1Table2[0].#subform[1].Line{}[0]'

    for j in range(3, 5):
        attr = 'line{}'.format(j)
        pdf[j] = concat(zzstr(getattr(s, attr)) for s in subforms)

    pdf.pattern = 'Pg1Table3[0].Line{}[0]'

    for j in range(5, 23):
        attr = 'line{}'.format(j)
        pdf[j] = concat(zzstr(getattr(s, attr)) for s in subforms)

    pdf.pattern = 'Page1[0].p1-t{}['

    pdf[505], pdf[504] = zzstr(f.line23a)
    pdf[176], pdf[177] = zzstr(f.line23b)
    pdf[508], pdf[509] = zzstr(f.line23c)
    pdf[510], pdf[511] = zzstr(f.line23d)
    pdf[512], pdf[513] = zzstr(f.line23e)

    pdf[507], pdf[506] = zzstr(f.line24)
    pdf[178], pdf[179] = zzstr(-f.line25)
    pdf[180], pdf[181] = zzstr(f.line26)

    # Part II: Income or Loss From Partnerships and S Corporations

    pdf.pattern = '{}'

    subforms = [getattr(f.Part_II, letter) for letter in 'ABCD']

    pdf['Line28TableA-E[0]'] = concat(
        [s.name, s.type, onoff(s.is_foreign), s.ein, onoff(s.any_not_at_risk)]
        for s in subforms
        )

    if f.form_version <= u'2012':
        key = 'Line28TableF-J[0]'
    else:
        key = 'Pt2PassiveNonPassive[0]'
    pdf[key] = concat(
        concat([zzstr(s.f), zzstr(s.g), zzstr(s.h), zzstr(s.i), zzstr(s.j)])
        for s in subforms
        )

    pdf['.p2-t57['], pdf['.p2-t58['] = zzstr(f.line29ag)
    pdf['.p2-t59['], pdf['.p2-t60['] = zzstr(f.line29aj)

    pdf['.p2-t61['], pdf['.p2-t62['] = zzstr(f.line29bf)
    pdf['.p2-t63['], pdf['.p2-t64['] = zzstr(f.line29bh)
    pdf['.p2-t65['], pdf['.p2-t66['] = zzstr(f.line29bi)

    pdf['.p2-t67['], pdf['.p2-t68['] = zzstr(f.line30)
    pdf['.p2-t69['], pdf['.p2-t70['] = zzstr(f.line31)
    pdf['.p2-t71['], pdf['.p2-t72['] = zzstr(f.line32)

    # TODO: Part III
    # TODO: Part IV

    pdf['.p2-t117['], pdf['.p2-t118['] = zzstr(f.line40)
    pdf['.p2-t119['], pdf['.p2-t120['] = zzstr(f.line41)
    pdf['.p2-t121['], pdf['.p2-t122['] = zzstr(f.line42)
    pdf['.p2-t123['], pdf['.p2-t124['] = zzstr(f.line43)
Esempio n. 18
0
 def pair(n, value, show_zero=False):
     pdf[n], pdf[n + 1] = nnstr(value) if show_zero else zzstr(value)
Esempio n. 19
0
def fill_out_2013_and_before(form, pdf):
    f = form
    v = info_dict[f.form_version]

    pdf.pattern = 'p1-t{}['

    pdf[4] = f.first_name
    pdf[5] = f.last_name
    pdf[6] = f.spouse_first_name
    pdf[7] = f.spouse_last_name
    pdf[8] = f.address
    pdf[9] = f.apartment_number
    pdf[10] = f.city_state_zip
    pdf['011'] = f.foreign_country
    pdf['012'] = f.foreign_province
    pdf['013'] = f.foreign_postal_code

    pdf[11] = f.ssn.replace('-', '')
    pdf[14] = f.spouse_ssn.replace('-', '')

    # TODO: checkboxes for the Presidential Election Campaign (or not?)

    pdf.pattern = '{}'

    pdf['c1_04['] = [(status if f.filing_status == status else u'Off')
                       for status in filing_statuses]
    # TODO: text fields that go along with filing statuses

    pdf['c1_05[0]'] = '1' if f.line6a else 'Off'
    pdf['c1_06[0]'] = '1' if f.line6b else 'Off'

    pdf.pattern = 'p1-t{}['

    pdf[19] = str(f.line6ab)
    # TODO: dependents
    pdf[45] = str(f.line6d)

    n = 46
    for line in income_lines + lines('22') + adjustments + lines('36 37'):
        pdf[n], pdf[n+1] = zzstr(getattr(f, line))
        if n == 82:
            n = 85
        elif n == 103:
            if f.form_version <= u'2012':
                n = 108
            else:
                n = 106
        else:
            n += 2

    pdf.pattern = '{}'

    pdf['Page1[0].p1-t84[0]'] = f.line21_text

    pdf.pattern = 'p2-t{}[0]'

    n = 1
    for line in (lines([38] + range(40, 47)) + v.credits + lines('54 55')
                 + v.other_taxes + lines('61') + v.payments + lines('72 73 74a')
                 + lines(range(75, 78))):
        pdf[n], pdf[n+1] = zzstr(getattr(f, line, zero)) # todo: remove default
        if f.form_version == u'2013':
            if n == 1:
                n = 4
            elif n == 60:
                n = 65
            elif n == 65:  # TODO: more fields are wrong here; look for [1]'s
                n = 62
            else:
                n += 2
        elif f.form_version == u'2012':
            if n == 1:
                n = 4
            elif n == 20:
                n = 24
            elif n == 32:
                n = 37
            elif n == 45 and pdf.pattern == 'p2-t{}[0]':
                pdf.pattern = 'p2-t{}[1]'
            elif n == 45 and pdf.pattern == 'p2-t{}[1]':
                pdf.pattern = 'p2-t{}[2]'
            elif n == 45 and pdf.pattern == 'p2-t{}[2]':
                pdf.pattern = 'p2-t{}[0]'
                n = 47
            elif n == 49:
                n = 53
            elif n == 69 and pdf.pattern == 'p2-t{}[0]':
                pdf.pattern = 'p2-t{}[1]'
            elif n == 69 and pdf.pattern == 'p2-t{}[1]':
                pdf.pattern = 'p2-t{}[0]'
                n = 71
            elif n == 77:
                n = 105
            else:
                n += 2
Esempio n. 20
0
 def pair(n, value, show_zero=False):
     pdf[n], pdf[n + 1] = nnstr(value) if show_zero else zzstr(value)
Esempio n. 21
0
 def split(i, value, j=None):
     if j is None:
         j = i + 1
     pdf[i], pdf[j] = zzstr(value)
Esempio n. 22
0
def fill_out(form, pdf):
    pdf.load('us.f1040--{}.pdf'.format(form.form_version))

    if form.form_version < u'2014':
        return fill_out_2013_and_before(form, pdf)

    f = form
    #v = info_dict[f.form_version]

    pdf.pattern = 'f1_{:02}[0]'

    pdf[4] = f.first_name
    pdf[5] = f.last_name
    pdf[6] = f.ssn.replace('-', '')
    pdf[7] = f.spouse_first_name
    pdf[8] = f.spouse_last_name
    pdf[9] = f.spouse_ssn.replace('-', '')

    pdf.pattern = 'f1-{:02}[0]'

    pdf[10] = f.address
    pdf[11] = f.apartment_number
    pdf[12] = f.city_state_zip
    pdf[13] = f.foreign_country
    pdf[14] = f.foreign_province
    pdf[15] = f.foreign_postal_code

    pdf.pattern = '{}'

    pdf['Lines1-3[0].c1_03[0]'] = ('S' if f.filing_status == 'S' else 'Off')
    pdf['Lines1-3[0].c1_03[1]'] = ('MJ' if f.filing_status == 'MJ' else 'Off')
    pdf['Lines1-3[0].c1_03[2]'] = ('MS' if f.filing_status == 'MS' else 'Off')
    pdf['Page1[0].c1_03[0]'] = ('HoH' if f.filing_status == 'HoH' else 'Off')
    pdf['Page1[0].c1_03[1]'] = ('QW' if f.filing_status == 'QW' else 'Off')

    if f.filing_status == 'MS':
        pdf['Lines1-3[0].f1-16[0]'] = f.spouse_ssn

    pdf['c1_04[0]'] = ('1' if f.line6a else 'Off')
    pdf['c1_05[0]'] = ('1' if f.line6b else 'Off')

    # TODO: Dependents

    pdf.pattern = 'Page1[0].f1_{:02}[0]'

    pdf[30] = f.line6ab
    pdf[34] = f.line6d

    i = 35
    for n in ('7 8a 8b 9a 9b 10 11 12 13 14 15a 15b 16a 16b 17 18 19 '
              '20a 20b 21 22 23 24 25 26 27 28 29 '
              '30 31a 32 33 34 35 36 37').split():
        pdf[i], pdf[i+1] = zzstr(f['line', n])
        if n in ('21', '31a'):
            i += 3
        else:
            i += 2

    pdf.pattern = '{}'
    pdf['f1-_51[0]'] = zzstr(f.line13)[0]

    pdf.pattern = '.f2_{:02}[0]'

    i = 1
    for n in ([38] + range(40, 60) + '60a 60b'.split() + range(61, 66)
              + '66a 66b'.split() + range(67, 76) + '76a 77 78 79'.split()):
        pdf[i], pdf[i+1] = zzstr(f['line', n])
        if n == '76a':
            i += 4
        elif n in (38, 43, 53, 61, 72):
            i += 3
        else:
            i += 2
Esempio n. 23
0
 def put(n, value):
     sa, sb = zzstr(value)
     pdf['-t{}['.format(n + 0)] = sa
     pdf['-t{}['.format(n + 1)] = sb
Esempio n. 24
0
def fill_out(form, pdf):
    f = form

    pdf.load('us.f940--{}.pdf'.format(f.form_version))
    pdf.pages = 1, 2

    if form.form_version == '2013':
        return _old_2013_fill_out(f, pdf)

    if form.form_version == '2012':
        return _old_2012_fill_out(f, pdf)

    if form.form_version == '2014':
        pdf.pattern = '.TypeReturn[0].c1_{:02}[0]'
    else:
        pdf.pattern = '.TypeReturn[0].c1_{}[0]'

    pdf[1] = 'Report1' if f.type == 'a' else 'Off'
    pdf[2] = 'Report2' if f.type == 'b' else 'Off'
    pdf[3] = 'Report3' if f.type == 'c' else 'Off'
    pdf[4] = 'Report4' if f.type == 'd' else 'Off'

    if form.form_version == '2014':
        pdf.pattern = '.c1_{:02}[0]'
    else:
        pdf.pattern = '.c1_{}[0]'

    pdf[5] = '1' if f.line1b else 'Off'
    pdf[6] = '1' if f.line2 else 'Off'
    pdf[7] = '1' if f.line4a else 'Off'
    pdf[8] = '1' if f.line4b else 'Off'
    pdf[9] = '1' if f.line4c else 'Off'
    pdf[10] = '1' if f.line4d else 'Off'
    pdf[11] = '1' if f.line4e else 'Off'

    if form.form_version == '2014':
        pdf.pattern = '.f1_{:02}[0]'
    else:
        pdf.pattern = '.f1_{}[0]'

    for n, digit in enumerate(f.ein.replace('-', ''), 1):
        pdf[n] = digit

    pdf[10] = f.name
    pdf[11] = f.trade_name
    pdf[12] = f.address
    pdf[13] = f.city
    pdf[14] = f.state
    pdf[15] = f.zip
    # TODO: foreign address

    # pdf[23] = '1' if f.line4e else 'Off'  # delete?

    pdf[19] = f.line1a[0]
    pdf[20] = f.line1a[1]

    pdf[21], pdf[22] = nnstr(f.line3)
    pdf[23], pdf[24] = zzstr(f.line4)
    pdf[25], pdf[26] = zzstr(f.line5)
    pdf[27], pdf[28] = nnstr(f.line6)
    pdf[29], pdf[30] = nnstr(f.line7)
    pdf[31], pdf[32] = nnstr(f.line8)

    pdf[33], pdf[34] = nnstr(f.line9)
    pdf[35], pdf[36] = zzstr(f.line10)
    pdf[37], pdf[38] = zzstr(f.line11)

    pdf[39], pdf[40] = nnstr(f.line12)
    pdf[41], pdf[42] = nnstr(f.line13)
    pdf[43], pdf[44] = zzstr(f.line14)
    pdf[45], pdf[46] = zzstr(f.line15)

    pdf.pattern = '.f2_{:02}[0]'

    pdf[1] = f.name
    pdf[2] = f.ein

    # TODO: Part 5
    # TODO: Part 6 designee (but "No" checkbox is implemented below)

    pdf[16] = f.sign_name
    pdf[17] = f.sign_title
    pdf[18] = f.sign_phone

    pdf.pattern = '{}'

    if form.form_version == '2014':
        pdf['.c2_01[1]'] = '2' if (not f.part6) else 'Off'
    else:
        pdf['.c2_1[0]'] = 'Yes' if f.part6 else 'Off'
        pdf['.c2_1[1]'] = 'Off' if f.part6 else 'No'
Esempio n. 25
0
def fill_out_2013_and_earlier(form, pdf):
    f = form

    pdf.load('us.f941--{}.pdf'.format(f.year))
    pdf.pages = 1, 2

    page = 1

    def name(n):
        return 'f{}_{:02}_0_[0]'.format(page, n)

    def pair(n, value):
        pdf[name(n)], pdf[name(n + 1)] = zzstr(value)

    for i in range(9):
        pdf[name(i + 1)] = f.ein.replace('-', '')[i : i+1]

    pdf[name(16)] = str(f.line1 or '')
    pdf[name(10)] = f.name
    pdf[name(11)] = f.trade_name
    pdf[name(12)] = f.address
    pdf[name(13)] = f.city
    pdf[name(14)] = f.state
    pdf[name(15)] = f.zip

    pdf['c1_1_0_[0]'] = 'Report1' if f.quarter == 1 else 'Off'
    pdf['c1_1_0_[1]'] = 'Report2' if f.quarter == 2 else 'Off'
    pdf['c1_1_0_[2]'] = 'Report3' if f.quarter == 3 else 'Off'
    pdf['c1_1_0_[3]'] = 'Report4' if f.quarter == 4 else 'Off'

    pair(17, f.line2)
    pair(19, f.line3)

    pdf['c1_5_0_[0]'] = '1' if f.line4 else 'Off'

    pair(21, f.line5a1)
    pair(23, f.line5a2)
    pair(25, f.line5b1)
    pair(27, f.line5b2)
    pair(29, f.line5c1)
    pair(31, f.line5c2)
    pair(33, f.line5d)
    if f.form_version < u'2013':
        pair(60, f.line5e)

    dollars, cents = zzstr(f.line6)
    pdf[name(105)] = dollars
    pdf[name(36)] = cents

    pair(37, f.line7)
    pair(39, f.line8)
    pair(41, f.line9)
    pair(54, f.line10)
    pair(56, f.line11)
    pair(45, f.line12a)

    pdf[name(47)] = str(f.line12b or '')

    pair(43, f.line13)
    pair(58, f.line14)
    pair(64, f.line15)

    page = 2

    pdf[name(75) if f.year < 2013 else 'd2_75_0_[0]'] = f.name
    pdf[name(14)] = f.ein

    pdf['c2_01_0_[0]'] = 'Chck1' if f.line16 == 'a' else 'Off'
    pdf['c2_01_0_[1]'] = 'Chck2' if f.line16 == 'b' else 'Off'
    pdf['c2_01_0_[2]'] = 'Chck3' if f.line16 == 'c' else 'Off'

    pdf.pattern = '.f2_{:02}_0_[0]'
    pdf[3], pdf[4] = zzstr(f.line16_month1)
    pdf[5], pdf[6] = zzstr(f.line16_month2)
    pdf[7], pdf[8] = zzstr(f.line16_month3)
    pdf[9], pdf[10] = zzstr(f.line16_total)

    # TODO: support Part 3
    # TODO: allow "yes" and further information for Part 4

    pdf.pattern = '{}'

    pdf['c2_06_0_[0]'] = 'Yes' if f.Part_4 else 'Off'
    pdf['c2_06_0_[1]'] = 'Off' if f.Part_4 else 'No'

    pdf[name(44)] = f.signer_name
    pdf[name(66)] = f.signer_title
    pdf[name(48)] = f.signer_phone
Esempio n. 26
0
 def split(i, value, j=None):
     if j is None:
         j = i + 1
     pdf[i], pdf[j] = zzstr(value)
Esempio n. 27
0
def fill_out(form, pdf):
    f = form
    pdf.load("us.f1040se--{}.pdf".format(f.form_version))

    pdf["p1-t1["] = [f.name, f.name]
    pdf["t2["] = [f.ssn, f.ssn]

    pdf["c1_01["] = yesno(f.is_1099_required)
    pdf["c1_03["] = yesno(f.is_1099_required)

    # Part I: Income or Loss From Rental Real Estate and Royalties

    subforms = [getattr(form.Part_I, letter) for letter in "ABC"]

    pdf["Pg1Table1a"] = [s.address for s in subforms]
    pdf["Pg1Table1b"] = [str(s.type) for s in subforms]
    pdf["Table_Line2[0]"] = concat([z(s.fair_rental_days), z(s.personal_use_days), z(s.qjv)] for s in subforms)

    if f.form_version <= u"2012":
        pdf.pattern = "Pg1Table2[0].Line{}[0]"
    elif f.form_version <= u"2013":
        pdf.pattern = "Pg1Table2[0].#subform[1].Line{}[1]"
    else:
        pdf.pattern = "Pg1Table2[0].#subform[1].Line{}[0]"

    for j in range(3, 5):
        attr = "line{}".format(j)
        pdf[j] = concat(zzstr(getattr(s, attr)) for s in subforms)

    pdf.pattern = "Pg1Table3[0].Line{}[0]"

    for j in range(5, 23):
        attr = "line{}".format(j)
        pdf[j] = concat(zzstr(getattr(s, attr)) for s in subforms)

    pdf.pattern = "Page1[0].p1-t{}["

    pdf[505], pdf[504] = zzstr(f.line23a)
    pdf[176], pdf[177] = zzstr(f.line23b)
    pdf[508], pdf[509] = zzstr(f.line23c)
    pdf[510], pdf[511] = zzstr(f.line23d)
    pdf[512], pdf[513] = zzstr(f.line23e)

    pdf[507], pdf[506] = zzstr(f.line24)
    pdf[178], pdf[179] = zzstr(-f.line25)
    pdf[180], pdf[181] = zzstr(f.line26)

    # Part II: Income or Loss From Partnerships and S Corporations

    pdf.pattern = "{}"

    subforms = [getattr(f.Part_II, letter) for letter in "ABCD"]

    pdf["Line28TableA-E[0]"] = concat(
        [s.name, s.type, onoff(s.is_foreign), s.ein, onoff(s.any_not_at_risk)] for s in subforms
    )

    if f.form_version <= u"2012":
        key = "Line28TableF-J[0]"
    else:
        key = "Pt2PassiveNonPassive[0]"
    pdf[key] = concat(concat([zzstr(s.f), zzstr(s.g), zzstr(s.h), zzstr(s.i), zzstr(s.j)]) for s in subforms)

    pdf[".p2-t57["], pdf[".p2-t58["] = zzstr(f.line29ag)
    pdf[".p2-t59["], pdf[".p2-t60["] = zzstr(f.line29aj)

    pdf[".p2-t61["], pdf[".p2-t62["] = zzstr(f.line29bf)
    pdf[".p2-t63["], pdf[".p2-t64["] = zzstr(f.line29bh)
    pdf[".p2-t65["], pdf[".p2-t66["] = zzstr(f.line29bi)

    pdf[".p2-t67["], pdf[".p2-t68["] = zzstr(f.line30)
    pdf[".p2-t69["], pdf[".p2-t70["] = zzstr(f.line31)
    pdf[".p2-t71["], pdf[".p2-t72["] = zzstr(f.line32)

    # TODO: Part III
    # TODO: Part IV

    pdf[".p2-t117["], pdf[".p2-t118["] = zzstr(f.line40)
    pdf[".p2-t119["], pdf[".p2-t120["] = zzstr(f.line41)
    pdf[".p2-t121["], pdf[".p2-t122["] = zzstr(f.line42)
    pdf[".p2-t123["], pdf[".p2-t124["] = zzstr(f.line43)
Esempio n. 28
0
def fill_out_2013(form, pdf):
    f = form
    pdf.pattern = 'f1_{:03}['

    pdf[1] = f.name
    pdf[2] = f.ssn

    pdf[3] = f.A
    pdf[4] = f.B
    pdf[5] = f.C
    pdf[6] = f.D

    pdf[7] = f.E_text1
    pdf[8] = f.E_text2
    pdf[9] = f.F_text

    pdf.pattern = '{}'

    pdf['.c1_01['] = '0' if f.F == 'cash' else 'Off'
    pdf['.c1_02['] = '0' if f.F == 'accrual' else 'Off'
    pdf['.c1_03['] = '0' if f.F == 'other' else 'Off'

    pdf['.c1_04[0]'] = 'Yes' if f.G else 'Off'
    pdf['.c1_04[1]'] = 'Off' if f.G else 'No'

    pdf['.c1_05[0]'] = '1' if f.H else 'Off'

    pdf['.c1_06[0]'] = 'Yes' if f.I else 'Off'
    pdf['.c1_06[1]'] = 'Off' if f.I else 'No'

    pdf['.c1_07[0]'] = 'Yes' if f.J else 'Off'
    pdf['.c1_07[1]'] = 'Off' if f.J else 'No'

    # Part I: Income

    pdf['.c1_08_0_['] = '1' if f.line1_box else 'Off'

    pdf.pattern = 'f1_{:03}['

    pdf[10], pdf[11] = zzstr(f.line1)

    n = 18
    for i in range(2, 8):
        pdf[n], pdf[n + 1] = zzstr(getattr(f, 'line{}'.format(i)))
        n += 2

    # Part II: Expenses

    n = 30
    for attr in _expense_lines():
        pdf[n], pdf[n + 1] = zzstr(getattr(f, attr))
        if n == 74:
            n = 84
        else:
            n += 2

    pdf[76], pdf[77] = zzstr(f.line28)
    pdf[78], pdf[79] = zzstr(f.line29)
    pdf[80], pdf[81] = zzstr(f.line30)
    pdf[82], pdf[83] = zzstr(f.line31)

    pdf.pattern = '{}'

    if f.line31 < zero:
        pdf['.c1_08['] = '1' if f.line32 == 'a' else 'Off'
        pdf['.c1_09['] = '1' if f.line32 == 'b' else 'Off'

    # Part III: Cost of Goods Sold

    pdf['.c2_01['] = '1' if f.line33 == 'a' else 'Off'
    pdf['.c2_02['] = '1' if f.line33 == 'b' else 'Off'
    pdf['.c2_03['] = '1' if f.line33 == 'c' else 'Off'

    pdf['.c2_04[0]'] = 'Yes' if f.line34 else 'Off'
    pdf['.c2_04[1]'] = 'Off' if f.line34 else 'No'

    pdf.pattern = 'f2_{:03}['

    n = 1
    for i in range(35, 43):
        pdf[n], pdf[n + 1] = zzstr(getattr(f, 'line{}'.format(i)))
        n += 2

    # Part IV: Information on Your Vehicle
    # TODO

    # Part V: Other Expenses

    n = 23
    for text, value in f.Part_V:
        pdf[n] = text
        pdf[n + 1], pdf[n + 2] = zzstr(value)
        n += 3

    pdf[50], pdf[51] = zzstr(f.line48)
Esempio n. 29
0
 def put(n, value):
     sa, sb = zzstr(value)
     pdf['-t{}['.format(n+0)] = sa
     pdf['-t{}['.format(n+1)] = sb
Esempio n. 30
0
def fill_out(form, pdf):
    f = form
    pdf.load('us.f1040sc--{}.pdf'.format(f.form_version))

    if f.form_version < u'2014':
        return fill_out_2013(form, pdf)

    pdf.pattern = 'f1_{:03}['

    pdf[1] = f.name
    pdf[2] = f.ssn

    pdf[3] = f.A
    pdf[4] = f.B
    pdf[5] = f.C
    pdf[6] = f.D

    pdf[7] = f.E_text1
    pdf[8] = f.E_text2
    pdf[9] = f.F_text

    pdf.pattern = '{}'

    pdf['.c1_01[0]'] = '1' if f.F == 'cash' else 'Off'
    pdf['.c1_01[1]'] = '2' if f.F == 'accrual' else 'Off'
    pdf['.c1_01[2]'] = '3' if f.F == 'other' else 'Off'

    pdf['.c1_02[0]'] = 'Yes' if f.G else 'Off'
    pdf['.c1_02[1]'] = 'Off' if f.G else 'No'

    pdf['.c1_03[0]'] = '1' if f.H else 'Off'

    pdf['.c1_04[0]'] = 'Yes' if f.I else 'Off'
    pdf['.c1_04[1]'] = 'Off' if f.I else 'No'

    pdf['.c1_05[0]'] = 'Yes' if f.J else 'Off'
    pdf['.c1_05[1]'] = 'Off' if f.J else 'No'

    # Part I: Income

    pdf['.c1_06[0]'] = '1' if f.line1_box else 'Off'

    pdf.pattern = 'f1_{:03}['

    pdf[10], pdf[11] = zzstr(f.line1)

    n = 12
    for i in range(2, 8):
        pdf[n], pdf[n + 1] = zzstr(getattr(f, 'line{}'.format(i)))
        n += 2

    # Part II: Expenses

    n = 24
    for attr in _expense_lines(30):
        pdf[n], pdf[n + 1] = zzstr(getattr(f, attr))
        # if n == 74:
        #     n = 84
        # else:
        n += 2

    pdf[78], pdf[79] = zzstr(f.line30)
    pdf[80], pdf[81] = zzstr(f.line31)

    pdf.pattern = '{}'

    if f.line31 < zero:
        pdf['.c1_08['] = '1' if f.line32 == 'a' else 'Off'
        pdf['.c1_09['] = '1' if f.line32 == 'b' else 'Off'
Esempio n. 31
0
def fill_out_2013(form, pdf):
    f = form
    pdf.pattern = 'f1_{:03}['

    pdf[1] = f.name
    pdf[2] = f.ssn

    pdf[3] = f.A
    pdf[4] = f.B
    pdf[5] = f.C
    pdf[6] = f.D

    pdf[7] = f.E_text1
    pdf[8] = f.E_text2
    pdf[9] = f.F_text

    pdf.pattern = '{}'

    pdf['.c1_01['] = '0' if f.F == 'cash' else 'Off'
    pdf['.c1_02['] = '0' if f.F == 'accrual' else 'Off'
    pdf['.c1_03['] = '0' if f.F == 'other' else 'Off'

    pdf['.c1_04[0]'] = 'Yes' if f.G else 'Off'
    pdf['.c1_04[1]'] = 'Off' if f.G else 'No'

    pdf['.c1_05[0]'] = '1' if f.H else 'Off'

    pdf['.c1_06[0]'] = 'Yes' if f.I else 'Off'
    pdf['.c1_06[1]'] = 'Off' if f.I else 'No'

    pdf['.c1_07[0]'] = 'Yes' if f.J else 'Off'
    pdf['.c1_07[1]'] = 'Off' if f.J else 'No'

    # Part I: Income

    pdf['.c1_08_0_['] = '1' if f.line1_box else 'Off'

    pdf.pattern = 'f1_{:03}['

    pdf[10], pdf[11] = zzstr(f.line1)

    n = 18
    for i in range(2, 8):
        pdf[n], pdf[n+1] = zzstr(getattr(f, 'line{}'.format(i)))
        n += 2

    # Part II: Expenses

    n = 30
    for attr in _expense_lines():
        pdf[n], pdf[n+1] = zzstr(getattr(f, attr))
        if n == 74:
            n = 84
        else:
            n += 2

    pdf[76], pdf[77] = zzstr(f.line28)
    pdf[78], pdf[79] = zzstr(f.line29)
    pdf[80], pdf[81] = zzstr(f.line30)
    pdf[82], pdf[83] = zzstr(f.line31)

    pdf.pattern = '{}'

    if f.line31 < zero:
        pdf['.c1_08['] = '1' if f.line32 == 'a' else 'Off'
        pdf['.c1_09['] = '1' if f.line32 == 'b' else 'Off'

    # Part III: Cost of Goods Sold

    pdf['.c2_01['] = '1' if f.line33 == 'a' else 'Off'
    pdf['.c2_02['] = '1' if f.line33 == 'b' else 'Off'
    pdf['.c2_03['] = '1' if f.line33 == 'c' else 'Off'

    pdf['.c2_04[0]'] = 'Yes' if f.line34 else 'Off'
    pdf['.c2_04[1]'] = 'Off' if f.line34 else 'No'

    pdf.pattern = 'f2_{:03}['

    n = 1
    for i in range(35, 43):
        pdf[n], pdf[n+1] = zzstr(getattr(f, 'line{}'.format(i)))
        n += 2

    # Part IV: Information on Your Vehicle
    # TODO

    # Part V: Other Expenses

    n = 23
    for text, value in f.Part_V:
        pdf[n] = text
        pdf[n+1], pdf[n+2] = zzstr(value)
        n += 3

    pdf[50], pdf[51] = zzstr(f.line48)
Esempio n. 32
0
def fill_out(form, pdf):
    f = form

    pdf.load('us.f940--{}.pdf'.format(f.form_version))
    pdf.pages = 1, 2

    if form.form_version == '2013':
        return _old_2013_fill_out(f, pdf)

    if form.form_version == '2012':
        return _old_2012_fill_out(f, pdf)

    pdf.pattern = '.TypeReturn[0].c1_{:02}[0]'

    pdf[1] = 'Report1' if f.type == 'a' else 'Off'
    pdf[2] = 'Report2' if f.type == 'b' else 'Off'
    pdf[3] = 'Report3' if f.type == 'c' else 'Off'
    pdf[4] = 'Report4' if f.type == 'd' else 'Off'

    pdf.pattern = '.c1_{:02}[0]'

    pdf[5] = '1' if f.line1b else 'Off'
    pdf[6] = '1' if f.line2 else 'Off'
    pdf[7] = '1' if f.line4a else 'Off'
    pdf[8] = '1' if f.line4b else 'Off'
    pdf[9] = '1' if f.line4c else 'Off'
    pdf[10] = '1' if f.line4d else 'Off'
    pdf[11] = '1' if f.line4e else 'Off'

    pdf.pattern = '.f1_{:02}[0]'

    for n, digit in enumerate(f.ein.replace('-', ''), 1):
        pdf[n] = digit

    pdf[10] = f.name
    pdf[11] = f.trade_name
    pdf[12] = f.address
    pdf[13] = f.city
    pdf[14] = f.state
    pdf[15] = f.zip
    # TODO: foreign address

    # pdf[23] = '1' if f.line4e else 'Off'  # delete?

    pdf[19] = f.line1a[0]
    pdf[20] = f.line1a[1]

    pdf[21], pdf[22] = zzstr(f.line3)
    pdf[23], pdf[24] = zzstr(f.line4)
    pdf[25], pdf[26] = zzstr(f.line5)
    pdf[27], pdf[28] = zzstr(f.line6)
    pdf[29], pdf[30] = zzstr(f.line7)
    pdf[31], pdf[32] = zzstr(f.line8)

    pdf[33], pdf[34] = zzstr(f.line9)
    pdf[35], pdf[36] = zzstr(f.line10)
    pdf[37], pdf[38] = zzstr(f.line11)

    pdf[39], pdf[40] = zzstr(f.line12)
    pdf[41], pdf[42] = zzstr(f.line13)
    pdf[43], pdf[44] = zzstr(f.line14)
    pdf[45], pdf[46] = zzstr(f.line15)

    pdf.pattern = '.f2_{:02}[0]'

    pdf[1] = f.name
    pdf[2] = f.ein

    # TODO: Part 5
    # TODO: Part 6 designee (but "No" checkbox is implemented below)

    pdf[16] = f.sign_name
    pdf[17] = f.sign_title
    pdf[18] = f.sign_phone

    pdf.pattern = '{}'

    pdf['.c2_01[1]'] = '2' if (not f.part6) else 'Off'
Esempio n. 33
0
def fill_out(form, pdf):
    f = form
    pdf.load('us.f1040sc--{}.pdf'.format(f.form_version))

    if f.form_version < u'2014':
        return fill_out_2013(form, pdf)

    pdf.pattern = 'f1_{:03}['

    pdf[1] = f.name
    pdf[2] = f.ssn

    pdf[3] = f.A
    pdf[4] = f.B
    pdf[5] = f.C
    pdf[6] = f.D

    pdf[7] = f.E_text1
    pdf[8] = f.E_text2
    pdf[9] = f.F_text

    pdf.pattern = '{}'

    pdf['.c1_01[0]'] = '1' if f.F == 'cash' else 'Off'
    pdf['.c1_01[1]'] = '2' if f.F == 'accrual' else 'Off'
    pdf['.c1_01[2]'] = '3' if f.F == 'other' else 'Off'

    pdf['.c1_02[0]'] = 'Yes' if f.G else 'Off'
    pdf['.c1_02[1]'] = 'Off' if f.G else 'No'

    pdf['.c1_03[0]'] = '1' if f.H else 'Off'

    pdf['.c1_04[0]'] = 'Yes' if f.I else 'Off'
    pdf['.c1_04[1]'] = 'Off' if f.I else 'No'

    pdf['.c1_05[0]'] = 'Yes' if f.J else 'Off'
    pdf['.c1_05[1]'] = 'Off' if f.J else 'No'

    # Part I: Income

    pdf['.c1_06[0]'] = '1' if f.line1_box else 'Off'

    pdf.pattern = 'f1_{:03}['

    pdf[10], pdf[11] = zzstr(f.line1)

    n = 12
    for i in range(2, 8):
        pdf[n], pdf[n+1] = zzstr(getattr(f, 'line{}'.format(i)))
        n += 2

    # Part II: Expenses

    n = 24
    for attr in _expense_lines(30):
        pdf[n], pdf[n+1] = zzstr(getattr(f, attr))
        # if n == 74:
        #     n = 84
        # else:
        n += 2

    pdf[78], pdf[79] = zzstr(f.line30)
    pdf[80], pdf[81] = zzstr(f.line31)

    pdf.pattern = '{}'

    if f.line31 < zero:
        pdf['.c1_08['] = '1' if f.line32 == 'a' else 'Off'
        pdf['.c1_09['] = '1' if f.line32 == 'b' else 'Off'
Esempio n. 34
0
 def pair(n, value):
     pdf[n], pdf[n + 1] = zzstr(value)
Esempio n. 35
0
 def pair(n, value):
     pdf[n], pdf[n + 1] = zzstr(value)
Esempio n. 36
0
 def pair(n, value):
     pdf[name(n)], pdf[name(n + 1)] = zzstr(value)
Esempio n. 37
0
def fill_out_2013_and_earlier(form, pdf):
    f = form

    pdf.load('us.f941--{}.pdf'.format(f.year))
    pdf.pages = 1, 2

    page = 1

    def name(n):
        return 'f{}_{:02}_0_[0]'.format(page, n)

    def pair(n, value):
        pdf[name(n)], pdf[name(n + 1)] = zzstr(value)

    for i in range(9):
        pdf[name(i + 1)] = f.ein.replace('-', '')[i:i + 1]

    pdf[name(16)] = str(f.line1)
    pdf[name(10)] = f.name
    pdf[name(11)] = f.trade_name
    pdf[name(12)] = f.address
    pdf[name(13)] = f.city
    pdf[name(14)] = f.state
    pdf[name(15)] = f.zip

    pdf['c1_1_0_[0]'] = 'Report1' if f.quarter == 1 else 'Off'
    pdf['c1_1_0_[1]'] = 'Report2' if f.quarter == 2 else 'Off'
    pdf['c1_1_0_[2]'] = 'Report3' if f.quarter == 3 else 'Off'
    pdf['c1_1_0_[3]'] = 'Report4' if f.quarter == 4 else 'Off'

    pair(17, f.line2)
    pair(19, f.line3)

    pdf['c1_5_0_[0]'] = '1' if f.line4 else 'Off'

    pair(21, f.line5a1)
    pair(23, f.line5a2)
    pair(25, f.line5b1)
    pair(27, f.line5b2)
    pair(29, f.line5c1)
    pair(31, f.line5c2)
    pair(33, f.line5d)
    if f.form_version < u'2013':
        pair(60, f.line5e)

    dollars, cents = zzstr(f.line6)
    pdf[name(105)] = dollars
    pdf[name(36)] = cents

    pair(37, f.line7)
    pair(39, f.line8)
    pair(41, f.line9)
    pair(54, f.line10)
    pair(56, f.line11)
    pair(45, f.line12a)

    pdf[name(47)] = str(f.line12b or '')

    pair(43, f.line13)
    pair(58, f.line14)
    pair(64, f.line15)

    page = 2

    pdf[name(75) if f.year < 2013 else 'd2_75_0_[0]'] = f.name
    pdf[name(14)] = f.ein

    pdf['c2_01_0_[0]'] = 'Chck1' if f.line16 == 'a' else 'Off'
    pdf['c2_01_0_[1]'] = 'Chck2' if f.line16 == 'b' else 'Off'
    pdf['c2_01_0_[2]'] = 'Chck3' if f.line16 == 'c' else 'Off'

    pdf.pattern = '.f2_{:02}_0_[0]'
    pdf[3], pdf[4] = zzstr(f.line16_month1)
    pdf[5], pdf[6] = zzstr(f.line16_month2)
    pdf[7], pdf[8] = zzstr(f.line16_month3)
    pdf[9], pdf[10] = zzstr(f.line16_total)

    # TODO: support Part 3
    # TODO: allow "yes" and further information for Part 4

    pdf.pattern = '{}'

    pdf['c2_06_0_[0]'] = 'Yes' if f.Part_4 else 'Off'
    pdf['c2_06_0_[1]'] = 'Off' if f.Part_4 else 'No'

    pdf[name(44)] = f.signer_name
    pdf[name(66)] = f.signer_title
    pdf[name(48)] = f.signer_phone
Esempio n. 38
0
def _old_2013_fill_out(f, pdf):
    pdf.pattern = 'topmostSubform[0].Page1[0].EntityArea[0].Text3{}[0]'
    for letter, digit in zip(' abcdefgh', f.ein.replace('-', '')):
        pdf[letter.strip()] = digit

    pdf.pattern = 'topmostSubform[0].Page1[0].EntityArea[0].Text{}[0]'
    pdf[5] = f.name
    pdf[6] = f.trade_name
    pdf[7] = f.address
    pdf[8] = f.city
    pdf[9] = f.state
    pdf[10] = f.zip
    # TODO: Foreign address

    pdf.pattern = 'topmostSubform[0].Page1[0].#subform[{}].Check_Box{}[0]'
    pdf[5, 23] = '1' if f.line4a else 'Off'
    pdf[5, 24] = '1' if f.line4b else 'Off'
    pdf[6, 25] = '1' if f.line4c else 'Off'
    pdf[6, 26] = '1' if f.line4d else 'Off'
    pdf.pattern = 'topmostSubform[0].Page1[0].Check_Box{}[0]'
    pdf[23] = '1' if f.line4e else 'Off'

    pdf.pattern = 'topmostSubform[0].Page1[0].Text{}[0]'
    pdf[16] = f.line1a[0]
    pdf[17] = f.line1a[1]
    # TODO: check marks on lines 1b and 2

    pdf['21'], pdf['21a'] = zzstr(f.line3)
    pdf['22'], pdf['22a'] = zzstr(f.line4)
    # TODO: check boxes on line 4
    pdf['28'], pdf['28a'] = zzstr(f.line5)
    pdf['29'], pdf['29a'] = zzstr(f.line6)
    pdf['500'], pdf['500a'] = zzstr(f.line7)
    pdf['31'], pdf['31a'] = zzstr(f.line8)

    pdf['32'], pdf['32a'] = zzstr(f.line9)
    pdf['33'], pdf['33a'] = zzstr(f.line10)
    pdf['34'], pdf['34a'] = zzstr(f.line11)

    pdf['35'], pdf['35a'] = zzstr(f.line12)
    pdf['36'], pdf['36a'] = zzstr(f.line13)
    pdf['37'], pdf['37a'] = zzstr(f.line14)
    pdf['38'], pdf['38a'] = zzstr(f.line15)

    pdf.pattern = 'topmostSubform[0].Page2[0].{}'

    pdf['Text41[0]'] = f.name
    pdf['Text42[0]'] = f.ein

    # TODO: Part 5
    # TODO: Part 6 designee

    pdf['p2-cb1[1]'] = 'Off' if f.part6 else '2'

    pdf.pattern = 'topmostSubform[0].Page2[0].Text{}[0]'
    pdf['59'] = f.sign_name
    pdf['61'] = f.sign_title
    pdf['64'] = f.sign_phone
Esempio n. 39
0
 def pair(n, value):
     pdf[name(n)], pdf[name(n + 1)] = zzstr(value)
Esempio n. 40
0
def fill_out(form, pdf):
    f = form
    pdf.load("us.f1040sc--{}.pdf".format(f.form_version))

    pdf.pattern = "f1_{:03}["

    pdf[1] = f.name
    pdf[2] = f.ssn

    pdf[3] = f.A
    pdf[4] = f.B
    pdf[5] = f.C
    pdf[6] = f.D

    pdf[7] = f.E_text1
    pdf[8] = f.E_text2
    pdf[9] = f.F_text

    pdf.pattern = "{}"

    pdf[".c1_01["] = "0" if f.F == "cash" else "Off"
    pdf[".c1_02["] = "0" if f.F == "accrual" else "Off"
    pdf[".c1_03["] = "0" if f.F == "other" else "Off"

    pdf[".c1_04[0]"] = "Yes" if f.G else "Off"
    pdf[".c1_04[1]"] = "Off" if f.G else "No"

    pdf[".c1_05[0]"] = "1" if f.H else "Off"

    pdf[".c1_06[0]"] = "Yes" if f.I else "Off"
    pdf[".c1_06[1]"] = "Off" if f.I else "No"

    pdf[".c1_07[0]"] = "Yes" if f.J else "Off"
    pdf[".c1_07[1]"] = "Off" if f.J else "No"

    # Part I: Income

    pdf[".c1_08_0_["] = "1" if f.line1_box else "Off"

    pdf.pattern = "f1_{:03}["

    pdf[10], pdf[11] = zzstr(f.line1)

    n = 18
    for i in range(2, 8):
        pdf[n], pdf[n + 1] = zzstr(getattr(f, "line{}".format(i)))
        n += 2

    # Part II: Expenses

    n = 30
    for attr in _expense_lines():
        pdf[n], pdf[n + 1] = zzstr(getattr(f, attr))
        if n == 74:
            n = 84
        else:
            n += 2

    pdf[76], pdf[77] = zzstr(f.line28)
    pdf[78], pdf[79] = zzstr(f.line29)
    pdf[80], pdf[81] = zzstr(f.line30)
    pdf[82], pdf[83] = zzstr(f.line31)

    pdf.pattern = "{}"

    if f.line31 < zero:
        pdf[".c1_08["] = "1" if f.line32 == "a" else "Off"
        pdf[".c1_09["] = "1" if f.line32 == "b" else "Off"

    # Part III: Cost of Goods Sold

    pdf[".c2_01["] = "1" if f.line33 == "a" else "Off"
    pdf[".c2_02["] = "1" if f.line33 == "b" else "Off"
    pdf[".c2_03["] = "1" if f.line33 == "c" else "Off"

    pdf[".c2_04[0]"] = "Yes" if f.line34 else "Off"
    pdf[".c2_04[1]"] = "Off" if f.line34 else "No"

    pdf.pattern = "f2_{:03}["

    n = 1
    for i in range(35, 43):
        pdf[n], pdf[n + 1] = zzstr(getattr(f, "line{}".format(i)))
        n += 2

    # Part IV: Information on Your Vehicle
    # TODO

    # Part V: Other Expenses

    n = 23
    for text, value in f.Part_V:
        pdf[n] = text
        pdf[n + 1], pdf[n + 2] = zzstr(value)
        n += 3

    pdf[50], pdf[51] = zzstr(f.line48)
Esempio n. 41
0
File: f940.py Progetto: B-Rich/luca
def fill_out(form, pdf):
    f = form

    pdf.load("us.f940--{}.pdf".format(f.form_version))
    pdf.pages = 1, 2

    if form.form_version == "2012":
        return _old_2012_fill_out(f, pdf)

    pdf.pattern = "topmostSubform[0].Page1[0].EntityArea[0].Text3{}[0]"
    for letter, digit in zip(" abcdefgh", f.ein.replace("-", "")):
        pdf[letter.strip()] = digit

    pdf.pattern = "topmostSubform[0].Page1[0].EntityArea[0].Text{}[0]"
    pdf[5] = f.name
    pdf[6] = f.trade_name
    pdf[7] = f.address
    pdf[8] = f.city
    pdf[9] = f.state
    pdf[10] = f.zip
    # TODO: Foreign address

    pdf.pattern = "topmostSubform[0].Page1[0].#subform[{}].Check_Box{}[0]"
    pdf[5, 23] = "1" if f.line4a else "Off"
    pdf[5, 24] = "1" if f.line4b else "Off"
    pdf[6, 25] = "1" if f.line4c else "Off"
    pdf[6, 26] = "1" if f.line4d else "Off"
    pdf.pattern = "topmostSubform[0].Page1[0].Check_Box{}[0]"
    pdf[23] = "1" if f.line4e else "Off"

    pdf.pattern = "topmostSubform[0].Page1[0].Text{}[0]"
    pdf[16] = f.line1a[0]
    pdf[17] = f.line1a[1]
    # TODO: check marks on lines 1b and 2

    pdf["21"], pdf["21a"] = zzstr(f.line3)
    pdf["22"], pdf["22a"] = zzstr(f.line4)
    # TODO: check boxes on line 4
    pdf["28"], pdf["28a"] = zzstr(f.line5)
    pdf["29"], pdf["29a"] = zzstr(f.line6)
    pdf["500"], pdf["500a"] = zzstr(f.line7)
    pdf["31"], pdf["31a"] = zzstr(f.line8)

    pdf["32"], pdf["32a"] = zzstr(f.line9)
    pdf["33"], pdf["33a"] = zzstr(f.line10)
    pdf["34"], pdf["34a"] = zzstr(f.line11)

    pdf["35"], pdf["35a"] = zzstr(f.line12)
    pdf["36"], pdf["36a"] = zzstr(f.line13)
    pdf["37"], pdf["37a"] = zzstr(f.line14)
    pdf["38"], pdf["38a"] = zzstr(f.line15)

    pdf.pattern = "topmostSubform[0].Page2[0].{}"

    pdf["Text41[0]"] = f.name
    pdf["Text42[0]"] = f.ein

    # TODO: Part 5
    # TODO: Part 6 designee

    pdf["p2-cb1[1]"] = "Off" if f.part6 else "2"

    pdf.pattern = "topmostSubform[0].Page2[0].Text{}[0]"
    pdf["59"] = f.sign_name
    pdf["61"] = f.sign_title
    pdf["64"] = f.sign_phone