Two panels. Settings you set on the left, in the order you decide them. Rules the planner always applies on the right, read only. A setting sitting away from its default carries a dot. Change anything, then press Generate plan.
2 · Load the weekly master order export (ref: Master_Order_Export)
reads .xlsx / .xlsm / .csv in your browser · nothing is uploaded anywhereETD is fixed to vendor_pickup_date. The parser searches the sheet for that column by name, so it does not matter which position it sits in or how far down the header row moves. Ex-factory, the four-week horizon and every inspection window are derived from it. If the column is renamed or removed the file is rejected with a message rather than a wrong plan.
Settings store
hidden — every one of these is edited in the Planning rules box at the top3 · The plan
Final confirmation
History & performance
saved weeks only — no files needed to read thisGuidebook
Production Merchandiser (PM) Visit PlannerDemo version
Production Merchandiser (PM)
Visit Planner
Guidebook
Every step, every button, and every number on the board.
Ten steps from two Excel files to a finalised week.
Contents
- What you need before you start
- The ten steps
- Open the planner
- Set the plan week and check the rules
- Load the PM allocation
- Load the master order export
- Generate the plan
- Read the board
- Check the weekly plan
- Adjust it by hand
- Finalise and send it out
- History, and editing a week you already saved
- Every card on the board
- The tabs under the board
- Your two Excel files
- If something goes wrong
Save as PDF opens the print dialog already set to A4 portrait. Choose Save as PDF as the destination, and under More settings untick Headers and footers so the file path does not print at the bottom.
What you need before you start
1 · The PM allocation file
One row per factory, saying who covers it. Columns: Team, Production Merchandiser (PM), Email, Supplier Name, Factory Name, Factory Zone. Zone holds the upazila, one word.
This is the source of truth for who visits what. A factory missing from it is counted but never planned.
2 · The master order export
The weekly DD export, DD_BD_by model. The planner reads 14 columns out of it and finds them by name, so the layout can move. ETD is always vendor_pickup_date.
Roughly 113,000 rows and 31 MB. It reads in about half a minute.
Nothing leaves your computer. Both files are read inside the browser. The page makes no network request of any kind, so it works with the internet disconnected.
The ten steps
Open the planner
Double-click the HTML file. Nothing to install. The top bar carries the four screens: Import files, Plan, History and this Guidebook. Plan stays locked until both files are in.
Set the plan week and check the rules
Open Planning rules. The left panel holds the 23 settings you decide. The right panel holds the 11 rules the planner always applies, read only.
The only thing you normally change is A1, the plan week. Set it to the Saturday the visits start. Everything else follows: the ETD range opens seven days later and runs four weeks, because a factory ex-factories one week before ETD.
A setting sitting away from its default carries an amber dot, and the header counts them. Press Save these rules to lock them so nothing drifts between weeks.
Load the PM allocation
Press Load PM Allocation Excel File and choose your allocation workbook. The bar then reports what it read: factories, production merchandisers, teams and zones.
Review / edit allocation opens the full table. Fix a row, add a factory, remove one, or tick who is on leave which day. Download .xlsx saves the corrected sheet back over your file.
Load the master order export
Drop the DD export on the box, or click to choose it. It is read in the background so the window stays alive, and it tells you where it is: unzipping the workbook, looking for the header row, then reading the order rows.
When it finishes it names the sheet and the row count, and the column map confirms every column it needed was found.
Check this line. If it says fewer than 14 of 14, open it and see what is missing. A renamed column in the export is the usual cause.
Generate the plan
Press Generate plan. The allocation check opens first. This is the last look before the week is built: who covers what, and who is away. Fix anything wrong here, then press Allocation is correct, generate the plan.
The plan itself builds in about a second.
Read the board
One sentence at the top tells you whether the week is workable. Then four bands: the verdict, the demand behind it, what needs a decision, and which fill rules were needed.
Tiles in Needs a decision are buttons. Click one and the tab holding those rows opens.
Check the weekly plan
One row per production merchandiser, one column per visit day. Every PM on the allocation keeps a row even when the week gave him nothing, so an empty row is a signal rather than a missing name.
Each card carries the factory, then Upazila: Department, then one line per ETD band, then the total and a few sample PO numbers. The card describes the whole factory over the ETD range, not only what is due on that one day.
Adjust it by hand
Open Weekly plan (Customized). This is a copy. The auto plan is never changed, so you can always compare.
- Move a visit. Drag it, or click the card then click where it goes.
- Remove one. The × on the card.
- Add one. + Add visit on any day, then pick the factory.
- Force a move the rules refuse. Hold Shift while you drop. It is marked as an override so everyone can see it was deliberate.
- Undo steps back through the last forty changes.
Add visit shows what is actually running at each factory, so you are not picking blind.
Finalise and send it out
The bar at the foot of the plan carries everything that leaves the planner. Choose the auto plan or the customized one first, then:
- Preview what each PM receives shows the message before anyone gets it.
- Save this week to history files it permanently as version 1.
- Add to Office 365 calendar downloads one .ics holding every visit. Open it and Outlook creates the events. A visit books the working day; two factories on one day split it evenly.
- Confirm and create the Outlook drafts writes one draft per PM into your Downloads folder. Open each and press Send.
- Export plan CSV gives one row per order line at each factory visited.
History, and editing a week you already saved
The History screen keeps every finalised week for good, and the planner reads it to rotate factory visit days. Choose Saved weeks to see the table.
Each week carries its versions as chips. The newest is outlined green and is the one the plan and the rotation use. Each chip has its own ×, so you can delete one version without touching the others. Deleting the last version removes the week.
Clicking a version loads it into the customized grid. Add, remove and move as usual. Saving writes a new version and leaves the one you opened exactly as it was.
A version only opens when the plan on screen is that same week. The editor needs live order numbers for the picker and the rule checks. Set the plan week to that date, generate, then open the version.
Every card on the board
Verdict · the three that decide the week
- Coverage, first ETD week
- Of the work that is genuinely yours this week, how much a PM will actually see. Counted as order lines whose ETD falls in the first week of the range, and only at factories that have a PM on the allocation. Week one because the factory ex-factories seven days before ETD, so those goods are finishing now. The movement reads 4 pts (+) against the last saved week, or 4 pts (−) in red. Green from 70%, amber 40 to 69, red below 40.
- PM-days booked
- How much of the team's week is used. Six PMs times five visit days is 30 days available. The sub-line gives the visit count, so more visits than days means some day carries two factories. A number below capacity means a PM has an empty day, which is a sign his allocation had nothing due.
- Demand with no PM
- The share of all pieces in the ETD range sitting at factories nobody on the allocation covers. Read it as an allocation question, not a performance one. Either the export reaches beyond Dhaka office scope and needs a filter, or the factory names are not matching the allocation sheet.
Demand in scope · where the numbers came from
Every count here is order lines, one row of the export. A PO split across three models counts three times, because that is how the work arrives at the factory.
- Order lines in range
- Every live order line with an ETD anywhere in the range, at every factory, allocated or not. The whole pool the planner looked at.
- Due first ETD week
- The slice with an ETD in the first seven days of the range. This is the work this visit week exists for. The other three weeks only decide which factory is more urgent.
- At an allocated factory
- Of those, the ones at a factory that has a PM. Labelled the coverage base because it is the denominator of the coverage tile. The gap between this and the line above is work nobody was assigned.
- Past ETD, dropped
- Order lines whose ETD fell in the seven days before the plan week started, and the tile prints those dates. Those goods have left the factory, so there is nothing to inspect. Anything older is not counted at all: the export carries a tail going back years that says nothing about this week. The window follows the plan week on its own and never needs setting.
- Excluded by status
- Rows whose status sits outside your filter of New and Ordered. Delivered, In transport, In port, Planned to DC, Booked and Cancelled all land here. Counted across the whole file, not just the range, which is why it is large.
- Factories skipped
- Factories on the allocation with no orders at all inside the range, so nobody is sent. The same names appearing week after week means that allocation needs rebalancing.
Needs a decision · click a tile to open its tab
This band only appears when something in it is not zero. On a clean week it disappears.
- Factories with orders, no PM
- Factories with work in this range and no line on the allocation sheet. Opens the Factories with no PM tab, biggest first. The same fact as the Demand with no PM tile, as a count instead of a share.
- Demands that would not fit
- Visits that passed every rule but had no free PM-day left to sit on. Opens Could not be scheduled, which names each one and the reason. A high number with every day booked means the week is simply full.
- PMs with no visit
- Production merchandisers the week gave nothing. Opens the load tab. Appears only when it happens.
- Lines in range, factory not on the allocation
- Order lines, not factories, counted inside the ETD range so it lines up with the rest of the board. The figure under it counts the same thing across every ETD, past and future, so use the first number when you compare and the second only to see the full backlog.
How the days were filled
Work is placed one factory a day under the strict rules first. Only when a day would otherwise stay empty does the planner reach for these, in order. A green chip means the rule was needed. Show detail opens the counts. Many zeros is a good sign.
- Spare days put to work
- A PM had no priority factory left, so he was given the biggest job nobody had reached. His own team and a zone he is already working are preferred.
- Overflow visits used
- A PM took work from another team because his own factories had nothing due. Controlled by the overflow rule and its tick box.
- Visits covering leave
- Somebody was away and another PM picked up his factory, his own team offered first.
- Return visits, last resort
- Back to a factory already seen this week, on different styles and POs, never on days that touch, and only where the supplier still had a day left.
- Second factory, light day
- Two small factories on one day. The same zone is preferred so nobody crosses the city twice.
- No blank day, rules relaxed
- The last rung. It runs only when every other route failed and a day would still be blank.
The tabs under the board
- Weekly plan (Auto)
- The planner's own answer. Never changed by hand, so it is always there to compare against.
- Weekly plan (Customized)
- Your working copy. Add, remove, move, override, undo. The count on the tab is how many changes you have made.
- Production Merchandiser load
- How the week landed on each person: visits, pieces, days used, days empty.
- Factories with no PM
- Factories with orders in the range and nobody assigned, biggest first. This is the list to work through with the allocation sheet.
- Could not be scheduled
- Visits that qualified but had no day left, with the reason on each.
- Allocation
- The allocation as the planner read it, so you can check a factory without opening Excel.
- History & performance
- Saved weeks, versions, and the done and missed record per PM and per factory.
Your two Excel files
PM allocation
| Column | Holds | Matters because |
|---|---|---|
| Team | Denim, Shirt/Light Woven, Sweater, Knit | The team belongs to the PM, not the factory. Anything else, blank included, becomes Knit. |
| Production Merchandiser (PM) | The person's name | One row per factory he covers. |
| Office email | Used on the Outlook drafts and the calendar invitations. | |
| Supplier Name | The supplier the factory belongs to | Drives the cap of two visit days a week per supplier across all its factories. |
| Factory Name | As it appears in the export | This is what the order rows are matched on. A mismatch here is why a factory ends up with no PM. |
| Factory Zone | The upazila, one word | Keeps a doubled day inside one area. |
Master order export
Found by name anywhere in the sheet, so a reordered export still works. Two are required, the rest sharpen the plan.
| Field | Looked for as | |
|---|---|---|
| ETD | vendor_pickup_date | required |
| PO number | order_id | required |
| Factory | factory | required |
| Supplier | supplier | |
| Agent / office | agent_id | decides Dhaka office against agent |
| Quantity | exact_qty | not total_of_elements |
| Status | status | and order_status |
| Model / style | style_id | drives the minimum styles rule |
| Brand, department, class, subclass, origin | brand, dept, class, subclass, origin | Bangladesh origin only |
If something goes wrong
- No vendor pickup date column found
- The planner searched every sheet and the first 30 rows and could not find it. Check the export still carries that column. Without ETD nothing can be calculated.
- Columns missing from the export
- The header row was found but a required column is not there. The message names it. Usually a renamed column.
- Fewer than 14 of 14 columns matched
- The plan still builds, but a missing column weakens it. Open the column map and see which one.
- The plan is not ready yet
- One of the two files is not loaded. The message says which.
- A factory you expected is on Factories with no PM
- Its name in the export does not match the allocation sheet. Copy the name from the export into the allocation and reload.
- A version will not open for editing
- The plan on screen is a different week. Set the plan week to that date, generate, then open the version.
- The rules are locked
- They were saved on purpose so they cannot drift. Press Edit the rules to unlock them.
Everything runs on this computer. Nothing is uploaded.
What each production merchandiser will receive
Add a visit
What the Excel files must look like
1 · Allocation file PM Allocation 2025.xlsx
One row per factory. Six columns, exactly these headings.
| Team | Production Merchandiser (PM) | Supplier Name | Factory Name | Factory Zone | |
|---|---|---|---|---|---|
| Denim | PM Denim One | pm.denim1@example.com | Alpha Denim Ltd (Demo) | Alpha Denim Unit 1 (Demo) | Ashulia |
| Denim | PM Denim One | pm.denim1@example.com | Alpha Denim Ltd (Demo) | Alpha Denim Unit 2 (Demo) | Savar |
| Denim | PM Denim One | pm.denim1@example.com | Bluewave Jeans Ltd (Demo) | Bluewave Jeans Ltd (Demo) | Gazipur Sadar |
| Denim | PM Denim One | pm.denim1@example.com | Riverside Denim Mills (Demo) | Riverside Denim Mills (Demo) | Gazipur Sadar |
| Column | Required | What it must contain |
|---|---|---|
| Team | optional | Denim, Shirt/Light Woven, Sweater or Knit. Anything else, blank included, is read as Knit. |
| Production Merchandiser (PM) | required | The person's name. Repeat it on every one of his rows. This is the key that groups the factories. |
| optional | Office email. Shown on the roster and saved back unchanged. | |
| Supplier Name | optional | The supplier or buying house the factory ships under. Read from the file and written back, but never used to match orders. Matching is on Factory Name only. |
| Factory Name | required | Must match the factory in the order export. Case, punctuation, Ltd/Limited, (Pvt) and the [BD] suffix are all ignored when matching. |
| Factory Zone | optional | Ashulia, Tongi, Konabari, Savar or any zone you use. Without it a factory can never be paired into a two-factory day. |
Several sheets are fine. The planner lists every sheet it can read and lets you pick. Save as… writes the file back in exactly this shape.
2 · Master order export Master_Order_Export.xlsx
Straight from head office, unedited. The planner finds each column by name, wherever it sits, and the header row can be anywhere in the first 30 rows of any sheet.
| Column | Required | Used for |
|---|---|---|
| vendor_pickup_date | required | ETD. Everything is planned backwards from it. |
| order_id | required | The PO number. |
| factory | required | Matched against Factory Name in the allocation. |
| supplier | optional | Fallback when the factory name does not match. |
| agent_id | optional | Dhaka Office or an agent. Drives the scope setting. |
| exact_qty | optional | Pieces, for the quantity weighting. |
| status | optional | Live orders only. Delivered, cancelled and in-transport drop out. |
| style_id | optional | Style, so the same style is not inspected twice in a week. |
| class, subclass, dept | optional | Used to guess a factory's team on the Factories with no PM tab. |
| origin_country | optional | Bangladesh rows only. |
If a required column is missing the file is rejected with a message naming it, rather than a plan built on the wrong dates.
Confirm the PM allocation
| Team | Production Merchandiser (PM) | Supplier Name | Factory Name | Zone | POs in range |
|---|