Ejemplo n.º 1
0
 public function testTransactionArchiving()
 {
     $config = FannieConfig::factory();
     $task = new TransArchiveTask();
     $GLOBALS['FANNIE_ARCHIVE_METHOD'] = 'tables';
     /**
       Put a record in dtransactions that should trigger
       a new monthly table & view
     */
     $dtrans = new DTransactionsModel(FannieDB::get($config->get('TRANS_DB')));
     $dtrans->datetime('1901-01-01 00:00:00');
     $dtrans->save();
     $task->run();
     /**
       Verify the task created new monthly table & view
     */
     $archive_db = FannieDB::get($config->get('ARCHIVE_DB'));
     $archive_table_exists = $archive_db->tableExists('transArchive190101');
     $archive_dlog_exists = $archive_db->tableExists('dlog190101');
     $this->assertEquals(true, $archive_table_exists, 'Monthly archive table not created');
     $this->assertEquals(true, $archive_dlog_exists, 'Monthly dlog view not created');
     /**
       Verify dtransactions was cleared
     */
     $trans_db = FannieDB::get($config->get('TRANS_DB'));
     $records = $trans_db->query('SELECT * FROM dtransactions');
     $this->assertEquals(0, $trans_db->num_rows($records), 'dtransactions not cleared');
 }
Ejemplo n.º 2
0
 /**
   Add a transaction record directly to dtransactions on the backend
   @param $connection [SQLManager] database connection
   @param $trans_no [integer] transaction number (dtransactions.trans_no)
   @param $params [array] of column_name => value
 
   If emp_no and register_no values are not specified, the defaults
   are the configuration settings FANNIE_EMP_NO and FANNIE_REGISTER_NO.
 
   The following columns are always calculated by addItem() and values
   set in $params will be ignored:
   - datetime (always current)
   - trans_id (assigned based on existing records)
   Additionally, the following values are looked up if $params['card_no']
   is specified:
   - memType
   - staff
 */
 public static function addItem(SQLManager $connection, $trans_no, $params)
 {
     $config = FannieConfig::factory();
     $model = new DTransactionsModel($connection);
     $model->whichDB($config->get('TRANS_DB'));
     $model->trans_no($trans_no);
     $model->emp_no($config->get('EMP_NO'));
     if (isset($params['emp_no'])) {
         $model->emp_no($params['emp_no']);
     }
     $model->register_no($config->get('REGISTER_NO'));
     if (isset($params['register_no'])) {
         $model->register_no($params['register_no']);
     }
     $current_records = $model->find('trans_id', true);
     if (count($current_records) == 0) {
         $model->trans_id(1);
     } else {
         $last = $current_records[0];
         $model->trans_id($last->trans_id() + 1);
     }
     if (isset($params['card_no'])) {
         $account = \COREPOS\Fannie\API\member\MemberREST::get($params['card_no']);
         if ($account) {
             $model->memType($account['customerTypeID']);
             $model->staff($account['customers'][0]['staff']);
         }
     }
     $defaults = self::$DEFAULTS;
     $skip = array('datetime', 'emp_no', 'register_no', 'trans_no', 'trans_id');
     foreach ($defaults as $name => $value) {
         if (in_array($name, $skip)) {
             continue;
         }
         if (isset($params[$name])) {
             $model->{$name}($params[$name]);
         } else {
             $model->{$name}($value);
         }
     }
     $model->datetime(date('Y-m-d H:i:s'));
     if ($model->save()) {
         return true;
     } else {
         return false;
     }
 }