<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Penjualan;
use App\Bank;
use App\DetailPenjualan;
use App\Piutang;
use App\Pelanggan;
use App\Barang;
use App\Profil;
use App\City;
use App\Courier;
use App\HargaBarang;
use App\Paket;
use App\DetailPaket;
use App\MetodeBayar;
use Auth;
use Kavist\RajaOngkir\Facades\RajaOngkir;
class PenjualanController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$s = (isset($_GET['s']))?$_GET['s']:'';
$datas = Penjualan::where('no_penjualan','like','%'.$s.'%')->orderBy('created_at','DESC')->paginate(10);
$datas->appends('s');
$title = "Penjualan";
$url = "penjualan";
$menu = "Master Data";
$no = 1;
return view('penjualan.index',compact('title','url','menu','no','datas'));
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
$pelanggans = Pelanggan::all();
$metode = MetodeBayar::all();
$bank = Bank::all();
$pakets = Paket::all();
$couriers = Courier::all();
// $data = RajaOngkir::kota()->search('Samarind')->get();
$l = Penjualan::orderBy('no_penjualan','DESC')->first();
$kd = "P000000";
if($l){
$kd = $l->no_penjualan;
}
$title = "Penjualan";
$url = "penjualan";
$menu = "Master Data";
$no = 1;
return view('penjualan.create',compact('title','url','menu','no','pelanggans','kd','pakets','metode', 'couriers', 'bank'));
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
if ($request->id_harga_barang == NULL ) {
\Session::flash(
"flash_notif",[
"level" => "dismissible alert-danger",
"massage" => "Silahkan Add List Barang Terlebih Dahulu"
]);
return redirect()->back();
}
$this->validate($request,[
'tgl_penjualan'=>'required|date',
'kd_pelanggan'=>'required|string',
'keterangan'=>'required|string',
]);
// if ($request->ongkos_kirim != NULL && $request->ongkos_kirim > 0 ) {
// if ($request->id_courier == NULL ) {
// \Session::flash(
// "flash_notif",[
// "level" => "dismissible alert-danger",
// "massage" => "Jika Mengisi Biaya Pengiriman, Harap Pilih Kurirnya "
// ]);
// return redirect()->back();
// }
// }
$cek = Penjualan::create([
'no_penjualan'=> "PJN-".\Helper::strtotime() ,
'id_courier'=>$request->id_courier ?? NULL,
'tgl_penjualan'=>$request->tgl_penjualan,
'kd_pelanggan'=>$request->kd_pelanggan,
'keterangan'=>$request->keterangan,
'ket'=>$request->ket,
'kode_bank'=>$request->kode_bank ?? NULL,
'bank_id'=>$request->bank_id ?? NULL,
'id_user'=>Auth::user()->id,
'uang_bayar'=>$request->uang_bayar,
'ongkos_kirim'=>$request->ongkos_kirim,
]);
$total = 0;
$harga_barang = HargaBarang::whereIn('id', $request->id_harga_barang)->get();
$ih = $request->id_harga_barang;
$jm = $request->jumlah;
$ds = $request->diskon;
$harga = [];
for ($i=0; $i < count($ih); $i++) {
$harga[] = [
'kd_sinkron' => \Helper::strtotime()+$i,
'no_penjualan'=>$cek->no_penjualan,
'id_harga_barang'=>$ih[$i],
'jumlah'=>$jm[$i],
'diskon'=>($ds[$i] != null || $ds[$i] != '')?$ds[$i]:0,
];
$total += $harga_barang[$i]->harga_jual;
}
// Masuk Piutang
if($request->kembalian < 0){
Piutang::create([
'no_piutang' => "PG-".\Helper::strtotime(),
'no_penjualan' => $cek->no_penjualan,
'sisa_piutang' => $request->kembalian * -1
]);
}
if($cek){
// $point = Pelanggan::find($request->kd_pelanggan);
// $point->update([]);
// $bagi = \Helper::getBonus()->poin;
// $point = Pelanggan::find($request->kd_pelanggan);
// $point->update(['point' => $point->point + ($total / round($bagi,0)) ]);
$cek2 = DetailPenjualan::insert($harga);
if($cek2){
for ($i=0; $i < count($ih); $i++) {
$hb = HargaBarang::find($ih[$i]);
$b = Barang::find($hb->kd_barang);
$b->update([
'stok'=>$b->stok-($jm[$i]*$hb->jumlah_persatuan_jual),
'sinkron' => '0'
]);
}
\Session::flash(
"flash_notif",[
"level" => "dismissible alert-success",
"massage" => "Data Berhasil Di Tambah"
]);
\Helper::add_user_log("Menambah Data Penjualan ".$cek->no_penjualan);
} else {
\Session::flash(
"flash_notif",[
"level" => "dismissible alert-danger",
"massage" => "Data Gagal Di Tambah"
]);
Penjualan::find($cek->no_penjualan)->delete();
return redirect()->back();
}
} else {
\Session::flash(
"flash_notif",[
"level" => "dismissible alert-danger",
"massage" => "Data Gagal Di Tambah"
]);
return redirect()->back();
}
return redirect('penjualan/'.$cek->no_penjualan.'?cetak=true');
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
$pelanggans = Pelanggan::all();
$data = Penjualan::find($id);
$bank = Bank::all();
$title = "Penjualan";
$url = "penjualan";
$menu = "Master Data";
$no = 1;
return view('penjualan.detail',compact('title','url','menu','no','pelanggans','data', 'bank'));
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
$pelanggans = Pelanggan::all();
$data = Penjualan::find($id);
$bank = Bank::all();
$title = "Penjualan";
$url = "penjualan";
$menu = "Master Data";
$no = 1;
return view('penjualan.edit',compact('title','url','menu','no','pelanggans','data', 'bank'));
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
$cek = Penjualan::find($id);
$this->validate($request,[
'tgl_penjualan'=>'required|date',
'kd_pelanggan'=>'required|string',
]);
$cek->update([
'tgl_penjualan'=>$request->tgl_penjualan,
'kd_pelanggan'=>$request->kd_pelanggan,
'sinkron'=>'0',
]);
if(!$cek){
\Session::flash(
"flash_notif",[
"level" => "dismissible alert-danger",
"massage" => "Data Gagal Di Edit"
]);
return redirect()->back();
}
return redirect('penjualan/'.$cek->no_penjualan);
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
$cek = Penjualan::find($id);
foreach ($cek->detail as $e) {
$hb = HargaBarang::find($e->id_harga_barang);
$b = Barang::find($hb->kd_barang);
// if($b->stok_minimal > $b->stok+$cek->jumlah){
// return response()->json([
// 'error' => 'Ops!!! Data Tidak Bisa Di Hapus.jika dihapus stok barang melewati basat minimal'
// ]);
// }
$b->update([
'stok'=>$b->stok+$e->jumlah,
'sinkron' => '0',
]);
}
$detail = DetailPenjualan::where('no_penjualan',$id);
$detail->update(['sinkron' => '0']);
$detail->delete();
$penjualan = Penjualan::where('no_penjualan',$id);
$penjualan->update(['sinkron' => '0']);
$penjualan->delete();
\Helper::add_user_log("Mengahapus Data Penjualan ".$id);
return response()->json(['success'=>"Data Deleted successfully."]);
}
public function deleteAll(Request $request)
{
$ids = $request->ids;
$data = Penjualan::whereIn('no_penjualan',explode(",",$ids))->get();
foreach ($data as $cek) {
foreach ($cek->detail as $e) {
$hb = HargaBarang::find($e->id_harga_barang);
$b = Barang::find($hb->kd_barang);
// if($b->stok_minimal > $b->stok+$cek->jumlah){
// return response()->json([
// 'error' => 'Ops!!! Data Tidak Bisa Di Hapus.jika dihapus stok barang melewati basat minimal'
// ]);
// }
$b->update([
'stok'=>$b->stok+$e->jumlah,
'sinkron' => '0',
]);
}
}
$detail = DetailPenjualan::whereIn('no_penjualan',explode(",",$ids));
$detail->update(['sinkron' => '0']);
$detail->delete();
$penjualan = Penjualan::whereIn('no_penjualan',explode(",",$ids));
$penjualan->delete();
\Helper::add_user_log("Mengahapus ".count(explode(",",$ids))." Data Penjualan ");
return response()->json(['success'=>"Data Deleted successfully."]);
}
public function cetak($id)
{
$pelanggans = Pelanggan::all();
$data = Penjualan::find($id);
$profil = Profil::first();
$title = "Penjualan";
$url = "penjualan";
$menu = "Master Data";
$no = 1;
return view('penjualan.cetak',compact('title','url','menu','no','pelanggans','data', 'profil'));
}
public function cetakThermal($id)
{
$pelanggans = Pelanggan::all();
$data = Penjualan::find($id);
$profil = Profil::first();
$title = "Penjualan";
$url = "penjualan";
$menu = "Master Data";
$no = 1;
return view('penjualan.cetak-thermal',compact('title','url','menu','no','pelanggans','data', 'profil'));
}
}
Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]