Skip to content

Commit

Permalink
adding cashback feature on sell transaction
Browse files Browse the repository at this point in the history
  • Loading branch information
rizalpahlevii committed Jun 5, 2020
1 parent 6db263f commit 04cc44c
Show file tree
Hide file tree
Showing 51 changed files with 34,629 additions and 264 deletions.
31 changes: 31 additions & 0 deletions app/Cashback.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Cashback extends Model
{
public static function kodeFaktur()
{
$cek = Cashback::where('faktur', 'LIKE', 'CSB%')->get();
if ($cek->count() > 0) {
$cashback = Cashback::where('faktur', 'LIKE', 'CSB%')->orderBy('id', 'DESC')->first();
$nourut = (int) substr($cashback->faktur, -8, 8);
$nourut++;
$char = "CSB";
$number = $char . sprintf("%08s", $nourut);
} else {
$number = "CSB" . "00000001";
}
return $number;
}
public function transaksi()
{
return $this->belongsTo(Transaksi::class, 'transaksi_id', 'id');
}
public function detail_cashback()
{
return $this->hasMany(Cashback_detail::class, 'cashback_id', 'id');
}
}
13 changes: 13 additions & 0 deletions app/Cashback_detail.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Cascback_detail extends Model
{
public function detail_transaksi()
{
return $this->belongsTo(Detail_transaksi::class, 'detail_transaksi_id', 'id');
}
}
78 changes: 78 additions & 0 deletions app/Helpers/Rekap.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
<?php

namespace App\Helpers;

use App\Pembelian;
use App\Return_pembelian;
use App\Return_penjualan;
use App\Transaksi;

class Rekap
{
public static function penjualan($start = null, $end = null)
{
if ($start & $end) {
$data = Transaksi::whereDate('tanggal', ">=", $start)
->whereDate('tanggal', "<=", $end)->sum('total');
} else {
$data = Transaksi::sum('total');
}
return $data;
}
public static function return_penjualan($start = null, $end = null)
{
if ($start & $end) {
$data = Return_penjualan::whereDate('tanggal_return_jual', ">=", $start)
->whereDate('tanggal_return_jual', "<=", $end)->sum('total');
} else {
$data = Return_penjualan::sum('total_bayar');
}
return $data;
}
public static function laba_rugi_penjualan($start = null, $end = null)
{
if ($start & $end) {
$data = Transaksi::whereDate('tanggal', ">=", $start)
->whereDate('tanggal', "<=", $end)->get();
$value = 0;
foreach ($data as $row) {
if ($row->status == "hutang") {
$value += $row->piutang->piutang_terbayar;
} else {
$value += $row->total;
}
}
} else {
$data = Transaksi::get();
$value = 0;
foreach ($data as $row) {
if ($row->status == "hutang") {
$value += $row->piutang->piutang_terbayar;
} else {
$value += $row->total;
}
}
}
return $value;
}
public static function pembelian($start = null, $end = null)
{
if ($start & $end) {
$data = Pembelian::whereDate('tanggal_pembelian', ">=", $start)
->whereDate('tanggal_pembelian', "<=", $end)->sum('total');
} else {
$data = Pembelian::sum('total');
}
return $data;
}
public static function return_pembelian($start = null, $end = null)
{
if ($start & $end) {
$data = Return_pembelian::whereDate('tanggal_return_pembelian', ">=", $start)
->whereDate('tanggal_return_pembelian', "<=", $end)->sum('total');
} else {
$data = Return_pembelian::sum('total_bayar');
}
return $data;
}
}
13 changes: 13 additions & 0 deletions app/Http/Controllers/BarangController.php
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@ public function store(Request $request)
'satuan' => 'required',
'kategori' => 'required',
]);
$ppn = ($request->harga_beli / 100) * 10;
$pph = ($request->harga_beli / 100) * 1.5;
$barang = new Barang();
$barang->id = $request->kode_barang;
$barang->nama = $request->nama_barang;
Expand All @@ -42,6 +44,10 @@ public function store(Request $request)
$barang->stok_masuk = 0;
$barang->stok_akhir = $request->stok_awal;
$barang->stok_keluar = 0;
$barang->ppn = $ppn;
$barang->persentase_pph_ppn_keuntungan = $request->ppn_pph;
$barang->pph = $pph;
$barang->keuntungan = ($request->harga_beli / 100) * ($request->ppn_pph - 11.5);
$barang->satuan_id = $request->satuan;
$barang->kategori_id = $request->kategori;
if ($barang->save()) {
Expand Down Expand Up @@ -76,6 +82,7 @@ public function updateStok(Request $request, $id)
}
public function edit($id)
{

$satuan = Satuan::get();
$kategori = Kategori::get();
$barang = Barang::with('satuan', 'kategori')->where('id', $id)->firstOrFail();
Expand All @@ -90,8 +97,14 @@ public function update(Request $request, $id)
'satuan' => 'required',
'kategori' => 'required',
]);
$ppn = ($request->harga_beli / 100) * 10;
$pph = ($request->harga_beli / 100) * 1.5;
$barang = Barang::findOrFail($request->id);
$barang->nama = $request->nama_barang;
$barang->ppn = $ppn;
$barang->persentase_pph_ppn_keuntungan = $request->ppn_pph;
$barang->pph = $pph;
$barang->keuntungan = ($request->harga_beli / 100) * ($request->ppn_pph - 11.5);
$barang->harga_jual = $request->harga_jual;
$barang->harga_beli = $request->harga_beli;
$barang->satuan_id = $request->satuan;
Expand Down
4 changes: 3 additions & 1 deletion app/Http/Controllers/DashboardController.php
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,12 @@ public function grafikLabaRugi()
$bulan = explode('-', $row->tanggal_transaksi);
$bulan = $bulan[1];
$hpp = 0;
$untung = 0;
foreach ($row->detail_transaksi as $detail) {
$hpp += $detail->jumlah_beli * $detail->barang->harga_beli;
$untung += $detail->barang->keuntungan;
}
$hitung = ($row->total - $row->pph - $row->ppn) - $hpp;
$hitung = $untung;

