2151 lines
		
	
	
		
			132 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			2151 lines
		
	
	
		
			132 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
| @extends('app.app')
 | |
| @section('title')
 | |
|     Finance - Payment
 | |
| @endsection
 | |
| 
 | |
| @section('customcss')
 | |
|     <style>
 | |
|         .tepiBottom {
 | |
|             border-bottom: 1.5px groove #000;
 | |
|             padding-bottom: 15px;
 | |
|         }
 | |
|     </style>
 | |
| @endsection
 | |
| 
 | |
| @section('content')
 | |
|     <div class="container-fluid">
 | |
|         <div class="content">
 | |
|             <div class="row">
 | |
|                 <div class="col-sm-6" id="">
 | |
|                     <div class="card">
 | |
|                         <div class="card-header">
 | |
|                             <div class="row d-flex align-items-center">
 | |
|                                 <div class="col">
 | |
|                                     <p class="card-title text-bold mb-0">Detail Pesanan (#{{ $order->ord_code }})</p>
 | |
|                                     @if ($order->crt_type_order === \App\Models\Orders::CRT_TYPE_ORDER_ADMIN_SPECIAL)
 | |
|                                         <span class="badge bg-warning text-dark">Pesanan Khusus</span>
 | |
|                                     @endif
 | |
|                                 </div>
 | |
|                                 <div class="col text-end">
 | |
|                                     <button class="btn btn-secondary btn-sm" onclick="location.href='{{ route('view_keuangan_billing') }}'">Kembali</button>
 | |
|                                 </div>
 | |
|                             </div>
 | |
|                         </div>
 | |
|                         <div class="card-body">
 | |
|                             <div class="row d-flex">
 | |
|                                 <div class="col-5 mb-3">
 | |
|                                     <div class="row">
 | |
|                                         <div class="col-sm-12 mb-3">
 | |
|                                             <p class="text-danger text-bold mb-0">Penjemputan dan Pengantaran</p>
 | |
|                                         </div>
 | |
|                                         <div class="col-sm-12 mb-3">
 | |
|                                             <label for="" class="form-label">Tanggal Penjemputan</label>
 | |
|                                             <div class="card bg-light border mb-0">
 | |
|                                                 <div class="card-body">
 | |
|                                                     <p class="mb-0"><span id="view-pickup_date_at">22 Apr 2022</span></p>
 | |
|                                                 </div>
 | |
|                                             </div>
 | |
|                                         </div>
 | |
|                                         <div class="col-sm-12 mb-3">
 | |
|                                             <label for="" class="form-label">Waktu Penjemputan</label>
 | |
|                                             <div class="card bg-light border mb-0">
 | |
|                                                 <div class="card-body">
 | |
|                                                     <p class="mb-0"><span id="view-pickup_time_at">19.20</span></p>
 | |
|                                                 </div>
 | |
|                                             </div>
 | |
|                                         </div>
 | |
|                                     </div>
 | |
|                                 </div>
 | |
|                                 <div class="col-sm-2"></div>
 | |
|                                 <div class="col-sm-5 mb-3">
 | |
|                                     <div class="row">
 | |
|                                         <div class="col-sm-12 col-12 mb-3">
 | |
|                                             <p class="text-danger text-bold mb-0">Layanan Yang Dipilih</p>
 | |
|                                         </div>
 | |
|                                         <div class="col-sm-12 col-6 mb-3">
 | |
|                                             <label for="" class="form-label">Durasi Pengantaran & Harga</label>
 | |
|                                             <div class="card bg-light border mb-0 w-100">
 | |
|                                                 <div class="card-body d-flex justify-content-between">
 | |
|                                                     <p class="mb-0">{{ $order->lead_time }} Hari</p>
 | |
|                                                     <p class="mb-0">
 | |
|                                                         Rp{{ number_format($order->price, 0, ',', '.') }}
 | |
|                                                     </p>
 | |
|                                                 </div>
 | |
|                                             </div>
 | |
|                                         </div>
 | |
|                                         <div class="col-sm-12 col-6 mb-3">
 | |
|                                             <label for="" class="form-label">Tipe Kendaraan</label>
 | |
|                                             <div class="card bg-light border mb-0 w-100">
 | |
|                                                 <div class="card-body d-flex justify-content-between">
 | |
|                                                     {{-- <p class="mb-0">{{ $order->prefer_truck_type_name }}</p> --}}
 | |
|                                                     <p class="mb-0">{{ $order->vhc_type_name }}</p>
 | |
|                                                 </div>
 | |
|                                             </div>
 | |
|                                         </div>
 | |
|                                     </div>
 | |
|                                 </div>
 | |
|                             </div>
 | |
|                             <div class="row mb-3 d-flex align-items-center">
 | |
|                                 <div class="col-5 mb-3">
 | |
|                                     <label for="" class="form-label">Lokasi Penjemputan</label>
 | |
|                                     <div class="card bg-light border mb-0">
 | |
|                                         <div class="card-body">
 | |
|                                             {{-- <p class="text-bold mb-2">Gudang Pluit SiCepat (Jakarta)</p> --}}
 | |
|                                             <p class="text-bold mb-2">{{ $order->pck_name }}</p>
 | |
|                                             {{-- <p class="mb-0">Jl. Pluit Karang Karya 2 No.33, RT.7/RW.16, Pejagalan, Kec. Penjaringan, Kota Jkt Utara, Daerah Khusus Ibukota Jakarta 14440</p> --}}
 | |
|                                             <p class="mb-0">{{ $order->pck_addr }}</p>
 | |
|                                         </div>
 | |
|                                     </div>
 | |
|                                 </div>
 | |
|                                 <div class="col-2 text-center">
 | |
|                                     <label for="" class="form-label mb-0 mt-0"> </label>
 | |
|                                     {{-- <p class="mb-0">to</p> --}}
 | |
|                                     <span class="ion-arrow-right-c text-danger" style="font-size: 15px"></span>
 | |
|                                 </div>
 | |
|                                 <div class="col-5 mb-3">
 | |
|                                     <label for="" class="form-label">Lokasi Pengantaran</label>
 | |
|                                     <div class="card bg-light border mb-0">
 | |
|                                         <div class="card-body">
 | |
|                                             {{-- <p class="text-bold mb-2">Kantor Pusat SiCepat (yogyakarta)</p> --}}
 | |
|                                             <p class="text-bold mb-2">{{ $order->drop_name }}</p>
 | |
|                                             {{-- <p class="mb-0">Jl. Prof. Herman Yohanes No.989, Terban, Gondokusuman, Kota Yogyakarta, Daerah Istimewa Yogyakarta 55223, Indonesia</p> --}}
 | |
|                                             <p class="mb-0">{{ $order->drop_addr }}</p>
 | |
|                                         </div>
 | |
|                                     </div>
 | |
|                                 </div>
 | |
|                             </div>
 | |
|                             @foreach ($adtPoints as $i => $p)
 | |
|                                 <div class="row d-flex align-items-center">
 | |
|                                     <div class="col-12 mb-3">
 | |
|                                         <p class="text-danger text-bold mb-0">Infomasi Penjemputan dan Pengantaran Lainnya ({{ $i + 2 }})</p>
 | |
|                                     </div>
 | |
|                                     <div class="col-5 mb-3">
 | |
|                                         <div class="row">
 | |
|                                             <div class="col-12 mb-3">
 | |
|                                                 <label for="" class="form-label">Tanggal Penjemputan</label>
 | |
|                                                 <div class="card bg-light border mb-0">
 | |
|                                                     <div class="card-body">
 | |
|                                                         <p class="mb-0"><span id="view-pickup_date_at{{ $i + 1 }}"></span></p>
 | |
|                                                     </div>
 | |
|                                                 </div>
 | |
|                                             </div>
 | |
|                                             <div class="col-12">
 | |
|                                                 <label for="" class="form-label">Waktu Penjemputan</label>
 | |
|                                                 <div class="card bg-light border mb-0">
 | |
|                                                     <div class="card-body">
 | |
|                                                         <p class="mb-0"><span id="view-pickup_time_at{{ $i + 1 }}"></span></p>
 | |
|                                                     </div>
 | |
|                                                 </div>
 | |
|                                             </div>
 | |
|                                         </div>
 | |
|                                     </div>
 | |
|                                 </div>
 | |
|                                 <div class="row mb-3 d-flex align-items-center">
 | |
|                                     <div class="col-5 mb-3">
 | |
|                                         <label for="" class="form-label">Lokasi Penjemputan</label>
 | |
|                                         <div class="card bg-light border mb-0">
 | |
|                                             <div class="card-body">
 | |
|                                                 <p class="text-bold mb-2">{{ $p->pck_name }}</p>
 | |
|                                                 <p class="mb-0">{{ $p->pck_addr }}</p>
 | |
|                                             </div>
 | |
|                                         </div>
 | |
|                                     </div>
 | |
|                                     <div class="col-2 text-center">
 | |
|                                         <label for="" class="form-label mb-0 mt-0"> </label>
 | |
|                                         {{-- <p class="mb-0">to</p> --}}
 | |
|                                         <span class="ion-arrow-right-c text-danger" style="font-size: 15px"></span>
 | |
|                                     </div>
 | |
|                                     <div class="col-5 mb-3">
 | |
|                                         <label for="" class="form-label">Lokasi Pengantaran</label>
 | |
|                                         <div class="card bg-light border mb-0">
 | |
|                                             <div class="card-body">
 | |
|                                                 <p class="text-bold mb-2">{{ $p->drop_name }}</p>
 | |
|                                                 <p class="mb-0">{{ $p->drop_addr }}</p>
 | |
|                                             </div>
 | |
|                                         </div>
 | |
|                                     </div>
 | |
|                                 </div>
 | |
|                             @endforeach
 | |
|                             <div class="row">
 | |
|                                 <div class="col-sm-5">
 | |
|                                     <div class="row d-flex align-items-center mb-3">
 | |
|                                         <div class="col-12 mb-3">
 | |
|                                             <p class="text-danger text-bold mb-0">Infomasi Client</p>
 | |
|                                         </div>
 | |
|                                         <div class="col-sm-12 mb-3">
 | |
|                                             <label for="" class="form-label">Nama Client</label>
 | |
|                                             <div class="card bg-light border mb-0">
 | |
|                                                 <div class="card-body">
 | |
|                                                     <p class="mb-0">{{ $order->c_pt_name }}</p>
 | |
|                                                 </div>
 | |
|                                             </div>
 | |
|                                         </div>
 | |
|                                         <div class="col-sm-12">
 | |
|                                             <label for="" class="form-label">PIC</label>
 | |
|                                             <div class="card bg-light border mb-0">
 | |
|                                                 <div class="card-body">
 | |
|                                                     <p class="mb-0">{{ $order->c_pt_pic_name }}</p>
 | |
|                                                     <p class="mb-0">
 | |
|                                                         <a href="tel:0{{ $order->c_pt_pic_phone_val }}">
 | |
|                                                             <i class="text-dark ion-ios-telephone me-2"></i>
 | |
|                                                             {{ implode(' ', str_split('0' . $order->c_pt_pic_phone_val, 4)) }}
 | |
|                                                         </a>
 | |
|                                                     </p>
 | |
|                                                     <p class="mb-0">
 | |
|                                                         <a href="https://api.whatsapp.com/send/?phone=0{{ $order->c_pt_pic_phone_val }}&text=Halo&app_absent=0" class="" target="_blank"><i class="text-success ion-social-whatsapp me-1"></i>
 | |
|                                                             {{ implode(' ', str_split('0' . $order->c_pt_pic_phone_val, 4)) }}
 | |
|                                                         </a>
 | |
|                                                     </p>
 | |
|                                                 </div>
 | |
|                                             </div>
 | |
|                                         </div>
 | |
|                                     </div>
 | |
|                                 </div>
 | |
|                             </div>
 | |
|                         </div>
 | |
|                         <div class="card-footer text-end">
 | |
|                             <button type="button" id="btnChangePICInvoice" class="btn btn-primary btn-sm">Ganti PIC Invoice</button>
 | |
|                         </div>
 | |
|                     </div>
 | |
|                 </div>
 | |
|                 {{-- berkas driver --}}
 | |
|                 <div class="col-sm-6">
 | |
|                     @if (count($drvs_ups) > 0)
 | |
|                         <div class="accordion mb-3">
 | |
|                             <div class="accordion-item border-0 radius-8">
 | |
|                                 <h2 class="accordion-header" id="panelsStayOpen-headingFive">
 | |
|                                     <button class="accordion-button radius-8 collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#panelsStayOpen-collapseFive" aria-expanded="false" aria-controls="panelsStayOpen-collapseFive">
 | |
|                                         Berkas Driver
 | |
|                                     </button>
 | |
|                                 </h2>
 | |
|                                 <div id="panelsStayOpen-collapseFive" class="accordion-collapse collapse" aria-labelledby="panelsStayOpen-headingFive">
 | |
|                                     <div class="accordion-body pb-0">
 | |
|                                         <div class="row">
 | |
|                                             @php
 | |
|                                                 $afterTravelDoc = 0;
 | |
|                                             @endphp
 | |
|                                             @foreach ($drvs_ups as $i => $drvUp)
 | |
|                                                 @if ($drvUp->stts === \App\Models\OrdersDriversUploads::STTS_UP_ARRIVED_PICKUP)
 | |
|                                                     <div class="col-12 mb-3 tepiBottom">
 | |
|                                                         <div class="d-flex justify-content-between">
 | |
|                                                             <div><label for="" class="form-label fw-bold">Foto Sampai dilokasi Pickup</label></div>
 | |
|                                                             <div><label for="" class="form-label fw-bold foto-crt" data-crt="{{ $drvUp->crt }}"></label></div>
 | |
|                                                         </div>
 | |
|                                                         <div class="card bg-light border mb-0">
 | |
|                                                             <div class="card-body p-0">
 | |
|                                                                 <img src="{{ isset($drvUp->img) ? \App\Helper::changeIpToDomain($drvUp->img) : 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQDVPuMlKfGrFErmCt6hCuECLbbhekJF-GCtAJvPIZpHX5upTT-hABFlp8qZY8rkgaZ0DE&usqp=CAU' }}" alt="" class="img-fluid img-report">
 | |
|                                                             </div>
 | |
|                                                         </div>
 | |
|                                                     </div>
 | |
|                                                 @elseif ($drvUp->stts === \App\Models\OrdersDriversUploads::STTS_UP_PROCESS_PICKUP)
 | |
|                                                     <div class="col-12 mb-3 tepiBottom">
 | |
|                                                         <div class="d-flex justify-content-between">
 | |
|                                                             <div><label for="" class="form-label fw-bold">Foto Mulai Memuat Barang</label></div>
 | |
|                                                             <div><label for="" class="form-label fw-bold foto-crt" data-crt="{{ $drvUp->crt }}"></label></div>
 | |
|                                                         </div>
 | |
|                                                         <div class="card bg-light border mb-0">
 | |
|                                                             <div class="card-body p-0">
 | |
|                                                                 <img src="{{ isset($drvUp->img) ? \App\Helper::changeIpToDomain($drvUp->img) : 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQDVPuMlKfGrFErmCt6hCuECLbbhekJF-GCtAJvPIZpHX5upTT-hABFlp8qZY8rkgaZ0DE&usqp=CAU' }}" alt="" class="img-fluid img-report">
 | |
|                                                             </div>
 | |
|                                                         </div>
 | |
|                                                     </div>
 | |
|                                                 @elseif ($drvUp->stts === \App\Models\OrdersDriversUploads::STTS_UP_FINISH_PICKUP)
 | |
|                                                     <div class="col-12 mb-3 tepiBottom">
 | |
|                                                         <div class="d-flex justify-content-between">
 | |
|                                                             <div><label for="" class="form-label fw-bold">Foto Selesai Memuat</label></div>
 | |
|                                                             <div><label for="" class="form-label fw-bold foto-crt" data-crt="{{ $drvUp->crt }}"></label></div>
 | |
|                                                         </div>
 | |
|                                                         <div class="card bg-light border mb-0">
 | |
|                                                             <div class="card-body p-0">
 | |
|                                                                 <img src="{{ isset($drvUp->img) ? \App\Helper::changeIpToDomain($drvUp->img) : 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQDVPuMlKfGrFErmCt6hCuECLbbhekJF-GCtAJvPIZpHX5upTT-hABFlp8qZY8rkgaZ0DE&usqp=CAU' }}" alt="" class="img-fluid img-report">
 | |
|                                                             </div>
 | |
|                                                         </div>
 | |
|                                                     </div>
 | |
|                                                 @elseif ($drvUp->stts === \App\Models\OrdersDriversUploads::STTS_UP_TRAVEL_DOCUMENT)
 | |
|                                                     @php
 | |
|                                                         $afterTravelDoc = 1;
 | |
|                                                     @endphp
 | |
|                                                     <div class="col-12 mb-3 tepiBottom">
 | |
|                                                         <div class="d-flex justify-content-between">
 | |
|                                                             <div><label for="" class="form-label fw-bold">Foto Dokumen Perjalanan</label></div>
 | |
|                                                             <div><label for="" class="form-label fw-bold foto-crt" data-crt="{{ $drvUp->crt }}"></label></div>
 | |
|                                                         </div>
 | |
|                                                         <div class="card bg-light border mb-0">
 | |
|                                                             <div class="card-body p-0">
 | |
|                                                                 <img src="{{ isset($drvUp->img) ? \App\Helper::changeIpToDomain($drvUp->img) : 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQDVPuMlKfGrFErmCt6hCuECLbbhekJF-GCtAJvPIZpHX5upTT-hABFlp8qZY8rkgaZ0DE&usqp=CAU' }}" alt="" class="img-fluid img-report">
 | |
|                                                             </div>
 | |
|                                                         </div>
 | |
|                                                     </div>
 | |
|                                                 @elseif ($drvUp->stts === \App\Models\OrdersDriversUploads::STTS_UP_OTW_DROP)
 | |
|                                                     <div class="col-12 mb-3 tepiBottom">
 | |
|                                                         <div class="d-flex justify-content-between">
 | |
|                                                             <div><label for="" class="form-label fw-bold">Foto Saat diperjalanan</label></div>
 | |
|                                                             <div><label for="" class="form-label fw-bold foto-crt" data-crt="{{ $drvUp->crt }}"></label></div>
 | |
|                                                         </div>
 | |
|                                                         <div class="card bg-light border mb-0">
 | |
|                                                             <div class="card-body p-0">
 | |
|                                                                 <img src="{{ isset($drvUp->img) ? \App\Helper::changeIpToDomain($drvUp->img) : 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQDVPuMlKfGrFErmCt6hCuECLbbhekJF-GCtAJvPIZpHX5upTT-hABFlp8qZY8rkgaZ0DE&usqp=CAU' }}" alt="" class="img-fluid img-report">
 | |
|                                                             </div>
 | |
|                                                         </div>
 | |
|                                                     </div>
 | |
|                                                 @elseif ($drvUp->stts === \App\Models\OrdersDriversUploads::STTS_UP_ARRIVED_DROP)
 | |
|                                                     <div class="col-12 mb-3 tepiBottom">
 | |
|                                                         <div class="d-flex justify-content-between">
 | |
|                                                             <div><label for="" class="form-label fw-bold">Foto Tiba dilokasi Bongkar</label></div>
 | |
|                                                             <div><label for="" class="form-label fw-bold foto-crt" data-crt="{{ $drvUp->crt }}"></label></div>
 | |
|                                                         </div>
 | |
|                                                         <div class="card bg-light border mb-0">
 | |
|                                                             <div class="card-body p-0">
 | |
|                                                                 <img src="{{ isset($drvUp->img) ? \App\Helper::changeIpToDomain($drvUp->img) : 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQDVPuMlKfGrFErmCt6hCuECLbbhekJF-GCtAJvPIZpHX5upTT-hABFlp8qZY8rkgaZ0DE&usqp=CAU' }}" alt="" class="img-fluid img-report">
 | |
|                                                             </div>
 | |
|                                                         </div>
 | |
|                                                     </div>
 | |
|                                                 @elseif ($drvUp->stts === \App\Models\OrdersDriversUploads::STTS_UP_PROCESS_DROP)
 | |
|                                                     <div class="col-12 mb-3 tepiBottom">
 | |
|                                                         <div class="d-flex justify-content-between">
 | |
|                                                             <div><label for="" class="form-label fw-bold">Foto Proses Bongkar</label></div>
 | |
|                                                             <div><label for="" class="form-label fw-bold foto-crt" data-crt="{{ $drvUp->crt }}"></label></div>
 | |
|                                                         </div>
 | |
|                                                         <div class="card bg-light border mb-0">
 | |
|                                                             <div class="card-body p-0">
 | |
|                                                                 <img src="{{ isset($drvUp->img) ? \App\Helper::changeIpToDomain($drvUp->img) : 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQDVPuMlKfGrFErmCt6hCuECLbbhekJF-GCtAJvPIZpHX5upTT-hABFlp8qZY8rkgaZ0DE&usqp=CAU' }}" alt="" class="img-fluid img-report">
 | |
|                                                             </div>
 | |
|                                                         </div>
 | |
|                                                     </div>
 | |
|                                                 @elseif ($drvUp->stts === \App\Models\OrdersDriversUploads::STTS_UP_FINISH_DROP)
 | |
|                                                     <div class="col-12 mb-3 tepiBottom">
 | |
|                                                         <div class="d-flex justify-content-between">
 | |
|                                                             <div><label for="" class="form-label fw-bold">Foto Selesai Bongkar</label></div>
 | |
|                                                             <div><label for="" class="form-label fw-bold foto-crt" data-crt="{{ $drvUp->crt }}"></label></div>
 | |
|                                                         </div>
 | |
|                                                         <div class="card bg-light border mb-0">
 | |
|                                                             <div class="card-body p-0">
 | |
|                                                                 <img src="{{ isset($drvUp->img) ? \App\Helper::changeIpToDomain($drvUp->img) : 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQDVPuMlKfGrFErmCt6hCuECLbbhekJF-GCtAJvPIZpHX5upTT-hABFlp8qZY8rkgaZ0DE&usqp=CAU' }}" alt="" class="img-fluid img-report">
 | |
|                                                             </div>
 | |
|                                                         </div>
 | |
|                                                     </div>
 | |
|                                                 @elseif ($drvUp->stts === \App\Models\OrdersDriversUploads::STTS_UP_HANDOVER_DOCUMENT)
 | |
|                                                     <div class="col-12 mb-3 tepiBottom">
 | |
|                                                         <div class="d-flex justify-content-between">
 | |
|                                                             <div><label for="" class="form-label fw-bold">Foto Serah Terima</label></div>
 | |
|                                                             <div><label for="" class="form-label fw-bold foto-crt" data-crt="{{ $drvUp->crt }}"></label></div>
 | |
|                                                         </div>
 | |
|                                                         <div class="card bg-light border mb-0">
 | |
|                                                             <div class="card-body p-0">
 | |
|                                                                 <img src="{{ isset($drvUp->img) ? \App\Helper::changeIpToDomain($drvUp->img) : 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQDVPuMlKfGrFErmCt6hCuECLbbhekJF-GCtAJvPIZpHX5upTT-hABFlp8qZY8rkgaZ0DE&usqp=CAU' }}" alt="" class="img-fluid img-report">
 | |
|                                                             </div>
 | |
|                                                         </div>
 | |
|                                                     </div>
 | |
|                                                 @elseif ($drvUp->stts === \App\Models\OrdersDriversUploads::STTS_UP_ACCIDENT)
 | |
|                                                     <div class="col-12 mb-3 tepiBottom">
 | |
|                                                         <div class="d-flex justify-content-between">
 | |
|                                                             <div><label for="" class="form-label fw-bold">Foto Mengalami Trouble / Kecelakaan</label></div>
 | |
|                                                             <div><label for="" class="form-label fw-bold foto-crt" data-crt="{{ $drvUp->crt }}"></label></div>
 | |
|                                                         </div>
 | |
|                                                         <div class="card bg-light border mb-0">
 | |
|                                                             <div class="card-body p-0">
 | |
|                                                                 <img src="{{ isset($drvUp->img) ? \App\Helper::changeIpToDomain($drvUp->img) : 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQDVPuMlKfGrFErmCt6hCuECLbbhekJF-GCtAJvPIZpHX5upTT-hABFlp8qZY8rkgaZ0DE&usqp=CAU' }}" alt="" class="img-fluid img-report">
 | |
|                                                             </div>
 | |
|                                                         </div>
 | |
|                                                     </div>
 | |
|                                                 @endif
 | |
|                                                 @if ($order->is_aprv_pck === \App\Models\OrdersPckDrop::IS_APRV_YES && $afterTravelDoc === 1)
 | |
|                                                     <div class="col-auto mb-3 fw-bold">
 | |
|                                                         {{-- <p class="mb-0 text-success">Disetujui {{ strftime('%d-%m-%Y %H:%M:%S', $order->aprv_pck_at).' WIB' }}</p> --}}
 | |
|                                                         <p class="mb-0 text-success">Disetujui <span id="aprvPckAt"></span></p>
 | |
|                                                         <p class="mb-0 text-dark">Oleh {{ $order->aprv_pck_by_name }}</p>
 | |
|                                                     </div>
 | |
|                                                 @endif
 | |
|                                             @endforeach
 | |
|                                         </div>
 | |
|                                     </div>
 | |
|                                 </div>
 | |
|                             </div>
 | |
|                         </div>
 | |
|                     @endif
 | |
|                     {{-- invoicing termin 1 --}}
 | |
|                     @php
 | |
|                         $prev_yi = 0;
 | |
|                     @endphp
 | |
|                     @foreach ($group_items_by_termin as $yi => $y)
 | |
|                         @php
 | |
|                             $result_is_enable_btn = App\Helper::viewBillFncIsEnableBtn(isset($group_items_by_termin[$prev_yi]) ? $group_items_by_termin[$prev_yi][0] : 0, $y[0]);
 | |
|                             $sub_total = 0;
 | |
|                             $invc_items = '';
 | |
|                         @endphp
 | |
|                         <div class="card">
 | |
|                             <div class="card-header">
 | |
|                                 <div class="row d-flex align-items-center justify-content-between">
 | |
|                                     <div class="col">
 | |
|                                         <p class="card-title text-bold mb-0">Data Penagihan | Termin {{ $y[0]->termin_sequence }}</p>
 | |
|                                         @if ($result_is_enable_btn === 0)
 | |
|                                             {{-- <small class="text-danger">Menunggu Pengantaran Selesai</small> --}}
 | |
|                                             <small class="text-danger">Menunggu Pembayaran Termin 1 Selesai</small>
 | |
|                                         @elseif ($result_is_enable_btn === 2)
 | |
|                                             <small class="text-muted">Pengantaran Selesai pada {{ date('d-m-Y H:i', $y[0]->drop_chk_at) }}</small>
 | |
|                                         @elseif ($result_is_enable_btn === 4)
 | |
|                                             <small class="text-success">Penagihan telah dibayar pada {{ date('d-m-Y H:i', $y[0]->termin_paid_at) }}</small>
 | |
|                                         @endif
 | |
|                                     </div>
 | |
|                                     @if ($result_is_enable_btn === 1 || $result_is_enable_btn === 2)
 | |
|                                         <div class="col-auto text-end ps-0">
 | |
|                                             <button class="btn btn-sm btn-warning" data-bs-toggle="modal" data-bs-target="#mdlTax">Pajak</button>
 | |
|                                         </div>
 | |
|                                         <div class="col-auto text-end ps-0">
 | |
|                                             <button class="btn btn-sm btn-warning" data-bs-toggle="modal" data-bs-target="#mdlDiskon">Diskon</button>
 | |
|                                         </div>
 | |
|                                         <div class="col-auto text-end ps-0">
 | |
|                                             <button class="btn btn-sm btn-primary" id="btnMdlNewAdtItem">Tambah Item</button>
 | |
|                                         </div>
 | |
|                                     @elseif ($result_is_enable_btn === 3)
 | |
|                                         <div class="col-auto text-end ps-0">
 | |
|                                             <small class="text-danger">Termin sebelumnya belum selesai</small>
 | |
|                                         </div>
 | |
|                                     @endif
 | |
|                                 </div>
 | |
|                             </div>
 | |
|                             <div class="card-body">
 | |
|                                 <div class="table-responsive">
 | |
|                                     <table class="table" id="tblInvoice">
 | |
|                                         <thead>
 | |
|                                             <tr class="">
 | |
|                                                 <th class="">#</th>
 | |
|                                                 <th class=""></th>
 | |
|                                                 <th class="">Item</th>
 | |
|                                                 <th class="text-nowrap text-end">Jumlah</th>
 | |
|                                                 <th class="">Satuan</th>
 | |
|                                                 <th class="text-nowrap text-end">Harga (Rp)</th>
 | |
|                                                 <th class="text-nowrap text-end">Total (Rp)</th>
 | |
|                                             </tr>
 | |
|                                         </thead>
 | |
|                                         <tbody>
 | |
|                                             @foreach ($y as $xi => $x)
 | |
|                                                 @php
 | |
|                                                     $amt_bill_base_flat = $x->amt_bill_base_flat;
 | |
|                                                     $amt_bill_total_flat = $x->amt_bill_total_flat;
 | |
|                                                     if ($y[0]->termin_tax_type === \App\Models\OrdersAItems::AMT_TAX_TYPE_INCLUDE) {
 | |
|                                                         $before_ppn = round($amt_bill_base_flat / \App\Models\OrdersAItems::PPN_PERCENT_INCLUDE);
 | |
|                                                         $ppn = round($amt_bill_base_flat - $before_ppn);
 | |
|                                                         $amt_bill_base_flat = round($before_ppn);
 | |
|                                                         $amt_bill_total_flat = round($amt_bill_base_flat * $x->unit_qty);
 | |
|                                                     } else {
 | |
|                                                         $amt_bill_total_flat = round($amt_bill_base_flat * $x->unit_qty);
 | |
|                                                     }
 | |
|                                                 @endphp
 | |
|                                                 <tr class="">
 | |
|                                                     <td class="small">{{ $xi + 1 }}</td>
 | |
|                                                     <td class="small">
 | |
|                                                         @if ($x->a_item_type != \App\Models\OrdersAItems::A_TYPE_PRIMARY)
 | |
|                                                             @if ($result_is_enable_btn === 1 || $result_is_enable_btn === 2)
 | |
|                                                                 <a href="javascript:void(0)" class="text-primary btnDelItem"><span class="icon ion-trash-b fz-16"></span></a>
 | |
|                                                             @endif
 | |
|                                                         @endif
 | |
|                                                     </td>
 | |
|                                                     <td class="small" data-ord_a_item_id="{{ $x->ord_a_item_id }}">
 | |
|                                                         {!! $x->desc !!}
 | |
|                                                     </td>
 | |
|                                                     <td class="small text-nowrap text-end">{{ $x->unit_qty }}</td>
 | |
|                                                     <td class="small">{{ $x->unit_type_name }}</td>
 | |
|                                                     <td class="small text-nowrap text-end">{{ number_format($amt_bill_base_flat, 0, ',', '.') }}</td>
 | |
|                                                     <td class="small text-nowrap text-end">{{ number_format($amt_bill_total_flat, 0, ',', '.') }}</td>
 | |
|                                                     @php
 | |
|                                                         $sub_total += $amt_bill_total_flat;
 | |
|                                                         $invc_items .= "$x->ord_a_item_id,";
 | |
|                                                     @endphp
 | |
|                                                 </tr>
 | |
|                                             @endforeach
 | |
|                                         </tbody>
 | |
|                                         <tfooter>
 | |
|                                             @php
 | |
|                                                 $total = $sub_total;
 | |
|                                                 $sign_tax = '';
 | |
|                                                 if ($y[0]->termin_tax_type === \App\Models\OrdersAItems::AMT_TAX_TYPE_INCLUDE) {
 | |
|                                                     $ppn_flat = round(($sub_total * $y[0]->termin_tax_ppn_percent) / 100);
 | |
|                                                     $before_ppn = round($sub_total - $ppn_flat); // +
 | |
|                                                     $pph_flat = round(0 * -1 * (($before_ppn * $y[0]->termin_tax_pph_percent) / 100)); // -1 *
 | |
|                                                     $before_ppn_pph = round($sub_total + $ppn_flat + $pph_flat); // + +
 | |
|                                                     $tax_flat = round($ppn_flat + $pph_flat);
 | |
|                                                     $total = round($before_ppn_pph);
 | |
|                                                     // $sign_tax = '-';
 | |
|                                                 }
 | |
|                                                 // $disc_flat = round($x->invc_disc_flat) ?? 0; ngebug kalo diskon sudah ada tetapi ada item baru, kalkulasinya tidak terupdate tetapi ke yang lama
 | |
|                                                 if ($x->invc_disc_type === \App\Models\OrdersAItems::AMT_TYPE_FLAT) {
 | |
|                                                     $disc_flat = round($x->invc_disc_flat);
 | |
|                                                 } else {
 | |
|                                                     $disc_flat = round(($total / 100) * $x->invc_disc_percent);
 | |
|                                                 }
 | |
|                                                 $pengurangan_disc = round($total - ($disc_flat ?? 0));
 | |
|                                                 $total = $pengurangan_disc;
 | |
|                                                 if ($y[0]->termin_tax_type === \App\Models\OrdersAItems::AMT_TAX_TYPE_EXCLUDE) {
 | |
|                                                     $ppn_flat = round(($total * $y[0]->termin_tax_ppn_percent) / 100);
 | |
|                                                     $after_ppn = round($total + $ppn_flat);
 | |
|                                                     $pph_flat = round((0 * $after_ppn * $y[0]->termin_tax_pph_percent) / 100);
 | |
|                                                     $tax_flat = round($ppn_flat + $pph_flat);
 | |
|                                                     $total += $tax_flat;
 | |
|                                                 } elseif ($y[0]->termin_tax_type === \App\Models\OrdersAItems::AMT_TAX_TYPE_WITHOUT) {
 | |
|                                                     $ppn_flat = 0;
 | |
|                                                     $pph_flat = 0;
 | |
|                                                     $tax_flat = 0;
 | |
|                                                 }
 | |
|                                             @endphp
 | |
|                                             <tr class="border-0">
 | |
|                                                 <td class="text-nowrap text-end border-0" colspan="6">Sub total</td>
 | |
|                                                 @if ($result_is_enable_btn === 1 || $result_is_enable_btn === 2)
 | |
|                                                     <td id="subTotal" class="text-nowrap text-end border-0" data-items="{{ $invc_items }}" data-subtotal="{{ round($sub_total) }}" data-terminid="{{ $x->c_group_termin_id }}" data-taxtype="{{ $y[0]->termin_tax_type }}" data-ppnpercent="{{ $y[0]->termin_tax_ppn_percent }}" data-ppnflat="{{ round($ppn_flat) }}" data-pphpercent="{{ $y[0]->termin_tax_pph_percent * 0 }}" data-pphflat="{{ round($pph_flat) }}" data-taxflat="{{ round($tax_flat) }}" data-disctype="{{ $x->invc_disc_type ?? 0 }}" data-discpercent="{{ $x->invc_disc_percent ?? 0 }}" data-discflat="{{ round($disc_flat ?? 0) }}" data-total="{{ round($total) }}">
 | |
|                                                         @if ($y[0]->termin_tax_type === \App\Models\OrdersAItems::AMT_TAX_TYPE_EXCLUDE)
 | |
|                                                             {{ number_format($sub_total, 0, ',', '.') }}
 | |
|                                                         @elseif ($y[0]->termin_tax_type === \App\Models\OrdersAItems::AMT_TAX_TYPE_INCLUDE)
 | |
|                                                             {{-- {{ number_format($before_ppn_pph, 0, ',', '.') }} --}}
 | |
|                                                             {{ number_format($sub_total, 0, ',', '.') }}
 | |
|                                                         @else
 | |
|                                                             {{ number_format($sub_total, 0, ',', '.') }}
 | |
|                                                         @endif
 | |
|                                                     </td>
 | |
|                                                 @else
 | |
|                                                     <td class="text-nowrap text-end border-0">
 | |
|                                                         @if ($y[0]->termin_tax_type === \App\Models\OrdersAItems::AMT_TAX_TYPE_EXCLUDE)
 | |
|                                                             {{ number_format($sub_total, 0, ',', '.') }}
 | |
|                                                         @elseif ($y[0]->termin_tax_type === \App\Models\OrdersAItems::AMT_TAX_TYPE_INCLUDE)
 | |
|                                                             {{-- {{ number_format($before_ppn_pph, 0, ',', '.') }} --}}
 | |
|                                                             {{ number_format($sub_total, 0, ',', '.') }}
 | |
|                                                         @else
 | |
|                                                             {{ number_format($sub_total, 0, ',', '.') }}
 | |
|                                                         @endif
 | |
|                                                     </td>
 | |
|                                                 @endif
 | |
|                                             </tr>
 | |
|                                             @if ($y[0]->termin_tax_type === \App\Models\OrdersAItems::AMT_TAX_TYPE_EXCLUDE)
 | |
|                                                 <td class="text-nowrap text-end border-0" colspan="6">
 | |
|                                                     @if ($x->invc_disc_type === \App\Models\OrdersInvoices::AMT_TYPE_PERCENT)
 | |
|                                                         Diskon ({{ $x->invc_disc_percent }}%)
 | |
|                                                     @else
 | |
|                                                         Diskon
 | |
|                                                     @endif
 | |
|                                                 </td>
 | |
|                                                 <td class="text-nowrap text-end border-0">{{ $disc_flat > 0 ? '-' . number_format($disc_flat, 0, ',', '.') : $disc_flat }}</td>
 | |
|                                                 <tr class="border-bottom">
 | |
|                                                     <td class="text-nowrap text-end border-bottom" style="border-bottom: 1px solid !important;" colspan="6">PPN ({{ $y[0]->termin_tax_ppn_percent }}%)</td>
 | |
|                                                     <td class="text-nowrap text-end border-bottom" style="border-bottom: 1px solid !important;">{{ $sign_tax . number_format($ppn_flat, 0, ',', '.') }}</td>
 | |
|                                                 </tr>
 | |
|                                                 @if ($pph_flat > 0)
 | |
|                                                     <tr class="border-0">
 | |
|                                                         <td class="text-nowrap text-end border-0" colspan="6">PPH ({{ $y[0]->termin_tax_pph_percent }}%)</td>
 | |
|                                                         <td class="text-nowrap text-end border-0">{{ $sign_tax . number_format($pph_flat, 0, ',', '.') }}</td>
 | |
|                                                     </tr>
 | |
|                                                 @endif
 | |
|                                             @elseif ($y[0]->termin_tax_type === \App\Models\OrdersAItems::AMT_TAX_TYPE_INCLUDE)
 | |
|                                                 <tr class="border-0">
 | |
|                                                     <td class="text-nowrap text-end border-0" colspan="6">
 | |
|                                                         @if ($x->invc_disc_type === \App\Models\OrdersInvoices::AMT_TYPE_PERCENT)
 | |
|                                                             Diskon ({{ $x->invc_disc_percent }}%)
 | |
|                                                         @else
 | |
|                                                             Diskon
 | |
|                                                         @endif
 | |
|                                                     </td>
 | |
|                                                     <td class="text-nowrap text-end border-0">{{ $disc_flat > 0 ? '-' . number_format($disc_flat, 0, ',', '.') : $disc_flat }}</td>
 | |
|                                                 </tr>
 | |
|                                                 <tr class="border-bottom">
 | |
|                                                     <td class="text-nowrap text-end border-bottom" style="border-bottom: 1px solid !important;" colspan="6">PPN ({{ $y[0]->termin_tax_ppn_percent }}%)</td>
 | |
|                                                     <td class="text-nowrap text-end border-bottom" style="border-bottom: 1px solid !important;">{{ $sign_tax . number_format($ppn_flat, 0, ',', '.') }}</td>
 | |
|                                                 </tr>
 | |
|                                                 @if ($pph_flat > 0)
 | |
|                                                     <tr class="border-0">
 | |
|                                                         <td class="text-nowrap text-end border-0" colspan="6">PPH ({{ $y[0]->termin_tax_pph_percent }}%)</td>
 | |
|                                                         <td class="text-nowrap text-end border-0">{{ $sign_tax . number_format(-1 * $pph_flat, 0, ',', '.') }}</td>
 | |
|                                                     </tr>
 | |
|                                                 @endif
 | |
|                                             @else
 | |
|                                                 <tr class="border-bottom">
 | |
|                                                     <td class="text-nowrap text-end border-bottom" style="border-bottom: 1px solid !important;" colspan="6">
 | |
|                                                         @if ($x->invc_disc_type === \App\Models\OrdersInvoices::AMT_TYPE_PERCENT)
 | |
|                                                             Diskon ({{ $x->invc_disc_percent }}%)
 | |
|                                                         @else
 | |
|                                                             Diskon
 | |
|                                                         @endif
 | |
|                                                     </td>
 | |
|                                                     <td class="text-nowrap text-end border-bottom" style="border-bottom: 1px solid !important;">{{ $disc_flat > 0 ? '-' . number_format($disc_flat, 0, ',', '.') : $disc_flat }}</td>
 | |
|                                                 </tr>
 | |
|                                             @endif
 | |
|                                         </tfooter>
 | |
|                                         <tfooter>
 | |
|                                             <tr class="bg-light">
 | |
|                                                 <td class="text-nowrap text-end border-0 text-bold" colspan="6">TOTAL</td>
 | |
|                                                 <td class="text-nowrap text-end border-0 text-bold">
 | |
|                                                     @if ($y[0]->termin_tax_type === \App\Models\OrdersAItems::AMT_TAX_TYPE_EXCLUDE)
 | |
|                                                         {{ number_format($total, 0, ',', '.') }}
 | |
|                                                     @elseif ($y[0]->termin_tax_type === \App\Models\OrdersAItems::AMT_TAX_TYPE_INCLUDE)
 | |
|                                                         {{-- {{ number_format($sub_total - ($disc_flat ?? 0), 0, ',', '.') }} --}}
 | |
|                                                         {{ number_format($total, 0, ',', '.') }}
 | |
|                                                     @else
 | |
|                                                         {{ number_format($total, 0, ',', '.') }}
 | |
|                                                     @endif
 | |
|                                                 </td>
 | |
|                                             </tr>
 | |
|                                         </tfooter>
 | |
|                                     </table>
 | |
|                                 </div>
 | |
|                             </div>
 | |
|                             @if ($result_is_enable_btn === 1 || $result_is_enable_btn === 2)
 | |
|                                 <div class="card-footer">
 | |
|                                     <div class="row d-flex align-items-center justify-content-between">
 | |
|                                         <div class="{{ $x->invc_id === null ? 'col-8' : 'col-lg-5 col-md-4' }}">
 | |
|                                             <p class="mb-0">
 | |
|                                                 Apakah item diatas sudah seluruhnya di masukkan?
 | |
|                                             </p>
 | |
|                                         </div>
 | |
|                                         <div class="col-auto text-end d-flex">
 | |
|                                             @if ($x->invc_id !== null && $x->is_gnrt_invc === \App\Models\OrdersInvoices::IS_GNRT_INVC_YES)
 | |
|                                                 {{-- {{ asset('pdf/invoice.pdf') }} --}}
 | |
|                                                 <button type="button" id="confirmInvc" class="btn btn-warning btn-block btn-sm text-nowrap" data-bs-toggle="modal" data-bs-target="#mdlConfirmInvc" data-id={{ $x->invc_id }} data-code={{ $x->invc_code }}>
 | |
|                                                     Konfirmasi Pembayaran</button>
 | |
|                                             @endif
 | |
|                                             {{-- {{ asset('pdf/invoice.pdf') }} --}}
 | |
|                                             <a href="#" target="_blank" id="btnGnrtInvc" class="btn btn-primary btn-block btn-sm text-nowrap">Generate Invoice</a>
 | |
|                                         </div>
 | |
|                                     </div>
 | |
|                                 </div>
 | |
|                             @else
 | |
|                                 @if ($y[0]->amt_bill_confirm !== 0)
 | |
|                                     <div class="card-footer">
 | |
|                                         <div class="row d-flex align-items-center justify-content-between">
 | |
|                                             <div class="col-8">
 | |
|                                                 <p class="mb-0"><span class="fw-bold">Nilai yang diterima:</span> <span class="fw-bold">Rp{{ number_format($y[0]->amt_bill_confirm, 0, ',', '.') }}</span></p>
 | |
|                                                 <p class="mb-0"><span class="fw-bold">Keterangan:</span></p>
 | |
|                                                 <p class="mb-0"><span class="">{!! nl2br($y[0]->amt_bill_confirm_note) !!}</span></p>
 | |
|                                             </div>
 | |
|                                         </div>
 | |
|                                     </div>
 | |
|                                 @endif
 | |
|                             @endif
 | |
|                         </div>
 | |
|                         @php
 | |
|                             $prev_yi += $yi;
 | |
|                         @endphp
 | |
|                     @endforeach
 | |
|                 </div>
 | |
|             </div>
 | |
|         </div>
 | |
|     </div>
 | |
| 
 | |
|     {{-- Modal --}}
 | |
|     <div class="modal" id="mdlDiskon" tabindex="-1" data-bs-backdrop="static" data-bs-keyboard="false" aria-labelledby="mdlDiskonLabel" aria-hidden="true">
 | |
|         <div class="modal-dialog modal-dialog-centered">
 | |
|             <div class="modal-content">
 | |
|                 <div class="modal-header">
 | |
|                     <h5 class="modal-title" id="mdlDiskonLabel">Tambah Diskon</h5>
 | |
|                     <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
 | |
|                 </div>
 | |
|                 <div class="modal-body">
 | |
|                     <div class="mb-3">
 | |
|                         <label for="addDisc" class="form-label">Tipe Diskon</label>
 | |
|                         <select name="addDisc" id="addDisc" class="select2 form-control" style="width: 100% !important">
 | |
|                             <option value="0" selected>Tidak ada tipe diskon yang dipilih</option>
 | |
|                             <option value="{{ \App\Models\OrdersInvoices::AMT_TYPE_FLAT }}">Fixed</option>
 | |
|                             <option value="{{ \App\Models\OrdersInvoices::AMT_TYPE_PERCENT }}">Percent</option>
 | |
|                         </select>
 | |
|                     </div>
 | |
|                     <div id="disFieldWrapper" class="d-none">
 | |
|                         <div id="groupDiscPercent" class="mb-3">
 | |
|                             <label for="discPercent" class="form-label">Masukkan Diskon (%)</label>
 | |
|                             <input class="form-control" type="number" min="1" max="100" name="discPercent" id="discPercent">
 | |
|                         </div>
 | |
|                         <div id="groupDiscFlat" class="mb-3">
 | |
|                             <label for="discFlat" class="form-label">Besaran Diskon (Rp)</label>
 | |
|                             <input class="form-control" type="text" name="discFlat" id="discFlat">
 | |
|                         </div>
 | |
|                     </div>
 | |
|                 </div>
 | |
|                 <div class="modal-footer">
 | |
|                     <button type="button" class="btn btn-sm btn-secondary" data-bs-dismiss="modal">Close</button>
 | |
|                     <button type="button" class="btn btn-sm btn-primary" id="btnSaveDisc">Save</button>
 | |
|                 </div>
 | |
|             </div>
 | |
|         </div>
 | |
|     </div>
 | |
|     <div class="modal" id="mdlAddItem" tabindex="-1" data-bs-backdrop="static" data-bs-keyboard="false" aria-labelledby="mdlAddItemLabel" aria-hidden="true">
 | |
|         <div class="modal-dialog modal-dialog-centered modal-dialog-scrollable">
 | |
|             <div class="modal-content">
 | |
|                 <div class="modal-header">
 | |
|                     <h5 class="modal-title" id="mdlAddItemLabel"></h5>
 | |
|                     <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
 | |
|                 </div>
 | |
|                 <div class="modal-body">
 | |
|                     <div class="mb-3">
 | |
|                         <label for="slcItem" class="form-label w-100">Pilih Item <span class="text-danger">*</span></label>
 | |
|                         <select name="slcItem" id="slcItem" class="select2 form-control" style="width: 100% !important">
 | |
|                             <option value="" selected disabled>Belum ada item yang dipilih</option>
 | |
|                             @foreach ($items as $item)
 | |
|                                 <option value="{{ $item->id }}" data-name="{{ $item->name }}" data-type="{{ $item->type }}" data-price="{{ $item->price }}" data-is_adm_price="{{ $item->is_adm_price }}">{{ $item->name }}</option>
 | |
|                             @endforeach
 | |
|                             <option value="new"><span class="text-danger">Tambah item baru</span></option>
 | |
|                         </select>
 | |
|                         <small id="slcItemPrice"></small>
 | |
|                     </div>
 | |
|                     <div id="addNewItemWrapper" class="d-none">
 | |
|                         <div class="mb-3">
 | |
|                             <label for="add-item_name" class="form-label">Nama Item <span class="text-danger">*</span></label>
 | |
|                             <input type="text" name="add-item_name" id="add-item_name" class="form-control">
 | |
|                         </div>
 | |
|                         <div class="mb-3">
 | |
|                             <label for="add-item_type" class="form-label">Satuan <span class="text-danger">*</span></label>
 | |
|                             <select name="add-item_type" id="add-item_type" class="select2 form-control" style="width: 100% !important">
 | |
|                                 <option value="" selected disabled>Belum ada satuan yang dipilih</option>
 | |
|                                 @foreach ($unitTypes as $type)
 | |
|                                     <option value="{{ $type->id }}">{{ $type->name }}</option>
 | |
|                                 @endforeach
 | |
|                             </select>
 | |
|                         </div>
 | |
|                         <div class="mb-3">
 | |
|                             <label for="add-item_price" class="form-label">Harga Satuan <span class="text-danger">*</span></label>
 | |
|                             <input type="text" name="add-item_price" id="add-item_price" class="form-control">
 | |
|                         </div>
 | |
|                         <div class="mb-3 d-none">
 | |
|                             <div class="form-check">
 | |
|                                 <input class="form-check-input" name="add-item_isAdmPrice" type="checkbox" value="yes" id="add-item_isAdmPrice">
 | |
|                                 <label class="form-check-label text-danger" for="add-item_isAdmPrice">
 | |
|                                     Biaya admin bank ?
 | |
|                                 </label>
 | |
|                             </div>
 | |
|                         </div>
 | |
|                     </div>
 | |
|                     <div class="mb-3 d-none">
 | |
|                         <label for="add-item_bill_tax_type" class="form-label">Perpajakan <span class="text-danger">*</span></label>
 | |
|                         <select name="add-item_bill_tax_type" id="add-item_bill_tax_type" class="select2 form-control" style="width: 100% !important">
 | |
|                             {{-- <option value="{{ App\Models\OrdersAItems::AMT_TAX_TYPE_WITHOUT }}">Tanpa Pajak</option> --}}
 | |
|                             <option value="{{ App\Models\OrdersAItems::AMT_TAX_TYPE_EXCLUDE }}">Belum Termasuk Pajak</option>
 | |
|                             <option value="{{ App\Models\OrdersAItems::AMT_TAX_TYPE_INCLUDE }}">Sudah Termasuk Pajak</option>
 | |
|                         </select>
 | |
|                     </div>
 | |
|                     <div class="row mb-3 groupTaxBill d-none">
 | |
|                         <div class="col">
 | |
|                             <label for="add-item_bill_tax_ppn_percent" class="form-label">Percent PPN % <span class="text-danger">*</span></label>
 | |
|                             <input type="number" name="add-item_bill_tax_ppn_percent" id="add-item_bill_tax_ppn_percent" class="form-control" readonly>
 | |
|                         </div>
 | |
|                         <div class="col">
 | |
|                             <label for="add-item_bill_tax_ppn_flat" class="form-label">Harga PPN (Rp) <span class="text-danger">*</span></label>
 | |
|                             <input type="text" name="add-item_bill_tax_ppn_flat" id="add-item_bill_tax_ppn_flat" class="form-control" readonly>
 | |
|                         </div>
 | |
|                     </div>
 | |
|                     <div class="row mb-3 groupTaxBill d-none">
 | |
|                         <div class="col">
 | |
|                             <label for="add-item_bill_tax_pph_percent" class="form-label">Percent PPH % <span class="text-danger">*</span></label>
 | |
|                             <input type="number" name="add-item_bill_tax_pph_percent" id="add-item_bill_tax_pph_percent" class="form-control" readonly>
 | |
|                         </div>
 | |
|                         <div class="col">
 | |
|                             <label for="add-item_bill_tax_pph_flat" class="form-label">Harga PPH (Rp) <span class="text-danger">*</span></label>
 | |
|                             <input type="text" name="add-item_bill_tax_pph_flat" id="add-item_bill_tax_pph_flat" class="form-control" readonly>
 | |
|                         </div>
 | |
|                     </div>
 | |
|                     <div class="mb-3 d-none">
 | |
|                         <label for="add-item_bill_tax_total_flat" class="form-label">Harga Setelah Kalkulasi Pajak (Rp) <span class="text-danger">*</span></label>
 | |
|                         <input type="text" name="add-item_bill_tax_total_flat" id="add-item_bill_tax_total_flat" class="form-control" readonly>
 | |
|                     </div>
 | |
|                     <div class="mb-3">
 | |
|                         <label for="add-item_qty" class="form-label">Jumlah Item <span class="text-danger">*</span></label>
 | |
|                         <input type="number" name="add-item_qty" id="add-item_qty" class="form-control">
 | |
|                     </div>
 | |
|                 </div>
 | |
|                 <div class="modal-footer">
 | |
|                     <button type="button" class="btn btn-sm btn-secondary" data-bs-dismiss="modal">Close</button>
 | |
|                     <button type="button" class="btn btn-sm btn-primary" id="btnSubmitAddItem">Save</button>
 | |
|                 </div>
 | |
|             </div>
 | |
|         </div>
 | |
|     </div>
 | |
|     <div class="modal" id="mdlConfirmInvc" tabindex="-1" data-bs-backdrop="static" data-bs-keyboard="false" aria-labelledby="mdlConfirmInvcLabel" aria-hidden="true">
 | |
|         <div class="modal-dialog modal-dialog-centered modal-dialog-scrollable">
 | |
|             <div class="modal-content">
 | |
|                 <div class="modal-header">
 | |
|                     <h5 class="modal-title" id="mdlConfirmInvcLabel"></h5>
 | |
|                     <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
 | |
|                 </div>
 | |
|                 <div class="modal-body">
 | |
|                     <div class="">
 | |
|                         <div class="mb-3">
 | |
|                             <label for="amt_bill_confirm" class="form-label">Nilai yang diterima <span class="text-danger">*</span></label>
 | |
|                             <input type="text" name="amt_bill_confirm" id="amt_bill_confirm" class="form-control" value="0">
 | |
|                         </div>
 | |
|                         <div class="mb-3">
 | |
|                             <label for="amt_bill_confirm_note" class="form-label">Keterangan </label>
 | |
|                             <textarea name="amt_bill_confirm_note" id="amt_bill_confirm_note" class="form-control" cols="30" rows="3"></textarea>
 | |
|                         </div>
 | |
|                         <div class="form-check">
 | |
|                             <input class="form-check-input" name="isCheckConfirmInvc" type="checkbox" value="yes" id="isCheckConfirmInvc">
 | |
|                             <label class="form-check-label text-dark" for="isCheckConfirmInvc">
 | |
|                                 Setelah konfirmasi pembayaran maka data penagihan yang dikonfirmasi akan diClose dan tidak bisa dirubah
 | |
|                             </label>
 | |
|                         </div>
 | |
|                     </div>
 | |
|                     {{-- <div class="mb-3">
 | |
|                         <label for="up_paid_proof" class="col-form-label">Unggah Bukti Pembayaran <span class="text-danger">*</span></label>
 | |
|                         <br>
 | |
|                         <img id="inpt-up_paid_proof-img" class="img-fluid d-none" src="#"
 | |
|                             alt="inpt-up_paid_proof-img">
 | |
|                         <div id="inpt-group_up_paid_proof_spinner" class="d-none">
 | |
|                             <div class="spinner-border" role="status">
 | |
|                                 <span class="visually-hidden">Loading...</span>
 | |
|                             </div>
 | |
|                         </div>
 | |
|                         <div>
 | |
|                             <span id="inpt-up_paid_proof-status" class="d-none"></span>
 | |
|                             <span id="inpt-up_paid_proof-filesize" class="d-none"></span>
 | |
|                         </div>
 | |
|                         <div id="inpt-group_rotate_up_paid_proof" class="pt-2 d-flex justify-content-start d-none">
 | |
|                             <button type="button" class="btnRotateLeft btn btn-sm btn-outline-primary ml-1"
 | |
|                                 style="padding:0.25rem 0.5rem;border-radius:0.25rem;"><i
 | |
|                                     class="icon ion-arrow-return-left"></i></button>
 | |
|                             <button type="button" class="btnRotateRight btn btn-sm btn-outline-primary ml-1"
 | |
|                                 style="padding:0.25rem 0.5rem;border-radius:0.25rem;"><i
 | |
|                                     class="icon ion-arrow-return-right"></i></button>
 | |
|                         </div>
 | |
|                         <input type="file" id="inpt-up_paid_proof-file" class="form-control form-control-sm">
 | |
|                         <input type="text" id="inpt-up_paid_proof-base64" class="form-control" hidden>
 | |
|                     </div> --}}
 | |
|                 </div>
 | |
|                 <div class="modal-footer">
 | |
|                     <button type="button" class="btn btn-sm btn-secondary" data-bs-dismiss="modal">Close</button>
 | |
|                     <button type="button" class="btn btn-sm btn-primary" id="btnConfirmInvc" disabled>Konfirmasi</button>
 | |
|                 </div>
 | |
|             </div>
 | |
|         </div>
 | |
|     </div>
 | |
|     <div class="modal" id="mdlTax" tabindex="-1" data-bs-backdrop="static" data-bs-keyboard="false" aria-labelledby="mdlTaxLabel" aria-hidden="true">
 | |
|         <div class="modal-dialog modal-dialog-centered">
 | |
|             <div class="modal-content">
 | |
|                 <div class="modal-header">
 | |
|                     <h5 class="modal-title" id="mdlTaxLabel">Perpajakan</h5>
 | |
|                     <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
 | |
|                 </div>
 | |
|                 <div class="modal-body">
 | |
|                     <div class="mb-3">
 | |
|                         <label for="add-invc_tax_type" class="form-label">Perpajakan <span class="text-danger">*</span></label>
 | |
|                         <select name="add-invc_tax_type" id="add-invc_tax_type" class="select2 form-control" style="width: 100% !important">
 | |
|                             {{-- <option value="{{ App\Models\OrdersAItems::AMT_TAX_TYPE_WITHOUT }}">Tanpa Pajak</option> --}}
 | |
|                             <option value="{{ App\Models\OrdersAItems::AMT_TAX_TYPE_EXCLUDE }}">Belum Termasuk Pajak</option>
 | |
|                             <option value="{{ App\Models\OrdersAItems::AMT_TAX_TYPE_INCLUDE }}">Sudah Termasuk Pajak</option>
 | |
|                         </select>
 | |
|                     </div>
 | |
|                     <div class="row mb-3 groupTaxTax d-none">
 | |
|                         <div class="col">
 | |
|                             <label for="add-invc_tax_ppn_percent" class="form-label">Percent PPN % <span class="text-danger">*</span></label>
 | |
|                             <input type="number" name="add-invc_tax_ppn_percent" id="add-invc_tax_ppn_percent" class="form-control" readonly>
 | |
|                         </div>
 | |
|                         <div class="col d-none">
 | |
|                             <label for="add-invc_tax_pph_percent" class="form-label">Percent PPH % <span class="text-danger">*</span></label>
 | |
|                             <input type="number" name="add-invc_tax_pph_percent" id="add-invc_tax_pph_percent" class="form-control" readonly>
 | |
|                         </div>
 | |
|                     </div>
 | |
|                 </div>
 | |
|                 <div class="modal-footer">
 | |
|                     <button type="button" class="btn btn-sm btn-secondary" data-bs-dismiss="modal">Close</button>
 | |
|                     <button type="button" class="btn btn-sm btn-primary" id="btnSaveTax">Save</button>
 | |
|                 </div>
 | |
|             </div>
 | |
|         </div>
 | |
|     </div>
 | |
|     <div class="modal fade" data-bs-backdrop="static" data-bs-keyboard="false" id="mdlDelItem" aria-labelledby="mdlDelItemLabel" aria-hidden="true">
 | |
|         <div class="modal-dialog modal-dialog-centered modal-sm">
 | |
|             <div class="modal-content">
 | |
|                 <div class="modal-header">
 | |
|                     <h5 class="modal-title" id="mdlDelItemLabel">Hapus Item</h5>
 | |
|                     <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
 | |
|                 </div>
 | |
|                 <div class="modal-body">
 | |
|                     <div class="d-flex justify-content-center">
 | |
|                         <p class="mb-0">
 | |
|                             Apakah kamu yakin menghapus item ini
 | |
|                             <a href="#" class="text-danger">
 | |
|                                 <span id="del-name"></span>
 | |
|                             </a> ?
 | |
|                         </p>
 | |
|                     </div>
 | |
|                 </div>
 | |
|                 <div class="modal-footer">
 | |
|                     <button type="button" class="btn btn-sm btn-danger" data-bs-dismiss="modal">Close</button>
 | |
|                     <button id="btnSubmitDelItem" type="button" class="btn btn-sm btn-secondary">Ya, hapus</button>
 | |
|                 </div>
 | |
|             </div>
 | |
|         </div>
 | |
|     </div>
 | |
|     <div class="modal fade" data-bs-backdrop="static" data-bs-keyboard="false" id="mdlChangePICInvoice" aria-labelledby="mdlChangePICInvoiceLabel" aria-hidden="true">
 | |
|         <div class="modal-dialog modal-dialog-centered modal-dialog-scrollable modal-xl">
 | |
|             <div class="modal-content">
 | |
|                 <div class="modal-header">
 | |
|                     <h5 class="modal-title" id="mdlChangePICInvoiceLabel">Ganti PIC Invoice</h5>
 | |
|                     <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
 | |
|                 </div>
 | |
|                 <div class="modal-body">
 | |
|                     <form id="formUpdt">
 | |
|                         <div class="mb-3">
 | |
|                             <p class="text-danger text-bold mb-0">Ganti PIC Invoice</p>
 | |
|                             <small>Ganti PIC Invoice</small>
 | |
|                         </div>
 | |
|                         <div class="row">
 | |
|                             <div class="col-12">
 | |
|                                 <div class="mb-3">
 | |
|                                     <div class="col-12">
 | |
|                                         <label for="c_pt_name" class="form-label text-nowrap">Nama Perusahaan <span class="text-danger">*</span></label>
 | |
|                                     </div>
 | |
|                                     <input type="text" name="c_pt_name" id="c_pt_name" class="form-control" value="{{ $order->c_pt_name }}">
 | |
|                                 </div>
 | |
|                             </div>
 | |
|                             <div class="col-12">
 | |
|                                 <div class="mb-3">
 | |
|                                     <div class="col-12">
 | |
|                                         <label for="c_pt_addr" class="form-label text-nowrap">Alamat Perusahaan <span class="text-danger">*</span></label>
 | |
|                                     </div>
 | |
|                                     <textarea name="c_pt_addr" id="c_pt_addr" class="form-control" rows="3" style="width:100%;">{{ $order->c_pt_addr }}</textarea>
 | |
|                                 </div>
 | |
|                             </div>
 | |
|                             <div class="col-12">
 | |
|                                 <div class="mb-3">
 | |
|                                     <div class="col-12">
 | |
|                                         <label for="c_pt_pic_name" class="form-label text-nowrap">Nama PIC <span class="text-danger">*</span></label>
 | |
|                                     </div>
 | |
|                                     <input type="text" name="c_pt_pic_name" id="c_pt_pic_name" class="form-control" value="{{ $order->c_pt_pic_name }}">
 | |
|                                 </div>
 | |
|                             </div>
 | |
|                             <div class="col-12">
 | |
|                                 <div class="mb-3">
 | |
|                                     <div class="col-12">
 | |
|                                         <label for="c_pt_pic_phone_val" class="form-label text-nowrap">Phone PT PIC <span class="text-danger">*</span></label>
 | |
|                                     </div>
 | |
|                                     <input type="number" name="c_pt_pic_phone_val" id="c_pt_pic_phone_val" class="form-control" value="{{ $order->c_pt_pic_phone_val }}" placeholder="Tanpa nol didepan">
 | |
|                                 </div>
 | |
|                             </div>
 | |
|                         </div>
 | |
|                     </form>
 | |
|                 </div>
 | |
|                 <div class="modal-footer">
 | |
|                     <button type="button" class="btn btn-sm btn-secondary" data-bs-dismiss="modal">Cancel</button>
 | |
|                     <button id="btnSubmitChangePICInvoice" type="button" class="btn btn-sm btn-danger">Ganti</button>
 | |
|                     <div id="btnSubmitChangePICInvoiceSpinner" class="d-none">
 | |
|                         <div class="spinner-border" role="status">
 | |
|                             <span class="visually-hidden">Loading...</span>
 | |
|                         </div>
 | |
|                     </div>
 | |
|                 </div>
 | |
|             </div>
 | |
|         </div>
 | |
|     </div>
 | |
|     {{-- ./Modal --}}
 | |
| @endsection
 | |
| 
 | |
| @section('customjs')
 | |
|     <script>
 | |
|         // $('#tblInvoice').DataTable({
 | |
|         //     bSort: false,
 | |
|         //     searching: false,
 | |
|         //     paging: false,
 | |
|         //     info: false
 | |
|         // });
 | |
|         // $('#slctItem').select2({
 | |
|         //     dropdownParent: $('#mdlAddItem')
 | |
|         // });
 | |
|         // $('#addDisc').select2({
 | |
|         //     dropdownParent: $('#mdlDiskon')
 | |
|         // });
 | |
|         // $('#slctItem').on('change', function() {
 | |
|         //     var data = $("#slctItem option:selected").val();
 | |
|         //     console.log(data)
 | |
|         //     if(data == 99999999){
 | |
|         //         let a = `
 | |
|     //             <div id="addNewItemContent">
 | |
|     //                 <div class="mb-3">
 | |
|     //                     <label for="" class="form-label">Nama Item</label>
 | |
|     //                     <input type="text" class="form-control">
 | |
|     //                 </div>
 | |
|     //                 <div class="mb-3">
 | |
|     //                     <label for="" class="form-label">Satuan</label>
 | |
|     //                     <select name="" id="" class="select2 form-control" style="width: 100% !important">
 | |
|     //                         <option value="none" selected disabled>Belum ada satuan yang dipilih</option>
 | |
|     //                         <option value="">Paket</option>
 | |
|     //                         <option value="">Unit</option>
 | |
|     //                         <option value="">Pcs</option>
 | |
|     //                     </select>
 | |
|     //                 </div>
 | |
|     //                 <div class="mb-3">
 | |
|     //                     <label for="" class="form-label">Harga</label>
 | |
|     //                     <input type="number" class="form-control">
 | |
|     //                 </div>
 | |
|     //         `
 | |
|         //         $('#addNewItemWrapper').html(a)
 | |
|         //         $('.select2').select2({
 | |
|         //             dropdownParent: $('#mdlAddItem')
 | |
|         //         });
 | |
|         //     } else {
 | |
|         //         $('#addNewItemContent').remove()
 | |
|         //     }
 | |
|         // })
 | |
| 
 | |
|         // $('#addDisc').on('change', function() {
 | |
|         //     var data = $("#addDisc option:selected").val();
 | |
|         //     console.log(data)
 | |
|         //     // fixed
 | |
|         //     if(data == 1){
 | |
|         //         let a = `
 | |
|     //             <div id="disFieldContent">
 | |
|     //                 <div class="mb-3">
 | |
|     //                     <label for="" class="form-label">Besaran Diskon (Rp)</label>
 | |
|     //                     <input class="form-control" type="number" id="">
 | |
|     //                 </div>
 | |
|     //             </div>
 | |
|     //         `
 | |
|         //         $('#disFieldContent').remove()
 | |
|         //         $('#disFieldWrapper').html(a)
 | |
|         //     } else if (data == 2) {
 | |
|         //         let a = `
 | |
|     //             <div id="disFieldContent">
 | |
|     //                 <div class="mb-3">
 | |
|     //                     <label for="" class="form-label">Masukkan Diskon (%)</label>
 | |
|     //                     <input class="form-control" type="number" min="1" max="100" id="">
 | |
|     //                 </div>
 | |
|     //                 <div class="mb-3">
 | |
|     //                     <label for="" class="form-label">Besaran Diskon (Rp)</label>
 | |
|     //                     <input class="form-control" type="number" id="" readonly>
 | |
|     //                 </div>
 | |
|     //             </div>
 | |
|     //         `
 | |
|         //         $('#disFieldContent').remove()
 | |
|         //         $('#disFieldWrapper').html(a)
 | |
|         //     } else {
 | |
|         //         $('#disFieldContent').remove()
 | |
|         //     }
 | |
|         // if(data == 99999999){
 | |
|         //     let a = `
 | |
|     //         <div id="addNewItemContent">
 | |
|     //             <div class="mb-3">
 | |
|     //                 <label for="" class="form-label">Nama Item</label>
 | |
|     //                 <input type="text" class="form-control">
 | |
|     //             </div>
 | |
|     //             <div class="mb-3">
 | |
|     //                 <label for="" class="form-label">Satuan</label>
 | |
|     //                 <select name="" id="" class="select2 form-control" style="width: 100% !important">
 | |
|     //                     <option value="none" selected disabled>Belum ada satuan yang dipilih</option>
 | |
|     //                     <option value="">Paket</option>
 | |
|     //                     <option value="">Unit</option>
 | |
|     //                     <option value="">Pcs</option>
 | |
|     //                 </select>
 | |
|     //             </div>
 | |
|     //             <div class="mb-3">
 | |
|     //                 <label for="" class="form-label">Harga</label>
 | |
|     //                 <input type="number" class="form-control">
 | |
|     //             </div>
 | |
|     //     `
 | |
|         //     $('#addNewItemWrapper').html(a)
 | |
|         //     $('.select2').select2({
 | |
|         //         dropdownParent: $('#mdlAddItem')
 | |
|         //     });
 | |
|         // } else {
 | |
|         //     $('#addNewItemContent').remove()
 | |
|         // }
 | |
|         // })
 | |
|     </script>
 | |
|     <script>
 | |
|         'use strict'
 | |
| 
 | |
|         const State = {
 | |
|             ord_id: "{{ $order->ord_id }}",
 | |
|             ord_code: "{{ $order->ord_code }}",
 | |
|             set_pck_at: "{{ $order->set_pck_at }}",
 | |
|             fix_price_at: "{{ $order->fix_price_at }}",
 | |
|             order_place_at: "{{ $order->crt }}",
 | |
|             is_paid: {
 | |
|                 not: "{{ App\Models\OrdersAItems::IS_PAID_NO }}",
 | |
|                 paid: "{{ App\Models\OrdersAItems::IS_PAID_YES }}",
 | |
|             },
 | |
|             ddln_pay_type: {
 | |
|                 time: "{{ App\Models\OrdersAItems::DDLN_PAY_TYPE_TIME }}",
 | |
|                 ord_finish: "{{ App\Models\OrdersAItems::DDLN_PAY_TYPE_ORD_FINISH }}",
 | |
|             },
 | |
|             invc_to_client: {
 | |
|                 not: "{{ App\Models\OrdersAItems::INVC_TO_CLIENT_NO }}",
 | |
|                 yes: "{{ App\Models\OrdersAItems::INVC_TO_CLIENT_YES }}",
 | |
|             },
 | |
|             only_client: {
 | |
|                 not: "{{ App\Models\OrdersAItems::ONLY_CLIENT_NO }}",
 | |
|                 yes: "{{ App\Models\OrdersAItems::ONLY_CLIENT_YES }}",
 | |
|             },
 | |
|             calc_to_vdr: {
 | |
|                 not: "{{ App\Models\OrdersAItems::CALC_TO_VDR_NO }}",
 | |
|                 yes: "{{ App\Models\OrdersAItems::CALC_TO_VDR_YES }}",
 | |
|             },
 | |
|             is_adm_price: {
 | |
|                 no: "{{ App\Models\AItems::IS_ADM_PRICE_NO }}",
 | |
|                 yes: "{{ App\Models\AItems::IS_ADM_PRICE_YES }}",
 | |
|             },
 | |
|             crt_type: {
 | |
|                 system: "{{ App\Models\OrdersAItems::CRT_TYPE_SYSTEM }}",
 | |
|                 admin: "{{ App\Models\OrdersAItems::CRT_TYPE_ADMIN }}",
 | |
|                 finance: "{{ App\Models\OrdersAItems::CRT_TYPE_FINANCE }}",
 | |
|             },
 | |
|             flow_type: {
 | |
|                 payment: "{{ App\Models\OrdersAItems::FLOW_TYPE_PAYMENT }}",
 | |
|                 billing: "{{ App\Models\OrdersAItems::FLOW_TYPE_BILLING }}",
 | |
|                 hybrid: "{{ App\Models\OrdersAItems::FLOW_TYPE_HYBRID }}",
 | |
|             },
 | |
|             cash_type: {
 | |
|                 out: "{{ App\Models\OrdersAItems::TYPE_CASH_OUT }}",
 | |
|                 in: "{{ App\Models\OrdersAItems::TYPE_CASH_IN }}",
 | |
|                 hybrid: "{{ App\Models\OrdersAItems::TYPE_CASH_HYBRID }}",
 | |
|             },
 | |
|             invc_amt_type: {
 | |
|                 flat: "{{ \App\Models\OrdersInvoices::AMT_TYPE_FLAT }}",
 | |
|                 percent: "{{ \App\Models\OrdersInvoices::AMT_TYPE_PERCENT }}",
 | |
|             },
 | |
|             stts_gnrt_invc: {
 | |
|                 no: "{{ \App\Models\OrdersInvoices::IS_GNRT_INVC_NO }}",
 | |
|                 yes: "{{ \App\Models\OrdersInvoices::IS_GNRT_INVC_YES }}",
 | |
|             },
 | |
|             tax_type: {
 | |
|                 without: "{{ App\Models\OrdersAItems::AMT_TAX_TYPE_WITHOUT }}",
 | |
|                 include: "{{ App\Models\OrdersAItems::AMT_TAX_TYPE_INCLUDE }}",
 | |
|                 exclude: "{{ App\Models\OrdersAItems::AMT_TAX_TYPE_EXCLUDE }}",
 | |
|                 ppn_percent: "{{ App\Models\OrdersAItems::PPN_PERCENT }}",
 | |
|                 ppn_percent_include: Number("{{ App\Models\OrdersAItems::PPN_PERCENT_INCLUDE }}"),
 | |
|                 pph_percent: "{{ App\Models\OrdersAItems::PPH_PERCENT }}",
 | |
|             },
 | |
|             ord_pck_drop: {
 | |
|                 is_aprv_no: "{{ App\Models\OrdersPckDrop::IS_APRV_NO }}",
 | |
|                 is_aprv_yes: "{{ App\Models\OrdersPckDrop::IS_APRV_YES }}",
 | |
|             },
 | |
|             ord: {
 | |
|                 ord_id: "{{ $order->ord_id }}",
 | |
|                 ord_code: "{{ $order->ord_code }}",
 | |
|                 ord_client_id: "{{ $order->ord_client_id }}",
 | |
|                 c_pt_id: "{{ $order->c_pt_id }}",
 | |
|             },
 | |
|             aprv_pck_at: "{{ $order->aprv_pck_at }}",
 | |
|             delay_type_number: 1000,
 | |
|             adtPoints: JSON.parse('{!! $adtPointsJson !!}'),
 | |
|             storage_lara: "{{ asset('storage') }}/",
 | |
|             file_jimp_worker: "{{ asset('assets/js/worker/jimp.js') }}",
 | |
|             route_download_invc: "{{ route('view_finance_download_invoice') }}",
 | |
|         };
 | |
| 
 | |
|         const Wrapper = {
 | |
|             activate: function() {
 | |
|                 Wrapper.event();
 | |
|                 OrdView.activate();
 | |
|                 OrdAItem.activate();
 | |
|                 OrdInvc.activate();
 | |
|                 OrdTax.activate();
 | |
|                 OrdPayInvc.activate();
 | |
|                 OrdDelItem.activate();
 | |
|                 ChangePICInvoice.activate();
 | |
|             },
 | |
|             event: function() {
 | |
|                 $('#view-pickup_at').text(moment.unix(State.set_pck_at).format('DD MMM YYYY HH:mm:ss'));
 | |
|                 $('#view-pickup_date_at').text(moment.unix(State.set_pck_at).format('DD MMM YYYY'));
 | |
|                 $('#view-pickup_time_at').text(moment.unix(State.set_pck_at).format('HH:mm:ss'));
 | |
|                 $('#btnMdlNewAdtItem').on('click', function() {
 | |
|                     $('#inpt-is_paid_proof-base64').val('');
 | |
|                     $('#inpt-is_paid_proof-file').val('');
 | |
|                     $('#inpt-group_rotate_is_paid_proof').addClass('d-none');
 | |
|                     $('#inpt-is_paid_proof-img').addClass('d-none');
 | |
| 
 | |
|                     $('#inpt-submission_proof-base64').val('');
 | |
|                     $('#inpt-submission_proof-file').val('');
 | |
|                     $('#inpt-group_rotate_submission_proof').addClass('d-none');
 | |
|                     $('#inpt-submission_proof-img').addClass('d-none');
 | |
| 
 | |
|                     $('#mdlAddItem').modal('show');
 | |
|                 });
 | |
| 
 | |
|                 if (State.aprv_pck_at != 0) $('#aprvPckAt').text(moment.unix(State.aprv_pck_at).format('DD MMM YYYY HH:mm'));
 | |
|                 for (let fotoCrt of $('.foto-crt')) {
 | |
|                     fotoCrt = $(fotoCrt);
 | |
|                     fotoCrt.text(moment.unix(fotoCrt.data('crt')).format('DD MMM YYYY HH:mm'));
 | |
|                 }
 | |
|             },
 | |
|         };
 | |
| 
 | |
|         const OrdView = {
 | |
|             activate: function() {
 | |
|                 OrdView.event();
 | |
|                 OrdView.initDateAdtPoints();
 | |
|             },
 | |
|             event: function() {},
 | |
|             reqShowAItem: function(params) {
 | |
|                 return new Promise((resolve, reject) => {
 | |
|                     $.ajax({
 | |
|                         url: "{{ route('api_finance_show_a_item', '') }}/" + params.ord_a_item_id,
 | |
|                         method: 'GET',
 | |
|                         crossDomain: true,
 | |
|                         processData: true,
 | |
|                         headers: {
 | |
|                             'x-api-key': Helper.getCookie('_trtk'),
 | |
|                         },
 | |
|                         data: params,
 | |
|                         success: (data, textStatus, jqXHR) => {
 | |
|                             if (data.meta.type != 'success') {
 | |
|                                 resolve({
 | |
|                                     type: 'fail'
 | |
|                                 });
 | |
|                                 Helper.toast('Warning', 'just now', data.meta.message);
 | |
|                                 return false;
 | |
|                             }
 | |
|                             resolve({
 | |
|                                 type: 'success',
 | |
|                                 data: data.data
 | |
|                             });
 | |
|                         },
 | |
|                         error: (jqXHR, textStatus, error) => {
 | |
|                             if (jqXHR.status >= 500) {
 | |
|                                 Helper.toast('Error', 'just now', 'please try again');
 | |
|                             } else {
 | |
|                                 Helper.toast('Error', 'just now', jqXHR.responseJSON.meta
 | |
|                                     .message);
 | |
|                             }
 | |
|                             resolve({
 | |
|                                 type: 'error'
 | |
|                             });
 | |
|                         }
 | |
|                     })
 | |
|                 });
 | |
|             },
 | |
|             initDateAdtPoints: function() {
 | |
|                 for (let iAdtPoint in State.adtPoints) {
 | |
|                     iAdtPoint = Number(iAdtPoint);
 | |
|                     $(`#view-pickup_date_at${iAdtPoint+1}`).text(moment.unix(State.adtPoints[iAdtPoint].set_pck_at).format('DD MMM YYYY'));
 | |
|                     $(`#view-pickup_time_at${iAdtPoint+1}`).text(moment.unix(State.adtPoints[iAdtPoint].set_pck_at).format('HH:mm:ss'));
 | |
|                 }
 | |
|             },
 | |
|         };
 | |
| 
 | |
|         const OrdAItem = {
 | |
|             activate: function() {
 | |
|                 OrdAItem.event();
 | |
|             },
 | |
|             event: function() {
 | |
|                 // init select2
 | |
|                 $('#slcItem').select2({
 | |
|                     dropdownParent: $('#mdlAddItem'),
 | |
|                 });
 | |
|                 $('#add-item_type').select2({
 | |
|                     dropdownParent: $('#mdlAddItem'),
 | |
|                 });
 | |
|                 $('#add-item_bill_tax_type').select2({
 | |
|                     dropdownParent: $('#mdlAddItem'),
 | |
|                 });
 | |
|                 // event select
 | |
|                 $('#slcItem').on('change', function() {
 | |
|                     let slc = $('#slcItem option:selected');
 | |
|                     if (slc.val() === 'new') {
 | |
|                         $('#addNewItemWrapper').removeClass('d-none');
 | |
|                         OrdAItem.toggleAddItemIsAdmPrice('unchecked');
 | |
|                         $('#slcItemPrice').text('');
 | |
|                     } else {
 | |
|                         $('#addNewItemWrapper').addClass('d-none');
 | |
|                         OrdAItem.clearInputAddNewItem();
 | |
|                         $('#slcItemPrice').text('Harga: Rp' + (new Intl.NumberFormat('id-ID')).format(slc.data('price')));
 | |
|                     }
 | |
|                 });
 | |
|                 // input
 | |
|                 $('#add-item_price').on('keyup', function() {
 | |
|                     let price = $('#add-item_price').val().split('.').join('').replace(/[$,]+/g, ".");
 | |
|                     $('#add-item_price').val((new Intl.NumberFormat('id-ID')).format(price));
 | |
|                 });
 | |
|                 // submit
 | |
|                 $('#btnSubmitAddItem').on('click', function(e) {
 | |
|                     e.preventDefault();
 | |
|                     let data = OrdAItem.getData();
 | |
|                     let isValid = OrdAItem.checkData(data, true);
 | |
|                     if (!isValid) return false;
 | |
|                     OrdAItem.submitData(data);
 | |
|                 });
 | |
|                 OrdAItem.eventTax();
 | |
|             },
 | |
|             eventTax: function() {
 | |
|                 // client
 | |
|                 $('#add-item_bill_tax_type').on('change', function() {
 | |
|                     const val = $('#add-item_bill_tax_type').val();
 | |
|                     if (val == State.tax_type.include) {
 | |
|                         $('.groupTaxBill').removeClass('d-none');
 | |
|                         $('#add-item_bill_tax_ppn_percent').val(State.tax_type.ppn_percent);
 | |
|                         $('#add-item_bill_tax_pph_percent').val(State.tax_type.pph_percent);
 | |
|                     } else if (val == State.tax_type.exclude) {
 | |
|                         $('.groupTaxBill').removeClass('d-none');
 | |
|                         $('#add-item_bill_tax_ppn_percent').val(State.tax_type.ppn_percent);
 | |
|                         $('#add-item_bill_tax_pph_percent').val(State.tax_type.pph_percent);
 | |
|                     } else { // without
 | |
|                         $('.groupTaxBill').addClass('d-none');
 | |
|                         $('#add-item_bill_tax_ppn_percent').val('');
 | |
|                         $('#add-item_bill_tax_pph_percent').val('');
 | |
|                     }
 | |
| 
 | |
|                     let calcTax = OrdAItem.calcTax('client');
 | |
|                     $('#add-item_bill_tax_ppn_flat').val((new Intl.NumberFormat('id-ID')).format(calcTax.ppn_flat));
 | |
|                     $('#add-item_bill_tax_pph_flat').val((new Intl.NumberFormat('id-ID')).format(calcTax.pph_flat));
 | |
|                     $('#add-item_bill_tax_total_flat').val((new Intl.NumberFormat('id-ID')).format(calcTax.total_tax));
 | |
|                 });
 | |
|                 let ppnPercentTimeoutBill = null;
 | |
|                 $('#add-item_bill_tax_ppn_percent').on('keyup', function() {
 | |
|                     clearTimeout(ppnPercentTimeoutBill);
 | |
|                     ppnPercentTimeoutBill = setTimeout(() => {
 | |
|                         let ppn_percent = $('#add-item_bill_tax_ppn_percent').val();
 | |
|                         // $('#add-item_bill_tax_ppn_percent').val(ppn_percent.replaceAll(/,/ig, '.')); // gaperlu udah dihanle kalo format numeric
 | |
|                         let calcTax = OrdAItem.calcTax('client');
 | |
|                         $('#add-item_bill_tax_ppn_flat').val((new Intl.NumberFormat('id-ID')).format(calcTax.ppn_flat));
 | |
|                         $('#add-item_bill_tax_pph_flat').val((new Intl.NumberFormat('id-ID')).format(calcTax.pph_flat));
 | |
|                         $('#add-item_bill_tax_total_flat').val((new Intl.NumberFormat('id-ID')).format(calcTax.total_tax));
 | |
|                     }, State.delay_type_number);
 | |
|                 });
 | |
|                 let pphPercentTimeoutBill = null;
 | |
|                 $('#add-item_bill_tax_pph_percent').on('keyup', function() {
 | |
|                     clearTimeout(pphPercentTimeoutBill);
 | |
|                     pphPercentTimeoutBill = setTimeout(() => {
 | |
|                         let pph_percent = $('#add-item_bill_tax_pph_percent').val();
 | |
|                         // $('#add-item_bill_tax_pph_percent').val(pph_percent.replaceAll(/,/ig, '.')); // gaperlu udah dihanle kalo format numeric
 | |
|                         let calcTax = OrdAItem.calcTax('client');
 | |
|                         $('#add-item_bill_tax_ppn_flat').val((new Intl.NumberFormat('id-ID')).format(calcTax.ppn_flat));
 | |
|                         $('#add-item_bill_tax_pph_flat').val((new Intl.NumberFormat('id-ID')).format(calcTax.pph_flat));
 | |
|                         $('#add-item_bill_tax_total_flat').val((new Intl.NumberFormat('id-ID')).format(calcTax.total_tax));
 | |
|                     }, State.delay_type_number);
 | |
|                 });
 | |
|                 $('#slcItem').on('change', function() {
 | |
|                     // $('#add-item_bill_tax_pph_percent').val(pph_percent.replaceAll(/,/ig, '.')); // gaperlu udah dihanle kalo format numeric
 | |
|                     let calcTax = OrdAItem.calcTax('client');
 | |
|                     $('#add-item_bill_tax_ppn_flat').val((new Intl.NumberFormat('id-ID')).format(calcTax.ppn_flat));
 | |
|                     $('#add-item_bill_tax_pph_flat').val((new Intl.NumberFormat('id-ID')).format(calcTax.pph_flat));
 | |
|                     $('#add-item_bill_tax_total_flat').val((new Intl.NumberFormat('id-ID')).format(calcTax.total_tax));
 | |
|                 });
 | |
|                 let newItemTimeoutBill = null;
 | |
|                 $('#add-item_price').on('keyup', function() {
 | |
|                     clearTimeout(newItemTimeoutBill);
 | |
|                     newItemTimeoutBill = setTimeout(() => {
 | |
|                         let calcTax = OrdAItem.calcTax('client');
 | |
|                         $('#add-item_bill_tax_ppn_flat').val((new Intl.NumberFormat('id-ID')).format(calcTax.ppn_flat));
 | |
|                         $('#add-item_bill_tax_pph_flat').val((new Intl.NumberFormat('id-ID')).format(calcTax.pph_flat));
 | |
|                         $('#add-item_bill_tax_total_flat').val((new Intl.NumberFormat('id-ID')).format(calcTax.total_tax));
 | |
|                     }, State.delay_type_number);
 | |
|                 });
 | |
|             },
 | |
|             calcTax: function(type = 'client') {
 | |
|                 let calc = {};
 | |
| 
 | |
|                 if (type === 'client') {
 | |
|                     calc = {
 | |
|                         tax_type: Number($('#add-item_bill_tax_type').val()),
 | |
|                         ppn_percent: Number($('#add-item_bill_tax_ppn_percent').val()),
 | |
|                         pph_percent: Number($('#add-item_bill_tax_pph_percent').val()),
 | |
|                         qty: Number($('#add-item_qty').val()),
 | |
|                     };
 | |
|                     let slcType = $('#slcItem option:selected');
 | |
|                     if (slcType.val() === 'new') {
 | |
|                         calc.price = Number($('#add-item_price').val().split('.').join(''));
 | |
|                     } else if (slcType.val() === '') {} else {
 | |
|                         calc.price = Number(slcType.data('price'));
 | |
|                     }
 | |
|                 }
 | |
| 
 | |
|                 if (calc.tax_type == State.tax_type.include) {
 | |
|                     calc.ppn_flat = calc.price - (calc.price / State.tax_type.PPN_PERCENT_INCLUDE);
 | |
|                     const before_ppn = calc.price - calc.ppn_flat;
 | |
|                     calc.pph_flat = before_ppn * calc.pph_percent / 100;
 | |
|                     const before_ppn_pph = calc.price - calc.ppn_flat - calc.pph_flat;
 | |
|                     calc.total_tax = before_ppn_pph;
 | |
|                 } else if (calc.tax_type == State.tax_type.exclude) {
 | |
|                     calc.ppn_flat = calc.price * calc.ppn_percent / 100;
 | |
|                     const after_ppn = calc.price + calc.ppn_flat;
 | |
|                     calc.pph_flat = after_ppn * calc.pph_percent / 100;
 | |
|                     calc.total_tax = calc.price + calc.ppn_flat + calc.pph_flat;
 | |
|                 } else { // without
 | |
|                     calc.ppn_flat = 0;
 | |
|                     calc.pph_flat = 0;
 | |
|                     calc.total_tax = calc.price;
 | |
|                 }
 | |
| 
 | |
|                 return calc;
 | |
|             },
 | |
|             getData: function() {
 | |
|                 const data = {};
 | |
| 
 | |
|                 let slcType = $('#slcItem option:selected');
 | |
|                 if (slcType.val() === 'new') {
 | |
|                     data.a_id = '00';
 | |
|                     data.a_name = $('#add-item_name').val();
 | |
|                     data.a_type = $('#add-item_type').val();
 | |
|                     data.a_price = $('#add-item_price').val().split('.').join('').replace(/[$,]+/g, ".");
 | |
|                     data.a_invc_price = $('#add-item_price').val().split('.').join('').replace(/[$,]+/g, ".");
 | |
|                     if ($('#add-item_isAdmPrice').prop('checked')) {
 | |
|                         data.is_adm_price = State.is_adm_price.yes
 | |
|                     } else {
 | |
|                         data.is_adm_price = State.is_adm_price.no
 | |
|                     }
 | |
|                 } else if (slcType.val() === '') {} else {
 | |
|                     data.a_id = slcType.val(); // id
 | |
|                     data.a_name = slcType.data('name');
 | |
|                     data.a_type = slcType.data('type');
 | |
|                     data.a_price = slcType.data('price');
 | |
|                     data.a_invc_price = slcType.data('price');
 | |
|                     data.is_adm_price = slcType.data('is_adm_price');
 | |
|                 }
 | |
|                 let calcTaxClient = OrdAItem.calcTax('client');
 | |
|                 data.a_invc_price_tax_type = State.tax_type.without;
 | |
|                 // data.a_invc_price_tax_type = calcTaxClient.tax_type;
 | |
|                 // data.a_invc_price_tax_ppn_percent = calcTaxClient.ppn_percent;
 | |
|                 // data.a_invc_price_tax_ppn_flat = calcTaxClient.ppn_flat;
 | |
|                 // data.a_invc_price_tax_pph_percent = calcTaxClient.pph_percent;
 | |
|                 // data.a_invc_price_tax_pph_flat = calcTaxClient.pph_flat;
 | |
|                 // data.a_invc_price_total_tax = calcTaxClient.total_tax;
 | |
|                 data.a_qty = $('#add-item_qty').val();
 | |
| 
 | |
|                 data.is_invc_to_client = State.invc_to_client.yes;
 | |
|                 data.only_client = State.only_client.yes;
 | |
|                 data.cash_type = State.cash_type.in;
 | |
|                 data.flow_type = State.flow_type.billing;
 | |
| 
 | |
|                 data.ord_id = State.ord_id;
 | |
|                 data.ddln_pay_type = State.ddln_pay_type.time;
 | |
|                 data.is_calc_to_vdr = State.calc_to_vdr.no;
 | |
|                 data.crt_type = State.crt_type.finance;
 | |
| 
 | |
|                 return data;
 | |
|             },
 | |
|             checkData: function(data, isAlert = false) {
 | |
|                 if (typeof data.a_id == 'undefined') {
 | |
|                     if (isAlert) Helper.toast('Warning', 'just now', 'Item wajib diisi');
 | |
|                     return false;
 | |
|                 }
 | |
|                 if (data.a_name == '' || data.a_name == null) {
 | |
|                     if (isAlert) Helper.toast('Warning', 'just now', 'Item nama wajib diisi');
 | |
|                     return false;
 | |
|                 }
 | |
|                 if (data.a_type == '' || data.a_type == null) {
 | |
|                     if (isAlert) Helper.toast('Warning', 'just now', 'Item satuan wajib diisi');
 | |
|                     return false;
 | |
|                 }
 | |
|                 if (data.a_invc_price < 0) {
 | |
|                     if (isAlert) Helper.toast('Warning', 'just now', 'Item harga wajib diisi');
 | |
|                     return false;
 | |
|                 }
 | |
|                 if (typeof data.a_qty == 'undefined' || Number(data.a_qty) < 1) {
 | |
|                     if (isAlert) Helper.toast('Warning', 'just now', 'Jumlah wajib diisi');
 | |
|                     return false;
 | |
|                 }
 | |
|                 return true;
 | |
|             },
 | |
|             submitData: async function(data) {
 | |
|                 return new Promise((resolve, reject) => {
 | |
|                     if (typeof $('#btnSubmitAddItem').attr('disabed') != 'undefined') {
 | |
|                         resolve({
 | |
|                             type: 'fail'
 | |
|                         });
 | |
|                         return false;
 | |
|                     }
 | |
|                     $('#btnSubmitAddItem').attr('disabed', true);
 | |
|                     $.ajax({
 | |
|                         url: "{{ route('api_finance_add_a_items') }}",
 | |
|                         method: 'POST',
 | |
|                         crossDomain: true,
 | |
|                         processData: true,
 | |
|                         headers: {
 | |
|                             'x-api-key': Helper.getCookie('_trtk'),
 | |
|                             'x-csrf-token': $('meta[name="csrf-token"]').attr('content'),
 | |
|                         },
 | |
|                         data: data,
 | |
|                         success: (data, textStatus, jqXHR) => {
 | |
|                             $('#btnSubmitAddItem').removeAttr('disabed');
 | |
|                             if (data.meta.type != 'success') {
 | |
|                                 resolve({
 | |
|                                     type: 'fail'
 | |
|                                 });
 | |
|                                 Helper.toast('Warning', 'just now', data.meta.message);
 | |
|                                 return false;
 | |
|                             }
 | |
|                             Helper.toast('Success', 'just now', 'success add item');
 | |
|                             $('#mdlAddItem').modal('hide');
 | |
|                             window.location.href = window.location.href;
 | |
|                             resolve({
 | |
|                                 type: 'success'
 | |
|                             });
 | |
|                         },
 | |
|                         error: (jqXHR, textStatus, error) => {
 | |
|                             $('#btnSubmitAddItem').removeAttr('disabed');
 | |
|                             if (jqXHR.status >= 500) {
 | |
|                                 Helper.toast('Error', 'just now', 'Please try again');
 | |
|                             } else {
 | |
|                                 Helper.toast('Error', 'just now', jqXHR.responseJSON.meta
 | |
|                                     .message);
 | |
|                             }
 | |
|                             resolve({
 | |
|                                 type: 'error'
 | |
|                             });
 | |
|                         }
 | |
|                     })
 | |
|                 })
 | |
|             },
 | |
|             toggleAddItemIsAdmPrice: function(toggle = 'checked') {
 | |
|                 if (toggle === 'checked') {
 | |
|                     $('#add-item_isAdmPrice').prop('checked', true).trigger('change');
 | |
|                 } else {
 | |
|                     $('#add-item_isAdmPrice').prop('checked', false).trigger('change');
 | |
|                 }
 | |
|             },
 | |
|             clearInputAddNewItem: function() {
 | |
|                 $('#add-item_name').val('');
 | |
|                 $('#add-item_type').val('').trigger('change');
 | |
|                 $('#add-item_price').val('');
 | |
|                 $('#add-item_qty').val('');
 | |
|                 OrdAItem.toggleAddItemIsAdmPrice('unchecked');
 | |
|             },
 | |
|         };
 | |
| 
 | |
|         const OrdInvc = {
 | |
|             activate: function() {
 | |
|                 OrdInvc.event();
 | |
|                 // OrdInvc.updtInvc();
 | |
|             },
 | |
|             updtInvc: function() {
 | |
|                 if ($('#confirmInvc').data('id')) {
 | |
|                     let data = OrdInvc.getData('gnrt_invc');
 | |
|                     let isValid = OrdInvc.checkData(data, true);
 | |
|                     if (!isValid) return false;
 | |
|                     let result = OrdInvc.gnrtInvc(data);
 | |
|                 }
 | |
|             },
 | |
|             event: function() {
 | |
|                 // init select2
 | |
|                 $('#addDisc').select2({
 | |
|                     dropdownParent: $('#mdlDiskon')
 | |
|                 });
 | |
|                 // event select
 | |
|                 $('#addDisc').on('change', function() {
 | |
|                     let slc = $('#addDisc option:selected');
 | |
|                     $('#disFieldWrapper').removeClass('d-none');
 | |
|                     $('#discPercent').val('');
 | |
|                     $('#discFlat').val('');
 | |
|                     $('#groupDiscFlat').removeClass('d-none');
 | |
|                     if (slc.val() == State.invc_amt_type.percent) {
 | |
|                         $('#groupDiscPercent').removeClass('d-none');
 | |
|                         $('#discFlat').attr('readonly', true);
 | |
|                     } else if (slc.val() == State.invc_amt_type.flat) {
 | |
|                         $('#groupDiscPercent').addClass('d-none');
 | |
|                         $('#discFlat').removeAttr('readonly');
 | |
|                     } else {
 | |
|                         $('#groupDiscPercent').addClass('d-none');
 | |
|                         $('#discFlat').attr('readonly', true);
 | |
|                         $('#groupDiscFlat').addClass('d-none');
 | |
|                     }
 | |
|                 });
 | |
|                 $('#addDisc').val($('#subTotal').data('disctype')).trigger('change');
 | |
|                 $('#discPercent').val($('#subTotal').data('discpercent'));
 | |
|                 $('#discFlat').val((new Intl.NumberFormat('id-ID')).format($('#subTotal').data('discflat')));
 | |
|                 // input
 | |
|                 $('#discFlat').on('keyup', function() {
 | |
|                     let price = $('#discFlat').val().split('.').join('').replace(/[$,]+/g, ".");
 | |
|                     if (Number(price) < 1) {
 | |
|                         Helper.toast('Warning', 'just now', 'Besaran diskon wajib diisi');
 | |
|                     }
 | |
|                     $('#discFlat').val((new Intl.NumberFormat('id-ID')).format(price));
 | |
|                 });
 | |
|                 $('#discPercent').on('keyup', function() {
 | |
|                     let percent = $('#discPercent').val();
 | |
|                     let subTotal = $('#subTotal').data('subtotal');
 | |
|                     let total = $('#subTotal').data('total');
 | |
|                     if (Number(percent) < 0) {
 | |
|                         Helper.toast('Warning', 'just now', 'Diskon percent wajib diisi');
 | |
|                         return true;
 | |
|                     }
 | |
|                     if (Number(percent) > 100) {
 | |
|                         Helper.toast('Warning', 'just now', 'Diskon percent maksimal 100%');
 | |
|                         return false;
 | |
|                     }
 | |
|                     let price = 0;
 | |
|                     let taxType = $('#subTotal').data('taxtype');
 | |
|                     if (taxType == State.tax_type.include) { // sudah termasuk pajak
 | |
|                         price = total * percent / 100;
 | |
|                     } else if (taxType == State.tax_type.exclude) { // belum termasuk pajak
 | |
|                         price = subTotal * percent / 100;
 | |
|                     } else {
 | |
|                         price = subTotal * percent / 100;
 | |
|                     }
 | |
|                     $('#discFlat').val((new Intl.NumberFormat('id-ID')).format(price));
 | |
|                 });
 | |
|                 // submit
 | |
|                 $('#btnSaveDisc').on('click', async function(e) {
 | |
|                     e.preventDefault();
 | |
|                     let data = OrdInvc.getData('save_disc');
 | |
|                     let isValid = OrdInvc.checkData(data, true);
 | |
|                     if (!isValid) return false;
 | |
|                     let result = await OrdInvc.submitDataDisc(data);
 | |
|                     if (result.type != 'success') return false;
 | |
|                     Helper.toast('Success', 'just now', 'success update discount');
 | |
|                     $('#mdlDiskon').modal('hide');
 | |
|                     window.location.href = window.location.href;
 | |
|                 });
 | |
|                 $('#btnGnrtInvc').on('click', async function(e) {
 | |
|                     e.preventDefault();
 | |
|                     let data = OrdInvc.getData('gnrt_invc');
 | |
|                     data.is_gnrt_invc = State.stts_gnrt_invc.yes;
 | |
|                     let isValid = OrdInvc.checkData(data, true);
 | |
|                     if (!isValid) return false;
 | |
|                     let result = await OrdInvc.gnrtInvc(data);
 | |
|                     if (result.type != 'success') return false;
 | |
|                     window.open(State.route_download_invc + '?code=' + result.resp.code, '_blank').focus();
 | |
|                     setTimeout(() => {
 | |
|                         window.location.href = window.location.href;
 | |
|                     }, 2000);
 | |
|                 });
 | |
|             },
 | |
|             getData: function(type = 'save_disc') {
 | |
|                 const data = {};
 | |
| 
 | |
|                 data.ord_id = State.ord_id;
 | |
|                 data.ord_code = State.ord_code;
 | |
|                 data.termin_id = $('#subTotal').data('terminid');
 | |
| 
 | |
|                 data.items = $('#subTotal').data('items');
 | |
|                 data.subtotal = Number($('#subTotal').data('subtotal'));
 | |
| 
 | |
|                 data.tax_type = State.invc_amt_type.percent;
 | |
|                 data.tax_type_kind = Number($('#subTotal').data('taxtype'));
 | |
|                 data.ppn_percent = Number($('#subTotal').data('ppnpercent'));
 | |
|                 data.ppn_flat = Number($('#subTotal').data('ppnflat'));
 | |
|                 data.pph_percent = Number($('#subTotal').data('pphpercent'));
 | |
|                 data.pph_flat = Number($('#subTotal').data('pphflat'));
 | |
|                 data.tax_flat = Number($('#subTotal').data('taxflat'));
 | |
|                 data.total = Number($('#subTotal').data('total'));
 | |
| 
 | |
|                 if (type === 'save_disc') {
 | |
|                     let discType = $('#addDisc option:selected');
 | |
|                     data.disc_type = discType.val();
 | |
|                     if (data.disc_type == State.invc_amt_type.flat || data.disc_type == State.invc_amt_type.percent) {} else {
 | |
|                         data.disc_type = 0;
 | |
|                     }
 | |
|                     data.disc_percent = Number($('#discPercent').val());
 | |
|                     data.disc_flat = Number($('#discFlat').val().split('.').join('').replace(/[$,]+/g, "."));
 | |
|                 } else {
 | |
|                     data.disc_type = Number($('#subTotal').data('disctype'));
 | |
|                     data.disc_percent = Number($('#subTotal').data('discpercent'));
 | |
|                     data.disc_flat = Number($('#subTotal').data('discflat'));
 | |
|                 }
 | |
| 
 | |
|                 // sebelum ada ppn & pph
 | |
|                 // data.total = data.subtotal - data.disc_flat;
 | |
|                 // data.tax_flat = data.total * data.ppn_percent / 100;
 | |
|                 // data.total += data.tax_flat;
 | |
| 
 | |
|                 return data;
 | |
|             },
 | |
|             checkData: function(data, isAlert = false) {
 | |
|                 if (data.disc_type == State.invc_amt_type.percent) {
 | |
|                     if (data.disc_percent < 0) {
 | |
|                         if (isAlert) Helper.toast('Warning', 'just now', 'Diskon percent wajib diisi');
 | |
|                         return false;
 | |
|                     }
 | |
|                     if (data.disc_percent > 100) {
 | |
|                         if (isAlert) Helper.toast('Warning', 'just now', 'Diskon percent maksimal 100%');
 | |
|                         return false;
 | |
|                     }
 | |
|                 } else if (data.disc_type == State.invc_amt_type.flat) {
 | |
|                     if (data.disc_flat < 1) {
 | |
|                         Helper.toast('Warning', 'just now', 'Besaran diskon wajib diisi');
 | |
|                     }
 | |
|                 }
 | |
|                 return true;
 | |
|             },
 | |
|             submitDataDisc: async function(data) {
 | |
|                 return new Promise((resolve, reject) => {
 | |
|                     if (typeof $('#btnSaveDisc').attr('disabed') != 'undefined') {
 | |
|                         resolve({
 | |
|                             type: 'fail'
 | |
|                         });
 | |
|                         return false;
 | |
|                     }
 | |
|                     $('#btnSaveDisc').attr('disabed', true);
 | |
|                     $.ajax({
 | |
|                         url: "{{ route('api_finance_crt_updt_invc') }}",
 | |
|                         method: 'POST',
 | |
|                         crossDomain: true,
 | |
|                         processData: true,
 | |
|                         headers: {
 | |
|                             'x-api-key': Helper.getCookie('_trtk'),
 | |
|                             'x-csrf-token': $('meta[name="csrf-token"]').attr('content'),
 | |
|                         },
 | |
|                         data: data,
 | |
|                         success: (data, textStatus, jqXHR) => {
 | |
|                             $('#btnSaveDisc').removeAttr('disabed');
 | |
|                             if (data.meta.type != 'success') {
 | |
|                                 resolve({
 | |
|                                     type: 'fail'
 | |
|                                 });
 | |
|                                 Helper.toast('Warning', 'just now', data.meta.message);
 | |
|                                 return false;
 | |
|                             }
 | |
|                             resolve({
 | |
|                                 type: 'success',
 | |
|                                 resp: data,
 | |
|                             });
 | |
|                             window.location.href = window.location.href;
 | |
|                         },
 | |
|                         error: (jqXHR, textStatus, error) => {
 | |
|                             $('#btnSaveDisc').removeAttr('disabed');
 | |
|                             if (jqXHR.status >= 500) {
 | |
|                                 Helper.toast('Error', 'just now', 'Please try again');
 | |
|                             } else {
 | |
|                                 Helper.toast('Error', 'just now', jqXHR.responseJSON.meta
 | |
|                                     .message);
 | |
|                             }
 | |
|                             resolve({
 | |
|                                 type: 'error'
 | |
|                             });
 | |
|                         }
 | |
|                     })
 | |
|                 })
 | |
|             },
 | |
|             gnrtInvc: async function(data) {
 | |
|                 return new Promise((resolve, reject) => {
 | |
|                     if (typeof $('#btnGnrtInvc').attr('disabed') != 'undefined') {
 | |
|                         resolve({
 | |
|                             type: 'fail'
 | |
|                         });
 | |
|                         return false;
 | |
|                     }
 | |
|                     $('#btnGnrtInvc').attr('disabed', true);
 | |
|                     $.ajax({
 | |
|                         url: "{{ route('api_finance_crt_updt_invc') }}",
 | |
|                         method: 'POST',
 | |
|                         crossDomain: true,
 | |
|                         processData: true,
 | |
|                         headers: {
 | |
|                             'x-api-key': Helper.getCookie('_trtk'),
 | |
|                             'x-csrf-token': $('meta[name="csrf-token"]').attr('content'),
 | |
|                         },
 | |
|                         data: data,
 | |
|                         success: (data, textStatus, jqXHR) => {
 | |
|                             $('#btnGnrtInvc').removeAttr('disabed');
 | |
|                             if (data.meta.type != 'success') {
 | |
|                                 resolve({
 | |
|                                     type: 'fail'
 | |
|                                 });
 | |
|                                 Helper.toast('Warning', 'just now', data.meta.message);
 | |
|                                 return false;
 | |
|                             }
 | |
|                             resolve({
 | |
|                                 type: 'success',
 | |
|                                 resp: data,
 | |
|                             });
 | |
|                         },
 | |
|                         error: (jqXHR, textStatus, error) => {
 | |
|                             $('#btnGnrtInvc').removeAttr('disabed');
 | |
|                             if (jqXHR.status >= 500) {
 | |
|                                 Helper.toast('Error', 'just now', 'Please try again');
 | |
|                             } else {
 | |
|                                 Helper.toast('Error', 'just now', jqXHR.responseJSON.meta
 | |
|                                     .message);
 | |
|                             }
 | |
|                             resolve({
 | |
|                                 type: 'error'
 | |
|                             });
 | |
|                         }
 | |
|                     })
 | |
|                 })
 | |
|             },
 | |
|         };
 | |
| 
 | |
|         const OrdTax = {
 | |
|             activate: function() {
 | |
|                 OrdTax.event();
 | |
|             },
 | |
|             event: function() {
 | |
|                 // init select2
 | |
|                 $('#add-invc_tax_type').select2({
 | |
|                     dropdownParent: $('#mdlTax')
 | |
|                 });
 | |
|                 // event select
 | |
|                 $('#add-invc_tax_type').on('change', function() {
 | |
|                     const val = $('#add-invc_tax_type').val();
 | |
|                     if (val == State.tax_type.include) {
 | |
|                         $('.groupTaxTax').removeClass('d-none');
 | |
|                         $('#add-invc_tax_ppn_percent').val(State.tax_type.ppn_percent);
 | |
|                         // $('#add-invc_tax_pph_percent').val(State.tax_type.pph_percent);
 | |
|                         $('#add-invc_tax_pph_percent').val(0);
 | |
|                     } else if (val == State.tax_type.exclude) {
 | |
|                         $('.groupTaxTax').removeClass('d-none');
 | |
|                         $('#add-invc_tax_ppn_percent').val(State.tax_type.ppn_percent);
 | |
|                         // $('#add-invc_tax_pph_percent').val(State.tax_type.pph_percent);
 | |
|                         $('#add-invc_tax_pph_percent').val(0);
 | |
|                     } else { // without
 | |
|                         $('.groupTaxTax').addClass('d-none');
 | |
|                         $('#add-invc_tax_ppn_percent').val('');
 | |
|                         $('#add-invc_tax_pph_percent').val('');
 | |
|                     }
 | |
|                 });
 | |
|                 $('#add-invc_tax_type').trigger('change');
 | |
|                 // submit
 | |
|                 $('#btnSaveTax').on('click', async function(e) {
 | |
|                     e.preventDefault();
 | |
|                     let data = OrdTax.getData();
 | |
|                     let isValid = OrdTax.checkData(data, true);
 | |
|                     if (!isValid) return false;
 | |
|                     let result = await OrdTax.submitDataTax(data);
 | |
|                     if (result.type != 'success') return false;
 | |
|                     Helper.toast('Success', 'just now', 'success save tax');
 | |
|                     $('#mdlTax').modal('hide');
 | |
|                     window.location.href = window.location.href;
 | |
|                 });
 | |
| 
 | |
|                 // init data
 | |
|                 $('#add-invc_tax_type').val($('#subTotal').data('taxtype')).trigger('change');
 | |
|             },
 | |
|             getData: function() {
 | |
|                 const data = {};
 | |
| 
 | |
|                 data.ord_id = State.ord_id;
 | |
|                 data.ord_code = State.ord_code;
 | |
|                 data.termin_id = $('#subTotal').data('terminid');
 | |
| 
 | |
|                 data.items = $('#subTotal').data('items');
 | |
|                 data.subtotal = Number($('#subTotal').data('subtotal'));
 | |
| 
 | |
|                 data.invc_tax_type = $('#add-invc_tax_type').val();
 | |
|                 data.invc_tax_ppn_percent = $('#add-invc_tax_ppn_percent').val() || 0;
 | |
|                 data.invc_tax_pph_percent = $('#add-invc_tax_pph_percent').val() || 0;
 | |
| 
 | |
|                 return data;
 | |
|             },
 | |
|             checkData: function(data, isAlert = false) {
 | |
|                 if (data.invc_tax_type == State.tax_type.without) {} else if (data.invc_tax_type == State.tax_type.include) {} else if (data.invc_tax_type == State.tax_type.exclude) {} else {
 | |
|                     if (isAlert) Helper.toast('Warning', 'just now', 'Perpajakan tidak valid');
 | |
|                     return false;
 | |
|                 }
 | |
| 
 | |
|                 // if (data.invc_tax_ppn_percent < 1) {
 | |
|                 //     if (isAlert) Helper.toast('Warning', 'just now', 'PPN Percent tidak boleh kurang dari 1%');
 | |
|                 //     return false;
 | |
|                 // }
 | |
|                 // if (data.invc_tax_pph_percent < 1) {
 | |
|                 //     if (isAlert) Helper.toast('Warning', 'just now', 'PPH Percent tidak boleh kurang dari 1%');
 | |
|                 //     return false;
 | |
|                 // }
 | |
|                 return true;
 | |
|             },
 | |
|             submitDataTax: async function(data) {
 | |
|                 return new Promise((resolve, reject) => {
 | |
|                     if (typeof $('#btnSaveTax').attr('disabed') != 'undefined') {
 | |
|                         resolve({
 | |
|                             type: 'fail'
 | |
|                         });
 | |
|                         return false;
 | |
|                     }
 | |
|                     $('#btnSaveTax').attr('disabed', true);
 | |
|                     $.ajax({
 | |
|                         url: "{{ route('api_finance_crt_updt_tax') }}",
 | |
|                         method: 'POST',
 | |
|                         crossDomain: true,
 | |
|                         processData: true,
 | |
|                         headers: {
 | |
|                             'x-api-key': Helper.getCookie('_trtk'),
 | |
|                             'x-csrf-token': $('meta[name="csrf-token"]').attr('content'),
 | |
|                         },
 | |
|                         data: data,
 | |
|                         success: (data, textStatus, jqXHR) => {
 | |
|                             $('#btnSaveTax').removeAttr('disabed');
 | |
|                             if (data.meta.type != 'success') {
 | |
|                                 resolve({
 | |
|                                     type: 'fail'
 | |
|                                 });
 | |
|                                 Helper.toast('Warning', 'just now', data.meta.message);
 | |
|                                 return false;
 | |
|                             }
 | |
|                             resolve({
 | |
|                                 type: 'success',
 | |
|                                 resp: data,
 | |
|                             });
 | |
|                             window.location.href = window.location.href;
 | |
|                         },
 | |
|                         error: (jqXHR, textStatus, error) => {
 | |
|                             $('#btnSaveTax').removeAttr('disabed');
 | |
|                             if (jqXHR.status >= 500) {
 | |
|                                 Helper.toast('Error', 'just now', 'Please try again');
 | |
|                             } else {
 | |
|                                 Helper.toast('Error', 'just now', jqXHR.responseJSON.meta
 | |
|                                     .message);
 | |
|                             }
 | |
|                             resolve({
 | |
|                                 type: 'error'
 | |
|                             });
 | |
|                         }
 | |
|                     })
 | |
|                 })
 | |
|             },
 | |
|         };
 | |
| 
 | |
|         const OrdPayInvc = {
 | |
|             activate: function() {
 | |
|                 OrdPayInvc.event();
 | |
|             },
 | |
|             event: function() {
 | |
|                 $('#confirmInvc').on('click', function() {
 | |
|                     // OrdInvc.updtInvc();
 | |
|                 });
 | |
|                 $('#isCheckConfirmInvc').on('change', function() {
 | |
|                     if ($('#isCheckConfirmInvc').prop('checked')) {
 | |
|                         $('#btnConfirmInvc').removeAttr('disabled');
 | |
|                     } else {
 | |
|                         $('#btnConfirmInvc').attr('disabled', true);
 | |
|                     }
 | |
|                 })
 | |
|                 // input
 | |
|                 $('#amt_bill_confirm').on('keyup', function() {
 | |
|                     let price = $('#amt_bill_confirm').val().split('.').join('').replace(/[$,]+/g, ".");
 | |
|                     $('#amt_bill_confirm').val((new Intl.NumberFormat('id-ID')).format(price));
 | |
|                 });
 | |
|                 // submit
 | |
|                 $('#btnConfirmInvc').on('click', async function(e) {
 | |
|                     e.preventDefault();
 | |
|                     let data = OrdPayInvc.getData();
 | |
|                     OrdPayInvc.submitConfirm(data);
 | |
|                 });
 | |
|             },
 | |
|             getData: function() {
 | |
|                 let data = {};
 | |
| 
 | |
|                 data.invc_id = $('#confirmInvc').data('id');
 | |
|                 data.invc_code = $('#confirmInvc').data('code');
 | |
|                 data.amt_invoicing = Number($('#subTotal').data('total'));
 | |
|                 data.amt_bill_confirm = Number($('#amt_bill_confirm').val().split('.').join('').replace(/[$,]+/g, "."));
 | |
|                 data.amt_bill_confirm_note = $('#amt_bill_confirm_note').val();
 | |
| 
 | |
|                 return data;
 | |
|             },
 | |
|             submitConfirm: async function(data) {
 | |
|                 return new Promise((resolve, reject) => {
 | |
|                     if (typeof $('#btnConfirmInvc').attr('disabed') != 'undefined') {
 | |
|                         resolve({
 | |
|                             type: 'fail'
 | |
|                         });
 | |
|                         return false;
 | |
|                     }
 | |
|                     $('#btnConfirmInvc').attr('disabed', true);
 | |
|                     $.ajax({
 | |
|                         url: "{{ route('api_finance_confirm_invc') }}",
 | |
|                         method: 'PUT',
 | |
|                         crossDomain: true,
 | |
|                         processData: true,
 | |
|                         headers: {
 | |
|                             'x-api-key': Helper.getCookie('_trtk'),
 | |
|                             'x-csrf-token': $('meta[name="csrf-token"]').attr('content'),
 | |
|                         },
 | |
|                         data: data,
 | |
|                         success: (data, textStatus, jqXHR) => {
 | |
|                             $('#btnConfirmInvc').removeAttr('disabed');
 | |
|                             if (data.meta.type != 'success') {
 | |
|                                 resolve({
 | |
|                                     type: 'fail'
 | |
|                                 });
 | |
|                                 Helper.toast('Warning', 'just now', data.meta.message);
 | |
|                                 return false;
 | |
|                             }
 | |
|                             resolve({
 | |
|                                 type: 'success',
 | |
|                                 resp: data,
 | |
|                             });
 | |
|                             Helper.toast('Success', 'just now', 'success konfirmasi pembayaran invoice');
 | |
|                             $('#mdlConfirmInvc').modal('hide');
 | |
|                             window.location.href = window.location.href;
 | |
|                         },
 | |
|                         error: (jqXHR, textStatus, error) => {
 | |
|                             $('#btnConfirmInvc').removeAttr('disabed');
 | |
|                             if (jqXHR.status >= 500) {
 | |
|                                 Helper.toast('Error', 'just now', 'Please try again');
 | |
|                             } else {
 | |
|                                 Helper.toast('Error', 'just now', jqXHR.responseJSON.meta
 | |
|                                     .message);
 | |
|                             }
 | |
|                             resolve({
 | |
|                                 type: 'error'
 | |
|                             });
 | |
|                         }
 | |
|                     })
 | |
|                 })
 | |
|             },
 | |
|         };
 | |
| 
 | |
|         const OrdDelItem = {
 | |
|             activate: function() {
 | |
|                 OrdDelItem.event();
 | |
|             },
 | |
|             event: function() {
 | |
|                 $(document).on('click', '.btnDelItem', async function(e) {
 | |
|                     let ord_a_item_id = $(e.target).closest('tr').find('td[data-ord_a_item_id]').data('ord_a_item_id');
 | |
|                     let resp = await OrdView.reqShowAItem({
 | |
|                         ord_a_item_id
 | |
|                     });
 | |
|                     if (resp.type != 'success') {
 | |
|                         Helper.toast('Item tidak ditemukan', 'just now', 'please try again');
 | |
|                         return false;
 | |
|                     }
 | |
|                     $('#del-name').text(resp.data.desc);
 | |
|                     $('#mdlDelItem').data('ord_a_item_id', resp.data.ord_a_item_id);
 | |
|                     $('#mdlDelItem').modal('show');
 | |
|                 });
 | |
|                 $('#btnSubmitDelItem').on('click', function(e) {
 | |
|                     e.preventDefault();
 | |
|                     let data = {};
 | |
|                     data.is_del = 3;
 | |
|                     data.ord_a_item_id = $('#mdlDelItem').data('ord_a_item_id');
 | |
|                     OrdDelItem.submitDelData(data);
 | |
|                 });
 | |
|             },
 | |
|             submitDelData: async function(data) {
 | |
|                 return new Promise((resolve, reject) => {
 | |
|                     if (typeof $('#btnSubmitDelItem').attr('disabed') != 'undefined') {
 | |
|                         resolve({
 | |
|                             type: 'fail'
 | |
|                         });
 | |
|                         return false;
 | |
|                     }
 | |
|                     $('#btnSubmitDelItem').attr('disabed', true);
 | |
|                     $.ajax({
 | |
|                         url: "{{ route('api_finance_del_a_items', '') }}/" + data.ord_a_item_id,
 | |
|                         method: 'DELETE',
 | |
|                         crossDomain: true,
 | |
|                         processData: true,
 | |
|                         headers: {
 | |
|                             'x-api-key': Helper.getCookie('_trtk'),
 | |
|                             'x-csrf-token': $('meta[name="csrf-token"]').attr('content'),
 | |
|                         },
 | |
|                         data: data,
 | |
|                         success: (data, textStatus, jqXHR) => {
 | |
|                             $('#btnSubmitDelItem').removeAttr('disabed');
 | |
|                             if (data.meta.type != 'success') {
 | |
|                                 resolve({
 | |
|                                     type: 'fail'
 | |
|                                 });
 | |
|                                 Helper.toast('Warning', 'just now', data.meta.message);
 | |
|                                 return false;
 | |
|                             }
 | |
|                             Helper.toast('Success', 'just now', 'sukses hapus item');
 | |
|                             $('#mdlDelItem').modal('hide');
 | |
|                             window.location.href = window.location.href;
 | |
|                             resolve({
 | |
|                                 type: 'success'
 | |
|                             });
 | |
|                         },
 | |
|                         error: (jqXHR, textStatus, error) => {
 | |
|                             $('#btnSubmitDelItem').removeAttr('disabed');
 | |
|                             if (jqXHR.status >= 500) {
 | |
|                                 Helper.toast('Error', 'just now', 'Please try again');
 | |
|                             } else {
 | |
|                                 Helper.toast('Error', 'just now', jqXHR.responseJSON.meta
 | |
|                                     .message);
 | |
|                             }
 | |
|                             resolve({
 | |
|                                 type: 'error'
 | |
|                             });
 | |
|                         }
 | |
|                     })
 | |
|                 })
 | |
|             },
 | |
|         }
 | |
| 
 | |
|         const ChangePICInvoice = {
 | |
|             activate: function() {
 | |
|                 $('#btnChangePICInvoice').on('click', function() {
 | |
|                     $('#mdlChangePICInvoice').modal('show');
 | |
|                 });
 | |
| 
 | |
|                 $('#btnSubmitChangePICInvoice').on('click', function() {
 | |
|                     const data = ChangePICInvoice.getData();
 | |
|                     let isValid = ChangePICInvoice.checkData(data, true);
 | |
|                     if (!isValid) return false;
 | |
|                     ChangePICInvoice.submitData(data);
 | |
|                 });
 | |
|             },
 | |
|             getData: function() {
 | |
|                 const data = {
 | |
|                     ord_id: State.ord.ord_id,
 | |
|                     ord_client_id: State.ord.ord_client_id,
 | |
|                     c_pt_name: $('#c_pt_name').val(),
 | |
|                     c_pt_addr: $('#c_pt_addr').val(),
 | |
|                     c_pt_pic_name: $('#c_pt_pic_name').val(),
 | |
|                     c_pt_pic_phone_val: $('#c_pt_pic_phone_val').val(),
 | |
|                 };
 | |
| 
 | |
|                 return data;
 | |
|             },
 | |
|             checkData: function(data, isAlert = false) {
 | |
|                 if (data.c_pt_name == null || typeof data.c_pt_name == 'undefined') {
 | |
|                     if (isAlert) Helper.toast('Warning', 'just now', 'Nama perusahaan wajib diisi');
 | |
|                     return false;
 | |
|                 }
 | |
|                 if (data.c_pt_addr == null || typeof data.c_pt_addr == 'undefined') {
 | |
|                     if (isAlert) Helper.toast('Warning', 'just now', 'Alamat perusahaan wajib diisi');
 | |
|                     return false;
 | |
|                 }
 | |
|                 if (data.c_pt_pic_name == null || typeof data.c_pt_pic_name == 'undefined') {
 | |
|                     if (isAlert) Helper.toast('Warning', 'just now', 'PIC perusahaan wajib diisi');
 | |
|                     return false;
 | |
|                 }
 | |
|                 if (data.c_pt_pic_phone_val == null || typeof data.c_pt_pic_phone_val == 'undefined') {
 | |
|                     if (isAlert) Helper.toast('Warning', 'just now', 'Nomor telepon PIC perusahaan wajib diisi');
 | |
|                     return false;
 | |
|                 }
 | |
| 
 | |
|                 return true;
 | |
|             },
 | |
|             submitData: function(data) {
 | |
|                 return new Promise((resolve, reject) => {
 | |
|                     if (typeof $('#btnSubmitChangePICInvoice').attr('disabed') != 'undefined') {
 | |
|                         resolve({
 | |
|                             type: 'fail'
 | |
|                         });
 | |
|                         return false;
 | |
|                     }
 | |
|                     $('#btnSubmitChangePICInvoice').attr('disabed', true);
 | |
|                     $('#btnSubmitChangePICInvoiceSpinner').removeClass('d-none');
 | |
|                     $('#btnSubmitChangePICInvoice').addClass('d-none');
 | |
|                     $.ajax({
 | |
|                         url: "{{ route('api_change_pic_invoice') }}",
 | |
|                         method: 'POST',
 | |
|                         crossDomain: true,
 | |
|                         processData: true,
 | |
|                         headers: {
 | |
|                             'x-api-key': Helper.getCookie('_trtk'),
 | |
|                             'x-csrf-token': $('meta[name="csrf-token"]').attr('content'),
 | |
|                         },
 | |
|                         data: data,
 | |
|                         success: (data, textStatus, jqXHR) => {
 | |
|                             $('#btnSubmitChangePICInvoiceSpinner').addClass('d-none');
 | |
|                             $('#btnSubmitChangePICInvoice').removeClass('d-none');
 | |
|                             $('#btnSubmitChangePICInvoice').removeAttr('disabed');
 | |
|                             if (data.meta.type != 'success') {
 | |
|                                 resolve({
 | |
|                                     type: 'fail'
 | |
|                                 });
 | |
|                                 Helper.toast('Warning', 'just now', data.meta.message);
 | |
|                                 return false;
 | |
|                             }
 | |
|                             resolve({
 | |
|                                 type: 'success',
 | |
|                                 resp: data,
 | |
|                             });
 | |
|                             Helper.toast('Success', 'just now', 'sukses ganti pic invoice');
 | |
|                             $('#mdlChangePICInvoice').modal('hide');
 | |
|                         },
 | |
|                         error: (jqXHR, textStatus, error) => {
 | |
|                             $('#btnSubmitChangePICInvoiceSpinner').addClass('d-none');
 | |
|                             $('#btnSubmitChangePICInvoice').removeClass('d-none');
 | |
|                             $('#btnSubmitChangePICInvoice').removeAttr('disabed');
 | |
|                             if (jqXHR.status >= 500) {
 | |
|                                 Helper.toast('Error', 'just now', 'please try again');
 | |
|                             } else {
 | |
|                                 Helper.toast('Error', 'just now', jqXHR.responseJSON.meta
 | |
|                                     .message);
 | |
|                             }
 | |
|                             resolve({
 | |
|                                 type: 'error'
 | |
|                             });
 | |
|                         }
 | |
|                     })
 | |
|                 });
 | |
|             },
 | |
|         }
 | |
| 
 | |
|         Wrapper.activate();
 | |
|     </script>
 | |
| @endsection
 | 
