chore: remove obsolete files and scripts with hardcoded credentials

- Delete api/admin.py (dead Flask app, project uses FastAPI)
- Delete test_import_comanda.py (broken Windows paths, references missing SQL)
- Delete scripts/work/ (untracked: hardcoded passwords and API keys)
- Delete api/database-scripts/mapari_sql.sql (one-time migration, already applied)
- Delete api/database-scripts/08_merge_kituri.sql (one-time migration, already applied)
- Delete api/database-scripts/mapari_articole_web_roa.csv (unused seed data)

Kept: 07_drop_procent_pret.sql as reminder to apply column drop migration

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Claude Agent
2026-03-25 22:38:23 +00:00
parent f2bf6805b4
commit af78ee181a
4 changed files with 0 additions and 512 deletions

View File

@@ -1,250 +0,0 @@
"""
Flask Admin Interface pentru Import Comenzi Web → ROA
Gestionează mapările SKU în tabelul ARTICOLE_TERTI
"""
from flask import Flask, jsonify, request, render_template_string
from flask_cors import CORS
from dotenv import load_dotenv
import oracledb
import os
import logging
from datetime import datetime
# Configurare environment
load_dotenv()
# Configurare logging
logging.basicConfig(
level=logging.DEBUG,
format='%(asctime)s | %(levelname)s | %(message)s',
handlers=[
logging.FileHandler('/app/logs/admin.log'),
logging.StreamHandler()
]
)
logger = logging.getLogger(__name__)
# Environment Variables pentru Oracle
user = os.environ['ORACLE_USER']
password = os.environ['ORACLE_PASSWORD']
dsn = os.environ['ORACLE_DSN']
# Oracle client - AUTO-DETECT: thick mode pentru 10g/11g, thin mode pentru 12.1+
force_thin_mode = os.environ.get('FORCE_THIN_MODE', 'false').lower() == 'true'
instantclient_path = os.environ.get('INSTANTCLIENTPATH')
if force_thin_mode:
logger.info(f"FORCE_THIN_MODE=true: Folosind thin mode pentru {dsn} (Oracle 12.1+ required)")
elif instantclient_path:
try:
oracledb.init_oracle_client(lib_dir=instantclient_path)
logger.info(f"Thick mode activat pentru {dsn} (compatibil Oracle 10g/11g/12.1+)")
except Exception as e:
logger.error(f"Eroare thick mode: {e}")
logger.info("Fallback la thin mode - verifică că Oracle DB este 12.1+")
else:
logger.info(f"Thin mode (default) pentru {dsn} - Oracle 12.1+ required")
app = Flask(__name__)
CORS(app)
def start_pool():
"""Inițializează connection pool Oracle"""
try:
pool = oracledb.create_pool(
user=user,
password=password,
dsn=dsn,
min=2,
max=4,
increment=1
)
logger.info(f"Oracle pool creat cu succes pentru {dsn}")
return pool
except Exception as e:
logger.error(f"Eroare creare pool Oracle: {e}")
raise
@app.route('/health')
def health():
"""Health check pentru Docker"""
return jsonify({"status": "ok", "timestamp": datetime.now().isoformat()})
@app.route('/')
def home():
"""Pagina principală admin interface"""
html_template = """
<!DOCTYPE html>
<html>
<head>
<title>GoMag Admin - Mapări SKU</title>
<meta charset="utf-8">
<style>
body { font-family: Arial, sans-serif; margin: 40px; background-color: #f5f5f5; }
.container { max-width: 1200px; margin: 0 auto; background: white; padding: 20px; border-radius: 8px; box-shadow: 0 2px 4px rgba(0,0,0,0.1); }
h1 { color: #333; border-bottom: 3px solid #007bff; padding-bottom: 10px; }
.status { padding: 10px; border-radius: 4px; margin: 10px 0; }
.success { background-color: #d4edda; color: #155724; border: 1px solid #c3e6cb; }
.error { background-color: #f8d7da; color: #721c24; border: 1px solid #f5c6cb; }
.btn { background: #007bff; color: white; padding: 10px 20px; border: none; border-radius: 4px; cursor: pointer; margin: 5px; }
.btn:hover { background: #0056b3; }
.table-container { margin-top: 20px; }
table { width: 100%; border-collapse: collapse; margin-top: 10px; }
th, td { padding: 8px 12px; text-align: left; border-bottom: 1px solid #ddd; }
th { background-color: #f8f9fa; font-weight: bold; }
tr:hover { background-color: #f5f5f5; }
</style>
</head>
<body>
<div class="container">
<h1>🛍️ GoMag Admin - Import Comenzi Web → ROA</h1>
<div id="status-area">
<div class="success">✅ Container Docker activ pe port 5003</div>
<div id="db-status">🔄 Verificare conexiune Oracle...</div>
</div>
<div class="table-container">
<h2>📋 Mapări SKU Active</h2>
<button class="btn" onclick="loadMappings()">🔄 Reîmprospătează</button>
<button class="btn" onclick="testConnection()">🔍 Test Conexiune DB</button>
<div id="mappings-container">
<p>Loading...</p>
</div>
</div>
</div>
<script>
// Test conexiune la load
window.onload = function() {
testConnection();
loadMappings();
}
function testConnection() {
fetch('/test-db')
.then(response => response.json())
.then(data => {
const statusDiv = document.getElementById('db-status');
if (data.success) {
statusDiv.className = 'status success';
statusDiv.innerHTML = '✅ Oracle conectat: ' + data.message;
} else {
statusDiv.className = 'status error';
statusDiv.innerHTML = '❌ Eroare Oracle: ' + data.error;
}
})
.catch(error => {
document.getElementById('db-status').innerHTML = '❌ Eroare fetch: ' + error;
});
}
function loadMappings() {
fetch('/api/mappings')
.then(response => response.json())
.then(data => {
let html = '<table>';
html += '<tr><th>SKU</th><th>CODMAT</th><th>Cantitate ROA</th><th>Procent Preț</th><th>Activ</th><th>Data Creare</th></tr>';
if (data.mappings && data.mappings.length > 0) {
data.mappings.forEach(row => {
const activIcon = row[4] === 1 ? '' : '';
html += `<tr>
<td><strong>${row[0]}</strong></td>
<td>${row[1]}</td>
<td>${row[2]}</td>
<td>${row[3]}%</td>
<td>${activIcon}</td>
<td>${new Date(row[5]).toLocaleDateString()}</td>
</tr>`;
});
} else {
html += '<tr><td colspan="6">Nu există mapări configurate</td></tr>';
}
html += '</table>';
document.getElementById('mappings-container').innerHTML = html;
})
.catch(error => {
document.getElementById('mappings-container').innerHTML = '❌ Eroare: ' + error;
});
}
</script>
</body>
</html>
"""
return render_template_string(html_template)
@app.route('/test-db')
def test_db():
"""Test conexiune Oracle și verificare tabel"""
try:
with pool.acquire() as con:
with con.cursor() as cur:
# Test conexiune de bază
cur.execute("SELECT SYSDATE FROM DUAL")
db_date = cur.fetchone()[0]
# Verificare existență tabel ARTICOLE_TERTI
cur.execute("""
SELECT COUNT(*) FROM USER_TABLES
WHERE TABLE_NAME = 'ARTICOLE_TERTI'
""")
table_exists = cur.fetchone()[0] > 0
if not table_exists:
return jsonify({
"success": False,
"error": "Tabelul ARTICOLE_TERTI nu există. Rulează 01_create_table.sql"
})
# Count records
cur.execute("SELECT COUNT(*) FROM ARTICOLE_TERTI")
record_count = cur.fetchone()[0]
return jsonify({
"success": True,
"message": f"DB Time: {db_date}, Records: {record_count}",
"table_exists": table_exists,
"record_count": record_count
})
except Exception as e:
logger.error(f"Test DB failed: {e}")
return jsonify({"success": False, "error": str(e)})
@app.route('/api/mappings')
def get_mappings():
"""Returnează toate mapările SKU active"""
try:
with pool.acquire() as con:
with con.cursor() as cur:
cur.execute("""
SELECT sku, codmat, cantitate_roa, procent_pret, activ, data_creare
FROM ARTICOLE_TERTI
ORDER BY sku, codmat
""")
mappings = cur.fetchall()
return jsonify({
"success": True,
"mappings": mappings,
"count": len(mappings)
})
except Exception as e:
logger.error(f"Get mappings failed: {e}")
return jsonify({"success": False, "error": str(e)})
# Inițializare pool la startup
try:
pool = start_pool()
logger.info("Admin interface started successfully")
except Exception as e:
logger.error(f"Failed to start admin interface: {e}")
pool = None
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000, debug=True)