$laba[$bulan - 1] += $hitung;
}
Expand Down
2 changes: 1 addition & 1 deletion app/Http/Controllers/GrafikController.php
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ public function getChartLaba()
$labels = [];
$data = [];
$transaksi = Transaksi::select('tanggal_transaksi')
->selectRaw("SUM(total - ppn - pph) as ttl")
->selectRaw("SUM(total) as ttl")
->whereMonth('tanggal_transaksi', request()->get('month'))
->whereYear('tanggal_transaksi', request()->get('year'))
->groupBy('tanggal_transaksi')
Expand Down
19 changes: 10 additions & 9 deletions app/Http/Controllers/KasirController.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,11 @@ class KasirController extends Controller
{
public function index()
{
$barang = Barang::with('satuan', 'kategori')->get();
$cart = Cart_transaksi::with('barang')->where('status', 'cart')->where('user_id', Auth::user()->id)->get();
$kode = Transaksi::kode();
$pelanggan = Pelanggan::get();
return view("pages.kasir.index", compact('kode', 'pelanggan', 'cart'));
return view("pages.kasir.index", compact('kode', 'pelanggan', 'cart', 'barang'));
}
public function getBarangById($id)
{
Expand Down Expand Up @@ -105,10 +106,7 @@ public function store(Request $request)
$transaksi->tanggal_transaksi = Carbon::now()->format('Y-m-d');
$transaksi->total = $request->grandtotal;
$transaksi->diskon = $request->diskon_value;
$transaksi->ppn = $request->ppn_value;
$transaksi->pph = $request->pph_value;
$transaksi->status = $request->pembayaran;
$transaksi->cashback = $request->cashback;
$transaksi->pelanggan_id = (int) $request->id_pelanggan;
$transaksi->user_id = Auth::user()->id;
$transaksi->save();
Expand Down Expand Up @@ -142,7 +140,9 @@ public function store(Request $request)
$piutang->tanggal_piutang = Carbon::now()->format('Y-m-d');
$piutang->total_hutang = $request->grandtotal;
$piutang->piutang_terbayar = 0;
$piutang->tanggal_tempo = $request->tgl_jatuh_tempo;
if ($request->tgl_jatuh_tempo == null) {
$piutang->tanggal_tempo = $request->tgl_jatuh_tempo;
}
$piutang->sisa_piutang = $request->grandtotal;
$piutang->pelanggan_id = $request->id_pelanggan;
$piutang->transaksi_id = $transaksi->id;
Expand Down Expand Up @@ -173,16 +173,17 @@ public function struk($invoice)
// $pdf = PDF::loadView('pages.kasir.struk', compact('transaksi'))->setPaper('a4', 'portrait');
// return $pdf->stream('Struk-penjualan-' . $invoice . '.pdf');
}
public function getBarangData(){
public function getBarangData()
{
$search = request()->input('search');
$data = Barang::where('nama','LIKE',"%{$search}%")->orWhere('id','LIKE',"%{$search}%")->select('id','nama')->get();
$data = Barang::where('nama', 'LIKE', "%{$search}%")->orWhere('id', 'LIKE', "%{$search}%")->select('id', 'nama')->get();
if (count($data)) {
$response = [];
foreach ($data as $key => $row) {
$response[$key]['id'] = $row->id;
$response[$key]['text'] = $row->id . ' - ' . $row->nama;
$response[$key]['value'] = $row->id . ' - ' . $row->nama;
}
}else{
} else {
$response = "Barang tidak ditemukan";
}
return response()->json($response);
Expand Down
53 changes: 53 additions & 0 deletions app/Http/Controllers/PenjualanController.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,13 @@
namespace App\Http\Controllers;

use App\Barang;
use App\Cashback;
use App\Cashback_detail;
use App\Detail_transaksi;
use App\Transaksi;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Kas as KasHelper;

class PenjualanController extends Controller
{
Expand Down Expand Up @@ -86,4 +90,53 @@ public function barangLoadTable()
$transaksi = $transaksi->get();
return view($this->page . 'barang.table', compact('transaksi'));
}
public function cashback($kode)
{
$transaksi = Transaksi::where('kode', $kode)->firstOrFail();
if ($transaksi->cashback != null) {
session()->flash('message', 'Cashback sudah dibayar!');
return redirect()->route('transaksi.penjualan.all')->with('status', 'danger');
}
return view($this->page . 'cashback', compact('transaksi'));
}
public function cashbackPost(Request $request, $kode)
{
try {
DB::beginTransaction();
$params = $request->all();
$transaksi = Transaksi::where('kode', $kode)->firstOrFail();
$cashback = new Cashback();
$cashback->faktur = Caschback::kodeFaktur();
$cashback->tanggal = date('Y-m-d');
$cashback->transaksi_id = $transaksi->id;
$cashback->total = $params['total_cashback'];
$cashback->save();
for ($i = 1; $i <= $params['total_row']; $i++) {
$cashback_detail = new Cashback_detail();
$cashback_detail->cashback_id = $cashback->id;
$cashback_detail->detail_transaksi_id = $params['detail_transaksi_id' . $i];
$cashback_detail->cashback_per_item = $params['cashback_value' . $i];
$cashback_detail->qty = $params['qty_hidden' . $i];
$cashback_detail->subtotal = $params['subtotal_cashback' . $i];
$cashback_detail->save();
}
KasHelper::add($cashback->faktur, 'pengeluaran', 'cashback', 0, $cashback->total);
DB::commit();
$response = [
'status' => 'success',
'data' => $transaksi
];
} catch (\Throwable $th) {
$response = [
'status' => 'error',
];
DB::rollback();
}
return response()->json($response);
}
public function notaCashback($kode)
{
$transaksi = Transaksi::where('kode', $kode)->firstOrFail();
return view($this->page . 'cashback_nota', compact('transaksi'));
}
}
19 changes: 19 additions & 0 deletions app/Http/Controllers/RekapController.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<?php

namespace App\Http\Controllers;

use App\Helpers\Rekap;
use Illuminate\Http\Request;

class RekapController extends Controller
{
public function index()
{
$penjualan = Rekap::penjualan();
$return_penjualan = Rekap::return_penjualan();
$laba_rugi_penjualan = Rekap::laba_rugi_penjualan();
$pembelian = Rekap::pembelian();
$return_pembelian = Rekap::return_pembelian();
return view("pages.report.rekap.index", compact('penjualan', 'return_penjualan', 'laba_rugi_penjualan', 'pembelian', 'return_pembelian'));
}
}
2 changes: 0 additions & 2 deletions app/Http/Controllers/TransaksiController.php
Original file line number Diff line number Diff line change
Expand Up @@ -106,8 +106,6 @@ public function store(Request $request)
$transaksi->tanggal_transaksi = Carbon::now()->format('Y-m-d');
$transaksi->total = $request->grandtotal;
$transaksi->diskon = $request->diskon_value;
$transaksi->ppn = $request->ppn_value;
$transaksi->pph = $request->pph_value;
$transaksi->status = $request->pembayaran;
$transaksi->pelanggan_id = (int) $request->id_pelanggan;
$transaksi->user_id = Auth::user()->id;
Expand Down
4 changes: 4 additions & 0 deletions app/Transaksi.php
Original file line number Diff line number Diff line change
Expand Up @@ -41,4 +41,8 @@ public function piutang()
{
return $this->hasOne(Piutang::class, 'transaksi_id', 'id');
}
public function cashback()
{
return $this->hasOne(Cashback::class, 'transaksi_id', 'id');
}
}
3 changes: 2 additions & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,8 @@
"app/Helpers/Helper.php",
"app/Helpers/Kas.php",
"app/Helpers/Saldo.php",
"app/Helpers/Toko_setting.php"
"app/Helpers/Toko_setting.php",
"app/Helpers/Rekap.php"
]
},
"autoload-dev": {
Expand Down
4 changes: 4 additions & 0 deletions database/migrations/2020_04_27_042619_create_barang_table.php
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,10 @@ public function up()
$table->integer('stok_masuk');
$table->integer('stok_akhir');
$table->integer('stok_keluar');
$table->integer('ppn')->default(0);
$table->integer('pph')->default(0);
$table->integer('keuntungan')->default(0);
$table->float('persentase_pph_ppn_keuntungan', 5, 2)->default(0);
$table->unsignedInteger('satuan_id');
$table->unsignedInteger('kategori_id');
$table->timestamps();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ public function up()
$table->integer('diskon')->default(0);
$table->integer('ppn')->default(0);
$table->integer('pph')->default(0);
$table->integer('cashback')->default(0);
$table->enum('status', ['hutang', 'tunai']);
$table->unsignedInteger('pelanggan_id');
$table->unsignedInteger('user_id');
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ public function up()
$table->date('tanggal_piutang');
$table->integer('total_hutang');
$table->integer('piutang_terbayar');
$table->date('tanggal_tempo');
$table->date('tanggal_tempo')->nullable();
$table->integer('sisa_piutang');
$table->unsignedInteger('pelanggan_id');
$table->unsignedInteger('transaksi_id');
Expand Down
Loading

0 comments on commit 04cc44c

Please sign in to comment.