155 lines
		
	
	
		
			6.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			155 lines
		
	
	
		
			6.4 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".
 | 
						|
 *
 | 
						|
 ********************************************************************************/
 | 
						|
 | 
						|
 | 
						|
//This is the header record for submitting XML forms to the CRA.
 | 
						|
include_once( 'CA.class.php' );
 | 
						|
 | 
						|
/**
 | 
						|
 * @package GovernmentForms
 | 
						|
 */
 | 
						|
class GovernmentForms_CA_T619 extends GovernmentForms_CA {
 | 
						|
	public $xml_schema = 'layout-topologie.xsd';
 | 
						|
 | 
						|
	public function getTemplateSchema( $name = null ) {
 | 
						|
		$template_schema = [];
 | 
						|
 | 
						|
		if ( isset( $template_schema[$name] ) ) {
 | 
						|
			return $name;
 | 
						|
		} else {
 | 
						|
			return $template_schema;
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	//Set the submission status. Original, Amended, Cancel.
 | 
						|
	function getStatus() {
 | 
						|
		if ( isset( $this->status ) ) {
 | 
						|
			return $this->status;
 | 
						|
		}
 | 
						|
 | 
						|
		return 'O'; //Original
 | 
						|
	}
 | 
						|
 | 
						|
	function setStatus( $value ) {
 | 
						|
		if ( strtoupper( $value ) == 'C' ) {
 | 
						|
			$value = 'A'; //Cancel isn't valid for this, only original and amendment.
 | 
						|
		}
 | 
						|
		$this->status = strtoupper( trim( $value ) );
 | 
						|
 | 
						|
		return true;
 | 
						|
	}
 | 
						|
 | 
						|
	function filterPhone( $value ) {
 | 
						|
		//Strip non-digits.
 | 
						|
		$value = $this->stripNonNumeric( $value );
 | 
						|
		if ( $value != '' ) {
 | 
						|
			return [ substr( $value, 0, 3 ), substr( $value, 3, 3 ), substr( $value, 6, 4 ) ];
 | 
						|
		}
 | 
						|
 | 
						|
		return false;
 | 
						|
	}
 | 
						|
 | 
						|
	function _outputXML( $type = null ) {
 | 
						|
		$xml = new SimpleXMLElement( '<Submission xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="layout-topologie.xsd"></Submission>' ); //T4 and T4 Summary must be wrapped in <Return></Return>
 | 
						|
		$this->setXMLObject( $xml );
 | 
						|
 | 
						|
		$xml->addChild( 'T619' );
 | 
						|
		if ( $this->reference_id == '' ) {
 | 
						|
			$this->reference_id = date( 'Ymd' );
 | 
						|
		}
 | 
						|
		$xml->T619->addChild( 'sbmt_ref_id', $this->reference_id ); //Submission Reference Identification, unique 8 char alphanumeric.
 | 
						|
		//$xml->T619->addChild('rpt_tcd', 'O'); //Report Type, O = Original, A = Amended, C = Cancel. Entire batch must be the same I think.
 | 
						|
		$xml->T619->addChild( 'rpt_tcd', $this->getStatus() );      //Report Type, O = Original, A = Amended, C = Cancel. Entire batch must be the same I think.
 | 
						|
		if ( $this->transmitter_number == '' ) {
 | 
						|
			$this->transmitter_number = 'MM555555'; //Default transmitter number to use if they don't supply one.
 | 
						|
		}
 | 
						|
		$xml->T619->addChild( 'trnmtr_nbr', $this->transmitter_number );                                                 //Transmitter number, provided by CRA if filing more then one return
 | 
						|
		$xml->T619->addChild( 'trnmtr_tcd', 4 );                                                                         //Transmitter type indicator.  1 = Submitting your returns, 2 = Submitting others returns (service providers), 3 = Submitting returns using a purchased software package, 4 = Software Vendor.
 | 
						|
		$xml->T619->addChild( 'summ_cnt', 0 );                                                                           //Total number of summary records.
 | 
						|
		$xml->T619->addChild( 'lang_cd', 'E' );                                                                          //Language
 | 
						|
 | 
						|
		//Transmitter name
 | 
						|
		$xml->T619->addChild( 'TRNMTR_NM' );                                                                             //Employee name
 | 
						|
		$xml->T619->TRNMTR_NM->addChild( 'l1_nm', substr( Misc::stripHTMLSpecialChars( $this->company_name ), 0, 30 ) ); //Transmitter name, max length 30.
 | 
						|
 | 
						|
		//Transmitter Address
 | 
						|
		$xml->T619->addChild( 'TRNMTR_ADDR' );
 | 
						|
		$xml->T619->TRNMTR_ADDR->addChild( 'addr_l1_txt', Misc::stripHTMLSpecialChars( $this->transmitter_address1 ) );
 | 
						|
		if ( $this->transmitter_address2 != '' ) {
 | 
						|
			$xml->T619->TRNMTR_ADDR->addChild( 'addr_l2_txt', Misc::stripHTMLSpecialChars( $this->transmitter_address2 ) );
 | 
						|
		}
 | 
						|
		$xml->T619->TRNMTR_ADDR->addChild( 'cty_nm', $this->transmitter_city );
 | 
						|
		$xml->T619->TRNMTR_ADDR->addChild( 'prov_cd', $this->transmitter_province );
 | 
						|
		$xml->T619->TRNMTR_ADDR->addChild( 'cntry_cd', 'CAN' );
 | 
						|
		$xml->T619->TRNMTR_ADDR->addChild( 'pstl_cd', $this->transmitter_postal_code );
 | 
						|
 | 
						|
		//Contact
 | 
						|
		$xml->T619->addChild( 'CNTC' );
 | 
						|
		$xml->T619->CNTC->addChild( 'cntc_nm', $this->contact_name );
 | 
						|
 | 
						|
		if ( $this->contact_phone != '' ) {
 | 
						|
			$phone_arr = $this->filterPhone( $this->contact_phone );
 | 
						|
		} else {
 | 
						|
			$phone_arr = $this->filterPhone( '000-000-0000' );
 | 
						|
		}
 | 
						|
 | 
						|
		if ( is_array( $phone_arr ) ) {
 | 
						|
			$xml->T619->CNTC->addChild( 'cntc_area_cd', $phone_arr[0] );
 | 
						|
			$xml->T619->CNTC->addChild( 'cntc_phn_nbr', $phone_arr[1] . '-' . $phone_arr[2] );
 | 
						|
			$xml->T619->CNTC->addChild( 'cntc_extn_nbr', '000' ); //This is required in some cases, so just always specify it as 000 for now.
 | 
						|
		}
 | 
						|
 | 
						|
		if ( $this->contact_email != '' ) {
 | 
						|
			$xml->T619->CNTC->addChild( 'cntc_email_area', $this->contact_email );
 | 
						|
		}
 | 
						|
 | 
						|
		$xml->addChild( 'Return' );
 | 
						|
 | 
						|
		return true;
 | 
						|
	}
 | 
						|
 | 
						|
	function _outputPDF( $type ) {
 | 
						|
		return false;
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
?>
 |