Jonah 2177922678 Reorganize root: move docs, remove tracked credentials and data files
- Move USER_GUIDE, planning docs, and session logs to docs/
- Untrack FedexAPI.txt (contains live API credentials) and OnPart_inv.csv (large data file)
- Update .gitignore to cover FedexAPI.txt and *_inv.csv going forward
- Delete junk files: =1.23.0, Address.txt, stale screenshot

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-06 00:31:08 -05:00
2026-07-06 00:24:30 -05:00
2026-07-06 00:24:30 -05:00
2026-07-06 00:24:30 -05:00
2026-07-06 00:24:30 -05:00
2026-07-06 00:24:30 -05:00
2026-07-06 00:24:30 -05:00
2026-07-06 00:24:30 -05:00
2026-07-06 00:24:30 -05:00
2026-07-06 00:24:30 -05:00
2026-07-06 00:24:30 -05:00
2026-07-06 00:24:30 -05:00
2026-07-06 00:24:30 -05:00
2026-07-06 00:24:30 -05:00
2026-07-06 00:24:30 -05:00
2026-07-06 00:24:30 -05:00
2026-07-06 00:24:30 -05:00
2026-07-06 00:24:30 -05:00
2026-07-06 00:24:30 -05:00

CSG Picker-Shipper Helper (Parts & Invoice Lookup)

A standalone Windows desktop application designed for warehouse packers and shipping associates. This application provides a fast, simple interface for looking up inventory parts, pulling invoice data from QuickBooks, weighing packages, fetching shipping rates, and verifying picks on the warehouse floor using mobile barcode scanners.

The application is built in Python using CustomTkinter for a modern, touch-friendly UI and is compiled to a single standalone executable via PyInstaller.


🚀 Key Features & Implementation Status

1. Parts Inventory Lookup (Packer Workflow)

  • Status: Fully Implemented
  • Description: Allows packers to fuzzy-search for parts by SKU, Description, or Interchange numbers. Data is synced periodically from a network CSV into a local SQLite database for instant search performance.
  • Details:
    • Displays Part Image (prioritizes local SMB shares over public URLs).
    • Shows Customer Price, Location, Quantity Available, Grade, and Warranty Info.
    • One-click copying of full SKUs.

2. Invoice & Shipping Lookup (QuickBooks Integration)

  • Status: Fully Implemented
  • Description: Integrates with QuickBooks Desktop (via QBFC and qb_efficiency bridge) to pull recent invoices and customer data.
  • Details:
    • Allows searching by Customer Name or Invoice Number.
    • Extracts exact billing and shipping addresses.
    • Provides a single "Copy full address" button formatted properly for third-party shipping software.

3. Mobile Picking Client (CSG Part Verifier)

  • Status: Fully Implemented
  • Description: A lightweight background Flask web server (picker_server.py) runs on port 5001 alongside the desktop app, serving a mobile-friendly HTML5 application.
  • Details:
    • Mobile operators (using Android/PC) can access the picker client via the host's IP address.
    • Uses device cameras to scan Invoice QR codes to pull up digital pick lists.
    • Verifies picked items by scanning Box/Part QR codes, providing immediate audio success/error feedback.

4. USB Postal Scale Integration

  • Status: Fully Implemented
  • Description: Natively integrates with standard USB HID weighing scales (e.g., Stamps.com, Dymo, Mettler Toledo).
  • Details:
    • Uses the hid package to read real-time weights (oz, lbs, grams) directly from the USB scale without needing third-party drivers.
    • Fails gracefully if no scale is attached.

5. Live Shipping Rates & Label Generation

  • Status: Fully Implemented
  • Description: Connects to the ShipEngine API and FedEx APIs to retrieve live shipping rates based on the package weight and dimensions.
  • Details:
    • Fetches dimensional weight quotes.
    • Can generate standard shipping labels or custom internal GDI-rendered labels (via labels.py).
    • GDI labels include generated QR codes (Invoice Number for shipping, SKU for parts) to facilitate the mobile picking workflow.
    • Keeps a local SQLite history of printed labels (label_history.py).

6. Design & Cut File Discovery

  • Status: Fully Implemented
  • Description: Facilitates rapid opening of CNC/Laser design files associated with specific SKUs.
  • Details:
    • cut_files.py scans configured SMB network folders on a background thread for matching Roland cut files (.eps, .ai, .svg, .dxf, etc.) and LightBurn files (.lbrn, .lbrn2).
    • One-click launching of the correct design file directly in the system's default design software.

🛠 Architecture & Tech Stack

  • UI Framework: CustomTkinter (Python)
  • Database / Cache: SQLite (Built-in, ensures instant search speed by preventing direct QB calls during lookup)
  • Search Engine: rapidfuzz for highly tolerant string matching.
  • API Servers: Flask handles the mobile picking server.
  • QuickBooks Bridge: pywin32 / QBFC integration (via local qb_efficiency service).
  • Build & Deployment: PyInstaller (Generates PartsLookup_Setup.exe via Inno Setup).
  • Barcode Scanning: html5-qrcode library for the mobile web client.

📦 Building & Running

Development Server:

run_dev.bat

Starts the application from source in development mode.

Standalone Picker Server:

python run_picker.py

Starts just the Flask mobile picking server on port 5001 for testing.

Building the Executable:

build.bat

Generates a standalone PartsLookup.exe using PyInstaller.

Building the Installer:

build_installer.bat

Requires Inno Setup. Compiles the .iss file to generate CSGPackerShipperHelper_Setup.exe for end-user distribution.

S
Description
A tool for part lookup as well as printing, shipping, and other features on a growing list
Readme 28 MiB
Languages
Tcl 65.6%
Python 18%
OMNeT++ MSG 10.5%
HTML 3.3%
JavaScript 1.9%
Other 0.7%