Add bulk CSV product import for POS (retail + restaurant)
Deploy Ladill POS / deploy (push) Successful in 1m39s

Customers with large catalogs can upload a CSV instead of adding products one by
one. Mode-aware: restaurant imports into the local catalog (chunked INSERT,
categories resolved/created by name); retail batches to the CRM products/bulk
endpoint. Streamed parsing + batched writes handle thousands of rows in one
request. Includes a downloadable template, an Import button on both product
pages, and a skipped-rows report.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
isaacclad
2026-06-26 09:20:40 +00:00
co-authored by Claude Opus 4.8
parent 62e396195b
commit 9fcea24680
10 changed files with 543 additions and 3 deletions
+3
View File
@@ -86,6 +86,9 @@ Route::middleware(['auth', 'platform.session'])->group(function () {
Route::delete('/menu/modifiers/{modifier}', [MenuController::class, 'destroyModifier'])->name('pos.menu.modifiers.destroy');
Route::get('/products', [ProductController::class, 'index'])->name('pos.products.index');
Route::get('/products/import', [ProductController::class, 'importForm'])->name('pos.products.import.form');
Route::post('/products/import', [ProductController::class, 'import'])->name('pos.products.import');
Route::get('/products/import/template', [ProductController::class, 'importTemplate'])->name('pos.products.import.template');
Route::get('/products/create', [ProductController::class, 'create'])->name('pos.products.create');
Route::post('/products', [ProductController::class, 'store'])->name('pos.products.store');
Route::get('/products/{product}/edit', [ProductController::class, 'edit'])->name('pos.products.edit');