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/PembelianController.php

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