1 jam -> 4 order 2 jam -> 2 order 4 jam -> 2 order tanggal 15 order Senin meeting TA untuk cek API berubah 11/11 harus semua sudah jalan Unloading time -> scan checker -> In Checking time -> Finished Checking -> Print Grn -> Pending put way Resi bisa 14:17 di Handover potong stok stok reserved pending ke ready Ready to pick get awb -> SLA CHceck stock pending RTP get AWB 15:04 Selama belum di handover adalah cancel Pada stock opname RTP mati Harus di accept Order, shopee tiktok sudah otomatis tokopedia lazada PERTANYAAN 1. Order instant sudah pasti bukan PO? Harus cek ke shipping agent juga. contoh gojek sama grab 1. Pada saat di delivery fast, ketika user change product maka reset datatables 2. Edit stok di sistem. (25 menit) 3. Kirim invoice yang PKT salah 4. Menambahkan robots.txt agar tidak bisa terdeteksi di search engine 5. Menambahkan reuired pada expired dan batch 6. 29 Juli pindah lazada nuface jubelio ke wms 7. 7 Agustus Meeting progress 8. 31 Meeting settlement Distinct dulu > jika barang memenuhi semua orderan bisa langsung pindah else ngecek satu satu stok nya Reguler dulu yang di proses, lalu PO RTP digabung ke PENDING. kaya nambah 1 kolom awb Ready. tapi ketika di klik tampilan nya harus tetap hilang ? Kenapa ada yang status nya pre order tapi kurir nya instant. Nanti di sistem dia masuk ke tab yang mana ? Bagaimana jika filter sku di pending, invoice tersebut di change product ? Menambahkan flag jika orderan di change product agar tidak masuk kedalam filter sku di pending ? Muncul pesan OOS berulang 24080156FPQ8FV ? Jika di inventory stock kosong tapi di rack ada. logika nya gimana ? Not scan apakah hanya untuk sku yang sama ? apakah storage bisa lebih dari satu ? Di checker apakah perlu cek status nya cancel urutkan berdasarkan expired date ED AGING DATE SKU VARIAN OMS WMS Bypass dan reguler bisa di on off oleh leader. baru muncul fitur nya di admin in picking & in transfer onhand potong stok di picking onhand potong stok di handover OMS buffer WMS Rack Mmembuat tabel baru untuk menampung status setelah order analayst jika barang kurang akan memunculkan history error pack Back Order Normal - Picking - Checker Pick Done by role access BIN character 10:53 cange product reserved jadi alocate menambahkan kolom moving & in_transit Bikin manual order Menambahkan tombol confirm pada saat picker di assign admin. bisa dua duanya menambahkan role access untuk langsung menginputkan qty di checker Scan Box diakhir Scan Load Outboound > pending, dll Shipping > Load Nama kurir Nama Pickup Tokopedia > data.shipping_date Shopee > response.order_list[0].pickup_done_time Tiktok > https://wms.gosyenretail.co.id/api/tiktok/getfulfilmentinfo/33?package_id=1154433217224541858 > data.tracking_info_list[5].update_time / last 2 Lazada > 11:17 Pembahasan barang kurang 11:32 Tombol error checker Memunculkan confirm to qc jika invoice bermasalah QC membuatkan picklist baru untuk invoice yang bermasalah dan qc mengembalikan ke rack Receive Menmabhakna filter sku otomatis menambahkan sku / barcode di halaman list item rack menambhakan nomor bin pada awb menambahkan kurir barang rusak barang di lokasi tidak ada varian salah otomatis langsung 1 where('username',request('username')) ->first(); if($data){ if(Hash::check(request('password'),$data['password'])){ $detail_temp = role_access::where("header_id",$data["role_id"])->get(); $data_access = $detail_temp->pluck('code')->toArray(); $data->access = $data_access; $data_return = [ "status" => "success", "code" => "200", "data" => $data ]; } else{ $data_return = [ "status" => "Username not Found", "code" => "500", "data" => null ]; } }else{ $data_return = [ "status" => "Username not Found", "code" => "500", "data" => null ]; } return $data_return; } public function picklistMobile (Request $request) { $check_number = delv2_header::where('status','=',3) ->where('consilidate_number',request('barcode')) ->where('status_qrcode',0) ->count(); if ($check_number > 0) { $check_set = delv2_header::where('status','=',3) ->where('consilidate_number',request('barcode')) ->first(); if (is_null($check_set->pick_manual_time)) { $status = 'success'; $data = DB::table('delivery_consilidations as a') ->where('a.consilidate_number', $check_set->consilidate_number) ->get(); if (request("session") !== null) { $session_id = request("session"); }else{ $session_id = request()->session()->get('users')['id']; } $arrow_change = delv2_header::where('consilidate_number',request('barcode')) ->update([ "pick_manual_id" => $session_id, "consol_manual_id" => $session_id, "pick_manual_time" => date("Y-m-d H:i:s"), "consol_manual_time" => date("Y-m-d H:i:s"), "pick_picker_id" => $session_id, ]); $status = 'success'; $code = '200'; $data = []; }else{ $status = 'failed'; $code = '501'; $data = []; } }else{ $status = 'barcode'; $code = '502'; $data = []; } return response()->json([ "status" => $status, "code" => $code, "data" => $data ]); } public function userlistMobile (Request $request) { $datalist = DB::table('delivery_consilidations as a') ->select(array('a.consilidate_number',DB::raw('sum(a.`qty`) as total_qty,sum(a.`consol_parsial`) as total_consol,COUNT(a.`sku`) AS total_sku'))) ->leftjoin('stock_racks as b', 'a.rack_id', '=', 'b.id') ->leftjoin('deliveryv2_headers as c', 'a.header_id', '=', 'c.id') ->where('c.pick_picker_id','=',request("session")) ->groupBy('a.consilidate_number') ->get(); foreach ($datalist as $key => $value) { $detail = DB::table('delivery_consilidations as a') ->select(array('a.rack_id','b.code','a.checked_status','b.name',DB::raw('sum(a.`qty`) as total_qty,sum(a.`consol_parsial`) as total_consol,COUNT(a.`sku`) AS total_sku'))) ->leftjoin('stock_racks as b', 'a.rack_id', '=', 'b.id') ->leftjoin('deliveryv2_headers as c', 'a.header_id', '=', 'c.id') ->where('c.consilidate_number','=',$value->consilidate_number) ->where('a.checked_status',0) ->groupBy('a.consilidate_number','a.rack_id','b.code','b.name','a.checked_status') ->orderBy('b.code') ->first(); $value->detail = $detail; if ($detail == null) { $value->status_done = 1; } else{ $value->status_done = 0; } } return response()->json([ "status" => "success", "code" => "200", "data" => $datalist ]); } public function userlistRackMobile (Request $request) { $detail = DB::table('delivery_consilidations as a') ->select(array('a.rack_id','b.code','a.checked_status','b.name',DB::raw('sum(a.`qty`) as total_qty,sum(a.`consol_parsial`) as total_consol,COUNT(a.`sku`) AS total_sku'))) ->leftjoin('stock_racks as b', 'a.rack_id', '=', 'b.id') ->leftjoin('deliveryv2_headers as c', 'a.header_id', '=', 'c.id') ->where('c.consilidate_number','=',request("barcode")) ->where('c.pick_picker_id','=',request("session")) ->where('a.checked_status',0) ->groupBy('a.consilidate_number','a.rack_id','b.code','b.name','a.checked_status') ->orderBy('b.code') ->first(); return response()->json([ "status" => "success", "code" => "200", "data" => $detail ]); } public function pickRemoveMobile (Request $request) { $arrow_change = delv2_header::where('consilidate_number',request('barcode')) ->update([ "pick_manual_id" => null, "pick_manual_time" => null, "pick_picker_id" => null, ]); return response()->json([ "status" => "success", "code" => "200", "data" => "dah kosong nih boss" ]); } public function listItemRackSet (Request $request) { $datalist = DB::table('delivery_consilidations as a') ->select(array('a.product_id','a.sku','d.name','d.barcode',DB::raw('MAX(checked_status) as checked_status,sum(a.`qty`) as total_qty,sum(a.`consol_parsial`) as total_consol'))) ->leftjoin('stock_racks as b', 'a.rack_id', '=', 'b.id') ->leftjoin('deliveryv2_headers as c', 'a.header_id', '=', 'c.id') ->leftjoin('mst_products as d', 'a.product_id', '=', 'd.id') ->where('a.consilidate_number',request('barcode')) ->where('a.rack_id',request('rack_id')) ->groupBy('a.product_id','a.sku','d.name','d.barcode') ->get(); if ($datalist != null) { return response()->json([ "status" => "success", "code" => "200", "data" => $datalist ]); } else{ return response()->json([ "status" => "done", "code" => "201", "data" => "list sudah selesai semua" ]); } } public function pickConsolItem (Request $request) { DB::beginTransaction(); try { $datalist = DB::table('delivery_consilidations as a') ->select(array('a.id','a.bin_id','a.rack_id','a.product_id','a.consol_parsial','a.qty')) ->where('a.consilidate_number',request('barcode')) ->where('a.rack_id',request('rack_id')) ->where('a.product_id',request('product_id')) ->whereRaw('a.qty > a.consol_parsial',[]) ->get(); if (request("flag") == 1) { $qty_set = request("qty"); $bin_data = []; $done_so = []; $done_sku = 0; $done_pick = 0; foreach ($datalist as $key_consil => $value_consil) { $qty_need = $value_consil->qty - $value_consil->consol_parsial; if ($qty_set >= $qty_need) { $update_consol = del_conso::where('id',$value_consil->id) ->update([ "consol_parsial" => $value_consil->qty, "consol_status" => 1, "checked_status" => 1 ]); $qty_set = $qty_set - $value_consil->qty; $data_temp = []; $data_temp["bin"] = $value_consil->bin_id; $data_temp["qty"] = $qty_need; array_push($bin_data, $data_temp); } else{ $qty_save = $value_consil->consol_parsial + $qty_set; $update_consol = del_conso::where('id',$value_consil->id) ->update([ "consol_parsial" => $qty_save ]); $data_temp = []; $data_temp["bin"] = $value_consil->bin_id; $data_temp["qty"] = $qty_set; array_push($bin_data, $data_temp); break; } } foreach ($bin_data as $key_bin => $value_bin) { $check_bin = DB::table('delivery_consilidations as a') ->select(array('a.id','a.bin_id','a.rack_id','a.product_id','a.consol_parsial','a.qty')) ->where('a.bin_id',$value_bin["bin"]) ->where('consilidate_number',request('barcode')) ->where('a.consol_status',0) ->count(); if ($check_bin == 0) { $delivery_data = delv2_header::where('bin_id',$value_bin["bin"]) ->where('consilidate_number',request('barcode')) ->first(); $update_consol = delv2_header::where('id',$delivery_data->id) ->update([ "pick_done_time" => date("Y-m-d H:i:s"), "consol_done_time" => date("Y-m-d H:i:s"), "pick_done_id" => $delivery_data->pick_manual_id, "consol_done_id" => $delivery_data->consol_manual_id, "status" => 4 ]); array_push($done_so, $value_bin["bin"]); } } $data_product = DB::table('delivery_consilidations as a') ->select(array('a.id','a.bin_id','a.rack_id','a.product_id','a.consol_parsial','a.qty')) ->where('a.consilidate_number',request('barcode')) ->where('a.rack_id',request('rack_id')) ->where('a.product_id',request('product_id')) ->whereRaw('a.qty > a.consol_parsial',[]) ->count(); if ($data_product == 0) { $done_sku = 1; } $check_all_so = DB::table('delivery_consilidations as a') ->select(array('a.id','a.bin_id','a.rack_id','a.product_id','a.consol_parsial','a.qty')) ->where('consilidate_number',request('barcode')) ->where('a.checked_status',0) ->count(); if ($check_all_so == 0) { $done_pick = 1; } } else{ $bin_data = []; $done_so = []; $done_sku = 0; $done_pick = 0; foreach ($datalist as $key_flag => $value_flag) { $update_consol = del_conso::where('id',$value_flag->id) ->update([ "checked_status" => request("flag") ]); } $check_all_so = DB::table('delivery_consilidations as a') ->select(array('a.id','a.bin_id','a.rack_id','a.product_id','a.consol_parsial','a.qty')) ->where('consilidate_number',request('barcode')) ->where('a.checked_status',0) ->count(); if ($check_all_so == 0) { $done_pick = 1; } } DB::commit(); return response()->json([ "status" => "success", "code" => "200", "data" => [ "bin_set" => $bin_data, "so_done" => $done_so, "sku_done" => $done_sku, "pick_done" => $done_pick ] ]); } catch (Exception $e) { return response()->json([ "status" => "failed", "code" => "501", "data" => [] ]); } } public function checkedStatusConsil (Request $request) { $datalist = del_conso::where('consilidate_number',request('barcode')) ->where('rack_id',request('rack_id')) ->where('checked_status',0) ->update([ "checked_status" => 2 ]); return response()->json([ "status" => "success", "code" => "200", "data" => "dah di update nih boss seneng kan ?" ]); } public function checkedResetConsil (Request $request) { $datalist = del_conso::where('consilidate_number',request('barcode')) ->where('rack_id',request('rack_id')) ->update([ "checked_status" => 0 ]); return response()->json([ "status" => "success", "code" => "200", "data" => "dah di reset nih boss seneng kan ?" ]); } public function resetConsil (Request $request) { $datalist = del_conso::where('consilidate_number',request('barcode')) ->update([ "consol_parsial" => 0, "consol_status" => 0, "checked_status" => 0 ]); return response()->json([ "status" => "success", "code" => "200", "data" => "dah di reset nih boss" ]); } //Function Mobile }