remake transaksi tunai

akunCOA
Akhmad Sofyan 2024-01-23 18:42:43 +07:00
parent b7c408ee0a
commit 61766d325d
15 changed files with 1326 additions and 812 deletions

View File

@ -3,10 +3,12 @@
namespace App\Http\Controllers\Kasir;
use App\Http\Controllers\Controller;
use App\Models\BukuBesar;
use App\Models\DetailPesanan;
use App\Models\KelompokKategori;
use App\Models\Pesanan;
use App\Models\Produk;
use App\Models\RekeningCoa;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
@ -23,6 +25,7 @@ class Transaksi extends Controller
{
$orderCode = "ORD-" . strtoupper(random_str(6, random_str()));
$KelompokKategori = KelompokKategori::with('kelompokKategoriPivot.produk')->get();
$aba = RekeningCoa::where('kode_coa', 1)->where('sub_kode_coa', 200)->get();
// dd($KelompokKategori);
@ -34,7 +37,7 @@ class Transaksi extends Controller
// $allProduk = [];
// $produk = Produk::where('tgl_start_promo', '<=', $tgl_sekarang)->where('tgl_end_promo', '>=', $tgl_sekarang)->get();
return view('pages.Kasir.transaksi', compact('orderCode', 'KelompokKategori'));
return view('pages.Kasir.transaksi', compact('orderCode', 'KelompokKategori', 'aba'));
}
public function getCetakTigaKali()
@ -145,6 +148,8 @@ class Transaksi extends Controller
'nominal_kembali' => $request->kembali,
'status_bayar' => '1',
'user_id' => '1',
'jenis_pembayaran' => $request->jenis_pembayaran,
'coa_kas' => $request->coa_kas,
];
$pesananModels = \App\Models\Pesanan::create($pesananDatas);
@ -175,6 +180,34 @@ class Transaksi extends Controller
$detailPesananModels = \App\Models\DetailPesanan::create($oderDatas);
}
// keuangan
// jika pembayaran tunai
if($request->jenis_pembayaran == "1"){
BukuBesar::create([
'faktur' => 'PJ-'.date('YmdHis'),
'tanggal' => date('Y-m-d'),
'rekening_coa_id' => "2",
'kode_rekening_coa' => "1.100.01",
'keterangan_coa' => "Kas Kasir",
'keterangan' => 'Penjualan Tunai['.$request->orderCode.']',
'debet' => $request->totalDiskon,
'kredit' => 0
]);
BukuBesar::create([
'faktur' => 'PJ-'.date('YmdHis'),
'tanggal' => date('Y-m-d'),
'rekening_coa_id' => "35",
'kode_rekening_coa' => "4.100.01",
'keterangan_coa' => "Pendapatan Penjualan",
'keterangan' => 'Penjualan Tunai['.$request->orderCode.']',
'debet' => 0,
'kredit' => $request->totalDiskon
]);
// jika pembayaran non tunai
}else{
}
DB::commit();
// return url link page print
return ['url' => route('transaksi.print', $pesananModels->id) . '?print=true', 'message' => 'Pesanan berhasil ditambahkan'];

14
app/Models/BukuBesar.php Normal file
View File

@ -0,0 +1,14 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class BukuBesar extends Model
{
use HasFactory;
protected $table = 'buku_besar';
protected $guarded = [];
}

View File

@ -33,6 +33,8 @@ class Pesanan extends Model
'diskon_persen',
'diskon_rupiah',
'user_id',
'jenis_pembayaran',
'coa_kas',
];
public function detailPesanan()
@ -49,4 +51,8 @@ class Pesanan extends Model
{
return $this->belongsTo(User::class, 'user_id');
}
public function coa(){
return $this->belongsTo(RekeningCoa::class, 'coa_kas');
}
}

View File

@ -0,0 +1,18 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class RekeningCoa extends Model
{
use HasFactory;
protected $table = 'rekening_coa';
protected $guarded = [];
public function pesanan(){
return $this->hasMany(Pesanan::class, 'coa_kas');
}
}

View File

@ -0,0 +1,33 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('rekening_coa', function (Blueprint $table) {
$table->id();
$table->string('kode_coa')->nullable();
$table->string('sub_kode_coa')->nullable();
$table->string('detail_coa')->nullable();
$table->string('coa')->nullable();
$table->string('keterangan_coa')->nullable();
$table->integer('status')->comment('0 = Parent; 1 = Children;')->nullable();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('rekening_coa');
}
};

View File

@ -0,0 +1,37 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('buku_besar', function (Blueprint $table) {
$table->id();
$table->string('faktur')->nullable();
$table->date('tanggal')->nullable();
$table->foreignId('rekening_coa_id')->nullable()->references('id')->on('rekening_coa')->onUpdate('cascade')->onDelete('cascade');
$table->string('kode_rekening_coa')->nullable();
$table->string('keterangan_coa')->nullable();
$table->string('keterangan')->nullable();
$table->integer('debet')->nullable();
$table->integer('kredit')->nullable();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('buku_besar');
}
};

View File

@ -0,0 +1,28 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('pesanans', function (Blueprint $table) {
$table->integer('jenis_pembayaran')->nullable()->after('status_printer')->comment('Jika 1 = tunai; Jika 2 = non-tunai');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('pesanans', function (Blueprint $table) {
$table->dropColumn('jenis_pembayaran');
});
}
};

View File

@ -0,0 +1,28 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('pesanans', function (Blueprint $table) {
$table->foreignId('coa_kas')->nullable()->after('jenis_pembayaran')->references('id')->on('rekening_coa')->onUpdate('cascade')->onDelete('cascade');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('pesanans', function (Blueprint $table) {
$table->dropColumn('coa_kas');
});
}
};

View File

@ -19,6 +19,7 @@ class DatabaseSeeder extends Seeder
ProdukSeeder::class,
KelompokKategoriPivotSeeder::class,
UserSeeder::class,
RekeningCoaSeeder::class
];
foreach ($classes as $class) {

View File

@ -0,0 +1,36 @@
<?php
namespace Database\Seeders;
use App\Models\RekeningCoa;
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
class RekeningCoaSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
// RekeningCoa::truncate();
$csvFile = fopen(base_path("database/seeders/data_csv/rekening_coa.csv"), "r");
$firstline = true;
while (($data = fgetcsv($csvFile, 1000, ",")) !== FALSE) {
if (!$firstline) {
RekeningCoa::create([
'kode_coa' => $data['0'],
'sub_kode_coa' => $data['1'],
'detail_coa' => $data['2'] == '' ? null : $data['2'],
'coa' => $data['3'],
'keterangan_coa' => $data['4'],
'status' => $data['5'],
]);
}
$firstline = false;
}
fclose($csvFile);
}
}

View File

