| Path : /var/www/html/jewelry-pos/app/Exports/ |
|
B-Con CMD Config cPanel C-Rdp D-Log Info Jump Mass Ransom Symlink vHost Zone-H |
| Current File : /var/www/html/jewelry-pos/app/Exports/ProductTransactionReportExport.php |
<?php
namespace App\Exports;
use App\Models\QtyHistory;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\FromQuery;
use Maatwebsite\Excel\Concerns\WithHeadings;
use Maatwebsite\Excel\Concerns\WithMapping;
class ProductTransactionReportExport implements FromQuery , WithMapping , WithHeadings
{
/**
* @return \Illuminate\Support\Collection
*/
// public function collection()
// {
// //
// }
private $no = 0;
private $q;
private $in_out;
private $paginate;
private $start_date;
private $end_date;
private $date;
private $for_sale;
public function __construct($for_sale,$start_date , $end_date , $paginate , $in_out , $q , $date)
{
$this->q = $q;
$this->paginate = $paginate??25;
$this->in_out = $in_out;
$this->start_date = $start_date;
$this->date = $date;
$this->for_sale = $for_sale;
}
/**
* @return \Illuminate\Support\Collection
*/
public function headings(): array
{
if($this->for_sale == 0){
return [
'no',
__('message.part number'),
__('message.product category'),
__('message.name'),
__('message.weight'),
__('message.weight before transaction'),
__('message.weight after transaction'),
__('message.note'),
__('message.user'),
__('message.updated at'),
];
}else{
return [
'no',
__('message.part number'),
__('message.product category'),
__('message.name'),
__('message.qty'),
__('message.qty before transaction'),
__('message.qty after transaction'),
__('message.note'),
__('message.user'),
__('message.updated at'),
];
}
return [];
}
public function query()
{
$paginate = $this->paginate??25;
$for_sale = $this->for_sale;
$q = $this->q??null;
$start_date = $this->start_date ?? date('Y-m-d');
$end_date = $this->end_date ?? date('Y-m-d');
$dates = explode(' - ', $this->date);
if ($this->date) {
$start_date = $dates[0];
$end_date = $dates[1];
}
$productQtyHistories = QtyHistory::whereBetween('created_at' , [$start_date . " 00:00:00" , $end_date . " 23:59:59"])
->whereHas('product', function ($query) use ($for_sale) { // Filter based on related product's 'for_sale' column
$query->where('for_sale', $for_sale);
})
->orderBy('id' , 'desc');
if($q){
$productQtyHistories = $productQtyHistories->where('grn' , $q);
}
if($this->in_out > 0){
$productQtyHistories = $productQtyHistories->where('qty' , '>' , 0);
}else if($this->in_out < 0){
$productQtyHistories = $productQtyHistories->where('qty' , '<' , 0);
}else{
$productQtyHistories = $productQtyHistories;
}
return $productQtyHistories;
}
public function map($productQtyHistories): array
{
$this->no++;
if($this->for_sale == 0){
return [
$this->no,
$productQtyHistories->product->part_number,
$productQtyHistories->product->productCategory->name??'',
$productQtyHistories->product->name??'',
$productQtyHistories->weight,
$productQtyHistories->weight_before_transaction,
$productQtyHistories->weight_after_transaction,
$productQtyHistories->note,
$productQtyHistories->user->name??'',
$productQtyHistories->created_at->format('d/m/y H:i'),
];
}else{
return [
$this->no,
$productQtyHistories->product->part_number,
$productQtyHistories->product->productCategory->name??'',
$productQtyHistories->product->name??'',
$productQtyHistories->qty,
$productQtyHistories->qty_before_transaction,
$productQtyHistories->qty_after_transaction,
$productQtyHistories->note,
$productQtyHistories->user->name??'',
$productQtyHistories->created_at->format('d/m/y H:i'),
];
}
}
}