Set these once — they apply whichever way you build the order below.
Paste the rate list order the way you'd write it down — one product and quantity per line, blank lines between groups, an optional group label like "Serums" or "Creams". Place Order matches every line to a product; you review and fix anything before it's saved.
Pick the items you need and say roughly what you want to spend. Quantities are allocated in full boxes and stay editable before anything is saved.
abs($totals['variance_pct']) <= 2, 'text-amber-600 dark:text-amber-400' => abs($totals['variance_pct']) > 2, ])> {{ $totals['variance'] >= 0 ? '+' : '−' }}₹{{ number_format(abs($totals['variance']), 2) }} ({{ number_format(abs($totals['variance_pct']), 2) }}%) against target
@endif| Typed as | Group | Matched product | Box | GST | Rate | Quantity | Scheme | Value | |
|---|---|---|---|---|---|---|---|---|---|
| {{ $line['raw_text'] }} | {{ $line['section_label'] ?? '—' }} |
@foreach (array_slice($line['candidates'], 1) as $c)
@endforeach
@endif
|
{{ $p['box_quantity'] ?? '—' }} | {{ $p ? rtrim(rtrim(number_format($p['gst_rate'], 2), '0'), '.').'%' : '—' }} | {{ $p ? number_format($p['rate'], 2) : '—' }} |
|
@php $scheme = $schemes[$i] ?? null; @endphp
@if ($scheme && $scheme['free'] > 0)
+{{ $scheme['free'] }} free
@endif
@if ($scheme && $scheme['next'])
{{ $scheme['next'] }}
@endif
|
{{ $p ? number_format($p['inclusive_total'], 2) : '—' }} | |
| No lines match "{{ $reviewSearch }}". | |||||||||