@ -0,0 +1,56 @@
kode_coa,sub_kode_coa,detail_coa,coa,keterangan_coa,status
1,100,,1.100,Kas,0
1,100,1,1.100.01,Kas Kasir,1
1,100,1,1.100.02,Kas BCA1,1
1,100,1,1.100.03,Kas BCA2,1
1,100,1,1.100.04,Kas Mandiri1,1
1,100,1,1.100.05,Kas Mandiri2,1
1,100,1,1.100.06,Kas BRI1,1
1,100,1,1.100.07,Kas BRI2,1
1,100,1,1.100.08,Kas BNI1,1
1,100,1,1.100.09,Kas BNI2,1
1,100,1,1.100.10,Kas BSI1,1
1,100,1,1.100.11,Kas BSI2,1
1,200,,1.200,Antar Bank Aktiva,0
1,200,1,1.200.01,Tab ABA Bank Mandiri1,1
1,200,2,1.200.02,Tab ABA Bank Mandiri2,1
1,200,3,1.200.03,Tab ABA Bank BNI1,1
1,200,4,1.200.04,Tab ABA Bank BNI2,1
1,200,5,1.200.05,Tab ABA Bank BCA1,1
1,200,5,1.200.06,Tab ABA Bank BCA2,1
1,200,5,1.200.07,Tab ABA Bank BRI1,1
1,200,5,1.200.08,Tab ABA Bank BRI2,1
1,200,5,1.200.09,Tab ABA Bank BSI1,1
1,200,5,1.200.10,Tab ABA Bank BSI2,1
1,300,,1.300,Piutang,0
1,300,1,1.300.01,Piutang Konsumen,1
2,100,,2.100,Hutang,0
2,100,1,2.100.01,Hutang Usaha,1
2,100,2,2.100.02,Hutang Bank,1
2,200,,2.200,Pajak,0
2,200,1,2.200.01,Pajak PPh21,1
2,200,2,2.200.02,Pajak PPh22,1
3,100,,3.100,Modal,0
3,100,1,3.100.01,Modal Awal,1
4,100,,4.100,Pendapatan,0
4,100,1,4.100.01,Pendapatan Penjualan,1
5,100,,5.100,Beban Umum & Administrasi,0
5,100,1,5.100.01,Gaji & Upah,1
5,100,2,5.100.02,Lembur,1
5,100,3,5.100.03,Alat Tulis & Kantor,1
5,100,4,5.100.04,Perjalanan Dinas / Transport,1
5,100,5,5.100.05,Perawatan Kendaraan,1
5,200,,5.200,Beban Organisasi,0
5,200,1,5.200.01,Biaya Rapat,1
5,200,2,5.200.02,Biaya Lainnya,1
5,300,,5.300,Beban Operasional Lainnya,0
5,300,1,5.300.01,Sewa Kantor,1
5,300,2,5.300.02,Biaya Telepon / Pulsa,1
5,300,3,5.300.03,Biaya Listrik,1
5,300,4,5.300.04,Biaya Air,1
5,300,5,5.300.05,Biaya Wifi,1
5,300,6,5.300.06,Biaya BBM,1
5,300,7,5.300.07,Biaya Penyisihan THR,1
5,400,,5.400,Pembelian,0
5,400,1,5.400.01,Pembelian Barang,1
5,400,2,5.400.02,Pembelian Sarpras,1
1 kode_coa sub_kode_coa detail_coa coa keterangan_coa status
2 1 100 1.100 Kas 0
3 1 100 1 1.100.01 Kas Kasir 1
4 1 100 1 1.100.02 Kas BCA1 1
5 1 100 1 1.100.03 Kas BCA2 1
6 1 100 1 1.100.04 Kas Mandiri1 1
7 1 100 1 1.100.05 Kas Mandiri2 1
8 1 100 1 1.100.06 Kas BRI1 1
9 1 100 1 1.100.07 Kas BRI2 1
10 1 100 1 1.100.08 Kas BNI1 1
11 1 100 1 1.100.09 Kas BNI2 1
12 1 100 1 1.100.10 Kas BSI1 1
13 1 100 1 1.100.11 Kas BSI2 1
14 1 200 1.200 Antar Bank Aktiva 0
15 1 200 1 1.200.01 Tab ABA Bank Mandiri1 1
16 1 200 2 1.200.02 Tab ABA Bank Mandiri2 1
17 1 200 3 1.200.03 Tab ABA Bank BNI1 1
18 1 200 4 1.200.04 Tab ABA Bank BNI2 1
19 1 200 5 1.200.05 Tab ABA Bank BCA1 1
20 1 200 5 1.200.06 Tab ABA Bank BCA2 1
21 1 200 5 1.200.07 Tab ABA Bank BRI1 1
22 1 200 5 1.200.08 Tab ABA Bank BRI2 1
23 1 200 5 1.200.09 Tab ABA Bank BSI1 1
24 1 200 5 1.200.10 Tab ABA Bank BSI2 1
25 1 300 1.300 Piutang 0
26 1 300 1 1.300.01 Piutang Konsumen 1
27 2 100 2.100 Hutang 0
28 2 100 1 2.100.01 Hutang Usaha 1
29 2 100 2 2.100.02 Hutang Bank 1
30 2 200 2.200 Pajak 0
31 2 200 1 2.200.01 Pajak PPh21 1
32 2 200 2 2.200.02 Pajak PPh22 1
33 3 100 3.100 Modal 0
34 3 100 1 3.100.01 Modal Awal 1
35 4 100 4.100 Pendapatan 0
36 4 100 1 4.100.01 Pendapatan Penjualan 1
37 5 100 5.100 Beban Umum & Administrasi 0
38 5 100 1 5.100.01 Gaji & Upah 1
39 5 100 2 5.100.02 Lembur 1
40 5 100 3 5.100.03 Alat Tulis & Kantor 1
41 5 100 4 5.100.04 Perjalanan Dinas / Transport 1
42 5 100 5 5.100.05 Perawatan Kendaraan 1
43 5 200 5.200 Beban Organisasi 0
44 5 200 1 5.200.01 Biaya Rapat 1
45 5 200 2 5.200.02 Biaya Lainnya 1
46 5 300 5.300 Beban Operasional Lainnya 0
47 5 300 1 5.300.01 Sewa Kantor 1
48 5 300 2 5.300.02 Biaya Telepon / Pulsa 1
49 5 300 3 5.300.03 Biaya Listrik 1
50 5 300 4 5.300.04 Biaya Air 1
51 5 300 5 5.300.05 Biaya Wifi 1
52 5 300 6 5.300.06 Biaya BBM 1
53 5 300 7 5.300.07 Biaya Penyisihan THR 1
54 5 400 5.400 Pembelian 0
55 5 400 1 5.400.01 Pembelian Barang 1
56 5 400 2 5.400.02 Pembelian Sarpras 1

View File

