Пример #1
0
 /**
  * the constructor
  *
  * @param Syncroton_Model_IDevice $_device
  * @param DateTime $_timeStamp
  */
 public function __construct(Syncroton_Model_IDevice $_device, DateTime $_timeStamp)
 {
     App::uses('LilCurrentUser', 'Lil.Lib');
     $currentUser = LilCurrentUser::getInstance();
     $this->_device = $_device;
     $this->_timeStamp = $_timeStamp;
     $this->_db = Syncroton_Registry::getDatabase();
     $this->_tablePrefix = 'Syncroton_';
     $this->_ownerId = $currentUser->get('id');
 }
Пример #2
0
 static function generate($request)
 {
     App::uses('LilCurrentUser', 'Lil.Lib');
     $currentUser = LilCurrentUser::getInstance();
     $tasks['title'] = __d('lil_tasks', 'Tasks');
     $tasks['visible'] = $currentUser->get('id');
     $tasks['active'] = in_array($request->params['controller'], array('tasks'));
     $tasks['url'] = array('admin' => true, 'plugin' => 'lil_tasks', 'controller' => 'tasks', 'action' => 'index');
     $selected_date = null;
     if (!empty($request->query['filter']['date'])) {
         $selected_date = $request->query['filter']['date'];
     }
     App::uses('LilDateEngine', 'Lil.Lib');
     $LilDate = LilDateEngine::getInstance();
     $tasks['items'] = array('lil_tasks' => array('visible' => true, 'title' => __d('lil_tasks', 'Tasks'), 'url' => array('plugin' => 'lil_tasks', 'controller' => 'tasks', 'action' => 'index', 'admin' => true), 'params' => array(), 'active' => in_array($request->params['controller'], array('tasks')) && (empty($selected_date) || !($LilDate->isToday($selected_date) || $LilDate->isTomorrow($selected_date) || in_array($selected_date, array('7d', '30d')))), 'expand' => true, 'submenu' => array('tasks_today' => array('visible' => true, 'title' => __d('lil_tasks', 'Today'), 'url' => array('plugin' => 'lil_tasks', 'controller' => 'tasks', 'admin' => true, 'action' => 'index', '?' => array('filter' => array('date' => strftime('%Y-%m-%d')))), 'active' => $LilDate->isToday($selected_date)), 'tasks_tomorrow' => array('visible' => true, 'title' => __d('lil_tasks', 'Tomorrow'), 'url' => array('plugin' => 'lil_tasks', 'controller' => 'tasks', 'admin' => true, 'action' => 'index', '?' => array('filter' => array('date' => strftime('%Y-%m-%d', time() + 24 * 60 * 60)))), 'active' => $LilDate->isTomorrow($selected_date)), 'tasks_7d' => array('visible' => true, 'title' => __d('lil_tasks', 'Next 7 days'), 'url' => array('plugin' => 'lil_tasks', 'controller' => 'tasks', 'admin' => true, 'action' => 'index', '?' => array('filter' => array('date' => '7d'))), 'active' => $selected_date == '7d'), 'tasks_30d' => array('visible' => true, 'title' => __d('lil_tasks', 'Next 30 days'), 'url' => array('plugin' => 'lil_tasks', 'controller' => 'tasks', 'admin' => true, 'action' => 'index', '?' => array('filter' => array('date' => '30d'))), 'active' => $selected_date == '30d'))));
     return $tasks;
 }
