Bulk Upload Generator – Documentation

This webapp generates a fresh Bulk_UPLOAD.xlsx from one primary expenditure template and multiple ledger/source Excel files. Each run is isolated and produces its own downloadable outputs.

How To Use

  1. Primary Template (required)
    Upload the latest template file (for example expenditure-template.xlsx). This is used only for its format – the app does not read cost centre, GST, dates, or net-payable data from it.
  2. Source Files (required)
    Upload one or more ledger/source Excel files (.xlsx) that should be merged into the bulk upload.
  3. Legacy Template (optional)
    Optionally upload an old layout file (e.g. Bulk_upload_old.xlsx) if you need backwards compatibility.
  4. project_db.txt / expense_head.txt (optional)
    - project_db.txt: project / abbreviation cache. When present, mappings are preserved and refreshed from the template.
    - expense_head.txt: optional fallback cache, also auto-refreshable from the template.
  5. Generate
    Click Generate Bulk Upload and wait for processing to finish. You will be redirected to a results page.
  6. Download Outputs
    From the result screen, download:
    • Bulk_UPLOAD.xlsx – main upload file
    • project_db.txt (if generated)
    • expense_head.txt (if generated)
    • error_log.txt (if errors occurred)
    • run.log – raw log from the backend script

Template Behaviour & Safety

  • Each run writes into a dedicated run folder; old runs are not overwritten.
  • The primary template is used strictly as a layout – its data rows are cleared before use.
  • The generator does not try to read cost centre, GST, date strings, or net payable cells from the primary template.
  • Bulk_UPLOAD.xlsx is regenerated fresh for every run so you always download a clean output.

GitHub & Deployment

Source code: github.com/Chaitanya-cpc/expenditure-template
Hosted as a Flask app behind Nginx, following the same layout and navigation as the CPCL requisition webapp.