generateInvoiceCode->execute($dto->client_id); $invoice = Invoice::create([ 'code' => $code, 'name' => $dto->name, 'client_detail' => $dto->client_detail, 'client_ref_id' => $dto->client_ref_id, 'type' => $dto->type, 'gross_amount' => $dto->pricing->gross_amount, 'discount_amount' => $dto->pricing->discount_amount, 'net_amount' => $dto->pricing->net_amount, 'status' => InvoiceStatus::DRAFT, 'client_id' => $dto->client_id ]); foreach ($dto->items as $item) { $this->attachItemsToInvoice->execute(invoiceId: $invoice->id, item: $item); } return $invoice; }); } catch (\Throwable $th) { info($th->getMessage()); throw new Exception(__('domains/system.exception.something_wrong')); } } }