View File

@@ -1,69 +0,0 @@
-- ====================================================================
-- Import mapari kituri (seturi cu componente multiple) in ARTICOLE_TERTI
-- Sursa: kituri site.csv
-- Data: 2026-03-20
-- Schema: VENDING (productie)
-- ====================================================================
-- Kit revizie grup Wittenborg 7100
MERGE INTO ARTICOLE_TERTI t USING (SELECT '5002' sku, '2517572' codmat, 3 cantitate_roa FROM DUAL) s ON (t.sku = s.sku AND t.codmat = s.codmat) WHEN MATCHED THEN UPDATE SET t.cantitate_roa = s.cantitate_roa, t.activ = 1, t.sters = 0, t.data_modif = SYSDATE WHEN NOT MATCHED THEN INSERT (sku, codmat, cantitate_roa, activ, sters, data_creare, data_modif, id_util_creare) VALUES (s.sku, s.codmat, s.cantitate_roa, 1, 0, SYSDATE, SYSDATE, -3);
MERGE INTO ARTICOLE_TERTI t USING (SELECT '5002' sku, '252538' codmat, 1 cantitate_roa FROM DUAL) s ON (t.sku = s.sku AND t.codmat = s.codmat) WHEN MATCHED THEN UPDATE SET t.cantitate_roa = s.cantitate_roa, t.activ = 1, t.sters = 0, t.data_modif = SYSDATE WHEN NOT MATCHED THEN INSERT (sku, codmat, cantitate_roa, activ, sters, data_creare, data_modif, id_util_creare) VALUES (s.sku, s.codmat, s.cantitate_roa, 1, 0, SYSDATE, SYSDATE, -3);
MERGE INTO ARTICOLE_TERTI t USING (SELECT '5002' sku, '094594' codmat, 2 cantitate_roa FROM DUAL) s ON (t.sku = s.sku AND t.codmat = s.codmat) WHEN MATCHED THEN UPDATE SET t.cantitate_roa = s.cantitate_roa, t.activ = 1, t.sters = 0, t.data_modif = SYSDATE WHEN NOT MATCHED THEN INSERT (sku, codmat, cantitate_roa, activ, sters, data_creare, data_modif, id_util_creare) VALUES (s.sku, s.codmat, s.cantitate_roa, 1, 0, SYSDATE, SYSDATE, -3);
-- Kit revizie garnituri grup Wittenborg 7100 originale
MERGE INTO ARTICOLE_TERTI t USING (SELECT '5002-2331' sku, '251757' codmat, 3 cantitate_roa FROM DUAL) s ON (t.sku = s.sku AND t.codmat = s.codmat) WHEN MATCHED THEN UPDATE SET t.cantitate_roa = s.cantitate_roa, t.activ = 1, t.sters = 0, t.data_modif = SYSDATE WHEN NOT MATCHED THEN INSERT (sku, codmat, cantitate_roa, activ, sters, data_creare, data_modif, id_util_creare) VALUES (s.sku, s.codmat, s.cantitate_roa, 1, 0, SYSDATE, SYSDATE, -3);
MERGE INTO ARTICOLE_TERTI t USING (SELECT '5002-2331' sku, '252538' codmat, 1 cantitate_roa FROM DUAL) s ON (t.sku = s.sku AND t.codmat = s.codmat) WHEN MATCHED THEN UPDATE SET t.cantitate_roa = s.cantitate_roa, t.activ = 1, t.sters = 0, t.data_modif = SYSDATE WHEN NOT MATCHED THEN INSERT (sku, codmat, cantitate_roa, activ, sters, data_creare, data_modif, id_util_creare) VALUES (s.sku, s.codmat, s.cantitate_roa, 1, 0, SYSDATE, SYSDATE, -3);
MERGE INTO ARTICOLE_TERTI t USING (SELECT '5002-2331' sku, '094594' codmat, 2 cantitate_roa FROM DUAL) s ON (t.sku = s.sku AND t.codmat = s.codmat) WHEN MATCHED THEN UPDATE SET t.cantitate_roa = s.cantitate_roa, t.activ = 1, t.sters = 0, t.data_modif = SYSDATE WHEN NOT MATCHED THEN INSERT (sku, codmat, cantitate_roa, activ, sters, data_creare, data_modif, id_util_creare) VALUES (s.sku, s.codmat, s.cantitate_roa, 1, 0, SYSDATE, SYSDATE, -3);
-- Kit revizie boiler Necta 300cc
MERGE INTO ARTICOLE_TERTI t USING (SELECT '5003' sku, '098701' codmat, 1 cantitate_roa FROM DUAL) s ON (t.sku = s.sku AND t.codmat = s.codmat) WHEN MATCHED THEN UPDATE SET t.cantitate_roa = s.cantitate_roa, t.activ = 1, t.sters = 0, t.data_modif = SYSDATE WHEN NOT MATCHED THEN INSERT (sku, codmat, cantitate_roa, activ, sters, data_creare, data_modif, id_util_creare) VALUES (s.sku, s.codmat, s.cantitate_roa, 1, 0, SYSDATE, SYSDATE, -3);
MERGE INTO ARTICOLE_TERTI t USING (SELECT '5003' sku, '099059' codmat, 2 cantitate_roa FROM DUAL) s ON (t.sku = s.sku AND t.codmat = s.codmat) WHEN MATCHED THEN UPDATE SET t.cantitate_roa = s.cantitate_roa, t.activ = 1, t.sters = 0, t.data_modif = SYSDATE WHEN NOT MATCHED THEN INSERT (sku, codmat, cantitate_roa, activ, sters, data_creare, data_modif, id_util_creare) VALUES (s.sku, s.codmat, s.cantitate_roa, 1, 0, SYSDATE, SYSDATE, -3);
MERGE INTO ARTICOLE_TERTI t USING (SELECT '5003' sku, '254711' codmat, 2 cantitate_roa FROM DUAL) s ON (t.sku = s.sku AND t.codmat = s.codmat) WHEN MATCHED THEN UPDATE SET t.cantitate_roa = s.cantitate_roa, t.activ = 1, t.sters = 0, t.data_modif = SYSDATE WHEN NOT MATCHED THEN INSERT (sku, codmat, cantitate_roa, activ, sters, data_creare, data_modif, id_util_creare) VALUES (s.sku, s.codmat, s.cantitate_roa, 1, 0, SYSDATE, SYSDATE, -3);
MERGE INTO ARTICOLE_TERTI t USING (SELECT '5003' sku, '252538' codmat, 1 cantitate_roa FROM DUAL) s ON (t.sku = s.sku AND t.codmat = s.codmat) WHEN MATCHED THEN UPDATE SET t.cantitate_roa = s.cantitate_roa, t.activ = 1, t.sters = 0, t.data_modif = SYSDATE WHEN NOT MATCHED THEN INSERT (sku, codmat, cantitate_roa, activ, sters, data_creare, data_modif, id_util_creare) VALUES (s.sku, s.codmat, s.cantitate_roa, 1, 0, SYSDATE, SYSDATE, -3);
MERGE INTO ARTICOLE_TERTI t USING (SELECT '5003' sku, '095624' codmat, 1 cantitate_roa FROM DUAL) s ON (t.sku = s.sku AND t.codmat = s.codmat) WHEN MATCHED THEN UPDATE SET t.cantitate_roa = s.cantitate_roa, t.activ = 1, t.sters = 0, t.data_modif = SYSDATE WHEN NOT MATCHED THEN INSERT (sku, codmat, cantitate_roa, activ, sters, data_creare, data_modif, id_util_creare) VALUES (s.sku, s.codmat, s.cantitate_roa, 1, 0, SYSDATE, SYSDATE, -3);
-- Kit revizie garnituri boiler Necta Astro Spazio 600cc
MERGE INTO ARTICOLE_TERTI t USING (SELECT '5004-5988' sku, 'DV099748' codmat, 1 cantitate_roa FROM DUAL) s ON (t.sku = s.sku AND t.codmat = s.codmat) WHEN MATCHED THEN UPDATE SET t.cantitate_roa = s.cantitate_roa, t.activ = 1, t.sters = 0, t.data_modif = SYSDATE WHEN NOT MATCHED THEN INSERT (sku, codmat, cantitate_roa, activ, sters, data_creare, data_modif, id_util_creare) VALUES (s.sku, s.codmat, s.cantitate_roa, 1, 0, SYSDATE, SYSDATE, -3);
MERGE INTO ARTICOLE_TERTI t USING (SELECT '5004-5988' sku, '252538' codmat, 2 cantitate_roa FROM DUAL) s ON (t.sku = s.sku AND t.codmat = s.codmat) WHEN MATCHED THEN UPDATE SET t.cantitate_roa = s.cantitate_roa, t.activ = 1, t.sters = 0, t.data_modif = SYSDATE WHEN NOT MATCHED THEN INSERT (sku, codmat, cantitate_roa, activ, sters, data_creare, data_modif, id_util_creare) VALUES (s.sku, s.codmat, s.cantitate_roa, 1, 0, SYSDATE, SYSDATE, -3);
MERGE INTO ARTICOLE_TERTI t USING (SELECT '5004-5988' sku, '254711' codmat, 2 cantitate_roa FROM DUAL) s ON (t.sku = s.sku AND t.codmat = s.codmat) WHEN MATCHED THEN UPDATE SET t.cantitate_roa = s.cantitate_roa, t.activ = 1, t.sters = 0, t.data_modif = SYSDATE WHEN NOT MATCHED THEN INSERT (sku, codmat, cantitate_roa, activ, sters, data_creare, data_modif, id_util_creare) VALUES (s.sku, s.codmat, s.cantitate_roa, 1, 0, SYSDATE, SYSDATE, -3);
MERGE INTO ARTICOLE_TERTI t USING (SELECT '5004-5988' sku, '095624' codmat, 1 cantitate_roa FROM DUAL) s ON (t.sku = s.sku AND t.codmat = s.codmat) WHEN MATCHED THEN UPDATE SET t.cantitate_roa = s.cantitate_roa, t.activ = 1, t.sters = 0, t.data_modif = SYSDATE WHEN NOT MATCHED THEN INSERT (sku, codmat, cantitate_roa, activ, sters, data_creare, data_modif, id_util_creare) VALUES (s.sku, s.codmat, s.cantitate_roa, 1, 0, SYSDATE, SYSDATE, -3);
-- Kit revizie grup Necta 7gr
MERGE INTO ARTICOLE_TERTI t USING (SELECT '5000' sku, '093167' codmat, 2 cantitate_roa FROM DUAL) s ON (t.sku = s.sku AND t.codmat = s.codmat) WHEN MATCHED THEN UPDATE SET t.cantitate_roa = s.cantitate_roa, t.activ = 1, t.sters = 0, t.data_modif = SYSDATE WHEN NOT MATCHED THEN INSERT (sku, codmat, cantitate_roa, activ, sters, data_creare, data_modif, id_util_creare) VALUES (s.sku, s.codmat, s.cantitate_roa, 1, 0, SYSDATE, SYSDATE, -3);
MERGE INTO ARTICOLE_TERTI t USING (SELECT '5000' sku, '252538' codmat, 1 cantitate_roa FROM DUAL) s ON (t.sku = s.sku AND t.codmat = s.codmat) WHEN MATCHED THEN UPDATE SET t.cantitate_roa = s.cantitate_roa, t.activ = 1, t.sters = 0, t.data_modif = SYSDATE WHEN NOT MATCHED THEN INSERT (sku, codmat, cantitate_roa, activ, sters, data_creare, data_modif, id_util_creare) VALUES (s.sku, s.codmat, s.cantitate_roa, 1, 0, SYSDATE, SYSDATE, -3);
MERGE INTO ARTICOLE_TERTI t USING (SELECT '5000' sku, '094611' codmat, 1 cantitate_roa FROM DUAL) s ON (t.sku = s.sku AND t.codmat = s.codmat) WHEN MATCHED THEN UPDATE SET t.cantitate_roa = s.cantitate_roa, t.activ = 1, t.sters = 0, t.data_modif = SYSDATE WHEN NOT MATCHED THEN INSERT (sku, codmat, cantitate_roa, activ, sters, data_creare, data_modif, id_util_creare) VALUES (s.sku, s.codmat, s.cantitate_roa, 1, 0, SYSDATE, SYSDATE, -3);
-- Kit revizie grup Necta 9gr
MERGE INTO ARTICOLE_TERTI t USING (SELECT '5001' sku, '2517572' codmat, 2 cantitate_roa FROM DUAL) s ON (t.sku = s.sku AND t.codmat = s.codmat) WHEN MATCHED THEN UPDATE SET t.cantitate_roa = s.cantitate_roa, t.activ = 1, t.sters = 0, t.data_modif = SYSDATE WHEN NOT MATCHED THEN INSERT (sku, codmat, cantitate_roa, activ, sters, data_creare, data_modif, id_util_creare) VALUES (s.sku, s.codmat, s.cantitate_roa, 1, 0, SYSDATE, SYSDATE, -3);
MERGE INTO ARTICOLE_TERTI t USING (SELECT '5001' sku, '252538' codmat, 1 cantitate_roa FROM DUAL) s ON (t.sku = s.sku AND t.codmat = s.codmat) WHEN MATCHED THEN UPDATE SET t.cantitate_roa = s.cantitate_roa, t.activ = 1, t.sters = 0, t.data_modif = SYSDATE WHEN NOT MATCHED THEN INSERT (sku, codmat, cantitate_roa, activ, sters, data_creare, data_modif, id_util_creare) VALUES (s.sku, s.codmat, s.cantitate_roa, 1, 0, SYSDATE, SYSDATE, -3);
MERGE INTO ARTICOLE_TERTI t USING (SELECT '5001' sku, '094611' codmat, 1 cantitate_roa FROM DUAL) s ON (t.sku = s.sku AND t.codmat = s.codmat) WHEN MATCHED THEN UPDATE SET t.cantitate_roa = s.cantitate_roa, t.activ = 1, t.sters = 0, t.data_modif = SYSDATE WHEN NOT MATCHED THEN INSERT (sku, codmat, cantitate_roa, activ, sters, data_creare, data_modif, id_util_creare) VALUES (s.sku, s.codmat, s.cantitate_roa, 1, 0, SYSDATE, SYSDATE, -3);
-- Kit butoane selectie zahar Necta Astro Zenith
MERGE INTO ARTICOLE_TERTI t USING (SELECT '0V2071/250159/250158' sku, '0V2071' codmat, 2 cantitate_roa FROM DUAL) s ON (t.sku = s.sku AND t.codmat = s.codmat) WHEN MATCHED THEN UPDATE SET t.cantitate_roa = s.cantitate_roa, t.activ = 1, t.sters = 0, t.data_modif = SYSDATE WHEN NOT MATCHED THEN INSERT (sku, codmat, cantitate_roa, activ, sters, data_creare, data_modif, id_util_creare) VALUES (s.sku, s.codmat, s.cantitate_roa, 1, 0, SYSDATE, SYSDATE, -3);
MERGE INTO ARTICOLE_TERTI t USING (SELECT '0V2071/250159/250158' sku, '250158' codmat, 2 cantitate_roa FROM DUAL) s ON (t.sku = s.sku AND t.codmat = s.codmat) WHEN MATCHED THEN UPDATE SET t.cantitate_roa = s.cantitate_roa, t.activ = 1, t.sters = 0, t.data_modif = SYSDATE WHEN NOT MATCHED THEN INSERT (sku, codmat, cantitate_roa, activ, sters, data_creare, data_modif, id_util_creare) VALUES (s.sku, s.codmat, s.cantitate_roa, 1, 0, SYSDATE, SYSDATE, -3);
MERGE INTO ARTICOLE_TERTI t USING (SELECT '0V2071/250159/250158' sku, '250159' codmat, 2 cantitate_roa FROM DUAL) s ON (t.sku = s.sku AND t.codmat = s.codmat) WHEN MATCHED THEN UPDATE SET t.cantitate_roa = s.cantitate_roa, t.activ = 1, t.sters = 0, t.data_modif = SYSDATE WHEN NOT MATCHED THEN INSERT (sku, codmat, cantitate_roa, activ, sters, data_creare, data_modif, id_util_creare) VALUES (s.sku, s.codmat, s.cantitate_roa, 1, 0, SYSDATE, SYSDATE, -3);
-- Kit revizie grup Necta Opera/9100 D38
MERGE INTO ARTICOLE_TERTI t USING (SELECT '5008890' sku, '252538' codmat, 1 cantitate_roa FROM DUAL) s ON (t.sku = s.sku AND t.codmat = s.codmat) WHEN MATCHED THEN UPDATE SET t.cantitate_roa = s.cantitate_roa, t.activ = 1, t.sters = 0, t.data_modif = SYSDATE WHEN NOT MATCHED THEN INSERT (sku, codmat, cantitate_roa, activ, sters, data_creare, data_modif, id_util_creare) VALUES (s.sku, s.codmat, s.cantitate_roa, 1, 0, SYSDATE, SYSDATE, -3);
MERGE INTO ARTICOLE_TERTI t USING (SELECT '5008890' sku, '094611' codmat, 2 cantitate_roa FROM DUAL) s ON (t.sku = s.sku AND t.codmat = s.codmat) WHEN MATCHED THEN UPDATE SET t.cantitate_roa = s.cantitate_roa, t.activ = 1, t.sters = 0, t.data_modif = SYSDATE WHEN NOT MATCHED THEN INSERT (sku, codmat, cantitate_roa, activ, sters, data_creare, data_modif, id_util_creare) VALUES (s.sku, s.codmat, s.cantitate_roa, 1, 0, SYSDATE, SYSDATE, -3);
MERGE INTO ARTICOLE_TERTI t USING (SELECT '5008890' sku, '093167' codmat, 2 cantitate_roa FROM DUAL) s ON (t.sku = s.sku AND t.codmat = s.codmat) WHEN MATCHED THEN UPDATE SET t.cantitate_roa = s.cantitate_roa, t.activ = 1, t.sters = 0, t.data_modif = SYSDATE WHEN NOT MATCHED THEN INSERT (sku, codmat, cantitate_roa, activ, sters, data_creare, data_modif, id_util_creare) VALUES (s.sku, s.codmat, s.cantitate_roa, 1, 0, SYSDATE, SYSDATE, -3);
-- Kit revizie grup Necta Opera/9100 D46
MERGE INTO ARTICOLE_TERTI t USING (SELECT 'VM515' sku, '251757' codmat, 2 cantitate_roa FROM DUAL) s ON (t.sku = s.sku AND t.codmat = s.codmat) WHEN MATCHED THEN UPDATE SET t.cantitate_roa = s.cantitate_roa, t.activ = 1, t.sters = 0, t.data_modif = SYSDATE WHEN NOT MATCHED THEN INSERT (sku, codmat, cantitate_roa, activ, sters, data_creare, data_modif, id_util_creare) VALUES (s.sku, s.codmat, s.cantitate_roa, 1, 0, SYSDATE, SYSDATE, -3);
MERGE INTO ARTICOLE_TERTI t USING (SELECT 'VM515' sku, '252538' codmat, 1 cantitate_roa FROM DUAL) s ON (t.sku = s.sku AND t.codmat = s.codmat) WHEN MATCHED THEN UPDATE SET t.cantitate_roa = s.cantitate_roa, t.activ = 1, t.sters = 0, t.data_modif = SYSDATE WHEN NOT MATCHED THEN INSERT (sku, codmat, cantitate_roa, activ, sters, data_creare, data_modif, id_util_creare) VALUES (s.sku, s.codmat, s.cantitate_roa, 1, 0, SYSDATE, SYSDATE, -3);
MERGE INTO ARTICOLE_TERTI t USING (SELECT 'VM515' sku, '094611' codmat, 2 cantitate_roa FROM DUAL) s ON (t.sku = s.sku AND t.codmat = s.codmat) WHEN MATCHED THEN UPDATE SET t.cantitate_roa = s.cantitate_roa, t.activ = 1, t.sters = 0, t.data_modif = SYSDATE WHEN NOT MATCHED THEN INSERT (sku, codmat, cantitate_roa, activ, sters, data_creare, data_modif, id_util_creare) VALUES (s.sku, s.codmat, s.cantitate_roa, 1, 0, SYSDATE, SYSDATE, -3);
MERGE INTO ARTICOLE_TERTI t USING (SELECT 'VM515' sku, '0V0782' codmat, 1 cantitate_roa FROM DUAL) s ON (t.sku = s.sku AND t.codmat = s.codmat) WHEN MATCHED THEN UPDATE SET t.cantitate_roa = s.cantitate_roa, t.activ = 1, t.sters = 0, t.data_modif = SYSDATE WHEN NOT MATCHED THEN INSERT (sku, codmat, cantitate_roa, activ, sters, data_creare, data_modif, id_util_creare) VALUES (s.sku, s.codmat, s.cantitate_roa, 1, 0, SYSDATE, SYSDATE, -3);
MERGE INTO ARTICOLE_TERTI t USING (SELECT 'VM515' sku, '254650' codmat, 1 cantitate_roa FROM DUAL) s ON (t.sku = s.sku AND t.codmat = s.codmat) WHEN MATCHED THEN UPDATE SET t.cantitate_roa = s.cantitate_roa, t.activ = 1, t.sters = 0, t.data_modif = SYSDATE WHEN NOT MATCHED THEN INSERT (sku, codmat, cantitate_roa, activ, sters, data_creare, data_modif, id_util_creare) VALUES (s.sku, s.codmat, s.cantitate_roa, 1, 0, SYSDATE, SYSDATE, -3);
-- Kit revizie boiler Necta/Wittenborg 600cc
MERGE INTO ARTICOLE_TERTI t USING (SELECT '5004' sku, '099059' codmat, 3 cantitate_roa FROM DUAL) s ON (t.sku = s.sku AND t.codmat = s.codmat) WHEN MATCHED THEN UPDATE SET t.cantitate_roa = s.cantitate_roa, t.activ = 1, t.sters = 0, t.data_modif = SYSDATE WHEN NOT MATCHED THEN INSERT (sku, codmat, cantitate_roa, activ, sters, data_creare, data_modif, id_util_creare) VALUES (s.sku, s.codmat, s.cantitate_roa, 1, 0, SYSDATE, SYSDATE, -3);
MERGE INTO ARTICOLE_TERTI t USING (SELECT '5004' sku, 'DV099748' codmat, 1 cantitate_roa FROM DUAL) s ON (t.sku = s.sku AND t.codmat = s.codmat) WHEN MATCHED THEN UPDATE SET t.cantitate_roa = s.cantitate_roa, t.activ = 1, t.sters = 0, t.data_modif = SYSDATE WHEN NOT MATCHED THEN INSERT (sku, codmat, cantitate_roa, activ, sters, data_creare, data_modif, id_util_creare) VALUES (s.sku, s.codmat, s.cantitate_roa, 1, 0, SYSDATE, SYSDATE, -3);
MERGE INTO ARTICOLE_TERTI t USING (SELECT '5004' sku, '254711' codmat, 2 cantitate_roa FROM DUAL) s ON (t.sku = s.sku AND t.codmat = s.codmat) WHEN MATCHED THEN UPDATE SET t.cantitate_roa = s.cantitate_roa, t.activ = 1, t.sters = 0, t.data_modif = SYSDATE WHEN NOT MATCHED THEN INSERT (sku, codmat, cantitate_roa, activ, sters, data_creare, data_modif, id_util_creare) VALUES (s.sku, s.codmat, s.cantitate_roa, 1, 0, SYSDATE, SYSDATE, -3);
MERGE INTO ARTICOLE_TERTI t USING (SELECT '5004' sku, '095624' codmat, 1 cantitate_roa FROM DUAL) s ON (t.sku = s.sku AND t.codmat = s.codmat) WHEN MATCHED THEN UPDATE SET t.cantitate_roa = s.cantitate_roa, t.activ = 1, t.sters = 0, t.data_modif = SYSDATE WHEN NOT MATCHED THEN INSERT (sku, codmat, cantitate_roa, activ, sters, data_creare, data_modif, id_util_creare) VALUES (s.sku, s.codmat, s.cantitate_roa, 1, 0, SYSDATE, SYSDATE, -3);
MERGE INTO ARTICOLE_TERTI t USING (SELECT '5004' sku, '252538' codmat, 1 cantitate_roa FROM DUAL) s ON (t.sku = s.sku AND t.codmat = s.codmat) WHEN MATCHED THEN UPDATE SET t.cantitate_roa = s.cantitate_roa, t.activ = 1, t.sters = 0, t.data_modif = SYSDATE WHEN NOT MATCHED THEN INSERT (sku, codmat, cantitate_roa, activ, sters, data_creare, data_modif, id_util_creare) VALUES (s.sku, s.codmat, s.cantitate_roa, 1, 0, SYSDATE, SYSDATE, -3);
-- Kit revizie rasnita Necta
MERGE INTO ARTICOLE_TERTI t USING (SELECT '5006' sku, '095840' codmat, 2 cantitate_roa FROM DUAL) s ON (t.sku = s.sku AND t.codmat = s.codmat) WHEN MATCHED THEN UPDATE SET t.cantitate_roa = s.cantitate_roa, t.activ = 1, t.sters = 0, t.data_modif = SYSDATE WHEN NOT MATCHED THEN INSERT (sku, codmat, cantitate_roa, activ, sters, data_creare, data_modif, id_util_creare) VALUES (s.sku, s.codmat, s.cantitate_roa, 1, 0, SYSDATE, SYSDATE, -3);
MERGE INTO ARTICOLE_TERTI t USING (SELECT '5006' sku, '0V3229' codmat, 2 cantitate_roa FROM DUAL) s ON (t.sku = s.sku AND t.codmat = s.codmat) WHEN MATCHED THEN UPDATE SET t.cantitate_roa = s.cantitate_roa, t.activ = 1, t.sters = 0, t.data_modif = SYSDATE WHEN NOT MATCHED THEN INSERT (sku, codmat, cantitate_roa, activ, sters, data_creare, data_modif, id_util_creare) VALUES (s.sku, s.codmat, s.cantitate_roa, 1, 0, SYSDATE, SYSDATE, -3);
COMMIT;