Пример #3
0
 static function generate(&$sidebar, $request, $plugin)
 {
     // set current user
     App::uses('LilCurrentUser', 'Lil.Lib');
     $currentUser = LilCurrentUser::getInstance();
     if (empty($sidebar['accounting'])) {
         // there is no "ACCOUNTING SIDEBAR"
         $welcome = $sidebar['welcome'];
         unset($sidebar['welcome']);
         $sidebar = array('welcome' => $welcome) + array('accounting' => array('title' => __d('lil_expenses', 'Accounting'), 'visible' => true, 'active' => $request->params['plugin'] == 'lil_expenses', 'url' => array('admin' => true, 'plugin' => 'lil_expenses', 'controller' => 'expenses', 'action' => 'index'), 'items' => array())) + $sidebar;
     } else {
         $sidebar['accounting']['active'] = $sidebar['accounting']['active'] || in_array($request->params['controller'], array('expenses', 'payments', 'payments_accounts'));
     }
     if (empty($sidebar['accounting']['items']['reports'])) {
         $sidebar['accounting']['items']['reports'] = array('visible' => true, 'title' => __d('lil_expenses', 'Reports'), 'url' => false, 'expandable' => true, 'params' => array(), 'active' => false, 'expand' => false, 'submenu' => array());
     }
     $plugin->insertIntoArray($sidebar['accounting']['items'], array('expenses' => array('visible' => true, 'title' => __d('lil_expenses', 'Income and Expenses'), 'url' => array('admin' => true, 'plugin' => 'lil_expenses', 'controller' => 'expenses', 'action' => 'index'), 'params' => array(), 'active' => in_array($request->params['controller'], array('expenses')) && (empty($request->query['filter']['type']) || !in_array($request->query['filter']['type'], array('income', 'expense'))) && $request->params['action'] != 'admin_report_unpaid_invoices', 'expand' => in_array($request->params['controller'], array('expenses')) && $request->params['action'] != 'admin_report_unpaid_invoices', 'submenu' => array('income' => array('visible' => true, 'title' => __d('lil_expenses', 'Income'), 'url' => array('admin' => true, 'plugin' => 'lil_expenses', 'controller' => 'expenses', 'action' => 'index', '?' => array('filter' => array('type' => 'income'))), 'active' => !empty($request->query['filter']['type']) && $request->query['filter']['type'] == 'income'), 'expenses' => array('visible' => true, 'title' => __d('lil_expenses', 'Expenses'), 'url' => array('admin' => true, 'plugin' => 'lil_expenses', 'controller' => 'expenses', 'action' => 'index', '?' => array('filter' => array('type' => 'expense'))), 'active' => !empty($request->query['filter']['type']) && $request->query['filter']['type'] == 'expense'))), 'payments' => array('visible' => true, 'title' => __d('lil_expenses', 'Payments'), 'url' => array('admin' => true, 'plugin' => 'lil_expenses', 'controller' => 'payments', 'action' => 'index'), 'params' => array(), 'active' => in_array($request->params['controller'], array('payments')) && empty($request->query['filter']['account']), 'expand' => in_array($request->params['controller'], array('payments')), 'submenu' => array())), array('before' => 'reports'));
     // LOOKUPS SIDEBAR SUBMENU
     if (empty($sidebar['accounting']['items']['lookups'])) {
         $sidebar['accounting']['items']['lookups'] = array('visible' => true, 'title' => __d('lil_expenses', 'Lookups'), 'url' => false, 'expandable' => true, 'params' => array(), 'active' => false, 'expand' => false, 'submenu' => array());
     }
     $sidebar['accounting']['items']['lookups']['expand'] = $sidebar['accounting']['items']['lookups']['expand'] || in_array($request->params['controller'], array('payments_accounts'));
     $sidebar['accounting']['items']['lookups']['submenu'] = array('payments_accounts' => array('visible' => true, 'title' => __d('lil_expenses', 'Accounts'), 'url' => array('admin' => true, 'plugin' => 'lil_expenses', 'controller' => 'payments_accounts', 'action' => 'index'), 'params' => array(), 'active' => in_array($request->params['controller'], array('payments_accounts')))) + $sidebar['accounting']['items']['lookups']['submenu'];
     if ($sidebar['accounting']['items']['payments']['expand']) {
         App::uses('Sanitize', 'Utility');
         $PaymentsAccount = ClassRegistry::init('LilExpenses.PaymentsAccount');
         $accounts = $PaymentsAccount->findActive();
         foreach ($accounts as $acc_id => $acc_title) {
             $sidebar['accounting']['items']['payments']['submenu'][$acc_id] = array('visible' => true, 'title' => Sanitize::html($acc_title), 'url' => array('action' => 'index', '?' => array('filter' => array('account' => $acc_id))), 'active' => !empty($request->query['filter']['account']) && $request->query['filter']['account'] == $acc_id);
         }
     }
     // modify invoices sidebar
     if (!empty($sidebar['accounting']['items']['reports'])) {
         $sidebar['accounting']['items']['reports']['submenu']['payment_status'] = array('visible' => true, 'title' => __d('lil_expenses', 'Unpaid Invoices'), 'url' => array('admin' => true, 'plugin' => 'lil_expenses', 'controller' => 'expenses', 'action' => 'report_unpaid_invoices'), 'active' => $request->controller == 'expenses');
         if ($request->plugin == 'lil_expenses' && $request->action == 'admin_report_unpaid_invoices') {
             $sidebar['accounting']['active'] = true;
             $sidebar['accounting']['items']['reports']['expand'] = true;
         }
     }
     return true;
 }
 static function generate(&$sidebar, $request, $plugin)
 {
     // set current user
     App::uses('LilCurrentUser', 'Lil.Lib');
     $currentUser = LilCurrentUser::getInstance();
     if (empty($sidebar['accounting'])) {
         // there is no "ACCOUNTING SIDEBAR"
         $welcome = $sidebar['welcome'];
         unset($sidebar['welcome']);
         $sidebar = array('welcome' => $welcome) + array('accounting' => array('title' => __d('lil_invoices', 'Accounting'), 'visible' => $currentUser->get('id'), 'active' => $request->params['plugin'] == 'lil_invoices', 'url' => array('prefix' => 'admin', 'plugin' => 'lil_invoices', 'controller' => 'invoices', 'action' => 'index'), 'items' => array())) + $sidebar;
     } else {
         $sidebar['accounting']['active'] = $sidebar['accounting']['active'] || $request->params['plugin'] == 'lil_invoices';
     }
     if (empty($sidebar['accounting']['items']['reports'])) {
         $sidebar['accounting']['items']['reports'] = array('visible' => true, 'title' => __d('lil_invoices', 'Reports'), 'url' => false, 'expandable' => true, 'params' => array(), 'active' => false, 'expand' => false, 'submenu' => array());
     }
     $sidebar['accounting']['items']['reports']['expand'] = $exp = $sidebar['accounting']['items']['reports']['expand'] || $request->controller == 'vats' && $request->action == 'admin_report';
     $sidebar['accounting']['items']['reports']['submenu']['invoices_vats'] = array('visible' => true, 'title' => __d('lil_invoices', 'VAT'), 'url' => array('prefix' => 'admin', 'plugin' => 'lil_invoices', 'controller' => 'vats', 'action' => 'report'), 'active' => $request->controller == 'vats' && $request->action == 'admin_report');
     $plugin->insertIntoArray($sidebar['accounting']['items'], array('invoices' => array('visible' => true, 'title' => __d('lil_invoices', 'Invoices'), 'url' => array('prefix' => 'admin', 'plugin' => 'lil_invoices', 'controller' => 'invoices', 'action' => 'index'), 'params' => array(), 'active' => false, 'expand' => false, 'submenu' => array())), array('before' => 'reports'));
     // ARCHIVE SIDEBAR SUBMENU
     if (empty($sidebar['accounting']['items']['archive'])) {
         $sidebar['accounting']['items']['archive'] = array('visible' => true, 'title' => __d('lil_invoices', 'Archive'), 'url' => false, 'expandable' => true, 'params' => array(), 'active' => false, 'expand' => false, 'submenu' => array());
     }
     // LOOKUPS SIDEBAR SUBMENU
     if (empty($sidebar['accounting']['items']['lookups'])) {
         $sidebar['accounting']['items']['lookups'] = array('visible' => true, 'title' => __d('lil_invoices', 'Lookups'), 'url' => false, 'expandable' => true, 'params' => array(), 'active' => false, 'expand' => false, 'submenu' => array());
     }
     $sidebar['accounting']['items']['lookups']['expand'] = $sidebar['accounting']['items']['lookups']['expand'] || in_array($request->controller, array('items', 'invoices_counters')) || $request->controller == 'vats' && in_array($request->action, array('admin_index', 'admin_edit'));
     $sidebar['accounting']['items']['lookups']['submenu'] = array('invoices_items' => array('visible' => true, 'title' => __d('lil_invoices', 'Items'), 'url' => array('prefix' => 'admin', 'plugin' => 'lil_invoices', 'controller' => 'items', 'action' => 'index'), 'active' => $request->controller == 'items'), 'invoices_counter' => array('visible' => $currentUser->role('admin'), 'title' => __d('lil_invoices', 'Invoices Counters'), 'url' => array('prefix' => 'admin', 'plugin' => 'lil_invoices', 'controller' => 'invoices_counters', 'action' => 'index'), 'active' => $request->controller == 'invoices_counters'), 'invoices_vat' => array('visible' => $currentUser->role('admin'), 'title' => __d('lil_invoices', 'VAT levels'), 'url' => array('prefix' => 'admin', 'plugin' => 'lil_invoices', 'controller' => 'vats', 'action' => 'index'), 'active' => $request->controller == 'vats' && in_array($request->action, array('admin_index', 'admin_edit')))) + $sidebar['accounting']['items']['lookups']['submenu'];
     // build counters submenu only when needed
     if (($request->plugin == 'lil_invoices' || $request->plugin == 'lil_travel_orders') && $request->controller == 'invoices') {
         ////////////////////////////////////////////////////////////////////////////////////////
         // Fetch counters
         if (!($counters = Cache::read('LilInvoices.sidebarCounters', 'Lil'))) {
             $InvoicesCounter = ClassRegistry::init('LilInvoices.InvoicesCounter');
             $counters = $InvoicesCounter->find('all', array('order' => array('active', 'kind DESC'), 'recursive' => -1));
             Cache::write('LilInvoices.sidebarCounters', $counters, 'Lil');
         }
         // determine counter_id for sidebar
         if (empty($request->query['filter']['counter']) && $request->params['controller'] == 'invoices' && $request->params['action'] == 'admin_view') {
             $Invoice = ClassRegistry::init('LilInvoices.Invoice');
             $request->query['filter']['counter'] = $Invoice->field('counter_id', array('Invoice.id' => $request->params['pass'][0]));
         }
         // build submenus
         $archived_counters = array();
         $active_counters = array();
         foreach ((array) $counters as $c) {
             if ($c['InvoicesCounter']['active']) {
                 $target = 'invoices';
                 $active_counters[] = $c['InvoicesCounter']['id'];
             } else {
                 $target = 'archive';
                 $archived_counters[] = $c['InvoicesCounter']['id'];
             }
             $sidebar['accounting']['items'][$target]['submenu'][$c['InvoicesCounter']['id']] = array('visible' => true, 'title' => $c['InvoicesCounter']['title'], 'url' => array('prefix' => 'admin', 'plugin' => 'lil_invoices', 'controller' => 'invoices', 'action' => 'index', '?' => array('filter' => array('counter' => $c['InvoicesCounter']['id']))), 'active' => false);
         }
         // determine current counter
         if (!empty($request->params->named['counter'])) {
             $current_counter = $request->params->named['counter'];
             if (in_array($current_counter, $active_counters)) {
                 $tgt = 'invoices';
             } else {
                 if (in_array($current_counter, $archived_counters)) {
                     $tgt = 'archive';
                 }
             }
         } else {
             if (!empty($request->query['filter']['counter'])) {
                 $current_counter = $request->query['filter']['counter'];
                 if (in_array($current_counter, $active_counters)) {
                     $tgt = 'invoices';
                 } else {
                     if (in_array($current_counter, $archived_counters)) {
                         $tgt = 'archive';
                     }
                 }
             } else {
                 if (!empty($active_counters)) {
                     $current_counter = reset($active_counters);
                     $tgt = 'invoices';
                 } else {
                     if (!empty($archived_counters)) {
                         $current_counter = reset($archived_counters);
                         $targer_submenu = 'archive';
                     }
                 }
             }
         }
         if (empty($sidebar['accounting']['items']['invoices']['submenu'])) {
             unset($sidebar['accounting']['items']['invoices']);
         }
         if (!empty($tgt) && $request->plugin == 'lil_invoices') {
             $sidebar['accounting']['items'][$tgt]['expand'] = true;
             $sidebar['accounting']['items'][$tgt]['submenu'][$current_counter]['active'] = true;
         }
     }
     return true;
 }
