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(); }
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 }
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()); } }
/** * This is what Datamanager calls to actually create an invoice */ function &dm2_create_callback(&$datamanager) { $invoice = new org_openpsa_invoices_invoice_dba(); if (!$invoice->create()) { debug_print_r('We operated on this object:', $invoice); throw new midcom_error("Failed to create a new invoice. Error: " . midcom_connection::get_error_string()); } $this->_object =& $invoice; return $invoice; }