Beispiel #1
0
 static function insertEstimateDetails($data)
 {
     $InsertEstimatedData = new Estimate();
     $InsertEstimatedData->customer_id = $data['customer_id'];
     if (isset($data['estimate_master_no'])) {
         $InsertEstimatedData->estimate_master_no = $data['estimate_master_no'];
     }
     $InsertEstimatedData->student_id = $data['student_id'];
     $InsertEstimatedData->franchise_id = Session::get('franchiseId');
     $InsertEstimatedData->season_id = $data['season_id'];
     $InsertEstimatedData->batch_id = $data['batch_id'];
     $InsertEstimatedData->class_id = $data['class_id'];
     $InsertEstimatedData->enroll_start_date = $data['enroll_start_date'];
     $InsertEstimatedData->enroll_end_date = $data['enroll_end_date'];
     $InsertEstimatedData->total_selected_classes = $data['total_selected_classes'];
     $InsertEstimatedData->no_of_availbale_classes = $data['no_of_available_classes'];
     $InsertEstimatedData->no_of_opted_classes = $data['no_of_opted_classes'];
     $InsertEstimatedData->number_of_classes_used = 0;
     $InsertEstimatedData->batch_amount = $data['batch_amount'];
     $InsertEstimatedData->class_use_status = '';
     $InsertEstimatedData->is_cancelled = 0;
     $InsertEstimatedData->created_at = date("Y-m-d H:i:s");
     $InsertEstimatedData->updated_at = date("Y-m-d H:i:s");
     $InsertEstimatedData->save();
     return $InsertEstimatedData;
 }
 /**
  * @covers Moneybird\Estimate_Service::getSyncList
  */
 public function testGetSyncList()
 {
     $revision = $this->object->revision;
     $this->assertNotNull($revision, 'Estimate ' . self::$estimateId . ' not in synclist');
     $this->object->setData(array('firstname' => 'Test' . time()));
     $this->object->save($this->service);
     sleep(1);
     $newRevision = null;
     $syncList = $this->service->getSyncList();
     $this->assertInstanceOf('Moneybird\\Estimate\\ArrayObject', $syncList);
     foreach ($syncList as $sync) {
         if ($sync->id == self::$estimateId) {
             $newRevision = $sync->revision;
         }
     }
     $this->assertNotNull($newRevision, 'Estimate ' . self::$estimateId . ' not in synclist');
     $this->assertGreaterThan($revision, $newRevision);
 }
Beispiel #3
0
 function testDestroyAssociatedRecords()
 {
     $c = new Company();
     $c->set(array('name' => 'destroy_test'));
     $c->save();
     $p = new Project();
     $p->set(array('company_id' => $c->id, 'name' => 'destroy_project_test'));
     $p->save();
     $e = new Estimate();
     $e->set(array('project_id' => $p->id, 'name' => 'destroy_estimate_test'));
     $e->save();
     $h = new Hour();
     $h->set(array('estimate_id' => $e->id, 'name' => 'destroy_hour_test'));
     $h->save();
     $ch = new Charge();
     $ch->set(array('company_id' => $c->id, 'name' => 'destroy_charge_test'));
     $ch->save();
     $con = new SupportContract();
     $con->set(array('company_id' => $c->id, 'name' => 'destroy_contract_test'));
     $con->save();
     $sup_hr = new Hour();
     $sup_hr->set(array('support_contract_id' => $con->id, 'description' => 'destroy_support_hour_test'));
     $sup_hr->save();
     $pay = new Payment();
     $pay->set(array('company_id' => $c->id, 'name' => 'destroy_payment_test'));
     $pay->save();
     $deleted_items = array('company' => $c->id, 'project' => $p->id, 'estimate' => $e->id, 'hour' => $h->id, 'support_hour' => $sup_hr->id, 'charge' => $ch->id, 'support_contract' => $con->id, 'payment' => $pay->id);
     $c->destroyAssociatedRecords();
     $c->delete();
     $dbcon = AMP::getDb();
     foreach ($deleted_items as $table => $id) {
         if ($table == 'support_hour') {
             $table = 'hour';
         }
         $sql = 'SELECT * FROM ' . $table . ' WHERE id = ' . $id;
         if ($records = $dbcon->Execute($sql)) {
             $this->assertEqual($records->RecordCount(), 0, "{$table} not deleted correctly: %s");
         } else {
             trigger_error($dbcon->ErrorMsg());
         }
     }
 }
