public function save($publicId, $data)
 {
     if ($publicId) {
         $task = Task::scope($publicId)->firstOrFail();
     } else {
         $task = Task::createNew();
     }
     if (isset($data['client']) && $data['client']) {
         $task->client_id = Client::getPrivateId($data['client']);
     }
     if (isset($data['description'])) {
         $task->description = trim($data['description']);
     }
     //$timeLog = $task->time_log ? json_decode($task->time_log, true) : [];
     $timeLog = isset($data['time_log']) ? json_decode($data['time_log']) : [];
     if ($data['action'] == 'start') {
         $task->is_running = true;
         $timeLog[] = [strtotime('now'), false];
     } else {
         if ($data['action'] == 'resume') {
             $task->is_running = true;
             $timeLog[] = [strtotime('now'), false];
         } else {
             if ($data['action'] == 'stop' && $task->is_running) {
                 $timeLog[count($timeLog) - 1][1] = time();
                 $task->is_running = false;
             }
         }
     }
     $task->time_log = json_encode($timeLog);
     $task->save();
     return $task;
 }
 public function save($publicId = null, $input)
 {
     if ($publicId) {
         $payment = Payment::scope($publicId)->firstOrFail();
     } else {
         $payment = Payment::createNew();
     }
     $paymentTypeId = $input['payment_type_id'] ? $input['payment_type_id'] : null;
     $payment->payment_type_id = $paymentTypeId;
     $payment->payment_date = Utils::toSqlDate($input['payment_date']);
     $payment->transaction_reference = trim($input['transaction_reference']);
     if (!$publicId) {
         $clientId = Client::getPrivateId($input['client']);
         $amount = Utils::parseFloat($input['amount']);
         if ($paymentTypeId == PAYMENT_TYPE_CREDIT) {
             $credits = Credit::scope()->where('client_id', '=', $clientId)->where('balance', '>', 0)->orderBy('created_at')->get();
             $applied = 0;
             foreach ($credits as $credit) {
                 $applied += $credit->apply($amount);
                 if ($applied >= $amount) {
                     break;
                 }
             }
         }
         $payment->client_id = $clientId;
         $payment->invoice_id = isset($input['invoice']) && $input['invoice'] != "-1" ? Invoice::getPrivateId($input['invoice']) : null;
         $payment->amount = $amount;
     }
     $payment->save();
     return $payment;
 }
 public function save($data)
 {
     if (isset($data['client_id']) && $data['client_id']) {
         $data['client_id'] = Client::getPrivateId($data['client_id']);
     }
     if (isset($data['vendor_id']) && $data['vendor_id']) {
         $data['vendor_id'] = Vendor::getPrivateId($data['vendor_id']);
     }
     return $this->expenseRepo->save($data);
 }
