#!/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)