Merge pull request #24414 from Alchez/dev-irs-1099-year
fix: use supplied year for IRS 1099 forms
diff --git a/erpnext/regional/print_format/irs_1099_form/irs_1099_form.json b/erpnext/regional/print_format/irs_1099_form/irs_1099_form.json
index ce8c44a..e59700f 100644
--- a/erpnext/regional/print_format/irs_1099_form/irs_1099_form.json
+++ b/erpnext/regional/print_format/irs_1099_form/irs_1099_form.json
@@ -1,23 +1,26 @@
-[
- {
- "align_labels_right": 0,
- "css": "",
- "custom_format": 1,
- "default_print_language": "en",
- "disabled": 0,
- "doc_type": "Supplier",
- "docstatus": 0,
- "doctype": "Print Format",
- "font": "Default",
- "format_data": "[{\"fieldname\": \"print_heading_template\", \"fieldtype\": \"Custom HTML\", \"options\": \"<div class=\\\"print-heading\\\">\\t\\t\\t\\t<h2>TAX Invoice<br><small>{{ doc.name }}</small>\\t\\t\\t\\t</h2></div>\"}, {\"fieldtype\": \"Section Break\", \"label\": \"\"}, {\"fieldtype\": \"Column Break\"}, {\"print_hide\": 0, \"fieldname\": \"customer_name\", \"label\": \"Customer Name\"}, {\"print_hide\": 0, \"fieldname\": \"customer_name_in_arabic\", \"label\": \"Customer Name in Arabic\"}, {\"fieldtype\": \"Column Break\"}, {\"print_hide\": 0, \"fieldname\": \"posting_date\", \"label\": \"Date\"}, {\"fieldtype\": \"Section Break\", \"label\": \"Address\"}, {\"fieldtype\": \"Column Break\"}, {\"print_hide\": 0, \"fieldname\": \"company\", \"label\": \"Company\"}, {\"print_hide\": 0, \"fieldname\": \"company_trn\", \"label\": \"Company TRN\"}, {\"fieldtype\": \"Column Break\"}, {\"print_hide\": 0, \"fieldname\": \"company_address_display\", \"label\": \"Company Address\"}, {\"fieldtype\": \"Section Break\", \"label\": \"\"}, {\"fieldtype\": \"Column Break\"}, {\"visible_columns\": [{\"print_hide\": 0, \"fieldname\": \"item_code\", \"print_width\": \"\"}, {\"print_hide\": 0, \"fieldname\": \"description\", \"print_width\": \"200px\"}, {\"print_hide\": 0, \"fieldname\": \"uom\", \"print_width\": \"\"}, {\"print_hide\": 0, \"fieldname\": \"tax_code\", \"print_width\": \"\"}], \"print_hide\": 0, \"fieldname\": \"items\", \"label\": \"Items\"}, {\"fieldtype\": \"Section Break\", \"label\": \"\"}, {\"fieldtype\": \"Column Break\"}, {\"fieldtype\": \"Column Break\"}, {\"print_hide\": 0, \"fieldname\": \"total\", \"label\": \"Total\"}, {\"fieldtype\": \"Section Break\", \"label\": \"\"}, {\"fieldtype\": \"Column Break\"}, {\"visible_columns\": [{\"print_hide\": 0, \"fieldname\": \"charge_type\", \"print_width\": \"\"}, {\"print_hide\": 0, \"fieldname\": \"row_id\", \"print_width\": \"\"}, {\"print_hide\": 0, \"fieldname\": \"account_head\", \"print_width\": \"\"}, {\"print_hide\": 0, \"fieldname\": \"cost_center\", \"print_width\": \"\"}, {\"print_hide\": 0, \"fieldname\": \"description\", \"print_width\": \"300px\"}, {\"print_hide\": 0, \"fieldname\": \"rate\", \"print_width\": \"\"}, {\"print_hide\": 0, \"fieldname\": \"tax_amount\", \"print_width\": \"\"}, {\"print_hide\": 0, \"fieldname\": \"total\", \"print_width\": \"\"}, {\"print_hide\": 0, \"fieldname\": \"tax_amount_after_discount_amount\", \"print_width\": \"\"}, {\"print_hide\": 0, \"fieldname\": \"base_tax_amount\", \"print_width\": \"\"}, {\"print_hide\": 0, \"fieldname\": \"base_total\", \"print_width\": \"\"}, {\"print_hide\": 0, \"fieldname\": \"base_tax_amount_after_discount_amount\", \"print_width\": \"\"}, {\"print_hide\": 0, \"fieldname\": \"item_wise_tax_detail\", \"print_width\": \"\"}], \"print_hide\": 0, \"fieldname\": \"taxes\", \"label\": \"Sales Taxes and Charges\"}, {\"fieldtype\": \"Section Break\", \"label\": \"\"}, {\"fieldtype\": \"Column Break\"}, {\"fieldtype\": \"Column Break\"}, {\"print_hide\": 0, \"fieldname\": \"grand_total\", \"label\": \"Grand Total\"}, {\"print_hide\": 0, \"fieldname\": \"rounded_total\", \"label\": \"Rounded Total\"}, {\"print_hide\": 0, \"fieldname\": \"in_words\", \"align\": \"left\", \"label\": \"In Words\"}]",
- "html": "<div id=\"copy_a\" style=\"position: relative; top:0cm; width:17cm;height:28.0cm;\">\n <table>\n <tbody>\n <tr style=\"height:12mm\">\n <td class=\"tbs rbs lbs bbs\" style=\"width:86mm\" colspan=\"4\"; rowspan=\"3\">PAYER'S name, street address, city or town, state or province, country, ZIP<br>or foreign postal code, and telephone no.<br>\n\t{{company if company else \"\"}}<br>\n\t{{payer_street_address if payer_street_address else \"\"}}\n</td>\n <td class=\"tbs rbs lbs bbs\" style=\"width:35mm\">1 Rents</td>\n <td class=\"tbs rbs lbs bbs\" style=\"width:25mm\" rowspan=\"2\">OMB No. 1545-0115<br><yone>20</yone><ytwo>18</ytwo><br>Form 1099-MISC</td>\n <td class=\"lbs bbs\" style=\"width:38mm\" colspan=\"2\" rowspan=\"2\">Miscellaneous Income</td>\n </tr>\n <tr style=\"height:12mm\">\n <td class=\"tbs rbs lbs bbs\" style=\"width:35mm\">2 Royalties</td>\n </tr>\n <tr style=\"height:9mm\">\n <td class=\"tbs rbs lbs bbs\" >3 Other Income<br>\n\t{{payments if payments else \"\"}}\n\t</td>\n <td class=\"tbs rbs lbs bbs\" colspan=\"2\">4 Federal Income tax withheld</td>\n <td class=\"tbs lbs bbs\" style=\"width:29mm\" rowspan=\"2\">Copy A<br>For<br>Internal Revenue<br>Service Center<br><br>File with Form 1096</td>\n </tr>\n <tr style=\"height:16mm\">\n <td class=\"tbs rbs lbs bbs\" style=\"width:43mm\">PAYER'S TIN<br>\n\t{{company_tin if company_tin else \"\"}}\n\t</td>\n \n <td class=\"tbs rbs lbs bbs\" colspan=\"3\">RECIPIENT'S TIN<br><br>\n {{tax_id if tax_id else \"None\"}}\n</td>\n <td class=\"tbs rbs lbs bbs\" >Fishing boat proceeds</td>\n <td class=\"tbs rbs lbs bbs\" colspan=\"2\">6 Medical and health care payments</td>\n </tr>\n <tr style=\"height:12mm\">\n <td class=\"tbs rbs lbs bbs\" colspan=\"4\">RECIPIENT'S name <br>\n {{supplier if supplier else \"\"}}\n </td>\n <td class=\"tbs rbs lbs bbs\" >7 Nonemployee compensation<br>\n\t</td> \n <td class=\"tbs rbs lbs bbs\" colspan=\"2\">Substitute payments in lieu of dividends or interest</td>\n <td class=\"tbs lbs bbs\" rowspan=\"6\">For Privacy Act<br>and Paperwork<br>Reduction Act<br>Notice, see the<br>2018 General<br>Instructions for<br>Certain<br>Information<br>Returns.</td>\n </tr>\n <tr style=\"height:6mm\">\n <td class=\"tbs rbs lbs bbs\" colspan=\"4\" rowspan=\"2\">Street address (including apt. no.)<br>\n\t{{recipient_street_address if recipient_street_address else \"\"}}\n\t</td>\n <td class=\"tbs rbs lbs bbs\" >$___________</td>\n <td class=\"tbs rbs lbs bbs\" colspan=\"2\">$___________</td>\n </tr>\n <tr style=\"height:7mm\">\n <td class=\"tbs rbs lbs bbs\" rowspan=\"2\">9 Payer made direct sales of<br>$5,000 or more of consumer products<br>to a buyer<br>(recipient) for resale</td>\n <td class=\"tbs rbs lbs\" colspan=\"2\">10 Crop insurance proceeds</td>\n </tr>\n <tr style=\"height:5mm\">\n <td class=\"tbs rbs lbs bbs\" colspan=\"4\" rowspan=\"2\">City or town, state or province, country, and ZIP or foreign postal code<br>\n\t{{recipient_city_state if recipient_city_state else \"\"}}\n</td>\n <td style=\"vertical-align:bottom\" class=\" rbs lbs bbs\" colspan=\"2\">$___________</td>\n </tr>\n <tr style=\"height:9mm\">\n <td class=\"tbs rbs lbs bbs\" >11</td>\n <td class=\"tbs rbs lbs bbs\" colspan=2>12</td>\n </tr>\n <tr style=\"height:13mm\">\n <td class=\"tbs rbs lbs bbs\" colspan=\"2\">Account number (see instructions)</td>\n <td class=\"tbs rbs lbs bbs\" style=\"width:16mm\">FACTA filing<br>requirement</td>\n <td class=\"tbs rbs lbs bbs\" style=\"width:14mm\">2nd TIN not.</td>\n <td class=\"tbs rbs lbs bbs\" >13 Excess golden parachute payments<br>$___________</td>\n <td class=\"tbs rbs lbs bbs\" colspan=\"2\">14 Gross proceeds paid to an<br>attorney<br>$___________</td>\n </tr>\n <tr style=\"height:12mm\">\n <td class=\"tbs rbs lbs \" >15a Section 409A deferrals</td>\n <td class=\"tbs rbs lbs \" colspan=\"3\">15b Section 409 income</td>\n <td class=\"tbs rbs lbs \" >16 State tax withheld</td>\n <td class=\"tbs rbs lbs \" colspan=\"2\">17 State/Payer's state no.</td>\n <td class=\"tbs lbs\" >18 State income</td>\n </tr>\n <tr>\n <td class=\"lbs rbs bbs\">$</td>\n <td class=\"lbs rbs bbs\" colspan=\"3\">$</td>\n <td class=\"lbs rbs bbs tbd\">$</td>\n <td class=\"lbs rbs bbs tbd\" colspan=\"2\"></td>\n <td class=\"lbs bbs tbd\">$</td>\n </tr>\n\n <tr style=\"height:8mm\">\n <td class=\"tbs\" colspan=\"8\">Form 1099-MISC Cat. No. 14425J www.irs.gov/Form1099MISC Department of the Treasury - Internal Revenue Service</td>\n </tr>\n\n </tbody>\n</table>\n</div>\n<div id=\"copy_1\" style=\"position: relative; top:0cm; width:17cm;height:28.0cm;\">\n <table>\n <tbody>\n <tr style=\"height:12mm\">\n <td class=\"tbs rbs lbs bbs\" style=\"width:86mm\" colspan=\"4\"; rowspan=\"3\">PAYER'S name, street address, city or town, state or province, country, ZIP<br>or foreign postal code, and telephone no.<br>\n {{company if company else \"\"}}<br>\n \t{{payer_street_address if payer_street_address else \"\"}}</td>\n <td class=\"tbs rbs lbs bbs\" style=\"width:35mm\">1 Rents</td>\n <td class=\"tbs rbs lbs bbs\" style=\"width:25mm\" rowspan=\"2\">OMB No. 1545-0115<br><yone>20</yone><ytwo>18</ytwo><br>Form 1099-MISC</td>\n <td class=\"lbs bbs\" style=\"width:38mm\" colspan=\"2\" rowspan=\"2\">Miscellaneous Income</td>\n </tr>\n <tr style=\"height:12mm\">\n <td class=\"tbs rbs lbs bbs\" style=\"width:35mm\">2 Royalties</td>\n </tr>\n <tr style=\"height:9mm\">\n <td class=\"tbs rbs lbs bbs\" >3 Other Income<br>\n\t{{payments if payments else \"\"}}\n\t</td>\n <td class=\"tbs rbs lbs bbs\" colspan=\"2\">4 Federal Income tax withheld</td>\n <td class=\"tbs lbs bbs\" style=\"width:29mm\" rowspan=\"2\">Copy 1<br>For State Tax<br>Department</td>\n </tr>\n <tr style=\"height:16mm\">\n <td class=\"tbs rbs lbs bbs\" style=\"width:43mm\">PAYER'S TIN<br>\n\t{{company_tin if company_tin else \"\"}}\n\t</td>\n <td class=\"tbs rbs lbs bbs\" colspan=\"3\">RECIPIENT'S TIN<br>\n\t{{tax_id if tax_id else \"\"}}\n\t</td>\n <td class=\"tbs rbs lbs bbs\" >Fishing boat proceeds</td>\n <td class=\"tbs rbs lbs bbs\" colspan=\"2\">6 Medical and health care payments</td>\n </tr>\n <tr style=\"height:12mm\">\n <td class=\"tbs rbs lbs bbs\" colspan=\"4\">RECIPIENT'S name</td>\n {{supplier if supplier else \"\"}}\n <td class=\"tbs rbs lbs bbs\" >7 Nonemployee compensation<br>\n\t</td>\n <td class=\"tbs rbs lbs bbs\" colspan=\"2\">Substitute payments in lieu of dividends or interest</td>\n <td class=\"tbs lbs bbs\" rowspan=\"6\"></td>\n </tr>\n <tr style=\"height:6mm\">\n <td class=\"tbs rbs lbs bbs\" colspan=\"4\" rowspan=\"2\">Street address (including apt. no.)<br>\n\t{{recipient_street_address if recipient_street_address else \"\"}}\n\t</td>\n <td class=\"tbs rbs lbs bbs\" >$___________</td>\n <td class=\"tbs rbs lbs bbs\" colspan=\"2\">$___________</td>\n </tr>\n <tr style=\"height:7mm\">\n <td class=\"tbs rbs lbs bbs\" rowspan=\"2\">9 Payer made direct sales of<br>$5,000 or more of consumer products<br>to a buyer<br>(recipient) for resale</td>\n <td class=\"tbs rbs lbs\" colspan=\"2\">10 Crop insurance proceeds</td>\n </tr>\n <tr style=\"height:5mm\">\n <td class=\"tbs rbs lbs bbs\" colspan=\"4\" rowspan=\"2\">City or town, state or province, country, and ZIP or foreign postal code<br>\n\t{{recipient_city_state if recipient_city_state else \"\"}}\n\t</td>\n <td style=\"vertical-align:bottom\" class=\" rbs lbs bbs\" colspan=\"2\">$___________</td>\n </tr>\n <tr style=\"height:9mm\">\n <td class=\"tbs rbs lbs bbs\" >11</td>\n <td class=\"tbs rbs lbs bbs\" colspan=2>12</td>\n </tr>\n <tr style=\"height:13mm\">\n <td class=\"tbs rbs lbs bbs\" colspan=\"2\">Account number (see instructions)</td>\n <td class=\"tbs rbs lbs bbs\" style=\"width:16mm\">FACTA filing<br>requirement</td>\n <td class=\"tbs rbs lbs bbs\" style=\"width:14mm\">2nd TIN not.</td>\n <td class=\"tbs rbs lbs bbs\" >13 Excess golden parachute payments<br>$___________</td>\n <td class=\"tbs rbs lbs bbs\" colspan=\"2\">14 Gross proceeds paid to an<br>attorney<br>$___________</td>\n </tr>\n <tr style=\"height:12mm\">\n <td class=\"tbs rbs lbs \" >15a Section 409A deferrals</td>\n <td class=\"tbs rbs lbs \" colspan=\"3\">15b Section 409 income</td>\n <td class=\"tbs rbs lbs \" >16 State tax withheld</td>\n <td class=\"tbs rbs lbs \" colspan=\"2\">17 State/Payer's state no.</td>\n <td class=\"tbs lbs\" >18 State income</td>\n </tr>\n <tr>\n <td class=\"lbs rbs bbs\">$</td>\n <td class=\"lbs rbs bbs\" colspan=\"3\">$</td>\n <td class=\"lbs rbs bbs tbd\">$</td>\n <td class=\"lbs rbs bbs tbd\" colspan=\"2\"></td>\n <td class=\"lbs bbs tbd\">$</td>\n </tr>\n\n <tr style=\"height:8mm\">\n <td class=\"tbs\" colspan=\"8\">Form 1099-MISC Cat. No. 14425J www.irs.gov/Form1099MISC Department of the Treasury - Internal Revenue Service</td>\n </tr>\n\n </tbody>\n</table>\n</div>\n<style>\nbody {\n font-family: 'Helvetica', sans-serif;\n font-size: 5.66pt;\n}\nyone {\n font-family: 'Helvetica', sans-serif;\n font-size: 14pt;\n color: black;\n -webkit-text-fill-color: white; /* Will override color (regardless of order) */\n -webkit-text-stroke-width: 1px;\n -webkit-text-stroke-color: black;\n}\nytwo {\n font-family: 'Helvetica', sans-serif;\n font-size: 14pt;\n color: black;\n -webkit-text-stroke-width: 1px;\n -webkit-text-stroke-color: black;\n}\n\ntable, th, td {\n font-family: 'Helvetica', sans-serif;\n font-size: 5.66pt;\n border: none;\n}\n\n.tbs {\n border-top: 1px solid black;\n}\n\n.bbs {\n border-bottom: 1px solid black;\n}\n.lbs {\n border-left: 1px solid black;\n}\n.rbs {\n border-right: 1px solid black;\n}\n.allBorder {\n border-top: 1px solid black;\n border-right: 1px solid black;\n border-left: 1px solid black;\n borter-bottom: 1px solid black;\n}\n.bottomBorderOnlyDashed {\n\tborder-bottom: 1px dashed black;\n}\n.tbd {\n\tborder-top: 1px dashed black;\n}\n.address {\n\tvertical-align: bottom;\n}\n</style>",
- "line_breaks": 0,
- "modified": "2018-10-08 14:56:56.912851",
- "module": "Regional",
- "name": "IRS 1099 Form",
- "print_format_builder": 1,
- "print_format_type": "Server",
- "show_section_headings": 0,
- "standard": "No"
- }
-]
+{
+ "align_labels_right": 0,
+ "creation": "2020-11-09 16:01:26.096002",
+ "css": "",
+ "custom_format": 1,
+ "default_print_language": "en",
+ "disabled": 0,
+ "doc_type": "Supplier",
+ "docstatus": 0,
+ "doctype": "Print Format",
+ "font": "Default",
+ "format_data": "[{\"fieldname\": \"print_heading_template\", \"fieldtype\": \"Custom HTML\", \"options\": \"<div class=\\\"print-heading\\\">\\t\\t\\t\\t<h2>TAX Invoice<br><small>{{ doc.name }}</small>\\t\\t\\t\\t</h2></div>\"}, {\"fieldtype\": \"Section Break\", \"label\": \"\"}, {\"fieldtype\": \"Column Break\"}, {\"print_hide\": 0, \"fieldname\": \"customer_name\", \"label\": \"Customer Name\"}, {\"print_hide\": 0, \"fieldname\": \"customer_name_in_arabic\", \"label\": \"Customer Name in Arabic\"}, {\"fieldtype\": \"Column Break\"}, {\"print_hide\": 0, \"fieldname\": \"posting_date\", \"label\": \"Date\"}, {\"fieldtype\": \"Section Break\", \"label\": \"Address\"}, {\"fieldtype\": \"Column Break\"}, {\"print_hide\": 0, \"fieldname\": \"company\", \"label\": \"Company\"}, {\"print_hide\": 0, \"fieldname\": \"company_trn\", \"label\": \"Company TRN\"}, {\"fieldtype\": \"Column Break\"}, {\"print_hide\": 0, \"fieldname\": \"company_address_display\", \"label\": \"Company Address\"}, {\"fieldtype\": \"Section Break\", \"label\": \"\"}, {\"fieldtype\": \"Column Break\"}, {\"visible_columns\": [{\"print_hide\": 0, \"fieldname\": \"item_code\", \"print_width\": \"\"}, {\"print_hide\": 0, \"fieldname\": \"description\", \"print_width\": \"200px\"}, {\"print_hide\": 0, \"fieldname\": \"uom\", \"print_width\": \"\"}, {\"print_hide\": 0, \"fieldname\": \"tax_code\", \"print_width\": \"\"}], \"print_hide\": 0, \"fieldname\": \"items\", \"label\": \"Items\"}, {\"fieldtype\": \"Section Break\", \"label\": \"\"}, {\"fieldtype\": \"Column Break\"}, {\"fieldtype\": \"Column Break\"}, {\"print_hide\": 0, \"fieldname\": \"total\", \"label\": \"Total\"}, {\"fieldtype\": \"Section Break\", \"label\": \"\"}, {\"fieldtype\": \"Column Break\"}, {\"visible_columns\": [{\"print_hide\": 0, \"fieldname\": \"charge_type\", \"print_width\": \"\"}, {\"print_hide\": 0, \"fieldname\": \"row_id\", \"print_width\": \"\"}, {\"print_hide\": 0, \"fieldname\": \"account_head\", \"print_width\": \"\"}, {\"print_hide\": 0, \"fieldname\": \"cost_center\", \"print_width\": \"\"}, {\"print_hide\": 0, \"fieldname\": \"description\", \"print_width\": \"300px\"}, {\"print_hide\": 0, \"fieldname\": \"rate\", \"print_width\": \"\"}, {\"print_hide\": 0, \"fieldname\": \"tax_amount\", \"print_width\": \"\"}, {\"print_hide\": 0, \"fieldname\": \"total\", \"print_width\": \"\"}, {\"print_hide\": 0, \"fieldname\": \"tax_amount_after_discount_amount\", \"print_width\": \"\"}, {\"print_hide\": 0, \"fieldname\": \"base_tax_amount\", \"print_width\": \"\"}, {\"print_hide\": 0, \"fieldname\": \"base_total\", \"print_width\": \"\"}, {\"print_hide\": 0, \"fieldname\": \"base_tax_amount_after_discount_amount\", \"print_width\": \"\"}, {\"print_hide\": 0, \"fieldname\": \"item_wise_tax_detail\", \"print_width\": \"\"}], \"print_hide\": 0, \"fieldname\": \"taxes\", \"label\": \"Sales Taxes and Charges\"}, {\"fieldtype\": \"Section Break\", \"label\": \"\"}, {\"fieldtype\": \"Column Break\"}, {\"fieldtype\": \"Column Break\"}, {\"print_hide\": 0, \"fieldname\": \"grand_total\", \"label\": \"Grand Total\"}, {\"print_hide\": 0, \"fieldname\": \"rounded_total\", \"label\": \"Rounded Total\"}, {\"print_hide\": 0, \"fieldname\": \"in_words\", \"align\": \"left\", \"label\": \"In Words\"}]",
+ "html": "<div id=\"copy_a\" style=\"position: relative; top:0cm; width:17cm;height:28.0cm;\">\n <table>\n <tbody>\n <tr style=\"height:12mm\">\n <td class=\"tbs rbs lbs bbs\" style=\"width:86mm\" colspan=\"4\" ; rowspan=\"3\">PAYER'S name, street address,\n city or town, state or province, country, ZIP<br>or foreign postal code, and telephone no.<br>\n {{ company or \"\" }}<br>\n {{ payer_street_address or \"\" }}\n </td>\n <td class=\"tbs rbs lbs bbs\" style=\"width:35mm\">1 Rents</td>\n <td class=\"tbs rbs lbs bbs\" style=\"width:25mm\" rowspan=\"2\">OMB No. 1545-0115<br>\n <yone>{{ fiscal_year[:2] }}</yone>\n <ytwo>{{ fiscal_year[-2:] }}</ytwo><br>Form 1099-MISC\n </td>\n <td class=\"lbs bbs\" style=\"width:38mm\" colspan=\"2\" rowspan=\"2\">Miscellaneous Income</td>\n </tr>\n <tr style=\"height:12mm\">\n <td class=\"tbs rbs lbs bbs\" style=\"width:35mm\">2 Royalties</td>\n </tr>\n <tr style=\"height:9mm\">\n <td class=\"tbs rbs lbs bbs\">3 Other Income<br>{{ payments or \"\" }}</td>\n <td class=\"tbs rbs lbs bbs\" colspan=\"2\">4 Federal Income tax withheld</td>\n <td class=\"tbs lbs bbs\" style=\"width:29mm\" rowspan=\"2\">Copy A<br>For<br>Internal Revenue<br>Service\n Center<br><br>File with Form 1096</td>\n </tr>\n <tr style=\"height:16mm\">\n <td class=\"tbs rbs lbs bbs\" style=\"width:43mm\">PAYER'S TIN<br>{{ company_tin or \"\" }}</td>\n\n <td class=\"tbs rbs lbs bbs\" colspan=\"3\">RECIPIENT'S TIN<br><br>{{ tax_id or \"None\" }}</td>\n <td class=\"tbs rbs lbs bbs\">Fishing boat proceeds</td>\n <td class=\"tbs rbs lbs bbs\" colspan=\"2\">6 Medical and health care payments</td>\n </tr>\n <tr style=\"height:12mm\">\n <td class=\"tbs rbs lbs bbs\" colspan=\"4\">RECIPIENT'S name <br>{{ supplier or \"\" }}</td>\n <td class=\"tbs rbs lbs bbs\">7 Nonemployee compensation<br>\n </td>\n <td class=\"tbs rbs lbs bbs\" colspan=\"2\">Substitute payments in lieu of dividends or interest</td>\n <td class=\"tbs lbs bbs\" rowspan=\"6\">For Privacy Act<br>and Paperwork<br>Reduction Act<br>Notice, see\n the<br>2018 General<br>Instructions for<br>Certain<br>Information<br>Returns.</td>\n </tr>\n <tr style=\"height:6mm\">\n <td class=\"tbs rbs lbs bbs\" colspan=\"4\" rowspan=\"2\">Street address (including apt. no.)<br>\n {{ recipient_street_address or \"\" }}\n </td>\n <td class=\"tbs rbs lbs bbs\">$___________</td>\n <td class=\"tbs rbs lbs bbs\" colspan=\"2\">$___________</td>\n </tr>\n <tr style=\"height:7mm\">\n <td class=\"tbs rbs lbs bbs\" rowspan=\"2\">9 Payer made direct sales of<br>$5,000 or more of consumer\n products<br>to a buyer<br>(recipient) for resale</td>\n <td class=\"tbs rbs lbs\" colspan=\"2\">10 Crop insurance proceeds</td>\n </tr>\n <tr style=\"height:5mm\">\n <td class=\"tbs rbs lbs bbs\" colspan=\"4\" rowspan=\"2\">City or town, state or province, country, and ZIP or\n foreign postal code<br>\n {{ recipient_city_state or \"\" }}\n </td>\n <td style=\"vertical-align:bottom\" class=\" rbs lbs bbs\" colspan=\"2\">$___________</td>\n </tr>\n <tr style=\"height:9mm\">\n <td class=\"tbs rbs lbs bbs\">11</td>\n <td class=\"tbs rbs lbs bbs\" colspan=2>12</td>\n </tr>\n <tr style=\"height:13mm\">\n <td class=\"tbs rbs lbs bbs\" colspan=\"2\">Account number (see instructions)</td>\n <td class=\"tbs rbs lbs bbs\" style=\"width:16mm\">FACTA filing<br>requirement</td>\n <td class=\"tbs rbs lbs bbs\" style=\"width:14mm\">2nd TIN not.</td>\n <td class=\"tbs rbs lbs bbs\">13 Excess golden parachute payments<br>$___________</td>\n <td class=\"tbs rbs lbs bbs\" colspan=\"2\">14 Gross proceeds paid to an<br>attorney<br>$___________</td>\n </tr>\n <tr style=\"height:12mm\">\n <td class=\"tbs rbs lbs \">15a Section 409A deferrals</td>\n <td class=\"tbs rbs lbs \" colspan=\"3\">15b Section 409 income</td>\n <td class=\"tbs rbs lbs \">16 State tax withheld</td>\n <td class=\"tbs rbs lbs \" colspan=\"2\">17 State/Payer's state no.</td>\n <td class=\"tbs lbs\">18 State income</td>\n </tr>\n <tr>\n <td class=\"lbs rbs bbs\">$</td>\n <td class=\"lbs rbs bbs\" colspan=\"3\">$</td>\n <td class=\"lbs rbs bbs tbd\">$</td>\n <td class=\"lbs rbs bbs tbd\" colspan=\"2\"></td>\n <td class=\"lbs bbs tbd\">$</td>\n </tr>\n\n <tr style=\"height:8mm\">\n <td class=\"tbs\" colspan=\"8\">Form 1099-MISC Cat. No. 14425J www.irs.gov/Form1099MISC Department of the\n Treasury - Internal Revenue Service</td>\n </tr>\n\n </tbody>\n </table>\n</div>\n<div id=\"copy_1\" style=\"position: relative; top:0cm; width:17cm;height:28.0cm;\">\n <table>\n <tbody>\n <tr style=\"height:12mm\">\n <td class=\"tbs rbs lbs bbs\" style=\"width:86mm\" colspan=\"4\" ; rowspan=\"3\">PAYER'S name, street address,\n city or town, state or province, country, ZIP<br>or foreign postal code, and telephone no.<br>\n {{ company or \"\"}}<b r>\n {{ payer_street_address or \"\" }}\n </td>\n <td class=\"tbs rbs lbs bbs\" style=\"width:35mm\">1 Rents</td>\n <td class=\"tbs rbs lbs bbs\" style=\"width:25mm\" rowspan=\"2\">OMB No. 1545-0115<br>\n <yone>{{ fiscal_year[:2] }}</yone>\n <ytwo>{{ fiscal_year[-2:] }}</ytwo><br>Form 1099-MISC\n </td>\n <td class=\"lbs bbs\" style=\"width:38mm\" colspan=\"2\" rowspan=\"2\">Miscellaneous Income</td>\n </tr>\n <tr style=\"height:12mm\">\n <td class=\"tbs rbs lbs bbs\" style=\"width:35mm\">2 Royalties</td>\n </tr>\n <tr style=\"height:9mm\">\n <td class=\"tbs rbs lbs bbs\">3 Other Income<br>\n {{ payments or \"\" }}\n </td>\n <td class=\"tbs rbs lbs bbs\" colspan=\"2\">4 Federal Income tax withheld</td>\n <td class=\"tbs lbs bbs\" style=\"width:29mm\" rowspan=\"2\">Copy 1<br>For State Tax<br>Department</td>\n </tr>\n <tr style=\"height:16mm\">\n <td class=\"tbs rbs lbs bbs\" style=\"width:43mm\">PAYER'S TIN<br>\n {{ company_tin or \"\" }}\n </td>\n <td class=\"tbs rbs lbs bbs\" colspan=\"3\">RECIPIENT'S TIN<br>\n {{ tax_id or \"\" }}\n </td>\n <td class=\"tbs rbs lbs bbs\">Fishing boat proceeds</td>\n <td class=\"tbs rbs lbs bbs\" colspan=\"2\">6 Medical and health care payments</td>\n </tr>\n <tr style=\"height:12mm\">\n <td class=\"tbs rbs lbs bbs\" colspan=\"4\">RECIPIENT'S name</td>\n {{ supplier or \"\" }}\n <td class=\"tbs rbs lbs bbs\">7 Nonemployee compensation<br>\n </td>\n <td class=\"tbs rbs lbs bbs\" colspan=\"2\">Substitute payments in lieu of dividends or interest</td>\n <td class=\"tbs lbs bbs\" rowspan=\"6\"></td>\n </tr>\n <tr style=\"height:6mm\">\n <td class=\"tbs rbs lbs bbs\" colspan=\"4\" rowspan=\"2\">Street address (including apt. no.)<br>\n {{ recipient_street_address or \"\" }}\n </td>\n <td class=\"tbs rbs lbs bbs\">$___________</td>\n <td class=\"tbs rbs lbs bbs\" colspan=\"2\">$___________</td>\n </tr>\n <tr style=\"height:7mm\">\n <td class=\"tbs rbs lbs bbs\" rowspan=\"2\">9 Payer made direct sales of<br>$5,000 or more of consumer\n products<br>to a buyer<br>(recipient) for resale</td>\n <td class=\"tbs rbs lbs\" colspan=\"2\">10 Crop insurance proceeds</td>\n </tr>\n <tr style=\"height:5mm\">\n <td class=\"tbs rbs lbs bbs\" colspan=\"4\" rowspan=\"2\">City or town, state or province, country, and ZIP or\n foreign postal code<br>\n {{ recipient_city_state or \"\" }}\n </td>\n <td style=\"vertical-align:bottom\" class=\" rbs lbs bbs\" colspan=\"2\">$___________</td>\n </tr>\n <tr style=\"height:9mm\">\n <td class=\"tbs rbs lbs bbs\">11</td>\n <td class=\"tbs rbs lbs bbs\" colspan=2>12</td>\n </tr>\n <tr style=\"height:13mm\">\n <td class=\"tbs rbs lbs bbs\" colspan=\"2\">Account number (see instructions)</td>\n <td class=\"tbs rbs lbs bbs\" style=\"width:16mm\">FACTA filing<br>requirement</td>\n <td class=\"tbs rbs lbs bbs\" style=\"width:14mm\">2nd TIN not.</td>\n <td class=\"tbs rbs lbs bbs\">13 Excess golden parachute payments<br>$___________</td>\n <td class=\"tbs rbs lbs bbs\" colspan=\"2\">14 Gross proceeds paid to an<br>attorney<br>$___________</td>\n </tr>\n <tr style=\"height:12mm\">\n <td class=\"tbs rbs lbs \">15a Section 409A deferrals</td>\n <td class=\"tbs rbs lbs \" colspan=\"3\">15b Section 409 income</td>\n <td class=\"tbs rbs lbs \">16 State tax withheld</td>\n <td class=\"tbs rbs lbs \" colspan=\"2\">17 State/Payer's state no.</td>\n <td class=\"tbs lbs\">18 State income</td>\n </tr>\n <tr>\n <td class=\"lbs rbs bbs\">$</td>\n <td class=\"lbs rbs bbs\" colspan=\"3\">$</td>\n <td class=\"lbs rbs bbs tbd\">$</td>\n <td class=\"lbs rbs bbs tbd\" colspan=\"2\"></td>\n <td class=\"lbs bbs tbd\">$</td>\n </tr>\n\n <tr style=\"height:8mm\">\n <td class=\"tbs\" colspan=\"8\">Form 1099-MISC Cat. No. 14425J www.irs.gov/Form1099MISC Department of the\n Treasury - Internal Revenue Service</td>\n </tr>\n\n </tbody>\n </table>\n</div>\n<style>\n body {\n font-family: 'Helvetica', sans-serif;\n font-size: 5.66pt;\n }\n\n yone {\n font-family: 'Helvetica', sans-serif;\n font-size: 14pt;\n color: black;\n -webkit-text-fill-color: white;\n /* Will override color (regardless of order) */\n -webkit-text-stroke-width: 1px;\n -webkit-text-stroke-color: black;\n }\n\n ytwo {\n font-family: 'Helvetica', sans-serif;\n font-size: 14pt;\n color: black;\n -webkit-text-stroke-width: 1px;\n -webkit-text-stroke-color: black;\n }\n\n table,\n th,\n td {\n font-family: 'Helvetica', sans-serif;\n font-size: 5.66pt;\n border: none;\n }\n\n .tbs {\n border-top: 1px solid black;\n }\n\n .bbs {\n border-bottom: 1px solid black;\n }\n\n .lbs {\n border-left: 1px solid black;\n }\n\n .rbs {\n border-right: 1px solid black;\n }\n\n .allBorder {\n border-top: 1px solid black;\n border-right: 1px solid black;\n border-left: 1px solid black;\n border-bottom: 1px solid black;\n }\n\n .bottomBorderOnlyDashed {\n border-bottom: 1px dashed black;\n }\n\n .tbd {\n border-top: 1px dashed black;\n }\n\n .address {\n vertical-align: bottom;\n }\n</style>",
+ "idx": 0,
+ "line_breaks": 0,
+ "modified": "2021-01-19 07:25:16.333666",
+ "modified_by": "Administrator",
+ "module": "Regional",
+ "name": "IRS 1099 Form",
+ "owner": "Administrator",
+ "print_format_builder": 1,
+ "print_format_type": "Jinja",
+ "raw_printing": 0,
+ "show_section_headings": 0,
+ "standard": "No"
+}
\ No newline at end of file
diff --git a/erpnext/regional/report/irs_1099/irs_1099.js b/erpnext/regional/report/irs_1099/irs_1099.js
index 2d74652..070ff43 100644
--- a/erpnext/regional/report/irs_1099/irs_1099.js
+++ b/erpnext/regional/report/irs_1099/irs_1099.js
@@ -4,7 +4,7 @@
frappe.query_reports["IRS 1099"] = {
"filters": [
{
- "fieldname":"company",
+ "fieldname": "company",
"label": __("Company"),
"fieldtype": "Link",
"options": "Company",
@@ -13,7 +13,7 @@
"width": 80,
},
{
- "fieldname":"fiscal_year",
+ "fieldname": "fiscal_year",
"label": __("Fiscal Year"),
"fieldtype": "Link",
"options": "Fiscal Year",
@@ -22,7 +22,7 @@
"width": 80,
},
{
- "fieldname":"supplier_group",
+ "fieldname": "supplier_group",
"label": __("Supplier Group"),
"fieldtype": "Link",
"options": "Supplier Group",
@@ -32,16 +32,16 @@
},
],
- onload: function(query_report) {
+ onload: function (query_report) {
query_report.page.add_inner_button(__("Print IRS 1099 Forms"), () => {
build_1099_print(query_report);
});
}
};
-function build_1099_print(query_report){
+function build_1099_print(query_report) {
let filters = JSON.stringify(query_report.get_values());
let w = window.open('/api/method/erpnext.regional.report.irs_1099.irs_1099.irs_1099_print?' +
- '&filters=' + encodeURIComponent(filters));
+ '&filters=' + encodeURIComponent(filters));
// w.print();
}
diff --git a/erpnext/regional/report/irs_1099/irs_1099.py b/erpnext/regional/report/irs_1099/irs_1099.py
index d3509e5..c1c8aed 100644
--- a/erpnext/regional/report/irs_1099/irs_1099.py
+++ b/erpnext/regional/report/irs_1099/irs_1099.py
@@ -1,29 +1,34 @@
# Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and contributors
# For license information, please see license.txt
-from __future__ import unicode_literals
-import frappe
import json
-from frappe import _, _dict
-from frappe.utils import nowdate
-from frappe.utils.data import fmt_money
-from erpnext.accounts.utils import get_fiscal_year
+
from PyPDF2 import PdfFileWriter
+
+import frappe
+from erpnext.accounts.utils import get_fiscal_year
+from frappe import _
+from frappe.utils import cstr, nowdate
+from frappe.utils.data import fmt_money
+from frappe.utils.jinja import render_template
from frappe.utils.pdf import get_pdf
from frappe.utils.print_format import read_multi_pdf
-from frappe.utils.jinja import render_template
+
+IRS_1099_FORMS_FILE_EXTENSION = ".pdf"
def execute(filters=None):
- filters = filters if isinstance(filters, _dict) else _dict(filters)
-
+ filters = filters if isinstance(filters, frappe._dict) else frappe._dict(filters)
if not filters:
filters.setdefault('fiscal_year', get_fiscal_year(nowdate())[0])
filters.setdefault('company', frappe.db.get_default("company"))
- region = frappe.db.get_value("Company", fieldname = ["country"], filters = { "name": filters.company })
+ region = frappe.db.get_value("Company",
+ filters={"name": filters.company},
+ fieldname=["country"])
+
if region != 'United States':
- return [],[]
+ return [], []
data = []
columns = get_columns()
@@ -34,20 +39,23 @@
s.tax_id as "tax_id",
SUM(gl.debit_in_account_currency) AS "payments"
FROM
- `tabGL Entry` gl INNER JOIN `tabSupplier` s
+ `tabGL Entry` gl
+ INNER JOIN `tabSupplier` s
WHERE
s.name = gl.party
- AND s.irs_1099 = 1
- AND gl.fiscal_year = %(fiscal_year)s
- AND gl.party_type = "Supplier"
-
+ AND s.irs_1099 = 1
+ AND gl.fiscal_year = %(fiscal_year)s
+ AND gl.party_type = "Supplier"
GROUP BY
gl.party
-
ORDER BY
- gl.party DESC""", {"fiscal_year": filters.fiscal_year,
+ gl.party DESC
+ """, {
+ "fiscal_year": filters.fiscal_year,
"supplier_group": filters.supplier_group,
- "company": filters.company}, as_dict=True)
+ "company": filters.company
+ }, as_dict=True)
+
return columns, data
@@ -74,7 +82,6 @@
"width": 120
},
{
-
"fieldname": "payments",
"label": _("Total Payments"),
"fieldtype": "Currency",
@@ -88,23 +95,32 @@
if not filters:
frappe._dict({
"company": frappe.db.get_default("Company"),
- "fiscal_year": frappe.db.get_default("fiscal_year")})
+ "fiscal_year": frappe.db.get_default("Fiscal Year")
+ })
else:
filters = frappe._dict(json.loads(filters))
+
+ fiscal_year_doc = get_fiscal_year(fiscal_year=filters.fiscal_year, as_dict=True)
+ fiscal_year = cstr(fiscal_year_doc.year_start_date.year)
+
company_address = get_payer_address_html(filters.company)
company_tin = frappe.db.get_value("Company", filters.company, "tax_id")
+
columns, data = execute(filters)
template = frappe.get_doc("Print Format", "IRS 1099 Form").html
output = PdfFileWriter()
+
for row in data:
+ row["fiscal_year"] = fiscal_year
row["company"] = filters.company
row["company_tin"] = company_tin
row["payer_street_address"] = company_address
- row["recipient_street_address"], row["recipient_city_state"] = get_street_address_html("Supplier", row.supplier)
+ row["recipient_street_address"], row["recipient_city_state"] = get_street_address_html(
+ "Supplier", row.supplier)
row["payments"] = fmt_money(row["payments"], precision=0, currency="USD")
- frappe._dict(row)
pdf = get_pdf(render_template(template, row), output=output if output else None)
- frappe.local.response.filename = filters.fiscal_year + " " + filters.company + " IRS 1099 Forms"
+
+ frappe.local.response.filename = f"{filters.fiscal_year} {filters.company} IRS 1099 Forms{IRS_1099_FORMS_FILE_EXTENSION}"
frappe.local.response.filecontent = read_multi_pdf(output)
frappe.local.response.type = "download"
@@ -120,36 +136,45 @@
ORDER BY
address_type="Postal" DESC, address_type="Billing" DESC
LIMIT 1
- """, {"company": company}, as_dict=True)
+ """, {"company": company}, as_dict=True)
+
+ address_display = ""
if address_list:
company_address = address_list[0]["name"]
- return frappe.get_doc("Address", company_address).get_display()
- else:
- return ""
+ address_display = frappe.get_doc("Address", company_address).get_display()
+
+ return address_display
def get_street_address_html(party_type, party):
address_list = frappe.db.sql("""
SELECT
link.parent
- FROM `tabDynamic Link` link, `tabAddress` address
- WHERE link.parenttype = "Address"
- AND link.link_name = %(party)s
- ORDER BY address.address_type="Postal" DESC,
+ FROM
+ `tabDynamic Link` link,
+ `tabAddress` address
+ WHERE
+ link.parenttype = "Address"
+ AND link.link_name = %(party)s
+ ORDER BY
+ address.address_type="Postal" DESC,
address.address_type="Billing" DESC
LIMIT 1
- """, {"party": party}, as_dict=True)
+ """, {"party": party}, as_dict=True)
+
+ street_address = city_state = ""
if address_list:
supplier_address = address_list[0]["parent"]
doc = frappe.get_doc("Address", supplier_address)
+
if doc.address_line2:
- street = doc.address_line1 + "<br>\n" + doc.address_line2 + "<br>\n"
+ street_address = doc.address_line1 + "<br>\n" + doc.address_line2 + "<br>\n"
else:
- street = doc.address_line1 + "<br>\n"
- city = doc.city + ", " if doc.city else ""
- city = city + doc.state + " " if doc.state else city
- city = city + doc.pincode if doc.pincode else city
- city += "<br>\n"
- return street, city
- else:
- return "", ""
+ street_address = doc.address_line1 + "<br>\n"
+
+ city_state = doc.city + ", " if doc.city else ""
+ city_state = city_state + doc.state + " " if doc.state else city_state
+ city_state = city_state + doc.pincode if doc.pincode else city_state
+ city_state += "<br>\n"
+
+ return street_address, city_state