147 lines
4.6 KiB
Markdown
147 lines
4.6 KiB
Markdown
# Excel File Upload Mapping
|
||
|
||
## File Information
|
||
- **File**: `1cc01b8Comenzi Productie (19).xlsx`
|
||
- **Sheets**: DataSheet (corrupted), Sheet1 (249 rows × 29 columns)
|
||
- **Purpose**: Production orders for label generation
|
||
|
||
## Excel Columns (29 total)
|
||
|
||
### Core Order Fields (✅ Stored in Database)
|
||
1. **Comanda Productie** → `comanda_productie` ✅
|
||
2. **Cod Articol** → `cod_articol` ✅
|
||
3. **Descriere** → `descr_com_prod` ✅
|
||
4. **Cantitate ceruta** → `cantitate` ✅
|
||
5. **Delivery date** → `data_livrare` ✅
|
||
6. **Customer** → `customer_name` ✅
|
||
7. **Comanda client** → `com_achiz_client` ✅
|
||
|
||
### Additional Fields (📊 Read but not stored in order_for_labels table)
|
||
8. **Status** → `status` 📊
|
||
9. **End of Quilting** → `end_of_quilting` 📊
|
||
10. **End of sewing** → `end_of_sewing` 📊
|
||
11. **T1** → `t1` 📊 (Quality control stage 1)
|
||
12. **Data inregistrare T1** → `data_inregistrare_t1` 📊
|
||
13. **Numele Complet T1** → `numele_complet_t1` 📊
|
||
14. **T2** → `t2` 📊 (Quality control stage 2)
|
||
15. **Data inregistrare T2** → `data_inregistrare_t2` 📊
|
||
16. **Numele Complet T2** → `numele_complet_t2` 📊
|
||
17. **T3** → `t3` 📊 (Quality control stage 3)
|
||
18. **Data inregistrare T3** → `data_inregistrare_t3` 📊
|
||
19. **Numele Complet T3** → `numele_complet_t3` 📊
|
||
20. **Clasificare** → `clasificare` 📊
|
||
21. **Masina Cusut** → `masina_cusut` 📊
|
||
22. **Tip Masina** → `tip_masina` 📊
|
||
23. **Timp normat total** → `timp_normat_total` 📊
|
||
24. **Data Deschiderii** → `data_deschiderii` 📊
|
||
25. **Model Lb2** → `model_lb2` 📊
|
||
26. **Data Planific.** → `data_planific` 📊
|
||
27. **Numar masina** → `numar_masina` 📊
|
||
28. **Design nr** → `design_nr` 📊
|
||
29. **Needle position** → `needle_position` 📊
|
||
|
||
## Database Schema (order_for_labels)
|
||
|
||
```sql
|
||
CREATE TABLE order_for_labels (
|
||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||
comanda_productie VARCHAR(25) NOT NULL,
|
||
cod_articol VARCHAR(25) NOT NULL,
|
||
descr_com_prod VARCHAR(100),
|
||
cantitate INT,
|
||
data_livrare DATE,
|
||
dimensiune VARCHAR(25),
|
||
com_achiz_client VARCHAR(25),
|
||
nr_linie_com_client INT,
|
||
customer_name VARCHAR(50),
|
||
customer_article_number VARCHAR(25),
|
||
open_for_order VARCHAR(25),
|
||
line_number INT,
|
||
printed_labels INT DEFAULT 0
|
||
);
|
||
```
|
||
|
||
## Validation Rules
|
||
|
||
### Required Fields
|
||
- ✅ `comanda_productie` (Production Order #)
|
||
- ✅ `cod_articol` (Article Code)
|
||
- ✅ `descr_com_prod` (Description)
|
||
- ✅ `cantitate` (Quantity)
|
||
|
||
### Optional Fields
|
||
- `data_livrare` (Delivery Date)
|
||
- `dimensiune` (Dimension)
|
||
- `com_achiz_client` (Customer Order #)
|
||
- `nr_linie_com_client` (Customer Order Line)
|
||
- `customer_name` (Customer Name)
|
||
- `customer_article_number` (Customer Article #)
|
||
- `open_for_order` (Open for Order)
|
||
- `line_number` (Line Number)
|
||
|
||
## Processing Logic
|
||
|
||
1. **Sheet Selection**: Tries Sheet1 → sheet 0 → DataSheet
|
||
2. **Column Normalization**: Converts to lowercase, strips whitespace
|
||
3. **Column Mapping**: Maps Excel columns to database fields
|
||
4. **Row Processing**:
|
||
- Skips empty rows
|
||
- Handles NaN values (converts to empty string)
|
||
- Validates required fields
|
||
- Returns validation errors and warnings
|
||
5. **Data Storage**: Only valid rows with required fields are stored
|
||
|
||
## Sample Data (Row 1)
|
||
|
||
```
|
||
comanda_productie : CP00267043
|
||
cod_articol : PF010147
|
||
descr_com_prod : HUSA STARLINE NEXT X7 90X210
|
||
cantitate : 1
|
||
data_livrare : 2024-03-12
|
||
customer_name : 411_01RECT BED
|
||
com_achiz_client : 379579-1
|
||
status : Inchis
|
||
classificare : HP3D
|
||
masina_cusut : SPECIALA
|
||
```
|
||
|
||
## Upload Functionality
|
||
|
||
**URL**: `/upload_data` (Labels module)
|
||
|
||
**Supported Formats**:
|
||
- CSV (.csv)
|
||
- Excel (.xlsx, .xls)
|
||
|
||
**Process**:
|
||
1. User uploads file
|
||
2. System validates file type
|
||
3. Processes file (CSV or Excel)
|
||
4. Shows preview with validation
|
||
5. User confirms upload
|
||
6. Data inserted into database
|
||
|
||
## Testing
|
||
|
||
```bash
|
||
# Test Excel reading
|
||
cd /srv/quality_app
|
||
python3 << 'EOF'
|
||
import pandas as pd
|
||
df = pd.read_excel("1cc01b8Comenzi Productie (19).xlsx", sheet_name='Sheet1')
|
||
print(f"✅ Read {len(df)} rows × {len(df.columns)} columns")
|
||
print(f"Required fields present: {all(col in df.columns for col in ['Comanda Productie', 'Cod Articol', 'Descriere', 'Cantitate ceruta'])}")
|
||
EOF
|
||
```
|
||
|
||
## Implementation Files
|
||
|
||
- `/srv/quality_app/py_app/app/order_labels.py` - Processing functions
|
||
- `/srv/quality_app/py_app/app/routes.py` - Upload route handler
|
||
- `/srv/quality_app/py_app/app/templates/upload_orders.html` - Upload UI
|
||
|
||
---
|
||
**Status**: ✅ All 29 columns readable and mapped correctly
|
||
**Date**: 2024-11-26
|