Beispiel #4
0
 function testCalculateBalanceWithDateRange()
 {
     #Company
     $cp = new Company();
     $cp->set(array('name' => 'Test Company', 'status' => 'active'));
     $cp->save();
     $pb = new CompanyPreviousBalance();
     $pb->set(array('company_id' => $cp->id, 'amount' => 600.25, 'date' => '2010-01-30'));
     $pb->save();
     $this->assertWithinMargin($pb->getAmount(), '600.25', '.01');
     ######### Support
     $sc = new SupportContract();
     $sc->set(array('company_id' => $cp->id, 'domain_name' => 'Test', 'start_date' => '2010-01-01', 'end_date' => '2010-04-30', 'hourly_rate' => '120', 'support_hours' => '.5', 'monthly_rate' => '50'));
     $sc->save();
     # add support hours
     # before previous balance
     $h = new Hour();
     $h->set(array('description' => 'Test', 'support_contract_id' => $sc->id, 'date' => '2010-01-20', 'hours' => '2.5'));
     $h->save();
     # in range
     $h = new Hour();
     $h->set(array('description' => 'Test', 'support_contract_id' => $sc->id, 'date' => '2010-02-20', 'hours' => '2.5'));
     $h->save();
     # in range
     $h = new Hour();
     $h->set(array('description' => 'Test', 'support_contract_id' => $sc->id, 'date' => '2010-03-20', 'hours' => '2.5'));
     $h->save();
     # out of range
     $h = new Hour();
     $h->set(array('description' => 'Test', 'support_contract_id' => $sc->id, 'date' => '2010-05-20', 'hours' => '2'));
     $h->save();
     ### Support Totals = in range is 2 months x 50 = 100, 4 @ 120 = 480 = 580
     $date_range = array('start_date' => '2010-01-01', 'end_date' => '2010-03-31');
     $total = $cp->calculateSupportTotal($date_range);
     $this->assertEqual($total, 580);
     ###### Project
     $pj = new Project();
     $pj->set(array('name' => 'Test Project', 'company_id' => $cp->id, 'hourly_rate' => '120'));
     $pj->save();
     # Add an Estimate item #1
     $es1 = new Estimate();
     $es1->set(array('project_id' => $pj->id, 'name' => 'Test Estimate 1', 'high_hours' => '10', 'low_hours' => '5'));
     $es1->save();
     # Add an Estimate item #2
     $es2 = new Estimate();
     $es2->set(array('project_id' => $pj->id, 'name' => 'Test Estimate 2', 'high_hours' => '10', 'low_hours' => '5'));
     $es2->save();
     # Add some before previous balance hours for #1 - 5 hours at 120 = 600
     $hr = new Hour();
     $hr->set(array('estimate_id' => $es1->id, 'description' => 'Test Hours for Estimate 1', 'date' => '2010-01-15', 'hours' => '5'));
     $hr->save();
     # Add some in range hours for #1 - 5 hours at 120 = 600
     $hr = new Hour();
     $hr->set(array('estimate_id' => $es1->id, 'description' => 'Test Hours for Estimate 1', 'date' => '2010-02-15', 'hours' => '5'));
     $hr->save();
     # Add some in range hours for #2 - 5 hours at 120 = 600
     $hr = new Hour();
     $hr->set(array('estimate_id' => $es2->id, 'description' => 'Test Hours for Estimate 2', 'date' => '2010-02-15', 'hours' => '5'));
     $hr->save();
     # Add some out of range hours for #2 - 5 hours at 120 = 600
     $hr = new Hour();
     $hr->set(array('estimate_id' => $es2->id, 'description' => 'Test Hours for Estimate 2', 'date' => '2010-05-15', 'hours' => '5'));
     $hr->save();
     ## Project Totals = In range 1200, out of range 1800
     $date_range = array('start_date' => '2010-01-01', 'end_date' => '2010-03-31');
     $total = $cp->calculateProjectsTotal($date_range);
     $this->assertEqual($total, 1200);
     #Charge
     # before previous balance
     $cr = new Charge();
     $cr->set(array('name' => 'Test', 'company_id' => $cp->id, 'date' => '2010-01-10', 'amount' => '20.50'));
     $cr->save();
     # in date range
     $cr = new Charge();
     $cr->set(array('name' => 'Test', 'company_id' => $cp->id, 'date' => '2010-03-14', 'amount' => '50.25'));
     $cr->save();
     # in date range
     $cr = new Charge();
     $cr->set(array('name' => 'Test', 'company_id' => $cp->id, 'date' => '2010-03-20', 'amount' => '50'));
     $cr->save();
     # out of date range
     $cr = new Charge();
     $cr->set(array('name' => 'Test', 'company_id' => $cp->id, 'date' => '2010-05-15', 'amount' => '50'));
     $cr->save();
     # Total Charges = in range 100.25, out of range 150.25
     $date_range = array('start_date' => '2010-01-01', 'end_date' => '2010-03-31');
     $charge_total = $cp->calculateChargesTotal($date_range);
     $this->assertEqual($charge_total, 100.25);
     ## Test Total Costs
     # Charges 100.25 + project 1200 + support 580
     $date_range = array('start_date' => '2010-01-01', 'end_date' => '2010-03-31');
     $total = $cp->calculateCosts($date_range);
     $this->assertEqual($total, 1880.25);
     ## Payments
     # add payment before previous balance date
     $py = new Payment();
     $py->set(array('company_id' => $cp->id, 'date' => '2010-01-22', 'amount' => '20.50'));
     $py->save();
     # add payment in range
     $py = new Payment();
     $py->set(array('company_id' => $cp->id, 'date' => '2010-02-10', 'amount' => '20.00'));
     $py->save();
     # add payment in range
     $py = new Payment();
     $py->set(array('company_id' => $cp->id, 'date' => '2010-03-01', 'amount' => '120.00'));
     $py->save();
     # add payment out of range
     $py = new Payment();
     $py->set(array('company_id' => $cp->id, 'date' => '2010-04-01', 'amount' => '20.25'));
     $py->save();
     # Total Payments are 20 + 120 = 140 in range and after previous balance
     $date_range = array('start_date' => '2010-01-01', 'end_date' => '2010-03-31');
     $payment_total = $cp->calculatePaymentsTotal($date_range);
     $this->assertEqual($payment_total, 140);
     #### fails because the previous balance isn't getting included FIX ME!!
     # Total Balance Costs 1880.25 - Payments 140 + Previous balance 600.25 = 2340.5
     $date_range = array('start_date' => '2010-01-01', 'end_date' => '2010-03-31');
     $balance = $cp->calculateBalance($date_range);
     $this->assertWithinMargin($balance, 2340.5, 0.001);
     ## clean up
     $cp->destroyAssociatedRecords();
     $cp->delete();
 }
