181 lines
5.0 KiB
Markdown
181 lines
5.0 KiB
Markdown
# Metrics System Changes
|
|
|
|
## Schema Changes
|
|
|
|
### Product Identifiers
|
|
- Changed `product_id` to `pid` throughout all metrics tables and queries
|
|
- Changed `category_id` to `cat_id` in category-related queries
|
|
|
|
### Purchase Orders
|
|
- Changed status check from `status = 'closed'` to `receiving_status >= 30`
|
|
- Added comment `-- Partial or fully received` for clarity
|
|
- Now using `received_date` instead of relying on status changes
|
|
|
|
### New Product Fields
|
|
- Added support for `notions_inv_count`
|
|
- Added support for `date_last_sold`
|
|
- Added support for `total_sold`
|
|
- Using `visible` flag for active product counts
|
|
|
|
### Field Size Updates
|
|
- Increased size of financial fields to handle larger numbers:
|
|
- Changed category metrics `total_value` from `DECIMAL(10,3)` to `DECIMAL(15,3)`
|
|
- Changed brand metrics financial fields from `DECIMAL(10,2)` to `DECIMAL(15,2)`
|
|
- Affects `total_stock_cost`, `total_stock_retail`, `total_revenue`
|
|
|
|
## Metrics File Changes
|
|
|
|
### Product Metrics (`product-metrics.js`)
|
|
- Updated SQL queries to use new field names
|
|
- Enhanced stock status calculations
|
|
- Added financial metrics:
|
|
- `gross_profit`
|
|
- `gmroi`
|
|
- `avg_margin_percent`
|
|
- `inventory_value`
|
|
- Improved reorder quantity calculations with:
|
|
- Enhanced safety stock calculation
|
|
- Lead time consideration
|
|
- Service level factors
|
|
- Added NaN/NULL value handling:
|
|
- Added `sanitizeValue` helper function
|
|
- Properly converts JavaScript NaN to SQL NULL
|
|
- Ensures all numeric fields have valid values
|
|
|
|
### Vendor Metrics (`vendor-metrics.js`)
|
|
- Updated field references to use `pid`
|
|
- Modified purchase order status checks
|
|
- Enhanced vendor performance metrics:
|
|
- Order fill rate calculation
|
|
- On-time delivery rate
|
|
- Lead time tracking
|
|
|
|
### Category Metrics (`category-metrics.js`)
|
|
- Updated to use `cat_id` instead of `category_id`
|
|
- Enhanced category performance tracking:
|
|
- Active vs total products
|
|
- Category growth rate
|
|
- Turnover rate
|
|
- Added time-based metrics for:
|
|
- Product counts
|
|
- Revenue tracking
|
|
- Margin analysis
|
|
- Added NULL brand handling:
|
|
- Uses 'Unbranded' for NULL brand values
|
|
- Maintains data integrity in category sales metrics
|
|
|
|
### Brand Metrics (`brand-metrics.js`)
|
|
- Updated product references to use `pid`
|
|
- Enhanced brand performance metrics:
|
|
- Stock value calculations
|
|
- Revenue tracking
|
|
- Growth rate analysis
|
|
- Added time-based aggregates for:
|
|
- Stock levels
|
|
- Sales performance
|
|
- Margin analysis
|
|
- Increased field sizes to handle large retailers
|
|
|
|
### Sales Forecasts (`sales-forecasts.js`)
|
|
- Updated to use new product identifiers
|
|
- Enhanced forecast calculations:
|
|
- Day-of-week patterns
|
|
- Seasonality factors
|
|
- Confidence levels
|
|
- Added category-level forecasts with:
|
|
- Units and revenue predictions
|
|
- Confidence scoring
|
|
- Seasonal adjustments
|
|
|
|
### Time Aggregates (`time-aggregates.js`)
|
|
- Updated field references to use `pid`
|
|
- Enhanced financial metrics:
|
|
- GMROI calculations
|
|
- Profit margin tracking
|
|
- Added inventory value tracking
|
|
- Improved purchase order integration
|
|
|
|
## Database Impact
|
|
|
|
### Tables Modified
|
|
- `product_metrics`
|
|
- `vendor_metrics`
|
|
- `vendor_time_metrics`
|
|
- `category_metrics`
|
|
- `category_time_metrics`
|
|
- `brand_metrics`
|
|
- `brand_time_metrics`
|
|
- `sales_forecasts`
|
|
- `category_forecasts`
|
|
- `product_time_aggregates`
|
|
|
|
### New Fields Added
|
|
Several tables have new fields for:
|
|
- Enhanced financial tracking
|
|
- Improved inventory metrics
|
|
- Better performance monitoring
|
|
- More accurate forecasting
|
|
|
|
## Frontend Considerations
|
|
|
|
### Data Access Changes
|
|
- All product lookups need to use `pid` instead of `product_id`
|
|
- Category references should use `cat_id`
|
|
- Purchase order status checks need updating
|
|
- Handle 'Unbranded' as a valid brand value
|
|
|
|
### New Features Available
|
|
- Enhanced stock status indicators
|
|
- More detailed financial metrics
|
|
- Improved forecasting data
|
|
- Better category and brand performance tracking
|
|
|
|
### UI Updates Needed
|
|
- Update all API calls to use new field names
|
|
- Modify data displays for new metrics
|
|
- Add new financial performance indicators
|
|
- Update stock status logic
|
|
- Enhance forecast displays
|
|
|
|
## API Route Updates Needed
|
|
|
|
### Product Routes
|
|
- Update ID field references
|
|
- Modify stock status calculations
|
|
- Add new financial metrics endpoints
|
|
|
|
### Category Routes
|
|
- Update to use `cat_id`
|
|
- Add new performance metrics
|
|
- Include time-based aggregates
|
|
|
|
### Vendor Routes
|
|
- Update product reference handling
|
|
- Add enhanced performance metrics
|
|
- Include new time-based data
|
|
|
|
### Reporting Routes
|
|
- Update all ID references
|
|
- Add new metrics support
|
|
- Include enhanced forecasting data
|
|
|
|
## Migration Considerations
|
|
|
|
### Data Migration
|
|
- Update existing records to use new IDs
|
|
- Backfill new metrics where possible
|
|
- Verify data integrity after changes
|
|
- Handle NULL to 'Unbranded' brand conversion
|
|
|
|
### Code Updates
|
|
- Update all API endpoints
|
|
- Modify database queries
|
|
- Update frontend components
|
|
- Revise reporting logic
|
|
|
|
### Testing Requirements
|
|
- Verify ID changes throughout system
|
|
- Test new metrics calculations
|
|
- Validate forecasting accuracy
|
|
- Check performance impact
|
|
- Verify NULL value handling |