fadlyshafa

Untitled

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