View File

@@ -1,79 +0,0 @@
-- =============================================================================
-- Script mapari articole GoMag → ROA
-- Generat: 2026-03-19
-- Baza: vending | Server: vending
-- =============================================================================
-- =============================================
-- PARTEA 1: Update CODMAT in NOM_ARTICOLE
-- =============================================
-- id=2020 LAVAZZA BBE EXPERT GUSTO FORTE — CODMAT lipseste (NULL)
UPDATE nom_articole SET codmat = '8000070028685' WHERE id_articol = 2020 AND codmat IS NULL;
-- id=4345 MY POS SIGMA — lowercase ca sa fie identic cu SKU GoMag
UPDATE nom_articole SET codmat = 'mypossigma' WHERE id_articol = 4345 AND codmat = 'MYPOSSIGMA';
-- =============================================
-- PARTEA 2: Mapari ARTICOLE_TERTI (sku != codmat)
-- =============================================
-- Fresso — EAN-uri diferite de codmat intern
INSERT INTO ARTICOLE_TERTI (sku, codmat, cantitate_roa, activ, sters) VALUES ('5940031026295', 'FRSBRZ1000', 1, 1, 0); -- Fresso Brazilia 1kg
INSERT INTO ARTICOLE_TERTI (sku, codmat, cantitate_roa, activ, sters) VALUES ('5940031062538', 'FRSEVK1000', 1, 1, 0); -- Fresso Evoke blend 1kg
INSERT INTO ARTICOLE_TERTI (sku, codmat, cantitate_roa, activ, sters) VALUES ('5940031026325', 'FRSCLB1000', 1, 1, 0); -- Fresso Columbia Caldas 1kg
INSERT INTO ARTICOLE_TERTI (sku, codmat, cantitate_roa, activ, sters) VALUES ('5940031026356', 'FRSCRA1000', 1, 1, 0); -- Fresso Costa Rica Tarrazu 1kg
INSERT INTO ARTICOLE_TERTI (sku, codmat, cantitate_roa, activ, sters) VALUES ('5940031026462', 'FRSETP250', 1, 1, 0); -- Fresso Etiopia 250g
INSERT INTO ARTICOLE_TERTI (sku, codmat, cantitate_roa, activ, sters) VALUES ('5940031026479', 'FRSETP500', 1, 1, 0); -- Fresso Etiopia 500g
INSERT INTO ARTICOLE_TERTI (sku, codmat, cantitate_roa, activ, sters) VALUES ('5940031026486', 'FRSETP1000', 1, 1, 0); -- Fresso Etiopia 1kg
INSERT INTO ARTICOLE_TERTI (sku, codmat, cantitate_roa, activ, sters) VALUES ('5940031044138', 'FRSEVK250', 1, 1, 0); -- Fresso Evoke blend 250g
INSERT INTO ARTICOLE_TERTI (sku, codmat, cantitate_roa, activ, sters) VALUES ('59400310625381000MI', 'FRSEVK1000', 1, 1, 0); -- Fresso Evoke macinata 1kg
INSERT INTO ARTICOLE_TERTI (sku, codmat, cantitate_roa, activ, sters) VALUES ('FBS500PE', 'FRSBRZ500', 1, 1, 0); -- Fresso Brazilia 500g macinata
INSERT INTO ARTICOLE_TERTI (sku, codmat, cantitate_roa, activ, sters) VALUES ('FEY250PI', 'FRSETP250', 1, 1, 0); -- Fresso Etiopia 250g macinata
-- Tchibo / Lavazza / alte branduri — EAN-uri diferite
INSERT INTO ARTICOLE_TERTI (sku, codmat, cantitate_roa, activ, sters) VALUES ('4006067176463', 'SUISSE500', 1, 1, 0); -- Tchibo Cafe Creme Suisse 500g
INSERT INTO ARTICOLE_TERTI (sku, codmat, cantitate_roa, activ, sters) VALUES ('69891863', '8000070038493', 1, 1, 0); -- Lavazza Crema e Gusto Forte 1Kg
-- Piese / accesorii — coduri diferite
INSERT INTO ARTICOLE_TERTI (sku, codmat, cantitate_roa, activ, sters) VALUES ('65221', '33.7006.5221', 1, 1, 0); -- Pastile curatare Schaerer
INSERT INTO ARTICOLE_TERTI (sku, codmat, cantitate_roa, activ, sters) VALUES ('C7774', 'COL100', 1, 1, 0); -- Eticheta colant cu pret
INSERT INTO ARTICOLE_TERTI (sku, codmat, cantitate_roa, activ, sters) VALUES ('MEICF7900', 'MEICF560', 1, 1, 0); -- Restiera MEI Cashflow CF 7900
-- =============================================
-- PARTEA 3: Mapari ARTICOLE_TERTI — impachetari diferite (cantitate != 1)
-- =============================================
-- Prolait/Regilait/Ristora 500g — ROA tine in KG sau BUC, 500g = 0.5
INSERT INTO ARTICOLE_TERTI (sku, codmat, cantitate_roa, activ, sters) VALUES ('8004990125530', '8004990125530', 0.5, 1, 0); -- Prolait Topping Blue 500g (UM=KG)
INSERT INTO ARTICOLE_TERTI (sku, codmat, cantitate_roa, activ, sters) VALUES ('3043937103250', '3043937103250', 0.5, 1, 0); -- Regilait Topping 2 Green 500g (UM=KG)
INSERT INTO ARTICOLE_TERTI (sku, codmat, cantitate_roa, activ, sters) VALUES ('8004990123680', '8004990123680', 0.5, 1, 0); -- Ristora Top Lapte Granulat 500g
-- Pahare — baxuri mari (1 bax web = N seturi ROA de 100buc)
INSERT INTO ARTICOLE_TERTI (sku, codmat, cantitate_roa, activ, sters) VALUES ('10008ozparis', '10573080', 10, 1, 0); -- Pahar 8oz Paris bax 1000 = 10 seturi
INSERT INTO ARTICOLE_TERTI (sku, codmat, cantitate_roa, activ, sters) VALUES ('100012ozlvzJND', '58912326634', 10, 1, 0); -- Pahar 12oz Lavazza JND bax 1000 = 10 seturi
INSERT INTO ARTICOLE_TERTI (sku, codmat, cantitate_roa, activ, sters) VALUES ('589123214745675', '8OZLRLP', 10, 1, 0); -- Pahar 8oz Lavazza RLP bax 1000 = 10 seturi
INSERT INTO ARTICOLE_TERTI (sku, codmat, cantitate_roa, activ, sters) VALUES ('10008ozTchibo', '58', 10, 1, 0); -- Pahar 8oz Tchibo bax 1000 = 10 seturi
INSERT INTO ARTICOLE_TERTI (sku, codmat, cantitate_roa, activ, sters) VALUES ('10008ozBlueJND', '105712338826', 10, 1, 0); -- Pahar 8oz Albastru JND bax 1000 = 10 seturi
INSERT INTO ARTICOLE_TERTI (sku, codmat, cantitate_roa, activ, sters) VALUES ('30006ozLavazza', '169', 30, 1, 0); -- Pahar 6oz Lavazza RLP bax 3000 = 30 seturi
INSERT INTO ARTICOLE_TERTI (sku, codmat, cantitate_roa, activ, sters) VALUES ('30007ozLavazza', '1655455', 30, 1, 0); -- Pahar 7oz Lavazza RLP bax 3000 = 30 seturi
INSERT INTO ARTICOLE_TERTI (sku, codmat, cantitate_roa, activ, sters) VALUES ('22507ozLavazza', '51', 22.5, 1, 0); -- Pahar 7oz Lavazza SIBA bax 2250 = 22.5 seturi
-- Pahare — ambalaje mici (50buc = 0.5 set de 100)
INSERT INTO ARTICOLE_TERTI (sku, codmat, cantitate_roa, activ, sters) VALUES ('5891232122239', '8OZLRLP', 0.5, 1, 0); -- Pahar 8oz Albastru RLP 50buc = 0.5 set
INSERT INTO ARTICOLE_TERTI (sku, codmat, cantitate_roa, activ, sters) VALUES ('87872376', '87872376', 0.5, 1, 0); -- Pahar 7oz Lavazza JND 50buc = 0.5 set
INSERT INTO ARTICOLE_TERTI (sku, codmat, cantitate_roa, activ, sters) VALUES ('6ozFloMAZ', '6OZFLOMAZ', 0.5, 1, 0); -- Pahar 6oz Floral MAZ 50buc = 0.5 set
-- Pachet cafea
INSERT INTO ARTICOLE_TERTI (sku, codmat, cantitate_roa, activ, sters) VALUES ('6ktcs', 'SUISSE500', 10, 1, 0); -- Pachet 5kg Tchibo Suisse = 10x500g
COMMIT;
-- =============================================
-- VERIFICARE
-- =============================================
-- SELECT at.sku, at.codmat, na.denumire, na.um, at.cantitate_roa, at.activ
-- FROM ARTICOLE_TERTI at
-- LEFT JOIN nom_articole na ON na.codmat = at.codmat AND na.sters = 0
-- WHERE at.sters = 0
-- ORDER BY at.sku;

