# User Guide

## Unified customer accounts

All approved active customers use ON ACCOUNT as their customer classification. At checkout the salesman chooses ON ACCOUNT or CASH for that invoice only; this never changes the customer or earlier invoices. Existing customers remain usable while missing paperwork is completed from **Update Customer Information**. Missing cheque data is shown as Not Provided and NULL credit limits remain Not Set. Only administrators control lifecycle status and approved limits/terms. New approved applications finish as ON ACCOUNT.

## Safe checkout refresh

When **Save Draft** is selected, the app first checks the customer, current price, source, and available quantity. If an item changed or is unavailable, the draft is not created and the affected SKU is shown. Refresh or remove that item, then retry. Quantities are never changed automatically.

## Stock Replenishment

During preparation, select the reason that matches any short line: Insufficient Stock, Item Unavailable, Item Not Found, or Other. For Other, record the explanation in Variance Notes. Reopening the request shows the saved reason and notes.

When a request is Ready to Ship, the request page shows a dedicated **Dispatch & Delivery Note** section. Delivery Note Number, Driver, Vehicle, Dispatch Notes, and the protected Shipping Receipt / Photo are optional. After dispatch, the structured values and the immutable timeline note remain visible in request details and receiving records.

The salesman creates and submits a Stock Request. Admin approves quantities. Operations records physical preparation, then Admin performs a second release review. Dispatch never updates the VAN. The owning salesman confirms Received and Accepted separately; only Accepted units become sellable VAN stock, while shortages, damage, excess, wrong items and not-received lines remain visible.

Operations may attach a private prepared-shipment photo and shipping receipt. During receipt, the salesman may verify by camera scan or manual barcode/SKU and attach discrepancy evidence. Failed evidence uploads can be retried without repeating stock receipt. Request, Warehouse Preparation, and Receiving PDFs are authenticated; the latter two preserve operational snapshots and audit metadata.

### Temporary QA data

The QA owner and administrators can open `/qa-dataset` to display scanner labels. Create or restore the dataset with `php artisan qa:dataset ensure --user=2`. Preview reset with `php artisan qa:dataset reset --user=2 --dry-run`; run reset without `--dry-run` only between test cycles. Before final cleanup run `php artisan qa:dataset cleanup --user=2 --dry-run`, inspect that `normal_records_affected` is zero, then explicitly run `php artisan qa:dataset cleanup --user=2 --confirm=QA-CLEANUP`. Cleanup archives referenced requests, zeros QA VAN stock through audited movements, hides QA products/customers, and never deletes normal records.

## Customer approval and invoicing

Save the structured application, upload the trade license plus conditional VAT certificate/security cheque, then submit. Admin may approve, request changes, or reject with a reason. Approval creates the permanent reference once and activates Cash or On Account. Cash discount applies only to regular-priced lines; Clearance is excluded. VAT is extracted from VAT-inclusive totals, not added twice.

For an On Account request, enter the Security Cheque bank, number, account holder, amount and dated/undated status. A dated cheque requires its date; an undated cheque does not. Upload the cheque image privately and add optional notes. Admin review displays these details and opens the image through the authenticated document route only.

Administrators use Customer Applications to filter Draft, Submitted, Under Review, Needs Changes, Approved and Rejected records. Open a submitted application, Start Review, inspect all protected documents, then explicitly approve as Cash or On Account (including final limits and payment terms), request changes with a reason, or reject with a reason.

Administrator

- Import Products
- Upload Images
- Generate Catalogs
- Manage Salesmen
- Manage Vans
- Manage Boxes

Salesman

- Login
- Browse Catalog
- View Van Boxes
- Scan Products
- Inventory Check
- Customer Orders

## SNYT Enterprise UI v1

The administration workspace now uses the shared SNYT dark enterprise foundation: near-black/navy backgrounds, elevated dark panels, cyan primary actions, green success, amber pending/accounting, red danger/RMA, purple Credit Note, muted slate text, subtle borders, and compact responsive spacing.

The global sidebar, topbar, Dashboard, alerts, buttons, fields, status badges, and table foundation are included in this phase. Desktop keeps a persistent sidebar and practical tables; tablet uses the collapsible sidebar; mobile uses the drawer and horizontally scrollable tables where necessary. Individual business modules are intentionally not redesigned yet, and printable documents remain light.

