/** * @param mixed $handler_id The ID of the handler. * @param Array $args The argument list. * @param Array &$data The local request data. */ public function _handler_list($handler_id, array $args, array &$data) { midcom::get('auth')->require_valid_user(); // Locate Contacts node for linking $siteconfig = org_openpsa_core_siteconfig::get_instance(); $data['contacts_url'] = $siteconfig->get_node_full_url('org.openpsa.contacts'); $data['reports_url'] = $siteconfig->get_node_full_url('org.openpsa.reports'); $qb = org_openpsa_sales_salesproject_dba::new_query_builder(); if ($handler_id == 'list_status') { $qb = $this->_add_status_constraint($args[0], $qb); $data['mode'] = $args[0]; $data['list_title'] = $this->_l10n->get('salesprojects ' . $args[0]); } else { $qb = $this->_add_customer_constraint($args[0], $qb); $data['mode'] = 'customer'; $data['list_title'] = sprintf($this->_l10n->get('salesprojects with %s'), $data['customer']->get_label()); if ($data['contacts_url']) { $this->_view_toolbar->add_item(array(MIDCOM_TOOLBAR_URL => $data['contacts_url'] . (is_a($data['customer'], 'org_openpsa_contacts_group_dba') ? 'group' : 'person') . "/{$data['customer']->guid}/", MIDCOM_TOOLBAR_LABEL => $this->_l10n->get('go to customer'), MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/jump-to.png')); } } $this->_salesprojects = $qb->execute(); foreach ($this->_salesprojects as $key => $salesproject) { // Populate previous/next actions in the project $salesproject->get_actions(); } // TODO: Filtering $data['grid'] = new org_openpsa_widgets_grid($data['mode'] . '_salesprojects_grid', 'local'); midcom::get('head')->add_jsfile(MIDCOM_STATIC_URL . '/org.openpsa.core/table2csv.js'); $this->add_breadcrumb("", $data['list_title']); }
public static function generate_salesproject_number() { // TODO: Make configurable $year = date('Y', time()); $qb = org_openpsa_sales_salesproject_dba::new_query_builder(); $qb->add_order('metadata.created', 'DESC'); $qb->add_constraint('start', '>=', mktime(0, 0, 1, 1, 1, $year)); $previous = $qb->count_unchecked(); return sprintf('%d-%04d', $year, $previous + 1); }
/** * Used by org_openpsa_relatedto_find_suspects to in case the given object is a person */ private function _org_openpsa_relatedto_find_suspects_person(&$object, &$defaults, &$links_array) { $seen_sp = array(); $mc = org_openpsa_contacts_role_dba::new_collector('role', ORG_OPENPSA_OBTYPE_SALESPROJECT_MEMBER); $mc->add_constraint('person', '=', array_keys($object->id)); $guids = $mc->get_values('objectGuid'); if (!empty($guids)) { $qb = org_openpsa_sales_salesproject_dba::new_query_builder(); $qb->add_constraint('status', '=', org_openpsa_sales_salesproject_dba::STATUS_ACTIVE); $qb->add_constraint('guid', 'IN', $guids); $qbret = @$qb->execute(); if (is_array($qbret)) { foreach ($qbret as $salesproject) { if (isset($seen_sp[$salesproject->id])) { //Only process one salesproject once (someone might be both resource and contact for example) continue; } $seen_sp[$salesproject->id] = true; $to_array = array('other_obj' => false, 'link' => false); $link = new org_openpsa_relatedto_dba(); org_openpsa_relatedto_suspect::defaults_helper($link, $defaults, $this->_component, $salesproject); $to_array['other_obj'] = $salesproject; $to_array['link'] = $link; $links_array[] = $to_array; } } } $qb2 = org_openpsa_sales_salesproject_dba::new_query_builder(); $qb2->add_constraint('owner', '=', $object->id); $qb2->add_constraint('status', '=', org_openpsa_sales_salesproject_dba::STATUS_ACTIVE); $qb2ret = @$qb2->execute(); if (is_array($qb2ret)) { foreach ($qb2ret as $sp) { if (isset($seen_sp[$sp->id])) { //Only process one task once (someone might be both resource and contact for example) continue; } $seen_sp[$sp->id] = true; $to_array = array('other_obj' => false, 'link' => false); $link = new org_openpsa_relatedto_dba(); org_openpsa_relatedto_suspect::defaults_helper($link, $defaults, $this->_component, $sp); $to_array['other_obj'] = $sp; $to_array['link'] = $link; $links_array[] = $to_array; } } }
</div> <div class="main"> <?php $data['datamanager']->display_view(true); //add tabs $tabs = array(); $siteconfig = org_openpsa_core_siteconfig::get_instance(); $invoices_url = $siteconfig->get_node_relative_url('org.openpsa.invoices'); $sales_url = $siteconfig->get_node_relative_url('org.openpsa.sales'); //TODO: Check for privileges somehow $invoices_url = $siteconfig->get_node_relative_url('org.openpsa.invoices'); if ($invoices_url) { $qb = org_openpsa_invoices_invoice_dba::new_query_builder(); $qb->add_constraint('customerContact', '=', $data['person']->id); $qb->set_limit(1); if ($qb->count() > 0) { $tabs[] = array('url' => $invoices_url . "list/customer/all/{$data['person']->guid}/", 'title' => midcom::get('i18n')->get_string('invoices', 'org.openpsa.invoices')); } } if ($sales_url) { $qb = org_openpsa_sales_salesproject_dba::new_query_builder(); $qb->add_constraint('customerContact', '=', $data['person']->id); $qb->set_limit(1); if ($qb->count() > 0) { $tabs[] = array('url' => $sales_url . "list/customer/{$data['person']->guid}/", 'title' => midcom::get('i18n')->get_string('salesprojects', 'org.openpsa.sales')); } } org_openpsa_widgets_ui::render_tabs($data['person']->guid, $tabs); ?> </div>