@ -0,0 +1,941 @@
@push('scripts')
<!-- Toastr -->
<script src="{{ asset('assets/plugins/toastr/toastr.min.js') }}"></script>
<script>
$(document).ready(function() {
$('#print-dapur').on('click', function() {
$('#modal_print_dapur').modal('show')
})
})
</script>
<script>
$(document).ready(function() {
$('#refresh').on('click', function() {
location.reload()
})
})
</script>
<script src="{{ asset('assets/datatables/datatables.min.js') }}"></script>
<script>
$(document).ready(function() {
$('#tabelku').DataTable({
processing: true,
serverSide: true,
ajax: '{{ route('transaksi.getCetakTigaKali') }}',
columns: [{
data: 'nomor',
name: 'nomor',
orderable: false,
className: 'text-center'
},
{
data: 'kode_pesanan',
name: 'kode_pesanan'
},
{
data: 'nama_user',
name: 'nama_user'
},
{
data: 'created_at',
name: 'created_at',
className: 'text-center'
},
{
data: 'total_pesanan',
name: 'total_pesanan',
className: 'text-center'
},
{
data: 'diskon_persen',
name: 'diskon_persen',
className: 'text-center',
render: function(data) {
return data ?? 0;
}
},
{
data: 'grand_total',
name: 'grand_total'
},
{
data: 'ubah',
name: 'ubah',
className: 'text-center'
},
]
})
})
</script>
<script>
function printDapurTigaKali(id) {
var url = "{{ route('transaksi.printDapurTigaKali', '') }}/" + id + '?print=true'
window.open(url, '_blank');
location.reload(true);
}
function printDapurDuaKali(id) {
var url = "{{ route('transaksi.printDapurDuaKali', '') }}/" + id + '?print=true'
window.open(url, '_blank');
location.reload(true);
}
function printDapurSatuKali(id) {
var url = "{{ route('transaksi.printDapurSatuKali', '') }}/" + id + '?print=true'
window.open(url, '_blank');
location.reload(true);
}
</script>
<script>
// set interval waktu pesanan
function showTime() {
var date = new Date(),
utc = new Date(Date.UTC(
date.getFullYear(),
date.getMonth(),
date.getDate(),
date.getHours() - 7,
date.getMinutes(),
date.getSeconds()
));
// format datetime indonesia
var options = {
weekday: 'long',
year: 'numeric',
month: 'long',
day: 'numeric',
hour: 'numeric',
hour12: true,
minute: 'numeric',
second: 'numeric'
};
// tampilkan pada id datetime-order
document.getElementById('datetime-order').innerHTML = utc.toLocaleDateString("id-ID", options);
}
setInterval(showTime, 1000);
// make function add menu to table and calculate qty and total price menu ordered and check menu ordered is exist or not in tbody table order-menus insert this in
function aadMenu(params) {
// console.log(params);
var table = document.getElementById("order-menus");
var menu = params;
var menuId = menu.id;
var menuName = menu.nama_produk;
var menuPrice = menu.harga_produk;
var menuQty = 1;
var menuTotal = menuPrice * menuQty;
var isExist = false;
var index = 0;
for (var i = 1, row; row = table.rows[i]; i++) {
var id = row.getAttribute('data-id');
if (id == menuId) {
isExist = true;
index = i;
}
}
if (isExist) {
var qty = table.rows[index].getAttribute('data-qty');
var diskonSatuan = table.rows[index].getAttribute('data-diskon-satuan');
var total = table.rows[index].getAttribute('data-total');
qty = parseInt(qty) + 1;
var totalLama = parseInt(total) + parseInt(menuPrice);
diskonSatuan = parseInt(diskonSatuan);
total = (parseInt(total) + parseInt(menuPrice)) - ((parseInt(total) + parseInt(menuPrice)) * (diskonSatuan /
100));
table.rows[index].setAttribute('data-qty', qty);
table.rows[index].setAttribute('data-diskon-satuan', diskonSatuan);
table.rows[index].setAttribute('data-total', totalLama);
var harga = menuPrice;
table.rows[index].cells[0].innerHTML = `
<td>
${params.nama_produk}
<br>
${(diskonSatuan > 0) ? '<small class="text-primary"><s>Rp. ' + (harga * qty) + '</s></small> | <small class="text-danger">Rp. ' + total + '</small>' : '<small class="text-primary">Rp. ' + totalLama + '</small>'}
<div class="input-group input-group-sm mt-1">
<input type="text" name="keterangan_satuan" class="form-control rounded-0" placeholder="Keterangan..">
</div>
</td>
`;
table.rows[index].cells[1].innerHTML = `
<td class="text-center">
<div class="input-group input-group-sm">
<span class="input-group-append">
<button type="button" class="btn btn-default btn-xs btn-flat" onclick="decrementMenu(${params.id}, '${params.nama_produk}')"><b>-</b></button>
</span>
<input type="text" name="bayar" class="form-control rounded-0" readonly value="${qty}">
<span class="input-group-append">
<button type="button" class="btn btn-default btn-xs btn-flat" onclick="incrementMenu(${params.id}, '${params.nama_produk}')">+</button>
</span>
</div>
</td>
`;
table.rows[index].cells[2].innerHTML = `
<td class="text-center">
<div class="input-group input-group-sm">
<input type="number" name="diskon_satuan" oninput="inputNum(this)" class="form-control rounded-0" value="${diskonSatuan}" onkeyup="diskonSatuanMenu(${params.id}, '${params.nama_produk}', this.value)">
</div>
</td>
`;
table.rows[index].cells[3].innerHTML = `
<td class="text-center">
<button class="btn btn-danger btn-sm" onclick="deleteMenu(${params.id})">
<i class="fas fa-trash"></i>
</button>
</td>
`;
calculateTotal();
$('#modal-default').modal('hide');
} else {
$('#tbody-order-menus').append(`
<tr id="row-${params.id}" data-id="${params.id}" data-nama="${params.nama_produk}" data-harga="${params.harga_produk}" data-qty="1" data-diskon-satuan="0" data-total="${params.harga_produk}">
<td>
${params.nama_produk}
<br>
<small class="text-primary">Rp. ${params.harga_produk}</small>
<div class="input-group input-group-sm mt-1">
<input type="text" name="keterangan_satuan" class="form-control rounded-0" placeholder="Keterangan..">
</div>
</td>
<td class="text-center">
<div class="input-group input-group-sm">
<span class="input-group-append">
<button type="button" class="btn btn-default btn-xs btn-flat" onclick="decrementMenu(${params.id}, '${params.nama_produk}')"><b>-</b></button>
</span>
<input type="text" name="bayar" class="form-control rounded-0" readonly value="${menuQty}">
<span class="input-group-append">
<button type="button" class="btn btn-default btn-xs btn-flat" onclick="incrementMenu(${params.id}, '${params.nama_produk}')">+</button>
</span>
</div>
</td>
<td class="text-center">
<div class="input-group input-group-sm">
<input type="number" name="diskon_satuan" oninput="inputNum(this)" class="form-control rounded-0" value="0" onkeyup="diskonSatuanMenu(${params.id}, '${params.nama_produk}', this.value)">
</div>
</td>
<td class="text-center">
<button class="btn btn-danger btn-sm" onclick="deleteMenu(${params.id})">
<i class="fas fa-trash"></i>
</button>
</td>
</tr>
`);
calculateTotal();
$('#modal-default').modal('hide');
}
}
// delete menu from table and calculate qty and total price menu ordered
function deleteMenu(params) {
var table = document.getElementById("order-menus");
var index = 0;
for (var i = 1, row; row = table.rows[i]; i++) {
var id = row.getAttribute('data-id');
if (id == params) {
index = i;
}
}
table.deleteRow(index);
calculateTotal();
}
// calculate qty and total price menu ordered
function calculateTotal() {
var table = document.getElementById("order-menus");
var total = 0;
var diskon = document.getElementsByName('diskon')?.[0]?.value ?? 0;
var bayar = document.getElementsByName('bayar')?.[0]?.value ?? 0;
for (var i = 1, row; row = table.rows[i]; i++) {
var harga = row.getAttribute('data-harga');
var qty = row.getAttribute('data-qty');
var diskonSatuan = row.getAttribute('data-diskon-satuan');
var total = total + ((harga * qty) - ((harga * qty) * (diskonSatuan / 100)));
}
var ribuantotal = toRupiah(total);
document.getElementById('total').innerHTML = ribuantotal;
document.getElementById('total-hidden').innerHTML = total;
var totalDiskon = total - (total * (diskon / 100));
var ribuantotalDiskon = toRupiah(totalDiskon);
document.getElementById('total-diskon').innerHTML = ribuantotalDiskon;
document.getElementById('total-diskon-hidden').innerHTML = totalDiskon;
calculatekembali();
}
// increment qty menu ordered
function incrementMenu(params, nama_produk) {
var table = document.getElementById("order-menus");
var index = 0;
for (var i = 1, row; row = table.rows[i]; i++) {
var id = row.getAttribute('data-id');
if (id == params) {
index = i;
}
}
var qty = table.rows[index].getAttribute('data-qty');
var diskonSatuan = table.rows[index].getAttribute('data-diskon-satuan');
var total = table.rows[index].getAttribute('data-total');
var harga = table.rows[index].getAttribute('data-harga');
qty = parseInt(qty) + 1;
var totalLama = parseInt(total) + parseInt(harga);
diskonSatuan = parseInt(diskonSatuan);
total = (parseInt(total) + parseInt(harga)) - ((parseInt(total) + parseInt(harga)) * (diskonSatuan / 100));
table.rows[index].setAttribute('data-qty', qty);
table.rows[index].setAttribute('data-diskon-satuan', diskonSatuan);
table.rows[index].setAttribute('data-total', totalLama);
table.rows[index].cells[0].innerHTML = `
<td>
${nama_produk}
<br>
${(diskonSatuan > 0) ? '<small class="text-primary"><s>Rp. ' + (harga * qty) + '</s></small> | <small class="text-danger">Rp. ' + total + '</small>' : '<small class="text-primary">Rp. ' + totalLama + '</small>'}
<div class="input-group input-group-sm mt-1">
<input type="text" name="keterangan_satuan" class="form-control rounded-0" placeholder="Keterangan..">
</div>
</td>
`;
table.rows[index].cells[1].innerHTML = `
<td class="text-center">
<div class="input-group input-group-sm">
<span class="input-group-append">
<button type="button" class="btn btn-default btn-xs btn-flat" onclick="decrementMenu(${params}, '${nama_produk}')"><b>-</b></button>
</span>
<input type="text" name="bayar" class="form-control rounded-0" readonly value="${qty}">
<span class="input-group-append">
<button type="button" class="btn btn-default btn-xs btn-flat" onclick="incrementMenu(${params}, '${nama_produk}')">+</button>
</span>
</div>
</td>
`;
calculateTotal();
}
// decrement qty menu ordered
function decrementMenu(params, nama_produk) {
var table = document.getElementById("order-menus");
var index = 0;
for (var i = 1, row; row = table.rows[i]; i++) {
var id = row.getAttribute('data-id');
if (id == params) {
index = i;
}
}
var qty = table.rows[index].getAttribute('data-qty');
var diskonSatuan = table.rows[index].getAttribute('data-diskon-satuan');
var total = table.rows[index].getAttribute('data-total');
var harga = table.rows[index].getAttribute('data-harga');
if (qty > 1) {
qty = parseInt(qty) - 1;
var totalLama = parseInt(total) - parseInt(harga);
diskonSatuan = parseInt(diskonSatuan);
total = (parseInt(total) - parseInt(harga)) - ((parseInt(total) - parseInt(harga)) * (diskonSatuan / 100));
table.rows[index].setAttribute('data-qty', qty);
table.rows[index].setAttribute('data-diskon-satuan', diskonSatuan);
table.rows[index].setAttribute('data-total', totalLama);
table.rows[index].cells[0].innerHTML = `
<td>
${nama_produk}
<br>
${(diskonSatuan > 0) ? '<small class="text-primary"><s>Rp. ' + (harga * qty) + '</s></small> | <small class="text-danger">Rp. ' + total + '</small>' : '<small class="text-primary">Rp. ' + totalLama + '</small>'}
<div class="input-group input-group-sm mt-1">
<input type="text" name="keterangan_satuan" class="form-control rounded-0" placeholder="Keterangan..">
</div>
</td>
`;
table.rows[index].cells[1].innerHTML = `
<td class="text-center">
<div class="input-group input-group-sm">
<span class="input-group-append">
<button type="button" class="btn btn-default btn-xs btn-flat" onclick="decrementMenu(${params}, '${nama_produk}')"><b>-</b></button>
</span>
<input type="text" name="bayar" class="form-control rounded-0" readonly value="${qty}">
<span class="input-group-append">
<button type="button" class="btn btn-default btn-xs btn-flat" onclick="incrementMenu(${params}, '${nama_produk}')">+</button>
</span>
</div>
</td>
`;
calculateTotal();
}
}
// diskon satuan menu ordered
function diskonSatuanMenu(params, nama_produk, diskon = 0) {
var table = document.getElementById("order-menus");
var index = 0;
for (var i = 1, row; row = table.rows[i]; i++) {
var id = row.getAttribute('data-id');
if (id == params) {
index = i;
}
}
var qty = table.rows[index].getAttribute('data-qty');
var diskonSatuan = parseInt(diskon);
var total = table.rows[index].getAttribute('data-total');
var harga = table.rows[index].getAttribute('data-harga');
// if (diskonSatuan >= 1) {
// console.log(diskonSatuan);
var totalLama = total;
qty = parseInt(qty);
diskonSatuan = parseInt(diskonSatuan);
total = (parseInt(total)) - ((parseInt(total)) * (diskonSatuan / 100));
table.rows[index].setAttribute('data-qty', qty);
table.rows[index].setAttribute('data-diskon-satuan', diskonSatuan);
table.rows[index].setAttribute('data-total', totalLama);
table.rows[index].cells[0].innerHTML = `
<td>
${nama_produk}
<br>
${(diskonSatuan >= 1) ? '<small class="text-primary"><s>Rp. ' + (harga * qty) + '</s></small> | <small class="text-danger">Rp. ' + total + '</small>' : '<small class="text-primary">Rp. ' + totalLama + '</small>'}
<div class="input-group input-group-sm mt-1">
<input type="text" name="keterangan_satuan" class="form-control rounded-0" placeholder="Keterangan..">
</div>
</td>
`;
calculateTotal();
// }
}
// diskon use keyup
document.getElementsByName('diskon')[0].addEventListener('keyup', function() {
var diskon = document.getElementsByName('diskon')[0].value;
var total = document.getElementById('total-hidden').innerHTML;
var totalDiskon = total - (total * (diskon / 100));
var ribuan = toRupiah(totalDiskon);
document.getElementById('total-diskon-hidden').innerHTML = totalDiskon;
document.getElementById('total-diskon').innerHTML = ribuan;
calculatekembali();
});
/* Dengan Rupiah */
var dengan_rupiah = document.getElementById('nominal-bayar');
dengan_rupiah.addEventListener('keyup', function(e) {
dengan_rupiah.value = formatRupiah(this.value, 'Rp. ');
});
/* Fungsi */
function formatRupiah(angka, prefix) {
var number_string = angka.replace(/[^,\d]/g, '').toString(),
split = number_string.split(','),
sisa = split[0].length % 3,
rupiah = split[0].substr(0, sisa),
ribuan = split[0].substr(sisa).match(/\d{3}/gi);
if (ribuan) {
separator = sisa ? '.' : '';
rupiah += separator + ribuan.join('.');
}
rupiah = split[1] != undefined ? rupiah + ',' + split[1] : rupiah;
return prefix == undefined ? rupiah : (rupiah ? 'Rp. ' + rupiah : '');
}
// bayar use keyup
document.getElementsByName('nominal-bayar')[0].addEventListener('keyup', function() {
calculatekembali();
});
function calculatekembali() {
var bayar = document.getElementsByName('nominal-bayar')[0].value;
var nonimalBayar = bayar.replace(/[^,\d]/g, '').toString();
var totalDiskon = document.getElementById('total-diskon-hidden').innerHTML;
var kembali = nonimalBayar - totalDiskon;
document.getElementById('kembali-hidden').innerHTML = kembali;
var ribuan = toRupiah(kembali);
if (totalDiskon == 0 || bayar == 0) {
ribuan = 0;
var bayar = document.getElementsByName('nominal-bayar')[0].value = '';
}
document.getElementById('kembali').innerHTML = ribuan;
}
// format rupiah with minus
function toRupiah(angka) {
var rupiah = '';
var angkarev = angka.toString().split('').reverse().join('');
for (var i = 0; i < angkarev.length; i++)
if (i % 3 == 0) rupiah += angkarev.substr(i, 3) + '.';
return rupiah.split('', rupiah.length - 1).reverse().join('');
}
// modal bayar
$(document).ready(function() {
$('#pesan-bayar').on('click', function() {
$("#modal_bayar").modal('show')
})
})
// kirim pembayaran
$(document).ready(function() {
$('#pesan-bayar-tunai').on('click', function() {
let jenis_pembayaran = "1"
// return console.log(jenis_pembayaran);
var table = document.getElementById("order-menus");
var orderMenus = [];
for (var i = 1, row; row = table.rows[i]; i++) {
var id = row.getAttribute('data-id');
var nama = row.getAttribute('data-nama');
var qty = row.getAttribute('data-qty');
var diskonSatuan = row.getAttribute('data-diskon-satuan');
var harga = row.getAttribute('data-harga');
var total = row.getAttribute('data-total');
if (diskonSatuan != 0 && diskonSatuan != null && diskonSatuan != undefined) {
total = total - (total * (diskonSatuan / 100));
} else {
total = total
}
if (id != null || qty != null || total != null) {
orderMenus.push({
id: id,
nama: nama,
qty: qty,
diskonSatuan: diskonSatuan,
harga: harga,
total: total,
keterangan: document.getElementsByName('keterangan_satuan')[i - 1].value
});
}
}
var diskon = document.getElementsByName('diskon')[0].value;
var totalDiskon = document.getElementById('total-diskon-hidden').innerHTML;
var bayar = document.getElementsByName('nominal-bayar')[0].value;
var nominalBayar = bayar.replace(/[^,\d]/g, '').toString();
var kembaliHidden = document.getElementById('kembali-hidden').innerHTML;
var namaPemesan = document.getElementsByName('nama-pemesan')[0].value;
var nomorPemesan = document.getElementsByName('nomor-pemesan')[0].value;
var nomorMeja = document.getElementsByName('nomor-meja')[0].value;
var rekening_coa_aba_penarikan = $("#rekening_coa_aba_penarikan").val()
var split_rekening_coa_aba_penarikan = rekening_coa_aba_penarikan.split("|")
var id_rekening_coa = split_rekening_coa_aba_penarikan[0]
var kode_coa = split_rekening_coa_aba_penarikan[1]
var keterangan_coa = split_rekening_coa_aba_penarikan[2]
// if (rekening_coa_aba_penarikan == '') {
// alert('Pilih kas tujuan');
// document.getElementById('pesan-bayar-tunai').disabled = false;
// return false;
// }
if (orderMenus.length == 0) {
alert('Menu tidak boleh kosong');
document.getElementById('pesan-bayar-tunai').disabled = false;
return false;
}
if (totalDiskon != 0) {
if (nominalBayar == '' || nominalBayar == 0) {
alert('Pembayaran tidak boleh kosong');
document.getElementById('pesan-bayar-tunai').disabled = false;
return false;
}
} else if (kembaliHidden < 0) {
alert('Pembayaran kurang');
document.getElementById('pesan-bayar-tunai').disabled = false;
return false;
} else if (namaPemesan == '') {
alert('Nama pemesan tidak boleh kosong');
document.getElementById('pesan-bayar-tunai').disabled = false;
return false;
} else if (nomorMeja == '') {
alert('Nomor meja tidak boleh kosong');
document.getElementById('pesan-bayar-tunai').disabled = false;
return false;
}
var data = {
_token: "{{ csrf_token() }}",
orderCode: "{{ $orderCode }}",
orderMenus: orderMenus,
namaPemesan: namaPemesan,
nomorPemesan: nomorPemesan,
nomorMeja: nomorMeja,
keteranganPesanan: document.getElementsByName('keterangan-pesanan')[0].value,
diskon: diskon,
totalDiskon: totalDiskon,
nominalBayar: nominalBayar,
kembali: kembaliHidden,
jenis_pembayaran: jenis_pembayaran,
coa_kas: id_rekening_coa,
kode_coa: kode_coa,
keterangan_coa: keterangan_coa,
};
$.ajax({
url: "{{ route('transaksi.store') }}",
method: "POST",
data: data,
success: function(result) {
document.getElementById('pesan-bayar-tunai').disabled = false;
toastr.success(result.message, 'Success', {
timeOut: 2000
});
window.open(result.url, '_blank');
setTimeout(function() {
window.location.reload(1);
}, 1000);
},
error: function(xhr, status, error) {
document.getElementById('pesan-bayar-tunai').disabled = false;
toastr.error(xhr.responseJSON.message, 'Error', {
timeOut: 3000
});
}
});
})
$('#pesan-bayar-nontunai').on('click', function() {
$("#modal_nontunai").modal('show')
})
})
// pesan bayar
// document.getElementById('pesan-bayar').addEventListener('click', function() {
// document.getElementById('pesan-bayar').disabled = true;
// var table = document.getElementById("order-menus");
// var orderMenus = [];
// for (var i = 1, row; row = table.rows[i]; i++) {
// var id = row.getAttribute('data-id');
// var nama = row.getAttribute('data-nama');
// var qty = row.getAttribute('data-qty');
// var diskonSatuan = row.getAttribute('data-diskon-satuan');
// var harga = row.getAttribute('data-harga');
// var total = row.getAttribute('data-total');
// if (diskonSatuan != 0 && diskonSatuan != null && diskonSatuan != undefined) {
// total = total - (total * (diskonSatuan / 100));
// } else {
// total = total
// }
// if (id != null || qty != null || total != null) {
// orderMenus.push({
// id: id,
// nama: nama,
// qty: qty,
// diskonSatuan: diskonSatuan,
// harga: harga,
// total: total,
// keterangan: document.getElementsByName('keterangan_satuan')[i - 1].value
// });
// }
// }
// var diskon = document.getElementsByName('diskon')[0].value;
// var totalDiskon = document.getElementById('total-diskon-hidden').innerHTML;
// var bayar = document.getElementsByName('nominal-bayar')[0].value;
// var nominalBayar = bayar.replace(/[^,\d]/g, '').toString();
// var kembaliHidden = document.getElementById('kembali-hidden').innerHTML;
// var namaPemesan = document.getElementsByName('nama-pemesan')[0].value;
// var nomorPemesan = document.getElementsByName('nomor-pemesan')[0].value;
// var nomorMeja = document.getElementsByName('nomor-meja')[0].value;
// // console.log('orderMenus : ' + orderMenus + '\n' +
// // 'diskon : ' + diskon + '\n' +
// // 'totalDiskon : ' + totalDiskon + '\n' +
// // 'nominalBayar : ' + nominalBayar + '\n' +
// // 'kembaliHidden : ' + kembaliHidden + '\n' +
// // 'namaPemesan : ' + namaPemesan + '\n' +
// // 'nomorPemesan : ' + nomorPemesan + '\n' +
// // 'nomorMeja : ' + nomorMeja + '\n');
// if (orderMenus.length == 0) {
// alert('Menu tidak boleh kosong');
// document.getElementById('pesan-bayar').disabled = false;
// return false;
// }
// if (totalDiskon != 0) {
// if (nominalBayar == '' || nominalBayar == 0) {
// alert('Pembayaran tidak boleh kosong');
// document.getElementById('pesan-bayar').disabled = false;
// return false;
// }
// } else if (kembaliHidden < 0) {
// alert('Pembayaran kurang');
// document.getElementById('pesan-bayar').disabled = false;
// return false;
// } else if (namaPemesan == '') {
// alert('Nama pemesan tidak boleh kosong');
// document.getElementById('pesan-bayar').disabled = false;
// return false;
// } else if (nomorMeja == '') {
// alert('Nomor meja tidak boleh kosong');
// document.getElementById('pesan-bayar').disabled = false;
// return false;
// }
// var data = {
// _token: "{{ csrf_token() }}",
// orderCode: "{{ $orderCode }}",
// orderMenus: orderMenus,
// namaPemesan: namaPemesan,
// nomorPemesan: nomorPemesan,
// nomorMeja: nomorMeja,
// keteranganPesanan: document.getElementsByName('keterangan-pesanan')[0].value,
// diskon: diskon,
// totalDiskon: totalDiskon,
// nominalBayar: nominalBayar,
// kembali: kembaliHidden
// };
// // console.log(data);
// $.ajax({
// url: "{{ route('transaksi.store') }}",
// method: "POST",
// data: data,
// success: function(result) {
// document.getElementById('pesan-bayar').disabled = false;
// // console.log(result);
// // show toastr success
// toastr.success(result.message, 'Success', {
// timeOut: 2000
// });
// // opem mew page print
// window.open(result.url, '_blank');
// // // refresh page
// setTimeout(function() {
// window.location.reload(1);
// }, 1000);
// },
// error: function(xhr, status, error) {
// document.getElementById('pesan-bayar').disabled = false;
// toastr.error(xhr.responseJSON.message, 'Error', {
// timeOut: 3000
// });
// // console.log(xhr.responseJSON);
// // console.log(status);
// // console.log(error);
// }
// });
// });
// select paket
var selectedMenus = [];
var menu_terpilih = document.getElementById('menu-terpilih');
// pilih paket menu terlebih dahulu kemudian cocokkan dengan menu yang ada di menu terpilih jika ada maka tidak bisa memilih paket menu yang sama
function selectPaket(params) {
var isExist = false;
var index = 0;
for (var i = 0; i < selectedMenus.length; i++) {
// lakukan periksa kembali apabila menu dengan urutan yang sama sudah ada maka hapus menu tersebut dari array selectedMenus kecuali menu dengan urutan 5 boleh lebih dari 1
if (params.urutan == 5) {
if (selectedMenus[i].id == params.id) {
changeOrderedMenus(selectedMenus[i].id, 'pilih');
isExist = true;
index = i;
}
} else if (selectedMenus[i].urutan == params.urutan) {
changeOrderedMenus(selectedMenus[i].id, 'batal');
selectedMenus.splice(i, 1);
} else if (selectedMenus[i].id == params.id) {
changeOrderedMenus(selectedMenus[i].id, 'pilih');
isExist = true;
index = i;
}
}
if (isExist) {
selectedMenus.splice(index, 1);
document.getElementById('select-ordered-menus').classList.remove('disabled');
// document.getElementById('ordered-menus').setAttribute('onclick', 'orderedMenus()');
} else {
selectedMenus.push(params);
document.getElementById('select-ordered-menus').classList.remove('disabled');
// document.getElementById('ordered-menus').classList.add('disabled');
// document.getElementById('ordered-menus').setAttribute('onclick', '');
}
menu_terpilih.innerHTML = '';
for (var i = 0; i < selectedMenus.length; i++) {
changeOrderedMenus(selectedMenus[i].id, 'pilih');
menu_terpilih.innerHTML += `
<li>
${selectedMenus[i].nama_produk}
</li>
`;
}
if (selectedMenus.length == 0) {
menu_terpilih.innerHTML = `
<li>
Pilih Paket Menu Terlebih Dahulu
</li>
`;
}
}
// ordered menus change button text and onclick
function changeOrderedMenus(id, status) {
if (status == 'batal') {
var orderedMenus = document.getElementById('ordered-menus-' + id);
orderedMenus.innerHTML = 'Pilih Paket';
orderedMenus.classList.remove('btn-secondary');
orderedMenus.classList.add('btn-warning');
return false;
} else if (status == 'pilih') {
var orderedMenus = document.getElementById('ordered-menus-' + id);
orderedMenus.innerHTML = 'Batal Pilih';
orderedMenus.classList.remove('btn-warning');
orderedMenus.classList.add('btn-secondary');
return false;
}
}
// cari paket
function cariPaket(params) {
var show_modal_paket = document.getElementById('show-modal-paket');
show_modal_paket.innerHTML = ``;
// loop selectedMenus ambil kode produk
var kodeProduk = [];
if (selectedMenus.length == 0) {
alert('Pilih Paket Menu Terlebih Dahulu');
return false;
}
for (var i = 0; i < selectedMenus.length; i++) {
if (selectedMenus[i].urutan != 5) {
kodeProduk.push({
urutan: selectedMenus[i].urutan,
kode_produk: selectedMenus[i].kode_produk
});
}
}
var data = {
_token: "{{ csrf_token() }}",
kodeProduk: kodeProduk
};
$.ajax({
url: "{{ route('transaksi.cari-paket') }}",
method: "POST",
data: data,
success: function(result) {
var dataParse = JSON.stringify(result);
// Replace karakter kutipan ganda dengan HTML entities
var htmlEntitiesData = dataParse.replace(/\"/g, '&quot;');
// Tampilkan hasil
var show_modal_paket = document.getElementById('show-modal-paket');
show_modal_paket.innerHTML += `
<div class="card card-warning card-outline btn"
onclick="aadMenu(${htmlEntitiesData});clearSelected()">
<div class="card-header">
<h5 class="card-title m-0" id="nama-produk-modal">
${result.nama_produk ?? ''}
</h5>
</div>
<div class="card-body">
<div class="col-md-12">
<img style="width: 80%;height: 80%;object-fit: cover;"
src="${result.gambar_produk}"
alt="${result.nama_produk ?? ''}">
<div class="col-md-12 mt-1"
style="align-items: center;align-content: center;">
<h5>
Rp ${result.harga_produk ?? ''}
</h5>
</div>
<div class="col-md-12">
<a class="col-6 btn btn-warning" id="ordered-menus">Pesan</a>
</div>
</div>
</div>
</div>
`;
$('#modal-default').modal('show');
},
error: function(xhr, status, error) {
toastr.error(xhr.responseJSON.message, 'Error', {
timeOut: 3000
});
// console.log(xhr.responseJSON);
// console.log(status);
// console.log(error);
}
})
}
// clear selected menus
function clearSelected() {
// console.log(selectedMenus);
for (var i = 0; i < selectedMenus.length; i++) {
changeOrderedMenus(selectedMenus[i].id, 'batal');
menu_terpilih.innerHTML = ` `;
}
selectedMenus = [];
}
function changeTab(tabId) {
// Hide all tabs
var tabContents = document.getElementsByClassName('vert-tab-content');
for (var i = 0; i < tabContents.length; i++) {
tabContents[i].classList.remove('text-left', 'show', 'active');
}
var navLinks = document.getElementsByClassName('vert-nav-content');
for (var i = 0; i < navLinks.length; i++) {
navLinks[i].classList.remove('active');
// aria-selected
navLinks[i].setAttribute('aria-selected', false);
}
document.getElementById(tabId).classList.add('text-left', 'show', 'active');
document.getElementById(tabId + '-tab').classList.add('active');
// aria-selected
document.getElementById(tabId + '-tab').setAttribute('aria-selected', true);
}
function inputNum(inputElement) {
// Hapus karakter selain angka
inputElement.value = inputElement.value.replace(/[^0-9]/g, '');
if (inputElement.value == '') {
inputElement.value = 0;
}
}
</script>

View File

@ -0,0 +1,90 @@
<div class="modal fade" id="modal_bayar" data-backdrop="static" data-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Motode Bayar</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="col-md-12">
<div class="row">
<div class="col-md-12">
<input type="hidden" id="jenis_pembayaran">
<tr style="background-color: white">
<div class="row">
<div class="col-md-6">
<th colspan="4">
<button class="btn bg-maroon btn-block" style="height: 60px" id="pesan-bayar-tunai">Tunai</button>
</th>
</div>
<div class="col-6">
<th colspan="4">
<button class="btn bg-purple btn-block" style="height: 60px" id="pesan-bayar-nontunai">Non Tunai</button>
</th>
</div>
</div>
</tr>
</div>
{{-- <div class="col-md-12 mt-3">
<select class="form-control mt-2" id="rekening_coa_aba_penarikan" required>
<option selected value="">--Pilih Kas Tujuan--</option>
@foreach ($aba as $coaAba)
@if ($coaAba->status == 0)
<optgroup label="{{ $coaAba->coa }} | {{ $coaAba->keterangan_coa }}">
@else
<option value="{{ $coaAba->id }}|{{ $coaAba->coa }}|{{ $coaAba->keterangan_coa }}">{{ $coaAba->coa }} | {{ $coaAba->keterangan_coa }}</option>
@endif
@endforeach
</select>
</div> --}}
</div>
</div>
</div>
</div>
</div>
</div>
<div class="modal fade" id="modal_nontunai" data-backdrop="static" data-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Motode Bayar Non Tunai</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="col-md-12">
<div class="row">
<div class="col-md-12">
<select class="form-control mt-2" id="rekening_coa_aba_penarikan" required>
<option selected value="">--Pilih Rekening Tujuan--</option>
@foreach ($aba as $coaAba)
@if ($coaAba->status == 0)
<optgroup label="{{ $coaAba->coa }} | {{ $coaAba->keterangan_coa }}">
@else
<option value="{{ $coaAba->id }}|{{ $coaAba->coa }}|{{ $coaAba->keterangan_coa }}">{{ $coaAba->coa }} | {{ $coaAba->keterangan_coa }}</option>
@endif
@endforeach
</select>
</div>
<div class="col-md-12 mt-3">
<input type="hidden" id="jenis_pembayaran">
<tr style="background-color: white">
<div class="row">
<div class="col-12">
<th colspan="4">
<button class="btn bg-success btn-block" style="height: 60px" id="pembayaran-nontunai">Bayar</button>
</th>
</div>
</div>
</tr>
</div>
</div>
</div>
</div>
</div>
</div>
</div>

View File

@ -1,8 +1,8 @@
<div class="modal fade" id="modal_print_dapur" aria-labelledby="exampleModalLabel" >
<div class="modal-dialog modal-lg">
<div class="modal-dialog modal-xl">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Print Dapur</h5>
<h5 class="modal-title" id="exampleModalLabel">Print Dapur2</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>

View File

@ -510,6 +510,7 @@
<!-- /.modal-dialog -->
</div>
@include('pages.Kasir.modal_print_dapur')
@include('pages.Kasir.modal_bayar')
@endsection
@push('styles')
@ -520,814 +521,6 @@
<link rel="stylesheet" href="{{ asset('assets/datatables/datatables.min.css') }}">
@endpush
@push('scripts')
<!-- Toastr -->
<script src="{{ asset('assets/plugins/toastr/toastr.min.js') }}"></script>
<script>
$(document).ready(function() {
$('#print-dapur').on('click', function() {
$('#modal_print_dapur').modal('show')
})
})
</script>
<script>
$(document).ready(function() {
$('#refresh').on('click', function() {
location.reload()
})
})
</script>
<script src="{{ asset('assets/datatables/datatables.min.js') }}"></script>
<script>
$(document).ready(function() {
$('#tabelku').DataTable({
processing: true,
serverSide: true,
ajax: '{{ route('transaksi.getCetakTigaKali') }}',
columns: [{
data: 'nomor',
name: 'nomor',
orderable: false,
className: 'text-center'
},
{
data: 'kode_pesanan',
name: 'kode_pesanan'
},
{
data: 'nama_user',
name: 'nama_user'
},
{
data: 'created_at',
name: 'created_at',
className: 'text-center'
},
{
data: 'total_pesanan',
name: 'total_pesanan',
className: 'text-center'
},
{
data: 'diskon_persen',
name: 'diskon_persen',
className: 'text-center',
render: function(data) {
return data ?? 0;
}
},
{
data: 'grand_total',
name: 'grand_total'
},
{
data: 'ubah',
name: 'ubah',
className: 'text-center'
},
]
})
})
</script>
<script>
function printDapurTigaKali(id) {
var url = "{{ route('transaksi.printDapurTigaKali', '') }}/" + id + '?print=true'
window.open(url, '_blank');
location.reload(true);
}
@include('pages.Kasir.js')
function printDapurDuaKali(id) {
var url = "{{ route('transaksi.printDapurDuaKali', '') }}/" + id + '?print=true'
window.open(url, '_blank');
location.reload(true);
}
function printDapurSatuKali(id) {
var url = "{{ route('transaksi.printDapurSatuKali', '') }}/" + id + '?print=true'
window.open(url, '_blank');
location.reload(true);
}
</script>
<script>
// set interval waktu pesanan
function showTime() {
var date = new Date(),
utc = new Date(Date.UTC(
date.getFullYear(),
date.getMonth(),
date.getDate(),
date.getHours() - 7,
date.getMinutes(),
date.getSeconds()
));
// format datetime indonesia
var options = {
weekday: 'long',
year: 'numeric',
month: 'long',
day: 'numeric',
hour: 'numeric',
hour12: true,
minute: 'numeric',
second: 'numeric'
};
// tampilkan pada id datetime-order
document.getElementById('datetime-order').innerHTML = utc.toLocaleDateString("id-ID", options);
}
setInterval(showTime, 1000);
// make function add menu to table and calculate qty and total price menu ordered and check menu ordered is exist or not in tbody table order-menus insert this in
function aadMenu(params) {
// console.log(params);
var table = document.getElementById("order-menus");
var menu = params;
var menuId = menu.id;
var menuName = menu.nama_produk;
var menuPrice = menu.harga_produk;
var menuQty = 1;
var menuTotal = menuPrice * menuQty;
var isExist = false;
var index = 0;
for (var i = 1, row; row = table.rows[i]; i++) {
var id = row.getAttribute('data-id');
if (id == menuId) {
isExist = true;
index = i;
}
}
if (isExist) {
var qty = table.rows[index].getAttribute('data-qty');
var diskonSatuan = table.rows[index].getAttribute('data-diskon-satuan');
var total = table.rows[index].getAttribute('data-total');
qty = parseInt(qty) + 1;
var totalLama = parseInt(total) + parseInt(menuPrice);
diskonSatuan = parseInt(diskonSatuan);
total = (parseInt(total) + parseInt(menuPrice)) - ((parseInt(total) + parseInt(menuPrice)) * (diskonSatuan /
100));
table.rows[index].setAttribute('data-qty', qty);
table.rows[index].setAttribute('data-diskon-satuan', diskonSatuan);
table.rows[index].setAttribute('data-total', totalLama);
var harga = menuPrice;
table.rows[index].cells[0].innerHTML = `
<td>
${params.nama_produk}
<br>
${(diskonSatuan > 0) ? '<small class="text-primary"><s>Rp. ' + (harga * qty) + '</s></small> | <small class="text-danger">Rp. ' + total + '</small>' : '<small class="text-primary">Rp. ' + totalLama + '</small>'}
<div class="input-group input-group-sm mt-1">
<input type="text" name="keterangan_satuan" class="form-control rounded-0" placeholder="Keterangan..">
</div>
</td>
`;
table.rows[index].cells[1].innerHTML = `
<td class="text-center">
<div class="input-group input-group-sm">
<span class="input-group-append">
<button type="button" class="btn btn-default btn-xs btn-flat" onclick="decrementMenu(${params.id}, '${params.nama_produk}')"><b>-</b></button>
</span>
<input type="text" name="bayar" class="form-control rounded-0" readonly value="${qty}">
<span class="input-group-append">
<button type="button" class="btn btn-default btn-xs btn-flat" onclick="incrementMenu(${params.id}, '${params.nama_produk}')">+</button>
</span>
</div>
</td>
`;
table.rows[index].cells[2].innerHTML = `
<td class="text-center">
<div class="input-group input-group-sm">
<input type="number" name="diskon_satuan" oninput="inputNum(this)" class="form-control rounded-0" value="${diskonSatuan}" onkeyup="diskonSatuanMenu(${params.id}, '${params.nama_produk}', this.value)">
</div>
</td>
`;
table.rows[index].cells[3].innerHTML = `
<td class="text-center">
<button class="btn btn-danger btn-sm" onclick="deleteMenu(${params.id})">
<i class="fas fa-trash"></i>
</button>
</td>
`;
calculateTotal();
$('#modal-default').modal('hide');
} else {
$('#tbody-order-menus').append(`
<tr id="row-${params.id}" data-id="${params.id}" data-nama="${params.nama_produk}" data-harga="${params.harga_produk}" data-qty="1" data-diskon-satuan="0" data-total="${params.harga_produk}">
<td>
${params.nama_produk}
<br>
<small class="text-primary">Rp. ${params.harga_produk}</small>
<div class="input-group input-group-sm mt-1">
<input type="text" name="keterangan_satuan" class="form-control rounded-0" placeholder="Keterangan..">
</div>
</td>
<td class="text-center">
<div class="input-group input-group-sm">
<span class="input-group-append">
<button type="button" class="btn btn-default btn-xs btn-flat" onclick="decrementMenu(${params.id}, '${params.nama_produk}')"><b>-</b></button>
</span>
<input type="text" name="bayar" class="form-control rounded-0" readonly value="${menuQty}">
<span class="input-group-append">
<button type="button" class="btn btn-default btn-xs btn-flat" onclick="incrementMenu(${params.id}, '${params.nama_produk}')">+</button>
</span>
</div>
</td>
<td class="text-center">
<div class="input-group input-group-sm">
<input type="number" name="diskon_satuan" oninput="inputNum(this)" class="form-control rounded-0" value="0" onkeyup="diskonSatuanMenu(${params.id}, '${params.nama_produk}', this.value)">
</div>
</td>
<td class="text-center">
<button class="btn btn-danger btn-sm" onclick="deleteMenu(${params.id})">
<i class="fas fa-trash"></i>
</button>
</td>
</tr>
`);
calculateTotal();
$('#modal-default').modal('hide');
}
}
// delete menu from table and calculate qty and total price menu ordered
function deleteMenu(params) {
var table = document.getElementById("order-menus");
var index = 0;
for (var i = 1, row; row = table.rows[i]; i++) {
var id = row.getAttribute('data-id');
if (id == params) {
index = i;
}
}
table.deleteRow(index);
calculateTotal();
}
// calculate qty and total price menu ordered
function calculateTotal() {
var table = document.getElementById("order-menus");
var total = 0;
var diskon = document.getElementsByName('diskon')?.[0]?.value ?? 0;
var bayar = document.getElementsByName('bayar')?.[0]?.value ?? 0;
for (var i = 1, row; row = table.rows[i]; i++) {
var harga = row.getAttribute('data-harga');
var qty = row.getAttribute('data-qty');
var diskonSatuan = row.getAttribute('data-diskon-satuan');
var total = total + ((harga * qty) - ((harga * qty) * (diskonSatuan / 100)));
}
var ribuantotal = toRupiah(total);
document.getElementById('total').innerHTML = ribuantotal;
document.getElementById('total-hidden').innerHTML = total;
var totalDiskon = total - (total * (diskon / 100));
var ribuantotalDiskon = toRupiah(totalDiskon);
document.getElementById('total-diskon').innerHTML = ribuantotalDiskon;
document.getElementById('total-diskon-hidden').innerHTML = totalDiskon;
calculatekembali();
}
// increment qty menu ordered
function incrementMenu(params, nama_produk) {
var table = document.getElementById("order-menus");
var index = 0;
for (var i = 1, row; row = table.rows[i]; i++) {
var id = row.getAttribute('data-id');
if (id == params) {
index = i;
}
}
var qty = table.rows[index].getAttribute('data-qty');
var diskonSatuan = table.rows[index].getAttribute('data-diskon-satuan');
var total = table.rows[index].getAttribute('data-total');
var harga = table.rows[index].getAttribute('data-harga');
qty = parseInt(qty) + 1;
var totalLama = parseInt(total) + parseInt(harga);
diskonSatuan = parseInt(diskonSatuan);
total = (parseInt(total) + parseInt(harga)) - ((parseInt(total) + parseInt(harga)) * (diskonSatuan / 100));
table.rows[index].setAttribute('data-qty', qty);
table.rows[index].setAttribute('data-diskon-satuan', diskonSatuan);
table.rows[index].setAttribute('data-total', totalLama);
table.rows[index].cells[0].innerHTML = `
<td>
${nama_produk}
<br>
${(diskonSatuan > 0) ? '<small class="text-primary"><s>Rp. ' + (harga * qty) + '</s></small> | <small class="text-danger">Rp. ' + total + '</small>' : '<small class="text-primary">Rp. ' + totalLama + '</small>'}
<div class="input-group input-group-sm mt-1">
<input type="text" name="keterangan_satuan" class="form-control rounded-0" placeholder="Keterangan..">
</div>
</td>
`;
table.rows[index].cells[1].innerHTML = `
<td class="text-center">
<div class="input-group input-group-sm">
<span class="input-group-append">
<button type="button" class="btn btn-default btn-xs btn-flat" onclick="decrementMenu(${params}, '${nama_produk}')"><b>-</b></button>
</span>
<input type="text" name="bayar" class="form-control rounded-0" readonly value="${qty}">
<span class="input-group-append">
<button type="button" class="btn btn-default btn-xs btn-flat" onclick="incrementMenu(${params}, '${nama_produk}')">+</button>
</span>
</div>
</td>
`;
calculateTotal();
}
// decrement qty menu ordered
function decrementMenu(params, nama_produk) {
var table = document.getElementById("order-menus");
var index = 0;
for (var i = 1, row; row = table.rows[i]; i++) {
var id = row.getAttribute('data-id');
if (id == params) {
index = i;
}
}
var qty = table.rows[index].getAttribute('data-qty');
var diskonSatuan = table.rows[index].getAttribute('data-diskon-satuan');
var total = table.rows[index].getAttribute('data-total');
var harga = table.rows[index].getAttribute('data-harga');
if (qty > 1) {
qty = parseInt(qty) - 1;
var totalLama = parseInt(total) - parseInt(harga);
diskonSatuan = parseInt(diskonSatuan);
total = (parseInt(total) - parseInt(harga)) - ((parseInt(total) - parseInt(harga)) * (diskonSatuan / 100));
table.rows[index].setAttribute('data-qty', qty);
table.rows[index].setAttribute('data-diskon-satuan', diskonSatuan);
table.rows[index].setAttribute('data-total', totalLama);
table.rows[index].cells[0].innerHTML = `
<td>
${nama_produk}
<br>
${(diskonSatuan > 0) ? '<small class="text-primary"><s>Rp. ' + (harga * qty) + '</s></small> | <small class="text-danger">Rp. ' + total + '</small>' : '<small class="text-primary">Rp. ' + totalLama + '</small>'}
<div class="input-group input-group-sm mt-1">
<input type="text" name="keterangan_satuan" class="form-control rounded-0" placeholder="Keterangan..">
</div>
</td>
`;
table.rows[index].cells[1].innerHTML = `
<td class="text-center">
<div class="input-group input-group-sm">
<span class="input-group-append">
<button type="button" class="btn btn-default btn-xs btn-flat" onclick="decrementMenu(${params}, '${nama_produk}')"><b>-</b></button>
</span>
<input type="text" name="bayar" class="form-control rounded-0" readonly value="${qty}">
<span class="input-group-append">
<button type="button" class="btn btn-default btn-xs btn-flat" onclick="incrementMenu(${params}, '${nama_produk}')">+</button>
</span>
</div>
</td>
`;
calculateTotal();
}
}
// diskon satuan menu ordered
function diskonSatuanMenu(params, nama_produk, diskon = 0) {
var table = document.getElementById("order-menus");
var index = 0;
for (var i = 1, row; row = table.rows[i]; i++) {
var id = row.getAttribute('data-id');
if (id == params) {
index = i;
}
}
var qty = table.rows[index].getAttribute('data-qty');
var diskonSatuan = parseInt(diskon);
var total = table.rows[index].getAttribute('data-total');
var harga = table.rows[index].getAttribute('data-harga');
// if (diskonSatuan >= 1) {
// console.log(diskonSatuan);
var totalLama = total;
qty = parseInt(qty);
diskonSatuan = parseInt(diskonSatuan);
total = (parseInt(total)) - ((parseInt(total)) * (diskonSatuan / 100));
table.rows[index].setAttribute('data-qty', qty);
table.rows[index].setAttribute('data-diskon-satuan', diskonSatuan);
table.rows[index].setAttribute('data-total', totalLama);
table.rows[index].cells[0].innerHTML = `
<td>
${nama_produk}
<br>
${(diskonSatuan >= 1) ? '<small class="text-primary"><s>Rp. ' + (harga * qty) + '</s></small> | <small class="text-danger">Rp. ' + total + '</small>' : '<small class="text-primary">Rp. ' + totalLama + '</small>'}
<div class="input-group input-group-sm mt-1">
<input type="text" name="keterangan_satuan" class="form-control rounded-0" placeholder="Keterangan..">
</div>
</td>
`;
calculateTotal();
// }
}
// diskon use keyup
document.getElementsByName('diskon')[0].addEventListener('keyup', function() {
var diskon = document.getElementsByName('diskon')[0].value;
var total = document.getElementById('total-hidden').innerHTML;
var totalDiskon = total - (total * (diskon / 100));
var ribuan = toRupiah(totalDiskon);
document.getElementById('total-diskon-hidden').innerHTML = totalDiskon;
document.getElementById('total-diskon').innerHTML = ribuan;
calculatekembali();
});
/* Dengan Rupiah */
var dengan_rupiah = document.getElementById('nominal-bayar');
dengan_rupiah.addEventListener('keyup', function(e) {
dengan_rupiah.value = formatRupiah(this.value, 'Rp. ');
});
/* Fungsi */
function formatRupiah(angka, prefix) {
var number_string = angka.replace(/[^,\d]/g, '').toString(),
split = number_string.split(','),
sisa = split[0].length % 3,
rupiah = split[0].substr(0, sisa),
ribuan = split[0].substr(sisa).match(/\d{3}/gi);
if (ribuan) {
separator = sisa ? '.' : '';
rupiah += separator + ribuan.join('.');
}
rupiah = split[1] != undefined ? rupiah + ',' + split[1] : rupiah;
return prefix == undefined ? rupiah : (rupiah ? 'Rp. ' + rupiah : '');
}
// bayar use keyup
document.getElementsByName('nominal-bayar')[0].addEventListener('keyup', function() {
calculatekembali();
});
function calculatekembali() {
var bayar = document.getElementsByName('nominal-bayar')[0].value;
var nonimalBayar = bayar.replace(/[^,\d]/g, '').toString();
var totalDiskon = document.getElementById('total-diskon-hidden').innerHTML;
var kembali = nonimalBayar - totalDiskon;
document.getElementById('kembali-hidden').innerHTML = kembali;
var ribuan = toRupiah(kembali);
if (totalDiskon == 0 || bayar == 0) {
ribuan = 0;
var bayar = document.getElementsByName('nominal-bayar')[0].value = '';
}
document.getElementById('kembali').innerHTML = ribuan;
}
// format rupiah with minus
function toRupiah(angka) {
var rupiah = '';
var angkarev = angka.toString().split('').reverse().join('');
for (var i = 0; i < angkarev.length; i++)
if (i % 3 == 0) rupiah += angkarev.substr(i, 3) + '.';
return rupiah.split('', rupiah.length - 1).reverse().join('');
}
// pesan bayar
document.getElementById('pesan-bayar').addEventListener('click', function() {
document.getElementById('pesan-bayar').disabled = true;
var table = document.getElementById("order-menus");
var orderMenus = [];
for (var i = 1, row; row = table.rows[i]; i++) {
var id = row.getAttribute('data-id');
var nama = row.getAttribute('data-nama');
var qty = row.getAttribute('data-qty');
var diskonSatuan = row.getAttribute('data-diskon-satuan');
var harga = row.getAttribute('data-harga');
var total = row.getAttribute('data-total');
if (diskonSatuan != 0 && diskonSatuan != null && diskonSatuan != undefined) {
total = total - (total * (diskonSatuan / 100));
} else {
total = total
}
if (id != null || qty != null || total != null) {
orderMenus.push({
id: id,
nama: nama,
qty: qty,
diskonSatuan: diskonSatuan,
harga: harga,
total: total,
keterangan: document.getElementsByName('keterangan_satuan')[i - 1].value
});
}
}
var diskon = document.getElementsByName('diskon')[0].value;
var totalDiskon = document.getElementById('total-diskon-hidden').innerHTML;
var bayar = document.getElementsByName('nominal-bayar')[0].value;
var nominalBayar = bayar.replace(/[^,\d]/g, '').toString();
var kembaliHidden = document.getElementById('kembali-hidden').innerHTML;
var namaPemesan = document.getElementsByName('nama-pemesan')[0].value;
var nomorPemesan = document.getElementsByName('nomor-pemesan')[0].value;
var nomorMeja = document.getElementsByName('nomor-meja')[0].value;
// console.log('orderMenus : ' + orderMenus + '\n' +
// 'diskon : ' + diskon + '\n' +
// 'totalDiskon : ' + totalDiskon + '\n' +
// 'nominalBayar : ' + nominalBayar + '\n' +
// 'kembaliHidden : ' + kembaliHidden + '\n' +
// 'namaPemesan : ' + namaPemesan + '\n' +
// 'nomorPemesan : ' + nomorPemesan + '\n' +
// 'nomorMeja : ' + nomorMeja + '\n');
if (orderMenus.length == 0) {
alert('Menu tidak boleh kosong');
document.getElementById('pesan-bayar').disabled = false;
return false;
}
if (totalDiskon != 0) {
if (nominalBayar == '' || nominalBayar == 0) {
alert('Pembayaran tidak boleh kosong');
document.getElementById('pesan-bayar').disabled = false;
return false;
}
} else if (kembaliHidden < 0) {
alert('Pembayaran kurang');
document.getElementById('pesan-bayar').disabled = false;
return false;
} else if (namaPemesan == '') {
alert('Nama pemesan tidak boleh kosong');
document.getElementById('pesan-bayar').disabled = false;
return false;
} else if (nomorMeja == '') {
alert('Nomor meja tidak boleh kosong');
document.getElementById('pesan-bayar').disabled = false;
return false;
}
var data = {
_token: "{{ csrf_token() }}",
orderCode: "{{ $orderCode }}",
orderMenus: orderMenus,
namaPemesan: namaPemesan,
nomorPemesan: nomorPemesan,
nomorMeja: nomorMeja,
keteranganPesanan: document.getElementsByName('keterangan-pesanan')[0].value,
diskon: diskon,
totalDiskon: totalDiskon,
nominalBayar: nominalBayar,
kembali: kembaliHidden
};
// console.log(data);
$.ajax({
url: "{{ route('transaksi.store') }}",
method: "POST",
data: data,
success: function(result) {
document.getElementById('pesan-bayar').disabled = false;
// console.log(result);
// show toastr success
toastr.success(result.message, 'Success', {
timeOut: 2000
});
// opem mew page print
window.open(result.url, '_blank');
// // refresh page
setTimeout(function() {
window.location.reload(1);
}, 1000);
},
error: function(xhr, status, error) {
document.getElementById('pesan-bayar').disabled = false;
toastr.error(xhr.responseJSON.message, 'Error', {
timeOut: 3000
});
// console.log(xhr.responseJSON);
// console.log(status);
// console.log(error);
}
});
});
// select paket
var selectedMenus = [];
var menu_terpilih = document.getElementById('menu-terpilih');
// pilih paket menu terlebih dahulu kemudian cocokkan dengan menu yang ada di menu terpilih jika ada maka tidak bisa memilih paket menu yang sama
function selectPaket(params) {
var isExist = false;
var index = 0;
for (var i = 0; i < selectedMenus.length; i++) {
// lakukan periksa kembali apabila menu dengan urutan yang sama sudah ada maka hapus menu tersebut dari array selectedMenus kecuali menu dengan urutan 5 boleh lebih dari 1
if (params.urutan == 5) {
if (selectedMenus[i].id == params.id) {
changeOrderedMenus(selectedMenus[i].id, 'pilih');
isExist = true;
index = i;
}
} else if (selectedMenus[i].urutan == params.urutan) {
changeOrderedMenus(selectedMenus[i].id, 'batal');
selectedMenus.splice(i, 1);
} else if (selectedMenus[i].id == params.id) {
changeOrderedMenus(selectedMenus[i].id, 'pilih');
isExist = true;
index = i;
}
}
if (isExist) {
selectedMenus.splice(index, 1);
document.getElementById('select-ordered-menus').classList.remove('disabled');
// document.getElementById('ordered-menus').setAttribute('onclick', 'orderedMenus()');
} else {
selectedMenus.push(params);
document.getElementById('select-ordered-menus').classList.remove('disabled');
// document.getElementById('ordered-menus').classList.add('disabled');
// document.getElementById('ordered-menus').setAttribute('onclick', '');
}
menu_terpilih.innerHTML = '';
for (var i = 0; i < selectedMenus.length; i++) {
changeOrderedMenus(selectedMenus[i].id, 'pilih');
menu_terpilih.innerHTML += `
<li>
${selectedMenus[i].nama_produk}
</li>
`;
}
if (selectedMenus.length == 0) {
menu_terpilih.innerHTML = `
<li>
Pilih Paket Menu Terlebih Dahulu
</li>
`;
}
}
// ordered menus change button text and onclick
function changeOrderedMenus(id, status) {
if (status == 'batal') {
var orderedMenus = document.getElementById('ordered-menus-' + id);
orderedMenus.innerHTML = 'Pilih Paket';
orderedMenus.classList.remove('btn-secondary');
orderedMenus.classList.add('btn-warning');
return false;
} else if (status == 'pilih') {
var orderedMenus = document.getElementById('ordered-menus-' + id);
orderedMenus.innerHTML = 'Batal Pilih';
orderedMenus.classList.remove('btn-warning');
orderedMenus.classList.add('btn-secondary');
return false;
}
}
// cari paket
function cariPaket(params) {
var show_modal_paket = document.getElementById('show-modal-paket');
show_modal_paket.innerHTML = ``;
// loop selectedMenus ambil kode produk
var kodeProduk = [];
if (selectedMenus.length == 0) {
alert('Pilih Paket Menu Terlebih Dahulu');
return false;
}
for (var i = 0; i < selectedMenus.length; i++) {
if (selectedMenus[i].urutan != 5) {
kodeProduk.push({
urutan: selectedMenus[i].urutan,
kode_produk: selectedMenus[i].kode_produk
});
}
}
var data = {
_token: "{{ csrf_token() }}",
kodeProduk: kodeProduk
};
$.ajax({
url: "{{ route('transaksi.cari-paket') }}",
method: "POST",
data: data,
success: function(result) {
var dataParse = JSON.stringify(result);
// Replace karakter kutipan ganda dengan HTML entities
var htmlEntitiesData = dataParse.replace(/\"/g, '&quot;');
// Tampilkan hasil
var show_modal_paket = document.getElementById('show-modal-paket');
show_modal_paket.innerHTML += `
<div class="card card-warning card-outline btn"
onclick="aadMenu(${htmlEntitiesData});clearSelected()">
<div class="card-header">
<h5 class="card-title m-0" id="nama-produk-modal">
${result.nama_produk ?? ''}
</h5>
</div>
<div class="card-body">
<div class="col-md-12">
<img style="width: 80%;height: 80%;object-fit: cover;"
src="${result.gambar_produk}"
alt="${result.nama_produk ?? ''}">
<div class="col-md-12 mt-1"
style="align-items: center;align-content: center;">
<h5>
Rp ${result.harga_produk ?? ''}
</h5>
</div>
<div class="col-md-12">
<a class="col-6 btn btn-warning" id="ordered-menus">Pesan</a>
</div>
</div>
</div>
</div>
`;
$('#modal-default').modal('show');
},
error: function(xhr, status, error) {
toastr.error(xhr.responseJSON.message, 'Error', {
timeOut: 3000
});
// console.log(xhr.responseJSON);
// console.log(status);
// console.log(error);
}
})
}
// clear selected menus
function clearSelected() {
// console.log(selectedMenus);
for (var i = 0; i < selectedMenus.length; i++) {
changeOrderedMenus(selectedMenus[i].id, 'batal');
menu_terpilih.innerHTML = ` `;
}
selectedMenus = [];
}
function changeTab(tabId) {
// Hide all tabs
var tabContents = document.getElementsByClassName('vert-tab-content');
for (var i = 0; i < tabContents.length; i++) {
tabContents[i].classList.remove('text-left', 'show', 'active');
}
var navLinks = document.getElementsByClassName('vert-nav-content');
for (var i = 0; i < navLinks.length; i++) {
navLinks[i].classList.remove('active');
// aria-selected
navLinks[i].setAttribute('aria-selected', false);
}
document.getElementById(tabId).classList.add('text-left', 'show', 'active');
document.getElementById(tabId + '-tab').classList.add('active');
// aria-selected
document.getElementById(tabId + '-tab').setAttribute('aria-selected', true);
}
function inputNum(inputElement) {
// Hapus karakter selain angka
inputElement.value = inputElement.value.replace(/[^0-9]/g, '');
if (inputElement.value == '') {
inputElement.value = 0;
}
}
</script>
</script>
@endpush