2165 lines
		
	
	
		
			55 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			2165 lines
		
	
	
		
			55 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
/*********************************************************************************
 | 
						|
 *
 | 
						|
 * TimeTrex is a Workforce Management program developed by
 | 
						|
 * TimeTrex Software Inc. Copyright (C) 2003 - 2021 TimeTrex Software Inc.
 | 
						|
 *
 | 
						|
 * This program is free software; you can redistribute it and/or modify it under
 | 
						|
 * the terms of the GNU Affero General Public License version 3 as published by
 | 
						|
 * the Free Software Foundation with the addition of the following permission
 | 
						|
 * added to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED
 | 
						|
 * WORK IN WHICH THE COPYRIGHT IS OWNED BY TIMETREX, TIMETREX DISCLAIMS THE
 | 
						|
 * WARRANTY OF NON INFRINGEMENT OF THIRD PARTY RIGHTS.
 | 
						|
 *
 | 
						|
 * This program is distributed in the hope that it will be useful, but WITHOUT
 | 
						|
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 | 
						|
 * FOR A PARTICULAR PURPOSE.  See the GNU Affero General Public License for more
 | 
						|
 * details.
 | 
						|
 *
 | 
						|
 *
 | 
						|
 * You should have received a copy of the GNU Affero General Public License along
 | 
						|
 * with this program; if not, see http://www.gnu.org/licenses or write to the Free
 | 
						|
 * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
 | 
						|
 * 02110-1301 USA.
 | 
						|
 *
 | 
						|
 *
 | 
						|
 * You can contact TimeTrex headquarters at Unit 22 - 2475 Dobbin Rd. Suite
 | 
						|
 * #292 West Kelowna, BC V4T 2E9, Canada or at email address info@timetrex.com.
 | 
						|
 *
 | 
						|
 *
 | 
						|
 * The interactive user interfaces in modified source and object code versions
 | 
						|
 * of this program must display Appropriate Legal Notices, as required under
 | 
						|
 * Section 5 of the GNU Affero General Public License version 3.
 | 
						|
 *
 | 
						|
 *
 | 
						|
 * In accordance with Section 7(b) of the GNU Affero General Public License
 | 
						|
 * version 3, these Appropriate Legal Notices must retain the display of the
 | 
						|
 * "Powered by TimeTrex" logo. If the display of the logo is not reasonably
 | 
						|
 * feasible for technical reasons, the Appropriate Legal Notices must display
 | 
						|
 * the words "Powered by TimeTrex".
 | 
						|
 *
 | 
						|
 ********************************************************************************/
 | 
						|
 | 
						|
 | 
						|
include_once( 'US.class.php' );
 | 
						|
 | 
						|
/**
 | 
						|
 * @package GovernmentForms
 | 
						|
 */
 | 
						|
