/** * Initialize a CreditnoteLine with raw data we got from the API * * @param array $data * @return Invoice */ public static function initializeWithRawData($data) { $creditnoteLine = new CreditnoteLine(); foreach ($data as $key => $value) { switch ($key) { case 'text': $creditnoteLine->setDescription($value); break; case 'vat_rate': $creditnoteLine->setVat($value); break; case 'account': // Todo break; default: // ignore empty values if ($value == '') { continue; } $methodName = 'set' . str_replace(' ', '', ucwords(str_replace('_', ' ', $key))); if (!method_exists(__CLASS__, $methodName)) { if (Teamleader::DEBUG) { var_dump($key, $value); throw new Exception('Unknown method (' . $methodName . ')'); } } else { call_user_func(array($creditnoteLine, $methodName), $value); } } } return $creditnoteLine; }
/** * Tests teamleader->invoicesGetCreditnotes() */ public function testInvoicesGetCreditnotes() { $time = time(); $contact = new Contact(); $contact->setForename($time); $contact->setSurname($time); $contact->setEmail($time . '@example.com'); $id = $this->teamleader->crmAddContact($contact); $contact->setId($id); $invoice = new Invoice(); $invoice->setContact($contact); $invoice->setSysDepartmentId(2131); $line1 = new InvoiceLine(); $line1->setAmount(1); $line1->setDescription('Description ' . $time); $line1->setPrice(30); $line1->setVat('06'); $invoice->addLine($line1); $id = $this->teamleader->invoicesAddInvoice($invoice); $invoice->setId($id); $creditnote = new Creditnote(); $creditnote->setInvoice($invoice); $line1 = new CreditnoteLine(); $line1->setAmount(1); $line1->setDescription('Description ' . $time); $line1->setPrice(30); $line1->setVat('06'); $creditnote->addLine($line1); $this->teamleader->invoicesAddCreditnote($creditnote); $dateFrom = strtotime(date('Y-m-d H:i:s') . " -1 day"); $dateTo = strtotime(date('Y-m-d H:i:s') . " +1 day"); $response = $this->teamleader->invoicesGetCreditnotes($dateFrom, $dateTo); $this->assertInstanceOf('SumoCoders\\Teamleader\\Invoices\\Creditnote', $response[0]); }