<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Barang;
use App\HargaBarang;
use App\Jenis;
use App\Kategori;
use App\Rak;
use App\Merek;
use App\Satuan;
use App\StokOpname;
use App\Exports\BarangsExport;
use App\Imports\BarangsImport;
use Maatwebsite\Excel\Facades\Excel;
use Artisan;
class BarangController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
if(!\Helper::cek_akses('Barang','View')){
\Session::flash(
"flash_notif",[
"level" => "dismissible alert-danger",
"massage" => "Anda Tidak Memiliki Akses"
]);
return redirect('/');
}
$kategoris = Kategori::all();
$raks = Rak::all();
$satuans = Satuan::all();
$s = (isset($_GET['s']))?$_GET['s']:'';
$kd_kategori = isset($_GET['kd_kategori'])?$_GET['kd_kategori']:'';
$kd_rak = isset($_GET['kd_rak'])?$_GET['kd_rak']:'';
// Ambil Barang Yang Terdiskon
if ($kd_kategori == 'diskon') {
$datas = Barang::whereHas('harga_barang', function($hb){
$hb->where('diskon', '>', '0');
})->paginate(10);
}else{
$datas = Barang::where(function ($q)use($s)
{
$q->where('nm_barang','like','%'.$s.'%')->orWhere('barcode','like','%'.$s.'%');
})->where('kd_kategori','like','%'.$kd_kategori.'%')->where('kd_rak','like','%'.$kd_rak.'%')->orderBy('created_at','DESC')->paginate(10);
}
$datas->appends($_GET);
$title = "Barang";
$url = "barang";
$menu = "Master Data";
$no = 1;
return view('barang.index',compact('title','url','menu','no','datas', 'kategoris', 'raks','satuans'));
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
if(!\Helper::cek_akses('Barang','Add')){
\Session::flash(
"flash_notif",[
"level" => "dismissible alert-danger",
"massage" => "Anda Tidak Memiliki Akses"
]);
return redirect('/');
}
$kategoris = Kategori::all();
$raks = Rak::all();
$satuans = Satuan::all();
$title = "Barang";
$url = "barang";
$menu = "Master Data";
$no = 1;
$bar = "BAR000001";
$d = Barang::orderBy('barcode','desc')->first();
if($d && strpos($d->barcode, 'BAR') !== false){
$bar = $d->barcode;
}
return view('barang.create',compact('title','url','menu','no', 'kategoris', 'raks','satuans', 'bar'));
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$this->validate($request,[
'nm_barang'=>'required|string',
'kd_kategori'=>'required|string',
'kd_rak'=>'required|string',
'stok'=>'required|numeric',
'stok_opname'=>'required|numeric',
'stok_minimal'=>'required|numeric',
'stok_maksimal'=>'required|numeric'
]);
$gambar_barang = null;
$id = "BRG-".\Helper::strtotime();
if($request->hasFile('gambar_barang')){
$gambar_barang = $id.'.'.request()->gambar_barang->getClientOriginalExtension();
request()->gambar_barang->move(public_path('images/barang'), $gambar_barang);
}
$cek = Barang::create([
'kd_barang'=> $id,
'nm_barang'=>$request->nm_barang,
'barcode'=>$request->barcode,
'kd_kategori'=>$request->kd_kategori,
'kd_rak'=>$request->kd_rak,
'stok'=>$request->stok,
'stok_opname'=>$request->stok_opname,
'stok_minimal'=>$request->stok_minimal,
'stok_maksimal'=>$request->stok_maksimal,
'kd_satuan_stok'=>$request->kd_satuan_stok,
'gambar_barang'=>$gambar_barang,
'desk'=>$request->desk,
]);
$sj = $request->kd_satuan_jual;
$hb = $request->harga_beli;
$hj = $request->harga_jual;
$jpj = $request->jumlah_persatuan_jual;
$sb = $request->kd_satuan_beli;
$bi = $request->beli_isi;
$ds = ($request->diskon != null || $request->diskon != '')?$request->diskon:0;
$ih = $request->id_harga_barang;
$jpb = $request->jumlah_persatuan_beli;
$harga = [];
for ($i=0; $i < count($sj); $i++) {
$harga[] = [
'kd_barang'=>$cek->kd_barang,
'jumlah_persatuan_jual'=>$jpj[$i],
'kd_sinkron'=> \Helper::strtotime() + $i,
'kd_satuan_jual'=>$sj[$i],
'harga_jual'=>$hj[$i],
'diskon'=>$ds[$i],
'kd_satuan_beli'=>$sb[$i],
'beli_isi'=>$bi[$i],
'harga_beli'=>$hb[$i],
'jumlah_persatuan_beli'=>$jpb[$i],
];
}
if($cek){
$cek2 = HargaBarang::insert($harga);
if($cek2){
\Session::flash(
"flash_notif",[
"level" => "dismissible alert-success",
"massage" => "Data Berhasil Di Tambah"
]);
\Helper::add_user_log("Menambah Data Barang ".$cek->nm_barang);
} else {
\Session::flash(
"flash_notif",[
"level" => "dismissible alert-danger",
"massage" => "Data Gagal Di Tambah"
]);
Barang::find($cek->kd_barang)->delete();
return redirect()->back();
}
} else {
\Session::flash(
"flash_notif",[
"level" => "dismissible alert-danger",
"massage" => "Data Gagal Di Tambah"
]);
return redirect()->back();
}
return redirect('barang');
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
if(!\Helper::cek_akses('Barang','Edit')){
\Session::flash(
"flash_notif",[
"level" => "dismissible alert-danger",
"massage" => "Anda Tidak Memiliki Akses"
]);
return redirect('/');
}
$data = Barang::find($id);
$kategoris = Kategori::all();
$raks = Rak::all();
$satuans = Satuan::all();
$title = "Barang";
$url = "barang";
$menu = "Master Data";
$no = 1;
return view('barang.edit',compact('title','url','menu','no','data', 'kategoris', 'raks','satuans'));
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
$this->validate($request,[
'nm_barang'=>'required|string',
'kd_kategori'=>'required|string',
'kd_rak'=>'required|string',
'stok'=>'required|numeric',
'stok_opname'=>'required|numeric',
'stok_minimal'=>'required|numeric',
'stok_maksimal'=>'required|numeric',
]);
$cek = Barang::find($id);
$gambar_barang = $cek->gambar_barang;
if($request->hasFile('gambar_barang')){
$gambar_barang = $id.'.'.request()->gambar_barang->getClientOriginalExtension();
request()->gambar_barang->move(public_path('images/barang'), $gambar_barang);
}
$old_data = $cek;
$cek->update([
'nm_barang'=>$request->nm_barang,
'barcode'=>$request->barcode,
'kd_kategori'=>$request->kd_kategori,
'kd_rak'=>$request->kd_rak,
'stok'=>$request->stok,
'stok_opname'=>$request->stok_opname,
'stok_minimal'=>$request->stok_minimal,
'stok_maksimal'=>$request->stok_maksimal,
'kd_satuan_stok'=>$request->kd_satuan_stok,
'gambar_barang'=>$gambar_barang,
'sinkron'=> '0',
'desk'=>$request->desk,
]);
$sb = $request->kd_satuan_beli;
$bi = $request->beli_isi;
$sj = $request->kd_satuan_jual;
$hb = $request->harga_beli;
$hj = $request->harga_jual;
$ds = ($request->diskon != null || $request->diskon != '')?$request->diskon:0;
$ih = $request->id_harga_barang;
$jpb = $request->jumlah_persatuan_beli;
$jpj = $request->jumlah_persatuan_jual;
if($request->id_harga_barang){
if(count($ih) < count($cek->harga_barang)){
foreach ($cek->harga_barang as $e) {
if(!in_array($e->id, $ih)){
try {
HargaBarang::find($e->id)->update(['sinkron' => '0']);
HargaBarang::find($e->id)->delete();
} catch (\Illuminate\Database\QueryException $e) {
//dd($e->errorInfo);
if($e->errorInfo[1] == 1451){
\Session::flash(
"flash_notif",[
"level" => "dismissible alert-danger",
"massage" => "Data Gagal Di Edit <br><strong>Data Harga Masih Digunakan Di Data Lain</strong></"
]);
return redirect()->back();
}
}
}
}
}
}
$harga = [];
for ($i=0; $i < count($sb); $i++) {
$harga[] = [
'kd_barang'=>$cek->kd_barang,
'kd_satuan_beli'=>$sb[$i],
'beli_isi'=>$bi[$i],
'kd_satuan_jual'=>$sj[$i],
'harga_beli'=>$hb[$i],
'harga_jual'=>$hj[$i],
'diskon'=>$ds[$i],
'jumlah_persatuan_beli'=>$jpb[$i],
'jumlah_persatuan_jual'=>$jpj[$i],
];
}
if($cek){
for ($i=0; $i < count($harga) ; $i++) {
if(isset($ih[$i])) {
$chb = HargaBarang::find($ih[$i]);
if($chb->kd_barang != null){
$chb->update(['sinkron' => '0']);
$cek2 = $chb->update($harga[$i]);
} else {
$harga[$i] += ['kd_sinkron' => \Helper::strtotime() + $i];
$cek2 = HargaBarang::create($harga[$i]);
}
} else {
$harga[$i] += ['kd_sinkron' => \Helper::strtotime() + $i];
$cek2 = HargaBarang::create($harga[$i]);
}
}
$cek = Barang::find($id);
// $cek->harga_barang()->delete();
// $cek2 = HargaBarang::insert($harga);
if($cek2){
\Session::flash(
"flash_notif",[
"level" => "dismissible alert-success",
"massage" => "Data Berhasil Di Edit"
]);
\Helper::add_user_log("Mengubah Data Barang ".$cek->nm_barang);
} else {
\Session::flash(
"flash_notif",[
"level" => "dismissible alert-danger",
"massage" => "Data Gagal Di Edit"
]);
Barang::find($cek->kd_barang)->update([
'nm_barang'=>$old_data->nm_barang,
'barcode'=>$old_data->barcode,
'stok'=>$old_data->stok,
'stok_opname'=>$old_data->stok_opname,
'stok_minimal'=>$old_data->stok_minimal,
'stok_maksimal'=>$old_data->stok_maksimal,
'gambar_barang'=>$old_data->gambar_barang
]);
return redirect()->back();
}
} else {
\Session::flash(
"flash_notif",[
"level" => "dismissible alert-danger",
"massage" => "Data Gagal Di Edit"
]);
return redirect()->back();
}
return redirect('barang/'.$id.'/edit');
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
if(!\Helper::cek_akses('Barang','Delete')){
\Session::flash(
"flash_notif",[
"level" => "dismissible alert-danger",
"massage" => "Anda Tidak Memiliki Akses"
]);
return redirect('/');
}
HargaBarang::where('kd_barang',$id)->update(['sinkron' => '0']);
HargaBarang::where('kd_barang',$id)->delete();
$cek2 = Barang::where('kd_barang',$id);
$cek2->update(['sinkron' => '0']);
$cek2->delete();
\Helper::add_user_log("Menghapus Data Barang ".$id);
return response()->json([
'success' => 'Record deleted successfully!'
]);
}
public function deleteAll(Request $request)
{
$ids = $request->ids;
HargaBarang::whereIn('kd_barang',explode(",",$ids))->update(['sinkron' => '0']);
HargaBarang::whereIn('kd_barang',explode(",",$ids))->delete();
Barang::whereIn('kd_barang',explode(",",$ids))->update(['sinkron' => '0']);
Barang::whereIn('kd_barang',explode(",",$ids))->delete();
\Helper::add_user_log("Menghapus ".count(explode(",",$ids))." Data Barang ");
return response()->json(['success'=>"Data Deleted successfully."]);
}
public function get_data()
{
$s = (isset($_GET['s']))?$_GET['s']:'';
$kd_kategori = isset($_GET['kd_kategori'])?$_GET['kd_kategori']:'';
$kd_rak = isset($_GET['kd_rak'])?$_GET['kd_rak']:'';
$datas = Barang::where(function ($q)use($s)
{
$q->where('nm_barang','like','%'.$s.'%')->orWhere('barcode','like','%'.$s.'%');
})->where('kd_kategori','like','%'.$kd_kategori.'%')->where('kd_rak','like','%'.$kd_rak.'%')->orderBy('stok','DESC')->paginate(10);
$datas->appends($_GET);
return view('barang.get_data',compact('datas'));
}
public function get_harga($kd_barang)
{
$data = Barang::find($kd_barang);
$title = "Barang";
$url = "barang";
$menu = "Master Data";
$no = 1;
return view('barang.get_harga',compact('title','url','menu','no','data'));
}
public function cari_barang($barcode)
{
$response = ['bool'=>false,'data'=>null];
$data = Barang::where('barcode',$barcode)->first();
if(isset($data->kd_barang)){
$response['bool'] = true;
$response['barang'] = $data;
}
return $response;
}
public function cari_barang_kode($kd_barang)
{
$response = ['bool'=>false,'data'=>null];
$data = Barang::where('kd_barang',$kd_barang)->first();
if(isset($data->kd_barang)){
$response['bool'] = true;
$response['barang'] = $data;
}
return $response;
}
public function cek_harga($idb,$v, $idhb = NULL){
$b = Barang::find($idb);
$harga = 0;
$isi = [];
$response = ['id_harga_barang'=>0,'harga'=>0];
foreach ($b->harga_barang as $e) {
$isi[] = [
'isi'=>$e->beli_isi,
'harga'=>$e->harga_jual,
'id_harga_barang'=>$e->id,
];
}
if ($idhb != NULL && $idhb != 'undefined') {
for ($i=0; $i < count($isi); $i++) {
if (in_array($idhb, $isi[$i])) {
return $isi[$i];
}
}
return $response;
}else{
for ($i=0; $i < count($isi); $i++) {
if($isi[$i]['isi'] <= $v && (!isset($isi[$i+1]) || $v < $isi[$i+1]['isi'])){
return $isi[$i];
}
}
}
return $response;
}
public function barcode($id)
{
$data = Barang::find($id);
return view('barang.barcode',compact('data'));
}
public function barcodeAll()
{
$s = (isset($_GET['s']))?$_GET['s']:'';
$kd_kategori = isset($_GET['kd_kategori'])?$_GET['kd_kategori']:'';
$kd_rak = isset($_GET['kd_rak'])?$_GET['kd_rak']:'';
$datas = Barang::where(function ($q)use($s)
{
$q->where('nm_barang','like','%'.$s.'%')->orWhere('barcode','like','%'.$s.'%');
})->where('kd_kategori','like','%'.$kd_kategori.'%')->where('kd_rak','like','%'.$kd_rak.'%')->orderBy('created_at','DESC')->get();
return view('barang.barcode_all', compact('datas'));
}
public function priceTagAll()
{
$s = (isset($_GET['s']))?$_GET['s']:'';
$kd_kategori = isset($_GET['kd_kategori'])?$_GET['kd_kategori']:'';
$kd_rak = isset($_GET['kd_rak'])?$_GET['kd_rak']:'';
$datas = Barang::where(function ($q)use($s)
{
$q->where('nm_barang','like','%'.$s.'%')->orWhere('barcode','like','%'.$s.'%');
})->where('kd_kategori','like','%'.$kd_kategori.'%')->where('kd_rak','like','%'.$kd_rak.'%')->orderBy('created_at','DESC')->get();
return view('barang.price_all', compact('datas'));
}
/**
* @return \Illuminate\Support\Collection
*/
public function importExportView()
{
$title = "Import Barang";
$url = "barang";
$menu = "Master Data";
$no = 1;
return view('barang.import',compact('title','url','menu','no'));
}
/**
* @return \Illuminate\Support\Collection
*/
public function export()
{
return Excel::download(new BarangsExport, 'barangs-'.date('Y-m-d H:i').'.xlsx');
}
/**
* @return \Illuminate\Support\Collection
*/
public function import()
{
$excel = new BarangsImport;
Excel::import($excel,request()->file('file'));
dd($excel);
\Session::flash(
"flash_notif",[
"level" => "dismissible alert-success",
"massage" => "File Berhasil Di Import"
]);
\Helper::add_user_log("Import Data Barang Dari Excel");
return redirect()->back();
}
public function stokOpname($id)
{
$title = "Update Stok Opname";
$url = "barang";
$menu = "Master Data";
$data = StokOpname::where('kd_barang', $id)->first();
return view('barang.stok',compact('title','url','menu','data', 'id'));
}
public function storeStokOpname(Request $request, $id)
{
$data = StokOpname::where('kd_barang', $id)->first();
$stok_rak = $request->stok_rak ?? 0;
$stok_gudang = $request->stok_gudang ?? 0;
$stok_gudang2 = $request->stok_gudang2 ?? 0;
StokOpname::updateOrCreate(
[
'kd_barang' => $id,
],
[
'stok_rak' => $stok_rak,
'stok_gudang' => $stok_gudang,
'stok_gudang2' => $stok_gudang2,
'kd_sinkron' => \Helper::strtotime(),
'sinkron' => '0',
]
);
if ($request->disimpan) {
$stok = $stok_rak + $stok_gudang + $stok_gudang2;
$barang = Barang::find($id);
$barang->update([
'stok' => $stok,
'stok_opname' => $stok,
'sinkron' => '0',
]);
\Session::flash(
"flash_notif",[
"level" => "dismissible alert-success",
"massage" => "Stok Berhasil di-Update"
]);
}else{
\Session::flash(
"flash_notif",[
"level" => "dismissible alert-success",
"massage" => "Berhasil di Simpan"
]);
}
return redirect('barang');
}
}
Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]