Beispiel #1
0
 /**
  * Prepare the indexer client
  */
 public function _on_reindex($topic, $config, &$indexer)
 {
     $qb = org_openpsa_invoices_invoice_dba::new_query_builder();
     $schemadb = midcom_helper_datamanager2_schema::load_database($config->get('schemadb'));
     $indexer = new org_openpsa_invoices_midcom_indexer($topic, $indexer);
     $indexer->add_query('invoices', $qb, $schemadb);
     return $indexer;
 }
Beispiel #2
0
 public static function get_by_number($number)
 {
     $qb = org_openpsa_invoices_invoice_dba::new_query_builder();
     $qb->add_constraint('number', '=', $number);
     $result = $qb->execute();
     if (count($result) == 1) {
         return $result[0];
     }
     return false;
 }
Beispiel #3
0
 private function _get_deliverable_invoices($id)
 {
     $mc = org_openpsa_invoices_invoice_item_dba::new_collector('deliverable', $id);
     $ids = $mc->get_values('invoice');
     if (sizeof($ids) < 1) {
         return array();
     }
     $qb = org_openpsa_invoices_invoice_dba::new_query_builder();
     $qb->add_constraint('id', 'IN', $ids);
     $qb->add_constraint('sent', '>=', $this->_request_data['start']);
     $qb->add_constraint('sent', '<=', $this->_request_data['end']);
     return $qb->execute();
 }
Beispiel #4
0
 public function testGenerate_invoice_number()
 {
     $qb = org_openpsa_invoices_invoice_dba::new_query_builder();
     $qb->add_order('number', 'DESC');
     $qb->set_limit(1);
     midcom::get('auth')->request_sudo('org.openpsa.invoices');
     $last_invoice = $qb->execute_unchecked();
     midcom::get('auth')->drop_sudo();
     if (count($last_invoice) == 0) {
         $previous = 0;
     } else {
         $previous = $last_invoice[0]->number;
     }
     $calculator = new org_openpsa_sales_calculator_default();
     $exp = $previous + 1;
     $stat = $calculator->generate_invoice_number();
     $this->assertEquals($exp, $stat);
 }
Beispiel #5
0
 public function add_next_previous($object, $toolbar, $urlprefix)
 {
     if ($object->number > 1) {
         $qb = org_openpsa_invoices_invoice_dba::new_query_builder();
         $qb->add_constraint('number', '<', $object->number);
         $qb->set_limit(1);
         $qb->add_order('number', 'DESC');
         $results = $qb->execute();
         if (sizeof($results) == 1) {
             $toolbar->add_item(array(MIDCOM_TOOLBAR_URL => $urlprefix . $results[0]->guid . '/', MIDCOM_TOOLBAR_LABEL => $this->_l10n_midcom->get('previous'), MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/back.png', MIDCOM_TOOLBAR_ACCESSKEY => 'p'));
         }
     }
     if ($object->number + 1 < $object->generate_invoice_number()) {
         $qb = org_openpsa_invoices_invoice_dba::new_query_builder();
         $qb->add_constraint('number', '>', $object->number);
         $qb->set_limit(1);
         $qb->add_order('number', 'ASC');
         $results = $qb->execute();
         if (sizeof($results) == 1) {
             $toolbar->add_item(array(MIDCOM_TOOLBAR_URL => $urlprefix . $results[0]->guid . '/', MIDCOM_TOOLBAR_LABEL => $this->_l10n_midcom->get('next'), MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/next.png', MIDCOM_TOOLBAR_ACCESSKEY => 'n'));
         }
     }
 }
Beispiel #6
0
 /**
  * Returns identifier number for next invoice
  *
  * @return int invoice number
  */
 public function generate_invoice_number()
 {
     $qb = org_openpsa_invoices_invoice_dba::new_query_builder();
     $qb->add_order('number', 'DESC');
     $qb->set_limit(1);
     midcom::get('auth')->request_sudo('org.openpsa.invoices');
     $last_invoice = $qb->execute_unchecked();
     midcom::get('auth')->drop_sudo();
     if (count($last_invoice) == 0) {
         $previous = 0;
     } else {
         $previous = $last_invoice[0]->number;
     }
     return $previous + 1;
 }
Beispiel #7
0
 private function _load_invoices($status)
 {
     if ($status == 'scheduled') {
         $siteconfig = org_openpsa_core_siteconfig::get_instance();
         $this->_sales_url = $siteconfig->get_node_full_url('org.openpsa.sales');
         return $this->_get_scheduled_invoices();
     }
     $qb = org_openpsa_invoices_invoice_dba::new_query_builder();
     if ($status != 'unsent') {
         $qb->begin_group('AND');
         $qb->add_constraint($this->_request_data['date_field'], '>=', $this->_request_data['start']);
         $qb->add_constraint($this->_request_data['date_field'], '<', $this->_request_data['end']);
         $qb->end_group();
     }
     if ($this->_request_data['query_data']['resource'] != 'all') {
         $this->_request_data['query_data']['resource_expanded'] = $this->_expand_resource($this->_request_data['query_data']['resource']);
         $qb->add_constraint('owner', 'IN', $this->_request_data['query_data']['resource_expanded']);
     }
     switch ($status) {
         case 'unsent':
             $qb->add_constraint('sent', '=', 0);
             $qb->add_constraint('paid', '=', 0);
             break;
         case 'paid':
             $qb->add_constraint('paid', '>', 0);
             break;
         case 'overdue':
             $qb->add_constraint('sent', '>', 0);
             $qb->add_constraint('due', '<', mktime(0, 0, 0, date('n'), date('j') - 1, date('Y')));
             $qb->add_constraint('paid', '=', 0);
             break;
         case 'open':
             $qb->add_constraint('sent', '>', 0);
             $qb->add_constraint('paid', '=', 0);
             $qb->add_constraint('due', '>', mktime(0, 0, 0, date('n'), date('j') - 1, date('Y')));
             break;
     }
     $qb->add_order($this->_request_data['date_field'], 'DESC');
     $invoices = $qb->execute();
     return $invoices;
 }
Beispiel #8
0
}
?>
</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);