conflict resolve

This commit is contained in:
divya abdar
2025-12-03 16:13:37 +05:30
23 changed files with 1634 additions and 629 deletions

View File

@@ -10,6 +10,10 @@ use App\Models\MarkList;
use App\Models\Invoice;
use App\Models\InvoiceItem;
use App\Models\User;
use PDF; // barryvdh/laravel-dompdf facade
use Maatwebsite\Excel\Facades\Excel;
use App\Exports\OrdersExport;
class AdminOrderController extends Controller
{
@@ -87,8 +91,8 @@ class AdminOrderController extends Controller
'status' => 'pending',
]);
// If you want to auto-create an invoice at order creation, uncomment:
// $this->createInvoice($order);
//If you want to auto-create an invoice at order creation, uncomment:
$this->createInvoice($order);
return redirect()->route('admin.orders.show', $order->id)
->with('success', 'Order created successfully.');
@@ -164,30 +168,46 @@ class AdminOrderController extends Controller
return redirect()->back()->with('success', 'Item deleted and totals updated.');
}
/**
* Restore soft-deleted item and recalc totals
*/
public function restoreItem($id)
{
$item = OrderItem::withTrashed()->findOrFail($id);
$order = Order::findOrFail($item->order_id);
$item->restore();
// recalc totals
$this->recalcTotals($order);
return redirect()->back()->with('success', 'Item restored and totals updated.');
}
// ---------------------------
// ORDER CRUD: update / destroy
// ---------------------------
public function updateItem(Request $request, $id)
public function update(Request $request, $id)
{
$item = OrderItem::findOrFail($id);
$order = Order::findOrFail($id);
$item->update([
'description' => $request->description,
'ctn' => $request->ctn,
'qty' => $request->qty,
'ttl_qty' => $request->ttl_qty,
'unit' => $request->unit,
'price' => $request->price,
'ttl_amount' => $request->ttl_amount,
'cbm' => $request->cbm,
'ttl_cbm' => $request->ttl_cbm,
'kg' => $request->kg,
'ttl_kg' => $request->ttl_kg,
'shop_no' => $request->shop_no,
$data = $request->validate([
'mark_no' => 'required|string',
'origin' => 'nullable|string',
'destination' => 'nullable|string',
]);
return back()->with('success', 'Item updated successfully!');
$order->update([
'mark_no' => $data['mark_no'],
'origin' => $data['origin'] ?? null,
'destination' => $data['destination'] ?? null,
]);
// optionally recalc totals (not necessary unless you change item-level fields here)
$this->recalcTotals($order);
return redirect()->route('admin.orders.show', $order->id)
->with('success', 'Order updated successfully.');
}
/**
@@ -324,10 +344,6 @@ class AdminOrderController extends Controller
return null;
}
// -------------------------------------------------------------------------
// Popup function
// -------------------------------------------------------------------------
public function popup($id)
{
@@ -342,27 +358,8 @@ class AdminOrderController extends Controller
return view('admin.popup', compact('order', 'user'));
}
// -------------------------------------------------------------------------
// Restore Item
// -------------------------------------------------------------------------
public function restoreItem($id)
{
$item = OrderItem::onlyTrashed()->findOrFail($id);
$item->restore();
if (request()->ajax()) {
return response()->json([
'status' => 'ok',
'message' => 'Item restored.'
]);
}
return back()->belongsTo(Order::class)->with('success', 'Item restored successfully.');
}
// -------------------------------------------------------------------------
// Reset temp
// -------------------------------------------------------------------------
public function resetTemp()
@@ -373,11 +370,6 @@ class AdminOrderController extends Controller
->with('success', 'Order reset successfully.');
}
// -------------------------------------------------------------------------
// ORDER SHOW PAGE
// -------------------------------------------------------------------------
public function orderShow()
{
$orders = Order::with([
@@ -391,55 +383,79 @@ class AdminOrderController extends Controller
return view('admin.orders', compact('orders'));
}
//====================================================
// Download Pdf
//=================================================
public function downloadPdf(Request $request)
{
$query = Order::with(['markList', 'invoice', 'shipments']);
// Apply filters
if ($request->has('search') && $request->search) {
$search = $request->search;
$query->where(function($q) use ($search) {
$q->where('order_id', 'like', "%{$search}%")
->orWhereHas('markList', function($q) use ($search) {
$q->where('company_name', 'like', "%{$search}%");
})
->orWhereHas('invoice', function($q) use ($search) {
$q->where('invoice_number', 'like', "%{$search}%");
});
});
}
if ($request->has('status') && $request->status) {
$query->whereHas('invoice', function($q) use ($request) {
$q->where('status', $request->status);
});
}
if ($request->has('shipment') && $request->shipment) {
$query->whereHas('shipments', function($q) use ($request) {
$q->where('status', $request->shipment);
});
}
$orders = $query->get();
$pdf = PDF::loadView('admin.orders.pdf', compact('orders'));
return $pdf->download('orders-report-' . date('Y-m-d') . '.pdf');
}
// inside AdminOrderController
public function downloadExcel(Request $request)
{
return Excel::download(new OrdersExport($request), 'orders-report-' . date('Y-m-d') . '.xlsx');
}
private function buildOrdersQueryFromRequest(Request $request)
{
$query = Order::with(['markList', 'invoice', 'shipments']);
//====================================================
// add Temp Item
//=================================================
// Search across order_id, markList.company_name, markList.customer_id, invoice.invoice_number
if ($request->filled('search')) {
$search = $request->search;
$query->where(function($q) use ($search) {
$q->where('order_id', 'like', "%{$search}%")
->orWhereHas('markList', function($q2) use ($search) {
$q2->where('company_name', 'like', "%{$search}%")
->orWhere('customer_id', 'like', "%{$search}%");
})
->orWhereHas('invoice', function($q3) use ($search) {
$q3->where('invoice_number', 'like', "%{$search}%");
});
});
}
public function addTempItem(Request $request)
// Invoice status filter
if ($request->filled('status')) {
$query->whereHas('invoice', function($q) use ($request) {
$q->where('status', $request->status);
});
}
// Shipment status filter
if ($request->filled('shipment')) {
$query->whereHas('shipments', function($q) use ($request) {
$q->where('status', $request->shipment);
});
}
// optional ordering
$query->latest('id');
return $query;
}
public function downloadPdf(Request $request)
{
// Build same filtered query used for table
$query = $this->buildOrdersQueryFromRequest($request);
$orders = $query->get();
// optional: pass filters to view for header
$filters = [
'search' => $request->search ?? null,
'status' => $request->status ?? null,
'shipment' => $request->shipment ?? null,
];
$pdf = PDF::loadView('admin.orders.pdf', compact('orders', 'filters'))
->setPaper('a4', 'landscape'); // adjust if needed
$fileName = 'orders-report'
. ($filters['status'] ? "-{$filters['status']}" : '')
. '-' . date('Y-m-d') . '.pdf';
return $pdf->download($fileName);
}
public function downloadExcel(Request $request)
{
// pass request to OrdersExport which will build Filtered query internally
return Excel::download(new OrdersExport($request), 'orders-report-' . date('Y-m-d') . '.xlsx');
}
public function addTempItem(Request $request)
{
// Validate item fields
$item = $request->validate([
@@ -484,11 +500,15 @@ class AdminOrderController extends Controller
session()->push('temp_order_items', $item);
return redirect()->to(route('admin.orders.index') . '#createOrderForm')
->with('success', 'Item added.');
->with('success', 'Item added.');
}
public function finishOrder(Request $request)
// -------------------------------------------------------------------------
// STEP 3 : FINISH ORDER
// -------------------------------------------------------------------------
public function finishOrder(Request $request)
{
$request->validate([
'mark_no' => 'required',
@@ -644,5 +664,29 @@ class AdminOrderController extends Controller
return redirect()->route('admin.orders.index')
->with('success', 'Order + Invoice created successfully.');
}
// ---------------------------
// ORDER CRUD: update / destroy
// ---------------------------
public function updateItem(Request $request, $id)
{
$item = OrderItem::findOrFail($id);
}
$item->update([
'description' => $request->description,
'ctn' => $request->ctn,
'qty' => $request->qty,
'ttl_qty' => $request->ttl_qty,
'unit' => $request->unit,
'price' => $request->price,
'ttl_amount' => $request->ttl_amount,
'cbm' => $request->cbm,
'ttl_cbm' => $request->ttl_cbm,
'kg' => $request->kg,
'ttl_kg' => $request->ttl_kg,
'shop_no' => $request->shop_no,
]);
return back()->with('success', 'Item updated successfully!');
}
}