File manager - Edit - /var/www/payraty/inventory_main/app/DataTables/PurchaseDataTable.php
Back
<?php namespace App\DataTables; use PDF; use App\Models\Purchase; use Illuminate\Support\Str; use Yajra\DataTables\Html\Column; use Yajra\DataTables\Services\DataTable; /** * PurchaseDataTable */ class PurchaseDataTable extends DataTable { /** * Build DataTable class. * * @param mixed $query Results from query() method. * @return \Yajra\DataTables\DataTableAbstract */ public function dataTable($query) { return datatables() ->eloquent($query) ->filterColumn('missing_item', function ($query, $keyword) { }) ->filterColumn('purchaseItems', function ($query, $keyword) { }) ->addColumn('action', function ($item) { $buttons = ''; if (auth()->user()->can('Show Purchase')) { $buttons .= '<a class="dropdown-item" href="' . route('admin.purchases.show', $item->id) . '" title="' . __t('show') . '"><i class="fa fa-eye"></i> ' . __t('show') . ' </a>'; } if ($item->status != Purchase::STATUS_CANCEL) { if ($item->received == null) { if (auth()->user()->can('Edit Purchase')) { $buttons .= '<a class="dropdown-item" href="' . route('admin.purchases.edit', $item->id) . '" title="' . __t('edit') . '"><i class="fa fa-edit"></i> ' . __('custom.edit') . ' </a>'; } if (auth()->user()->can('Cancel Purchase')) { $buttons .= '<a class="dropdown-item" href="' . route('admin.purchases.cancel', $item->id) . '" title="' . __t('cancel') . '"><i class="fa fa-times"></i> ' . __('custom.cancel') . ' </a>'; } } if (auth()->user()->can('Receive Purchase')) { $buttons .= '<a class="dropdown-item" href="' . route('admin.purchases.receive', $item->id) . '" title="' . __t('receive') . '"><i class="fa fa-arrow-circle-down"></i> ' . __t('receive') . ' </a>'; } if ($item->status == Purchase::STATUS_CONFIRMED) { if ($item->received) { if (auth()->user()->can('Return Purchase')) { $buttons .= '<a class="dropdown-item" href="' . route('admin.purchases.return', $item->id) . '" title="' . __t('cancel') . '"><i class="fa fa-undo-alt"></i> ' . __t('return') . ' </a>'; } } } // if ($item->status != Purchase::STATUS_CONFIRMED) { // if (auth()->user()->can('Confirm Purchase')) { // $buttons .= '<a class="dropdown-item" href="' . route('admin.purchases.confirm', $item->id) . '" title="' . __t('confirm') . '"><i class="fa fa-check-square"></i> ' . __t('confirm') . ' </a>'; // } // } } if (auth()->user()->can('Show Purchase')) { $buttons .= '<form action="' . route('admin.purchases.destroy', $item->id) . '" id="delete-form-' . $item->id . '" method="post"> <input type="hidden" name="_token" value="' . csrf_token() . '"> <input type="hidden" name="_method" value="DELETE"> <button class="dropdown-item text-danger delete-list-data" data-from-name="'. $item->purchase_number.'" data-from-id="' . $item->id . '" type="button" title="Delete"><i class="fa fa-trash"></i> ' . __('custom.delete') . '</button></form> '; } return '<div class="dropdown btn-group dropup"> <a href="#" class="btn btn-dark btn-sm" data-toggle="dropdown" data-boundary="viewport" aria-haspopup="true" aria-haspopup="true" aria-expanded="false"><i class="fas fa-ellipsis-v"></i></a> <div class="dropdown-menu"> ' . $buttons . ' </div> </div>'; }) ->editColumn('date', function ($item) { return date('Y-m-d', strtotime($item->date)); }) ->editColumn('purchase_number', function ($item) { return '<a class="btn btn-link" href="' . route('admin.purchases.show', $item->id) . '">' . $item->purchase_number . '</a>'; }) // ->editColumn('status', function ($item) { // $badge = $item->status == Purchase::STATUS_REQUESTED ? "badge-success" : ($item->status == Purchase::STATUS_CONFIRMED ? "badge-primary" : "badge-danger"); // return '<span class="badge ' . $badge . '">' . Str::upper($item->status) . '</span>'; // }) ->editColumn('received', function ($item) { if ($item->received) { return '<span class="badge badge-success">' . __t('received') . '</span>'; } else { if ($item->status == \App\Models\Purchase::STATUS_CANCEL) { return '<span class="badge badge-danger">' . ucfirst(\App\Models\Purchase::STATUS_CANCEL) . '</span>'; } elseif ($item->status == \App\Models\Purchase::STATUS_REQUESTED) { return '<span class="badge badge-info">' . ucfirst(\App\Models\Purchase::STATUS_REQUESTED) . '</span>'; } elseif ($item->status == \App\Models\Purchase::STATUS_CONFIRMED) { return '<span class="badge badge-success">' . ucfirst(\App\Models\Purchase::STATUS_CONFIRMED) . '</span>'; } else { return '<span class="badge badge-warning">' . __t('not_received_yet') . '</span>'; } } }) ->editColumn('purchaseItems', function ($item) { return $item->purchaseItems->count(); }) ->editColumn('missing_item', function ($item) { if ($item->received) { $purchaseItemQty = $item->purchaseItems->sum('quantity'); $purchaseReceiveItemQty = 0; foreach ($item->purchaseItems as $purchaseItems) { $purchaseReceiveItemQty += $purchaseItems->receiveItems->sum('quantity'); } if ($purchaseItemQty != $purchaseReceiveItemQty) { return '<span class="badge badge-danger">' . __t('missing') .' ('.$purchaseItemQty - $purchaseReceiveItemQty.')' .'</span>'; } } }) ->editColumn('total', function ($item) { return currencySymbol() . make2decimal($item->total); }) ->editColumn('supplier.first_name', function ($item) { return $item->supplier->full_name; }) ->rawColumns(['status', 'received', 'date', 'purchaseItems', 'action', 'missing_item', 'supplier.first_name', 'purchase_number'])->addIndexColumn(); } /** * Get query source of dataTable. * * @param User $model * @return \Illuminate\Database\Eloquent\Builder */ public function query(Purchase $model) { return $model->with(['supplier', 'warehouse', 'purchaseItems'])->newQuery()->select('purchases.*'); } /** * Optional method if you want to use html builder. * * @return \Yajra\DataTables\Html\Builder */ public function html() { $params = $this->getBuilderParameters(); $params['order'] = [[1, 'desc']]; return $this->builder() ->columns($this->getColumns()) ->minifiedAjax() ->addAction(['width' => '55px', 'class' => "text-center", 'width' => '55px', 'printable' => false, 'exportable' => false, 'title' => __('custom.action')]) ->parameters($params); } /** * Get columns. * * @return array */ protected function getColumns() { return [ Column::computed('DT_RowIndex', __('custom.sl')), Column::make('purchase_number', 'purchase_number')->title(__t('purchase_number')), Column::make('supplier.first_name', 'supplier.first_name')->title(__t('supplier_name')), Column::make('warehouse.name', 'warehouse.name')->title(__t('warehouse')), Column::make('date', 'date')->title(__t('date')), Column::make('total', 'total')->title(__t('total')), // Column::make('status', 'status')->title(__('custom.status')), Column::make('purchaseItems', 'purchaseItems')->title(__t('total_product'))->addClass('text-center'), Column::make('received', 'received')->title(__t('received')), Column::make('missing_item', 'missing_item')->title(__t('missing_item')), ]; } /** * Get filename for export. * * @return string */ protected function filename() { return 'Purchase_' . date('YmdHis'); } /** * pdf * * @return void */ public function pdf() { $data = $this->getDataForExport(); $pdf = PDF::loadView('vendor.datatables.print', [ 'data' => $data ]); return $pdf->download($this->getFilename() . '.pdf'); } }
| ver. 1.4 |
Github
|
.
| PHP 8.3.30 | Generation time: 0 |
proxy
|
phpinfo
|
Settings