#!/usr/bin/env python3
import csv,sys
from decimal import Decimal, InvalidOperation
path=sys.argv[1] if len(sys.argv)>1 else 'ecommerce_orders.csv'
valid=[]; errors=[]
with open(path,encoding='utf-8') as f:
    for line,row in enumerate(csv.DictReader(f),start=2):
        try:
            if not row.get('order_id'): raise ValueError('order_id vacío')
            amount=Decimal(row['amount'])
            if amount < 0: raise ValueError('amount negativo')
            valid.append(row)
        except (ValueError,InvalidOperation,KeyError) as e:
            errors.append({'line':line,'error':str(e),'row':row})
print(f'valid={len(valid)} invalid={len(errors)}')
for e in errors: print(e)
if errors: sys.exit(2)
