4.6 KiB
4.6 KiB
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)
- Comanda Productie →
comanda_productie✅ - Cod Articol →
cod_articol✅ - Descriere →
descr_com_prod✅ - Cantitate ceruta →
cantitate✅ - Delivery date →
data_livrare✅ - Customer →
customer_name✅ - Comanda client →
com_achiz_client✅
Additional Fields (📊 Read but not stored in order_for_labels table)
- Status →
status📊 - End of Quilting →
end_of_quilting📊 - End of sewing →
end_of_sewing📊 - T1 →
t1📊 (Quality control stage 1) - Data inregistrare T1 →
data_inregistrare_t1📊 - Numele Complet T1 →
numele_complet_t1📊 - T2 →
t2📊 (Quality control stage 2) - Data inregistrare T2 →
data_inregistrare_t2📊 - Numele Complet T2 →
numele_complet_t2📊 - T3 →
t3📊 (Quality control stage 3) - Data inregistrare T3 →
data_inregistrare_t3📊 - Numele Complet T3 →
numele_complet_t3📊 - Clasificare →
clasificare📊 - Masina Cusut →
masina_cusut📊 - Tip Masina →
tip_masina📊 - Timp normat total →
timp_normat_total📊 - Data Deschiderii →
data_deschiderii📊 - Model Lb2 →
model_lb2📊 - Data Planific. →
data_planific📊 - Numar masina →
numar_masina📊 - Design nr →
design_nr📊 - Needle position →
needle_position📊
Database Schema (order_for_labels)
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
- Sheet Selection: Tries Sheet1 → sheet 0 → DataSheet
- Column Normalization: Converts to lowercase, strips whitespace
- Column Mapping: Maps Excel columns to database fields
- Row Processing:
- Skips empty rows
- Handles NaN values (converts to empty string)
- Validates required fields
- Returns validation errors and warnings
- 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:
- User uploads file
- System validates file type
- Processes file (CSV or Excel)
- Shows preview with validation
- User confirms upload
- Data inserted into database
Testing
# 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