Ejemplo n.º 1
0
 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
 }
Ejemplo n.º 2
0
 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);
 }
Ejemplo n.º 3
0
 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();
 }
Ejemplo n.º 4
0
 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);
 }