Пример #1
0
 public function testCRUD()
 {
     midcom::get('auth')->request_sudo('org.openpsa.invoices');
     $invoice = new org_openpsa_invoices_invoice_dba();
     $next_number = $invoice->generate_invoice_number();
     $this->assertTrue(is_int($next_number));
     $invoice->number = $next_number;
     $stat = $invoice->create();
     $this->assertTrue($stat);
     $this->register_object($invoice);
     $this->assertEquals($next_number + 1, $invoice->generate_invoice_number());
     $sent = time();
     $date = time() - 3600 * 24;
     $invoice->sent = $sent;
     $invoice->date = $date;
     $stat = $invoice->update();
     $this->assertTrue($stat);
     $invoice->refresh();
     $expected_due = $invoice->get_default('due') * 3600 * 24 + $date;
     $this->assertEquals($expected_due, $invoice->due);
     $stat = $invoice->delete();
     $this->assertTrue($stat);
     $this->assertEquals($next_number, $invoice->generate_invoice_number());
     midcom::get('auth')->drop_sudo();
 }
Пример #2
0
 public function test_int_field()
 {
     midcom::get('auth')->request_sudo('midcom.helper.datamanager2');
     $invoice = new org_openpsa_invoices_invoice_dba();
     $invoice_parameters = array('number' => $invoice->generate_invoice_number());
     $invoice = $this->create_object('org_openpsa_invoices_invoice_dba', $invoice_parameters);
     $request = array('component' => 'org.openpsa.invoices', 'class' => 'org_openpsa_invoices_invoice_dba', 'id_field' => 'id', 'searchfields' => array('number'), 'titlefield' => 'number', 'result_headers' => array(array('title' => 'number', 'name' => 'number')), 'term' => (string) $invoice->number);
     $handler = new midcom_helper_datamanager2_ajax_autocomplete($request);
     $res = $handler->get_results();
     midcom::get('auth')->drop_sudo();
     $this->assertEquals(1, sizeof($res));
     $this->assertEquals($res[0]['label'], $invoice->number);
 }
Пример #3
0
 private function _generate_invoice()
 {
     $invoice = new org_openpsa_invoices_invoice_dba();
     $invoice->customer = (int) $_POST['org_openpsa_invoices_invoice_customer'];
     $invoice->number = $invoice->generate_invoice_number();
     $invoice->owner = midcom_connection::get_user();
     $invoice->vat = $invoice->get_default('vat');
     $invoice->description = $invoice->get_default('remarks');
     if (!$invoice->create()) {
         midcom::get('uimessages')->add($this->_l10n->get('org.openpsa.invoices'), $this->_l10n->get('failed to create invoice, reason ') . midcom_connection::get_error_string(), 'error');
         return false;
     }
     // create invoice_items
     foreach ($_POST['org_openpsa_invoices_invoice_tasks'] as $task_id => $invoiceable) {
         if (!$invoiceable) {
             continue;
         }
         $task = $this->_tasks[$task_id];
         //instance the invoice_items
         $item = new org_openpsa_invoices_invoice_item_dba();
         $item->task = $task_id;
         try {
             $deliverable = org_openpsa_sales_salesproject_deliverable_dba::get_cached($task->agreement);
             $item->deliverable = $deliverable->id;
         } catch (midcom_error $e) {
             $e->log();
         }
         $item->invoice = $invoice->id;
         $item->description = $task->title;
         $item->pricePerUnit = (double) $_POST['org_openpsa_invoices_invoice_tasks_price'][$task_id];
         $item->units = (double) $_POST['org_openpsa_invoices_invoice_tasks_units'][$task_id];
         $item->create();
         // Connect invoice to the tasks involved
         org_openpsa_projects_workflow::mark_invoiced($task, $invoice);
     }
     // Generate "Send invoice" task
     $invoice_sender_guid = $this->_config->get('invoice_sender');
     if (!empty($invoice_sender_guid)) {
         $invoice->generate_invoicing_task($invoice_sender_guid);
     }
     midcom::get('uimessages')->add($this->_l10n->get('org.openpsa.invoices'), sprintf($this->_l10n->get('invoice %s created'), $invoice->get_label()), 'ok');
     midcom::get()->relocate("invoice/edit/{$invoice->guid}/");
     // This will exit
 }
Пример #4
0
 private function _create_invoice($cycle_number = null)
 {
     $salesproject = new org_openpsa_sales_salesproject_dba($this->_deliverable->salesproject);
     $invoice = new org_openpsa_invoices_invoice_dba();
     $invoice->customer = $salesproject->customer;
     $invoice->customerContact = $salesproject->customerContact;
     $invoice->number = $invoice->generate_invoice_number();
     $invoice->owner = $salesproject->owner;
     $invoice->vat = $invoice->get_default('vat');
     $invoice->description = $invoice->get_default('remarks');
     if ($invoice->create()) {
         // Register the cycle number for reporting purposes
         if (!is_null($cycle_number)) {
             $invoice->parameter('org.openpsa.sales', 'cycle_number', $cycle_number);
         }
         return $invoice;
     } else {
         throw new midcom_error('Failed to create invoice, ' . midcom_connection::get_error_string());
     }
 }