| Server IP : 14.225.204.176 / Your IP : 216.73.216.252 Web Server : nginx/1.24.0 System : Linux nodejs-ybgk 6.8.0-40-generic #40-Ubuntu SMP PREEMPT_DYNAMIC Fri Jul 5 10:34:03 UTC 2024 x86_64 User : root ( 0) PHP Version : 8.1.34 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /var/www/html/php/thanhphuong/app/Http/Controllers/ |
Upload File : |
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Warehouse;
use App\Product_Warehouse;
use App\Product;
use App\Adjustment;
use App\ProductAdjustment;
use DB;
use Carbon\Carbon;
use App\StockCount;
use App\GeneralSetting;
use Auth;
use Spatie\Permission\Models\Role;
use Spatie\Permission\Models\Permission;
class AdjustmentController extends Controller
{
public function index()
{
$role = Role::find(Auth::user()->role_id);
if( $role->hasPermissionTo('adjustment') ) {
if(Auth::user()->role_id > 2 && $general_setting->staff_access == 'own')
$lims_adjustment_all = Adjustment::orderBy('id', 'desc')->where('user_id', Auth::id())->get();
else
$lims_adjustment_all = Adjustment::orderBy('id', 'desc')->get();
return view('adjustment.index', compact('lims_adjustment_all'));
}
else
return redirect()->back()->with('not_permitted', 'Sorry! You are not allowed to access this module');
}
public function getProduct($id)
{
$lims_product_warehouse_data = DB::table('products')
->join('product_warehouse', 'products.id', '=', 'product_warehouse.product_id')
->where([ ['products.is_active', 1], ['product_warehouse.warehouse_id', $id] ])
->select('product_warehouse.qty', 'products.code', 'products.name')
->get();
$product_code = [];
$product_name = [];
$product_qty = [];
$product_data = [];
foreach ($lims_product_warehouse_data as $product_warehouse)
{
$product_qty[] = $product_warehouse->qty;
$product_code[] = $product_warehouse->code;
$product_name[] = $product_warehouse->name;
}
$product_data[] = $product_code;
$product_data[] = $product_name;
$product_data[] = $product_qty;
return $product_data;
}
public function limsProductSearch(Request $request)
{
$product_code = explode(" ", $request['data']);
$lims_product_data = Product::where('code', $product_code[0])->first();
$product[] = $lims_product_data->name;
$product[] = $lims_product_data->code;
$product[] = $lims_product_data->id;
return $product;
}
public function create()
{
$lims_warehouse_list = Warehouse::where('is_active', true)->get();
$date_format = GeneralSetting::select('date_format')->latest()->first();
return view('adjustment.create', compact('lims_warehouse_list', 'date_format'));
}
public function store(Request $request)
{
$data = $request->except('document');
$date_format = GeneralSetting::select('date_format')->latest()->first();
if( isset($data['stock_count_id']) ){
$lims_stock_count_data = StockCount::find($data['stock_count_id']);
$lims_stock_count_data->is_adjusted = true;
$lims_stock_count_data->save();
}
$data['reference_no'] = 'adr-' . date("Ymd") . '-'. date("his");
$document = $request->document;
if ($document) {
$documentName = $document->getClientOriginalName();
$document->move('public/documents/adjustment', $documentName);
$data['document'] = $documentName;
}
Adjustment::create($data);
$lims_adjustment_data = Adjustment::latest()->first();
$method = $data['method'];
$product_id = $data['product_id'];
$qty = $data['qty'];
$lot_number = $data['lot_number'];
$serial_number = $data['serial_number'];
$batch_number = $data['batch_number'];
$invoice_number = $data['invoice_number'];
$invoice_date = $data['invoice_date'];
$oc_number = $data['oc_number'];
$tr_number = $data['tr_number'];
foreach ($product_id as $key => $pro_id) {
$action = "+";
$lims_product_data = Product::find($pro_id);
$lims_product_warehouse_data = Product_Warehouse::where([
['product_id', $pro_id],
['warehouse_id', $data['warehouse_id'] ],
])->first();
if($method == 'export'){
$lims_product_data->qty -= $qty[$key];
$lims_product_warehouse_data->qty -= $qty[$key];
$action = "-";
}
elseif($method == 'import'){
$lims_product_data->qty += $qty[$key];
$lims_product_warehouse_data->qty += $qty[$key];
$action = "+";
} elseif ($method == "transfer") {
$lims_product_warehouse_data->qty -= $qty[$key];
$lims_product_warehouse_data->qty -= $qty[$key];
$action = "-+";
}
$lims_product_data->save();
$lims_product_warehouse_data->save();
$product_adjustment['adjustment_id'] = $lims_adjustment_data->id;
$product_adjustment['product_id'] = $pro_id;
$product_adjustment['qty'] = $qty[$key];
$product_adjustment['lot_number'] = $lot_number[$key];
$product_adjustment['serial_number'] = $serial_number[$key];
$product_adjustment['batch_number'] = $batch_number[$key];
$product_adjustment['invoice_number'] = $invoice_number[$key];
$product_adjustment['invoice_date'] = isset($invoice_date[$key]) ? Carbon::createFromFormat($date_format->date_format, $invoice_date[$key]) : null;
$product_adjustment['tr_number'] = $tr_number[$key];
$product_adjustment['oc_number'] = $oc_number[$key];
$product_adjustment['action'] = $action;
ProductAdjustment::create($product_adjustment);
}
return redirect('qty_adjustment')->with('message', 'Data inserted successfully');
}
public function edit($id)
{
$lims_adjustment_data = Adjustment::find($id);
$lims_product_adjustment_data = ProductAdjustment::where('adjustment_id', $id)->get();
$lims_warehouse_list = Warehouse::where('is_active', true)->get();
return view('adjustment.edit', compact('lims_adjustment_data', 'lims_warehouse_list', 'lims_product_adjustment_data'));
}
public function update(Request $request, $id)
{
$data = $request->except('document');
$document = $request->document;
if ($document) {
$documentName = $document->getClientOriginalName();
$document->move('public/documents/adjustment', $documentName);
$data['document'] = $documentName;
}
$lims_adjustment_data = Adjustment::find($id);
$lims_product_adjustment_data = ProductAdjustment::where('adjustment_id', $id)->get();
$product_id = $data['product_id'];
$qty = $data['qty'];
$action = $data['action'];
foreach ($lims_product_adjustment_data as $key => $product_adjustment_data) {
$old_product_id[] = $product_adjustment_data->product_id;
$lims_product_data = Product::find($product_adjustment_data->product_id);
$lims_product_warehouse_data = Product_Warehouse::where([
['product_id', $product_adjustment_data->product_id],
['warehouse_id', $lims_adjustment_data->warehouse_id]
])->first();
if($product_adjustment_data->action == '-'){
$lims_product_data->qty += $product_adjustment_data->qty;
$lims_product_warehouse_data->qty += $product_adjustment_data->qty;
}
elseif($product_adjustment_data->action == '+'){
$lims_product_data->qty -= $product_adjustment_data->qty;
$lims_product_warehouse_data->qty -= $product_adjustment_data->qty;
}
$lims_product_data->save();
$lims_product_warehouse_data->save();
if( !(in_array($old_product_id[$key], $product_id)) )
$product_adjustment_data->delete();
}
foreach ($product_id as $key => $pro_id) {
$lims_product_data = Product::find($pro_id);
$lims_product_warehouse_data = Product_Warehouse::where([
['product_id', $pro_id],
['warehouse_id', $data['warehouse_id'] ],
])->first();
if($action[$key] == '-'){
$lims_product_data->qty -= $qty[$key];
$lims_product_warehouse_data->qty -= $qty[$key];
}
elseif($action[$key] == '+'){
$lims_product_data->qty += $qty[$key];
$lims_product_warehouse_data->qty += $qty[$key];
}
$lims_product_data->save();
$lims_product_warehouse_data->save();
$product_adjustment['product_id'] = $pro_id;
$product_adjustment['adjustment_id'] = $id;
$product_adjustment['qty'] = $qty[$key];
$product_adjustment['action'] = $action[$key];
if(in_array($pro_id, $old_product_id)){
ProductAdjustment::where([
['adjustment_id', $id],
['product_id', $pro_id]
])->update($product_adjustment);
}
else
ProductAdjustment::create($product_adjustment);
}
$lims_adjustment_data->update($data);
return redirect('qty_adjustment')->with('message', 'Data updated successfully');
}
public function deleteBySelection(Request $request)
{
$adjustment_id = $request['adjustmentIdArray'];
foreach ($adjustment_id as $id) {
$lims_adjustment_data = Adjustment::find($id);
$lims_product_adjustment_data = ProductAdjustment::where('adjustment_id', $id)->get();
foreach ($lims_product_adjustment_data as $key => $product_adjustment_data) {
$lims_product_data = Product::find($product_adjustment_data->product_id);
$lims_product_warehouse_data = Product_Warehouse::where([
['product_id', $product_adjustment_data->product_id],
['warehouse_id', $lims_adjustment_data->warehouse_id]
])->first();
if($product_adjustment_data->action == '-'){
$lims_product_data->qty += $product_adjustment_data->qty;
$lims_product_warehouse_data->qty += $product_adjustment_data->qty;
}
elseif($product_adjustment_data->action == '+'){
$lims_product_data->qty -= $product_adjustment_data->qty;
$lims_product_warehouse_data->qty -= $product_adjustment_data->qty;
}
$lims_product_data->save();
$lims_product_warehouse_data->save();
$product_adjustment_data->delete();
}
$lims_adjustment_data->delete();
}
return 'Data deleted successfully';
}
public function destroy($id)
{
$lims_adjustment_data = Adjustment::find($id);
$lims_product_adjustment_data = ProductAdjustment::where('adjustment_id', $id)->get();
foreach ($lims_product_adjustment_data as $key => $product_adjustment_data) {
$lims_product_data = Product::find($product_adjustment_data->product_id);
$lims_product_warehouse_data = Product_Warehouse::where([
['product_id', $product_adjustment_data->product_id],
['warehouse_id', $lims_adjustment_data->warehouse_id]
])->first();
if($product_adjustment_data->action == '-'){
$lims_product_data->qty += $product_adjustment_data->qty;
$lims_product_warehouse_data->qty += $product_adjustment_data->qty;
}
elseif($product_adjustment_data->action == '+'){
$lims_product_data->qty -= $product_adjustment_data->qty;
$lims_product_warehouse_data->qty -= $product_adjustment_data->qty;
}
$lims_product_data->save();
$lims_product_warehouse_data->save();
$product_adjustment_data->delete();
}
$lims_adjustment_data->delete();
return redirect('qty_adjustment')->with('not_permitted', 'Data deleted successfully');
}
}