/** * Add Vat check */ public function add_check() { $validator = Validator::make(Input::all(), VatType::$rulesAdd); if (!$validator->fails()) { $vat = new VatType(); $vat->value = Input::get('value'); if ($vat->save()) { return Redirect::route('vat_modify', $vat->id)->with('mSuccess', 'La vat a bien été ajoutée'); } else { return Redirect::route('vat_add')->with('mError', 'Impossible de créer cette vat')->withInput(); } } else { return Redirect::route('vat_add')->with('mError', 'Il y a des erreurs')->withErrors($validator->messages())->withInput(); } }
public function invoice() { $items = PastTime::query()->whereIn('id', Input::get('items'))->where('invoice_id', 0)->orderBy('ressource_id', 'ASC')->orderBy('time_start', 'ASC')->get(); $lines = array(); $ressources = array(); $users = array(); $user = null; foreach ($items as $item) { $ressources[$item->ressource_id] = $item->ressource()->getResults(); $lines[$item->ressource_id][] = $item; $users[$item->user_id] = true; if (null == $user) { /** @var User $user */ $user = $item->user()->getResults(); } } if (count($users) > 1) { return Redirect::route('pasttime_list')->with('mError', 'Impossible de générer la facture pour plusieurs utilisateurs à la fois'); } if (count($users) == 0) { return Redirect::route('pasttime_list'); } $organisation = $user->organisations->first(); $invoice = new Invoice(); $invoice->user_id = $user->id; $invoice->created_at = new \DateTime(); $invoice->organisation_id = $organisation->id; $invoice->type = 'F'; $invoice->days = date('Ym'); $invoice->number = $invoice->next_invoice_number($invoice->type, $invoice->days); $invoice->address = $organisation->fulladdress; $invoice->date_invoice = new \DateTime(); $invoice->deadline = new \DateTime(date('Y-m-d', strtotime('+1 month'))); $invoice->save(); $vat = VatType::where('value', 20)->first(); $orderIndex = 0; foreach ($lines as $ressource_id => $line) { $ressource = $ressources[$ressource_id]; $invoice_line = new InvoiceItem(); $invoice_line->invoice_id = $invoice->id; $invoice_line->amount = 0; $invoice_line->order_index = $orderIndex++; if ($ressource_id == Ressource::TYPE_COWORKING) { $invoice_line->text = 'Coworking'; $sum_duration = 0; foreach ($line as $item) { $duration = ceil((strtotime($item->time_end) - strtotime($item->time_start)) / 3600 / self::COWORKING_HALF_DAY_MAX_DURATION); $sum_duration += $duration; $invoice_line->text .= sprintf("\n - %s de %s à %s (%s demi journée%s)", date('d/m/Y', strtotime($item->time_start)), date('H:i', strtotime($item->time_start)), date('H:i', strtotime($item->time_end)), $duration, $duration > 1 ? 's' : ''); $invoice_line->amount += $duration * (self::COWORKING_HALF_DAY_PRICING / 1.2); $item->invoice_id = $invoice->id; $item->save(); } $invoice_line->text .= sprintf("\nTotal : %s demi journée%s", $sum_duration, $sum_duration > 1 ? 's' : ''); } else { $invoice_line->text = sprintf('Location d\'espace de réunion - %s', $ressource->name); foreach ($line as $item) { $invoice_line->text .= sprintf("\n - %s de %s à %s", date('d/m/Y', strtotime($item->time_start)), date('H:i', strtotime($item->time_start)), date('H:i', strtotime($item->time_end))); $invoice_line->amount += min(7, (strtotime($item->time_end) - strtotime($item->time_start)) / 3600) * $ressource->amount; $item->invoice_id = $invoice->id; $item->save(); } } $invoice_line->vat_types_id = $vat->id; $invoice_line->ressource_id = $item->ressource_id; $invoice_line->save(); } return Redirect::route('invoice_modify', $invoice->id)->with('mSuccess', 'La facture a bien été générée'); }
public function renew($id) { $subscription = $this->dataExist($id); $invoice = new Invoice(); $invoice->type = 'F'; $invoice->user_id = $subscription->user_id; $invoice->organisation_id = $subscription->organisation_id; $invoice->days = date('Ym'); $invoice->date_invoice = date('Y-m-d'); $invoice->number = Invoice::next_invoice_number($invoice->type, $invoice->days); $invoice->address = $subscription->organisation->fulladdress; $date = new DateTime($invoice->date_invoice); $date->modify('+1 month'); $invoice->deadline = $date->format('Y-m-d'); $invoice->save(); $invoice_line = new InvoiceItem(); $invoice_line->invoice_id = $invoice->id; $invoice_line->ressource_id = Ressource::TYPE_COWORKING; $invoice_line->amount = $subscription->kind->price; $date = new \DateTime($subscription->renew_at); $date2 = new \DateTime($subscription->renew_at); $invoice_line->subscription_from = $date->format('Y-m-d'); $date2->modify('next month'); $invoice_line->subscription_to = $date2->format('Y-m-d'); $invoice_line->subscription_hours_quota = $subscription->kind->hours_quota; // update invoices_items set subscription_to = date_add(subscription_from, interval 1 MONTH) where subscription_from <> '0000-00-00 00:00:00' $date2->modify('-1 day'); $invoice_line->text = sprintf("%s - %s\nDu %s au %s", $subscription->kind->name, $subscription->user->fullname, $date->format('d/m/Y'), $date2->format('d/m/Y')); $invoice_line->vat_types_id = VatType::whereValue(20)->first()->id; $invoice_line->ressource_id = Ressource::TYPE_COWORKING; $invoice_line->save(); $invoice_line->order_index = 1; $date = new DateTime($subscription->renew_at); $date->modify('+1 month'); $subscription->renew_at = $date->format('Y-m-d'); $subscription->save(); return Redirect::route('invoice_modify', $invoice->id)->with('mSuccess', 'La facture a été créée'); }