예제 #1
0
 /**
  * @see Billrun_Plugin_Interface_IProcessor::processData
  */
 public function processData($type, $fileHandle, \Billrun_Processor &$processor)
 {
     if ($this->getName() != $type) {
         return FALSE;
     }
     $processedData =& $processor->getData();
     $processedData['header'] = $processor->buildHeader(fread($fileHandle, self::HEADER_LENGTH));
     $bytes = null;
     while (true) {
         if (!feof($fileHandle) && !isset($bytes[self::MAX_CHUNKLENGTH_LENGTH])) {
             $bytes .= fread($fileHandle, self::FILE_READ_AHEAD_LENGTH);
         }
         if (!isset($bytes[self::HEADER_LENGTH])) {
             break;
         }
         $row = $processor->buildDataRow($bytes);
         if ($row) {
             $row['stamp'] = md5($bytes);
             $processedData['data'][] = $row;
         }
         //Billrun_Factory::log()->log( $processor->getParser()->getLastParseLength(),  Zend_Log::DEBUG);
         $advance = $processor->getParser()->getLastParseLength();
         $bytes = substr($bytes, $advance <= 0 ? 1 : $advance);
     }
     $processedData['trailer'] = $processor->buildTrailer($bytes);
     return true;
 }
예제 #2
0
파일: tap3.php 프로젝트: ngchie/system
 /**
  * @see Billrun_Plugin_Interface_IProcessor::processData
  */
 public function processData($type, $fileHandle, \Billrun_Processor &$processor)
 {
     if ($this->getName() != $type) {
         return FALSE;
     }
     $processorData =& $processor->getData();
     $bytes = '';
     do {
         $bytes .= fread($fileHandle, self::FILE_READ_AHEAD_LENGTH);
     } while (!feof($fileHandle));
     $parsedData = Asn_Base::parseASNString($bytes);
     $processorData['header'] = $processor->buildHeader($parsedData);
     //$bytes = substr($bytes, $processor->getParser()->getLastParseLength());
     if (!isset($this->tap3Config[$this->fileVersion])) {
         Billrun_Factory::log("Processing tap3 file {$processor->filename} with non supported version : {$this->fileVersion}", Zend_log::NOTICE);
         throw new Exception("Processing tap3 file {$processor->filename} with non supported version : {$this->fileVersion}");
     }
     $trailer = $processor->buildTrailer($parsedData);
     $this->initExchangeRates($trailer);
     if (empty($this->currentFileHeader['notification']) || !empty($this->currentFileHeader['header'])) {
         foreach ($parsedData->getData() as $record) {
             if (in_array($record->getType(), $this->tap3Config['config']['data_records'])) {
                 foreach ($record->getData() as $key => $data) {
                     $row = $processor->buildDataRow($data);
                     if ($row) {
                         $row['file_rec_num'] = $key + 1;
                         $processorData['data'][] = $row;
                     }
                 }
             } else {
                 if (!isset($this->tap3Config['header'][$record->getType()]) && !isset($this->tap3Config['trailer'][$record->getType()])) {
                     Billrun_Factory::log()->log('No config for type : ' . $record->getType(), Zend_Log::DEBUG);
                 }
             }
         }
     } else {
         Billrun_Factory::log()->log('Got notification/empty file : ' . $processor->filename . ' , moving on...', Zend_Log::INFO);
     }
     $processorData['trailer'] = $trailer;
     return true;
 }
예제 #3
0
 /**
  * @see Billrun_Plugin_Interface_IProcessor::processData
  */
 public function processData($type, $fileHandle, \Billrun_Processor &$processor)
 {
     if ($this->getName() != $type) {
         return FALSE;
     }
     $processorData =& $processor->getData();
     $bytes = '';
     do {
         $bytes .= fread($fileHandle, self::FILE_READ_AHEAD_LENGTH);
     } while (!feof($fileHandle));
     $parsedData = Asn_Base::parseASNString($bytes);
     $processorData['header'] = $processor->buildHeader($parsedData);
     //$bytes = substr($bytes, $processor->getParser()->getLastParseLength());
     foreach ($parsedData->getData() as $record) {
         if (in_array($record->getType(), $this->nsnConfig['config']['data_records'])) {
             foreach ($record->getData() as $key => $data) {
                 $row = $processor->buildDataRow($data);
                 if ($row) {
                     $row['file_rec_num'] = $key;
                     $processorData['data'][] = $row;
                 }
             }
         } else {
             //Billrun_Factory::log()->log(print_r($record,1) ,  Zend_Log::DEBUG);
         }
     }
     $processorData['trailer'] = $processor->buildTrailer($parsedData);
     return true;
 }