
"""Australian legal compliance utilities"""

def calculate_gst(amount):
    """Calculate GST (10% in Australia)"""
    return float(amount) * 0.10

def calculate_total_with_gst(amount):
    """Calculate total amount including GST"""
    gst = calculate_gst(amount)
    return float(amount) + gst

def calculate_withholding_tax(amount, abn_registered=True, gst_registered=False):
    """
    Calculate withholding tax for contractors
    Based on Australian Tax Office guidelines
    """
    if gst_registered:
        return 0  # No withholding tax for GST registered businesses
    
    if not abn_registered:
        return float(amount) * 0.47  # 47% withholding for no ABN
    
    # Standard withholding for ABN but no GST registration
    return float(amount) * 0.47

def generate_payment_reference():
    """Generate unique payment reference"""
    import uuid
    from datetime import datetime
    
    year = datetime.now().year
    month = datetime.now().month
    unique_id = str(uuid.uuid4())[:8].upper()
    
    return f"PAY{year}{month:02d}-{unique_id}"

def validate_contract_terms(start_date, end_date, amount):
    """Validate contract terms for Fair Work Act compliance"""
    errors = []
    
    # Date validation
    if end_date <= start_date:
        errors.append("End date must be after start date")
    
    # Minimum payment validation (simplified)
    if amount < 100:
        errors.append("Minimum contract value is $100")
    
    # Duration validation
    duration_days = (end_date - start_date).days
    if duration_days > 365:
        errors.append("Contracts over 1 year require additional legal review")
    
    return len(errors) == 0, errors
