KUJUNTI.ID MINISH3LL
Path : /var/www/html/jewelry-pos/app/Exports/
(S)h3ll Cr3at0r :
F!le Upl0ad :

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/SaleReportExport.php


<?php

namespace App\Exports;

use App\Models\Sale;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\FromQuery;
use Maatwebsite\Excel\Concerns\WithHeadings;
use Maatwebsite\Excel\Concerns\WithMapping;

class SaleReportExport implements FromQuery , WithMapping , WithHeadings
{
    /**
    * @return \Illuminate\Support\Collection
    */
//    public function collection()
//    {
//
//    }
    private $no = 0;
    private $search;
    private $start_date;
    private $end_date;
    private $date;
    private $product_category_id;
    public function __construct($search,$start_date,$end_date,$product_category_id)
    {
        $this->search = $search;
        $this->start_date = $start_date;
        $this->end_date = $end_date;
        $this->product_category_id = $product_category_id;
    }

    /**
     * @return \Illuminate\Support\Collection
     */

    public function headings(): array
    {
        return [
            'no',
            __('message.part number'),
            __('message.product category'),
            __('message.name'),
            __('message.sales price'),
            __('message.usd price'),
            __('message.khr price'),
            __('message.thb price'),
            __('message.cost'),
            __('message.selling cost'),
            __('message.selling rate'),
            __('message.qty'),
            __('message.discount'),
            __('message.weight'),
            __('message.gold weight'),
            __('message.wages'),
            __('message.original wages'),
            __('message.selling purity'),
            __('message.purity upgrade to'),
            __('message.diamond size'),
            __('message.description'),
            __('message.supplier rate'),
//            __('message.image'),
            __('message.user'),
            __('message.created at'),
        ];
    }
    public function query()
    {
        $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];
        }
        $search = $this->search;
        if($search){
            $sales = Sale::where('part_number' , 'like' , '%' . $search . '%')->orderBy('id' , 'desc');
        }
        else{
            $sales= Sale::query();
        }
        if($start_date){
            $sales = $sales->whereBetween('created_at', [$start_date . " 00:00:00", $end_date . " 23:59:59"]);
        }
        $product_category_id = $this->product_category_id;
        if($product_category_id != 0){
            $sales = $sales->where('product_category_id' , $product_category_id);
        }
        return $sales;
    }

    public function map($sale): array
    {
        $this->no++;
        if($sale->fixed_price || $sale->productCategory->fixed_price){
            $this->fixed_price = __('message.yes');
            $wages_in_weight = $sale->wages_in_weight;
            $original_wages_in_weight = $sale->original_wages_in_weight;
        }else{
            $this->fixed_price = __('message.no');
            $wages_in_weight = $sale->wages;
            $original_wages_in_weight = $sale->original_wages;
        }
        return [
            $this->no,
            $sale->part_number,
            $sale->productCategory->name??'',
            $sale->name??'',
            number_format($sale->sales_price , 2),
            number_format($sale->usd_amount , 2),
            number_format($sale->khr_amount , 2),
            number_format($sale->thb_amount , 2),
            number_format($sale->cost() , 2),
            number_format($sale->selling_cost , 2),
            number_format($sale->selling_rate , 4),
            $sale->qty??0,
            number_format($sale->discount , 2),
            $sale->weight,
            $sale->goldWeight(),
            $wages_in_weight,
            $original_wages_in_weight,
            $sale->purity_upgrade_to??'',
            $sale->selling_purity??'',
            htmlspecialchars(trim(strip_tags($sale->diamond_size))),
            htmlspecialchars(trim(strip_tags($sale->description))),
            $sale->supplier_rate,
//            $sale->image,
            $sale->user->name??'',
            $sale->created_at->format('d/m/y H:i'),
        ];
    }
}

© KUJUNTI.ID