php artisan powergrid:create
<?php
namespace App\Livewire;
use App\Models\FacturaCompra;
use Illuminate\Support\Carbon;
use Illuminate\Database\Eloquent\Builder;
use PowerComponents\LivewirePowerGrid\Button;
use PowerComponents\LivewirePowerGrid\Column;
use PowerComponents\LivewirePowerGrid\Facades\Filter;
use PowerComponents\LivewirePowerGrid\Facades\PowerGrid;
use PowerComponents\LivewirePowerGrid\PowerGridFields;
use PowerComponents\LivewirePowerGrid\PowerGridComponent;
use PowerComponents\LivewirePowerGrid\Responsive;
final class FacturaCompraTable extends PowerGridComponent
{
public string $tableName = 'factura-compra-table-dneqqk-table';
public function setUp(): array
{
$this->showCheckBox();
return [
PowerGrid::header()
->showSearchInput()
->showToggleColumns(),
PowerGrid::footer()
->showPerPage()
->showRecordCount(),
];
}
public function datasource(): Builder
{
return FacturaCompra::query()
->join('proveidors', 'facturascompras.proveidor_id', '=', 'proveidors.id')
->select('facturascompras.*', 'proveidors.raosocial as proveidor_raosocial');
}
public function relationSearch(): array
{
return [
'proveidor' => [
'raosocial',
],
];
}
public function fields(): PowerGridFields
{
return PowerGrid::fields()
->add('id')
->add('proveidor_raosocial', fn (FacturaCompra $model) => '<a class="underline text-blue-600 hover:text-blue-800" href="'.url('/admin/factura-compras/'.$model->id.'/edit').'">'.$model->proveidor->raosocial.'</a>')
->add('data_formatted', fn (FacturaCompra $model) => Carbon::parse($model->data)->format('d/m/Y'))
->add('totalsenseiva')
->add('iva')
->add('totalambiva')
->add('total')
->add('url_factura')
->add('created_at');
}
public function columns(): array
{
return [
Column::make('Id', 'id')
->sortable()
->searchable(),
Column::make('Proveidor', 'proveidor_raosocial')
->sortable()
->searchable(),
Column::make('Data', 'data_formatted', 'data')
->sortable(),
Column::make('Totalsenseiva', 'totalsenseiva')
->sortable()
->searchable(),
Column::make('Iva', 'iva')
->sortable()
->searchable(),
Column::make('Totalambiva', 'totalambiva')
->sortable()
->searchable(),
Column::make('Total', 'total')
->sortable()
->searchable(),
Column::make('Url factura', 'url_factura')
->sortable()
->searchable(),
Column::make('Created at', 'created_at_formatted', 'created_at')
->sortable(),
Column::make('Created at', 'created_at')
->sortable()
->searchable(),
];
}
public function filters(): array
{
return [
Filter::datepicker('data'),
];
}
#[\Livewire\Attributes\On('edit')]
public function edit($rowId): void
{
$this->js('alert('.$rowId.')');
}
}