<?php

namespace common\components\giro;

/**
 *
 * @property common\components\giro\GiroUzenetsorszam $csoportosUzenetSorszam
 * @property common\components\giro\GiroBankszamla $kezdemenyezoBankszamla
 *
 */
class GiroDETSTATetel extends GiroBase {
	public static $INFORMACIO_TELJESITETT = "00";
	public static $INFORMACIO_VISSZAUTASIOTT_VALASZ_NELKUL = "NO";
	public static $INFORMACIOK = [ 
			'02' => "nem létező 'címzett' számlaszám",
			'03' => "megszűnt 'címzett' számlaszám",
			'06' => "a 'címzett' számlaszáma nem értelmezhető (az ügyfél számlaszáma helyett a bank ügyfélforgalmi számlaszáma szerepel)",
			'10' => "a számlatulajdonos neve és a megadott számlaszám nem tartozik össze szemantikai, 'teljesíthetetlen' ok miatti visszaküldés (RETURN)",
			'50' => "fedezethiány miatti visszaküldés",
			'51' => "felhatalmazás hiánya miatti visszaküldés",
			'54' => "általános visszaküldés (az ügyfél megbízása alapján)",
			'65' => "összeghatár feletti beszedési megbízás",
			'99' => "egyéb hiba" 
	];
	
	public $recordTipus = "01";
	public $tetelSorszam = "0";
	public $osszeg = "0";
	public $eredetiTetelElszamolasiDatuma = "";
	public $visszajelzesInformacio;
	public $feldolgozasDatum;
	public $terhelesiDatum;
	public $valaszHivatkozasiKod;
	public $eredetiHivatkozasiKod;
	public $ugyfelAzonosito;
	
	public function __construct() {
		$this->csoportosUzenetSorszam = new GiroUzenetsorszam ();
		$this->detstaUzenetSorszam = new GiroUzenetsorszam ();
	}
	public function toString() {
		return $this->recordTipus 
		. $this->szamKitolt ( $this->tetelSorszam, 6 ) 
		. $this->szamKitolt ( $this->osszeg, 10 ) 
		. $this->eredetiTetelElszamolasiDatuma 
		. $this->visszajelzesInformacio 
		. $this->feldolgozasDatum 
		. $this->terhelesiDatum 
		. $this->szovegKitolt ( $this->valaszHivatkozasiKod, 29 ) 
		. $this->szovegKitolt ( $this->eredetiHivatkozasiKod, 29 ) 
		. $this->szovegKitolt ( $this->ugyfelAzonosito, 24 )
		. $this->rekordVege();
	}
	
	public static function parse($row) {
		
		$tetel = new GiroDETSTATetel ();
		$tetel->recordTipus = substr ( $row, 0, 2 );
		$tetel->tetelSorszam =  GiroBase::szamOlvas( $row, 2, 6 );
		$tetel->osszeg = GiroBase::szamOlvas( $row, 8, 10 );
		$tetel->eredetiTetelElszamolasiDatuma = substr ( $row, 18, 8 );
		$tetel->visszajelzesInformacio = substr ( $row, 26, 2 );
		$tetel->feldolgozasDatum = substr ( $row, 28, 8 );
		$tetel->terhelesiDatum = substr ( $row, 36, 8 );
		$tetel->valaszHivatkozasiKod = substr ( $row, 44, 29 );
		$tetel->eredetiHivatkozasiKod = substr ( $row, 73, 29 );
		$tetel->ugyfelAzonosito = GiroBase::szovegOlvas($row, 102, 24 );
		
		return $tetel;
	}
}