function __construct($tablename = 'edi_transactions_log_history') { // Register non-persistent attributes // Contruct the object parent::__construct($tablename); // Set specific characteristics // Define relationships $this->belongsTo('EDITransactionLog', 'edi_transactions_log_id', 'edi_transactions_log'); // Define enumerated types // Define system defaults // Define field formats }
public function getInvoiceExportList($_definition_id = '') { $invoice = new SInvoice(); $collection = new SInvoiceCollection($invoice); $cc = new ConstraintChain(); $cc->add(new Constraint('transaction_type', '=', 'I')); $cc->add(new Constraint('status', '=', 'O')); $cc->add(new Constraint('despatch_date', 'is not', 'NULL')); $cc->add(new Constraint('print_count', '=', '0')); $cc->add(new Constraint('invoice_method', '=', 'D')); $cc->add(new Constraint('edi_invoice_definition_id', '=', $_definition_id)); $translog = new EDITransactionLog(); $cc1 = new ConstraintChain(); $cc1->add(new Constraint('status', '=', 'C')); $cc1->add(new Constraint('action', '=', 'S')); $cc1->add(new Constraint('data_definition_id', '=', $_definition_id)); $cc1->add(new Constraint('internal_id', '=', '(' . $collection->getViewName() . '.id)')); $cc->add(new Constraint('not', 'exists', '(select id from ' . $translog->getTableName() . ' where ' . $cc1->__toString() . ')')); $invoice->orderby = 'invoice_number'; // echo 'cc='.$cc->__toString().'<br>'; return $invoice->getAll($cc, false, true); }
protected function writeLog($_data, &$errors = array()) { $db = DB::Instance(); $db->StartTrans(); $filename = $_data['name']; $_data['external_system_id'] = $this->external_system_id; $_data['data_definition_id'] = $this->id; $edilog = new EDITransactionLog(); if (empty($_data['id'])) { $edilog->loadBy(array('name', 'status', 'data_definition_id'), array($filename, 'N', $this->id)); if (!$edilog->isLoaded()) { $edilog->loadBy(array('name', 'status', 'data_definition_id'), array($filename, 'V', $this->id)); } if (!$edilog->isLoaded()) { $edilog->loadBy(array('name', 'status', 'data_definition_id'), array($filename, 'E', $this->id)); if ($edilog->isLoaded() && ($_data['action'] == 'AD' || $_data['action'] == 'AE')) { return; } } if (!$edilog->isLoaded()) { $cc = new ConstraintChain(); $cc->add(new Constraint('name', '=', $filename)); $cc->add(new Constraint('status', '=', 'C')); $cc->add(new Constraint('data_definition_id', '=', $this->id)); $cc->add(new Constraint('action', 'not in', "('I', 'S')")); $edilog->loadBy($cc); } if ($edilog->isLoaded()) { $_data['id'] = $edilog->id; foreach ($edilog->getFields() as $fieldname => $field) { if (!isset($_data[$fieldname]) && $fieldname != 'status') { $_data[$fieldname] = $edilog->{$fieldname}; } } } } if (count($errors) > 0) { $_data['status'] = 'E'; $flash = Flash::Instance(); $flash->save(); $errors = array_merge_recursive($errors, $flash->getMessages('warnings')); $_data['message'] = implode(chr(10), $errors); } else { $_data['status'] = empty($_data['status']) ? EDITransactionLog::getStatusByAction($_data['action']) : $_data['status']; // If no message input, blank out the message field $_data['message'] = isset($_data['message']) ? $_data['message'] : ''; } if (!$edilog->isLoaded() || $edilog->isLoaded() && ($edilog->action != $_data['action'] || $edilog->status != $_data['status'] || $edilog->message != $_data['message'])) { $edierrors = array(); $edilog = EDITransactionLog::Factory($_data, $edierrors, 'EDITransactionLog'); if ($edilog && count($edierrors) == 0) { if (!$edilog->save()) { $edierrors[] = 'Error saving log entry : ' . $db->ErrorMsg(); } else { // Archive the existing entry to the history log table $_data['edi_transactions_log_id'] = $edilog->id; $_data['action'] = $edilog->action; unset($_data['id']); $ediloghistory = EDITransactionLogHistory::Factory($_data, $edierrors, 'EDITransactionLogHistory'); if (!$ediloghistory || !$ediloghistory->save()) { $edierrors[] = 'Error saving log history entry : ' . $db->ErrorMsg(); } } } } if (count($edierrors) > 0) { $errors = array_merge_recursive($errors, $edierrors); } $db->CompleteTrans(); }
public function view() { if (!$this->loadData()) { $this->dataError(); sendBack(); } $datadef = $this->_uses[$this->modeltype]; $edi = $datadef->setEdiInterface(); $this->view->set('datadefinition', $datadef); $flash = Flash::Instance(); $errors = array(); if (!$edi->isValid()) { $flash->addError('Error getting EDI definition'); sendBack(); } $type = $datadef->direction == 'IN' ? 'import' : 'export'; $this->view->set('type', prettify($type)); if (!isset($this->_data['page'])) { $action = $datadef->direction == 'IN' ? 'AD' : 'AE'; $filelist = $edi->getFileList($errors); if (count($errors) == 0 && $filelist) { // Update log with list of items awaiting download or export $edi->writeLogs($filelist, $action, $errors); } } $edilog = new EDITransactionLog(); $edilogs = new EDITransactionLogCollection($edilog); $sh = $this->setSearchHandler($edilogs); $db = DB::Instance(); $filename = $datadef->file_prefix . '%' . (!is_null($datadef->file_extension) ? '.' . strtolower($datadef->file_extension) : null); $cc = new ConstraintChain(); $cc->add(new Constraint('status', '=', 'E')); $cc->add(new Constraint('name', 'like', $filename)); $cc->add(new Constraint('data_definition_id', '=', $datadef->id)); if ($datadef->direction == 'IN') { $cc->add(new Constraint('action', 'in', "('AD', 'AI', 'D', 'I')")); } else { $cc->add(new Constraint('action', 'in', "('AE', 'E', 'S')")); } $this->view->set('errors', $edilog->getCount($cc)); $cc1 = new ConstraintChain(); if ($this->_data['action_type'] == 'ERR') { $cc1 = $cc; } else { $cc1->add(new Constraint('status', '=', 'N')); $cc1->add(new Constraint('data_definition_id', '=', $datadef->id)); $cc1->add(new Constraint('name', 'like', $filename)); $cc2 = new ConstraintChain(); $cc3 = new ConstraintChain(); $cc3->add(new Constraint('status', '=', 'E')); if ($datadef->direction == 'IN') { $cc2->add(new Constraint('action', 'in', "('AD', 'AI', 'D')")); $cc3->add(new Constraint('action', '=', 'I')); } else { $cc2->add(new Constraint('action', 'in', "('AE', 'E')")); $cc3->add(new Constraint('action', '=', 'S')); } $cc2->add($cc3, 'OR'); $cc1->add($cc2); } $sh->addConstraintChain($cc1); parent::index($edilogs, $sh); if (count($errors) > 0) { $errors[] = 'Error getting ' . $type . ' list'; $flash = Flash::Instance(); $flash->addErrors($errors); } $this->view->set('edilogs', $edilogs); $sidebar = new SidebarController($this->view); $sidebarlist = array(); $sidebarlist['view_all'] = array('tag' => 'View All Transfer Types', 'link' => array('modules' => $this->_modules, 'controller' => $this->name, 'action' => 'index')); $sidebarlist['upload_files'] = array('tag' => 'upload files', 'link' => array('modules' => $this->_modules, 'controller' => $this->name, 'action' => 'upload_file')); $sidebar->addList('actions', $sidebarlist); $action = $datadef->direction == 'IN' ? 'Import' : 'Export'; $sidebarlist = array(); $sidebarlist[$datadef->name . $action] = array('tag' => 'view outstanding files to ' . $action, 'link' => array('modules' => $this->_modules, 'controller' => $this->name, 'action' => 'view', 'id' => $datadef->id, 'implementation_class' => $datadef->implementation_class)); $sidebarlist[$datadef->name . 'errors'] = array('tag' => 'view outstanding error files', 'link' => array('modules' => $this->_modules, 'controller' => $this->name, 'action' => 'view', 'action_type' => 'ERR', 'id' => $datadef->id, 'implementation_class' => $datadef->implementation_class)); $sidebarlist['edit'] = array('tag' => 'edit', 'link' => array('modules' => $this->_modules, 'controller' => $this->name, 'action' => 'edit', 'id' => $datadef->id, 'implementation_class' => $datadef->implementation_class)); $sidebarlist['delete'] = array('tag' => 'delete', 'link' => array('modules' => $this->_modules, 'controller' => $this->name, 'action' => 'delete', 'id' => $datadef->id, 'implementation_class' => $datadef->implementation_class)); if ($datadef->transfer_type == 'LOCAL' && $datadef->direction == 'IN') { $sidebarlist['upload'] = array('tag' => 'upload file', 'link' => array('modules' => $this->_modules, 'controller' => $this->name, 'action' => 'upload_file', 'id' => $datadef->id)); } $sidebar->addList($datadef->name, $sidebarlist); $this->sidebarRelatedItems($sidebar, $datadef); $this->view->register('sidebar', $sidebar); $this->view->set('sidebar', $sidebar); }