Changelog


Mar 24 2026
- Fix: HEIC image upload failing with "ERR_LIBHEIF format not supported" for certain HEIC encoding variants. Refactored HEIC conversion into a new convertOneHeicFile() method that first tries heic2any, then falls back to browser-native createImageBitmap/canvas conversion (works in Safari), and finally shows a clear actionable error message if both methods fail. (uploadimagepop.js)


Mar 23 2026
- Fix to OrderMail page not sending email through queue, and causing long wait times for page to finish loading.
- Fix to CRM send mail showing syntax error message instead of server error message when email fails to send due to invalid recipient address.
- Fix to Department Containers Pop-up not showing buttons for users without Department Locations setup. 
- Added company Tags filter to CRM Company List, allowing users to filter companies by their assigned tags.
- Added Tags filter to Contact List page and Company List page.


Mar 20 2026
- Bug fix: Warehouse Heat Map search ignores special characters (apostrophes, hyphens, etc.) so names like "O'Keefe" now match when typing "okeefe". Added normalizeSearchText() helper to view that strips non-alphanumeric characters before comparing; applied to all three search sites (applySearch list mode, applySearch card mode, applyEditVolumesSearch). (warehouseheatmap.js)
- Bug fix: Dynamic location type headers (list and card mode) were showing empty content counts due to lowercase key mismatch when accumulating from getStorageCountsByType() (which returns PascalCase keys). Fixed accumulator objects to use PascalCase keys (Bag, Package, Item, Bin, Location) in getDynamicLocationsListView and getDynamicTypeCardSectionHtml. Also added Contents and Orders summary stats to Standalone location section headers in both list and card mode. (warehouseheatmaptemplate.js)
- Fix to location bulk change type not showing location types in dropdown.
- Fix to pressing "Enter" key on warehouse heat map causing the page to refresh.
- Bug fix: All/Occupied/Empty filter buttons in #warehouseHeatMapFilterButtons not working in card mode. Cards are nested inside areaCardSection wrappers, so applySearch now uses querySelectorAll('.warehouseCard') to reach them at any depth, and hides empty section wrappers accordingly. (warehouseheatmap.js)
- Added Dynamic sections to Warehouse Heat Map list view, showing dynamic locations grouped by type with content counts and capacity bars, similar to the card view. (warehouseheatmaptemplate.js)

Mar 19 2026
- Bug fix: `NumberFormatException` crash in `AjaxWizMove.scan()` when non-numeric text (e.g. "Lee") was submitted as a barcode. Added `NumberFormatException` handling to all `Integer.parseInt` call sites in `scan()` (p/o/l/t/d and tag-scan branches), returning a user-friendly error message instead of a 500 error. (AjaxWizMove.java)

Mar 18 2026
- Warehouse Heat Map: mobile-friendly layout at ≤768px — left menu becomes a horizontally-scrollable top bar, detail panel opens as a fixed full-screen overlay, menu footer (Edit Volumes) hidden on mobile. (warehouseheatmap.css)
- Warehouse Heat Map: added calendar event button to order-grouped storage contents table in location detail panel. Clicking the icon opens a new Move calendar event pre-filled with the order. (warehouseheatmap.js, warehouseheatmaptemplate.js)
- Fix to Warehouse Heat Map Volume settings not appearing for admins.
- Fix to Delete Area Location not checking for children before deleting.
- Removed/Prevented the ability for Dynamic Locations to be associated with Area Locations.
- Mailing List popup: replaced static Notify Pref label with a per-user select box so admins can change a user's notification preference directly from the listPop. Pref is saved alongside the checkbox states via the existing updateMailList call. (maillist.js, maillist.jsp, MailListCtl.java, AjaxUpdate.java)
- Added ability to create calendar event from location detail panel from Warehouse heat map
- Added quick cc order lead and sales rep checkboxes to order mail page

Mar 17 2026
web-mn:
- Bug fix: mergeCustomers — sp_merge_customer now deletes tordercustomer rows referencing f_old where f_final already exists on the same order before attempting the UPDATE IGNORE. Previously those rows were silently skipped by UPDATE IGNORE, leaving f_old still referenced and causing a FK constraint failure when deleting the old customer. Updated UsaSql/sp_merge_customer.sql.
- Warehouse Heat Map / Edit Volumes popup: Added Location Volumes as a third section alongside Container Volumes and Package Types. Locations are filtered to active, non-area, non-vehicle records, sorted alphabetically, with warehouse name shown as a sub-line under each location name.
- Warehouse Heat Map / Edit Volumes popup: Each section is now collapsible via a chevron on the label cell, reusing the existing areaCollapseArrow/areaCollapsible pattern. Sections auto-expand/collapse when a search term matches or clears results.
- Warehouse Heat Map / Edit Volumes popup: Added sticky search bar (wrapped in searchWrapper) pinned above the scrollable content. Filters rows across all three sections by name (and warehouse name for locations) with 200ms debounce and a clear button. Search resets each time the popup is opened.
- Warehouse Heat Map / Edit Volumes popup: After the first successful dimension save the Close button is replaced with a Refresh Page button (calls ir.submit()) so updated volumes are reloaded from the server. Buttons reset if the popup is closed and reopened without refreshing.
- Warehouse Heat Map / Edit Volumes popup: Save success message now includes the record name e.g. "Rack A1" saved. Added saveLocationDimensions() to AjaxCtl (sysAdmin-gated). Updated warehouseheatmap.jsp, warehouseheatmap.js, warehouseheatmap.css, AjaxCtl.java.

Mar 13 2026
web-mn:
- Warehouse Heat Map / Location Detail: Added Tasks tab. Shows when a location has >0 move tasks (FromLocation or ToLocation). Lists tasks in a table matching the warehousetasklist layout (Order, From, →, To, Due Date, Status — no Actions/Group/progress rings). Clicking a row prompts to open the Move Wizard for that task. Tab is hidden for warehouses and locations with no tasks. Falls back to Content tab if last-active tab becomes unavailable. Added getLocationMoveTasksContent() to template, openMoveTaskWizard() to view. Updated warehouseheatmap.jsp, warehouseheatmap.js, warehouseheatmaptemplate.js, warehouseheatmap.css.
- Warehouse Heat Map / List View: Added Tasks and Flags columns to the locations table in getAreaListView and getStandaloneLocationsListView. Tasks shows the count of move tasks referencing the location as FromLocation or ToLocation. Flags shows colour-coded pills (STG, OZ, DYN, CHD) using tromis.colorArray, each with a data-hover tooltip. Added getLocationTaskCount() and getLocationFlagsHtml() helpers. Added .locationFlagPill CSS class. Updated warehouseheatmaptemplate.js and warehouseheatmap.css.
- Warehouse Heat Map / Contents: Area sections are now collapsible in both list and card view. Clicking the area header toggles the section open/closed with a smooth animation. An animated arrow on the right of each header rotates to indicate collapsed state. Added toggleAreaSection() to view. Updated warehouseheatmaptemplate.js, warehouseheatmap.js, warehouseheatmap.css.

Mar 12 2026
web-mn:
- Warehouse Heat Map: Added Move button to location detail panel header. Appears beside the Edit button only when a location is open (hidden for warehouses). Clicking confirms then navigates to wizmove.jsp?startScan=L{locationId}. Added moveDetailSection() to view.
- Location Bulk / Change Capacity: Added header row number inputs (Length, Width, Height, Rail Length). Typing a valid number applies it to all row inputs in that column and auto-checks their confirm checkboxes. Updated LocationBulkCtl.java and locationbulk.js.

