Merge branch 'main-gitea-akuncoa' of https://git.indoserv.net/wewmantap/resto-dhepot into mico
commit
4304da437b
|
@ -0,0 +1,109 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Admins\Penjualan;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\DetailPesanan;
|
||||
use App\Models\Pesanan;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class PenjualanController extends Controller
|
||||
{
|
||||
public function index()
|
||||
{
|
||||
return view('pages.admin.penjualan.index');
|
||||
}
|
||||
|
||||
public function getDataPenjualan(Request $request)
|
||||
{
|
||||
$nomor = 1;
|
||||
$filter_tanggal_1 = $request->filter_tanggal_1;
|
||||
$filter_tanggal_2 = $request->filter_tanggal_2;
|
||||
$data = Pesanan::with(['detailPesanan', 'user'])
|
||||
->when($filter_tanggal_1, function ($query) use ($filter_tanggal_1) {
|
||||
return $query->whereDate('tanggal_pesanan', '>=', $filter_tanggal_1);
|
||||
})
|
||||
->when($filter_tanggal_2, function ($query) use ($filter_tanggal_2) {
|
||||
return $query->whereDate('tanggal_pesanan', '<=', $filter_tanggal_2);
|
||||
})
|
||||
->when(!$filter_tanggal_1 && !$filter_tanggal_2, function ($query) {
|
||||
return $query->whereDate('tanggal_pesanan', Carbon::today());
|
||||
})
|
||||
->orderBy('tanggal_pesanan', 'desc')
|
||||
->get();
|
||||
|
||||
return datatables()
|
||||
->of($data)
|
||||
->addColumn('nomor', function ($data) use (&$nomor) {
|
||||
return $nomor++;
|
||||
})
|
||||
->addColumn('nama_pemesan', function ($data) {
|
||||
$nomor = $data->nomor_pemesan != null ? '(' . $data->nomor_pemesan . ')' : '';
|
||||
return $data->nama_pemesan . ' ' . $nomor;
|
||||
})
|
||||
->addColumn('nomor_meja', function ($data) {
|
||||
return $data->nomor_meja != null ? $data->nomor_meja : '-';
|
||||
})
|
||||
->addColumn('created_at', function ($data) {
|
||||
return \Carbon\Carbon::parse($data->created_at)->format('d F Y H:i:s');
|
||||
})
|
||||
->addColumn('total_bayar_rp', function ($data) {
|
||||
return 'Rp ' . number_format($data->total_bayar, 0, ',', '.');
|
||||
})
|
||||
->addColumn('grand_total_rp', function ($data) {
|
||||
return 'Rp ' . number_format($data->grand_total, 0, ',', '.');
|
||||
})
|
||||
->addColumn('ubah', function ($data) {
|
||||
return '<div class="btn-group">
|
||||
<a href="javascript:void(0)" onclick="detail(\'' . $data->id . '\')"><span class="btn btn-xs btn-warning mr-1"><i class="fas fa-eye"></i></span></a>
|
||||
<a href="javascript:void(0)" onclick="print(\'' . $data->id . '\')"><span class="btn btn-xs btn-success"><i class="fas fa-print"></i></span></a></div>';
|
||||
})
|
||||
->rawColumns(['nomor', 'nama_user', 'created_at', 'grand_total', 'ubah'])
|
||||
->make(true);
|
||||
}
|
||||
|
||||
public function print($id)
|
||||
{
|
||||
$pesanan = \App\Models\Pesanan::with('detailPesanan', 'user')->find($id);
|
||||
|
||||
return view('pages.Kasir.print_dapur', compact('pesanan'));
|
||||
}
|
||||
|
||||
public function getDataDetailPenjualan(Request $request)
|
||||
{
|
||||
$data = DetailPesanan::with('pesanan')->where('pesanan_id', $request->id_pesanan)->get();
|
||||
|
||||
return response()->json(['status' => true, 'data' => $data]);
|
||||
}
|
||||
|
||||
public function laporan(Request $request)
|
||||
{
|
||||
$mpdf = new \Mpdf\Mpdf([
|
||||
'mode' => 'utf-8',
|
||||
'format' => 'A4',
|
||||
'orientation' => 'portrait',
|
||||
'margin_left' => 15,
|
||||
'margin_right' => 15,
|
||||
'margin_top' => 10,
|
||||
'margin_bottom' => 10,
|
||||
'default_font_size' => 9,
|
||||
'default_font' => 'arial',
|
||||
]);
|
||||
$mpdf->AddPage();
|
||||
$mpdf->setFooter('{PAGENO}');
|
||||
|
||||
$data = Pesanan::with(['user', 'bukuBesar'])->whereDate('tanggal_pesanan', '>=', $request->filter_tanggal_1)
|
||||
->whereDate('tanggal_pesanan', '<=', $request->filter_tanggal_2)
|
||||
->get();
|
||||
$html = view('pages.admin.penjualan.laporan', [
|
||||
'data' => $data,
|
||||
'filter_tanggal_1' => $request->filter_tanggal_1,
|
||||
'filter_tanggal_2' => $request->filter_tanggal_2,
|
||||
]);
|
||||
$mpdf->writeHTML($html);
|
||||
|
||||
$mpdf->Output('Laporan_Penjualan.pdf', 'I');
|
||||
return response()->header('Content-Type', 'application/pdf');
|
||||
}
|
||||
}
|
|
@ -10,5 +10,16 @@ class BukuBesar extends Model
|
|||
use HasFactory;
|
||||
|
||||
protected $table = 'buku_besar';
|
||||
protected $guarded = [];
|
||||
|
||||
protected $fillable = [
|
||||
'faktur',
|
||||
'tanggal',
|
||||
'rekening_coa_id',
|
||||
'pesanans_id',
|
||||
'kode_rekening_coa',
|
||||
'keterangan_coa',
|
||||
'keterangan',
|
||||
'debet',
|
||||
'kredit',
|
||||
];
|
||||
}
|
||||
|
|
|
@ -52,7 +52,14 @@ class Pesanan extends Model
|
|||
return $this->belongsTo(User::class, 'user_id');
|
||||
}
|
||||
|
||||
public function coa(){
|
||||
public function coa()
|
||||
{
|
||||
return $this->belongsTo(RekeningCoa::class, 'coa_kas');
|
||||
}
|
||||
|
||||
// buku besar
|
||||
public function bukuBesar()
|
||||
{
|
||||
return $this->hasMany(BukuBesar::class, 'pesanans_id');
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,14 +19,20 @@
|
|||
<a href="{{ route('dashboard.index') }}" class="nav-link">Dashboard</a>
|
||||
</li>
|
||||
@endcan
|
||||
<li class="nav-item dropdown">
|
||||
<a id="dropdownSubMenu1" href="javascript:void(0)" data-toggle="dropdown" aria-haspopup="true"
|
||||
aria-expanded="false" class="nav-link dropdown-toggle">Transaksi</a>
|
||||
<ul aria-labelledby="dropdownSubMenu1" class="dropdown-menu border-0 shadow">
|
||||
<li><a href="#" class="dropdown-item">Order </a></li>
|
||||
<li><a href="{{ route('pengeluaran.index') }}" class="dropdown-item">Pengeluaran</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
@canany(['penjualan.index', 'pengeluaran.index'], auth()->user())
|
||||
<li class="nav-item dropdown">
|
||||
<a id="dropdownSubMenu1" href="javascript:void(0)" data-toggle="dropdown" aria-haspopup="true"
|
||||
aria-expanded="false" class="nav-link dropdown-toggle">Transaksi</a>
|
||||
<ul aria-labelledby="dropdownSubMenu1" class="dropdown-menu border-0 shadow">
|
||||
@can('penjualan.index', auth()->user())
|
||||
<li><a href="{{ route('penjualan.index') }}" class="dropdown-item">Penjualan</a></li>
|
||||
@endcan
|
||||
@can('pengeluaran.index', auth()->user())
|
||||
<li><a href="{{ route('pengeluaran.index') }}" class="dropdown-item">Pengeluaran</a></li>
|
||||
@endcan
|
||||
</ul>
|
||||
</li>
|
||||
@endcanany
|
||||
@canany(['users.index', 'menu.index'], auth()->user())
|
||||
<li class="nav-item dropdown">
|
||||
<a id="dropdownSubMenu1" href="#" data-toggle="dropdown" aria-haspopup="true"
|
||||
|
|
|
@ -123,6 +123,7 @@
|
|||
class="fas fa-print mr-1"></i>Cetak</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -0,0 +1,89 @@
|
|||
@extends('layouts.base')
|
||||
|
||||
@section('content-header')
|
||||
<div class="col-12">
|
||||
<div class="container" style="display: contents">
|
||||
<div class="row mb-2">
|
||||
<div class="col-sm-6">
|
||||
<h1 class="m-0"> Penjualan</h1>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<ol class="breadcrumb float-sm-right">
|
||||
<li class="breadcrumb-item">Home</li>
|
||||
<li class="breadcrumb-item">Transaksi</li>
|
||||
<li class="breadcrumb-item active">Penjualan</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
<div class="col-12 mt-2">
|
||||
<div class="container" style="display: contents">
|
||||
<div class="card">
|
||||
<div class="card bg-warning" style="min-height:5px; border-radius:1px;"></div>
|
||||
<div class="card-body">
|
||||
<div class="col-md-12">
|
||||
<label>Filter Pencarian:</label>
|
||||
<form action="{{ route('penjualan.laporan') }}" method="POST">
|
||||
@csrf
|
||||
<div class="row">
|
||||
<div class="col-md-2">
|
||||
<input type="date" class="form-control form-control-sm" id="filter_tanggal_1"
|
||||
name="filter_tanggal_1" value="{{ date('Y-m-d') }}">
|
||||
</div>
|
||||
<p>s/d</p>
|
||||
<div class="col-md-2">
|
||||
<input type="date" class="form-control form-control-sm" id="filter_tanggal_2"
|
||||
name="filter_tanggal_2" value="{{ date('Y-m-d') }}">
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<a href="javascript:void(0)" class="btn btn-sm btn-primary" id="btn_filter"><i
|
||||
class="fas fa-search mr-1"></i>Filter data</a>
|
||||
<button class="btn btn-sm btn-warning" id="cetak_laporan" type="submit"><i
|
||||
class="fas fa-print mr-1"></i>Cetak</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="col-md-12">
|
||||
<div class="table-responsive mt-3">
|
||||
<table id="tabelku" class="table table-hover display" style="width: 100%">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="text-center">No</th>
|
||||
<th>Kode Pesanan</th>
|
||||
<th>Pemesan</th>
|
||||
<th>Nomor Meja</th>
|
||||
<th>Tanggal & Jam</th>
|
||||
<th>Total Pesanan</th>
|
||||
<th>Sub Total</th>
|
||||
<th>Diskon(%)</th>
|
||||
<th>Grand Total</th>
|
||||
<th class="text-center"><i class="fas fa-cog"></i></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<th class="text-right" colspan="5">Total</th>
|
||||
<th></th>
|
||||
<th class="text-right"></th>
|
||||
<th></th>
|
||||
<th class="text-right"></th>
|
||||
<th class="text-center"><i class="fas fa-cog"></i></th>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@include('pages.admin.penjualan.modal')
|
||||
@endsection
|
||||
|
||||
@include('pages.admin.penjualan.style')
|
||||
@include('pages.admin.penjualan.js')
|
|
@ -0,0 +1,224 @@
|
|||
@push('scripts')
|
||||
<script src="{{ asset('assets/datatables/datatables.min.js') }}"></script>
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
let dataTable = $('#tabelku').DataTable({
|
||||
aLengthMenu: [
|
||||
[25, 50, 100, 200, -1],
|
||||
[25, 50, 100, 200, "All"]
|
||||
],
|
||||
processing: true,
|
||||
serverSide: true,
|
||||
ajax: {
|
||||
url: '{{ route('penjualan.getDataPenjualan') }}',
|
||||
data: function(d) {
|
||||
d.filter_tanggal_1 = $("#filter_tanggal_1").val();
|
||||
d.filter_tanggal_2 = $("#filter_tanggal_2").val();
|
||||
}
|
||||
},
|
||||
columns: [{
|
||||
data: 'nomor',
|
||||
name: 'nomor',
|
||||
orderable: false,
|
||||
className: 'text-center'
|
||||
},
|
||||
{
|
||||
data: 'kode_pesanan',
|
||||
name: 'kode_pesanan'
|
||||
},
|
||||
{
|
||||
data: 'nama_pemesan',
|
||||
name: 'nama_pemesan'
|
||||
},
|
||||
{
|
||||
data: 'nomor_meja',
|
||||
name: 'nomor_meja'
|
||||
},
|
||||
{
|
||||
data: 'created_at',
|
||||
name: 'created_at'
|
||||
},
|
||||
{
|
||||
data: 'total_pesanan',
|
||||
name: 'total_pesanan',
|
||||
className: 'text-center'
|
||||
},
|
||||
{
|
||||
data: 'total_bayar',
|
||||
name: 'total_bayar',
|
||||
className: 'text-right',
|
||||
render: function(data) {
|
||||
// change to IDR
|
||||
return 'Rp. ' + data.toString().replace(/\B(?=(\d{3})+(?!\d))/g, '.');
|
||||
}
|
||||
},
|
||||
{
|
||||
data: 'diskon_persen',
|
||||
name: 'diskon_persen',
|
||||
className: 'text-center',
|
||||
render: function(data) {
|
||||
return data ?? 0;
|
||||
}
|
||||
},
|
||||
{
|
||||
data: 'grand_total',
|
||||
name: 'grand_total',
|
||||
className: 'text-right',
|
||||
render: function(data) {
|
||||
// change to IDR
|
||||
return 'Rp. ' + data.toString().replace(/\B(?=(\d{3})+(?!\d))/g, '.');
|
||||
}
|
||||
},
|
||||
{
|
||||
data: 'ubah',
|
||||
name: 'ubah',
|
||||
className: 'text-center'
|
||||
},
|
||||
],
|
||||
footerCallback: function(row, data, start, end, display) {
|
||||
let api = this.api();
|
||||
// Remove the formatting to get integer data for summation
|
||||
let intVal = function(i) {
|
||||
return typeof i === 'string' ?
|
||||
i.replace(/[\$,]/g, '') * 1 :
|
||||
typeof i === 'number' ?
|
||||
i :
|
||||
0;
|
||||
};
|
||||
|
||||
// GrandTotal over all pages
|
||||
totalAll = api
|
||||
.column(8)
|
||||
.data()
|
||||
.reduce((a, b) => intVal(a) + intVal(b), 0);
|
||||
|
||||
// GrandTotal over all pages
|
||||
|
||||
|
||||
// Total over this page
|
||||
pageTotal = api
|
||||
.column(6, {
|
||||
page: 'current'
|
||||
})
|
||||
.data()
|
||||
.reduce((a, b) => intVal(a) + intVal(b), 0);
|
||||
|
||||
// total pesanan
|
||||
totalPesanan = api
|
||||
.column(5)
|
||||
.data()
|
||||
.reduce((a, b) => intVal(a) + intVal(b), 0);
|
||||
|
||||
// Update footer
|
||||
api.column(5).footer().innerHTML = totalPesanan + ' Item';
|
||||
api.column(6).footer().innerHTML =
|
||||
'Rp. ' + pageTotal.toString().replace(/\B(?=(\d{3})+(?!\d))/g, '.');
|
||||
api.column(8).footer().innerHTML =
|
||||
'Rp. ' + totalAll.toString().replace(/\B(?=(\d{3})+(?!\d))/g, '.');
|
||||
}
|
||||
})
|
||||
$('#btn_filter').on('click', function() {
|
||||
if ($("#filter_tanggal_1").val() == "" || $("#filter_tanggal_2").val() == "") {
|
||||
alert("Input pencarian tidak boleh kosong")
|
||||
} else {
|
||||
dataTable.ajax.reload();
|
||||
}
|
||||
});
|
||||
})
|
||||
</script>
|
||||
<script>
|
||||
function print(id) {
|
||||
var url = "{{ route('penjualan.print', '') }}/" + id + '?print=true'
|
||||
// window.open(url, '_blank');
|
||||
window.open(url, '_blank', "toolbar=yes,scrollbars=yes,resizable=yes,top=500,left=500,width=900,height=600");
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
function detail(id_pesanan) {
|
||||
$.ajax({
|
||||
headers: {
|
||||
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
|
||||
},
|
||||
type: "POST",
|
||||
url: "{{ route('penjualan.getDataDetailPenjualan') }}",
|
||||
data: {
|
||||
id_pesanan: id_pesanan,
|
||||
},
|
||||
success: function(result) {
|
||||
$('#view_penjualan_detail').empty()
|
||||
if (result.status) {
|
||||
const data = result.data
|
||||
let nomor = 1
|
||||
// console.log(data);
|
||||
data.forEach(x => {
|
||||
let tr = $('<tr></tr>')
|
||||
tr.append('<td class="text-center">' + nomor + '</td>')
|
||||
tr.append('<td>' + x.nama_produk + '</td>')
|
||||
tr.append('<td>' + formatRupiah(x.harga_produk) + '</td>')
|
||||
tr.append('<td class="text-center">' + x.jumlah_produk + '</td>')
|
||||
tr.append('<td>' + formatRupiah(x.total_harga_produk) + '</td>')
|
||||
tr.append('<td class="text-center">' + x.diskon_persen + '%</td>')
|
||||
tr.append('<td class="text-center">' + (x.keterangan_produk ?? '-') +
|
||||
'</td>')
|
||||
$('#view_penjualan_detail').append(tr)
|
||||
nomor++
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
$('#modal_detail_penjualan').modal('show')
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
function formatRupiah(angka) {
|
||||
var bilangan = parseInt(angka);
|
||||
|
||||
// Cek apakah bilangan negatif atau positif
|
||||
var minus = "";
|
||||
if (bilangan < 0) {
|
||||
minus = "-";
|
||||
bilangan = Math.abs(bilangan);
|
||||
}
|
||||
|
||||
// Konversi angka menjadi format ribuan dengan menambahkan titik
|
||||
var reverse = bilangan.toString().split("").reverse().join("");
|
||||
var ribuan = reverse.match(/\d{1,3}/g);
|
||||
var hasil = ribuan.join(".").split("").reverse().join("");
|
||||
|
||||
// Gabungkan hasil dengan simbol rupiah
|
||||
var rupiah = "Rp " + minus + hasil;
|
||||
|
||||
return rupiah;
|
||||
}
|
||||
|
||||
// // cetak_laporan
|
||||
// $('#cetak_laporan').on('click', function() {
|
||||
// let filter_tanggal_1 = $("#filter_tanggal_1").val()
|
||||
// let filter_tanggal_2 = $("#filter_tanggal_2").val()
|
||||
// if (filter_tanggal_1 == "" || filter_tanggal_2 == "") {
|
||||
// alert("Input pencarian tidak boleh kosong")
|
||||
// } else {
|
||||
// $.ajax({
|
||||
// url: "{{ route('penjualan.laporan') }}",
|
||||
// type: "POST",
|
||||
// xhrFields: {
|
||||
// responseType: 'blob' // Menggunakan responseType 'blob' untuk menerima data sebagai blob
|
||||
// },
|
||||
// dataType: 'native',
|
||||
// data: {
|
||||
// _token: "{{ csrf_token() }}",
|
||||
// filter_tanggal_1: filter_tanggal_1,
|
||||
// filter_tanggal_2: filter_tanggal_2
|
||||
// },
|
||||
// success: function(result) {
|
||||
// console.log(result);
|
||||
// var link = document.createElement('a');
|
||||
// link.href = window.URL.createObjectURL(blob);
|
||||
// link.download = "Laporan_Penjualan.pdf";
|
||||
// link.click();
|
||||
// }
|
||||
// })
|
||||
// }
|
||||
// })
|
||||
</script>
|
||||
@endpush
|
|
@ -0,0 +1,90 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||
<title>Laporan Transaksi Penjualan</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<table style="width: 100%;">
|
||||
<tr>
|
||||
<td>Tanggal Unduh: {{ date('d-m-Y H:i:s') }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Dicetak Oleh: {{ Session::get('name') }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
<hr>
|
||||
<table style="width: 100%;">
|
||||
<tr>
|
||||
<td style="text-align: center; font-size: 20px; font-weight: bold;">Laporan Transaksi Penjualan</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: center;">Pencarian:
|
||||
{{ 'Antara Tanggal ' . toDmy($filter_tanggal_1) . ' s/d Tanggal ' . toDmy($filter_tanggal_2) . '' }}
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
<table style="width: 100%; border-collapse:collapse; border:1px solid black;">
|
||||
<thead style="border-collapse:collapse; border:1px solid black;">
|
||||
<tr style="border-collapse:collapse; border:1px solid black;">
|
||||
<th style="border-collapse:collapse; border:1px solid black;">No</th>
|
||||
<th style="border-collapse:collapse; border:1px solid black;">Kode Pesanan</th>
|
||||
<th style="border-collapse:collapse; border:1px solid black;">Kasir</th>
|
||||
<th style="border-collapse:collapse; border:1px solid black;">Nama Pemesan</th>
|
||||
<th style="border-collapse:collapse; border:1px solid black;">Tanggal</th>
|
||||
<th style="border-collapse:collapse; border:1px solid black;">Jenis Pembayaran</th>
|
||||
<th style="border-collapse:collapse; border:1px solid black;">Nominal</th>
|
||||
{{-- <th style="border-collapse:collapse; border:1px solid black;">Keterangan</th> --}}
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody style="border-collapse:collapse; border:1px solid black;">
|
||||
@foreach ($data as $key => $val)
|
||||
<tr>
|
||||
<td style="text-align: center; border-collapse:collapse; border:1px solid black;">
|
||||
{{ $key + 1 }}</td>
|
||||
<td style="text-align:center;border-collapse:collapse; border:1px solid black;">
|
||||
{{ $val->kode_pesanan }}</td>
|
||||
<td style="text-align:center; border-collapse:collapse; border:1px solid black;">
|
||||
{{ $val->user->name }}</td>
|
||||
<td style="text-align:center;border-collapse:collapse; border:1px solid black;">
|
||||
{{ $val->nama_pemesan }}</td>
|
||||
<td style="text-align:center; border-collapse:collapse; border:1px solid black;">
|
||||
{{ \Carbon\Carbon::parse($val->tanggal_pesanan)->format('d F Y H:i:s') }}</td>
|
||||
<td style="text-align:center; border-collapse:collapse; border:1px solid black;">
|
||||
@if ($val->jenis_pembayaran == 1 || $val->jenis_pembayaran == null)
|
||||
Tunai
|
||||
@else
|
||||
Non Tunai
|
||||
<br>
|
||||
({{ $val->bukuBesar[0]->keterangan_coa }})
|
||||
@endif
|
||||
</td>
|
||||
<td style="text-align: left; border-collapse:collapse; border:1px solid black;">Rp
|
||||
{{ format_uang($val->grand_total) }}</td>
|
||||
{{-- <td style="border-collapse:collapse; border:1px solid black;">{{ $val->keterangan }}</td> --}}
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
@php
|
||||
$total = 0;
|
||||
foreach ($data as $key => $val) {
|
||||
$total += $val->grand_total;
|
||||
}
|
||||
@endphp
|
||||
<tfoot>
|
||||
<tr>
|
||||
<th colspan="6" style="text-align: right; border-collapse:collapse; border:1px solid black;">Total
|
||||
</th>
|
||||
<th style="text-align: left; border-collapse:collapse; border:1px solid black;">Rp
|
||||
{{ format_uang($total) }}</th>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
</body>
|
||||
|
||||
</html>
|
|
@ -0,0 +1,30 @@
|
|||
<div class="modal fade" id="modal_detail_penjualan" aria-labelledby="exampleModalLabel">
|
||||
<div class="modal-dialog modal-lg">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title" id="exampleModalLabel">Detail Penjualan</h5>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="table-responsive mt-3">
|
||||
<table id="tabelku" class="table table-hover display" style="width: 100%; font-size: 14px;">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="text-center">No</th>
|
||||
<th>Nama Produk</th>
|
||||
<th>Harga</th>
|
||||
<th class="text-center">Jumlah Terjual</th>
|
||||
<th>Total Harga</th>
|
||||
<th class="text-center">Diskon(%)</th>
|
||||
<th>Keterangan</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="view_penjualan_detail"></tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
|
@ -0,0 +1,18 @@
|
|||
@push('styles')
|
||||
<!-- Toastr -->
|
||||
<style>
|
||||
@media only screen and (max-width : 991px) {
|
||||
/* Styles */
|
||||
}
|
||||
|
||||
@media only screen and (max-width : 768px) {
|
||||
/* Styles */
|
||||
}
|
||||
|
||||
@media only screen and (max-width : 414px) {
|
||||
/* Styles */
|
||||
}
|
||||
</style>
|
||||
<link rel="stylesheet" href="{{ asset('assets/plugins/toastr/toastr.min.css') }}">
|
||||
<link rel="stylesheet" href="{{ asset('assets/datatables/datatables.min.css') }}">
|
||||
@endpush
|
|
@ -6,6 +6,7 @@ use App\Http\Controllers\Admins\Dashboard\ChartPenjualanController;
|
|||
use App\Http\Controllers\Admins\Dashboard\DashboardController;
|
||||
use App\Http\Controllers\Admins\JenisMenu\JenisMenuController;
|
||||
use App\Http\Controllers\Admins\Pengeluaran\PengeluaranController;
|
||||
use App\Http\Controllers\Admins\Penjualan\PenjualanController;
|
||||
use App\Http\Controllers\Admins\RekeningCoa\RekeningCoaController;
|
||||
use App\Http\Controllers\Admins\Users\RoleController;
|
||||
use App\Http\Controllers\Admins\Users\UserController;
|
||||
|
@ -121,6 +122,14 @@ Route::group(['middleware' => ['auth', 'permission']], function () {
|
|||
Route::get('/getDatapengeluaran', [PengeluaranController::class, 'getDatapengeluaran'])->name('pengeluaran.getDataPengeluaran')->comment("Ambil data Riwayat Transaksi");
|
||||
});
|
||||
|
||||
Route::group(['prefix' => 'penjualan'], function () {
|
||||
Route::get('/', [PenjualanController::class, 'index'])->name('penjualan.index')->comment("Halaman Riwayat Transaksi Penjualan");
|
||||
Route::get('/getDataPenjualan', [PenjualanController::class, 'getDataPenjualan'])->name('penjualan.getDataPenjualan')->comment("Ambil data Riwayat Transaksi Penjualan");
|
||||
Route::get('/print/{id}', [PenjualanController::class, 'print'])->name('penjualan.print')->comment("Print Riwayat Transaksi Penjualan");
|
||||
Route::post('/laporan', [PenjualanController::class, 'laporan'])->name('penjualan.laporan')->comment('Halaman Laporan Penjualan');
|
||||
Route::post('/getDataDetailPenjualan', [PenjualanController::class, 'getDataDetailPenjualan'])->name('penjualan.getDataDetailPenjualan')->comment("Ambil data Detail Riwayat Transaksi Penjualan");
|
||||
});
|
||||
|
||||
// Rekening Coa
|
||||
Route::group(['prefix' => 'coa'], function () {
|
||||
Route::get('/', [RekeningCoaController::class, 'index'])->name('coa.index')->comment('Halaman Rekening Coa');
|
||||
|
|
Loading…
Reference in New Issue