fadlyshafa

Untitled

May 2nd, 2020
170
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <?php
  2.  
  3. namespace App\Http\Controllers;
  4.  
  5. use Illuminate\Http\Request;
  6. use DB;
  7.  
  8. use App\Models\M_produk;
  9. use App\Models\Sales;
  10. use App\Models\Sales_line;
  11. use App\Models\M_customer;
  12. use App\Models\Perusahaan;
  13.  
  14. class Pos_controller extends Controller
  15. {
  16.     public function index(){
  17.         $title = 'POS / Penjualan Barang';
  18.  
  19.         return view('pos.index',compact('title'));
  20.     }
  21.  
  22.     public function cetak_struck_terakhir(){
  23.         try {
  24.             $dt = Sales::orderBy('created_at','desc')->first();
  25.             $id_sales = $dt->id;
  26.  
  27.             $data = Sales::find($id_sales);
  28.             $perusahaan = Perusahaan::first();
  29.  
  30.             $lines = \DB::select("SELECT sl.produk,sum(sl.qty) as total_qty,sum(sl.grand_total) as grand_total,sl.buy,sl.harga,mp.nama from sales_line sl join m_produk mp on mp.id=sl.produk where sl.sales='".$id."' group by sl.produk,sl.buy,sl.harga,mp.nama");
  31.  
  32.             $pdf = \PDF::loadview('sales.struck',compact('data','perusahaan','lines'))->setPaper([0, 0, 200, 500], 'portrait');
  33.             return $pdf->stream();
  34.         } catch (\Exception $e) {
  35.             \Session::flash('gagal',$e->getMessage().'|'.$e->getLine());
  36.         }
  37.         return redirect()->back();
  38.     }
  39.  
  40.     public function cetak_struck($id){
  41.         try {
  42.             $dt = Sales::orderBy('created_at','desc')->first();
  43.             $id_sales = $dt->id;
  44.  
  45.             $data = Sales::find($id);
  46.             $perusahaan = Perusahaan::first();
  47.  
  48.             $lines = \DB::select("SELECT sl.produk,sum(sl.qty) as total_qty,sum(sl.grand_total) as grand_total,sl.buy,sl.harga,mp.nama from sales_line sl join m_produk mp on mp.id=sl.produk where sl.sales='".$id."' group by sl.produk,sl.buy,sl.harga,mp.nama");
  49.  
  50.             $pdf = \PDF::loadview('sales.struck',compact('data','perusahaan','lines'))->setPaper([0, 0, 200, 500], 'portrait');
  51.             return $pdf->stream();
  52.         } catch (\Exception $e) {
  53.             \Session::flash('gagal',$e->getMessage().'|'.$e->getLine());
  54.         }
  55.         return redirect()->back();
  56.     }
  57.  
  58.     public function get_produk($kode){
  59.         $dt = M_produk::where('kode',$kode)->first();
  60.  
  61.         return response()->json([
  62.             'data'=>$dt
  63.         ]);
  64.     }
  65.  
  66.     public function get_produk_ajax(Request $request){
  67.         if ($request->has('q')) {
  68.             $cari = $request->q;
  69.             $data = M_produk::where('nama', 'LIKE', '%'.$cari.'%')->get();
  70.             return response()->json($data);
  71.         }
  72.     }
  73.  
  74.     public function cek_total(Request $request){
  75.         try {
  76.             $produk = $request->produk;
  77.             $qty = $request->qty;
  78.             $harga = $request->harga;
  79.             $harga_grosir = $request->harga_grosir;
  80.             $jenis_transaksi = [];
  81.             $jumlah_bayar = $request->jumlah_bayar;
  82.             $customer = $request->customer;
  83.             $diskon = $request->diskon;
  84.             $set_jenis_transaksi = $request->set_jenis_transaksi;
  85.  
  86.             $total_nya = 0;
  87.  
  88.             foreach ($produk as $e => $pd) {
  89.                 // if($jenis_transaksi[$e] == 1){
  90.                 //     $harganya = $harga[$e];
  91.                 //     // $jenis =
  92.                 // }elseif ($jenis_transaksi[$e] == 2) {
  93.                 //     $harganya = $harga_grosir[$e];
  94.                 // }else{
  95.                 //     $harganya = 0;
  96.                 // }
  97.  
  98.                 if($set_jenis_transaksi == 'eceran'){
  99.                     $harganya = $harga[$e];
  100.                     $jenis_transaksi[$e] = 1;
  101.                 }elseif ($set_jenis_transaksi == 'grosir') {
  102.                     $harganya = $harga_grosir[$e];
  103.                     $jenis_transaksi[$e] = 2;
  104.                 }elseif ($set_jenis_transaksi == 'free') {
  105.                     $harganya = 0;
  106.                     $jenis_transaksi[$e] = 3;
  107.                     $diskon = 0;
  108.                 }
  109.  
  110.                 $total_nya += (Int)$qty[$e] * (Int)$harganya;
  111.  
  112.                
  113.             }
  114.  
  115.             $total_nya -= $diskon;
  116.  
  117.             return response()->json([
  118.                 'pesan'=>'sukses',
  119.                 'data'=>$total_nya
  120.             ]);
  121.         } catch (\Exception $e) {
  122.             return response()->json([
  123.                 'pesan'=>'gagal',
  124.                 'data'=>$e->getMessage().'|'.$e->getLine()
  125.             ]);
  126.         }
  127.     }
  128.  
  129.     public function get_customer(Request $request){
  130.         if ($request->has('q')) {
  131.             $cari = $request->q;
  132.             $data = M_customer::select('id', 'nama')->where('nama', 'LIKE', '%'.$cari.'%')->get();
  133.             return response()->json($data);
  134.         }
  135.     }
  136.  
  137.     public function store(Request $request){
  138.         try {
  139.             // dd($request);
  140.             $produk = $request->produk;
  141.             $qty = $request->qty;
  142.             $harga = $request->harga;
  143.             $harga_grosir = $request->harga_grosir;
  144.             $jenis_transaksi = [];
  145.             $jumlah_bayar = $request->jumlah_bayar;
  146.             $customer = $request->customer;
  147.             $diskon = $request->diskon;
  148.             $deposit = $request->deposit;
  149.             $buy = $request->buy;
  150.             $set_jenis_transaksi = $request->set_jenis_transaksi;
  151.  
  152.             // if($deposit == ''){
  153.             //     return response()->json([
  154.             //         'pesan'=>'gagal',
  155.             //         // 'data'=>'Kembalian Rp. '.number_format($kembalian,0)
  156.             //         'data'=>'deposit kosong'
  157.             //     ]);
  158.             // }else{
  159.             //     return response()->json([
  160.             //         'pesan'=>'gagal',
  161.             //         // 'data'=>'Kembalian Rp. '.number_format($kembalian,0)
  162.             //         'data'=>'deposit ada'
  163.             //     ]);
  164.             // }
  165.  
  166.             $kembalian = 0;
  167.  
  168.             // cek total
  169.             $total_nya = 0;
  170.             foreach ($produk as $e => $pd) {
  171.                 // if($jenis_transaksi[$e] == 1){
  172.                 //     $harganya = $harga[$e];
  173.                 //     // $jenis =
  174.                 // }elseif ($jenis_transaksi[$e] == 2) {
  175.                 //     $harganya = $harga_grosir[$e];
  176.                 // }else{
  177.                 //     $harganya = 0;
  178.                 // }
  179.  
  180.                 if($set_jenis_transaksi == 'eceran'){
  181.                     $harganya = $harga[$e];
  182.                     $jenis_transaksi[$e] = 1;
  183.                 }elseif ($set_jenis_transaksi == 'grosir') {
  184.                     $harganya = $harga_grosir[$e];
  185.                     $jenis_transaksi[$e] = 2;
  186.                 }elseif ($set_jenis_transaksi == 'free') {
  187.                     $harganya = 0;
  188.                     $jenis_transaksi[$e] = 3;
  189.                     $diskon = 0;
  190.                 }
  191.  
  192.                 $total_nya += (Int)$qty[$e] * (Int)$harganya;
  193.  
  194.                
  195.             }
  196.  
  197.             $total_nya -= $diskon;
  198.  
  199.             if($jumlah_bayar < $total_nya){
  200.                 $kurang_nya = $total_nya - $jumlah_bayar;
  201.                 return response()->json([
  202.                     'pesan'=>'gagal',
  203.                     // 'data'=>'Kembalian Rp. '.number_format($kembalian,0)
  204.                     'data'=>'uang Kurang Rp. '.number_format($kurang_nya,0)
  205.                 ]);
  206.             }
  207.  
  208.             $cek = \DB::transaction(function()use($produk,$qty,$harga,$harga_grosir,$jenis_transaksi,$jumlah_bayar,$customer,$diskon,$buy,$set_jenis_transaksi){
  209.                 $header = Sales::insertGetId([
  210.                     'no_struk'=>'sales-'.rand(),
  211.                     'customer'=>$customer,
  212.                     'diskon'=>$diskon,
  213.                     'jenis'=>'cash',
  214.                     'is_lunas'=>1,
  215.                     'created_at'=>date('Y-m-d H:i:s'),
  216.                     'updated_at'=>date('Y-m-d H:i:s')
  217.                 ]);
  218.  
  219.                 foreach ($produk as $e => $pd) {
  220.                     // if($jenis_transaksi[$e] == 1){
  221.                     //     $harganya = $harga[$e];
  222.                     //     // $jenis =
  223.                     // }elseif ($jenis_transaksi[$e] == 2) {
  224.                     //     $harganya = $harga_grosir[$e];
  225.                     // }else{
  226.                     //     $harganya = 0;
  227.                     // }
  228.  
  229.                     if($set_jenis_transaksi == 'eceran'){
  230.                         $harganya = $harga[$e];
  231.                         $jenis_transaksi[$e] = 1;
  232.                     }elseif ($set_jenis_transaksi == 'grosir') {
  233.                         $harganya = $harga_grosir[$e];
  234.                         $jenis_transaksi[$e] = 2;
  235.                     }elseif ($set_jenis_transaksi == 'free') {
  236.                         $harganya = 0;
  237.                         $jenis_transaksi[$e] = 3;
  238.                         $diskon = 0;
  239.                     }
  240.  
  241.                     Sales_line::insert([
  242.                         'sales'=>$header,
  243.                         'produk'=>$pd,
  244.                         'buy'=>$buy[$e],
  245.                         'harga'=>$harganya,
  246.                         'jenis_transaksi'=>$jenis_transaksi[$e],
  247.                         'qty'=>$qty[$e],
  248.                         'grand_total'=>(Int)$qty[$e] * (Int)$harganya
  249.                     ]);
  250.  
  251.                     $dt = M_produk::find($pd);
  252.                     $qty_now = $dt->stock;
  253.                     $qty_new = $qty_now - $qty[$e];
  254.                     M_produk::where('id',$pd)->update([
  255.                         'stock'=>$qty_new
  256.                     ]);
  257.                 }
  258.  
  259.                 $sum_total = Sales_line::where('sales',$header)->sum('grand_total');
  260.                 $sum_total -= $diskon;
  261.  
  262.                 $kembalian = $jumlah_bayar - $sum_total;
  263.  
  264.                 $total_buy = Sales_line::where('sales',$header)->sum('buy');
  265.  
  266.                 $bersih = $sum_total - $total_buy;
  267.  
  268.                 Sales::where('id',$header)->update([
  269.                     'bersih'=>$bersih,
  270.                     'grand_total'=>$sum_total,
  271.                     'jumlah_bayar'=>$jumlah_bayar,
  272.                     'kembalian'=>$kembalian
  273.                 ]);
  274.  
  275.                 // if($jumlah_bayar < $sum_total){
  276.                 //     return response()->json([
  277.                 //         'pesan'=>'gagal',
  278.                 //         'data'=>'Uang Kurang'
  279.                 //     ]);
  280.                 // }
  281.  
  282.             // \Session::flash('sukses','Kembalian Rp. '.number_format($kembalian,0));
  283.  
  284.                 $data['sum_total'] = $sum_total;
  285.                 $data['kembalian'] = $kembalian;
  286.                 $data['id_header'] = $header;
  287.                 return $data;
  288.  
  289.             });
  290.  
  291.            
  292.  
  293.             return response()->json([
  294.                 'pesan'=>'sukses',
  295.                 // 'data'=>'Kembalian Rp. '.number_format($kembalian,0)
  296.                 'id_sales'=>$cek['id_header'],
  297.                 'data'=>'Sukses, Kembalian : Rp. '.number_format($cek['kembalian'])
  298.             ]);
  299.  
  300.         } catch (\Exception $e) {
  301.             return response()->json([
  302.                 'pesan'=>'gagal',
  303.                 'data'=>$e->getMessage()
  304.             ]);
  305.         }
  306.         // return redirect()->back();
  307.     }
  308.  
  309.     public function store_deposit(Request $request){
  310.         try {
  311.             // dd($request);
  312.             $produk = $request->produk;
  313.             $qty = $request->qty;
  314.             $harga = $request->harga;
  315.             $harga_grosir = $request->harga_grosir;
  316.             $jenis_transaksi = $request->jenis_transaksi;
  317.             $jumlah_bayar = $request->jumlah_bayar;
  318.             $customer = $request->customer;
  319.             $diskon = $request->diskon;
  320.             $deposit = $request->deposit;
  321.             $buy = $request->buy;
  322.  
  323.             if($deposit == ''){
  324.                 return response()->json([
  325.                     'pesan'=>'gagal',
  326.                     // 'data'=>'Kembalian Rp. '.number_format($kembalian,0)
  327.                     'data'=>'deposit Tidak Boleh kosong'
  328.                 ]);
  329.             }
  330.  
  331.             $kembalian = 0;
  332.  
  333.             // cek total
  334.             $total_nya = 0;
  335.             foreach ($produk as $e => $pd) {
  336.                 if($jenis_transaksi[$e] == 1){
  337.                     $harganya = $harga[$e];
  338.                     // $jenis =
  339.                 }elseif ($jenis_transaksi[$e] == 2) {
  340.                     $harganya = $harga_grosir[$e];
  341.                 }else{
  342.                     $harganya = 0;
  343.                 }
  344.  
  345.                 $total_nya += (Int)$qty[$e] * (Int)$harganya;
  346.  
  347.                
  348.             }
  349.  
  350.             $total_nya -= $diskon;
  351.  
  352.             // if($jumlah_bayar < $total_nya){
  353.             //     $kurang_nya = $total_nya - $jumlah_bayar;
  354.             //     return response()->json([
  355.             //         'pesan'=>'gagal',
  356.             //         // 'data'=>'Kembalian Rp. '.number_format($kembalian,0)
  357.             //         'data'=>'uang Kurang Rp. '.number_format($kurang_nya,0)
  358.             //     ]);
  359.             // }
  360.  
  361.             $cek = \DB::transaction(function()use($produk,$qty,$harga,$harga_grosir,$jenis_transaksi,$jumlah_bayar,$customer,$diskon,$deposit,$buy){
  362.                 $header = Sales::insertGetId([
  363.                     'no_struk'=>'sales-'.rand(),
  364.                     'customer'=>$customer,
  365.                     'diskon'=>$diskon,
  366.                     'jenis'=>'deposit',
  367.                     'nominal_deposit'=>$deposit,
  368.                     'created_at'=>date('Y-m-d H:i:s'),
  369.                     'updated_at'=>date('Y-m-d H:i:s')
  370.                 ]);
  371.  
  372.                 foreach ($produk as $e => $pd) {
  373.                     if($jenis_transaksi[$e] == 1){
  374.                         $harganya = $harga[$e];
  375.                         // $jenis =
  376.                     }elseif ($jenis_transaksi[$e] == 2) {
  377.                         $harganya = $harga_grosir[$e];
  378.                     }else{
  379.                         $harganya = 0;
  380.                     }
  381.  
  382.                     Sales_line::insert([
  383.                         'sales'=>$header,
  384.                         'produk'=>$pd,
  385.                         'harga'=>$harganya,
  386.                         'buy'=>$buy[$e],
  387.                         'jenis_transaksi'=>$jenis_transaksi[$e],
  388.                         'qty'=>$qty[$e],
  389.                         'grand_total'=>(Int)$qty[$e] * (Int)$harganya
  390.                     ]);
  391.  
  392.                     $dt = M_produk::find($pd);
  393.                     $qty_now = $dt->stock;
  394.                     $qty_new = $qty_now - $qty[$e];
  395.                     M_produk::where('id',$pd)->update([
  396.                         'stock'=>$qty_new
  397.                     ]);
  398.                 }
  399.  
  400.                 $sum_total = Sales_line::where('sales',$header)->sum('grand_total');
  401.                 $sum_total -= $diskon;
  402.  
  403.                 $kembalian = $jumlah_bayar - $sum_total;
  404.                 $total_buy = Sales_line::where('sales',$header)->sum('buy');
  405.  
  406.                 $bersih = $sum_total - $total_buy;
  407.  
  408.                 Sales::where('id',$header)->update([
  409.                     'bersih'=>$bersih,
  410.                     'grand_total'=>$sum_total,
  411.                     'jumlah_bayar'=>$jumlah_bayar,
  412.                     'kembalian'=>0
  413.                 ]);
  414.  
  415.                 // if($jumlah_bayar < $sum_total){
  416.                 //     return response()->json([
  417.                 //         'pesan'=>'gagal',
  418.                 //         'data'=>'Uang Kurang'
  419.                 //     ]);
  420.                 // }
  421.  
  422.             // \Session::flash('sukses','Kembalian Rp. '.number_format($kembalian,0));
  423.  
  424.                 $data['sum_total'] = $sum_total;
  425.                 $data['kembalian'] = $kembalian;
  426.                 return $data;
  427.  
  428.             });
  429.  
  430.            
  431.  
  432.             return response()->json([
  433.                 'pesan'=>'sukses',
  434.                 // 'data'=>'Kembalian Rp. '.number_format($kembalian,0)
  435.                 'data'=>'Sukses, Deposit berhasil dilakukan'
  436.             ]);
  437.  
  438.         } catch (\Exception $e) {
  439.             return response()->json([
  440.                 'pesan'=>'gagal',
  441.                 'data'=>$e->getMessage().'|'.$e->getLine()
  442.             ]);
  443.         }
  444.         // return redirect()->back();
  445.     }
  446. }
RAW Paste Data