Mar 11 2026
web-mn:
- Warehouse Heat Map: Utilization percentage in detail panels (area, location, warehouse) now uses the capacityBadge pill style (green/amber/red) matching the card header badges. Refactored .capacityBadge CSS to be context-independent (removed .warehouseCard scope) and added .capacityBadge.capacityLow/Medium/High modifier rules so the badge colors apply anywhere in the page.
- Warehouse Heat Map: Added warehouse detail panel — clicking a warehouse name in the menu opens a detail section with Info tab (name, total volume, area/location/dynamic/staging counts) and Content tab (utilization bar with used/free, content stored icons, dynamic occupancy progress bars grouped by role e.g. "5/6 Racks", "1/9 Correls"). Added showWarehouseDetail(), getDynamicOccupancyByWarehouse(), getWarehouseDetailContent(), getWarehouseDetailHeader(). Added .warehouseDynamicRow CSS.
- Warehouse Heat Map: Added Map tab to location detail panel for vehicle locations. Tab is hidden for non-vehicle locations and shown only when location.v > 0. Map is initialised lazily on first tab switch (not during showLocationDetail) so the container is fully visible and sized before Leaflet mounts. Uses a custom L.divIcon with transportation.svg on a coloured circle background matching the vehicle's assigned colour. Popup shows vehicle name, heading, and last known address. Added currentVehicleLocation and vehicleMapInstance properties to view for lifecycle management. Map height fills the full detail panel via CSS flex chain (overflow:hidden sealed from #warehouseHeatMapDetail down through vehicleMapDiv/vehicleMapFieldWrap to #vehicleLeafletMap height:100%). invalidateSize() called on repeat tab switches.
- Warehouse Heat Map: Warehouse overview cards now show Areas, Locations, Dynamics, and Stagings counts in the subtitle (e.g., "5 Areas, 270 Locations, 9 Dynamics, 2 Stagings"). Areas, Dynamics, and Stagings are only shown when count > 0. Added getStagingLocationCountByWarehouse and getAreaCountByWarehouse model functions alongside the existing getDynamicLocationCountByWarehouse.
- irpop.js: System popups (#alertPop, #confirmPop, #errorPop, #promptPop, #toolTip) now always open centered in the viewport using fixed positioning and CSS transform instead of the offset top/left calculation.

Mar 09 2026
web-mn:
- Fixed: Data truncation error "Out of range value for column 'NewRefCoSalesPercent'" in company stats calculation. Added LEAST(100, ...) wrapper to cap all percentage calculations at 100% to prevent out-of-range errors in sp_write_comstat.sql and sp_fill_company_stats.sql.
- Warehouse Heat Map: Updated storage contents section in detail panel to group items by order with summary counts and icons (e.g., "Jones-Smith 🎒 12 bags, 📦 4 pkgs"). Summary row shows breakdown by content type with icons across all orders (e.g., "🎒 45 bags, 📦 12 pkgs across 3 orders").
- Warehouse Heat Map: Changed "Items Stored" to "Content Stored" in Capacity & Utilization section of detail panels, now displays breakdown with icons (e.g., "🎒 12 bags, 📦 4 pkgs") instead of just item count.
- Warehouse Heat Map: Simplified getCountIcons function using inline ternary operators for cleaner, more maintainable code with optional showLabels parameter for consistent icon+count display throughout the interface.
- Warehouse Heat Map: Added toggle between card view and list view modes. List view displays locations grouped by area in tables with columns for location name (clickable anchor), contents (icons with counts), % full capacity, and order count. Standalone locations displayed in separate table.
- Warehouse Heat Map: Added sortable table headers in list mode. Click column headers to sort by Location (text), Contents (count), % Full (percentage), or Orders (count). Visual indicators show sort direction (ascending/descending triangles).

Mar 06 2026
web-mn:
- Warehouse Heat Map: Building new warehouse visualization interface with card-based layout showing warehouses, areas, and locations organized alphabetically with storage counts, capacity utilization bars, and filter options (All/Empty/Occupied).
- Warehouse Heat Map: Cards display storage type icons (packages, bags, items, bins), show parent/child relationships (areas show location counts, locations show parent area), capacity calculated from dimensions with single-line summary format (X/Y used • Z free).
- Warehouse Heat Map: Detail panels show complete location information including warehouse, dimensions, barcode, capacity breakdown, and storage contents table with type icons, name/barcode on one line, and order name/number on one line with search and filtering functionality working together.

Mar 05 2026
web-mn:
- Fix to Subscription Fee resetting to default value when set to 0.
- Added bulk calendar reschedule popup to CRM My Day dashboard, calendar page, and CRM calendar section. Users can select multiple calendar events and reschedule them to a new date with quick buttons (Tomorrow, Next Week, Next Month) and option to preserve original event times.
- Added "Ozone" and "Staging" checkboxes to Add Location Wizard Details step. Special flags display in review step and are saved to LocationRec.

Mar 04 2026
web-mn:
- Fix to chat message input box resizing issues.
- Fix to Braintree report not showing all failed transactions. Added summary section.
- Fix to CRM - My Day print button not printing calendar schedule for that day.

Mar 03 2026
web-mn:
- Fixed: TypeError in calendardtlpop.js when updating Move tasks from non-calendar pages (e.g., home.jsp). Added check for view object existence before calling view.refreshTask() in updateMoveCallback.
- Add Location Wizard: Added Capacity step (step 4) with Clean/Dirty storage toggles, optional dimensions (Length/Width/Height), and hanging storage capacity with linear feet input and floor-space deduction option. Clean storage defaults selected.
- Add Location Wizard: Redesigned Review step (step 5) with single-line layout showing left-justified labels and right-justified values with border separators. Fixed display of selected departments for Department type locations.
- Add Location Wizard: Updated backend to save dimensions and RailLength to LocationRec, added validation check for duplicate names before insert, and improved button styling consistency.
- Fix to Barcode Fill packing bulk items causing error when item has too many images attached.

Feb 26 2026
web-mn:
- Added storage capability checkboxes to Add Location popup: "Can store packages" and "Can store packout containers".
- Package storage defaults to checked, packout bag storage defaults to unchecked.
- Updated createLocation in AjaxAdd.java to accept and save Package and PackoutBag fields.
- Added ability to select multiple departments when creating Department type locations in Add Location popup.
- Department selection uses consistent alp-type-btn styling with purple accent for special types.
- Department buttons displayed in grid layout matching location type button layout.
- Validates that at least one department is selected before location creation.
- Updated createLocation in AjaxAdd.java to accept and save DepartmentRows field.
- Added New Location Wizard popup to Location List page with 4-step guided flow (Placement, Category, Details, Review).
- Wizard supports creating single or multiple locations with auto-increment naming (e.g., BIN-A-1, BIN-A-2).
- Location categories: Static (fixed locations), Dynamic (mobile locations), Special (workflow-specific).
- Filters out system-only location types (Conveyor, Vehicle) from user selection.
- Added backend AJAX handlers: selectLocationAreas and selectLocationTypes in AjaxSelect.java, createLocation in AjaxAdd.java.
- Files modified: locationlist.jsp, LocationListCtl.java, AjaxSelect.java, AjaxAdd.java, addlocationpop.js, addlocationpop.jspf


Feb 24 2026
web-mn:
- Updated Move Wizard to automatically complete Move Tasks when final item is scanned.
- Fix to Scan Popup not counting scans when used from Move Wizard
- Added Generate External Photo Album Link to Image List page, added search field to External Order Album
- Fix to Order Address Export for Terra Group not using 'Primary' Order Address


Feb 20 2026
web-mn:
- Fix to Move Tasks closing future Pickups
- Added Department Containers to Warehouse Task List


Feb 19 2026
web-mn:
- Fix to Warehouse Task List not removing completed tasks for Department tasks and Pickup Tasks. Added additional checks to ensure tasks are only removed when all contents are moved away from the From Location, preventing premature removal of tasks that still have items to move.
- Fix to Metal Progetti operations page not sorting Order column correctly.
- Changed MP Operations page to not show orders if they are marked packed, instead of marked shipped. 
- Added search functionality to MP Operations page allowing users to search by order name.
- Added table sorting to Warehouse Task List page


Feb 18 2026
web-mn:
- Fix to Group Default records not validating name field before creation.
- Fix to WizLoad not showing correct location status for containers.
- Fix to WizLoad not marking storage only containers as loaded.

Feb 17 2026
web-mn:
- Fix to Pickup move tasks changing "From Location". Omitted pickup type move tasks from changing From Location when all contents have been moved away from the original From Location.
- Added Move task status "Arrived" for Pickup moves that are associated with calendar events when calendar event is marked arrived.
- Added Company Tags to CRM on list page, added ability to search and filter company tags. 
- Optimized Order Container page for orders with large amounts of images, improved list query performance by adding index on Sort parameters. 
- Fixed incorrect Tagging Backlog count on ScoreCard due to TotalLoss, Storage, Estimate and InHome Delivery groups being considered for tagging.
- Fixed "Uncaught ReferenceError: recb is not defined" error in wizloadmodel.js: corrected typo in 4 filter functions (getLoaded, getStaged, getToStage, getToLoad) where recb.b was incorrectly used instead of b.recb (receivedBy property) when filtering bags (wizloadmodel.js)
- Fixed "Data truncation: Out of range value for column 'DirectPercent'" error in sp_write_comstat by adding LEAST(100, ...) wrapper to cap percentage calculations at 100% for NoFreePercent, DirectPercent, ProgramPercent, NARDPercent, TopRefCoPercent, and TopBillToCoPercent. Prevents database errors when data inconsistencies cause calculated percentages to exceed valid range. (sp_write_comstat.sql)

Feb 09 2026
web-mn:
- Added automated warehouse task creation for department package putaway: when packages are completed at department locations (e.g., hand cleaning, laundry), system now automatically creates MoveRec tasks to prompt warehouse staff to move packages from department to storage locations. Tasks are grouped by delivery group + department combination, appear on warehouse task list with factory icon, and auto-complete when packages are stored or location changes. Includes performance index on (SiteNum, GroupRow, DepartmentRow, Done) for efficient task lookups. (MoveRec.java generateFromDepartmentPackage(), AjaxCtl.java completePackage(), OrderPkgRec.java afterUpdate(), LoginDb.java startup40CheckColumns(), warehousetasklist.js, warehousetasklist.jsp)

Feb 06 2026
web-mn:
- **CRITICAL FIX**: Centralized email header construction to fix notification emails being blocked by recipient mail servers. NotificationTrigger now uses MailMsg constructor pattern matching OrderReporter, ensuring consistent From addresses, proper SPF/DKIM alignment, and removing problematic Reply-To header that was triggering spam filters. Both email paths now share same centralized header logic in MailMsg class. (NotificationTrigger.java)
- Fixed IndexOutOfBoundsException in LocationBulkCtl when displaying parent area names. (LocationBulkCtl.java)
- Fixed checkIsAllAtFinalDestination logic in Move Wizard: when ToLocation and ToWarehouse are both 0, now properly checks that content has moved away from FromLocation instead of leaving check incomplete (wizmovemodel.js)
- Fixed Move Wizard status buttons triggering prematurely: checkIsAllPrepared, checkIsAllAtStaging, and checkIsAllOnVehicle now exclude items still at FromLocation, preventing Mark Prepared/Staged/Loaded buttons from enabling when items haven't actually moved yet (wizmovemodel.js, wizmovesteps.js)

Feb 04 2026
web-mn:
- Optimized Warehouse Detail page performance by converting contents loading from server-side to client-side AJAX: contents now load on-demand when user clicks the Contents tab, reducing initial page load time especially for warehouses with many stored items (warehousedtl.jsp, AjaxCtl.java getWarehouseContents(), WarehouseDtlCtl.java)
- Added user initial icons to vehicle sections in warehouse task list: displays assigned driver's initials with their custom color scheme next to vehicle name in vehicle headers, clicking icon opens user info popup (tromis.js getUserIconHtml(), warehousetasklist.js getVehicleWrap(), UserRec.java getJsonForWarehouseTaskList(), WarehouseTaskListCtl.java)
- Added warehouse location display in vehicle sections: when a vehicle is within 0.25 miles of a warehouse, displays warehouse name with barn icon instead of street address (tromis.js, warehousetasklist.js)
- Added distance calculation utilities: getLatLngDistance() using Haversine formula and getWarehouseAtLocation() to find nearby warehouses (tromis.js)
- **CRITICAL FIX**: Calendar events were not syncing completion status with pickup events, causing data inconsistency between calendar and pickup records (CalendarTask.java)
- Fix to Item Received count not displaying correctly on Pickup Calendar events
- Fixed IndexOutOfBoundsException on Location List page when a location has a parent area that no longer exists: added safety check to verify parent location exists before accessing it (LocationListCtl.java)
- Fixed "TypeError: null is not an object (evaluating 'w.n')" in movedetailpop.js: warehouse lookups now properly handle null returns by keeping default empty object instead of overwriting with null (movedetailpop.js - buildBags, buildDcs, buildItems, buildPkgs)
- Fix to warehouse detail page truncating LNG LAT precision to 0 decimal places: updated to use 6 decimal places for more accurate location display (warehousedtl.jsp)

Feb 03 2026
web-mn:
- Optimized room image display on Order Room page to show only first 10 images per room with a "more" link that navigates to the Image List page filtered by order and room, improving performance for rooms with 1000+ photos (OrderRoomCtl.java)
- Fixed "Uncaught TypeError: del.updateLoad is not a function" error in wizload when completing deliveries: added Delivery.wrap() calls in completeDelivery(), updateDelivery(), and afterUpdateDelivery() to ensure delivery objects are properly wrapped as Delivery class instances with all required methods before calling updateLoad() (wizloadmodel.js, wizloadview.js)
- Fixed "All Users" checkbox not toggling properly on calendar filter: removed double toggleFilterMenu() calls that were closing and immediately reopening popup, simplified logic to properly read checkbox state after it's clicked, and removed redundant condition checks (calendarview.js)
- Fixed "Element leafMap not found" console error when filtering users on calendar page: added null check to verify leafMap element exists before checking visibility in onFilterChange() function (calendarview.js)
- Fixed "Cannot read properties of null" error in locationpop.js: added null check for warehouse object in button() function and fixed curLocation type handling in find() function to support both object and primitive values (locationpop.js)
- Added order rejected, order archived and order status check for warehouse task list when generating and completing tasks (MoveRec.java)
- Implemented destination assignment popup for warehouse tasks: MoveTasks without ToWarehouse now display "assign" link that opens popup allowing users to select warehouse and optional location. (warehousetasklist.js, warehousetasklist.jsp, AjaxUpdate.java)


Feb 02 2026
web-mn:
- Implemented automatic vehicle location tracking integration with Verizon Connect API: created VehicleLocationMonitorTask that polls vehicle locations every 10 minutes and updates lat/lng coordinates in VehicleRec (VehicleLocationMonitorTask.java, VerizonRest.java)
- Enhanced vehicle tracking to capture additional location details from Verizon API: now saves LastAddress (street address), Direction (numeric degrees 0-359), and Heading (text direction like "North West") along with coordinates for better context and reporting (VehicleRec.java)
- Added intelligent move status transitions for pickup operations: when a pickup calendar event is marked done, moves now transition to "Transit" status if the vehicle has Verizon tracking (FleetApiId set), or directly to "Ready" if no tracking. Moves in Transit automatically transition to Ready when the vehicle arrives within 0.5 miles of ANY active warehouse (MoveRec.java, AfterCalendarUpdateTask.java)
- Enhanced MoveRec.beforeWrite() to intelligently set pickup move status based on real-time vehicle location: checks if vehicle is already at a warehouse when pickup completes, sets Transit only if vehicle is tracked and NOT yet at warehouse, immediately sets Ready if vehicle is already at warehouse or has no tracking (MoveRec.java)
- Added Transit status to MoveRec.MoveStatus enum to track vehicles en route to warehouses between pickup completion and warehouse arrival (MoveRec.java)
- Implemented warehouse proximity detection: added distanceToWarehouse() and isAtWarehouse() methods to VehicleRec using Haversine formula to calculate distance between vehicle and warehouse coordinates (VehicleRec.java)
- Created MoveRec.checkVehicleArrivals() method that queries moves in Transit status and checks if vehicles are at any active warehouse (not just FromWarehouse, since pickup moves don't have ToWarehouse set). Auto-populates ToWarehouse when vehicle arrives (MoveRec.java)
- Added configurable constants PROXIMITY_RADIUS_MILES (0.5) and POLLING_INTERVAL_MINUTES (10) to MoveRec for easy adjustment of tracking sensitivity and frequency (MoveRec.java)

Jan 30 2026
web-mn:
- Implemented special completion logic for pickup moves: items are now considered received (at destination) when they leave the vehicle location AND are not moved to another vehicle, ensuring they've truly been received into a facility location. Move tasks for pickups will auto-complete when all items are scanned to non-vehicle locations (MoveRec.java)
- Enhanced Move Record sync to auto-update FromWarehouse and FromLocation when all contents are detected at the same location: if user sets only warehouse initially or if contents are moved outside the move wizard, the system now automatically updates both fields to reflect the actual common location when syncing (MoveRec.java)

Jan 29 2026
web-mn:
- Fixed calendar filter settings not persisting when navigating away and returning: modified toggleFilterMenu to save settings when closing popup, added missing HideAutoFollowups field to saveCalendarSettings, and updated to use UserPageRec.put() for proper cache refresh across all user sessions (calendarview.js, AjaxUpdate.java)

Jan 28 2026
web-mn:
- Added comprehensive JavaDoc documentation to StringKit.java: documented all public methods with descriptions, parameter explanations, return value descriptions, and exception information where applicable
- Fixed "The filename, directory name, or volume label syntax is incorrect" error in downloadImages: now properly sanitizes insured name using FileKit.cleanFileName() before using it in zip filename (AjaxCtl.java)

Jan 27 2026
web-mn:
- **PERFORMANCE**: Optimized Move Wizard when loading contents for Location instead of Order
- Warehouse Task List now persists filter settings to session storage: filters (task type, movable type, vehicle, warehouse, grouping options, search text) are automatically saved and restored when returning to the page (warehousetasklist.js)
- Added "Pickup" Events to Warehouse Task List


Jan 26 2026
web-mn:
- **PERFORMANCE**: Optimized calendar detail popup image loading for events with 1000+ images: implemented batch rendering (50 images at a time) with cancellation flag to immediately stop downloads when popup closes, reducing unnecessary bandwidth and server load (calendardtlpop.js)
- Update to Activity Report, removed Loaded Packages from Un-stored Packages section
- Fix to Metal Progetti packages not being assigned to location if assembly arm is set to 0, enforced default assembly arm from company settings


Jan 23 2026
web-mn:
- **PERFORMANCE**: Fixed OrderPkgAddRow.selectList slow query (1.2s → 0.01s): Created index tOrderHov_iDelivery on (sitenum, delivery, row)
- Fixed JavaScript syntax error on orderbag.jsp when customer name contains apostrophe (e.g., "O'Keefe"): properly escape order name using jsq() method (OrderBagCtl.java, orderbag.jsp)
- Fixed "Cannot read properties of null (reading 'Referrer')" error in afterCustomerPop: added null check for customer object before accessing customer.Referrer property (orderdtl.js)
- Fixed "Maximum call stack size exceeded" error on iPhone Safari in calendar: removed unnecessary getTime() call in Task constructor, improved getInsured() null handling, added safety checks in isFirm() method (calendartask.js)

Jan 22 2026
web-mn:
- Fixed home page drag and drop: prevented drops into priority buttons section, prevented dragging the More button, and enabled dropping into empty mainButtons section (home.js)
- Fixed home page button layout not saving correctly due to cache synchronization issue. UserPageRec now returns copies from cache to prevent stale data (PageSettingCache.java, UserPageRec.java)
- Increased ClaimMailReader IMAP timeout values from 10 seconds to 60 seconds to prevent SocketTimeoutException errors when reading from Office 365 mail server
- Fix to HOV event triggering duplicate name error when creating HOV event for delivery from calendar


Jan 21 2026
web-mn:
- Fixed Move Detail Popup to maintain checkbox selections when filtering content
- Fix to duplicate InHome and HOV events appearing on calendar
- Fix to InHome items appearing on Order Storage page and fix to order article afterUpdate creating storage records for InHome items
- Fix to Bulk Item page reverting checkboxes after error, fix to checkboxes defaulting to on and added error message when delete reason is not provided

Jan 20 2026
web-mn:
- Updated Order Detail Popup Storage Summary to have collapsible warehouse sections
- Updated Order New page and Order Detail page, added field for "Marketing Referral Source"
- ClaimMailReader improvements:
	- **PERFORMANCE**: Optimized ClaimMailReader.writeAttachmentFile() to use two-pass approach: pre-fetch all attachment data from mail server into memory, then write to ZIP file
	- Increased buffer sizes from 128KB to 512KB for mail server downloads to reduce network round-trips and improve throughput
	- Disabled ZIP compression for already-compressed formats (JPG, PNG, GIF, PDF) using NO_COMPRESSION - provides massive performance gain with no quality loss
	- **RELIABILITY**: Enhanced ClaimMailReader error handling to continue processing remaining emails after errors instead of stopping
	- Added message tracking (by Message-ID) to prevent reprocessing messages after connection failures
	- Added detailed error logging showing which message number failed and progress through message queue
	- Improved error recovery with automatic retry logic and skip-already-processed functionality

Jan 19 2026
web-mn:
- **CRITICAL FIX**: Fixed ClaimMailReader IMAP connection failure (E3 BAD Command Error. 12) with Office 365 OAuth2 authentication
- Created OAuth2Authenticator class to properly handle XOAUTH2 SASL mechanism for JavaMail with Microsoft 365
- Updated getSessionImapOAuth2() to create session with OAuth2Authenticator instead of passing token directly to connect()
- Added complete IMAP session properties: mail.imaps.host, mail.imaps.port (993), mail.imaps.ssl.protocols (TLSv1.2), and connection timeouts
- Modernized home page icon drag-and-drop with automatic saving, smooth animations, and visual feedback (hover highlights, transparency effects, faster transitions)
- Fixed drag-and-drop swap logic to work correctly in both directions and handle nested/wrapped buttons properly
- Corrected icon ordering on page load by sorting buttons by their saved order values before rendering, preventing incorrect position assignments after drag operations


Jan 16 2026
web-mn:
- **PERFORMANCE**: Added new selectListByLocation() and selectReaderByLocation() methods to OrderStorageRow for location-based queries
- Added selectReaderByLocation SQL query optimized to filter by location first instead of after union, reducing rows scanned 
- Changed UNION to UNION ALL in OrderStorageRow queries (eliminates unnecessary duplicate removal since Item/Bin/Bag/Package types cannot duplicate)
- Reordered joins in OrderStorageRow queries to prioritize filtering tables for better query execution plans
- Migrated LocationDtlCtl.java to use selectListByLocation() for faster location detail page loads 
- Migrated ActivityCmd.java to use selectListByLocation() for faster activity page with vehicle locations
- Migrated LocationRec.java to use selectListByLocation() for faster location info/tooltips
- enhanced error handling in ClaimMailReader to provide detailed diagnostic information for Office 365 connection failures
- improved error messages to include host, user, protocol, authentication token status, and root cause information
- enhanced AzureAuthentication.getToken() with comprehensive error handling and validation
- improved error logging in ClaimMailReader.runTask() to print full stack traces on dev boxes
- fix to discrepancy in vehicle storage counts on home page vs. vehicle detail popup
- added overnight routine to remove item locations for packed items
- updated bcfill pack step to remove item locations when packing items


Jan 15 2026
web-mn:
- fix to calendar redraw task error after update
- **CRITICAL FIX**: Fixed image upload handling to check actual file extension instead of UUID filename, preventing unnecessary conversion attempts that were causing "Failed to get image from file" errors for HEIC-converted images
- Changed server-side image extension from 'jpeg' to 'jpg' for consistency with client-side HEIC conversion
- Added validation and logging for HEIC/HEIF file conversion to detect corrupted conversions
- Enhanced JImage error messages to show data preview when ImageIO.read() fails
- fix to intake2 "Cannot read properties of undefined (reading 'im')" error when viewing items with no tags
- improved syncing deliveries with move tasks


Jan 14 2026
web-mn:
- added support for HEIC/HEIF image file uploads with automatic client-side conversion to JPEG
- updated move tasks to not generate when delivery is not packed
- fix to move task status not changing when items are moved
- fix to driver name error on delivery detail popup
- fix to refresh move task not using correct markup
- added warehouse name to locations on move wizard
- update to move wizards task buttons

Jan 13 2026
web-mn:
- fix to Move Wizard not showing moved contents correctly when only "To Warehouse" is selected
- added status counts to warehouse task list
- fix to non-production items appearing in Activity - Unreceived Items list
- fix to Full Album not sorting photos by room


Jan 12 2026
web-mn:
- optimized ExcelWriter class for large dataset exports (Zip Codes Export)
- updated move task to include calendar vehicle where applicable
- added overnight routine to auto complete warehouse move tasks
- updated create site stored procedure for innoDb compatibility


Jan 09 2026
web-mn:
- added "Dry Cleaner" company type to company detail popup and company new page
- fix to CRM company popup not saving company email correctly
- added calendar event action buttons to warehouse task list with type-specific icons (pour.svg for Move, truck.svg for Delivery)
- implemented smart refresh functionality for warehouse task list rows
- refactored storage-related fields into abstract StorableRec base class for code reuse
- moved common storage fields (LoadedAt, LoadedBy, StagedAt, StagedBy, StoredAt, StoredBy, ReceivedAt, ReceivedBy, Location) to StorableRec
- updated OrderPkgRec, OrderBagRec, OrderDepartmentContainerRec, and OrderArticleStorageRec to extend StorableRec
- added automatic timestamp management in StorableRec.beforeUpdate() for storage lifecycle events
- renamed OrderPkgRec.StoredOn to StoredAt for consistency


Jan 08 2026
web-mn:
- created warehouse task list page with dynamic filtering and grouping options
- added centralized filterData function to handle warehouse, vehicle, task type, and movable type filters
- implemented search functionality across order name, group, vehicle, driver, warehouse, location, status, and date
- added group by date and group by vehicle toggle options with dynamic header title display
- added warehouse and vehicle filter buttons that auto-populate based on tasks in data
- added [none] button for tasks without assigned vehicles
- implemented animated chevrons for collapsible sections (type wrap and vehicle wrap)
- added smooth CSS slide animations for expanding/collapsing sections
- separated location display into From/To columns with arrow between them
- added filter to automatically exclude tasks scheduled during midnight hour (00:00-00:59)
- fixed HTML structure issues with proper closing of typeWrap and vehicleWrap divs on warehouse task list page


Jan 06 2026
web-mn:
- fix to load wizard not loading package when to location is not assigned
- fix to calendar recurrence "Every" field resetting to first entered value


Dec 19 2025
web-mn:
- removed IsAuto filter from Order Department Container List page, no longer applicable and causing errors
- updated metal progetti package location to ARM 1 by default, if arm location is not received.
- update to Load wizard added summary to done step

Dec 18 2025
web-mn:
- updated to wiz load, added prepping and staging steps, added link to move wizard, updated to handle dynamic locations

Dec 12 2025
web-mn:
- fix to adding new order error when sales rep is null

Dec 11 2025
web-mn:
- fix to order sales rep not being assigned from order new page
- fix to referring company sales rep not being assigned to order after updating company on order

Dec 10 2025
web-mn:
- fix to system generated package types (HOV and Item) not appearing in location rules
- removed service[s] groups from Order Container Detail page select group drop down
- added "Storage Only" to Order Milestones



Dec 09 2025
web-mn:
- fix to adding room on intake page not updating order graph cache
- update to calendar move event, added done counts, and improved syncing status, enable/disable buttons
- fix to load wizard not saving vehicle location
- updated bulk load/deliver to include optional vehicle entry
- updated bulk load/deliver to pull in delivery group assigned vehicle as location for package
- fix to package list page not showing storage locations on filter for loaded packages



Dec 08 2025
web-mn:
- fix to metal progetti incorrect ARM/Location assignment
- fix to search missing pages for "labels"
- added "Move Status" and "Move Counts" to Calendar Move events 

Dec 05 2025
web-mn:
- fix to moveWizard camera scan not returning scanned value correctly
- removed order location restrictions from entire system
- fix to vehicle locations to being set to Type="Vehicle"
- fix to warehouse error on calendar move detail popup when container does not have a location assigned
- fix to order items not appearing on move task if not stored
- attempted fix to moveWizard sizing on iPhones


Dec 04 2025
web-mn:
- fix to table sizing issue in move wizard
- updated item quantity to show single items when dealing with "footage" units
- fix to missing ranks on score card page
- removed caching of order graph, due to data becoming stale
- updated move wizard location picker to show relavent locations
- added alert popup when move task does not have content to move


Dec 03 2025
web-mn:
- fix to missing pages from global search
- fix to content count appearing on wrong side of move task
- updated storage used on move wizard to sort by delivery group
- added back button to all wizards
- updated move wizard filter button to function accordingly
- updated move wizard filter step to automatically proceed after selecting to location
- added "Tagging" flag to department records
- updated intake page to use department locations when tagging and creating department containers

Dec 02 2025
web-mn:
- enforced adding move details to calendar event detail popup
- added storage summary to move wizard done step
- fix to Activity - unstored containers not checking for order tagged status
- updated global scan popup to include link to move wizard


Dec 01 2025
web-mn:
- added link to move wizard from calendar event
- added type filter to move wizard filter step
- fix to move wizard not showing all applicable department containers
- added status update to move wizard complete step


Nov 28 2025
web-mn:
- minor client side fixes to moveWiz complete step
- fix to delivery detail popup error when loading vehicle name
- fix to deadlock on calendar query

Nov 26 2025
web-mn:
- added saving customers email when signing documents
- added driver and vehicle to delivery detail popup
- fix to storage summary not including load children

Nov 25 2025
web-mn:
- removed package order restriction
- added warehouse inactive filter and vehicle inactive filter
- added location bulk change name
- added package location summary to delivery detail popup and delivery calendar events

Nov 24 2025
web-mn:
- moveWiz: added enum for triggers to handle auto creation of task events, added enum to handle move status
- fix to order issue section causing page to scroll horizontally
- update to location list page
- added bulk change warehouse

Nov 21 2025
web-mn:
- moveWiz: removed all words with "content" from wizard
- fix to images records saving without name, added uuid fallback, wrote script to update database
- fix to merge contact and customer after fixing column name letter casing issue
- fix to metal progetti lot number change causing conveyor records to not update after bagging


Nov 20 2025
web-mn:
- moveWiz: added dynamic location scanning, added storage used table, added to home page
- crm: fix to customer last visit date not updating in real time when logging for contact
- fix to multiple item storage records duplicating items on lists



Nov 18 2025
web-mn:
- wrote script to fix letter casing on column names in database (innodb aftermath)
- re-added item usage to item dtl page, added link to lookup tag for more detail 
- updated lookup tag page to have option for item



Nov 17 2025
web-mn:
- building moveWiz: finished complete step, add camera capability, added skipping steps, sounds and messages, summary section


Nov 14 2025
web-mn:
- building moveWiz: move function for packages,items,containers and dcs, fix to items not appearing on task
- fix to calendar move detail popup not showing all applicable packages and dc
- fix to calendar move detail popup missing warehouse name

Nov 13 2025
web-mn:
- fix to negative delivery number error from app
- building moveWiz: added scan page, created tables for "tomove" and "moved" contents

Nov 12 2025
web-mn:
- fix to metal progetti deleting order after split, re-added "SPLT" suffix and removed hyphens to make room for item parent
- building moveWiz: added start scan capability, added check for active task

Nov 11 2025
web-mn:
- building moveWiz: content, content filter, task locking, locations filters, group room pop none button,

Nov 10 2025
web-mn:
- building moveWiz: order picker, group picker, room picker, task override, content table
- fix to Order Group document error caused by taxable field


Nov 07 2025
web-mn:
- updated order bill to show taxable amount, updated queries to pull down taxable items, added taxable fields to order bill popup and record
- update/fix to metal progetti counts and sending logic, fix to un-hangable items on list popups


Nov 06 2025
web-mn:
- fix to Contact Referral Source error 


Nov 05 2025
web-mn:
- added Referral Source and Welcome Marketing flag to contacts - updated on all pages and popups
- fix to Order Container, Room Location filter not initializing correctly, fix to filter popup stretching hiding Type filter


Oct 28 2025
web-mn:
- added 'enforce department containers' when packing
- re organized company settings page, added more sub-sections, added api tab, merged defaults and control tab into control tab
- fix to query errors when selecting data for maps


Oct 27 2025
web-mn:
- fix to Google Geo Location error when viewing Member info
- fix to calendar error when updating attendee list

Oct 24 2025
web-mn:
- fix to packages list not paging correctly

Oct 20 2025
web-mn:
- fix to twilio timeout lock
- added departments to location records for warehouses with "Packing" enabled

Oct 16 2025
web-mn:
- fix to client side javascript errors on orderitem.jsp page
- fix to move package restrict locations not checking for dynamic location
- fix to status sequence on package detail popup
- added all checkboxes to location bulk page flags columns
- added counts to move records for calendar status
- fix to global scan not removing barcode after scanning


Oct 15 2025
web-mn:
- added dynamic locations to allowed locations for all orders, BCMove fix
- updated wiz load combine delivery message and fix to error after combine
- updated container and item filtering to use single filter class
- fix to package location rules for system package type "Item"

Oct 10 2025
web-jc:
- track page stats for binary image uploads as ajax_addimagebinary


Oct 07 2025
web-mn:
- update to package filtering added single class to handle filter
- update to container filtering added single class to handle filter


Oct 06 2025
web-mn:
- fix to order price not updating after each tag
- fix to inconsistency in tagging backlog 
- fix to intake page downloading delivery groups twice



Oct 03 2025
web-mn:
- add ability to scan dynamic location to BCMove page
- updated BCLoad to to have location picker/scanner instead of drop down menu
- fixed storage summary for orders showing packed items
- updated some detail popups to use newer icon/text buttons



Oct 02 2025
web-mn:
- fix to crm log order filter not working causing error
- fix to vehicle intializing error on caledarview.js
- fix to null error on receive department container popup
- fix to content records caching incorrectly



Sep 30 2025
web-mn:
- updated BCLoad confirm scanning dynamic location
- fix to calendar events not showing children counts
- fix to location scan popup showing incorrect "Stored Days" count
- added ability to mark locations as department locations (multi select)



Sep 24 2025
web-jc:
- improve performance of ajax_synctagswithmetalprogetti
- improve performance of ajax_selectlastreferral


Sep 22 2025
web-mn:
- fix to javascript error on crm detail pop when selecting [none] for company


Sep 20 2025
web-jc:
- change imageuploadpop.js to use binary upload for snapshots and images whose
  size must be reduced
  

Sep 19 2025
web-mn:
- updated counts on task map page
- added ability to load dynamic locations from bcload page 


Sep 18 2025
web-jc:
- reworked ajax_addcontact to submit work after contact creation
- reworked ajax_addcustomer to submit work after customer creation
- reworked app_logerror to submit notification work 

Sep 18 2025
web-jc:
- hot-patched ordercustomerdtlpop.js for null cust error
- hot-patched sp_wiz_load.sql for duplicate key error
- changed ajaxadd_customer such that company missing email is deferred
web-mn:
- fix to add location error
- fix to calendar event merging user and attendee initials
- fix to incorrect location being assigned to metal progetti packages

Sep 17 2025
web-jc:
- removed logic related to MyISAM tables from Instruction copy routines
- created but did not activate faster version of ajax_updateCalendar
- created faster version of ajax_sendArticlesToMetalprogetti and put flag on company to activate it
- hot-patched orderflagpop.js for null self.data error
- hot-patched pickcuscon.js for self.customerName error
- moved ajax_synctagswithmetalprogetti to it's own class to enable easier refactoring for speed
web-mn:
- removed size field from packages,containers and locations replaced with width,height,length
- added location bulk page 'change capacity'
- updated sp_set_location_counts to handle new dimensions
- updated package type, containertype and location detail pages to handle new dimensions 
- updated location list page to show new capacity
- added location capacity to location detail popup 
- fix to integer unique index on location table causing errors
- updated company after update to handle adding conveyor arm locations automatically

Sep 16 2025
web-jc:
- hot-patched bcload.js with fix for js error
- hot-patched locationbulk.js with fix for js error
- fixed calendarview.js but could not patch
web-mn:
- simplified bcload to only allow moving packages from staging/dynamic locations
- added conveyor arm location records
- update metal progetti to automatically assign conveyor arm locations to packages 

Sep 15 2025
web-mn:
- added bulk change flags for Locations
- updated load wizard to allow scanning of locations (dynamic and staging)
web-jc:
- changes to intake2ctl and some of the methods called from there to reduce slow hits
- tuneup of ajax_addContact to reduce slow hits
- hot-patched crmgrouppop.js with fix for add customer callback
- hot-patched crmtemplate.js with fix for js error
- hot-patched pickcuscon.js with fix for startSwirl error

Sep 12 2025
web-mn:
- update location filtering, created class to pass multiple parameters
- added location bulk page
--- ability to bulk change location types
web-jc:
- hot-patched ordernew.js with fix for add customer callback
- hot-patched intake2pop.js with fix for null article.xact attribute
- deferred calendar delete task to eliminate slow hits
- tuned OrderDtl to defer some selections until write step,
  optimized some string building


Sep 11 2025
web-jc:
- hot-patched orderbag.js with fix for adding bags
- hot-patched calendartask.js with fix for attendee list
- separate counting tags for bags from delivery and room for speed
- optimized IntakeTag.selectJson to reduce slow hits on intake
web-mn:
- updated location records added staging table
- updated wiz load added/updated staging ability
- fix to load wizard not resetting when user un-loads package


Sep 10 2025
web-jc:
- defer some work from ajax_updateCalendar to a scheduled task to reduce slow hits
web-mn:
- updated location records and pages to handle dynamic locations, added location types

Sep 9 2025
web-mn:
- fix to AutoDC items from Processing Departments being automatically loaded onto Pickup Vehicles
- fix to null pointer exception on orderDtlCtl -> request.getReferrer() 
- fix to excel max cell length error for CrmLogExport

Sep 8 2025
web-jc:
- change data selection under Home->CRM Logs to a paged mechanism to reduce slow hits
- move ajax_updateCalendar code to its own class to facilitate review/maintenance/optimization
web-mn:
- fix to wiz load checking service groups for combine
- fix to crm popup checking all contacts when creating crm log from recent logs list page 
- added staging flag to location records
- fix to internal notes not showing who was notified


Sep 4 2025
Web: 
 - mn: fix to completing Containers from Intake page not working
 - mn: fix to erroneous text messages and email for calendar events from devbox
 - mn: fix to incorrect user being assigned to contact followups in overnight routine
 - mn: fix to calendar times not adjusting due to incorrect date time picker index
 
Sep 3 2025
Web: 
 - mn: fix to order counts (tags) accumulating
 - mn: fix to item links on intake page not fetching correct item

Sep 2 2025
web-jc:
- tuning to eliminate unnecessary calls to count bag tags

db-jc
- temporarily removed foreign keys tOrderPackageEvent->tOrder and tOrderPackageEvent->tOrderPackage because for some strange reason there
  are HovTake events being posted without an order id or a package row like:
----- insert into tOrderPackageEvent set Event=1014,Note='Tag 78',OrderRow=0,Package=0,Time='2025-09-02 11:33:38',Type='HovTake',User=12
- this is either a bug or a misfeature 
 

Sep 1 2025
Db - jc:
- removed foreign keys to accommodate delete events and restored delete event records from b4fk
--- tOrderArticleEvent, tOrderBagEvent, tOrderDeliveryEvent, tOrderDepartmentContainerEvent

Aug 30 2025
Db - jc:
**
** data saved to schema b4fk in case I misunderstood data relationships 
**
- added foreign keys:
--- tOrderAddress,tOrderArticleEvent,tOrderArticleStorage,tOrderBag,tOrderBagEvent,tOrderBagIns,
    tOrderBill,tOrderCharge,tOrderContact,tOrderContactAttempt,tOrderCustomer,tOrderDeliveryEvent,
    tOrderDeliveryRoom,tOrderDepartmentContainer,tOrderDepartmentContainerEvent,tOrderEstimateItem,
    tOrderEvent,tOrderExt,tOrderHov,tOrderIns,tOrderIssue,tOrderLocation,tOrderMaterial,
    tOrderPackageEvent,tOrderPickup,tOrderReviewNote,tOrderTally,tOrderTax,tOrderTime,
    tOrderTotalLossItem
------> tOrder: update/delete cascade
--- tOrderBagEvent,tOrderBagIns -> tOrderBag: delete cascade
--- tOrderContactAttempt -> tOrderContact: delete cascade
--- tOrderCustomer -> tCustomer: delete restrict
--- tOrderDeliveryEvent -> tOrderDelivery: delete cascade
--- tOrderDeliveryIns -> tOrderDelivery: delete cascade
--- tOrderDeliveryRoom -> tOrderDelivery: delete cascade
--- tOrderDeliveryRoom -> tOrderRoom: delete cascade
--- tOrderDepartmentContainerEvent -> tOrderDepartmentContainer: delete cascade
--- tOrderEstimateItem -> tOrderDelivery: delete cascade
--- tOrderEstimateItem -> tOrderRoom: delete cascade
--- tOrderEstimateItem -> tArticle: delete restrict
--- tOrderHov -> tOrderDelivery: delete cascade
--- tOrderHovItem -> tOrderHov: delete cascade
--- tOrderHovItem -> tOrderArticle: delete cascade
--- tOrderHovPkg -> tOrderHov: delete cascade
--- tOrderHovPkg -> tOrderPackage: delete cascade
--- tOrderHovPkg -> tOrderDelivery: delete cascade
--- tOrderIns -> tInstruction: delete restrict
--- tOrderLocation -> tLocation: delete restrict
--- tOrderMaterial -> tArticle: delete restrict
--- tOrderPackageEvent -> tOrderPackage: delete cascade
--- tOrderTax -> tTaxCode: delete restrict
--- tOrderTime -> tArticle: delete restrict
--- tOrderTotalLossItem -> tArticle: delete restrict
--- tOrderTotalLossItem -> tOrderDelivery: delete cascade
--- tOrderTotalLossItem -> tOrderRoom: delete cascade


Aug 28 2025
Javascript - jc:
- fixed error on image list and hot patched

Aug 27 2025
Java - jc: 
- added CHAR,VARCHAR,SIGNED,UNSIGNED to SqlQuoter NON_COLUMN_KEYWORDS to prevent convert(xxxx,`char`) type error
- added MemoryWatch summary to ElevenPM command statistical dump
- reduced jvm max memory allocation to 6Gb as too much can cause long gc pauses
- added pre-emptive select by name to AppCtl.addDelivery to avoid dup name exceptions
- sp_change_order added update to sequence dispenser tSeq in case new order number is higher
- removed last package number hack from tOrderPackage.deleteEmpties 
--- because it is no longer necessary with InnoDb AND it breaks foreign key
- review and update of TODO tags in code for use in General Task View
- changed OrderRec.countForPage to only join to tables referenced in the filters 

Javascript - jc:
- used elvis operator on self.users of oPickupPop in addorderpickup.js to avoid NPE
- added NPE guard for events to notificationPop.initNotification callback handler
- added NPE guard to calendar dtlPop.updateCallback for delivery name
- added pleaseWait and stopWaiting to image list load because one set of errors
  suggested that Kelly Maliniak clicked somewhere before page was fully loaded

Aug 26 2025
Db - jc:
- added foreign keys
--- tOrder -> tCustomer on delete restrict
--- tOrderArticle,tOrderPackage,tOrderDelivery,tOrderRoom,tOrderNote -> tOrder
----- all on delete cascade on update cascade
--- tOrderPackageItem -> tOrderArticle on delete cascade
--- tOrderPackageItem -> tOrderPackage on delete cascade

Web - jc: 
- change calendar selection filter sequence to favor those that can use indexes
- change order selection filter sequence to favor those that can use indexes
- increase size of temp contacttype column in select_terra_contacts to fix truncation error

Aug 25 2025
Web - jc: 
- made MyCrypt.decryptHex more fault tolerant
- steps to avoid deadlocks on OrderTagCounter.updatePackServices
- made irdate.friendly(d) return safely if non-date argument passed in
  
Aug 24 2025
Web - jc: 
- changed select_terra_contacts stored procedure to stop using memory tables because we got
  "temporary table is full" error
  
Aug 23 2025
Web - jc:
 - whoison: separated average page load time to its own graph 
 --- added current day's stats to all graphs
 --- changed date format on x axis labels to weekday month date wmd 
 - since OrderRec.selectFilterCount is 30% of db time today:
 --- changed logging key from OrderRec.selectFilterCount to OrderStatusCount??? so we can isolate slowpokes
 --- changed count join on customer contact to inner for Commission_Due and Referral_Due
 --- changed count join on gclaim to inner for Portal_Claim  
 --- made count selection specific to filter to exclude tables not referenced 
 
Aug 22 2025
Web - jc:
 - built 'stepped' path for updating counts on delivery,room,tag records to reduce deadlocks
 - use Thread.setName on OrderTaskQueue to track which order is currently being processed
 - added filter suggestion to calendar for selections yielding more than 3,000 tasks
 - reworked sp_wiz_load for speed as wizloadctl_get as top time user today
 
Aug 18 2025
Web:
 - mn: fix to Order Time popups incorrect column Id for articles
 - mn: fix to Company Stats (ScoreCard) overnight routine


Aug 14 2025
Web:
 - mn: fix to delivery counts not updating correctly
 - mn: fix to inhome deliveries appearing on tasklist
 - mn: fix to rendered service items not packing and shipping automatically


Jul 22 2025
Web:
 - mn: added auto select Adjuster check box when adding an insurance company to order without an insurance company
 - mn: updated carrier export add more fields: altname, altnaic, maildomain, note, coverage, naic group


Jul 18 2025
Web:
 - mn: fix to incorrect NAIC Group numbers on carrier records (from import)
 - mn: update to carrier info popup, added inactive, type and fix to missing note
 - mn: update to data map added carrier filters: state, onorder, active and type
 


Jul 17 2025
Web:
 - mn: fix to customer final delivery status updating to NA from crm customer popup
 - mn: fix to typo on order packout document and added final delivery status to document
 - mn: added carrier group name to carrier info popup title
 - mn: added next pack due date to mpoperations page, sort by due date
 - mn: update inactive flag for carriers with note "not worth tracking" and "do not track"
 

Jul 16 2025
Web:
 - mn: added bulk split button to MP Operations page
 - mn: added Member County Coverage export to Oversight-Zip codes
 - mn: removed Zip code Export from public use (generates too large of a file)
 - mn: fix to mp operations auto split not working
 
 

Jul 9 2025
Web:
 - mn: fix to filtering error message on mpOperations page
 - mn: added conveyor status filter to mpOperations item popup
 - mn: updated mpOperation page counts to be clickable
 - mn: fix to conveyor rows allowing totalloss items and estimate items
 - mn: added group and room filter to mpOperations package popup
 

Jul 8 2025
Web:
 - mn: added group and room filter to mp operations item popup
 - mn: fix to mp operations page not saving checkbox settings
 

Jul 7 2025
Web:
 - mn: added auto conveyor removal for 3 or less items
 - mn: added new Contact Type "Facility Manager"
 - mn: fix to docPreviewPop not being accessible from all pages 
 - mn: added Notes and Coverage fields to Carrier Merge Popup
 

Jul 4 2025
Web:
 - mn: added hangable filter to order items list page
 - mn: updated item filtering to use class OrderItemFilter
 - mn: fix to carrier merge popup not sending naic values correctly
 

Jul 2 2025
Web:
 - mn: added unpacked column to Metal Progetti Operations page
 - mn: added metal reference code popup
 - mn: fix to metal sending records for packed items
 - mn: added "Show only on Conveyor" rows to MP Operations page
 - mn: added search criteria for MP Operations page
 

Jun 27 2025
Web:
 - mn: fix to slow Metal Progetti query
 

Jun 24 2025
Web:
 - mn: fix to Metal Progetti 'A' Status (remove from conveyor) setting records as packed
 - mn: fix to MPOpeartion - sent to Metal column not showing correct value
 - mn: added assembly arm control to Order Delivery records
 

Jun 17 2025
Web:
 - mn: fix to department contianer list page not showing all locations for order
 - mn: updated department container filtering structure
 

Jun 17 2025
Web:
 - mn: fix to order list state filter using old order address column
 - mn: added mail domain filter to carrier list page
 - mn: created script to assign carrier to companies using contact mail and carrier mail domain 
 
Jun 16 2025
App:
 - tr: working on fixes for camera on certain android devices


Jun 13 2025
Web:
 - mn: added SVG coverage map to carriers (popup and detail page)
 - mn: fix to carrier state abbr. mixing with state row
 - mn: imported carrier domain names
 

Jun 12 2025
Web:
 - mn: changed excel library from jxl to apache


Jun 10 2025
Web:
 - mn: fix to calendar event requiring user value
 - mn: updated carrier recrods with naic and alt names
 - mn: linked carrier records to naic groups
 

Jun 09 2025
Web:
 - mn: fix/update to calendar overlap warning
 - mn: fix to load wizard uncombined groups causing error
 - mn: added alt name and alt naic numbers fields to carrier merge popup
 - mn: fix to storage only group showing pack due date on order delivery list page
 - mn: fix to describe and price item not showing price for unauthorized users
 


Jun 06 2025
Web:
 - mn: fix to document preview setting incorrect pageName and causing authorization errors
 - mn: fix to "Formerly" section on Contact Detail Popup pointing to current contact
 



Jun 05 2025
Web:
 - mn: improved site list on index page, added user name
 - mn: updated create site script (sp_create_site) to include instructions, brands and default groups


Jun 04 2025
Web:
 - mn: added alt name field and alt naic field to carrier records
 - mn: added OnOrder flag to carrier records, created overnight routine to update flag
 - mn: linked customer tpa records to carrier tpa records
 - mn: added Accelerator and Last Log Type to Terra export
 


Jun 03 2025
Web:
 - mn: updated zdelivery to pass new parameters to wizload
 - mn: hot patch fix to duplicate delivery calendar records
 - mn: fix to order detail error when removing company from order
 
 


Jun 02 2025
Web:
 - mn: fix to task list change due date not reflecting "locked" for load children
 - mn: increased column size for tuser.orderQuickFilterSettings to varchar(500)
 - mn: fix to Load Wizard showing Total Loss groups as combine options
 - mn: fix to Carrier Merge not listing NAIC groups correctly
 - mn: fix to missing container type on Department Container labels
 - mn: added Location filter to Department Containers
 - mn: fix to data truncation error in stored procedure select_contacts_for_terra
 


May 21 2025
Web:
 - mn: updated calendar icons to include text
 - mn: updated calendar map to show firm events only
 - mn: added tentative, done and firm filters to calendar map filter
 - mn: updated map to hide layers box
 - mn: removed greying out of routes on map when event is done
 
App:
 - tr: Fixed tag printing from container edit page
 - tr: Looking into issues reported by Jim regarding slow delivery scanning 
 - tr: Looking into issues with item intake saying order was still on hold even after taking hold off


May 20 2025
Web:
 - mn: imported "State Plan","Vendors" and "NAIC Groups" to carriers
 - mn: added "Unknown" and "Not Provided" columns to oversight export
 - mn: fix to irregular referred count on oversight export
 - mn: added auto fill sales rep field when selecting company for add contact popup
 - mn: removed order progress bars from detail page when not used



May 16 2025
Web:
 - mn: changed carrier list page to show all carriers instead of paging
 - mn: fix to "exteranl" typo on order detail page
 - mn: added inactive company detail to carrier connections on carrier detail page
 - mn: update to department containers label
 - mn: fix to crmlog not appending "sent to:" when notifying users


May 15 2025
Web:
 - mn: added carrier NAIC info to carrier popup
 - mn: updated carrier group pop to show current members


May 14 2025
Web:
 - mn: added carrier bulk pages
 - mn: created script to update carriers with new naic/address data


May 13 2025
Web:
 - mn: fix to order address dyna column error 
 - mn: added naic filter to carrier list
 - mn: imported naic numbers from asana#1210214394169832
 - mn: added NAIC 2024 reference pdf link
 - mn: started bulk carrier pages
 - mn: unable to extract all applicable groups from naic reference using ai

App:
 - tr: Continuining work on queueing uploads for delivery scanning. Speed improvements, helpful error messages and easier ways to fix errors
 - tr: Fixing bug with adding groups in offline mode
 - tr: Looking into issue with inhome confirmation message timing with print suggestion (Harri bug report)
 

May 12 2025
Web:
 - mn: added NAIC number, NAIC Group, Type to carrier merge popup
 - mn: fixed errors with carrier changes
 - mn: added carrier export to carrier list page

App:
 - tr: Reworking delivery scanning to queue uploads in the background as you work
 - tr: deploying app to testflight and app store
 
 
May 9 2025
Web:
 - mn: fix to button styles on some popups
 - mn: added CarrierGroup table and popup, updated carrier list page, carrier detail page, updated carrier filtering, and carrier reports
 - mn: fix to scrolling issue on oversight links
 

May 8 2025
Web:
 - mn: fix to javascript errors on pickcuscon popup
 - mn: reworked carrier record to hold XCarrierType enum value, removed tpa and insurance company fields
 - mn: restyle to input boxes and labels

App: 
 - tr: Changed tag printing of containers and tags over to rendered image rather than html/pdf approach that stopped working in maui
 - tr: Fixed app crashing when entering delivery start page with map a second time
 - tr: Added offline support for delivering all forms of deliverable records
 

May 7 2025
Web:
 - mn: added naic number field to carriers
 - mn: created table for carrier group records
 - jc: fix to js error on package barcode ship from whoison client log
 - jc: fix to js error on package barcode pack from whoison client log

App:
 - tr: Fixed bug causing scope/pickup conversion to crash
 - tr: Testing changing tag printing from pdfs to images to reduce complexity and hopefully fix multiple tag printing problems
 - tr: More null handling improvements in network calls
 
 
May 6 2025
Web:
 - mn: added filters to gcarrierlist
 - mn: added carrier merge popup and sp_ merge procedure
 
App:
 - tr: Fixes for crash when changing flash mode on devices without flash (like ipads)
 - tr: Fixed issue causing new deliveries to crash


May 5 2025
App:
 - tr: enhanced network calls to retry and better crash handling
 - tr: fixed signature capturing
 - tr: fixed crash when taking photos
 - tr: fixed bug causing crash after network error when updating a Group


May 1 2025
Web:
- jc: fix script error on crm detail popup when coming from calendar event, trying to add contact (whoison client log)
- jc: fix script error when code popup (quality,severity,handling) comes up on order bag page
- mn: fix to table full error for terra contact export (stored procedure) 
- mn: fix to delivery wizard suggesting shipped deliveries for combining
- mn: fix to contact filter not filtering for contact name or company name
- mn: optimized slow order storage query 
- mn: copied all carrier records (gCarrier) with orders into site 1's company table (tCustomer)
  
April 30 2025
App:
 - tr: Fixed issue with downloading orders connected to hundreds of deliveries


April 25 2025
App: 
 - tr: Fixed calendar events not letting you click the last one in list
 - tr: Changed HttpClient implementation to hopefully fix some random null responses we've been getting
 - tr: Improvements to crash reporting
 

April 24 2025
Web:
 - mn: Added social media to User/Customer/Member pages and preferences
 - mn: Included Company/User social media in Terra Sender Export
 - mn: Updated v-card to show all social media links
 - mn: Updated all info popups to include social media links where applicable




April 23 2025
Web:
 - mn: Added table for social media accounts for users, members, companies, customers and contacts
 - mn: Added ability to add multiple social media accounts for members and contacts
 - mn: Created global Add Social Media account popup
 - mn: Added Social Media Icons



April 22 2025
App: 
 - tr: Updating mac/xcode/rider/maui to support maui9
 - tr: Testing fixes made for android on ios to ensure no regressions
 - tr: Improved data logging on certain network crashes
 - tr: Looking into issues with inhome count being wrong on calendar events
 - tr: Looking into ways to improve tag printing reliability
 
Web:
 - mn: Created a "Sender" export for Terra; added to overnight routine
 - mn: Created a user export table to flag users with changes or companies with changes
 - mn: Fixes to combining groups rules



April 17 2025
App: 
 - tr: Lots of work on getting Android app up to par in maui
 - tr: Fixing radio buttons that stopped working in maui
 - tr: Fixed icon and splash screen
 - tr: Upgraded maui and packages to .net9 to get latest bug fixes and improvements from microsoft
 - tr: Fixed list items that were unclickable in Android (many places in app)
 - tr: Fixed height of Contents box on Packout page to fit all items


Web:
 - mn: Overhaul to contact filtering, created class to hold all filter values
 - mn: Added marketing dyna column and filters to contact pages
 - mn: Created a generic BooleanFilter for sql tinyint(1)
 - mn: Added contact duplicate check to add contact popup



April 16 2025
 - Initial changelog created

App:
 - tr: Fixed crash on delivery scanning page (Asana: 1209998072547483)
 - tr: Fixed item text getting cut off when searching for items on packout (Asana: 1206389324558019)
 - tr: Fixed crash when marking certain event types done
 - tr: Investigating issues reported in Asana: 1206389324558014, edited delivery group not found
 - tr: Investigating Asana: 1206389324558011, trying to find where 1531 in home items value came from
 - tr: Fixed error message disappearing too quickly on marking event done (Asana: 1206389324558046) and fixed server side code causing that error
 - tr: Removed text from Last Entered section if you're working on a different order (Asana: 1206389324558017)

Web:
 - mn: Fixed incorrect order count on Oversight Members page
 - mn: Changed add contact popup to warn if email is missing instead of stop user
 - mn: Overhaul to contact bulk pages 
 - mn: Contacts will now be flagged for Terra Export when added to an Order
 - mn: Removed contacts from marketing with duplicate email addresses, database update
 - tr: Added link on whats new to open change log in a separate tab
 - tr: Added scheduled task on server to pull change log down from ir server
 - tr: Added cron job on ir server to pull this file out of source control periodically and place it where the TS server can get it