warn(sprintf($header, 'ID', 'Type', 'Product', 'Name', 'Active', 'Status', 'Next Invoice', 'Start Date', 'Stop Date', 'Connect Date', 'First Invoice' )); foreach (Service::withoutGlobalScope(\App\Models\Scopes\SiteScope::class)->with(['site'])->cursor() as $o) { if ((! $this->option('inactive')) AND ! $o->isActive()) continue; Config::set('site',$o->site); if ($this->option('type') AND ($o->product->getCategoryAttribute() !== $this->option('type'))) continue; $c = $o->invoice_items->filter(function($item) {return $item->item_type === 0; })->sortby('start_at')->first(); if ($this->option('fix') AND ! $o->start_at AND $c AND $c->start_at AND $o->type AND $o->type->connect_at AND $c->start_at->format('Y-m-d') == $o->type->connect_at->format('Y-m-d')) { $o->start_at = $o->type->connect_at; $o->save(); } $this->info(sprintf($header, $o->sid, $o->product->getCategoryNameAttribute(), substr($o->product->getNameAttribute(),0,35), substr($o->name_short,0,40), $o->active ? 'active' : 'inactive', $o->status, $o->invoice_next?->format('Y-m-d'), $o->start_at?->format('Y-m-d'), $o->stop_at?->format('Y-m-d'), ($o->type AND $o->type->connect_at) ? $o->type->connect_at->format('Y-m-d') : NULL, ($c && $c->date_start) ? $c->date_start->format('Y-m-d') : NULL, )); } } }