Gunawan19621
1 year ago
11 changed files with 1634 additions and 92 deletions
@ -0,0 +1,17 @@ |
|||||||
|
<?php |
||||||
|
|
||||||
|
namespace App\Exports; |
||||||
|
|
||||||
|
use App\Models\m_asset; |
||||||
|
use Maatwebsite\Excel\Concerns\FromCollection; |
||||||
|
|
||||||
|
class AssetExport implements FromCollection |
||||||
|
{ |
||||||
|
/** |
||||||
|
* @return \Illuminate\Support\Collection |
||||||
|
*/ |
||||||
|
public function collection() |
||||||
|
{ |
||||||
|
return m_asset::all(); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,333 @@ |
|||||||
|
<?php |
||||||
|
|
||||||
|
use Maatwebsite\Excel\Excel; |
||||||
|
|
||||||
|
return [ |
||||||
|
'exports' => [ |
||||||
|
|
||||||
|
/* |
||||||
|
|-------------------------------------------------------------------------- |
||||||
|
| Chunk size |
||||||
|
|-------------------------------------------------------------------------- |
||||||
|
| |
||||||
|
| When using FromQuery, the query is automatically chunked. |
||||||
|
| Here you can specify how big the chunk should be. |
||||||
|
| |
||||||
|
*/ |
||||||
|
'chunk_size' => 1000, |
||||||
|
|
||||||
|
/* |
||||||
|
|-------------------------------------------------------------------------- |
||||||
|
| Pre-calculate formulas during export |
||||||
|
|-------------------------------------------------------------------------- |
||||||
|
*/ |
||||||
|
'pre_calculate_formulas' => false, |
||||||
|
|
||||||
|
/* |
||||||
|
|-------------------------------------------------------------------------- |
||||||
|
| Enable strict null comparison |
||||||
|
|-------------------------------------------------------------------------- |
||||||
|
| |
||||||
|
| When enabling strict null comparison empty cells ('') will |
||||||
|
| be added to the sheet. |
||||||
|
*/ |
||||||
|
'strict_null_comparison' => false, |
||||||
|
|
||||||
|
/* |
||||||
|
|-------------------------------------------------------------------------- |
||||||
|
| CSV Settings |
||||||
|
|-------------------------------------------------------------------------- |
||||||
|
| |
||||||
|
| Configure e.g. delimiter, enclosure and line ending for CSV exports. |
||||||
|
| |
||||||
|
*/ |
||||||
|
'csv' => [ |
||||||
|
'delimiter' => ',', |
||||||
|
'enclosure' => '"', |
||||||
|
'line_ending' => PHP_EOL, |
||||||
|
'use_bom' => false, |
||||||
|
'include_separator_line' => false, |
||||||
|
'excel_compatibility' => false, |
||||||
|
'output_encoding' => '', |
||||||
|
'test_auto_detect' => true, |
||||||
|
], |
||||||
|
|
||||||
|
/* |
||||||
|
|-------------------------------------------------------------------------- |
||||||
|
| Worksheet properties |
||||||
|
|-------------------------------------------------------------------------- |
||||||
|
| |
||||||
|
| Configure e.g. default title, creator, subject,... |
||||||
|
| |
||||||
|
*/ |
||||||
|
'properties' => [ |
||||||
|
'creator' => '', |
||||||
|
'lastModifiedBy' => '', |
||||||
|
'title' => '', |
||||||
|
'description' => '', |
||||||
|
'subject' => '', |
||||||
|
'keywords' => '', |
||||||
|
'category' => '', |
||||||
|
'manager' => '', |
||||||
|
'company' => '', |
||||||
|
], |
||||||
|
], |
||||||
|
|
||||||
|
'imports' => [ |
||||||
|
|
||||||
|
/* |
||||||
|
|-------------------------------------------------------------------------- |
||||||
|
| Read Only |
||||||
|
|-------------------------------------------------------------------------- |
||||||
|
| |
||||||
|
| When dealing with imports, you might only be interested in the |
||||||
|
| data that the sheet exists. By default we ignore all styles, |
||||||
|
| however if you want to do some logic based on style data |
||||||
|
| you can enable it by setting read_only to false. |
||||||
|
| |
||||||
|
*/ |
||||||
|
'read_only' => true, |
||||||
|
|
||||||
|
/* |
||||||
|
|-------------------------------------------------------------------------- |
||||||
|
| Ignore Empty |
||||||
|
|-------------------------------------------------------------------------- |
||||||
|
| |
||||||
|
| When dealing with imports, you might be interested in ignoring |
||||||
|
| rows that have null values or empty strings. By default rows |
||||||
|
| containing empty strings or empty values are not ignored but can be |
||||||
|
| ignored by enabling the setting ignore_empty to true. |
||||||
|
| |
||||||
|
*/ |
||||||
|
'ignore_empty' => false, |
||||||
|
|
||||||
|
/* |
||||||
|
|-------------------------------------------------------------------------- |
||||||
|
| Heading Row Formatter |
||||||
|
|-------------------------------------------------------------------------- |
||||||
|
| |
||||||
|
| Configure the heading row formatter. |
||||||
|
| Available options: none|slug|custom |
||||||
|
| |
||||||
|
*/ |
||||||
|
'heading_row' => [ |
||||||
|
'formatter' => 'slug', |
||||||
|
], |
||||||
|
|
||||||
|
/* |
||||||
|
|-------------------------------------------------------------------------- |
||||||
|
| CSV Settings |
||||||
|
|-------------------------------------------------------------------------- |
||||||
|
| |
||||||
|
| Configure e.g. delimiter, enclosure and line ending for CSV imports. |
||||||
|
| |
||||||
|
*/ |
||||||
|
'csv' => [ |
||||||
|
'delimiter' => null, |
||||||
|
'enclosure' => '"', |
||||||
|
'escape_character' => '\\', |
||||||
|
'contiguous' => false, |
||||||
|
'input_encoding' => 'UTF-8', |
||||||
|
], |
||||||
|
|
||||||
|
/* |
||||||
|
|-------------------------------------------------------------------------- |
||||||
|
| Worksheet properties |
||||||
|
|-------------------------------------------------------------------------- |
||||||
|
| |
||||||
|
| Configure e.g. default title, creator, subject,... |
||||||
|
| |
||||||
|
*/ |
||||||
|
'properties' => [ |
||||||
|
'creator' => '', |
||||||
|
'lastModifiedBy' => '', |
||||||
|
'title' => '', |
||||||
|
'description' => '', |
||||||
|
'subject' => '', |
||||||
|
'keywords' => '', |
||||||
|
'category' => '', |
||||||
|
'manager' => '', |
||||||
|
'company' => '', |
||||||
|
], |
||||||
|
|
||||||
|
], |
||||||
|
|
||||||
|
/* |
||||||
|
|-------------------------------------------------------------------------- |
||||||
|
| Extension detector |
||||||
|
|-------------------------------------------------------------------------- |
||||||
|
| |
||||||
|
| Configure here which writer/reader type should be used when the package |
||||||
|
| needs to guess the correct type based on the extension alone. |
||||||
|
| |
||||||
|
*/ |
||||||
|
'extension_detector' => [ |
||||||
|
'xlsx' => Excel::XLSX, |
||||||
|
'xlsm' => Excel::XLSX, |
||||||
|
'xltx' => Excel::XLSX, |
||||||
|
'xltm' => Excel::XLSX, |
||||||
|
'xls' => Excel::XLS, |
||||||
|
'xlt' => Excel::XLS, |
||||||
|
'ods' => Excel::ODS, |
||||||
|
'ots' => Excel::ODS, |
||||||
|
'slk' => Excel::SLK, |
||||||
|
'xml' => Excel::XML, |
||||||
|
'gnumeric' => Excel::GNUMERIC, |
||||||
|
'htm' => Excel::HTML, |
||||||
|
'html' => Excel::HTML, |
||||||
|
'csv' => Excel::CSV, |
||||||
|
'tsv' => Excel::TSV, |
||||||
|
|
||||||
|
/* |
||||||
|
|-------------------------------------------------------------------------- |
||||||
|
| PDF Extension |
||||||
|
|-------------------------------------------------------------------------- |
||||||
|
| |
||||||
|
| Configure here which Pdf driver should be used by default. |
||||||
|
| Available options: Excel::MPDF | Excel::TCPDF | Excel::DOMPDF |
||||||
|
| |
||||||
|
*/ |
||||||
|
'pdf' => Excel::DOMPDF, |
||||||
|
], |
||||||
|
|
||||||
|
/* |
||||||
|
|-------------------------------------------------------------------------- |
||||||
|
| Value Binder |
||||||
|
|-------------------------------------------------------------------------- |
||||||
|
| |
||||||
|
| PhpSpreadsheet offers a way to hook into the process of a value being |
||||||
|
| written to a cell. In there some assumptions are made on how the |
||||||
|
| value should be formatted. If you want to change those defaults, |
||||||
|
| you can implement your own default value binder. |
||||||
|
| |
||||||
|
| Possible value binders: |
||||||
|
| |
||||||
|
| [x] Maatwebsite\Excel\DefaultValueBinder::class |
||||||
|
| [x] PhpOffice\PhpSpreadsheet\Cell\StringValueBinder::class |
||||||
|
| [x] PhpOffice\PhpSpreadsheet\Cell\AdvancedValueBinder::class |
||||||
|
| |
||||||
|
*/ |
||||||
|
'value_binder' => [ |
||||||
|
'default' => Maatwebsite\Excel\DefaultValueBinder::class, |
||||||
|
], |
||||||
|
|
||||||
|
'cache' => [ |
||||||
|
/* |
||||||
|
|-------------------------------------------------------------------------- |
||||||
|
| Default cell caching driver |
||||||
|
|-------------------------------------------------------------------------- |
||||||
|
| |
||||||
|
| By default PhpSpreadsheet keeps all cell values in memory, however when |
||||||
|
| dealing with large files, this might result into memory issues. If you |
||||||
|
| want to mitigate that, you can configure a cell caching driver here. |
||||||
|
| When using the illuminate driver, it will store each value in the |
||||||
|
| cache store. This can slow down the process, because it needs to |
||||||
|
| store each value. You can use the "batch" store if you want to |
||||||
|
| only persist to the store when the memory limit is reached. |
||||||
|
| |
||||||
|
| Drivers: memory|illuminate|batch |
||||||
|
| |
||||||
|
*/ |
||||||
|
'driver' => 'memory', |
||||||
|
|
||||||
|
/* |
||||||
|
|-------------------------------------------------------------------------- |
||||||
|
| Batch memory caching |
||||||
|
|-------------------------------------------------------------------------- |
||||||
|
| |
||||||
|
| When dealing with the "batch" caching driver, it will only |
||||||
|
| persist to the store when the memory limit is reached. |
||||||
|
| Here you can tweak the memory limit to your liking. |
||||||
|
| |
||||||
|
*/ |
||||||
|
'batch' => [ |
||||||
|
'memory_limit' => 60000, |
||||||
|
], |
||||||
|
|
||||||
|
/* |
||||||
|
|-------------------------------------------------------------------------- |
||||||
|
| Illuminate cache |
||||||
|
|-------------------------------------------------------------------------- |
||||||
|
| |
||||||
|
| When using the "illuminate" caching driver, it will automatically use |
||||||
|
| your default cache store. However if you prefer to have the cell |
||||||
|
| cache on a separate store, you can configure the store name here. |
||||||
|
| You can use any store defined in your cache config. When leaving |
||||||
|
| at "null" it will use the default store. |
||||||
|
| |
||||||
|
*/ |
||||||
|
'illuminate' => [ |
||||||
|
'store' => null, |
||||||
|
], |
||||||
|
], |
||||||
|
|
||||||
|
/* |
||||||
|
|-------------------------------------------------------------------------- |
||||||
|
| Transaction Handler |
||||||
|
|-------------------------------------------------------------------------- |
||||||
|
| |
||||||
|
| By default the import is wrapped in a transaction. This is useful |
||||||
|
| for when an import may fail and you want to retry it. With the |
||||||
|
| transactions, the previous import gets rolled-back. |
||||||
|
| |
||||||
|
| You can disable the transaction handler by setting this to null. |
||||||
|
| Or you can choose a custom made transaction handler here. |
||||||
|
| |
||||||
|
| Supported handlers: null|db |
||||||
|
| |
||||||
|
*/ |
||||||
|
'transactions' => [ |
||||||
|
'handler' => 'db', |
||||||
|
'db' => [ |
||||||
|
'connection' => null, |
||||||
|
], |
||||||
|
], |
||||||
|
|
||||||
|
'temporary_files' => [ |
||||||
|
|
||||||
|
/* |
||||||
|
|-------------------------------------------------------------------------- |
||||||
|
| Local Temporary Path |
||||||
|
|-------------------------------------------------------------------------- |
||||||
|
| |
||||||
|
| When exporting and importing files, we use a temporary file, before |
||||||
|
| storing reading or downloading. Here you can customize that path. |
||||||
|
| |
||||||
|
*/ |
||||||
|
'local_path' => storage_path('framework/cache/laravel-excel'), |
||||||
|
|
||||||
|
/* |
||||||
|
|-------------------------------------------------------------------------- |
||||||
|
| Remote Temporary Disk |
||||||
|
|-------------------------------------------------------------------------- |
||||||
|
| |
||||||
|
| When dealing with a multi server setup with queues in which you |
||||||
|
| cannot rely on having a shared local temporary path, you might |
||||||
|
| want to store the temporary file on a shared disk. During the |
||||||
|
| queue executing, we'll retrieve the temporary file from that |
||||||
|
| location instead. When left to null, it will always use |
||||||
|
| the local path. This setting only has effect when using |
||||||
|
| in conjunction with queued imports and exports. |
||||||
|
| |
||||||
|
*/ |
||||||
|
'remote_disk' => null, |
||||||
|
'remote_prefix' => null, |
||||||
|
|
||||||
|
/* |
||||||
|
|-------------------------------------------------------------------------- |
||||||
|
| Force Resync |
||||||
|
|-------------------------------------------------------------------------- |
||||||
|
| |
||||||
|
| When dealing with a multi server setup as above, it's possible |
||||||
|
| for the clean up that occurs after entire queue has been run to only |
||||||
|
| cleanup the server that the last AfterImportJob runs on. The rest of the server |
||||||
|
| would still have the local temporary file stored on it. In this case your |
||||||
|
| local storage limits can be exceeded and future imports won't be processed. |
||||||
|
| To mitigate this you can set this config value to be true, so that after every |
||||||
|
| queued chunk is processed the local temporary file is deleted on the server that |
||||||
|
| processed it. |
||||||
|
| |
||||||
|
*/ |
||||||
|
'force_resync_remote' => null, |
||||||
|
], |
||||||
|
]; |
@ -0,0 +1,84 @@ |
|||||||
|
<!DOCTYPE html> |
||||||
|
<html> |
||||||
|
|
||||||
|
<head> |
||||||
|
<style> |
||||||
|
#customers { |
||||||
|
font-family: Arial, Helvetica, sans-serif; |
||||||
|
border-collapse: collapse; |
||||||
|
width: 100%; |
||||||
|
} |
||||||
|
|
||||||
|
#customers td, |
||||||
|
#customers th { |
||||||
|
border: 1px solid #ddd; |
||||||
|
padding: 8px; |
||||||
|
} |
||||||
|
|
||||||
|
#customers tr:nth-child(even) { |
||||||
|
background-color: #f2f2f2; |
||||||
|
} |
||||||
|
|
||||||
|
#customers tr:hover { |
||||||
|
background-color: #ddd; |
||||||
|
} |
||||||
|
|
||||||
|
#customers th { |
||||||
|
padding-top: 12px; |
||||||
|
padding-bottom: 12px; |
||||||
|
text-align: left; |
||||||
|
background-color: #4aa2dd; |
||||||
|
color: white; |
||||||
|
} |
||||||
|
</style> |
||||||
|
</head> |
||||||
|
|
||||||
|
<body> |
||||||
|
|
||||||
|
{{-- <h1>Laporan Keuangan</h1> --}} |
||||||
|
<h1 class="text-gray-800">Tabel Asset</h1> |
||||||
|
<div class="mb-3"> |
||||||
|
<p>Our Item Tables are enhanced with the help of the DataTables plugin. This is a powerful tool that allows you |
||||||
|
to explore return data in a more interactive and efficient way</p> |
||||||
|
</div> |
||||||
|
<table id="customers"> |
||||||
|
<thead> |
||||||
|
<tr> |
||||||
|
<th>No. Seri</th> |
||||||
|
<th>Nama</th> |
||||||
|
<th>Deskripsi</th> |
||||||
|
<th>Gudang</th> |
||||||
|
<th>Tanggal</th> |
||||||
|
<th>QR</th> |
||||||
|
</tr> |
||||||
|
</thead> |
||||||
|
<tbody> |
||||||
|
@forelse ($asset as $data) |
||||||
|
<tr> |
||||||
|
<td>{{ $data->seri }}</td> |
||||||
|
<td>{{ $data->name }}</td> |
||||||
|
<td>{{ $data->description }}</td> |
||||||
|
<td>{{ $data->warehouse->name }}</td> |
||||||
|
<td>{{ \Carbon\Carbon::parse($data->date)->format('d-m-Y') }}</td> |
||||||
|
<td>{{ $data->qr_count }}</td> |
||||||
|
</tr> |
||||||
|
@empty |
||||||
|
<p>Data Kosong</p> |
||||||
|
@endforelse |
||||||
|
</tbody> |
||||||
|
<tfoot> |
||||||
|
<tr> |
||||||
|
<th>No. Seri</th> |
||||||
|
<th>Nama</th> |
||||||
|
<th>Deskripsi</th> |
||||||
|
<th>Gudang</th> |
||||||
|
<th>Tanggal</th> |
||||||
|
<th>QR</th> |
||||||
|
</tr> |
||||||
|
</tfoot> |
||||||
|
|
||||||
|
</table> |
||||||
|
|
||||||
|
</body> |
||||||
|
|
||||||
|
</html> |
Loading…
Reference in new issue