MIF_31211725/app/Exports/BahanBakuExport.php

65 lines
1.7 KiB
PHP

<?php
namespace App\Exports;
use App\Models\BahanBaku;
use Carbon\Carbon;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\WithHeadings;
use Maatwebsite\Excel\Concerns\WithMapping;
class BahanBakuExport implements FromCollection, WithHeadings, WithMapping
{
protected $startDate;
protected $endDate;
public function __construct($startDate, $endDate)
{
$this->startDate = $startDate;
$this->endDate = $endDate;
}
/**
* @return \Illuminate\Support\Collection
*/
public function collection()
{
return BahanBaku::with(['transaksiMasuk', 'transaksiKeluar'])
->when($this->startDate, function ($query) {
$query->whereDate('created_at', '>=', $this->startDate);
})
->when($this->endDate, function ($query) {
$query->whereDate('created_at', '<=', $this->endDate);
})
->get();
}
public function headings(): array
{
return [
'No',
'Bahan Baku',
'Harga per meter',
'Jumlah Masuk',
'Total Harga',
'Jumlah Digunakan',
'Sisa Bahan',
'Tanggal Beli',
];
}
public function map($bahan): array
{
return [
$bahan->id,
$bahan->nama,
'Rp. ' . number_format($bahan->harga, 0, ',', '.'),
$bahan->transaksiMasuk->sum('qty') . ' meter',
'Rp. ' . number_format($bahan->harga * $bahan->transaksiMasuk->sum('qty'), 0, ',', '.'),
$bahan->transaksiKeluar->sum('qty') . ' meter',
$bahan->qty,
Carbon::parse($bahan->created_at)->format('d F Y'),
];
}
}