fadlyshafa

Untitled

May 2nd, 2020
165
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.             $set_jenis_transaksi = $request->set_jenis_transaksi;
  323.  
  324.             if($deposit == ''){
  325.                 return response()->json([
  326.                     'pesan'=>'gagal',
  327.                     // 'data'=>'Kembalian Rp. '.number_format($kembalian,0)
  328.                     'data'=>'deposit Tidak Boleh kosong'
  329.                 ]);
  330.             }
  331.  
  332.             $kembalian = 0;
  333.  
  334.             // cek total
  335.             $total_nya = 0;
  336.             foreach ($produk as $e => $pd) {
  337.                 // if($jenis_transaksi[$e] == 1){
  338.                 //     $harganya = $harga[$e];
  339.                 //     // $jenis =
  340.                 // }elseif ($jenis_transaksi[$e] == 2) {
  341.                 //     $harganya = $harga_grosir[$e];
  342.                 // }else{
  343.                 //     $harganya = 0;
  344.                 // }
  345.  
  346.                 if($set_jenis_transaksi == 'eceran'){
  347.                     $harganya = $harga[$e];
  348.                     $jenis_transaksi[$e] = 1;
  349.                 }elseif ($set_jenis_transaksi == 'grosir') {
  350.                     $harganya = $harga_grosir[$e];
  351.                     $jenis_transaksi[$e] = 2;
  352.                 }elseif ($set_jenis_transaksi == 'free') {
  353.                     $harganya = 0;
  354.                     $jenis_transaksi[$e] = 3;
  355.                     $diskon = 0;
  356.                 }
  357.  
  358.                 $total_nya += (Int)$qty[$e] * (Int)$harganya;
  359.  
  360.                
  361.             }
  362.  
  363.             $total_nya -= $diskon;
  364.  
  365.             // if($jumlah_bayar < $total_nya){
  366.             //     $kurang_nya = $total_nya - $jumlah_bayar;
  367.             //     return response()->json([
  368.             //         'pesan'=>'gagal',
  369.             //         // 'data'=>'Kembalian Rp. '.number_format($kembalian,0)
  370.             //         'data'=>'uang Kurang Rp. '.number_format($kurang_nya,0)
  371.             //     ]);
  372.             // }
  373.  
  374.             $cek = \DB::transaction(function()use($produk,$qty,$harga,$harga_grosir,$jenis_transaksi,$jumlah_bayar,$customer,$diskon,$deposit,$buy,$set_jenis_transaksi){
  375.                 $header = Sales::insertGetId([
  376.                     'no_struk'=>'sales-'.rand(),
  377.                     'customer'=>$customer,
  378.                     'diskon'=>$diskon,
  379.                     'jenis'=>'deposit',
  380.                     'nominal_deposit'=>$deposit,
  381.                     'created_at'=>date('Y-m-d H:i:s'),
  382.                     'updated_at'=>date('Y-m-d H:i:s')
  383.                 ]);
  384.  
  385.                 foreach ($produk as $e => $pd) {
  386.                     // if($jenis_transaksi[$e] == 1){
  387.                     //     $harganya = $harga[$e];
  388.                     //     // $jenis =
  389.                     // }elseif ($jenis_transaksi[$e] == 2) {
  390.                     //     $harganya = $harga_grosir[$e];
  391.                     // }else{
  392.                     //     $harganya = 0;
  393.                     // }
  394.  
  395.                     if($set_jenis_transaksi == 'eceran'){
  396.                         $harganya = $harga[$e];
  397.                         $jenis_transaksi[$e] = 1;
  398.                     }elseif ($set_jenis_transaksi == 'grosir') {
  399.                         $harganya = $harga_grosir[$e];
  400.                         $jenis_transaksi[$e] = 2;
  401.                     }elseif ($set_jenis_transaksi == 'free') {
  402.                         $harganya = 0;
  403.                         $jenis_transaksi[$e] = 3;
  404.                         $diskon = 0;
  405.                     }
  406.  
  407.                     Sales_line::insert([
  408.                         'sales'=>$header,
  409.                         'produk'=>$pd,
  410.                         'harga'=>$harganya,
  411.                         'buy'=>$buy[$e],
  412.                         'jenis_transaksi'=>$jenis_transaksi[$e],
  413.                         'qty'=>$qty[$e],
  414.                         'grand_total'=>(Int)$qty[$e] * (Int)$harganya
  415.                     ]);
  416.  
  417.                     $dt = M_produk::find($pd);
  418.                     $qty_now = $dt->stock;
  419.                     $qty_new = $qty_now - $qty[$e];
  420.                     M_produk::where('id',$pd)->update([
  421.                         'stock'=>$qty_new
  422.                     ]);
  423.                 }
  424.  
  425.                 $sum_total = Sales_line::where('sales',$header)->sum('grand_total');
  426.                 $sum_total -= $diskon;
  427.  
  428.                 $kembalian = $jumlah_bayar - $sum_total;
  429.                 $total_buy = Sales_line::where('sales',$header)->sum('buy');
  430.  
  431.                 $bersih = $sum_total - $total_buy;
  432.  
  433.                 Sales::where('id',$header)->update([
  434.                     'bersih'=>$bersih,
  435.                     'grand_total'=>$sum_total,
  436.                     'jumlah_bayar'=>$jumlah_bayar,
  437.                     'kembalian'=>0
  438.                 ]);
  439.  
  440.                 // if($jumlah_bayar < $sum_total){
  441.                 //     return response()->json([
  442.                 //         'pesan'=>'gagal',
  443.                 //         'data'=>'Uang Kurang'
  444.                 //     ]);
  445.                 // }
  446.  
  447.             // \Session::flash('sukses','Kembalian Rp. '.number_format($kembalian,0));
  448.  
  449.                 $data['sum_total'] = $sum_total;
  450.                 $data['kembalian'] = $kembalian;
  451.                 return $data;
  452.  
  453.             });
  454.  
  455.            
  456.  
  457.             return response()->json([
  458.                 'pesan'=>'sukses',
  459.                 // 'data'=>'Kembalian Rp. '.number_format($kembalian,0)
  460.                 'data'=>'Sukses, Deposit berhasil dilakukan'
  461.             ]);
  462.  
  463.         } catch (\Exception $e) {
  464.             return response()->json([
  465.                 'pesan'=>'gagal',
  466.                 'data'=>$e->getMessage().'|'.$e->getLine()
  467.             ]);
  468.         }
  469.         // return redirect()->back();
  470.     }
  471. }
RAW Paste Data