/** * 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'); }
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; }
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; }
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; }