Files
api_arrahn/app/Services/Reports/KawalanStokService.php
T

403 lines
18 KiB
PHP

<?php
namespace App\Services\Reports;
use App\Cawangan;
use App\Gadai;
use App\TransaksiKeuntungan;
class KawalanStokService
{
private $kodCawangan;
private $startDate;
private $endDate;
public function __construct($kodCawangan, $request)
{
$this->kodCawangan = $kodCawangan;
$this->startDate = $request->startDate;
$this->endDate = $request->endDate;
}
public function getLaporanCawangan()
{
$cawangan = Cawangan::on('mysql7')->where('kodcaw', '=', $this->kodCawangan)->first();
$array_kawalanstok = [];
/* Gadai */
$gadai1 = Gadai::on($cawangan['mysql'])
->selectRaw('COUNT(*) AS bil, SUM(pinjaman) AS pinj')
->where('t_gadai', '<', $this->startDate)
->where('tagpalsu', 0)
->whereBetween('nilaimarhun', [1, 400.99])
->get();
$gadai2 = Gadai::on($cawangan['mysql'])
->selectRaw('COUNT(*) AS bil, SUM(pinjaman) AS pinj')
->where('t_gadai', '<', $this->startDate)
->where('tagpalsu', 0)
->whereBetween('nilaimarhun', [401, 2000.99])
->get();
$gadai3 = Gadai::on($cawangan['mysql'])
->selectRaw('COUNT(*) AS bil, SUM(pinjaman) AS pinj')
->where('t_gadai', '<', $this->startDate)
->where('tagpalsu', 0)
->whereBetween('nilaimarhun', [2001, 1000000])
->get();
$gadaiini1 = Gadai::on($cawangan['mysql'])
->selectRaw('COUNT(norujukan) AS bil, SUM(pinjaman) AS pinj')
->where('t_gadai', '>=', $this->startDate)->where('t_gadai', '<=', $this->endDate)
->where('tagpalsu', 0)
->where('nilaimarhun', '>=', 1)
->where('nilaimarhun', '<=', 400.99)
->get();
$gadaiini2 = Gadai::on($cawangan['mysql'])
->selectRaw('COUNT(norujukan) AS bil, SUM(pinjaman) AS pinj')
->where('t_gadai', '>=', $this->startDate)->where('t_gadai', '<=', $this->endDate)
->where('tagpalsu', 0)
->where('nilaimarhun', '>=', 401)
->where('nilaimarhun', '<=', 2000.99)
->get();
$gadaiini3 = Gadai::on($cawangan['mysql'])
->selectRaw('COUNT(norujukan) AS bil, SUM(pinjaman) AS pinj')
->where('t_gadai', '>=', $this->startDate)->where('t_gadai', '<=', $this->endDate)
->where('tagpalsu', 0)
->where('nilaimarhun', '>=', 2001)
->where('nilaimarhun', '<=', 1000000)
->get();
/*tebus*/
$tebus1 = Gadai::on($cawangan['mysql'])
->selectRaw('COUNT(norujukan) AS bil, SUM(pinjaman) AS pinj')
->where('sttebus', 'T')
->where(function ($query) {
$query->where('t_update', '<', $this->startDate)
->orWhereNull('t_update');
})
->where('tagpalsu', 0)
->where('nilaimarhun', '>=', 1)
->where('nilaimarhun', '<=', 400.99)
->get();
$tebus2 = Gadai::on($cawangan['mysql'])
->selectRaw('COUNT(norujukan) AS bil, SUM(pinjaman) AS pinj')
->where('sttebus', 'T')
->where(function ($query) {
$query->where('t_update', '<', $this->startDate)
->orWhereNull('t_update');
})
->where('tagpalsu', 0)
->where('nilaimarhun', '>=', 401)
->where('nilaimarhun', '<=', 2000.99)
->get();
$tebus3 = Gadai::on($cawangan['mysql'])
->selectRaw('COUNT(norujukan) AS bil, SUM(pinjaman) AS pinj')
->where('sttebus', 'T')
->where(function ($query) {
$query->where('t_update', '<', $this->startDate)
->orWhereNull('t_update');
})
->where('tagpalsu', 0)
->where('nilaimarhun', '>=', 2001)
->where('nilaimarhun', '<=', 1000000)
->get();
$tebusini1 = Gadai::on($cawangan['mysql'])
->selectRaw('COUNT(norujukan) AS bil, SUM(pinjaman) AS pinj')
->where('sttebus', 'T')
->where('t_update', '>=', $this->startDate)->where('t_update', '<=', $this->endDate)
->where('tagpalsu', 0)
->where('nilaimarhun', '>=', 1)
->where('nilaimarhun', '<=', 400.99)
->get();
$tebusini2 = Gadai::on($cawangan['mysql'])
->selectRaw('COUNT(norujukan) AS bil, SUM(pinjaman) AS pinj')
->where('sttebus', 'T')
->where('t_update', '>=', $this->startDate)->where('t_update', '<=', $this->endDate)
->where('tagpalsu', 0)
->where('nilaimarhun', '>=', 401)
->where('nilaimarhun', '<=', 2000.99)
->get();
$tebusini3 = Gadai::on($cawangan['mysql'])
->selectRaw('COUNT(norujukan) AS bil, SUM(pinjaman) AS pinj')
->where('sttebus', 'T')
->where('t_update', '>=', $this->startDate)->where('t_update', '<=', $this->endDate)
->where('tagpalsu', 0)
->where('nilaimarhun', '>=', 2001)
->where('nilaimarhun', '<=', 1000000)
->get();
/*lelong*/
$lelong1 = Gadai::on($cawangan['mysql'])
->selectRaw('COUNT(norujukan) AS bil, SUM(pinjaman) AS pinj')
->where('sttebus', 'L')
->where(function ($query) {
$query->where('t_update', '<', $this->startDate)
->orWhereNull('t_update');
})
->where('tagpalsu', 0)
->where('nilaimarhun', '>=', 1)
->where('nilaimarhun', '<=', 400.99)
->get();
$lelong2 = Gadai::on($cawangan['mysql'])
->selectRaw('COUNT(norujukan) AS bil, SUM(pinjaman) AS pinj')
->where('sttebus', 'L')
->where(function ($query) {
$query->where('t_update', '<', $this->startDate)
->orWhereNull('t_update');
})
->where('tagpalsu', 0)
->where('nilaimarhun', '>=', 401)
->where('nilaimarhun', '<=', 2000.99)
->get();
$lelong3 = Gadai::on($cawangan['mysql'])
->selectRaw('COUNT(norujukan) AS bil, SUM(pinjaman) AS pinj')
->where('sttebus', 'L')
->where(function ($query) {
$query->where('t_update', '<', $this->startDate)
->orWhereNull('t_update');
})
->where('tagpalsu', 0)
->where('nilaimarhun', '>=', 2001)
->where('nilaimarhun', '<=', 1000000)
->get();
$lelongini1 = Gadai::on($cawangan['mysql'])
->selectRaw('COUNT(norujukan) AS bil, SUM(pinjaman) AS pinj')
->where('sttebus', 'L')
->where('t_update', '>=', $this->startDate)->where('t_update', '<=', $this->endDate)
->where('tagpalsu', 0)
->where('nilaimarhun', '>=', 1)
->where('nilaimarhun', '<=', 400.99)
->get();
$lelongini2 = Gadai::on($cawangan['mysql'])
->selectRaw('COUNT(norujukan) AS bil, SUM(pinjaman) AS pinj')
->where('sttebus', 'L')
->where('t_update', '>=', $this->startDate)->where('t_update', '<=', $this->endDate)
->where('tagpalsu', 0)
->where('nilaimarhun', '>=', 401)
->where('nilaimarhun', '<=', 2000.99)
->get();
$lelongini3 = Gadai::on($cawangan['mysql'])
->selectRaw('COUNT(norujukan) AS bil, SUM(pinjaman) AS pinj')
->where('sttebus', 'L')
->where('t_update', '>=', $this->startDate)->where('t_update', '<=', $this->endDate)
->where('tagpalsu', 0)
->where('nilaimarhun', '>=', 2001)
->where('nilaimarhun', '<=', 1000000)
->get();
/*ansuran*/
$nomborRujukanAnsuran = $this->getFilteredNomborRujukanAnsuran();
$ansuran1 = Gadai::on($cawangan['mysql'])
->whereIn('norujukan', $nomborRujukanAnsuran)
->where([['nilaimarhun', '>=', 1], ['nilaimarhun', '<=', 400.99], ['sttebus', ''], ['hargajualan', '<>', 'null']])
->orWhere([['nilaimarhun', '>=', 1], ['nilaimarhun', '<=', 400.99], ['sttebus', '!=', ''], ['t_update', '>', $this->endDate], ['hargajualan', '<>', 'null']])
->pluck('norujukan');
$transaksi1 = TransaksiKeuntungan::on('mysql7')
->selectRaw('COUNT(*) as bil, SUM(bayaran_pembiayaan) AS total')
->whereIn('norujukan', $ansuran1)
->where('kodcaw', $this->kodCawangan)
->where('tarikh_bayaran', '<=', $this->startDate)
->get();
$nomborRujukanAnsuranHariIni = $this->getFilteredNomborRujukanAnsuranHariIni();
$ansuran1harini = Gadai::on($cawangan['mysql'])
->whereIn('norujukan', $nomborRujukanAnsuranHariIni)
->where([['nilaimarhun', '>=', 1], ['nilaimarhun', '<=', 400.99], ['sttebus', ''], ['hargajualan', '<>', 'null']])
->pluck('norujukan');
$transaksi1harini = TransaksiKeuntungan::on('mysql7')
->selectRaw('COUNT(*) as bil, SUM(bayaran_pembiayaan) AS total')
->whereIn('norujukan', $ansuran1harini)
->whereDate('tarikh_bayaran', '>=', $this->startDate)
->whereDate('tarikh_bayaran', '<=', $this->endDate)
->where('kodcaw', $this->kodCawangan)
->get();
$ansuran2 = Gadai::on($cawangan['mysql'])
->whereIn('norujukan', $nomborRujukanAnsuran)
->where([['nilaimarhun', '>=', 401], ['nilaimarhun', '<=', 2000.99], ['sttebus', ''], ['hargajualan', '<>', 'null']])
->orWhere([['nilaimarhun', '>=', 401], ['nilaimarhun', '<=', 2000.99], ['sttebus', '!=', ''], ['t_update', '>', $this->endDate], ['hargajualan', '<>', 'null']])
->pluck('norujukan');
$transaksi2 = TransaksiKeuntungan::on('mysql7')
->selectRaw('COUNT(*) as bil, SUM(bayaran_pembiayaan) AS total')
->whereIn('norujukan', $ansuran2)
->where('tarikh_bayaran', '<=', $this->startDate)
->where('kodcaw', $this->kodCawangan)
->get();
$ansuran2harini = Gadai::on($cawangan['mysql'])
->whereIn('norujukan', $nomborRujukanAnsuranHariIni)
->where([['nilaimarhun', '>=', 401], ['nilaimarhun', '<=', 2000.99], ['sttebus', ''], ['hargajualan', '<>', 'null']])
->pluck('norujukan');
$transaksi2harini = TransaksiKeuntungan::on('mysql7')
->selectRaw('COUNT(*) as bil, SUM(bayaran_pembiayaan) AS total')
->whereIn('norujukan', $ansuran2harini)
->whereDate('tarikh_bayaran', '>=', $this->startDate)
->whereDate('tarikh_bayaran', '<=', $this->endDate)
->where('kodcaw', $this->kodCawangan)
->get();
$ansuran3 = Gadai::on($cawangan['mysql'])
->whereIn('norujukan', $nomborRujukanAnsuran)
->where([['nilaimarhun', '>=', 2001], ['nilaimarhun', '<=', 1000000], ['sttebus', ''], ['hargajualan', '<>', 'null']])
->orWhere([['nilaimarhun', '>=', 2001], ['nilaimarhun', '<=', 1000000], ['sttebus', '!=', ''], ['t_update', '>', $this->endDate], ['hargajualan', '<>', 'null']])
->pluck('norujukan');
$transaksi3 = TransaksiKeuntungan::on('mysql7')
->selectRaw('COUNT(*) as bil, SUM(bayaran_pembiayaan) AS total')
->whereIn('norujukan', $ansuran3)
->where('tarikh_bayaran', '<=', $this->startDate)
->where('kodcaw', $this->kodCawangan)
->get();
$ansuran3harini = Gadai::on($cawangan['mysql'])
->whereIn('norujukan', $nomborRujukanAnsuranHariIni)
->where([['nilaimarhun', '>=', 2001], ['nilaimarhun', '<=', 1000000], ['sttebus', ''], ['hargajualan', '<>', 'null']])
->pluck('norujukan');
$transaksi3harini = TransaksiKeuntungan::on('mysql7')
->selectRaw('COUNT(*) as bil, SUM(bayaran_pembiayaan) AS total')
->whereIn('norujukan', $ansuran3harini)
->whereDate('tarikh_bayaran', '>=', $this->startDate)
->whereDate('tarikh_bayaran', '<=', $this->endDate)
->where('kodcaw', $this->kodCawangan)
->get();
##push in array##
$arrayans1 = ['bil' => $transaksi1[0]->bil, 'pinj' => $transaksi1[0]->total];
$arrayharinians1 = ['bil' => $transaksi1harini[0]->bil, 'pinj' => $transaksi1harini[0]->total];
$arrayans2 = ['bil' => $transaksi2[0]->bil, 'pinj' => $transaksi2[0]->total];
$arrayharinians2 = ['bil' => $transaksi2harini[0]->bil, 'pinj' => $transaksi2harini[0]->total];
$arrayans3 = ['bil' => $transaksi3[0]->bil, 'pinj' => $transaksi3[0]->total];
$arrayharinians3 = ['bil' => $transaksi3harini[0]->bil, 'pinj' => $transaksi3harini[0]->total];
/*hapus kira*/
$hapuskira1 = Gadai::on($cawangan['mysql'])
->selectRaw('COUNT(norujukan) AS bil, SUM(pinjaman) AS pinj')
->where('sttebus', 'H')
->where(function ($query) {
$query->where('t_update', '<', $this->startDate)
->orWhereNull('t_update');
})
->where('tagpalsu', 0)
->where('nilaimarhun', '>=', 1)
->where('nilaimarhun', '<=', 400.99)
->get();
$hapuskira2 = Gadai::on($cawangan['mysql'])
->selectRaw('COUNT(norujukan) AS bil, SUM(pinjaman) AS pinj')
->where('sttebus', 'H')
->where(function ($query) {
$query->where('t_update', '<', $this->startDate)
->orWhereNull('t_update');
})
->where('tagpalsu', 0)
->where('nilaimarhun', '>=', 401)
->where('nilaimarhun', '<=', 2000.99)
->get();
$hapuskira3 = Gadai::on($cawangan['mysql'])
->selectRaw('COUNT(norujukan) AS bil, SUM(pinjaman) AS pinj')
->where('sttebus', 'H')
->where(function ($query) {
$query->where('t_update', '<', $this->startDate)
->orWhereNull('t_update');
})
->where('tagpalsu', 0)
->where('nilaimarhun', '>=', 2001)
->where('nilaimarhun', '<=', 1000000)
->get();
$hapuskiraini1 = Gadai::on($cawangan['mysql'])
->selectRaw('COUNT(norujukan) AS bil, SUM(pinjaman) AS pinj')
->where('sttebus', 'H')
->where('t_update', '>=', $this->startDate)->where('t_update', '<=', $this->endDate)
->where('tagpalsu', 0)
->where('nilaimarhun', '>=', 1)
->where('nilaimarhun', '<=', 400.99)
->get();
$hapuskiraini2 = Gadai::on($cawangan['mysql'])
->selectRaw('COUNT(norujukan) AS bil, SUM(pinjaman) AS pinj')
->where('sttebus', 'H')
->where('t_update', '>=', $this->startDate)->where('t_update', '<=', $this->endDate)
->where('tagpalsu', 0)
->where('nilaimarhun', '>=', 401)
->where('nilaimarhun', '<=', 2000.99)
->get();
$hapuskiraini3 = Gadai::on($cawangan['mysql'])
->selectRaw('COUNT(norujukan) AS bil, SUM(pinjaman) AS pinj')
->where('sttebus', 'H')
->where('t_update', '>=', $this->startDate)->where('t_update', '<=', $this->endDate)
->where('tagpalsu', 0)
->where('nilaimarhun', '>=', 2001)
->where('nilaimarhun', '<=', 1000000)
->get();
array_push($array_kawalanstok, ["gadai1" => $gadai1, "gadai2" => $gadai2, "gadai3" => $gadai3, "gadaiini1" => $gadaiini1, "gadaiini2" => $gadaiini2, "gadaiini3" => $gadaiini3]);
array_push($array_kawalanstok, ["tebus1" => $tebus1, "tebus2" => $tebus2, "tebus3" => $tebus3, "tebusini1" => $tebusini1, "tebusini2" => $tebusini2, "tebusini3" => $tebusini3]);
array_push($array_kawalanstok, ["lelong1" => $lelong1, "lelong2" => $lelong2, "lelong3" => $lelong3, "lelongini1" => $lelongini1, "lelongini2" => $lelongini2, "lelongini3" => $lelongini3]);
array_push($array_kawalanstok, ["hapuskira1" => $hapuskira1, "hapuskira2" => $hapuskira2, "hapuskira3" => $hapuskira3, "hapuskiraini1" => $hapuskiraini1, "hapuskiraini2" => $hapuskiraini2, "hapuskiraini3" => $hapuskiraini3]);
array_push($array_kawalanstok, ["ans1" => $arrayans1, "ans2" => $arrayans2, "ans3" => $arrayans3, "ansini1" => $arrayharinians1, "ansini2" => $arrayharinians2, "ansini3" => $arrayharinians3]);
return response()->json($array_kawalanstok);
}
private function getFilteredNomborRujukanAnsuran()
{
return TransaksiKeuntungan::on('mysql7')
->leftJoin('transaction as trans', function ($join) {
$join->on('transaksi_keuntungan.norujukan', '=', 'trans.norujukan');
$join->on('transaksi_keuntungan.tarikh_bayaran', '=', 'trans.created_at');
})
->where('trans.created_at', '<', $this->startDate)
->where('trans.trans_type', '=', 'A')
->groupBy('trans.id')
->where('trans.kodcaw', $this->kodCawangan)
->pluck('trans.norujukan');
}
private function getFilteredNomborRujukanAnsuranHariIni()
{
return TransaksiKeuntungan::on('mysql7')
->leftJoin('transaction as trans', function ($join) {
$join->on('transaksi_keuntungan.norujukan', '=', 'trans.norujukan');
$join->on('transaksi_keuntungan.tarikh_bayaran', '=', 'trans.created_at');
})
->whereDate('trans.created_at', '>=', $this->startDate)
->whereDate('trans.created_at', '<=', $this->endDate)
->where('trans.trans_type', '=', 'A')
->groupBy('trans.id')
->where('trans.kodcaw', $this->kodCawangan)
->pluck('trans.norujukan');
}
}