Anons79 Mini Shell

Directory : /home/aplikasiposinfo/www/ayam-canton.aplikasipos.info/app/Http/Controllers/
Upload File :
Current File : /home/aplikasiposinfo/www/ayam-canton.aplikasipos.info/app/Http/Controllers/BarangController.php

<?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]