View File

@@ -1,114 +0,0 @@
#!/usr/bin/env python3
"""
Test script for updated IMPORT_COMENZI package
Tests the fixed FOR LOOP issue
"""
import os
import sys
import oracledb
from dotenv import load_dotenv
# Load environment variables
load_dotenv('/mnt/e/proiecte/vending/gomag-vending/api/.env')
def test_import_comanda():
"""Test the updated importa_comanda function"""
# Connection parameters
user = os.environ['ORACLE_USER']
password = os.environ['ORACLE_PASSWORD']
dsn = os.environ['ORACLE_DSN']
try:
# Connect to Oracle
print("🔗 Conectare la Oracle...")
with oracledb.connect(user=user, password=password, dsn=dsn) as conn:
with conn.cursor() as cursor:
print("\n📋 Test 1: Recompilare Package PACK_IMPORT_COMENZI")
# Read and execute the updated package
with open('/mnt/e/proiecte/vending/gomag-vending/api/database-scripts/04_import_comenzi.sql', 'r') as f:
sql_script = f.read()
cursor.execute(sql_script)
print("✅ Package recompiled successfully")
print("\n📋 Test 2: Import comandă completă cu multiple articole")
# Test data - comandă cu 2 articole (CAFE100 + SET01)
test_json = '''[
{"sku": "CAFE100", "cantitate": 2, "pret": 50.00},
{"sku": "SET01", "cantitate": 1, "pret": 120.00}
]'''
test_partner_id = 878 # Partner din teste anterioare
test_order_num = "TEST-MULTI-" + str(int(os.time()))
# Call importa_comanda
cursor.execute("""
SELECT PACK_IMPORT_COMENZI.importa_comanda_web(
:p_nr_comanda_ext,
SYSDATE,
:p_id_partener,
:p_json_articole,
NULL,
'Test import multiple articole'
) AS id_comanda FROM dual
""", {
'p_nr_comanda_ext': test_order_num,
'p_id_partener': test_partner_id,
'p_json_articole': test_json
})
result = cursor.fetchone()
if result and result[0] > 0:
comanda_id = result[0]
print(f"✅ Comandă importată cu succes! ID: {comanda_id}")
# Verifică articolele adăugate
cursor.execute("""
SELECT ca.id_articol, na.codmat, ca.cantitate, ca.pret
FROM comenzi_articole ca
JOIN nom_articole na ON na.id_articol = ca.id_articol
WHERE ca.id_comanda = :id_comanda
ORDER BY ca.id_articol
""", {'id_comanda': comanda_id})
articole = cursor.fetchall()
print(f"\n📦 Articole în comandă (Total: {len(articole)}):")
for art in articole:
print(f" • CODMAT: {art[1]}, Cantitate: {art[2]}, Preț: {art[3]}")
# Expected:
# - CAFFE (din CAFE100: 2 * 10 = 20 bucăți)
# - CAFE-SET (din SET01: 2 * 60% = 72.00)
# - FILT-SET (din SET01: 1 * 40% = 48.00)
print("\n🎯 Expected:")
print(" • CAFFE: 20 bucăți (reîmpachetare 2*10)")
print(" • CAFE-SET: 2 bucăți, preț 36.00 (120*60%/2)")
print(" • FILT-SET: 1 bucăți, preț 48.00 (120*40%/1)")
else:
print("❌ Import eșuat")
# Check for errors
cursor.execute("SELECT PACK_IMPORT_COMENZI.get_last_error() FROM dual")
error = cursor.fetchone()
if error:
print(f"Eroare: {error[0]}")
conn.commit()
print("\n✅ Test completed!")
except Exception as e:
print(f"❌ Eroare: {e}")
return False
return True
if __name__ == "__main__":
import time
os.time = lambda: int(time.time())
success = test_import_comanda()
sys.exit(0 if success else 1)