remake transaksi tunai
parent
b7c408ee0a
commit
61766d325d
|
@ -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'];
|
||||
|
|
|
@ -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 = [];
|
||||
}
|
|
@ -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');
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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');
|
||||
}
|
||||
}
|
|
@ -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');
|
||||
}
|
||||
};
|
|
@ -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');
|
||||
}
|
||||
};
|
|
@ -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');
|
||||
});
|
||||
}
|
||||
};
|
|
@ -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');
|
||||
});
|
||||
}
|
||||
};
|
|
@ -19,6 +19,7 @@ class DatabaseSeeder extends Seeder
|
|||
ProdukSeeder::class,
|
||||
KelompokKategoriPivotSeeder::class,
|
||||
UserSeeder::class,
|
||||
RekeningCoaSeeder::class
|
||||
];
|
||||
|
||||
foreach ($classes as $class) {
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
|
@ -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
|
|
|
@ -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, '"');
|
||||
// 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>
|
|
@ -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">×</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">×</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>
|
|
@ -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">×</span>
|
||||
</button>
|
||||
|
|
|
@ -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, '"');
|
||||
// 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
|
||||
|
|
Loading…
Reference in New Issue