argument('site'))); if ($this->argument('account')) $accounts = collect()->push(Account::find($this->argument('account'))); else $accounts = Account::active()->get(); foreach ($accounts as $o) { $io = new Invoice; $io->account_id = $o->id; foreach ($o->services(TRUE)->get() as $so) { foreach ($so->next_invoice_items(FALSE) as $ooo) $io->items->push($ooo); } // If there are no items, no reason to do anything if (! $io->items->count() OR $io->total < 0) continue; $io->account_id = $o->id; if ($this->option('list')) { $this->warn(sprintf('|%4s|%4s|%-50s|%8s|', 'SID', 'PID', 'Name', 'Amount', )); foreach ($io->items as $oo) { $this->info(sprintf('|%4s|%4s|%-50s|%8.2f|', $oo->service_id, $oo->product_id, $oo->item_type_name, $oo->total, )); } } if ($this->option('preview')) { $this->info(sprintf('Invoice for Account [%d] - [%d] items totalling [%3.2f]',$o->id,$io->items->count(),$io->total)); continue; } // Save the invoice $io->site_id = 1; // @todo $io->active = 1; $io->pushNew(); } } }