contactUtil = $contactUtil; $this->businessUtil = $businessUtil; $this->transactionUtil = $transactionUtil; $this->moduleUtil = $moduleUtil; $this->productUtil = $productUtil; $this->repairUtil = $repairUtil; $this->commonUtil = $commonUtil; } /** * Display a listing of the resource. * * @return Response */ public function index() { $business_id = request()->session()->get('user.business_id'); if (! (auth()->user()->can('superadmin') || ($this->moduleUtil->hasThePermissionInSubscription($business_id, 'repair_module') && (auth()->user()->can('repair.view') || auth()->user()->can('repair.view_own'))))) { abort(403, 'Unauthorized action.'); } $is_admin = $this->commonUtil->is_admin(auth()->user(), $business_id); if (request()->ajax()) { $sells = Transaction::leftJoin('contacts', 'transactions.contact_id', '=', 'contacts.id') ->leftJoin('transaction_payments as tp', 'transactions.id', '=', 'tp.transaction_id') ->join( 'business_locations AS bl', 'transactions.location_id', '=', 'bl.id' ) ->leftJoin( 'repair_statuses AS rs', 'transactions.repair_status_id', '=', 'rs.id' ) ->leftJoin( 'users as ss', 'ss.id', '=', 'transactions.res_waiter_id' ) ->leftJoin( 'warranties as rw', 'rw.id', '=', 'transactions.repair_warranty_id' ) ->leftJoin( 'transactions AS SR', 'transactions.id', '=', 'SR.return_parent_id' ) ->leftJoin( 'repair_device_models as rdm', 'rdm.id', '=', 'transactions.repair_model_id' ) ->leftJoin( 'brands AS b', 'transactions.repair_brand_id', '=', 'b.id' ) ->join( 'users', 'transactions.created_by', '=', 'users.id' ) ->leftJoin( 'repair_job_sheets AS rjs', 'transactions.repair_job_sheet_id', '=', 'rjs.id' ) ->where('transactions.business_id', $business_id) ->where('transactions.type', 'sell') ->where('transactions.status', 'final') ->where('transactions.sub_type', 'repair') ->select( 'transactions.id', 'transactions.transaction_date', 'transactions.is_direct_sale', 'transactions.invoice_no', 'contacts.name', 'transactions.payment_status', 'transactions.final_total', 'transactions.tax_amount', 'transactions.discount_amount', 'transactions.discount_type', 'transactions.total_before_tax', 'transactions.repair_status_id', 'rs.name as repair_status', 'rs.color as status_color', 'rs.is_completed_status', 'transactions.repair_serial_no', DB::raw('SUM(IF(tp.is_return = 1,-1*tp.amount,tp.amount)) as total_paid'), 'bl.name as business_location', DB::raw('CONCAT(COALESCE(ss.first_name, ""), COALESCE(ss.last_name, "")) as service_staff'), 'transactions.repair_completed_on', 'rw.name as warranty_name', 'rw.duration', 'rw.duration_type', 'transactions.repair_due_date', DB::raw('COUNT(SR.id) as return_exists'), DB::raw('(SELECT SUM(tp1.amount) FROM transaction_payments AS tp1 WHERE tp1.transaction_id=SR.id ) as return_paid'), DB::raw('COALESCE(SR.final_total, 0) as amount_return'), 'SR.id as return_transaction_id', 'rdm.name as device_model', 'b.name as brand', 'transactions.repair_updates_notif', DB::raw("CONCAT(COALESCE(users.surname, ''),' ',COALESCE(users.first_name, ''),' ',COALESCE(users.last_name,'')) as added_by"), 'rjs.job_sheet_no as job_sheet_no', 'rjs.id as job_sheet_id' ); $permitted_locations = auth()->user()->permitted_locations(); if ($permitted_locations != 'all') { $sells->whereIn('transactions.location_id', $permitted_locations); } if (! auth()->user()->can('repair.view') && auth()->user()->can('repair.view_own')) { $sells->where(function ($q) { $q->where('transactions.created_by', auth()->user()->id) ->orWhere('transactions.res_waiter_id', auth()->user()->id); }); } //Add condition for created_by,used in sales representative sales report if (request()->has('created_by')) { $created_by = request()->get('created_by'); if (! empty($created_by)) { $sells->where('transactions.created_by', $created_by); } } if (! empty(request()->input('payment_status'))) { $sells->where('transactions.payment_status', request()->input('payment_status')); } //Add condition for location,used in sales representative expense report if (request()->has('location_id')) { $location_id = request()->get('location_id'); if (! empty($location_id)) { $sells->where('transactions.location_id', $location_id); } } if (! empty(request()->customer_id)) { $customer_id = request()->customer_id; $sells->where('contacts.id', $customer_id); } if (! empty(request()->start_date) && ! empty(request()->end_date)) { $start = request()->start_date; $end = request()->end_date; $sells->whereDate('transactions.transaction_date', '>=', $start) ->whereDate('transactions.transaction_date', '<=', $end); } if (! empty(request()->service_staff_id)) { $sells->where('transactions.res_waiter_id', request()->service_staff_id); } if (! empty(request()->repair_status_id)) { $sells->where('transactions.repair_status_id', request()->repair_status_id); } //filter out mark as completed status $sells->where('rs.is_completed_status', request()->get('is_completed_status')); $sells->groupBy('transactions.id'); $datatable = Datatables::of($sells) ->addColumn( 'action', function ($row) { $html = '
'; return $html; } ) ->removeColumn('id') ->editColumn( 'final_total', '{{$final_total}}' ) ->editColumn( 'tax_amount', '{{$tax_amount}}' ) ->editColumn( 'total_before_tax', '{{$total_before_tax}}' ) ->editColumn( 'discount_amount', function ($row) { $discount = ! empty($row->discount_amount) ? $row->discount_amount : 0; if (! empty($discount) && $row->discount_type == 'percentage') { $discount = $row->total_before_tax * ($discount / 100); } return ''.$discount.''; } ) ->editColumn('repair_due_date', ' @if(!empty($repair_due_date)) @format_datetime($repair_due_date) @endif ') ->editColumn('transaction_date', '@format_date($transaction_date)') ->editColumn( 'payment_status', '{{__(\'lang_v1.\' . $payment_status)}} {{__(\'lang_v1.\' . $payment_status)}} ' ) ->addColumn('total_remaining', function ($row) { $total_remaining = $row->final_total - $row->total_paid; $total_remaining_html = ''.$total_remaining.''; return $total_remaining_html; }) ->editColumn('invoice_no', function ($row) { $invoice_no = $row->invoice_no; if (! empty($row->return_exists)) { $invoice_no .= '  '; } return $invoice_no; }) ->editColumn( 'repair_status', function ($row) { $html = ' '.$row->repair_status.' '; if ($row->repair_updates_notif) { $tooltip = __('repair::lang.sms_sent'); $html .= '
'; } return $html; } ) ->addColumn('return_due', function ($row) { $return_due_html = ''; if (! empty($row->return_exists)) { $return_due = $row->amount_return - $row->return_paid; $return_due_html .= ''.$return_due.''; } return $return_due_html; }) ->editColumn('warranty_name', function ($row) { $warranty = ''; $warranty_expires_in = $this->repairUtil->repairWarrantyExpiresIn($row); if (! empty($warranty_expires_in)) { $warranty = __('repair::lang.warranty').': '.$row->warranty_name.'
'; $warranty .= ''.__('repair::lang.expires_in').': '.$warranty_expires_in.''; } return $warranty; }) ->editColumn('job_sheet_no', function ($row) { $html = $row->job_sheet_no; if (!empty($row->job_sheet_id) && (auth()->user()->can('job_sheet.view_assigned') || auth()->user()->can('job_sheet.view_all') || auth()->user()->can('job_sheet.create'))) { $html = ' '.$row->job_sheet_no.' '; } return $html; }) ->setRowAttr([ 'data-href' => function ($row) { if (auth()->user()->can('sell.view')) { return action([\Modules\Repair\Http\Controllers\RepairController::class, 'show'], [$row->id]); } else { return ''; } }, ]); $rawColumns = ['final_total', 'repair_due_date', 'action', 'total_paid', 'total_remaining', 'payment_status', 'invoice_no', 'discount_amount', 'tax_amount', 'total_before_tax', 'repair_status', 'warranty_name', 'return_due', 'job_sheet_no']; return $datatable->rawColumns($rawColumns) ->make(true); } $business_locations = BusinessLocation::forDropdown($business_id, false); $customers = Contact::customersDropdown($business_id, false); $service_staffs = $this->transactionUtil->serviceStaffDropdown($business_id); $repair_status_dropdown = RepairStatus::forDropdown($business_id); $sales_representative = User::forDropdown($business_id, false, false, true); $user_role_as_service_staff = auth()->user()->roles() ->where('is_service_staff', 1) ->get() ->toArray(); $is_service_staff = false; if (! empty($user_role_as_service_staff) && ! $is_admin) { $is_service_staff = true; } return view('repair::repair.index')->with(compact('business_locations', 'customers', 'service_staffs', 'repair_status_dropdown', 'sales_representative', 'is_service_staff')); } /** * Show the form for creating a new resource. * * @return Response */ public function create() { $business_id = request()->session()->get('user.business_id'); if (! (auth()->user()->can('superadmin') || ($this->moduleUtil->hasThePermissionInSubscription($business_id, 'repair_module') && auth()->user()->can('repair.create')))) { abort(403, 'Unauthorized action.'); } //Check if subscribed or not, then check for users quota if (! $this->moduleUtil->isSubscribed($business_id)) { return $this->moduleUtil->expiredResponse(action([\App\Http\Controllers\HomeController::class, 'index'])); } elseif (! $this->moduleUtil->isQuotaAvailable('invoices', $business_id)) { return $this->moduleUtil->quotaExpiredResponse('invoices', $business_id, action([\App\Http\Controllers\SellPosController::class, 'index'])); } $walk_in_customer = $this->contactUtil->getWalkInCustomer($business_id); $business_details = $this->businessUtil->getDetails($business_id); $taxes = TaxRate::forBusinessDropdown($business_id, true, true); $business_locations = BusinessLocation::forDropdown($business_id, false, true); $bl_attributes = $business_locations['attributes']; $business_locations = $business_locations['locations']; $default_location = null; if (count($business_locations) == 1) { foreach ($business_locations as $id => $name) { $default_location = $id; } } $commsn_agnt_setting = $business_details->sales_cmsn_agnt; $commission_agent = []; if ($commsn_agnt_setting == 'user') { $commission_agent = User::forDropdown($business_id); } elseif ($commsn_agnt_setting == 'cmsn_agnt') { $commission_agent = User::saleCommissionAgentsDropdown($business_id); } $types = []; if (auth()->user()->can('supplier.create')) { $types['supplier'] = __('report.supplier'); } if (auth()->user()->can('customer.create')) { $types['customer'] = __('report.customer'); } if (auth()->user()->can('supplier.create') && auth()->user()->can('customer.create')) { $types['both'] = __('lang_v1.both_supplier_customer'); } $customer_groups = CustomerGroup::forDropdown($business_id); $default_datetime = $this->businessUtil->format_date('now', true); $pos_settings = empty($business_details->pos_settings) ? $this->businessUtil->defaultPosSettings() : json_decode($business_details->pos_settings, true); $repair_statuses = RepairStatus::getRepairSatuses($business_id); $warranties = Warranty::forDropdown($business_id); $brands = Brands::forDropdown($business_id); $service_staff = []; if ($this->productUtil->isModuleEnabled('service_staff')) { $service_staff = $this->productUtil->serviceStaffDropdown($business_id); } $checklist = Business::where('id', $business_id)->value('repair_checklist'); $checklist = ! empty($checklist) ? json_decode($checklist, true) : []; $repair_settings = $this->repairUtil->getRepairSettings($business_id); return view('repair::repair.create') ->with(compact( 'business_details', 'taxes', 'walk_in_customer', 'business_locations', 'bl_attributes', 'default_location', 'commission_agent', 'customer_groups', 'default_datetime', 'pos_settings', 'repair_statuses', 'types', 'brands', 'service_staff', 'checklist', 'warranties', 'repair_settings' )); } /** * Show the specified resource. * * @return Response */ public function show($id) { $business_id = request()->session()->get('user.business_id'); if (! (auth()->user()->can('superadmin') || ($this->moduleUtil->hasThePermissionInSubscription($business_id, 'repair_module') && auth()->user()->can('repair.view')))) { abort(403, 'Unauthorized action.'); } $taxes = TaxRate::where('business_id', $business_id) ->pluck('name', 'id'); $sell = Transaction::where('transactions.business_id', $business_id) ->where('transactions.id', $id) ->leftJoin( 'repair_statuses AS rs', 'transactions.repair_status_id', '=', 'rs.id' ) ->leftJoin( 'users AS service_staff', 'transactions.res_waiter_id', '=', 'service_staff.id' ) ->leftJoin( 'brands AS b', 'transactions.repair_brand_id', '=', 'b.id' ) ->leftJoin( 'warranties as rw', 'rw.id', '=', 'transactions.repair_warranty_id' ) ->leftJoin( 'repair_device_models as rdm', 'rdm.id', '=', 'transactions.repair_model_id' ) ->leftJoin( 'categories as device', 'device.id', '=', 'transactions.repair_device_id' ) ->with(['contact', 'sell_lines' => function ($q) { $q->whereNull('parent_sell_line_id'); }, 'sell_lines.product', 'sell_lines.product.unit', 'sell_lines.variations', 'sell_lines.variations.product_variation', 'payment_lines', 'sell_lines.modifiers', 'sell_lines.lot_details', 'tax', 'sell_lines.sub_unit', 'media']) ->select( 'transactions.*', 'rs.name as repair_status', 'rs.color as repair_status_color', DB::raw('CONCAT( COALESCE(service_staff.first_name, ""), " ", COALESCE(service_staff.last_name, "") ) as service_staff'), 'b.name as manufacturer', 'rw.name as warranty_name', 'rw.duration', 'rw.duration_type', 'rdm.name as repair_model', 'device.name as repair_device' ) ->first(); foreach ($sell->sell_lines as $key => $value) { if (! empty($value->sub_unit_id)) { $formated_sell_line = $this->transactionUtil->recalculateSellLineTotals($business_id, $value); $sell->sell_lines[$key] = $formated_sell_line; } } $payment_types = $this->transactionUtil->payment_types(); $warranty_expires_in = $this->repairUtil->repairWarrantyExpiresIn($sell); $order_taxes = []; if (! empty($sell->tax)) { if ($sell->tax->is_tax_group) { $order_taxes = $this->transactionUtil->sumGroupTaxDetails($this->transactionUtil->groupTaxDetails($sell->tax, $sell->tax_amount)); } else { $order_taxes[$sell->tax->name] = $sell->tax_amount; } } $activities = Activity::forSubject($sell) ->with(['causer', 'subject']) ->latest() ->get(); $common_settings = session()->get('business.common_settings'); $is_warranty_enabled = ! empty($common_settings['enable_product_warranty']) ? true : false; $checklists = []; if (! empty($sell->repair_model_id)) { $device_model = DeviceModel::where('business_id', $business_id) ->find($sell->repair_model_id); if (! empty($device_model) && ! empty($device_model->repair_checklist)) { $checklists = explode('|', $device_model->repair_checklist); } } //merge default checklist $repair_settings = $this->repairUtil->getRepairSettings($business_id); if (! empty($repair_settings['default_repair_checklist'])) { $checklists = array_merge(explode('|', $repair_settings['default_repair_checklist']), $checklists); } return view('repair::repair.show') ->with(compact('taxes', 'sell', 'payment_types', 'order_taxes', 'activities', 'warranty_expires_in', 'is_warranty_enabled', 'checklists')); } /** * Show the form for editing the specified resource. * * @return Response */ public function edit($id) { $business_id = request()->session()->get('user.business_id'); if (! (auth()->user()->can('superadmin') || ($this->moduleUtil->hasThePermissionInSubscription($business_id, 'repair_module') && auth()->user()->can('repair.update')))) { abort(403, 'Unauthorized action.'); } //Check if the transaction can be edited or not. $edit_days = request()->session()->get('business.transaction_edit_days'); if (! $this->transactionUtil->canBeEdited($id, $edit_days)) { return back() ->with('status', ['success' => 0, 'msg' => __('messages.transaction_edit_not_allowed', ['days' => $edit_days]), ]); } //Check if return exist then not allowed if ($this->transactionUtil->isReturnExist($id)) { return back()->with('status', ['success' => 0, 'msg' => __('lang_v1.return_exist'), ]); } $business_id = request()->session()->get('user.business_id'); $business_details = $this->businessUtil->getDetails($business_id); $taxes = TaxRate::forBusinessDropdown($business_id, true, true); $transaction = Transaction::where('business_id', $business_id) ->where('type', 'sell') ->where('sub_type', 'repair') ->findorfail($id); $location_id = $transaction->location_id; $location_printer_type = BusinessLocation::find($location_id)->receipt_printer_type; $sell_details = TransactionSellLine::join( 'products AS p', 'transaction_sell_lines.product_id', '=', 'p.id' ) ->join( 'variations AS variations', 'transaction_sell_lines.variation_id', '=', 'variations.id' ) ->join( 'product_variations AS pv', 'variations.product_variation_id', '=', 'pv.id' ) ->leftjoin('variation_location_details AS vld', function ($join) use ($location_id) { $join->on('variations.id', '=', 'vld.variation_id') ->where('vld.location_id', '=', $location_id); }) ->leftjoin('units', 'units.id', '=', 'p.unit_id') ->where('transaction_sell_lines.transaction_id', $id) ->select( DB::raw("IF(pv.is_dummy = 0, CONCAT(p.name, ' (', pv.name, ':',variations.name, ')'), p.name) AS product_name"), 'p.id as product_id', 'p.enable_stock', 'p.name as product_actual_name', 'pv.name as product_variation_name', 'pv.is_dummy as is_dummy', 'variations.name as variation_name', 'variations.sub_sku', 'p.barcode_type', 'p.enable_sr_no', 'variations.id as variation_id', 'units.short_name as unit', 'units.allow_decimal as unit_allow_decimal', 'transaction_sell_lines.tax_id as tax_id', 'transaction_sell_lines.item_tax as item_tax', 'transaction_sell_lines.unit_price as default_sell_price', 'transaction_sell_lines.unit_price_inc_tax as sell_price_inc_tax', 'transaction_sell_lines.unit_price_before_discount as unit_price_before_discount', 'transaction_sell_lines.id as transaction_sell_lines_id', 'transaction_sell_lines.quantity as quantity_ordered', 'transaction_sell_lines.sell_line_note as sell_line_note', 'transaction_sell_lines.lot_no_line_id', 'transaction_sell_lines.line_discount_type', 'transaction_sell_lines.line_discount_amount', 'units.id as unit_id', 'transaction_sell_lines.sub_unit_id', DB::raw('vld.qty_available + transaction_sell_lines.quantity AS qty_available') ) ->get(); if (! empty($sell_details)) { foreach ($sell_details as $key => $value) { if ($transaction->status != 'final') { $actual_qty_avlbl = $value->qty_available - $value->quantity_ordered; $sell_details[$key]->qty_available = $actual_qty_avlbl; $value->qty_available = $actual_qty_avlbl; } $sell_details[$key]->formatted_qty_available = $this->transactionUtil->num_f($value->qty_available, false, null, true); $lot_numbers = []; if (request()->session()->get('business.enable_lot_number') == 1) { $lot_number_obj = $this->transactionUtil->getLotNumbersFromVariation($value->variation_id, $business_id, $location_id); foreach ($lot_number_obj as $lot_number) { //If lot number is selected added ordered quantity to lot quantity available if ($value->lot_no_line_id == $lot_number->purchase_line_id) { $lot_number->qty_available += $value->quantity_ordered; } $lot_number->qty_formated = $this->transactionUtil->num_f($lot_number->qty_available); $lot_numbers[] = $lot_number; } } $sell_details[$key]->lot_numbers = $lot_numbers; if (! empty($value->sub_unit_id)) { $value = $this->productUtil->changeSellLineUnit($business_id, $value); $sell_details[$key] = $value; } $sell_details[$key]->formatted_qty_available = $this->transactionUtil->num_f($value->qty_available, false, null, true); } } $commsn_agnt_setting = $business_details->sales_cmsn_agnt; $commission_agent = []; if ($commsn_agnt_setting == 'user') { $commission_agent = User::forDropdown($business_id); } elseif ($commsn_agnt_setting == 'cmsn_agnt') { $commission_agent = User::saleCommissionAgentsDropdown($business_id); } $types = []; if (auth()->user()->can('supplier.create')) { $types['supplier'] = __('report.supplier'); } if (auth()->user()->can('customer.create')) { $types['customer'] = __('report.customer'); } if (auth()->user()->can('supplier.create') && auth()->user()->can('customer.create')) { $types['both'] = __('lang_v1.both_supplier_customer'); } $customer_groups = CustomerGroup::forDropdown($business_id); //Selling Price Group Dropdown $price_groups = SellingPriceGroup::forDropdown($business_id); $transaction->transaction_date = $this->transactionUtil->format_date($transaction->transaction_date, true); $transaction->repair_completed_on = ! empty($transaction->repair_completed_on) ? $this->transactionUtil->format_date($transaction->repair_completed_on, true) : null; $pos_settings = empty($business_details->pos_settings) ? $this->businessUtil->defaultPosSettings() : json_decode($business_details->pos_settings, true); $repair_statuses = RepairStatus::getRepairSatuses($business_id); $warranties = Warranty::forDropdown($business_id); $brands = Brands::forDropdown($business_id); $waiters = []; if ($this->productUtil->isModuleEnabled('service_staff')) { $waiters = $this->productUtil->serviceStaffDropdown($business_id); } $checklist = Business::where('id', $business_id)->value('repair_checklist'); $checklist = ! empty($checklist) ? json_decode($checklist, true) : []; $redeem_details = []; if (request()->session()->get('business.enable_rp') == 1) { $redeem_details = $this->transactionUtil->getRewardRedeemDetails($business_id, $transaction->contact_id); $redeem_details['points'] += $transaction->rp_redeemed; $redeem_details['points'] -= $transaction->rp_earned; } return view('repair::repair.edit') ->with(compact( 'business_details', 'taxes', 'sell_details', 'transaction', 'commission_agent', 'types', 'customer_groups', 'price_groups', 'pos_settings', 'repair_statuses', 'brands', 'waiters', 'checklist', 'warranties', 'redeem_details' )); } public function editRepairStatus($repair_id) { $business_id = request()->session()->get('user.business_id'); if (! (auth()->user()->can('superadmin') || ($this->moduleUtil->hasThePermissionInSubscription($business_id, 'repair_module') && auth()->user()->can('repair_status.update')))) { abort(403, 'Unauthorized action.'); } if (request()->ajax()) { $transaction = Transaction::where('business_id', $business_id)->findOrFail($repair_id); $repair_status_dropdown = RepairStatus::forDropdown($business_id, true); $status_template_tags = $this->repairUtil->getRepairStatusTemplateTags(); return view('repair::repair.partials.edit_repair_status_modal') ->with(compact('transaction', 'repair_status_dropdown', 'status_template_tags')); } } public function updateRepairStatus(Request $request) { $business_id = request()->session()->get('user.business_id'); if (! (auth()->user()->can('superadmin') || ($this->moduleUtil->hasThePermissionInSubscription($business_id, 'repair_module') && auth()->user()->can('repair_status.update')))) { abort(403, 'Unauthorized action.'); } if (request()->ajax()) { try { $input = $request->only(['repair_id', 'repair_status_id_modal', 'update_note']); $transaction = Transaction::where('business_id', $business_id)->findOrFail($input['repair_id']); $transaction->repair_status_id = $input['repair_status_id_modal']; $transaction->save(); $status = RepairStatus::where('business_id', $business_id)->findOrFail($input['repair_status_id_modal']); //Send repair updates if (! empty($request->input('send_sms'))) { $sms_body = $request->input('sms_body'); $response = $this->repairUtil->sendRepairUpdateNotification($sms_body, $transaction); } //update if notification is sent or not if (! empty($response) && $response->getStatusCode() == 200) { $transaction->repair_updates_notif = 1; } else { $transaction->repair_updates_notif = 0; } $transaction->save(); activity() ->performedOn($transaction) ->withProperties(['update_note' => $input['update_note'], 'updated_status' => $status->name]) ->log('status_changed'); $output = ['success' => true, 'msg' => __('lang_v1.updated_success'), ]; } catch (\Exception $e) { \Log::emergency('File:'.$e->getFile().'Line:'.$e->getLine().'Message:'.$e->getMessage()); $output = ['success' => false, 'msg' => __('messages.something_went_wrong'), ]; } return $output; } } public function deleteMedia($id) { $business_id = request()->session()->get('user.business_id'); if (! (auth()->user()->can('superadmin') || ($this->moduleUtil->hasThePermissionInSubscription($business_id, 'repair_module') && auth()->user()->can('repair.update')))) { abort(403, 'Unauthorized action.'); } try { Media::deleteMedia($business_id, $id); $output = ['success' => true, 'msg' => __('lang_v1.deleted_success'), ]; } catch (\Exception $e) { \Log::emergency('File:'.$e->getFile().'Line:'.$e->getLine().'Message:'.$e->getMessage()); $output = ['success' => false, 'msg' => __('messages.something_went_wrong'), ]; } return $output; } /** * Prints barcode for the repair * * @return Response */ public function printLabel($transaction_id) { try { $business_id = request()->session()->get('user.business_id'); $transaction = Transaction::where('business_id', $business_id) ->with(['contact']) ->findorfail($transaction_id); $repair_settings = $this->repairUtil->getRepairSettings($business_id); //barcode types $default_barcode_type = $this->moduleUtil->barcode_default(); $barcode_type = ! empty($repair_settings['barcode_type']) ? $repair_settings['barcode_type'] : $default_barcode_type; $barcode_details = Barcode::find($repair_settings['barcode_id']); $business_name = request()->session()->get('business.name'); $product_details = []; $total_qty = 0; $product_details[] = ['details' => $transaction, 'qty' => 1]; $total_qty = 1; $page_height = null; if ($barcode_details->is_continuous) { $rows = ceil($total_qty / $barcode_details->stickers_in_one_row) + 0.4; $barcode_details->paper_height = $barcode_details->top_margin + ($rows * $barcode_details->height) + ($rows * $barcode_details->row_distance); } return view('repair::repair.partials.preview_label') ->with(compact('product_details', 'business_name', 'barcode_details', 'page_height', 'barcode_type')); } catch (\Exception $e) { \Log::emergency('File:'.$e->getFile().'Line:'.$e->getLine().'Message:'.$e->getMessage()); $output = ['html' => '', 'success' => false, 'msg' => __('lang_v1.barcode_label_error'), ]; } return $output; } /** * Prints the customer copy * * @return Response */ public function printCustomerCopy(Request $request, $transaction_id) { if (request()->ajax()) { try { $output = [ 'success' => 0, 'msg' => trans('messages.something_went_wrong'), ]; $business_id = $request->session()->get('user.business_id'); $transaction = Transaction::where('business_id', $business_id) ->where('id', $transaction_id) ->with(['location']) ->first(); if (empty($transaction)) { return $output; } $receipt = $this->_receiptContent($business_id, $transaction->location_id, $transaction_id); if (! empty($receipt)) { $output = ['success' => 1, 'receipt' => $receipt]; } } catch (\Exception $e) { \Log::emergency('File:'.$e->getFile().'Line:'.$e->getLine().'Message:'.$e->getMessage()); $output = [ 'success' => 0, 'msg' => trans('messages.something_went_wrong'), ]; } return $output; } } protected function _receiptContent($business_id, $location_id, $transaction_id) { $business_details = $this->businessUtil->getDetails($business_id); $location_details = BusinessLocation::find($location_id); $invoice_layout = $this->businessUtil->invoiceLayout($business_id, $location_details->invoice_layout_id); $receipt_details = $this->transactionUtil->getReceiptDetails($transaction_id, $location_id, $invoice_layout, $business_details, $location_details, 'browser'); $currency_details = [ 'symbol' => $business_details->currency_symbol, 'thousand_separator' => $business_details->thousand_separator, 'decimal_separator' => $business_details->decimal_separator, ]; $receipt_details->currency = $currency_details; $output['html_content'] = view('repair::repair.receipts.classic', compact('receipt_details'))->render(); return $output; } }