Пример #5
0
 public static function execute($type, $filter, $inline)
 {
     $Invoice = ClassRegistry::init('LilInvoices.Invoice');
     App::uses('LilDateEngine', 'Lil.Lib');
     $LilDate = LilDateEngine::getInstance();
     $default_params = array('contain' => array('InvoicesItem', 'InvoicesCounter', 'InvoicesTax', 'Client' => array('PrimaryAddress', 'PrimaryAccount', 'PrimaryEmail'), 'InvoicesAttachment'));
     $ret = true;
     $params = array_merge_recursive($default_params, $Invoice->filter($filter));
     if ($invoices = $Invoice->find('all', $params)) {
         switch ($type) {
             case 'pdf':
                 App::uses('LilReport', 'Lil.Lib');
                 $report = new LilReport('Invoice');
                 $report->helpers(array('Lil.Lil', 'Lil.LilDate', 'Lil.LilFloat', 'Html'));
                 App::uses('Sanitize', 'Utility');
                 // define filename
                 if (sizeof($invoices) == 1) {
                     $filename = Sanitize::paranoid(__d('lil_invoices', 'invoice') . '_' . $invoices[0]['Invoice']['no'], array('-', '_'));
                 } else {
                     $filename = Sanitize::paranoid(__d('lil_invoices', 'invoices') . '_' . $LilDate->toSql(null, true), array('_'));
                 }
                 $Vat = ClassRegistry::init('LilInvoices.Vat');
                 $vats = $Vat->findList();
                 $i = 1;
                 foreach ($invoices as $data) {
                     $report->template('LilInvoices.' . $data['InvoicesCounter']['layout'], 'LilInvoices.lil_invoices_pdf');
                     $report->reset();
                     $report->set(compact('data', 'vats'));
                     $report->render(null);
                     if ($i < sizeof($invoices)) {
                         $report->addPage();
                     }
                     $i++;
                 }
                 $report->output($filename, $inline ? 'I' : 'D');
                 break;
             case 'envelope':
             case 'eslog':
             case 'sepaxml':
                 App::uses('LilCurrentUser', 'Lil.Lib');
                 $currentUser = LilCurrentUser::getInstance();
                 if (($company_id = $currentUser->get('company_id')) && ($Contact = ClassRegistry::init('LilCrm.Contact'))) {
                     if (!($Company = $Contact->find('first', array('conditions' => array('Contact.id' => $company_id), 'contain' => array('PrimaryAccount', 'PrimaryAddress'))))) {
                         $errors[] = __d('lil_invoices', 'Cannot fetch your employer!');
                     }
                 } else {
                     $errors[] = __d('lil_invoices', 'Please provide your employer!');
                 }
                 $Vat = ClassRegistry::init('LilInvoices.Vat');
                 $vats = $Vat->findList();
                 $errors = array();
                 if (empty($Company['PrimaryAccount'])) {
                     $errors[] = __d('lil_invoices', 'Please provide your default account!');
                 }
                 if (empty($Company['PrimaryAddress'])) {
                     $errors[] = __d('lil_invoices', 'Please provide your address!');
                 }
                 if (empty($Company['Contact']['tax_no'])) {
                     $errors[] = __d('lil_invoices', 'Please provide your tax no!');
                 }
                 foreach ($invoices as $data) {
                     if ($type == 'sepaxml' && empty($data['Client']['PrimaryAccount'])) {
                         $errors[] = __d('lil_invoices', 'Please provide client\'s "%s" default account!', $data['Client']['title']);
                     }
                     if (empty($data['Client']['PrimaryAddress'])) {
                         $errors[] = __d('lil_invoices', 'Please provide client\'s "%s" default address!', $data['Client']['title']);
                     }
                     if ($data['Client']['kind'] == 'C' && empty($data['Client']['tax_no'])) {
                         $errors[] = __d('lil_invoices', 'Please provide client\'s "%s" tax no!', $data['Client']['title']);
                     }
                     if ($type == 'sepaxml' && (empty($data['Invoice']['pmt_type']) || empty($data['Invoice']['pmt_module']) || empty($data['Invoice']['pmt_ref']))) {
                         $errors[] = __d('lil_invoices', 'Please provide payment details for invoice "%1$s - %2$s"', $data['Invoice']['no'], $data['Invoice']['title']);
                     }
                 }
                 if (empty($errors)) {
                     $View = new View(null);
                     $View->viewPath = 'Invoices';
                     $View->plugin = 'LilInvoices';
                     $View->helpers = array('Session', 'Html');
                     $View->set('invoices', $invoices);
                     $View->set('Company', $Company);
                     $View->set('vats', $vats);
                     switch ($type) {
                         case 'eslog':
                             $template = 'admin_export_eslog';
                             break;
                         case 'envelope':
                             $template = 'admin_export_envelope';
                             break;
                         default:
                             $template = 'admin_export_sepaxml';
                     }
                     echo $View->render($template, 'xml');
                 } else {
                     $ret = __d('lil_invoices', 'EXPORT ERROR(s):') . '<br />' . implode('<br />', $errors);
                 }
                 break;
         }
     } else {
         return __d('lil_invoices', 'Export error: No invoices found.');
     }
     return $ret;
 }