Beispiel #5
0
 protected function sendEmail(Estimate $estimate)
 {
     $i18n = $this->getContext()->getI18N();
     $result = false;
     try {
         $message = new InvoiceMessage($estimate);
         if ($message->getReadyState()) {
             $result = $this->getMailer()->send($message);
             if ($result) {
                 $estimate->setSentByEmail(true);
                 $estimate->save();
             }
         }
     } catch (Exception $e) {
         $message = sprintf($i18n->__('There is a problem with estimate %s'), $estimate) . ': ' . $e->getMessage();
         $this->getUser()->error($message);
     }
     return $result;
 }
Beispiel #6
0
 /**
  * @covers Moneybird\Estimate::save
  */
 public function testSave()
 {
     $details = new Estimate_Detail_Array();
     $details->append(new Estimate_Detail(array('amount' => 5, 'description' => 'My estimate line', 'price' => 20, 'taxRateId' => self::$taxRateId)));
     $details->append(new Estimate_Detail(array('amount' => 1, 'description' => 'My second estimate line', 'price' => 12, 'taxRateId' => self::$taxRateId)));
     $estimate = new Estimate(array('poNumber' => 'PO Number', 'details' => $details, 'lastname' => 'Custom lastname'), self::$contact);
     $estimate->save($this->service);
     $this->assertInstanceOf('Moneybird\\Estimate', $estimate);
     self::$estimateId = $estimate->id;
     $this->assertNotNull(self::$estimateId);
     $this->assertGreaterThan(0, self::$estimateId);
     $estimate->details[0]->setDeleted();
     $estimate->save($this->service);
     $this->assertEquals(1, count($estimate->details));
 }