## SNYT Enterprise UI v1 — Full Laravel Visual Consistency Pass

The full authenticated web workspace now follows the same dark enterprise identity as SNYT Van. Lists, detail pages, forms, import states, Customers, Products, Orders, Returns/RMA, warehouse handovers, fleet and stock tools use consistent surfaces, readable secondary text, dark inputs, semantic statuses, compact actions, and contained responsive tables.

- Desktop keeps the persistent navigation sidebar.
- Tablet and mobile use the navigation drawer.
- Wide business tables scroll inside their own panel on small screens; the complete page does not scroll horizontally.
- Cyan identifies primary actions, green success, amber pending/accounting, red rejected/RMA/danger, and purple Credit Note states.
- Official PDFs and public catalog documents retain their required light presentation.
Administrators can open Stock Requests directly from the dashboard or the Warehouse Operations sidebar group. The sidebar also provides filtered entry points for Warehouse Preparation, Awaiting Release and Receiving Issues, together with the isolated QA Dataset page.

## Laravel module navigation

- **Sales Team** includes Customer Orders, Returns, Customer Applications, Customers, and team/van tools. Returns remains active on return details.
- **Warehouse Operations** includes Stock Requests and RMA Handovers. The Returns landing page remains the web entry point for customer returns and the non-sellable RMA workflow; the dedicated RMA stock balance remains a mobile API view rather than a duplicate Laravel page.
- **Settings** includes the admin-only Developer Docs link. Import, catalog, product, shipment, fleet, and configuration pages remain hidden from salesmen and protected by server middleware.
- Salesmen receive own-data links for Orders, Customers, Returns, RMA Handovers, Van Stock, Van Boxes, Catalogs, and Inventory Check.
- Supervisors receive the operations-authorized Returns, RMA Handover, and Stock Replenishment links without seeing administrator-only Import Center, Developer Docs, or system settings.
- Customer details link directly to filtered Orders and Returns; Return, RMA Handover, and Stock Request details link back to their list pages.
# Importing operational files

Open **Import Center** from the admin sidebar. Upload the file, confirm Main Price List, Clearance Price List, Price Update, Shipment, or Salesman Van Stock, then review the analysis before importing. Resolve highlighted duplicates explicitly, correct a row in place, or skip it. Main/Clearance replace the full active list; Price Update changes only the included products. Do not use historical Price Lists, Shipments, Catalog Center, or Van Stock pages to upload—those upload actions now lead to Import Center.

Large Excel files are stored first. After choosing the purpose, the page shows **Analyzing…** while the server works in the background. It is safe to leave, reload, or reopen the session from Import History. A failed analysis shows its reason and a retry link instead of losing the upload.
## Receiving a warehouse Stock Transfer Receipt

Open **Stock Receipts**, choose **New Receipt**, and upload the official PDF. Review the parsed STR number, date, warehouse, department, products, and totals. A suggested Stock Request is never linked automatically; choose **Link Request** only after comparing it.

Choose **Start Counting**. Scan a barcode or enter the exact SKU, set the physical quantity, and press **Add**. The same screen clears and becomes ready for the next product; scanning the same product later continues its existing total. Counting is saved in Laravel and can be resumed from the receipt list.

Choose **Finish Counting** to review Matched, Short, Excess, Damaged, and Unresolved lines. This action does not add stock. Adjust damaged and accepted quantities where needed, then choose **Confirm Receipt**. Only Accepted Qty enters sellable My Van stock, once. The original PDF remains available only through authorized access.
# Today, Route and Daily Work Report

Open **Today, Route & DWR** from the Dashboard or More. Start the working day once, add planned customers or an unplanned visit, then use **Start Visit**. The active-visit hub keeps New Order, Collection, Return, Update Customer and End Visit together. A break must be ended before a visit; **End Break & Start Visit** is handled as one safe action when chosen. Closing and reopening the app reloads the current day, break, route and active visit from Laravel.

Visit Collection is a temporary operational DWR record and does not change the customer ledger, invoice balance or available credit. At day end, open the exact WhatsApp-friendly DWR preview, edit only Communication Result, Market Feedback and Your Suggestion, then use Copy Report or the native Share sheet. System times, sales, collections and visits cannot be manually overwritten.