class GovernmentForms_US_941 extends GovernmentForms_US {
 | 
						|
 | 
						|
	//Testing requirements for Form 941: https://www.irs.gov/e-file-providers/tax-year-2018-94x-mef-ats-information
 | 
						|
	public $xml_schema = '94x/94x/IRS941.xsd';
 | 
						|
 | 
						|
	public $pdf_template = '941.pdf';
 | 
						|
	public $page_margins = [ 0, 0 ];    //x, y - 43pt = 15mm Absolute margins that affect all drawing and templates.
 | 
						|
 | 
						|
	public $social_security_rate = 0.124; //Line: 5a2, 5b2
 | 
						|
 | 
						|
	public $medicare_rate = 0.029;            //Line: 5c2
 | 
						|
	public $medicare_additional_rate = 0.009; //Line: 5d2
 | 
						|
 | 
						|
	public $line_16_cutoff_amount = 2500; //Line 16
 | 
						|
 | 
						|
	public $schedule_b_total = 0; //Total from F941 Schedule B so we can show a warning if it doesn't match.
 | 
						|
 | 
						|
	public function getTemplateSchema( $name = null ) {
 | 
						|
		$template_schema = [
 | 
						|
			//Initialize page1, replace years on template.
 | 
						|
			[
 | 
						|
					'page'          => 1,
 | 
						|
					'template_page' => 1,
 | 
						|
					'value'         => 'Form',
 | 
						|
					'on_background' => true,
 | 
						|
					'coordinates'   => [
 | 
						|
							'x'          => 35,
 | 
						|
							'y'          => 36,
 | 
						|
							'h'          => 23,
 | 
						|
							'w'          => 22,
 | 
						|
							'halign'     => 'L',
 | 
						|
							'fill_color' => [ 255, 255, 255 ],
 | 
						|
					],
 | 
						|
					'font'          => [
 | 
						|
							'size' => 8,
 | 
						|
							'type' => '',
 | 
						|
					],
 | 
						|
			],
 | 
						|
 | 
						|
			[
 | 
						|
					'value'         => '941 for ' . $this->year,
 | 
						|
					'on_background' => true,
 | 
						|
					'coordinates'   => [
 | 
						|
							'x'          => 57,
 | 
						|
							'y'          => 31,
 | 
						|
							'h'          => 28,
 | 
						|
							'w'          => 97,
 | 
						|
							'halign'     => 'C',
 | 
						|
							'fill_color' => [ 255, 255, 255 ],
 | 
						|
					],
 | 
						|
					'font'          => [
 | 
						|
							'size' => 16,
 | 
						|
							'type' => 'B',
 | 
						|
					],
 | 
						|
			],
 | 
						|
 | 
						|
			[
 | 
						|
					'value'         => $this->year, //Top right, in quarter checkbox section.
 | 
						|
					'on_background' => true,
 | 
						|
					'coordinates'   => [
 | 
						|
							'x'          => 540,
 | 
						|
							'y'          => 65.5,
 | 
						|
							'h'          => 8,
 | 
						|
							'w'          => 21,
 | 
						|
							'halign'     => 'C',
 | 
						|
							'text_color' => [ 255, 255, 255 ],
 | 
						|
							'fill_color' => [ 30, 30, 30 ],
 | 
						|
					],
 | 
						|
					'font'          => [
 | 
						|
							'size' => 10,
 | 
						|
							'type' => 'B',
 | 
						|
					],
 | 
						|
			],
 | 
						|
 | 
						|
			[
 | 
						|
					'value'         => '(Rev. ' . $this->year . ')', //Bottom right of first page.
 | 
						|
					'on_background' => true,
 | 
						|
					'coordinates'   => [
 | 
						|
							'x'          => 533,
 | 
						|
							'y'          => 757,
 | 
						|
							'h'          => 11,
 | 
						|
							'w'          => 45,
 | 
						|
							'halign'     => 'C',
 | 
						|
							'fill_color' => [ 255, 255, 255 ],
 | 
						|
					],
 | 
						|
					'font'          => [
 | 
						|
							'size' => 7,
 | 
						|
					],
 | 
						|
			],
 | 
						|
			//Finish initializing page 1.
 | 
						|
 | 
						|
			'ein' => [
 | 
						|
					'page'          => 1,
 | 
						|
					'template_page' => 1,
 | 
						|
					'function'      => [ 'prefilter' => [ 'stripNonNumeric', 'isNumeric' ], 'draw' => 'drawChars' ], //custom drawing function.
 | 
						|
					'coordinates'   => [
 | 
						|
							[
 | 
						|
									'type'   => 'static', //static or relative
 | 
						|
									'x'      => 153,
 | 
						|
									'y'      => 66,
 | 
						|
									'h'      => 17,
 | 
						|
									'w'      => 19,
 | 
						|
									'halign' => 'C',
 | 
						|
							],
 | 
						|
							[
 | 
						|
									'x'      => 177,
 | 
						|
									'y'      => 66,
 | 
						|
									'h'      => 17,
 | 
						|
									'w'      => 19,
 | 
						|
									'halign' => 'C',
 | 
						|
							],
 | 
						|
							[
 | 
						|
									'x'      => 215,
 | 
						|
									'y'      => 66,
 | 
						|
									'h'      => 17,
 | 
						|
									'w'      => 19,
 | 
						|
									'halign' => 'C',
 | 
						|
							],
 | 
						|
							[
 | 
						|
									'x'      => 241,
 | 
						|
									'y'      => 66,
 | 
						|
									'h'      => 17,
 | 
						|
									'w'      => 19,
 | 
						|
									'halign' => 'C',
 | 
						|
							],
 | 
						|
							[
 | 
						|
									'x'      => 266,
 | 
						|
									'y'      => 66,
 | 
						|
									'h'      => 17,
 | 
						|
									'w'      => 19,
 | 
						|
									'halign' => 'C',
 | 
						|
							],
 | 
						|
							[
 | 
						|
									'x'      => 292,
 | 
						|
									'y'      => 66,
 | 
						|
									'h'      => 17,
 | 
						|
									'w'      => 19,
 | 
						|
									'halign' => 'C',
 | 
						|
							],
 | 
						|
							[
 | 
						|
									'x'      => 317,
 | 
						|
									'y'      => 66,
 | 
						|
									'h'      => 17,
 | 
						|
									'w'      => 19,
 | 
						|
									'halign' => 'C',
 | 
						|
							],
 | 
						|
							[
 | 
						|
									'x'      => 341,
 | 
						|
									'y'      => 66,
 | 
						|
									'h'      => 17,
 | 
						|
									'w'      => 19,
 | 
						|
									'halign' => 'C',
 | 
						|
							],
 | 
						|
							[
 | 
						|
									'x'      => 370,
 | 
						|
									'y'      => 66,
 | 
						|
									'h'      => 17,
 | 
						|
									'w'      => 19,
 | 
						|
									'halign' => 'C',
 | 
						|
							],
 | 
						|
					],
 | 
						|
					'font'          => [
 | 
						|
							'size' => 12,
 | 
						|
							'type' => 'B',
 | 
						|
					],
 | 
						|
			],
 | 
						|
 | 
						|
			'name' => [
 | 
						|
					'page'          => 1,
 | 
						|
					'template_page' => 1,
 | 
						|
					'coordinates'   => [
 | 
						|
							'x'      => 138,
 | 
						|
							'y'      => 91,
 | 
						|
							'h'      => 18,
 | 
						|
							'w'      => 246,
 | 
						|
							'halign' => 'L',
 | 
						|
					],
 | 
						|
			],
 | 
						|
 | 
						|
			'trade_name' => [
 | 
						|
					'page'          => 1,
 | 
						|
					'template_page' => 1,
 | 
						|
					'coordinates'   => [
 | 
						|
							'x'      => 116,
 | 
						|
							'y'      => 114,
 | 
						|
							'h'      => 18,
 | 
						|
							'w'      => 267,
 | 
						|
							'halign' => 'L',
 | 
						|
					],
 | 
						|
			],
 | 
						|
 | 
						|
			'address' => [
 | 
						|
					'page'          => 1,
 | 
						|
					'template_page' => 1,
 | 
						|
					'coordinates'   => [
 | 
						|
							'x'      => 80,
 | 
						|
							'y'      => 137,
 | 
						|
							'h'      => 18,
 | 
						|
							'w'      => 302,
 | 
						|
							'halign' => 'L',
 | 
						|
					],
 | 
						|
			],
 | 
						|
 | 
						|
			'city'     => [
 | 
						|
					'page'          => 1,
 | 
						|
					'template_page' => 1,
 | 
						|
					'coordinates'   => [
 | 
						|
							'x'      => 80,
 | 
						|
							'y'      => 167,
 | 
						|
							'h'      => 18,
 | 
						|
							'w'      => 182,
 | 
						|
							'halign' => 'L',
 | 
						|
					],
 | 
						|
			],
 | 
						|
			'state'    => [
 | 
						|
					'page'          => 1,
 | 
						|
					'template_page' => 1,
 | 
						|
					'coordinates'   => [
 | 
						|
							'x'      => 276,
 | 
						|
							'y'      => 167,
 | 
						|
							'h'      => 18,
 | 
						|
							'w'      => 35,
 | 
						|
							'halign' => 'C',
 | 
						|
					],
 | 
						|
			],
 | 
						|
			'zip_code' => [
 | 
						|
					'page'          => 1,
 | 
						|
					'template_page' => 1,
 | 
						|
					'coordinates'   => [
 | 
						|
							'x'      => 318,
 | 
						|
							'y'      => 167,
 | 
						|
							'h'      => 18,
 | 
						|
							'w'      => 70,
 | 
						|
							'halign' => 'C',
 | 
						|
					],
 | 
						|
			],
 | 
						|
 | 
						|
 | 
						|
			'quarter' => [
 | 
						|
					'page'          => 1,
 | 
						|
					'template_page' => 1,
 | 
						|
					'function'      => [ 'draw' => 'drawCheckBox' ],
 | 
						|
					'coordinates'   => [
 | 
						|
							1 => [
 | 
						|
									'x'      => 425,
 | 
						|
									'y'      => 95,
 | 
						|
									'h'      => 10,
 | 
						|
									'w'      => 10,
 | 
						|
									'halign' => 'C',
 | 
						|
							],
 | 
						|
							2 => [
 | 
						|
									'x'      => 425,
 | 
						|
									'y'      => 111,
 | 
						|
									'h'      => 10,
 | 
						|
									'w'      => 10,
 | 
						|
									'halign' => 'C',
 | 
						|
							],
 | 
						|
							3 => [
 | 
						|
									'x'      => 425,
 | 
						|
									'y'      => 128,
 | 
						|
									'h'      => 10,
 | 
						|
									'w'      => 10,
 | 
						|
									'halign' => 'C',
 | 
						|
							],
 | 
						|
							4 => [
 | 
						|
									'x'      => 425,
 | 
						|
									'y'      => 144,
 | 
						|
									'h'      => 10,
 | 
						|
									'w'      => 10,
 | 
						|
									'halign' => 'C',
 | 
						|
							],
 | 
						|
					],
 | 
						|
					'font'          => [
 | 
						|
							'size' => 10,
 | 
						|
							'type' => 'B',
 | 
						|
					],
 | 
						|
			],
 | 
						|
 | 
						|
			'l1' => [
 | 
						|
					'page'          => 1,
 | 
						|
					'template_page' => 1,
 | 
						|
					'function'      => [ 'prefilter' => [ 'stripNonNumeric', 'isNumeric' ] ],
 | 
						|
					'coordinates'   => [
 | 
						|
							'x'      => 448,
 | 
						|
							'y'      => 270,
 | 
						|
							'h'      => 15,
 | 
						|
							'w'      => 127,
 | 
						|
							'halign' => 'C',
 | 
						|
					],
 | 
						|
			],
 | 
						|
 | 
						|
			'l2'  => [
 | 
						|
					'page'          => 1,
 | 
						|
					'template_page' => 1,
 | 
						|
					'function'      => [ 'prefilter' => [ 'stripNonFloat', 'isNumeric' ], 'draw' => 'drawSplitDecimalFloat' ],
 | 
						|
					'coordinates'   => [
 | 
						|
							[
 | 
						|
									'x'      => 448,
 | 
						|
									'y'      => 294,
 | 
						|
									'h'      => 14,
 | 
						|
									'w'      => 99,
 | 
						|
									'halign' => 'R',
 | 
						|
							],
 | 
						|
							[
 | 
						|
									'x'      => 553,
 | 
						|
									'y'      => 294,
 | 
						|
									'h'      => 14,
 | 
						|
									'w'      => 26,
 | 
						|
									'halign' => 'C',
 | 
						|
							],
 | 
						|
					],
 | 
						|
			],
 | 
						|
			'l3'  => [
 | 
						|
					'page'          => 1,
 | 
						|
					'template_page' => 1,
 | 
						|
					'function'      => [ 'prefilter' => [ 'stripNonFloat', 'isNumeric' ], 'draw' => 'drawSplitDecimalFloat' ],
 | 
						|
					'coordinates'   => [
 | 
						|
							[
 | 
						|
									'x'      => 448,
 | 
						|
									'y'      => 318,
 | 
						|
									'h'      => 14,
 | 
						|
									'w'      => 99,
 | 
						|
									'halign' => 'R',
 | 
						|
							],
 | 
						|
							[
 | 
						|
									'x'      => 553,
 | 
						|
									'y'      => 318,
 | 
						|
									'h'      => 14,
 | 
						|
									'w'      => 26,
 | 
						|
									'halign' => 'C',
 | 
						|
							],
 | 
						|
					],
 | 
						|
			],
 | 
						|
			'l4'  => [
 | 
						|
					'page'          => 1,
 | 
						|
					'template_page' => 1,
 | 
						|
					'function'      => [ 'draw' => 'drawCheckbox' ],
 | 
						|
					'coordinates'   => [
 | 
						|
							[
 | 
						|
									'x'      => 447,
 | 
						|
									'y'      => 344,
 | 
						|
									'h'      => 6,
 | 
						|
									'w'      => 10,
 | 
						|
									'halign' => 'C',
 | 
						|
							],
 | 
						|
					],
 | 
						|
					'font'          => [
 | 
						|
							'size' => 8,
 | 
						|
							'type' => 'B',
 | 
						|
					],
 | 
						|
			],
 | 
						|
			'l5a' => [
 | 
						|
					'page'          => 1,
 | 
						|
					'template_page' => 1,
 | 
						|
					'function'      => [ 'prefilter' => [ 'stripNonFloat', 'isNumeric' ], 'draw' => 'drawSplitDecimalFloat' ],
 | 
						|
					'coordinates'   => [
 | 
						|
							[
 | 
						|
									'x'      => 218,
 | 
						|
									'y'      => 373,
 | 
						|
									'h'      => 14,
 | 
						|
									'w'      => 65,
 | 
						|
									'halign' => 'R',
 | 
						|
							],
 | 
						|
							[
 | 
						|
									'x'      => 288,
 | 
						|
									'y'      => 373,
 | 
						|
									'h'      => 14,
 | 
						|
									'w'      => 20,
 | 
						|
									'halign' => 'C',
 | 
						|
							],
 | 
						|
					],
 | 
						|
			],
 | 
						|
			'l5ai' => [
 | 
						|
					'page'          => 1,
 | 
						|
					'template_page' => 1,
 | 
						|
					'function'      => [ 'draw' => 'drawSplitDecimalFloat' ],
 | 
						|
					'coordinates'   => [
 | 
						|
							[
 | 
						|
									'x'      => 218,
 | 
						|
									'y'      => 391,
 | 
						|
									'h'      => 14,
 | 
						|
									'w'      => 65,
 | 
						|
									'halign' => 'R',
 | 
						|
							],
 | 
						|
							[
 | 
						|
									'x'      => 288,
 | 
						|
									'y'      => 391,
 | 
						|
									'h'      => 14,
 | 
						|
									'w'      => 20,
 | 
						|
									'halign' => 'C',
 | 
						|
							],
 | 
						|
					],
 | 
						|
			],
 | 
						|
			'l5aii' => [
 | 
						|
					'page'          => 1,
 | 
						|
					'template_page' => 1,
 | 
						|
					'function'      => [ 'draw' => 'drawSplitDecimalFloat' ],
 | 
						|
					'coordinates'   => [
 | 
						|
							[
 | 
						|
									'x'      => 218,
 | 
						|
									'y'      => 408,
 | 
						|
									'h'      => 14,
 | 
						|
									'w'      => 65,
 | 
						|
									'halign' => 'R',
 | 
						|
							],
 | 
						|
							[
 | 
						|
									'x'      => 288,
 | 
						|
									'y'      => 408,
 | 
						|
									'h'      => 14,
 | 
						|
									'w'      => 20,
 | 
						|
									'halign' => 'C',
 | 
						|
							],
 | 
						|
					],
 | 
						|
			],
 | 
						|
			'l5b' => [
 | 
						|
					'page'          => 1,
 | 
						|
					'template_page' => 1,
 | 
						|
					'function'      => [ 'prefilter' => [ 'stripNonFloat', 'isNumeric' ], 'draw' => 'drawSplitDecimalFloat' ],
 | 
						|
					'coordinates'   => [
 | 
						|
							[
 | 
						|
									'x'      => 218,
 | 
						|
									'y'      => 427,
 | 
						|
									'h'      => 14,
 | 
						|
									'w'      => 65,
 | 
						|
									'halign' => 'R',
 | 
						|
							],
 | 
						|
							[
 | 
						|
									'x'      => 288,
 | 
						|
									'y'      => 427,
 | 
						|
									'h'      => 14,
 | 
						|
									'w'      => 20,
 | 
						|
									'halign' => 'C',
 | 
						|
							],
 | 
						|
					],
 | 
						|
			],
 | 
						|
			'l5c' => [
 | 
						|
					'page'          => 1,
 | 
						|
					'template_page' => 1,
 | 
						|
					'function'      => [ 'prefilter' => [ 'stripNonFloat', 'isNumeric' ], 'draw' => 'drawSplitDecimalFloat' ],
 | 
						|
					'coordinates'   => [
 | 
						|
							[
 | 
						|
									'x'      => 218,
 | 
						|
									'y'      => 445,
 | 
						|
									'h'      => 14,
 | 
						|
									'w'      => 65,
 | 
						|
									'halign' => 'R',
 | 
						|
							],
 | 
						|
							[
 | 
						|
									'x'      => 288,
 | 
						|
									'y'      => 445,
 | 
						|
									'h'      => 14,
 | 
						|
									'w'      => 20,
 | 
						|
									'halign' => 'C',
 | 
						|
							],
 | 
						|
					],
 | 
						|
			],
 | 
						|
			'l5d' => [
 | 
						|
					'page'          => 1,
 | 
						|
					'template_page' => 1,
 | 
						|
					'function'      => [ 'prefilter' => [ 'stripNonFloat', 'isNumeric' ], 'draw' => 'drawSplitDecimalFloat' ],
 | 
						|
					'coordinates'   => [
 | 
						|
							[
 | 
						|
									'x'      => 218,
 | 
						|
									'y'      => 468,
 | 
						|
									'h'      => 14,
 | 
						|
									'w'      => 65,
 | 
						|
									'halign' => 'R',
 | 
						|
							],
 | 
						|
							[
 | 
						|
									'x'      => 288,
 | 
						|
									'y'      => 468,
 | 
						|
									'h'      => 14,
 | 
						|
									'w'      => 20,
 | 
						|
									'halign' => 'C',
 | 
						|
							],
 | 
						|
					],
 | 
						|
			],
 | 
						|
 | 
						|
			'l5a2'   => [
 | 
						|
					'page'          => 1,
 | 
						|
					'template_page' => 1,
 | 
						|
					'function'      => [ 'calc' => 'calcL5A2', 'draw' => 'drawSplitDecimalFloat' ],
 | 
						|
					'coordinates'   => [
 | 
						|
							[
 | 
						|
									'x'      => 354,
 | 
						|
									'y'      => 373,
 | 
						|
									'h'      => 14,
 | 
						|
									'w'      => 66,
 | 
						|
									'halign' => 'R',
 | 
						|
							],
 | 
						|
							[
 | 
						|
									'x'      => 425,
 | 
						|
									'y'      => 373,
 | 
						|
									'h'      => 14,
 | 
						|
									'w'      => 19,
 | 
						|
									'halign' => 'C',
 | 
						|
							],
 | 
						|
					],
 | 
						|
			],
 | 
						|
			//'l5ai2' => [
 | 
						|
			//		'page'          => 1,
 | 
						|
			//		'template_page' => 1,
 | 
						|
			//		'function'      => [ 'calc' => 'calcL5Ai2', 'draw' => 'drawSplitDecimalFloat' ],
 | 
						|
			//		'coordinates'   => [
 | 
						|
			//				[
 | 
						|
			//						'x'      => 354,
 | 
						|
			//						'y'      => 391,
 | 
						|
			//						'h'      => 14,
 | 
						|
			//						'w'      => 66,
 | 
						|
			//						'halign' => 'R',
 | 
						|
			//				],
 | 
						|
			//				[
 | 
						|
			//						'x'      => 425,
 | 
						|
			//						'y'      => 391,
 | 
						|
			//						'h'      => 14,
 | 
						|
			//						'w'      => 19,
 | 
						|
			//						'halign' => 'C',
 | 
						|
			//				],
 | 
						|
			//		],
 | 
						|
			//],
 | 
						|
			//'l5aii2' => [
 | 
						|
			//		'page'          => 1,
 | 
						|
			//		'template_page' => 1,
 | 
						|
			//		'function'      => [ 'calc' => 'calcL5Aii2', 'draw' => 'drawSplitDecimalFloat' ],
 | 
						|
			//		'coordinates'   => [
 | 
						|
			//				[
 | 
						|
			//						'x'      => 354,
 | 
						|
			//						'y'      => 408,
 | 
						|
			//						'h'      => 14,
 | 
						|
			//						'w'      => 66,
 | 
						|
			//						'halign' => 'R',
 | 
						|
			//				],
 | 
						|
			//				[
 | 
						|
			//						'x'      => 425,
 | 
						|
			//						'y'      => 408,
 | 
						|
			//						'h'      => 14,
 | 
						|
			//						'w'      => 19,
 | 
						|
			//						'halign' => 'C',
 | 
						|
			//				],
 | 
						|
			//		],
 | 
						|
			//],
 | 
						|
			'l5b2' => [
 | 
						|
					'page'          => 1,
 | 
						|
					'template_page' => 1,
 | 
						|
					'function'      => [ 'calc' => 'calcL5B2', 'draw' => 'drawSplitDecimalFloat' ],
 | 
						|
					'coordinates'   => [
 | 
						|
							[
 | 
						|
									'x'      => 354,
 | 
						|
									'y'      => 427,
 | 
						|
									'h'      => 14,
 | 
						|
									'w'      => 66,
 | 
						|
									'halign' => 'R',
 | 
						|
							],
 | 
						|
							[
 | 
						|
									'x'      => 425,
 | 
						|
									'y'      => 427,
 | 
						|
									'h'      => 14,
 | 
						|
									'w'      => 19,
 | 
						|
									'halign' => 'C',
 | 
						|
							],
 | 
						|
					],
 | 
						|
			],
 | 
						|
			'l5c2' => [
 | 
						|
					'page'          => 1,
 | 
						|
					'template_page' => 1,
 | 
						|
					'function'      => [ 'calc' => 'calcL5C2', 'draw' => [ 'drawSplitDecimalFloat' ] ],
 | 
						|
					'coordinates'   => [
 | 
						|
							[
 | 
						|
									'x'      => 354,
 | 
						|
									'y'      => 445,
 | 
						|
									'h'      => 14,
 | 
						|
									'w'      => 66,
 | 
						|
									'halign' => 'R',
 | 
						|
							],
 | 
						|
							[
 | 
						|
									'x'      => 425,
 | 
						|
									'y'      => 445,
 | 
						|
									'h'      => 14,
 | 
						|
									'w'      => 19,
 | 
						|
									'halign' => 'C',
 | 
						|
							],
 | 
						|
					],
 | 
						|
			],
 | 
						|
			'l5d2' => [
 | 
						|
					'page'          => 1,
 | 
						|
					'template_page' => 1,
 | 
						|
					'function'      => [ 'calc' => 'calcL5D2', 'draw' => [ 'drawSplitDecimalFloat' ] ],
 | 
						|
					'coordinates'   => [
 | 
						|
							[
 | 
						|
									'x'      => 354,
 | 
						|
									'y'      => 468,
 | 
						|
									'h'      => 14,
 | 
						|
									'w'      => 66,
 | 
						|
									'halign' => 'R',
 | 
						|
							],
 | 
						|
							[
 | 
						|
									'x'      => 425,
 | 
						|
									'y'      => 468,
 | 
						|
									'h'      => 14,
 | 
						|
									'w'      => 19,
 | 
						|
									'halign' => 'C',
 | 
						|
							],
 | 
						|
					],
 | 
						|
			],
 | 
						|
			'l5e'  => [
 | 
						|
					'page'          => 1,
 | 
						|
					'template_page' => 1,
 | 
						|
					'function'      => [ 'calc' => 'calcL5e', 'draw' => [ 'drawSplitDecimalFloat' ] ],
 | 
						|
					'coordinates'   => [
 | 
						|
							[
 | 
						|
									'x'      => 448,
 | 
						|
									'y'      => 492,
 | 
						|
									'h'      => 14,
 | 
						|
									'w'      => 99,
 | 
						|
									'halign' => 'R',
 | 
						|
							],
 | 
						|
							[
 | 
						|
									'x'      => 553,
 | 
						|
									'y'      => 492,
 | 
						|
									'h'      => 14,
 | 
						|
									'w'      => 22,
 | 
						|
									'halign' => 'C',
 | 
						|
							],
 | 
						|
					],
 | 
						|
			],
 | 
						|
			'l5f'  => [
 | 
						|
					'page'          => 1,
 | 
						|
					'template_page' => 1,
 | 
						|
					'function'      => [ 'draw' => [ 'drawSplitDecimalFloat' ] ],
 | 
						|
					'coordinates'   => [
 | 
						|
							[
 | 
						|
									'x'      => 448,
 | 
						|
									'y'      => 517,
 | 
						|
									'h'      => 14,
 | 
						|
									'w'      => 99,
 | 
						|
									'halign' => 'R',
 | 
						|
							],
 | 
						|
							[
 | 
						|
									'x'      => 553,
 | 
						|
									'y'      => 517,
 | 
						|
									'h'      => 14,
 | 
						|
									'w'      => 22,
 | 
						|
									'halign' => 'C',
 | 
						|
							],
 | 
						|
					],
 | 
						|
			],
 | 
						|
			'l6'   => [
 | 
						|
					'page'          => 1,
 | 
						|
					'template_page' => 1,
 | 
						|
					'function'      => [ 'calc' => 'calcL6', 'draw' => [ 'drawSplitDecimalFloat' ] ],
 | 
						|
					'coordinates'   => [
 | 
						|
							[
 | 
						|
									'x'      => 448,
 | 
						|
									'y'      => 541,
 | 
						|
									'h'      => 14,
 | 
						|
									'w'      => 99,
 | 
						|
									'halign' => 'R',
 | 
						|
							],
 | 
						|
							[
 | 
						|
									'x'      => 553,
 | 
						|
									'y'      => 541,
 | 
						|
									'h'      => 14,
 | 
						|
									'w'      => 22,
 | 
						|
									'halign' => 'C',
 | 
						|
							],
 | 
						|
					],
 | 
						|
			],
 | 
						|
			'l7'   => [
 | 
						|
					'page'          => 1,
 | 
						|
					'template_page' => 1,
 | 
						|
					'function'      => [ 'calc' => 'calcL7', 'draw' => [ 'drawSplitDecimalFloat', 'showL5Warning' ] ], //showL5Warning requires calcL7 to be run first.
 | 
						|
					'coordinates'   => [
 | 
						|
							[
 | 
						|
									'x'      => 448,
 | 
						|
									'y'      => 565,
 | 
						|
									'h'      => 14,
 | 
						|
									'w'      => 99,
 | 
						|
									'halign' => 'R',
 | 
						|
							],
 | 
						|
							[
 | 
						|
									'x'      => 553,
 | 
						|
									'y'      => 565,
 | 
						|
									'h'      => 14,
 | 
						|
									'w'      => 22,
 | 
						|
									'halign' => 'C',
 | 
						|
							],
 | 
						|
					],
 | 
						|
			],
 | 
						|
			'l8'   => [
 | 
						|
					'page'          => 1,
 | 
						|
					'template_page' => 1,
 | 
						|
					'function'      => [ 'draw' => 'drawSplitDecimalFloat' ],
 | 
						|
					'coordinates'   => [
 | 
						|
							[
 | 
						|
									'x'      => 448,
 | 
						|
									'y'      => 589,
 | 
						|
									'h'      => 14,
 | 
						|
									'w'      => 99,
 | 
						|
									'halign' => 'R',
 | 
						|
							],
 | 
						|
							[
 | 
						|
									'x'      => 553,
 | 
						|
									'y'      => 589,
 | 
						|
									'h'      => 14,
 | 
						|
									'w'      => 22,
 | 
						|
									'halign' => 'C',
 | 
						|
							],
 | 
						|
					],
 | 
						|
			],
 | 
						|
			'l9'   => [
 | 
						|
					'page'          => 1,
 | 
						|
					'template_page' => 1,
 | 
						|
					'function'      => [ 'prefilter' => [ 'stripNonFloat', 'isNumeric' ], 'draw' => 'drawSplitDecimalFloat' ],
 | 
						|
					'coordinates'   => [
 | 
						|
							[
 | 
						|
									'x'      => 448,
 | 
						|
									'y'      => 613,
 | 
						|
									'h'      => 14,
 | 
						|
									'w'      => 99,
 | 
						|
									'halign' => 'R',
 | 
						|
							],
 | 
						|
							[
 | 
						|
									'x'      => 553,
 | 
						|
									'y'      => 613,
 | 
						|
									'h'      => 14,
 | 
						|
									'w'      => 22,
 | 
						|
									'halign' => 'C',
 | 
						|
							],
 | 
						|
					],
 | 
						|
			],
 | 
						|
 | 
						|
			'l10' => [
 | 
						|
					'page'          => 1,
 | 
						|
					'template_page' => 1,
 | 
						|
					'function'      => [ 'calc' => 'calcL10', 'draw' => [ 'drawSplitDecimalFloat' ] ],
 | 
						|
					'coordinates'   => [
 | 
						|
							[
 | 
						|
									'x'      => 448,
 | 
						|
									'y'      => 636,
 | 
						|
									'h'      => 14,
 | 
						|
									'w'      => 99,
 | 
						|
									'halign' => 'R',
 | 
						|
							],
 | 
						|
							[
 | 
						|
									'x'      => 553,
 | 
						|
									'y'      => 636,
 | 
						|
									'h'      => 14,
 | 
						|
									'w'      => 22,
 | 
						|
									'halign' => 'C',
 | 
						|
							],
 | 
						|
					],
 | 
						|
			],
 | 
						|
			'l11a' => [  //Qualified Small Busiess payroll tax credit.
 | 
						|
						 'page'          => 1,
 | 
						|
						 'template_page' => 1,
 | 
						|
						 'function'      => [ 'draw' => 'drawSplitDecimalFloat' ],
 | 
						|
						 'coordinates'   => [
 | 
						|
								 [
 | 
						|
										 'x'      => 448,
 | 
						|
										 'y'      => 661,
 | 
						|
										 'h'      => 14,
 | 
						|
										 'w'      => 99,
 | 
						|
										 'halign' => 'R',
 | 
						|
								 ],
 | 
						|
								 [
 | 
						|
										 'x'      => 553,
 | 
						|
										 'y'      => 661,
 | 
						|
										 'h'      => 14,
 | 
						|
										 'w'      => 22,
 | 
						|
										 'halign' => 'C',
 | 
						|
								 ],
 | 
						|
						 ],
 | 
						|
			],
 | 
						|
			//'l11b' => [ //Nonrefundable portion of credit for qualified sick and family leave from Worksheet 1
 | 
						|
			//			'page'          => 1,
 | 
						|
			//			'template_page' => 1,
 | 
						|
			//			'function'      => [ 'draw' => 'drawSplitDecimalFloat' ],
 | 
						|
			//			'coordinates'   => [
 | 
						|
			//					[
 | 
						|
			//							'x'      => 448,
 | 
						|
			//							'y'      => 690,
 | 
						|
			//							'h'      => 14,
 | 
						|
			//							'w'      => 99,
 | 
						|
			//							'halign' => 'R',
 | 
						|
			//					],
 | 
						|
			//					[
 | 
						|
			//							'x'      => 553,
 | 
						|
			//							'y'      => 690,
 | 
						|
			//							'h'      => 14,
 | 
						|
			//							'w'      => 22,
 | 
						|
			//							'halign' => 'C',
 | 
						|
			//					],
 | 
						|
			//			],
 | 
						|
			//],
 | 
						|
			//'l11c' => [ //Nonrefundable portion of employee retention credit Worksheet 1
 | 
						|
			//			'page'          => 1,
 | 
						|
			//			'template_page' => 1,
 | 
						|
			//			'function'      => [ 'draw' => 'drawSplitDecimalFloat' ],
 | 
						|
			//			'coordinates'   => [
 | 
						|
			//					[
 | 
						|
			//							'x'      => 448,
 | 
						|
			//							'y'      => 717,
 | 
						|
			//							'h'      => 14,
 | 
						|
			//							'w'      => 99,
 | 
						|
			//							'halign' => 'R',
 | 
						|
			//					],
 | 
						|
			//					[
 | 
						|
			//							'x'      => 553,
 | 
						|
			//							'y'      => 717,
 | 
						|
			//							'h'      => 14,
 | 
						|
			//							'w'      => 22,
 | 
						|
			//							'halign' => 'C',
 | 
						|
			//					],
 | 
						|
			//			],
 | 
						|
			//],
 | 
						|
 | 
						|
			//Initialize Page 2
 | 
						|
			[
 | 
						|
					'page'          => 2,
 | 
						|
					'template_page' => 2,
 | 
						|
					'value'         => $this->name,
 | 
						|
					'coordinates'   => [
 | 
						|
							'x'      => 36,
 | 
						|
							'y'      => 56,
 | 
						|
							'h'      => 15,
 | 
						|
							'w'      => 350,
 | 
						|
							'halign' => 'L',
 | 
						|
					],
 | 
						|
			],
 | 
						|
			[
 | 
						|
					'value'       => $this->ein,
 | 
						|
					'coordinates' => [
 | 
						|
							'x'      => 398,
 | 
						|
							'y'      => 56,
 | 
						|
							'h'      => 15,
 | 
						|
							'w'      => 175,
 | 
						|
							'halign' => 'C',
 | 
						|
					],
 | 
						|
			],
 | 
						|
			[
 | 
						|
					'value'         => '(Rev. ' . $this->year . ')',
 | 
						|
					'on_background' => true,
 | 
						|
					'coordinates'   => [
 | 
						|
							'x'          => 533,
 | 
						|
							'y'          => 751,
 | 
						|
							'h'          => 11,
 | 
						|
							'w'          => 45,
 | 
						|
							'halign'     => 'C',
 | 
						|
							'fill_color' => [ 255, 255, 255 ],
 | 
						|
					],
 | 
						|
					'font'          => [
 | 
						|
							'size' => 7,
 | 
						|
					],
 | 
						|
			],
 | 
						|
			//Finish initialize Page 2
 | 
						|
 | 
						|
 | 
						|
			//'l11d' => [ //Nonrefundable portion of employee retention credit after March 31st.
 | 
						|
			//			'page'          => 2,
 | 
						|
			//			'template_page' => 2,
 | 
						|
			//			'function'      => [ 'draw' => [ 'drawSplitDecimalFloat' ] ],
 | 
						|
			//			'coordinates'   => [
 | 
						|
			//					[
 | 
						|
			//							'x'      => 447,
 | 
						|
			//							'y'      => 97,
 | 
						|
			//							'h'      => 14,
 | 
						|
			//							'w'      => 99,
 | 
						|
			//							'halign' => 'R',
 | 
						|
			//					],
 | 
						|
			//					[
 | 
						|
			//							'x'      => 552,
 | 
						|
			//							'y'      => 97,
 | 
						|
			//							'h'      => 14,
 | 
						|
			//							'w'      => 22,
 | 
						|
			//							'halign' => 'C',
 | 
						|
			//					],
 | 
						|
			//			],
 | 
						|
			//],
 | 
						|
			//'l11e' => [
 | 
						|
			//			'page'          => 2,
 | 
						|
			//			'template_page' => 2,
 | 
						|
			//			'function'      => [ 'draw' => [ 'drawSplitDecimalFloat' ] ],
 | 
						|
			//			'coordinates'   => [
 | 
						|
			//					[
 | 
						|
			//							'x'      => 447,
 | 
						|
			//							'y'      => 127,
 | 
						|
			//							'h'      => 14,
 | 
						|
			//							'w'      => 99,
 | 
						|
			//							'halign' => 'R',
 | 
						|
			//					],
 | 
						|
			//					[
 | 
						|
			//							'x'      => 552,
 | 
						|
			//							'y'      => 127,
 | 
						|
			//							'h'      => 14,
 | 
						|
			//							'w'      => 22,
 | 
						|
			//							'halign' => 'C',
 | 
						|
			//					],
 | 
						|
			//			],
 | 
						|
			//],
 | 
						|
			//'l11f' => [
 | 
						|
			//		'page'          => 2,
 | 
						|
			//		'template_page' => 2,
 | 
						|
			//		'coordinates'   => [
 | 
						|
			//						'x'      => 327,
 | 
						|
			//						'y'      => 151,
 | 
						|
			//						'h'      => 14,
 | 
						|
			//						'w'      => 79,
 | 
						|
			//						'halign' => 'R',
 | 
						|
			//		],
 | 
						|
			//],
 | 
						|
			'l11g' => [
 | 
						|
					'page'          => 2,
 | 
						|
					'template_page' => 2,
 | 
						|
					'function'      => [ 'calc' => 'calcL11g', 'draw' => [ 'drawSplitDecimalFloat' ] ],
 | 
						|
					'coordinates'   => [
 | 
						|
							[
 | 
						|
									'x'      => 447,
 | 
						|
									'y'      => 175,
 | 
						|
									'h'      => 14,
 | 
						|
									'w'      => 99,
 | 
						|
									'halign' => 'R',
 | 
						|
							],
 | 
						|
							[
 | 
						|
									'x'      => 552,
 | 
						|
									'y'      => 175,
 | 
						|
									'h'      => 14,
 | 
						|
									'w'      => 22,
 | 
						|
									'halign' => 'C',
 | 
						|
							],
 | 
						|
					],
 | 
						|
			],
 | 
						|
			'l12' => [
 | 
						|
					'page'          => 2,
 | 
						|
					'template_page' => 2,
 | 
						|
					'function'      => [ 'calc' => 'calcL12', 'draw' => [ 'drawSplitDecimalFloat', 'showSBMisMatchTotals' ] ],
 | 
						|
					'coordinates'   => [
 | 
						|
							[
 | 
						|
									'x'      => 447,
 | 
						|
									'y'      => 198,
 | 
						|
									'h'      => 14,
 | 
						|
									'w'      => 99,
 | 
						|
									'halign' => 'R',
 | 
						|
							],
 | 
						|
							[
 | 
						|
									'x'      => 552,
 | 
						|
									'y'      => 198,
 | 
						|
									'h'      => 14,
 | 
						|
									'w'      => 22,
 | 
						|
									'halign' => 'C',
 | 
						|
							],
 | 
						|
					],
 | 
						|
			],
 | 
						|
			'l13a' => [
 | 
						|
					'page'          => 2,
 | 
						|
					'template_page' => 2,
 | 
						|
					'function'      => [  'calc' => 'calcL13a', 'draw' => [ 'drawSplitDecimalFloat' ] ],
 | 
						|
					'coordinates'   => [
 | 
						|
							[
 | 
						|
									'x'      => 447,
 | 
						|
									'y'      => 229,
 | 
						|
									'h'      => 14,
 | 
						|
									'w'      => 99,
 | 
						|
									'halign' => 'R',
 | 
						|
							],
 | 
						|
							[
 | 
						|
									'x'      => 552,
 | 
						|
									'y'      => 229,
 | 
						|
									'h'      => 14,
 | 
						|
									'w'      => 22,
 | 
						|
									'halign' => 'C',
 | 
						|
							],
 | 
						|
					],
 | 
						|
			],
 | 
						|
			//'l13b' => [
 | 
						|
			//		'page'          => 2,
 | 
						|
			//		'template_page' => 2,
 | 
						|
			//		'function'      => [ 'draw' => [ 'drawSplitDecimalFloat' ] ],
 | 
						|
			//		'coordinates'   => [
 | 
						|
			//				[
 | 
						|
			//						'x'      => 447,
 | 
						|
			//						'y'      => 252,
 | 
						|
			//						'h'      => 14,
 | 
						|
			//						'w'      => 99,
 | 
						|
			//						'halign' => 'R',
 | 
						|
			//				],
 | 
						|
			//				[
 | 
						|
			//						'x'      => 552,
 | 
						|
			//						'y'      => 252,
 | 
						|
			//						'h'      => 14,
 | 
						|
			//						'w'      => 22,
 | 
						|
			//						'halign' => 'C',
 | 
						|
			//				],
 | 
						|
			//		],
 | 
						|
			//],
 | 
						|
			//'l13c' => [
 | 
						|
			//		'page'          => 2,
 | 
						|
			//		'template_page' => 2,
 | 
						|
			//		'function'      => [ 'draw' => [ 'drawSplitDecimalFloat' ] ],
 | 
						|
			//		'coordinates'   => [
 | 
						|
			//				[
 | 
						|
			//						'x'      => 447,
 | 
						|
			//						'y'      => 283,
 | 
						|
			//						'h'      => 14,
 | 
						|
			//						'w'      => 99,
 | 
						|
			//						'halign' => 'R',
 | 
						|
			//				],
 | 
						|
			//				[
 | 
						|
			//						'x'      => 552,
 | 
						|
			//						'y'      => 283,
 | 
						|
			//						'h'      => 14,
 | 
						|
			//						'w'      => 22,
 | 
						|
			//						'halign' => 'C',
 | 
						|
			//				],
 | 
						|
			//		],
 | 
						|
			//],
 | 
						|
			//'l13d' => [
 | 
						|
			//		'page'          => 2,
 | 
						|
			//		'template_page' => 2,
 | 
						|
			//		'function'      => [ 'draw' => [ 'drawSplitDecimalFloat' ] ],
 | 
						|
			//		'coordinates'   => [
 | 
						|
			//				[
 | 
						|
			//						'x'      => 447,
 | 
						|
			//						'y'      => 307,
 | 
						|
			//						'h'      => 14,
 | 
						|
			//						'w'      => 99,
 | 
						|
			//						'halign' => 'R',
 | 
						|
			//				],
 | 
						|
			//				[
 | 
						|
			//						'x'      => 552,
 | 
						|
			//						'y'      => 307,
 | 
						|
			//						'h'      => 14,
 | 
						|
			//						'w'      => 22,
 | 
						|
			//						'halign' => 'C',
 | 
						|
			//				],
 | 
						|
			//		],
 | 
						|
			//],
 | 
						|
			//'l13e' => [
 | 
						|
			//		'page'          => 2,
 | 
						|
			//		'template_page' => 2,
 | 
						|
			//		'function'      => [ 'draw' => [ 'drawSplitDecimalFloat' ] ],
 | 
						|
			//		'coordinates'   => [
 | 
						|
			//				[
 | 
						|
			//						'x'      => 447,
 | 
						|
			//						'y'      => 337,
 | 
						|
			//						'h'      => 14,
 | 
						|
			//						'w'      => 99,
 | 
						|
			//						'halign' => 'R',
 | 
						|
			//				],
 | 
						|
			//				[
 | 
						|
			//						'x'      => 552,
 | 
						|
			//						'y'      => 337,
 | 
						|
			//						'h'      => 14,
 | 
						|
			//						'w'      => 22,
 | 
						|
			//						'halign' => 'C',
 | 
						|
			//				],
 | 
						|
			//		],
 | 
						|
			//],
 | 
						|
			//'l13f' => [
 | 
						|
			//		'page'          => 2,
 | 
						|
			//		'template_page' => 2,
 | 
						|
			//		'function'      => [ 'draw' => [ 'drawSplitDecimalFloat' ] ],
 | 
						|
			//		'coordinates'   => [
 | 
						|
			//				[
 | 
						|
			//						'x'      => 447,
 | 
						|
			//						'y'      => 367,
 | 
						|
			//						'h'      => 14,
 | 
						|
			//						'w'      => 99,
 | 
						|
			//						'halign' => 'R',
 | 
						|
			//				],
 | 
						|
			//				[
 | 
						|
			//						'x'      => 552,
 | 
						|
			//						'y'      => 367,
 | 
						|
			//						'h'      => 14,
 | 
						|
			//						'w'      => 22,
 | 
						|
			//						'halign' => 'C',
 | 
						|
			//				],
 | 
						|
			//		],
 | 
						|
			//],
 | 
						|
			'l13g' => [
 | 
						|
					'page'          => 2,
 | 
						|
					'template_page' => 2,
 | 
						|
					'function'      => [  'calc' => 'calcL13g', 'draw' => [ 'drawSplitDecimalFloat' ] ],
 | 
						|
					'coordinates'   => [
 | 
						|
							[
 | 
						|
									'x'      => 447,
 | 
						|
									'y'      => 391,
 | 
						|
									'h'      => 14,
 | 
						|
									'w'      => 99,
 | 
						|
									'halign' => 'R',
 | 
						|
							],
 | 
						|
							[
 | 
						|
									'x'      => 552,
 | 
						|
									'y'      => 391,
 | 
						|
									'h'      => 14,
 | 
						|
									'w'      => 22,
 | 
						|
									'halign' => 'C',
 | 
						|
							],
 | 
						|
					],
 | 
						|
			],
 | 
						|
			//'l13h' => [
 | 
						|
			//		'page'          => 2,
 | 
						|
			//		'template_page' => 2,
 | 
						|
			//		'function'      => [ 'draw' => [ 'drawSplitDecimalFloat' ] ],
 | 
						|
			//		'coordinates'   => [
 | 
						|
			//				[
 | 
						|
			//						'x'      => 447,
 | 
						|
			//						'y'      => 415,
 | 
						|
			//						'h'      => 14,
 | 
						|
			//						'w'      => 99,
 | 
						|
			//						'halign' => 'R',
 | 
						|
			//				],
 | 
						|
			//				[
 | 
						|
			//						'x'      => 552,
 | 
						|
			//						'y'      => 415,
 | 
						|
			//						'h'      => 14,
 | 
						|
			//						'w'      => 22,
 | 
						|
			//						'halign' => 'C',
 | 
						|
			//				],
 | 
						|
			//		],
 | 
						|
			//],
 | 
						|
			//'l13i' => [
 | 
						|
			//		'page'          => 2,
 | 
						|
			//		'template_page' => 2,
 | 
						|
			//		'function'      => [  'calc' => 'calcL13i', 'draw' => [ 'drawSplitDecimalFloat' ] ],
 | 
						|
			//		'coordinates'   => [
 | 
						|
			//				[
 | 
						|
			//						'x'      => 447,
 | 
						|
			//						'y'      => 438,
 | 
						|
			//						'h'      => 14,
 | 
						|
			//						'w'      => 99,
 | 
						|
			//						'halign' => 'R',
 | 
						|
			//				],
 | 
						|
			//				[
 | 
						|
			//						'x'      => 552,
 | 
						|
			//						'y'      => 438,
 | 
						|
			//						'h'      => 14,
 | 
						|
			//						'w'      => 22,
 | 
						|
			//						'halign' => 'C',
 | 
						|
			//				],
 | 
						|
			//		],
 | 
						|
			//],
 | 
						|
			'l14'  => [
 | 
						|
					'page'            => 2,
 | 
						|
					'template_page'   => 2,
 | 
						|
					'function'        => [ 'calc' => 'calcL14', 'draw' => [ 'drawSplitDecimalFloat' ] ],
 | 
						|
					'draw_zero_value' => true,
 | 
						|
					'coordinates'     => [
 | 
						|
							[
 | 
						|
									'x'      => 447,
 | 
						|
									'y'      => 463,
 | 
						|
									'h'      => 14,
 | 
						|
									'w'      => 99,
 | 
						|
									'halign' => 'R',
 | 
						|
							],
 | 
						|
							[
 | 
						|
									'x'      => 552,
 | 
						|
									'y'      => 463,
 | 
						|
									'h'      => 14,
 | 
						|
									'w'      => 22,
 | 
						|
									'halign' => 'C',
 | 
						|
							],
 | 
						|
					],
 | 
						|
			],
 | 
						|
			'l15'  => [
 | 
						|
					'page'          => 2,
 | 
						|
					'template_page' => 2,
 | 
						|
					'function'      => [ 'calc' => 'calcL15', 'draw' => [ 'drawSplitDecimalFloat' ] ],
 | 
						|
					'coordinates'   => [
 | 
						|
							[
 | 
						|
									'x'      => 306,
 | 
						|
									'y'      => 487,
 | 
						|
									'h'      => 14,
 | 
						|
									'w'      => 65,
 | 
						|
									'halign' => 'R',
 | 
						|
							],
 | 
						|
							[
 | 
						|
									'x'      => 374,
 | 
						|
									'y'      => 487,
 | 
						|
									'h'      => 14,
 | 
						|
									'w'      => 22,
 | 
						|
									'halign' => 'C',
 | 
						|
							],
 | 
						|
					],
 | 
						|
			],
 | 
						|
			'l15a' => [
 | 
						|
					'page'          => 2,
 | 
						|
					'template_page' => 2,
 | 
						|
					'function'      => [ 'draw' => [ 'filterL15A', 'drawCheckbox' ] ],
 | 
						|
					'coordinates'   => [
 | 
						|
							[
 | 
						|
									'x'      => 446,
 | 
						|
									'y'      => 489,
 | 
						|
									'h'      => 6,
 | 
						|
									'w'      => 10,
 | 
						|
									'halign' => 'C',
 | 
						|
							],
 | 
						|
					],
 | 
						|
					'font'          => [
 | 
						|
							'size' => 8,
 | 
						|
							'type' => 'B',
 | 
						|
					],
 | 
						|
			],
 | 
						|
			'l15b' => [
 | 
						|
					'page'          => 2,
 | 
						|
					'template_page' => 2,
 | 
						|
					'function'      => [ 'draw' => [ 'filterL15B', 'drawCheckbox' ] ],
 | 
						|
					'coordinates'   => [
 | 
						|
							[
 | 
						|
									'x'      => 518,
 | 
						|
									'y'      => 489,
 | 
						|
									'h'      => 6,
 | 
						|
									'w'      => 10,
 | 
						|
									'halign' => 'C',
 | 
						|
							],
 | 
						|
					],
 | 
						|
					'font'          => [
 | 
						|
							'size' => 8,
 | 
						|
							'type' => 'B',
 | 
						|
					],
 | 
						|
			],
 | 
						|
 | 
						|
 | 
						|
			//Put this after Month1,Month2,Month3 are set, as we can automatically determine it for the most part.
 | 
						|
			'l16'  => [
 | 
						|
					'page'          => 2,
 | 
						|
					'template_page' => 2,
 | 
						|
					'function'      => [ 'draw' => [ 'filterL16', 'drawCheckbox' ] ],
 | 
						|
					'coordinates'   => [
 | 
						|
							'a' => [
 | 
						|
									'x'      => 109,
 | 
						|
									'y'      => 546,
 | 
						|
									'h'      => 6,
 | 
						|
									'w'      => 10,
 | 
						|
									'halign' => 'C',
 | 
						|
							],
 | 
						|
							'b' => [
 | 
						|
									'x'      => 109,
 | 
						|
									'y'      => 595,
 | 
						|
									'h'      => 6,
 | 
						|
									'w'      => 10,
 | 
						|
									'halign' => 'C',
 | 
						|
							],
 | 
						|
							'c' => [
 | 
						|
									'x'      => 109,
 | 
						|
									'y'      => 709,
 | 
						|
									'h'      => 6,
 | 
						|
									'w'      => 10,
 | 
						|
									'halign' => 'C',
 | 
						|
							],
 | 
						|
 | 
						|
					],
 | 
						|
					'font'          => [
 | 
						|
							'size' => 8,
 | 
						|
							'type' => 'B',
 | 
						|
					],
 | 
						|
			],
 | 
						|
 | 
						|
			'l16_month1'      => [
 | 
						|
					'page'          => 2,
 | 
						|
					'template_page' => 2,
 | 
						|
					'function'      => [ 'prefilter' => [ 'stripNonFloat', 'isNumeric' ], 'draw' => 'drawSplitDecimalFloat' ],
 | 
						|
					'coordinates'   => [
 | 
						|
							[
 | 
						|
									'x'      => 232,
 | 
						|
									'y'      => 625,
 | 
						|
									'h'      => 14,
 | 
						|
									'w'      => 99,
 | 
						|
									'halign' => 'R',
 | 
						|
							],
 | 
						|
							[
 | 
						|
									'x'      => 333,
 | 
						|
									'y'      => 625,
 | 
						|
									'h'      => 14,
 | 
						|
									'w'      => 26,
 | 
						|
									'halign' => 'C',
 | 
						|
							],
 | 
						|
					],
 | 
						|
			],
 | 
						|
			'l16_month2'      => [
 | 
						|
					'page'          => 2,
 | 
						|
					'template_page' => 2,
 | 
						|
					'function'      => [ 'prefilter' => [ 'stripNonFloat', 'isNumeric' ], 'draw' => 'drawSplitDecimalFloat' ],
 | 
						|
					'coordinates'   => [
 | 
						|
							[
 | 
						|
									'x'      => 232,
 | 
						|
									'y'      => 646,
 | 
						|
									'h'      => 14,
 | 
						|
									'w'      => 99,
 | 
						|
									'halign' => 'R',
 | 
						|
							],
 | 
						|
							[
 | 
						|
									'x'      => 333,
 | 
						|
									'y'      => 646,
 | 
						|
									'h'      => 14,
 | 
						|
									'w'      => 26,
 | 
						|
									'halign' => 'C',
 | 
						|
							],
 | 
						|
					],
 | 
						|
			],
 | 
						|
			'l16_month3'      => [
 | 
						|
					'page'          => 2,
 | 
						|
					'template_page' => 2,
 | 
						|
					'function'      => [ 'prefilter' => [ 'stripNonFloat', 'isNumeric' ], 'draw' => 'drawSplitDecimalFloat' ],
 | 
						|
					'coordinates'   => [
 | 
						|
							[
 | 
						|
									'x'      => 232,
 | 
						|
									'y'      => 668,
 | 
						|
									'h'      => 14,
 | 
						|
									'w'      => 99,
 | 
						|
									'halign' => 'R',
 | 
						|
							],
 | 
						|
							[
 | 
						|
									'x'      => 333,
 | 
						|
									'y'      => 668,
 | 
						|
									'h'      => 14,
 | 
						|
									'w'      => 26,
 | 
						|
									'halign' => 'C',
 | 
						|
							],
 | 
						|
					],
 | 
						|
			],
 | 
						|
			'l16_month_total' => [
 | 
						|
					'page'          => 2,
 | 
						|
					'template_page' => 2,
 | 
						|
					'function'      => [ 'calc' => 'calcL16MonthTotal', 'draw' => [ 'drawSplitDecimalFloat', 'showL16MisMatchTotals' ] ],
 | 
						|
					'coordinates'   => [
 | 
						|
							[
 | 
						|
									'x'      => 232,
 | 
						|
									'y'      => 690,
 | 
						|
									'h'      => 14,
 | 
						|
									'w'      => 99,
 | 
						|
									'halign' => 'R',
 | 
						|
							],
 | 
						|
							[
 | 
						|
									'x'      => 333,
 | 
						|
									'y'      => 690,
 | 
						|
									'h'      => 14,
 | 
						|
									'w'      => 26,
 | 
						|
									'halign' => 'C',
 | 
						|
							],
 | 
						|
					],
 | 
						|
			],
 | 
						|
 | 
						|
			//Initialize Page 3
 | 
						|
			[
 | 
						|
					'page'          => 3,
 | 
						|
					'template_page' => 3,
 | 
						|
					'value'         => $this->name,
 | 
						|
					'coordinates'   => [
 | 
						|
							'x'      => 36,
 | 
						|
							'y'      => 56,
 | 
						|
							'h'      => 15,
 | 
						|
							'w'      => 350,
 | 
						|
							'halign' => 'L',
 | 
						|
					],
 | 
						|
			],
 | 
						|
			[
 | 
						|
					'value'       => $this->ein,
 | 
						|
					'coordinates' => [
 | 
						|
							'x'      => 398,
 | 
						|
							'y'      => 56,
 | 
						|
							'h'      => 15,
 | 
						|
							'w'      => 175,
 | 
						|
							'halign' => 'C',
 | 
						|
					],
 | 
						|
			],
 | 
						|
			[
 | 
						|
					'value'         => '(Rev. ' . $this->year . ')',
 | 
						|
					'on_background' => true,
 | 
						|
					'coordinates'   => [
 | 
						|
							'x'          => 533,
 | 
						|
							'y'          => 732.5,
 | 
						|
							'h'          => 11,
 | 
						|
							'w'          => 45,
 | 
						|
							'halign'     => 'C',
 | 
						|
							'fill_color' => [ 255, 255, 255 ],
 | 
						|
					],
 | 
						|
					'font'          => [
 | 
						|
							'size' => 7,
 | 
						|
					],
 | 
						|
			],
 | 
						|
			//Finish initialize Page 3
 | 
						|
 | 
						|
			//'l19'  => [
 | 
						|
			//		'page'            => 3,
 | 
						|
			//		'template_page'   => 3,
 | 
						|
			//		'function'        => [ 'draw' => [ 'drawSplitDecimalFloat' ] ],
 | 
						|
			//		'coordinates'     => [
 | 
						|
			//				[
 | 
						|
			//						'x'      => 447,
 | 
						|
			//						'y'      => 169,
 | 
						|
			//						'h'      => 14,
 | 
						|
			//						'w'      => 99,
 | 
						|
			//						'halign' => 'R',
 | 
						|
			//				],
 | 
						|
			//				[
 | 
						|
			//						'x'      => 552,
 | 
						|
			//						'y'      => 169,
 | 
						|
			//						'h'      => 14,
 | 
						|
			//						'w'      => 22,
 | 
						|
			//						'halign' => 'C',
 | 
						|
			//				],
 | 
						|
			//		],
 | 
						|
			//],
 | 
						|
			//'l20'  => [
 | 
						|
			//		'page'            => 3,
 | 
						|
			//		'template_page'   => 3,
 | 
						|
			//		'function'        => [ 'draw' => [ 'drawSplitDecimalFloat' ] ],
 | 
						|
			//		'coordinates'     => [
 | 
						|
			//				[
 | 
						|
			//						'x'      => 447,
 | 
						|
			//						'y'      => 187,
 | 
						|
			//						'h'      => 14,
 | 
						|
			//						'w'      => 99,
 | 
						|
			//						'halign' => 'R',
 | 
						|
			//				],
 | 
						|
			//				[
 | 
						|
			//						'x'      => 552,
 | 
						|
			//						'y'      => 187,
 | 
						|
			//						'h'      => 14,
 | 
						|
			//						'w'      => 22,
 | 
						|
			//						'halign' => 'C',
 | 
						|
			//				],
 | 
						|
			//		],
 | 
						|
			//],
 | 
						|
			//'l21'  => [
 | 
						|
			//		'page'            => 3,
 | 
						|
			//		'template_page'   => 3,
 | 
						|
			//		'function'        => [ 'draw' => [ 'drawSplitDecimalFloat' ] ],
 | 
						|
			//		'coordinates'     => [
 | 
						|
			//				[
 | 
						|
			//						'x'      => 447,
 | 
						|
			//						'y'      => 205,
 | 
						|
			//						'h'      => 14,
 | 
						|
			//						'w'      => 99,
 | 
						|
			//						'halign' => 'R',
 | 
						|
			//				],
 | 
						|
			//				[
 | 
						|
			//						'x'      => 552,
 | 
						|
			//						'y'      => 205,
 | 
						|
			//						'h'      => 14,
 | 
						|
			//						'w'      => 22,
 | 
						|
			//						'halign' => 'C',
 | 
						|
			//				],
 | 
						|
			//		],
 | 
						|
			//],
 | 
						|
			//'l22'  => [
 | 
						|
			//		'page'            => 3,
 | 
						|
			//		'template_page'   => 3,
 | 
						|
			//		'function'        => [ 'draw' => [ 'drawSplitDecimalFloat' ] ],
 | 
						|
			//		'coordinates'     => [
 | 
						|
			//				[
 | 
						|
			//						'x'      => 447,
 | 
						|
			//						'y'      => 223,
 | 
						|
			//						'h'      => 14,
 | 
						|
			//						'w'      => 99,
 | 
						|
			//						'halign' => 'R',
 | 
						|
			//				],
 | 
						|
			//				[
 | 
						|
			//						'x'      => 552,
 | 
						|
			//						'y'      => 223,
 | 
						|
			//						'h'      => 14,
 | 
						|
			//						'w'      => 22,
 | 
						|
			//						'halign' => 'C',
 | 
						|
			//				],
 | 
						|
			//		],
 | 
						|
			//],
 | 
						|
			//'l23'  => [
 | 
						|
			//		'page'            => 3,
 | 
						|
			//		'template_page'   => 3,
 | 
						|
			//		'function'        => [ 'draw' => [ 'drawSplitDecimalFloat' ] ],
 | 
						|
			//		'coordinates'     => [
 | 
						|
			//				[
 | 
						|
			//						'x'      => 447,
 | 
						|
			//						'y'      => 241,
 | 
						|
			//						'h'      => 14,
 | 
						|
			//						'w'      => 99,
 | 
						|
			//						'halign' => 'R',
 | 
						|
			//				],
 | 
						|
			//				[
 | 
						|
			//						'x'      => 552,
 | 
						|
			//						'y'      => 241,
 | 
						|
			//						'h'      => 14,
 | 
						|
			//						'w'      => 22,
 | 
						|
			//						'halign' => 'C',
 | 
						|
			//				],
 | 
						|
			//		],
 | 
						|
			//],
 | 
						|
			//'l24'  => [
 | 
						|
			//		'page'            => 3,
 | 
						|
			//		'template_page'   => 3,
 | 
						|
			//		'function'        => [ 'draw' => [ 'drawSplitDecimalFloat' ] ],
 | 
						|
			//		'coordinates'     => [
 | 
						|
			//				[
 | 
						|
			//						'x'      => 447,
 | 
						|
			//						'y'      => 259,
 | 
						|
			//						'h'      => 14,
 | 
						|
			//						'w'      => 99,
 | 
						|
			//						'halign' => 'R',
 | 
						|
			//				],
 | 
						|
			//				[
 | 
						|
			//						'x'      => 552,
 | 
						|
			//						'y'      => 259,
 | 
						|
			//						'h'      => 14,
 | 
						|
			//						'w'      => 22,
 | 
						|
			//						'halign' => 'C',
 | 
						|
			//				],
 | 
						|
			//		],
 | 
						|
			//],
 | 
						|
			//'l25'  => [
 | 
						|
			//		'page'            => 3,
 | 
						|
			//		'template_page'   => 3,
 | 
						|
			//		'function'        => [ 'draw' => [ 'drawSplitDecimalFloat' ] ],
 | 
						|
			//		'coordinates'     => [
 | 
						|
			//				[
 | 
						|
			//						'x'      => 447,
 | 
						|
			//						'y'      => 283,
 | 
						|
			//						'h'      => 14,
 | 
						|
			//						'w'      => 99,
 | 
						|
			//						'halign' => 'R',
 | 
						|
			//				],
 | 
						|
			//				[
 | 
						|
			//						'x'      => 552,
 | 
						|
			//						'y'      => 283,
 | 
						|
			//						'h'      => 14,
 | 
						|
			//						'w'      => 22,
 | 
						|
			//						'halign' => 'C',
 | 
						|
			//				],
 | 
						|
			//		],
 | 
						|
			//],
 | 
						|
			//'l26'  => [
 | 
						|
			//		'page'            => 3,
 | 
						|
			//		'template_page'   => 3,
 | 
						|
			//		'function'        => [ 'draw' => [ 'drawSplitDecimalFloat' ] ],
 | 
						|
			//		'coordinates'     => [
 | 
						|
			//				[
 | 
						|
			//						'x'      => 447,
 | 
						|
			//						'y'      => 307,
 | 
						|
			//						'h'      => 14,
 | 
						|
			//						'w'      => 99,
 | 
						|
			//						'halign' => 'R',
 | 
						|
			//				],
 | 
						|
			//				[
 | 
						|
			//						'x'      => 552,
 | 
						|
			//						'y'      => 307,
 | 
						|
			//						'h'      => 14,
 | 
						|
			//						'w'      => 22,
 | 
						|
			//						'halign' => 'C',
 | 
						|
			//				],
 | 
						|
			//		],
 | 
						|
			//],
 | 
						|
			//'l27'  => [
 | 
						|
			//		'page'            => 3,
 | 
						|
			//		'template_page'   => 3,
 | 
						|
			//		'function'        => [ 'draw' => [ 'drawSplitDecimalFloat' ] ],
 | 
						|
			//		'coordinates'     => [
 | 
						|
			//				[
 | 
						|
			//						'x'      => 447,
 | 
						|
			//						'y'      => 325,
 | 
						|
			//						'h'      => 14,
 | 
						|
			//						'w'      => 99,
 | 
						|
			//						'halign' => 'R',
 | 
						|
			//				],
 | 
						|
			//				[
 | 
						|
			//						'x'      => 552,
 | 
						|
			//						'y'      => 325,
 | 
						|
			//						'h'      => 14,
 | 
						|
			//						'w'      => 22,
 | 
						|
			//						'halign' => 'C',
 | 
						|
			//				],
 | 
						|
			//		],
 | 
						|
			//],
 | 
						|
			//'l28'  => [
 | 
						|
			//		'page'            => 3,
 | 
						|
			//		'template_page'   => 3,
 | 
						|
			//		'function'        => [ 'draw' => [ 'drawSplitDecimalFloat' ] ],
 | 
						|
			//		'coordinates'     => [
 | 
						|
			//				[
 | 
						|
			//						'x'      => 447,
 | 
						|
			//						'y'      => 349,
 | 
						|
			//						'h'      => 14,
 | 
						|
			//						'w'      => 99,
 | 
						|
			//						'halign' => 'R',
 | 
						|
			//				],
 | 
						|
			//				[
 | 
						|
			//						'x'      => 552,
 | 
						|
			//						'y'      => 349,
 | 
						|
			//						'h'      => 14,
 | 
						|
			//						'w'      => 22,
 | 
						|
			//						'halign' => 'C',
 | 
						|
			//				],
 | 
						|
			//		],
 | 
						|
			//],
 | 
						|
 | 
						|
			//Initialize Page 5 (Page 4 was left blank)
 | 
						|
			[
 | 
						|
					'page'          => 5,
 | 
						|
					'template_page' => 5,
 | 
						|
					'value'         => substr( $this->year, 2, 2 ),
 | 
						|
					'on_background' => true,
 | 
						|
					'coordinates'   => [
 | 
						|
							'x'          => 536,
 | 
						|
							'y'          => 567,
 | 
						|
							'h'          => 0,
 | 
						|
							'w'          => 30,
 | 
						|
							'halign'     => 'L',
 | 
						|
							'fill_color' => [ 255, 255, 255 ],
 | 
						|
					],
 | 
						|
					'font'          => [
 | 
						|
							'size' => 20,
 | 
						|
							'type' => 'B',
 | 
						|
					],
 | 
						|
			],
 | 
						|
			//Finish initialize Page 5
 | 
						|
 | 
						|
			[
 | 
						|
					'page'          => 5,
 | 
						|
					'template_page' => 5,
 | 
						|
					'function'      => [ 'draw' => 'drawPage3EIN' ],
 | 
						|
					'coordinates'   => [
 | 
						|
							[
 | 
						|
									'x'      => 54,
 | 
						|
									'y'      => 614,
 | 
						|
									'h'      => 15,
 | 
						|
									'w'      => 30,
 | 
						|
									'halign' => 'C',
 | 
						|
							],
 | 
						|
							[
 | 
						|
									'x'      => 87,
 | 
						|
									'y'      => 614,
 | 
						|
									'h'      => 15,
 | 
						|
									'w'      => 50,
 | 
						|
									'halign' => 'C',
 | 
						|
							],
 | 
						|
					],
 | 
						|
					'font'          => [
 | 
						|
							'size' => 10,
 | 
						|
					],
 | 
						|
			],
 | 
						|
 | 
						|
			[
 | 
						|
					'page'          => 5,
 | 
						|
					'template_page' => 5,
 | 
						|
					'value' 		=> $this->l14,
 | 
						|
					'function'      => [ 'calc' => 'calcL14', 'draw' => [ 'drawSplitDecimalFloat' ] ],
 | 
						|
					'coordinates'   => [
 | 
						|
							[
 | 
						|
									'x'      => 440,
 | 
						|
									'y'      => 601,
 | 
						|
									'h'      => 17,
 | 
						|
									'w'      => 95,
 | 
						|
									'halign' => 'R',
 | 
						|
							],
 | 
						|
							[
 | 
						|
									'x'      => 542,
 | 
						|
									'y'      => 601,
 | 
						|
									'h'      => 17,
 | 
						|
									'w'      => 32,
 | 
						|
									'halign' => 'C',
 | 
						|
							],
 | 
						|
					],
 | 
						|
					'font'          => [
 | 
						|
							'size' => 22,
 | 
						|
					],
 | 
						|
			],
 | 
						|
 | 
						|
			[
 | 
						|
					'page'          => 5,
 | 
						|
					'template_page' => 5,
 | 
						|
					'value'         => $this->trade_name,
 | 
						|
					'coordinates'   => [
 | 
						|
							'x'      => 229,
 | 
						|
							'y'      => 638,
 | 
						|
							'h'      => 15,
 | 
						|
							'w'      => 250,
 | 
						|
							'halign' => 'L',
 | 
						|
					],
 | 
						|
					'font'          => [
 | 
						|
							'size' => 10,
 | 
						|
					],
 | 
						|
			],
 | 
						|
			[
 | 
						|
					'page'          => 5,
 | 
						|
					'template_page' => 5,
 | 
						|
					'value'         => $this->address,
 | 
						|
					'coordinates'   => [
 | 
						|
							'x'      => 229,
 | 
						|
							'y'      => 662,
 | 
						|
							'h'      => 15,
 | 
						|
							'w'      => 250,
 | 
						|
							'halign' => 'L',
 | 
						|
					],
 | 
						|
					'font'          => [
 | 
						|
							'size' => 10,
 | 
						|
					],
 | 
						|
			],
 | 
						|
			[
 | 
						|
					'page'          => 5,
 | 
						|
					'template_page' => 5,
 | 
						|
					'value'         => $this->city . ', ' . $this->state . ', ' . $this->zip_code,
 | 
						|
					'coordinates'   => [
 | 
						|
							'x'      => 229,
 | 
						|
							'y'      => 688,
 | 
						|
							'h'      => 15,
 | 
						|
							'w'      => 250,
 | 
						|
							'halign' => 'L',
 | 
						|
					],
 | 
						|
					'font'          => [
 | 
						|
							'size' => 10,
 | 
						|
					],
 | 
						|
			],
 | 
						|
			[
 | 
						|
					'page'          => 5,
 | 
						|
					'template_page' => 5,
 | 
						|
					'function'      => [ 'draw' => [ 'drawPage3Quarter', 'drawCheckBox' ] ],
 | 
						|
					'coordinates'   => [
 | 
						|
							1 => [
 | 
						|
									'x'      => 50.5,
 | 
						|
									'y'      => 650,
 | 
						|
									'h'      => 10,
 | 
						|
									'w'      => 11,
 | 
						|
									'halign' => 'C',
 | 
						|
							],
 | 
						|
							2 => [
 | 
						|
									'x'      => 50.5,
 | 
						|
									'y'      => 682,
 | 
						|
									'h'      => 10,
 | 
						|
									'w'      => 11,
 | 
						|
									'halign' => 'C',
 | 
						|
							],
 | 
						|
							3 => [
 | 
						|
									'x'      => 137.5,
 | 
						|
									'y'      => 652,
 | 
						|
									'h'      => 10,
 | 
						|
									'w'      => 11,
 | 
						|
									'halign' => 'C',
 | 
						|
							],
 | 
						|
							4 => [
 | 
						|
									'x'      => 137.5,
 | 
						|
									'y'      => 682,
 | 
						|
									'h'      => 10,
 | 
						|
									'w'      => 11,
 | 
						|
									'halign' => 'C',
 | 
						|
							],
 | 
						|
					],
 | 
						|
					'font'          => [
 | 
						|
							'size' => 10,
 | 
						|
							'type' => 'B',
 | 
						|
					],
 | 
						|
			],
 | 
						|
 | 
						|
		];
 | 
						|
 | 
						|
		if ( isset( $template_schema[$name] ) ) {
 | 
						|
			return $name;
 | 
						|
		} else {
 | 
						|
			return $template_schema;
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	function filterL15A( $value, $schema ) {
 | 
						|
		if ( $this->l15 > 0 ) {
 | 
						|
			return $value;
 | 
						|
		}
 | 
						|
 | 
						|
		return false;
 | 
						|
	}
 | 
						|
 | 
						|
	function filterL15B( $value, $schema ) {
 | 
						|
		if ( $this->l15 > 0 ) {
 | 
						|
			return $value;
 | 
						|
		}
 | 
						|
 | 
						|
		return false;
 | 
						|
	}
 | 
						|
 | 
						|
	function filterL16( $value, $schema ) {
 | 
						|
		if ( $this->l12 < $this->line_16_cutoff_amount ) {
 | 
						|
			$value = [ 'a' ];
 | 
						|
			unset( $this->l16_month1, $this->l16_month2, $this->l16_month3, $this->l16_month_total );
 | 
						|
		} else if ( $this->l16_month1 > 0 || $this->l16_month2 > 0 || $this->l16_month3 > 0 ) {
 | 
						|
			$value = [ 'b' ];
 | 
						|
		} else {
 | 
						|
			$value = [ 'c' ];
 | 
						|
		}
 | 
						|
 | 
						|
		return $value;
 | 
						|
	}
 | 
						|
 | 
						|
	function drawPage3Quarter( $value, $schema ) {
 | 
						|
		return $this->quarter;
 | 
						|
	}
 | 
						|
 | 
						|
	function drawPage3EIN( $value, $schema ) {
 | 
						|
		$value = $this->ein;
 | 
						|
 | 
						|
		$this->Draw( substr( $value, 0, 2 ), $this->getSchemaSpecificCoordinates( $schema, 0 ) );
 | 
						|
		$this->Draw( substr( $value, 2, 7 ), $this->getSchemaSpecificCoordinates( $schema, 1 ) );
 | 
						|
 | 
						|
		return true;
 | 
						|
	}
 | 
						|
 | 
						|
	function calcL5A2( $value = null, $schema = null ) {
 | 
						|
		$this->l5a2 = $this->MoneyFormat( bcmul( $this->l5a, $this->social_security_rate ) );
 | 
						|
 | 
						|
		return $this->l5a2;
 | 
						|
	}
 | 
						|
 | 
						|
	//function calcL5Ai2( $value = null, $schema = null ) {
 | 
						|
	//	$this->l5ai2 = $this->MoneyFormat( bcmul( $this->l5ai, bcdiv( $this->social_security_rate, 2 ) ) );
 | 
						|
	//
 | 
						|
	//	return $this->l5ai2;
 | 
						|
	//}
 | 
						|
	//function calcL5Aii2( $value = null, $schema = null ) {
 | 
						|
	//	$this->l5aii2 = $this->MoneyFormat( bcmul( $this->l5aii, bcdiv( $this->social_security_rate, 2 ) ) );
 | 
						|
	//
 | 
						|
	//	return $this->l5aii2;
 | 
						|
	//}
 | 
						|
 | 
						|
	function calcL5B2( $value = null, $schema = null ) {
 | 
						|
		$this->l5b2 = $this->MoneyFormat( bcmul( $this->l5b, $this->social_security_rate ) );
 | 
						|
 | 
						|
		return $this->l5b2;
 | 
						|
	}
 | 
						|
 | 
						|
	function calcL5C2( $value = null, $schema = null ) {
 | 
						|
		$this->l5c2 = $this->MoneyFormat( bcmul( $this->l5c, $this->medicare_rate ) );
 | 
						|
 | 
						|
		return $this->l5c2;
 | 
						|
	}
 | 
						|
 | 
						|
	function calcL5D2( $value = null, $schema = null ) {
 | 
						|
		$this->l5d2 = $this->MoneyFormat( bcmul( $this->l5d, $this->medicare_additional_rate ) );
 | 
						|
 | 
						|
		return $this->l5d2;
 | 
						|
	}
 | 
						|
 | 
						|
	function calcL5E( $value = null, $schema = null ) {
 | 
						|
		$this->l5e = bcadd( bcadd( bcadd( bcadd( bcadd( $this->l5a2, $this->l5b2 ), $this->l5c2 ), $this->l5d2 ), $this->l5ai2 ), $this->l5aii2 );
 | 
						|
 | 
						|
		if ( $this->l5e == 0 ) {
 | 
						|
			$this->l4 = true;
 | 
						|
		} else {
 | 
						|
			$this->l4 = false;
 | 
						|
		}
 | 
						|
 | 
						|
		return $this->l5e;
 | 
						|
	}
 | 
						|
 | 
						|
	function calcL6( $value = null, $schema = null ) {
 | 
						|
		$this->l6 = bcadd( bcadd( $this->l3, $this->l5e ), $this->l5f );
 | 
						|
 | 
						|
		return $this->l6;
 | 
						|
	}
 | 
						|
 | 
						|
	function showL5Warning() {
 | 
						|
		if ( isset( $this->l5_actual_deducted ) ) {
 | 
						|
			$l5e_actual_diff = round( bcsub( $this->l5_actual_deducted, $this->l5e ), 2 );
 | 
						|
			Debug::Text( 'L5 Actual Deducted: ' . $this->l5_actual_deducted . ' L5e: ' . $this->l5e, __FILE__, __LINE__, __METHOD__, 10 );
 | 
						|
 | 
						|
			$threshold_diff = abs( $this->l7 * 2 );
 | 
						|
			if ( $threshold_diff == 0 ) {
 | 
						|
				$threshold_diff = 0.01; //Don't show warning if its less than 0.01. This can happen due to PayrollDeduction and how it used to add regular medicare and additional medicare together, then round. It was later switched to rounding them separately before adding.
 | 
						|
			}
 | 
						|
			Debug::Text( 'L5e Actual Difference: ' . $l5e_actual_diff . ' L7: ' . $this->l7 . ' Threshold Diff: ' . $threshold_diff, __FILE__, __LINE__, __METHOD__, 10 );
 | 
						|
 | 
						|
			//Only show warning if Line 13a (Total Deposits for Quarter) is *not* specified. If it is specified assume they don't match what was expected and are making manual corrections/adjustments, so hide the warning.
 | 
						|
			//As a precaution, show warning if calculated vs. actual amount is off more than twice the fraction of cents value.
 | 
						|
			if ( ( ( isset( $this->l13a ) && (int)$this->l13a == 0 ) || !isset( $this->l13a ) || $this->l13a == $this->l12 ) && abs( $l5e_actual_diff ) > $threshold_diff ) { //Was: abs( $l5e_actual_diff ) > ( ( $this->l1 / 100 ) * 12 )
 | 
						|
				Debug::Text( 'L5e seems incorrect, show warning...', __FILE__, __LINE__, __METHOD__, 10 );
 | 
						|
				$this->addMessage( 'warning', 'Line 5e mismatch with amounts deducted from employees: '. $this->MoneyFormat( $this->l5_actual_deducted ), [ 'page' => 1, 'x' => ( 576 + $this->getTempPageOffsets( 'x' ) + $this->getPageMargins( 'x' ) ), 'y' => ( 492 + $this->getTempPageOffsets( 'y' ) + $this->getPageMargins( 'y' ) ) ] );
 | 
						|
			}
 | 
						|
		}
 | 
						|
 | 
						|
		return true;
 | 
						|
	}
 | 
						|
 | 
						|
 | 
						|
	//This requires 'l7z' to be passed in as a total of all the amounts actually deducted from the employee.
 | 
						|
	//So we can compare that with the calculated amounts that should have been deducted, the result of which is l7.
 | 
						|
	//  Take for a example the case where the form calculates $100 should have been paid, but only 99.80 was paid due to rounding.
 | 
						|
	//  Line 7 should be -0.20, so it reduces what should have been paid by that amount and therefore no balance would be owning.
 | 
						|
	//  Therefore the calculation should be l7z (what was actually withheld) - l5e (what should have been withheld).
 | 
						|
	function calcL7( $value, $schema ) {
 | 
						|
		$this->l7 = ( $this->l7z > 0 ) ? ( bcsub( $this->l7z, $this->l5e ) ) : 0;
 | 
						|
		Debug::Text( 'Raw: L7: ' . $this->l7 . ' L5e: ' . $this->l5e . ' L7z: ' . $this->l7z, __FILE__, __LINE__, __METHOD__, 10 );
 | 
						|
 | 
						|
		return $this->l7;
 | 
						|
	}
 | 
						|
 | 
						|
	function calcL10( $value, $schema ) {
 | 
						|
		$this->l10 = bcadd( bcadd( bcadd( $this->l6, $this->l7 ), $this->l8 ), $this->l9 );
 | 
						|
 | 
						|
		return $this->l10;
 | 
						|
	}
 | 
						|
 | 
						|
	function showSBMisMatchTotals( $value, $schema ) {
 | 
						|
		$schedule_b_total_to_l12_diff = abs( round( bcsub( $this->schedule_b_total, $this->l12 ), 2 ) );
 | 
						|
		if ( isset( $this->schedule_b_total ) && $this->schedule_b_total > 0 && $schedule_b_total_to_l12_diff > 0 ) {
 | 
						|
			$this->addMessage( 'warning', 'Line 12 does not match total from Schedule B', [ 'page' => 2, 'x' => ( 576 + $this->getTempPageOffsets( 'x' ) + $this->getPageMargins( 'x' ) ), 'y' => ( 197 + $this->getTempPageOffsets( 'y' ) + $this->getPageMargins( 'y' ) ) ] );
 | 
						|
		}
 | 
						|
 | 
						|
		return true;
 | 
						|
	}
 | 
						|
 | 
						|
	function calcL11g( $value, $schema ) {
 | 
						|
		//$this->l11g = bcadd( $this->l11a, bcadd( $this->l11b, bcadd( $this->l11c, bcadd( $this->l11d, $this->l11e ) ) ) );
 | 
						|
		$this->l11g = $this->l11a;
 | 
						|
 | 
						|
		return $this->l11g;
 | 
						|
	}
 | 
						|
 | 
						|
	function calcL12( $value, $schema ) {
 | 
						|
		$this->l12 = round( bcsub( $this->l10, $this->l11g ), 2 );
 | 
						|
 | 
						|
		return $this->l12;
 | 
						|
	}
 | 
						|
 | 
						|
	function calcL13a( $value, $schema ) {
 | 
						|
		if ( !is_numeric( $this->l13a ) ) {
 | 
						|
			$this->l13a = $this->l12; //If no deposit amount is specified, assume they deposit the amount calculated.
 | 
						|
		}
 | 
						|
 | 
						|
		return $this->l13a;
 | 
						|
	}
 | 
						|
 | 
						|
	function calcL13g( $value, $schema ) {
 | 
						|
		//$this->l13g =  bcadd( $this->l13a, bcadd( $this->l13c, bcadd( $this->l13d, bcadd( $this->l13e, $this->l13f ) ) ) );
 | 
						|
		$this->l13g = $this->l13a;
 | 
						|
 | 
						|
		return $this->l13g;
 | 
						|
	}
 | 
						|
 | 
						|
	//function calcL13i( $value, $schema ) {
 | 
						|
	//	$this->l13i = bcsub( $this->l13g, $this->l13h );
 | 
						|
	//
 | 
						|
	//	return $this->l13i;
 | 
						|
	//}
 | 
						|
 | 
						|
	function calcL14( $value, $schema ) {
 | 
						|
		if ( $this->l13g != '' && $this->l12 > $this->l13g ) {
 | 
						|
			$this->l14 = bcsub( $this->l12, $this->l13g );
 | 
						|
 | 
						|
			return $this->l14;
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	function calcL15( $value, $schema ) {
 | 
						|
		if ( $this->l13g > $this->l12 ) {
 | 
						|
			$this->l15 = bcsub( $this->l13g, $this->l12 );
 | 
						|
 | 
						|
			return $this->l15;
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	function showL16MisMatchTotals() {
 | 
						|
		if ( isset( $this->l16_month_total ) && $this->l16_month_total > 0 && isset( $this->l12 ) && $this->l12 > 0 ) {
 | 
						|
			$l16_to_l12_diff = abs( round( bcsub( $this->l16_month_total, $this->l12 ), 2 ) );
 | 
						|
			if ( $l16_to_l12_diff > 0 ) {
 | 
						|
				Debug::Text( 'L16 seems incorrect, show warning...', __FILE__, __LINE__, __METHOD__, 10 );
 | 
						|
				$this->addMessage( 'warning', 'Line 16 mismatch with Line 12', [ 'page' => 2, 'x' => ( 576 + $this->getTempPageOffsets( 'x' ) + $this->getPageMargins( 'x' ) ), 'y' => ( 690 + $this->getTempPageOffsets( 'y' ) + $this->getPageMargins( 'y' ) ) ] );
 | 
						|
			}
 | 
						|
		}
 | 
						|
 | 
						|
		return true;
 | 
						|
	}
 | 
						|
 | 
						|
	function calcL16MonthTotal( $value, $schema ) {
 | 
						|
		$this->l16_month_total = bcadd( bcadd( $this->l16_month1, $this->l16_month2 ), $this->l16_month3 );
 | 
						|
 | 
						|
		return $this->l16_month_total;
 | 
						|
	}
 | 
						|
 | 
						|
	function _outputPDF( $type ) {
 | 
						|
		//Initialize PDF with template.
 | 
						|
		$pdf = $this->getPDFObject();
 | 
						|
 | 
						|
		if ( $this->getShowBackground() == true ) {
 | 
						|
			$pdf->setSourceFile( $this->getTemplateDirectory() . DIRECTORY_SEPARATOR . $this->pdf_template );
 | 
						|
 | 
						|
			$this->template_index[1] = $pdf->ImportPage( 1 );
 | 
						|
			$this->template_index[2] = $pdf->ImportPage( 2 );
 | 
						|
			$this->template_index[3] = $pdf->ImportPage( 3 );
 | 
						|
			$this->template_index[4] = $pdf->ImportPage( 4 );
 | 
						|
			$this->template_index[5] = $pdf->ImportPage( 5 );
 | 
						|
		}
 | 
						|
 | 
						|
		if ( $this->year == '' ) {
 | 
						|
			$this->year = $this->getYear();
 | 
						|
		}
 | 
						|
 | 
						|
		//Get location map, start looping over each variable and drawing
 | 
						|
		$template_schema = $this->getTemplateSchema();
 | 
						|
		if ( is_array( $template_schema ) ) {
 | 
						|
			foreach ( $template_schema as $field => $schema ) {
 | 
						|
				$this->Draw( $this->$field, $schema );
 | 
						|
			}
 | 
						|
		}
 | 
						|
 | 
						|
		$this->drawMessages();
 | 
						|
 | 
						|
		return true;
 | 
						|
	}
 | 
						|
 | 
						|
 | 
						|
	function _outputXML( $type = null ) {
 | 
						|
		if ( is_object( $this->getXMLObject() ) ) {
 | 
						|
			$xml = $this->getXMLObject();
 | 
						|
		} else {
 | 
						|
			return false; //No XML object to append too. Needs return940 form first.
 | 
						|
		}
 | 
						|
 | 
						|
		$xml->IRS941->addAttribute( 'documentId', 0 ); //  Must be unique within the return.
 | 
						|
		if ( isset( $this->l1 ) ) {
 | 
						|
			$xml->IRS941->addChild( 'NumberOfEmployees', $this->l1 );
 | 
						|
		}
 | 
						|
 | 
						|
		if ( isset( $this->l2 ) ) {
 | 
						|
			$xml->IRS941->addChild( 'TotalWages', $this->l2 );
 | 
						|
		}
 | 
						|
		if ( isset( $this->l3 ) ) {
 | 
						|
			$xml->IRS941->addChild( 'TotalIncomeTaxWithheld', $this->l3 );
 | 
						|
		}
 | 
						|
 | 
						|
		if ( isset( $this->l5a ) ) {
 | 
						|
			$xml->IRS941->addChild( 'TaxableSocialSecurityWages', $this->l5a );
 | 
						|
			if ( $this->calcL5A2( null, null ) > 0 ) {
 | 
						|
				$xml->IRS941->addChild( 'TaxOnSocialSecurityWages', $this->calcL5A2( null, null ) );
 | 
						|
			}
 | 
						|
		}
 | 
						|
		if ( isset( $this->l5b ) ) {
 | 
						|
			$xml->IRS941->addChild( 'TaxableSocialSecurityTips', $this->l5b );
 | 
						|
			if ( $this->calcL5B2( null, null ) > 0 ) {
 | 
						|
				$xml->IRS941->addChild( 'TaxOnSocialSecurityTips', $this->calcL5B2( null, null ) );
 | 
						|
			}
 | 
						|
		}
 | 
						|
		if ( isset( $this->l5c ) ) {
 | 
						|
			$xml->IRS941->addChild( 'TaxableMedicareWagesTips', $this->l5c );
 | 
						|
			if ( $this->calcL5C2( null, null ) > 0 ) {
 | 
						|
				$xml->IRS941->addChild( 'TaxOnMedicareWagesTips', $this->calcL5C2( null, null ) );
 | 
						|
			}
 | 
						|
		}
 | 
						|
		if ( $this->calcL5D( null, null ) > 0 ) {
 | 
						|
			$xml->IRS941->addChild( 'TotalSocialSecurityMedTaxes', $this->calcL5D( null, null ) );
 | 
						|
			$xml->IRS941->addChild( 'WagesNotSubjToSSMedicareTaxes', 'X' );
 | 
						|
		}
 | 
						|
		if ( $this->calcL6E( null, null ) > 0 ) {
 | 
						|
			$xml->IRS941->addChild( 'TotalTaxesBeforeAdjustmentsAmt', $this->calcL6E( null, null ) );
 | 
						|
		}
 | 
						|
		if ( isset( $this->l7 ) ) {
 | 
						|
			$xml->IRS941->addChild( 'FractionsOfCentsAdjustment', $this->l7 );
 | 
						|
		}
 | 
						|
		if ( isset( $this->l9 ) ) {
 | 
						|
			$xml->IRS941->addChild( 'TipsGroupTermLifeInsAdjAmount', $this->l9 );
 | 
						|
		}
 | 
						|
		if ( $this->calcL12( null, null ) > 0 ) {
 | 
						|
			$xml->IRS941->addChild( 'TotalTax', $this->calcL12( null, null ) );
 | 
						|
		} else {
 | 
						|
			$xml->IRS941->addChild( 'TotalTax', 0.00 );
 | 
						|
		}
 | 
						|
 | 
						|
		$xml->IRS941->addChild( 'TotalDepositsOverpaymentForQtr', $this->l13 );
 | 
						|
		if ( $this->calcL13( null, null ) > 0 ) {
 | 
						|
			$xml->IRS941->addChild( 'PaymentCreditTotal', $this->calcL13( null, null ) );
 | 
						|
		} else {
 | 
						|
			$xml->IRS941->addChild( 'PaymentCreditTotal', 0.00 );
 | 
						|
		}
 | 
						|
 | 
						|
		if ( $this->calcL14( null, null ) > 0 ) {
 | 
						|
			$xml->IRS941->addChild( 'BalanceDue', $this->calcL14( null, null ) );
 | 
						|
		} else {
 | 
						|
			$xml->IRS941->addChild( 'Overpayment' );
 | 
						|
			if ( $this->calcL15( null, null ) > 0 ) {
 | 
						|
				$xml->IRS941->Overpayment->addChild( 'Amount', $this->calcL15( null, null ) );
 | 
						|
				$xml->IRS941->Overpayment->addChild( 'CreditElect', 'X' );
 | 
						|
			} else {
 | 
						|
				$xml->IRS941->Overpayment->addChild( 'Amount', 0.00 );
 | 
						|
			}
 | 
						|
		}
 | 
						|
 | 
						|
		if ( isset( $this->l16 ) ) {
 | 
						|
			$xml->IRS941->addChild( 'DepositStateCode', $this->l16 );
 | 
						|
		}
 | 
						|
 | 
						|
		if ( is_array( $this->filterL16( null, null ) ) ) {
 | 
						|
			$L16_ARR = $this->filterL16( null, null );
 | 
						|
			foreach ( $L16_ARR as $l16 ) {
 | 
						|
				switch ( $l16 ) {
 | 
						|
					case 'a':
 | 
						|
						$xml->IRS941->addChild( 'LessThan2500', 'X' );
 | 
						|
						break;
 | 
						|
					case 'b':
 | 
						|
						$xml->IRS941->addChild( 'MonthlyDepositorGroup' );
 | 
						|
						$xml->IRS941->MonthlyDepositorGroup->addChild( 'MonthlyScheduleDepositor', 'X' );
 | 
						|
						if ( isset( $this->l16_month1 ) ) {
 | 
						|
							$xml->IRS941->MonthlyDepositorGroup->addChild( 'Month1Liability', $this->l16_month1 );
 | 
						|
						}
 | 
						|
						if ( isset( $this->l16_month2 ) ) {
 | 
						|
							$xml->IRS941->MonthlyDepositorGroup->addChild( 'Month2Liability', $this->l16_month2 );
 | 
						|
						}
 | 
						|
						if ( isset( $this->l16_month3 ) ) {
 | 
						|
							$xml->IRS941->MonthlyDepositorGroup->addChild( 'Month3Liability', $this->l16_month3 );
 | 
						|
						}
 | 
						|
						if ( $this->calcL16MonthTotal( null, null ) > 0 ) {
 | 
						|
							$xml->IRS941->MonthlyDepositorGroup->addChild( 'TotalQuarterLiability', $this->calcL16MonthTotal( null, null ) );
 | 
						|
						}
 | 
						|
 | 
						|
						break;
 | 
						|
					case 'c':
 | 
						|
						$xml->IRS941->addChild( 'SemiweeklyScheduleDepositor', 'X' );
 | 
						|
						break;
 | 
						|
				}
 | 
						|
			}
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
?>
 |