<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Pembelian;
use App\DetailPembelian;
use App\Supplier;
use App\HargaBarang;
use App\Barang;
use App\Hutang;
use App\MetodeBayar;
use Auth;
use App\Profil;
class PembelianController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$s = (isset($_GET['s']))?$_GET['s']:'';
$datas = Pembelian::where('no_pembelian','like','%'.$s.'%')->orderBy('created_at','DESC')->paginate(10);
$datas->appends('s');
$title = "Pembelian";
$url = "pembelian";
$menu = "Master Data";
$no = 1;
return view('pembelian.index',compact('title','url','menu','no','datas'));
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
$suppliers = Supplier::all();
$metode = MetodeBayar::all();
$l = Pembelian::orderBy('no_pembelian','DESC')->first();
$kd = "P000000";
if($l){
$kd = $l->no_pembelian;
}
$title = "Pembelian";
$url = "pembelian";
$menu = "Master Data";
$no = 1;
return view('pembelian.create',compact('title','url','menu','no','suppliers','kd','metode'));
}
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_pembelian'=>'required|date',
'kd_supplier'=>'required|string',
'keterangan'=>'required|string',
'dp'=>'required|numeric',
]);
$cek = Pembelian::create([
'no_pembelian'=>"PBN-".\Helper::strtotime(),
'tgl_pembelian'=>$request->tgl_pembelian,
'kd_supplier'=>$request->kd_supplier,
'keterangan'=>$request->keterangan,
'dp'=>$request->dp,
'pemohon'=>Auth::user()->id,
'penyetuju'=>NULL,
'ppn'=>(isset($request->ppn))?1:0,
'status' => 'pending'
]);
//masuk hutang
if($request->kembalian < 0 )
{
Hutang::create([
'no_hutang' => "HG-".\Helper::strtotime(),
'no_pembelian' => $cek->no_pembelian,
'sisa_hutang' => $request->kembalian * -1
]);
}
$ih = $request->id_harga_barang;
$jm = $request->jumlah;
$ds = $request->diskon;
$harga_baru = $request->harga_baru;
$harga_jual = $request->harga_jual;
$jenis_harga = $request->jenis_harga;
$harga = [];
for ($i=0; $i < count($ih); $i++) {
$hb = HargaBarang::find($ih[$i]);
if($jenis_harga[$i] != "tidak"){
if($jenis_harga[$i] == "update"){
$hb->update([
'harga_beli'=>$harga_baru[$i],
'harga_jual'=>$harga_jual[$i],
'sinkron' => '0',
]);
} else {
$hh = HargaBarang::create([
'kd_barang'=>$hb->kd_barang,
'kd_sinkron'=> \Helper::strtotime() + $i,
'kd_satuan_beli'=>$hb->kd_satuan_beli,
'beli_isi'=>$jm[$i],
'kd_satuan_jual'=>$hb->kd_satuan_jual,
'harga_beli'=>$harga_baru[$i],
'harga_jual'=>$harga_jual[$i],
'diskon'=>$ds[$i],
'jumlah_persatuan_jual' => '1'
]);
$ih[$i] = $hh->id;
}
}
}
for ($i=0; $i < count($ih); $i++) {
$harga[] = [
'kd_sinkron' => \Helper::strtotime()+$i,
'no_pembelian'=>$cek->no_pembelian,
'id_harga_barang'=>$ih[$i],
'jumlah'=>$jm[$i],
'diskon'=>$ds[$i],
];
}
if($cek){
$cek2 = DetailPembelian::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_beli)
// ]);
// }
// \Session::flash(
// "flash_notif",[
// "level" => "dismissible alert-success",
// "massage" => "Data Berhasil Di Tambah"
// ]);
\Helper::add_user_log("Permintaan Data Pembelian Oleh Kasir ". Auth::user()->name .$cek->no_pembelian);
} else {
\Session::flash(
"flash_notif",[
"level" => "dismissible alert-danger",
"massage" => "Data Gagal Di Tambah"
]);
Pembelian::find($cek->no_pembelian)->delete();
return redirect()->back();
}
} else {
\Session::flash(
"flash_notif",[
"level" => "dismissible alert-danger",
"massage" => "Data Gagal Di Tambah"
]);
return redirect()->back();
}
return redirect('pembelian/'.$cek->no_pembelian);
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
$suppliers = Supplier::all();
$data = Pembelian::find($id);
$title = "Pembelian";
$url = "pembelian";
$menu = "Master Data";
$no = 1;
return view('pembelian.detail',compact('title','url','menu','no','suppliers','data'));
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
$suppliers = Supplier::all();
$data = Pembelian::find($id);
$metode = MetodeBayar::all();
$title = "Pembelian";
$url = "pembelian";
$menu = "Master Data";
$no = 1;
return view('pembelian.edit',compact('title','url','menu','no','suppliers','data', 'metode'));
}
public function update(Request $request, $id)
{
$cek = Pembelian::find($id);
$cek->update([
'tgl_pembelian'=>$request->tgl_pembelian,
'kd_supplier'=>$request->kd_supplier,
'sinkron' => '0'
]);
if(!$cek){
\Session::flash(
"flash_notif",[
"level" => "dismissible alert-danger",
"massage" => "Data Gagal Di Edit"
]);
return redirect()->back();
}
return redirect('pembelian/'.$cek->no_pembelian);
}
public function bayar($id)
{
$suppliers = Supplier::all();
$data = Pembelian::find($id);
$metode = MetodeBayar::all();
$title = "Pembelian";
$url = "pembelian";
$menu = "Master Data";
$no = 1;
return view('pembelian.bayar',compact('title','url','menu','no','suppliers','data', 'metode'));
}
public function bayarStore(Request $request, $id)
{
$cek = Pembelian::find($id);
$cek->update([
'status' => 'sukses',
'penyetuju'=>Auth::user()->id,
'sinkron' => '0',
]);
$detailBarang = $cek->detail;
if($detailBarang){
for ($i=0; $i < count($detailBarang); $i++) {
$hb = HargaBarang::find($detailBarang[$i]->id_harga_barang);
$b = Barang::find($hb->kd_barang);
$b->update([
'stok'=>$b->stok+($detailBarang[$i]->jumlah*$hb->jumlah_persatuan_beli)
]);
}
\Session::flash(
"flash_notif",[
"level" => "dismissible alert-success",
"massage" => "Status Sukses, Stok Barang Berhasil Tertambah"
]);
\Helper::add_user_log("Permintaan Data Pembelian Disetujui Oleh " . Auth::user()->name .$cek->no_pembelian);
return redirect('pembelian/'.$cek->no_pembelian);
} else {
\Session::flash(
"flash_notif",[
"level" => "dismissible alert-danger",
"massage" => "Status Gagal Di Update, Stok Gagal Tertambah"
]);
Pembelian::find($cek->no_pembelian)->delete();
return redirect()->back();
}
}
public function destroy($id)
{
$cek = Pembelian::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-$e->jumlah){
// return response()->json([
// 'error' => 'Ops!!! Data '.$cek->no_pembelian.' Tidak Bisa Di Hapus.jika dihapus stok barang melewati batas minimal'
// ]);
//}
$b->update([
'stok'=>$b->stok-$e->jumlah,
'sinkron' => '0',
]);
}
DetailPembelian::where('no_pembelian',$id)->delete();
$cek2 = Pembelian::find($id);
$cek2->delete();
\Helper::add_user_log("Menghapus Data Pembelian ".$id);
return response()->json([
'success' => 'Data Berhasil Di Hapus!'
]);
}
public function deleteAll(Request $request)
{
$ids = $request->ids;
$data = Pembelian::whereIn('no_pembelian',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-$e->jumlah){
return response()->json([
'error' => 'Ops!!! Data '.$cek->no_pembelian.' Tidak Bisa Di Hapus.jika dihapus stok barang melewati batas minimal'
]);
}
$b->update([
'stok'=>$b->stok-$e->jumlah,
'sinkron' => '0',
]);
}
}
DetailPembelian::whereIn('no_pembelian',explode(",",$ids))->delete();
Pembelian::whereIn('no_pembelian',explode(",",$ids))->delete();
\Helper::add_user_log("Menghapus ".count(explode(",",$ids))." Data Pembelian ");
return response()->json(['success'=>"Data Deleted successfully."]);
}
public function cetak($id)
{
$suppliers = Supplier::all();
$data = Pembelian::find($id);
$profil = Profil::first();
$title = "Pembelian";
$url = "pembelian";
$menu = "Master Data";
$no = 1;
return view('pembelian.cetak',compact('title','url','menu','no','suppliers','data', 'profil'));
}
}
Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]