Exemplo n.º 1
0
 public function addInvoiceFromTickets($clientId, $tickets, $month)
 {
     if (!$clientId) {
         return array('success' => false, 'message' => 'Le code client est inconnu sur Dolibarr', 'id' => null);
     }
     $now = new \Datetime();
     $date31 = new \Datetime($month->format('Y-m') . '-01');
     $date31->modify('+1 month');
     $date31->modify('-1 day');
     $invoice = new Invoice();
     $invoice->setCustomerCode($clientId);
     $invoice->setAuthorId(1);
     $invoice->setDate($date31);
     $invoice->setDateDue($date31);
     $invoice->setDateCreated($now);
     $invoice->setType(0);
     usort($tickets, array($this, 'sortTicket'));
     foreach ($tickets as $ticket) {
         $description = '';
         if (strpos($ticket['entity']['name'], 'MARE NOSTRUM >') || strpos($ticket['entity']['name'], 'MALURA')) {
             $description = $ticket['entity']['name'] . '<br/>';
         }
         $invoice_line = new InvoiceLine($invoice);
         $invoice_line->setType(1);
         $invoice_line->setDescription('<em>' . $ticket['solvedate']->format('d-m-Y') . '</em> : ' . $description . $ticket['name'] . '<br/>' . $ticket['content']);
         $invoice_line->setTva($this->tva * 100);
         $invoice_line->setQuantity(number_format($this->formatActionTime($ticket['actiontime']) / 60 / 60, 2));
         $invoice_line->setUnitPrice($this->unit_price);
         $invoice_line->setDateStart($ticket['date']);
         $invoice_line->setDateEnd($ticket['solvedate']);
         $invoice_line->calculTotals();
     }
     $result = $this->dolibarr_invoice_connector->addInvoice($invoice);
     if ($result['result']->result_code == 'OK') {
         return array('success' => true, 'message' => $result['ref'], 'id' => $result['id']);
     } else {
         return array('success' => false, 'message' => $result['result']->result_label, 'id' => null);
     }
 }