Example #4
0
 public function save($publicId, $data)
 {
     if ($publicId) {
         $task = Task::scope($publicId)->firstOrFail();
     } else {
         $task = Task::createNew();
     }
     if (isset($data['client']) && $data['client']) {
         $task->client_id = Client::getPrivateId($data['client']);
     }
     if (isset($data['description'])) {
         $task->description = trim($data['description']);
     }
     $timeLog = $task->time_log ? json_decode($task->time_log, true) : [];
     if ($data['action'] == 'start') {
         $task->start_time = Carbon::now()->toDateTimeString();
         $task->is_running = true;
         $timeLog[] = [strtotime('now'), false];
     } else {
         if ($data['action'] == 'resume') {
             $task->break_duration = strtotime('now') - strtotime($task->start_time) + $task->duration;
             $task->resume_time = Carbon::now()->toDateTimeString();
             $task->is_running = true;
             $timeLog[] = [strtotime('now'), false];
         } else {
             if ($data['action'] == 'stop' && $task->is_running) {
                 if ($task->resume_time) {
                     $task->duration = $task->duration + strtotime('now') - strtotime($task->resume_time);
                     $task->resume_time = null;
                 } else {
                     $task->duration = strtotime('now') - strtotime($task->start_time);
                 }
                 $timeLog[count($timeLog) - 1][1] = strtotime('now');
                 $task->is_running = false;
             } else {
                 if ($data['action'] == 'save' && !$task->is_running) {
                     $task->start_time = $data['start_time'];
                     $task->duration = $data['duration'];
                     $task->break_duration = $data['break_duration'];
                 }
             }
         }
     }
     $task->duration = max($task->duration, 0);
     $task->break_duration = max($task->break_duration, 0);
     $task->time_log = json_encode($timeLog);
     $task->save();
     return $task;
 }
 public function save($publicId = null, $input)
 {
     if ($publicId) {
         $credit = Credit::scope($publicId)->firstOrFail();
     } else {
         $credit = Credit::createNew();
     }
     $credit->client_id = Client::getPrivateId($input['client']);
     $credit->credit_date = Utils::toSqlDate($input['credit_date']);
     $credit->amount = Utils::parseFloat($input['amount']);
     $credit->balance = Utils::parseFloat($input['amount']);
     $credit->private_notes = trim($input['private_notes']);
     $credit->save();
     return $credit;
 }
 public function create($clientPublicId = 0)
 {
     if (!Utils::isPro()) {
         return Redirect::to('/invoices/create');
     }
     $account = Auth::user()->account;
     $clientId = null;
     if ($clientPublicId) {
         $clientId = Client::getPrivateId($clientPublicId);
     }
     $invoice = $account->createInvoice(ENTITY_QUOTE, $clientId);
     $invoice->public_id = 0;
     $data = ['entityType' => $invoice->getEntityType(), 'invoice' => $invoice, 'data' => Input::old('data'), 'method' => 'POST', 'url' => 'invoices', 'title' => trans('texts.new_quote')];
     $data = array_merge($data, self::getViewModel());
     return View::make('invoices.edit', $data);
 }
 public function save($publicId, $data, $task = null)
 {
     if ($task) {
         // do nothing
     } elseif ($publicId) {
         $task = Task::scope($publicId)->withTrashed()->firstOrFail();
     } else {
         $task = Task::createNew();
     }
     if ($task->is_deleted) {
         return $task;
     }
     if (isset($data['client']) && $data['client']) {
         $task->client_id = Client::getPrivateId($data['client']);
     }
     if (isset($data['description'])) {
         $task->description = trim($data['description']);
     }
     if (isset($data['time_log'])) {
         $timeLog = json_decode($data['time_log']);
     } elseif ($task->time_log) {
         $timeLog = json_decode($task->time_log);
     } else {
         $timeLog = [];
     }
     array_multisort($timeLog);
     if (isset($data['action'])) {
         if ($data['action'] == 'start') {
             $task->is_running = true;
             $timeLog[] = [strtotime('now'), false];
         } else {
             if ($data['action'] == 'resume') {
                 $task->is_running = true;
                 $timeLog[] = [strtotime('now'), false];
             } else {
                 if ($data['action'] == 'stop' && $task->is_running) {
                     $timeLog[count($timeLog) - 1][1] = time();
                     $task->is_running = false;
                 }
             }
         }
     }
     $task->time_log = json_encode($timeLog);
     $task->save();
     return $task;
 }
 public function getDatatable($clientPublicId)
 {
     $clientId = Client::getPrivateId($clientPublicId);
     if (!$clientId) {
         app()->abort(404);
     }
     $query = $this->activityRepo->findByClientId($clientId);
     return Datatable::query($query)->addColumn('activities.id', function ($model) {
         return Utils::timestampToDateTimeString(strtotime($model->created_at));
     })->addColumn('activity_type_id', function ($model) {
         $data = ['client' => link_to('/clients/' . $model->client_public_id, Utils::getClientDisplayName($model)), 'user' => $model->is_system ? '<i>' . trans('texts.system') . '</i>' : Utils::getPersonDisplayName($model->user_first_name, $model->user_last_name, $model->user_email), 'invoice' => $model->invoice ? link_to('/invoices/' . $model->invoice_public_id, $model->is_recurring ? trans('texts.recurring_invoice') : $model->invoice) : null, 'quote' => $model->invoice ? link_to('/quotes/' . $model->invoice_public_id, $model->invoice) : null, 'contact' => $model->contact_id ? link_to('/clients/' . $model->client_public_id, Utils::getClientDisplayName($model)) : Utils::getPersonDisplayName($model->user_first_name, $model->user_last_name, $model->user_email), 'payment' => $model->payment ?: '', 'credit' => Utils::formatMoney($model->credit, $model->currency_id)];
         return trans("texts.activity_{$model->activity_type_id}", $data);
     })->addColumn('balance', function ($model) {
         return Utils::formatMoney($model->balance, $model->currency_id);
     })->addColumn('adjustment', function ($model) {
         return $model->adjustment != 0 ? Utils::wrapAdjustment($model->adjustment, $model->currency_id) : '';
     })->make();
 }
 public function save($input, $credit = null)
 {
     $publicId = isset($data['public_id']) ? $data['public_id'] : false;
     if ($credit) {
         // do nothing
     } elseif ($publicId) {
         $credit = Credit::scope($publicId)->firstOrFail();
         \Log::warning('Entity not set in credit repo save');
     } else {
         $credit = Credit::createNew();
     }
     $credit->client_id = Client::getPrivateId($input['client']);
     $credit->credit_date = Utils::toSqlDate($input['credit_date']);
     $credit->amount = Utils::parseFloat($input['amount']);
     $credit->balance = Utils::parseFloat($input['amount']);
     $credit->private_notes = trim($input['private_notes']);
     $credit->save();
     return $credit;
 }
 public function create($clientPublicId = 0, $isRecurring = false)
 {
     $account = Auth::user()->account;
     $entityType = $isRecurring ? ENTITY_RECURRING_INVOICE : ENTITY_INVOICE;
     $clientId = null;
     if ($clientPublicId) {
         $clientId = Client::getPrivateId($clientPublicId);
     }
     $invoice = $account->createInvoice($entityType, $clientId);
     $invoice->public_id = 0;
     $data = ['clients' => Client::scope()->with('contacts', 'country')->orderBy('name')->get(), 'entityType' => $invoice->getEntityType(), 'invoice' => $invoice, 'method' => 'POST', 'url' => 'invoices', 'title' => trans('texts.new_invoice')];
     $data = array_merge($data, self::getViewModel());
     return View::make('invoices.edit', $data);
 }
 public function store(CreatePaymentRequest $request)
 {
     $input = $request->input();
     $input['invoice_id'] = Invoice::getPrivateId($input['invoice']);
     $input['client_id'] = Client::getPrivateId($input['client']);
     $payment = $this->paymentRepo->save($input);
     if (Input::get('email_receipt')) {
         $this->contactMailer->sendPaymentConfirmation($payment);
         Session::flash('message', trans('texts.created_payment_emailed_client'));
     } else {
         Session::flash('message', trans('texts.created_payment'));
     }
     return redirect()->to($payment->client->getRoute());
 }
 public function getDatatable($clientPublicId = null)
 {
     $clientId = Client::getPrivateId($clientPublicId);
     $query = $this->activityRepo->findByClientId($clientId);
     return $this->createDatatable(ENTITY_ACTIVITY, $query);
 }
 public function create(InvoiceRequest $request, $clientPublicId = 0, $isRecurring = false)
 {
     $account = Auth::user()->account;
     $entityType = $isRecurring ? ENTITY_RECURRING_INVOICE : ENTITY_INVOICE;
     $clientId = null;
     if ($request->client_id) {
         $clientId = Client::getPrivateId($request->client_id);
     }
     $invoice = $account->createInvoice($entityType, $clientId);
     $invoice->public_id = 0;
     if (Session::get('expenses')) {
         $invoice->expenses = Expense::scope(Session::get('expenses'))->with('documents')->get();
     }
     $clients = Client::scope()->with('contacts', 'country')->orderBy('name');
     if (!Auth::user()->hasPermission('view_all')) {
         $clients = $clients->where('clients.user_id', '=', Auth::user()->id);
     }
     $data = ['clients' => $clients->get(), 'entityType' => $invoice->getEntityType(), 'invoice' => $invoice, 'method' => 'POST', 'url' => 'invoices', 'title' => trans('texts.new_invoice')];
     $data = array_merge($data, self::getViewModel($invoice));
     return View::make('invoices.edit', $data);
 }
 /**
  * @param null $clientPublicId
  * @return \Illuminate\Http\JsonResponse
  */
 public function getDatatable($clientPublicId = null)
 {
     $clientId = Client::getPrivateId($clientPublicId);
     $query = $this->activityRepo->findByClientId($clientId);
     return $this->datatableService->createDatatable(new ActivityDatatable(false), $query);
 }