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

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