sync: Auto-sync from ACG-M-L5090 at 2026-02-01 16:23:43

This commit is contained in:
2026-02-01 16:23:43 -07:00
parent b79c47acb9
commit 04a01f0324
26 changed files with 6954 additions and 0 deletions

View File

@@ -0,0 +1,399 @@
#!/usr/bin/env python3
"""
Complete MSP Pricing Calculator
Arizona Computer Guru - GPS + Web/Email Hosting
"""
# ============================================================================
# GPS ENDPOINT MONITORING
# ============================================================================
GPS_TIERS = {
'basic': {
'name': 'GPS-BASIC: Essential Protection',
'price_per_endpoint': 19,
},
'pro': {
'name': 'GPS-PRO: Business Protection (MOST POPULAR)',
'price_per_endpoint': 26,
},
'advanced': {
'name': 'GPS-ADVANCED: Maximum Protection',
'price_per_endpoint': 39,
}
}
EQUIPMENT_PACK = {
'base_price': 25,
'base_devices': 10,
'additional_device_price': 3
}
SUPPORT_PLANS = {
'essential': {'name': 'Essential Support', 'price': 200, 'hours': 2},
'standard': {'name': 'Standard Support (MOST POPULAR)', 'price': 380, 'hours': 4},
'premium': {'name': 'Premium Support', 'price': 540, 'hours': 6},
'priority': {'name': 'Priority Support', 'price': 850, 'hours': 10}
}
# ============================================================================
# WEB HOSTING
# ============================================================================
WEB_HOSTING = {
'starter': {
'name': 'Starter Hosting',
'price': 15,
'storage_gb': 5,
'websites': 1
},
'business': {
'name': 'Business Hosting (MOST POPULAR)',
'price': 35,
'storage_gb': 25,
'websites': 5
},
'commerce': {
'name': 'Commerce Hosting',
'price': 65,
'storage_gb': 50,
'websites': 'unlimited'
}
}
# ============================================================================
# EMAIL HOSTING
# ============================================================================
WHM_EMAIL = {
'base_price_per_mailbox': 2,
'included_storage_gb': 5,
'storage_block_price': 2, # Per 5GB block
'storage_block_size_gb': 5
}
M365_PLANS = {
'basic': {
'name': 'M365 Business Basic',
'price_per_user': 7,
'storage_gb': 50
},
'standard': {
'name': 'M365 Business Standard (MOST POPULAR)',
'price_per_user': 14,
'storage_gb': 50
},
'premium': {
'name': 'M365 Business Premium',
'price_per_user': 24,
'storage_gb': 50
},
'exchange': {
'name': 'Exchange Online Plan 1',
'price_per_user': 5,
'storage_gb': 50
}
}
EMAIL_SECURITY_ADDON = {
'price_per_mailbox': 3,
'name': 'Email Security & Filtering (MailProtector/INKY)'
}
# ============================================================================
# ADD-ON SERVICES
# ============================================================================
ADDONS = {
'dedicated_ip': {'name': 'Dedicated IP', 'price': 5},
'premium_ssl': {'name': 'SSL Certificate (Premium)', 'price': 6.25}, # $75/year / 12
'offsite_backup': {'name': 'Daily Offsite Backup', 'price': 10},
'web_storage_10gb': {'name': 'Additional Web Storage (10GB)', 'price': 5}
}
# ============================================================================
# CALCULATOR FUNCTIONS
# ============================================================================
def calculate_whm_email(mailboxes, storage_gb_per_mailbox=5, include_security=False):
"""
Calculate WHM email hosting costs
Args:
mailboxes: Number of mailboxes
storage_gb_per_mailbox: Storage per mailbox in GB
include_security: Add email security filtering
"""
base_cost = mailboxes * WHM_EMAIL['base_price_per_mailbox']
# Calculate storage blocks needed
if storage_gb_per_mailbox > WHM_EMAIL['included_storage_gb']:
additional_gb = storage_gb_per_mailbox - WHM_EMAIL['included_storage_gb']
blocks_needed = -(-additional_gb // WHM_EMAIL['storage_block_size_gb']) # Ceiling division
storage_cost = mailboxes * blocks_needed * WHM_EMAIL['storage_block_price']
else:
blocks_needed = 0
storage_cost = 0
total_mailbox_cost = base_cost + storage_cost
# Email security
security_cost = mailboxes * EMAIL_SECURITY_ADDON['price_per_mailbox'] if include_security else 0
total_cost = total_mailbox_cost + security_cost
return {
'mailboxes': mailboxes,
'storage_per_mailbox_gb': storage_gb_per_mailbox,
'base_cost': base_cost,
'storage_cost': storage_cost,
'security_cost': security_cost,
'total_cost': total_cost,
'cost_per_mailbox': total_cost / mailboxes if mailboxes > 0 else 0
}
def calculate_m365_email(users, plan='standard'):
"""Calculate Microsoft 365 email costs"""
plan_data = M365_PLANS.get(plan, M365_PLANS['standard'])
return {
'users': users,
'plan': plan_data['name'],
'price_per_user': plan_data['price_per_user'],
'total_cost': users * plan_data['price_per_user'],
'storage_per_user_gb': plan_data['storage_gb']
}
def calculate_web_hosting(tier='business', extra_storage_gb=0):
"""Calculate web hosting costs"""
tier_data = WEB_HOSTING.get(tier, WEB_HOSTING['business'])
# Extra storage in 10GB increments
extra_storage_cost = 0
if extra_storage_gb > 0:
blocks = -(-extra_storage_gb // 10) # Ceiling division
extra_storage_cost = blocks * ADDONS['web_storage_10gb']['price']
return {
'tier': tier_data['name'],
'base_cost': tier_data['price'],
'extra_storage_gb': extra_storage_gb,
'extra_storage_cost': extra_storage_cost,
'total_cost': tier_data['price'] + extra_storage_cost
}
def calculate_complete_quote(
# GPS
gps_endpoints=0,
gps_tier='pro',
equipment_devices=0,
support_plan=None,
# Web Hosting
web_hosting_tier=None,
web_extra_storage_gb=0,
# Email
email_type=None, # 'whm' or 'm365'
email_users=0,
whm_storage_gb=5,
whm_security=False,
m365_plan='standard',
# Add-ons
dedicated_ip=False,
premium_ssl=False,
offsite_backup=False
):
"""
Calculate complete quote including GPS, web hosting, and email
"""
result = {
'gps': None,
'web': None,
'email': None,
'addons': [],
'totals': {}
}
monthly_total = 0
# GPS Monitoring
if gps_endpoints > 0:
from gps_calculator import calculate_gps_quote
gps_quote = calculate_gps_quote(
endpoints=gps_endpoints,
tier=gps_tier,
equipment_devices=equipment_devices,
support_plan=support_plan
)
result['gps'] = gps_quote
monthly_total += gps_quote['totals']['monthly']
# Web Hosting
if web_hosting_tier:
web_quote = calculate_web_hosting(web_hosting_tier, web_extra_storage_gb)
result['web'] = web_quote
monthly_total += web_quote['total_cost']
# Email Hosting
if email_type == 'whm' and email_users > 0:
email_quote = calculate_whm_email(email_users, whm_storage_gb, whm_security)
result['email'] = {'type': 'WHM Email', 'details': email_quote}
monthly_total += email_quote['total_cost']
elif email_type == 'm365' and email_users > 0:
email_quote = calculate_m365_email(email_users, m365_plan)
result['email'] = {'type': 'Microsoft 365', 'details': email_quote}
monthly_total += email_quote['total_cost']
# Add-ons
addon_cost = 0
if dedicated_ip:
result['addons'].append(ADDONS['dedicated_ip'])
addon_cost += ADDONS['dedicated_ip']['price']
if premium_ssl:
result['addons'].append(ADDONS['premium_ssl'])
addon_cost += ADDONS['premium_ssl']['price']
if offsite_backup:
result['addons'].append(ADDONS['offsite_backup'])
addon_cost += ADDONS['offsite_backup']['price']
monthly_total += addon_cost
# Totals
result['totals'] = {
'monthly': monthly_total,
'annual': monthly_total * 12,
'addon_cost': addon_cost
}
return result
def print_complete_quote(quote):
"""Print formatted complete quote"""
print("\n" + "="*70)
print("COMPLETE MSP PRICING QUOTE - ARIZONA COMPUTER GURU")
print("="*70)
# GPS Section
if quote['gps']:
print("\n[GPS ENDPOINT MONITORING & SUPPORT]")
gps = quote['gps']
print(f" {gps['gps']['tier']}")
print(f" {gps['gps']['endpoints']} endpoints × ${gps['gps']['price_per_endpoint']} = ${gps['gps']['monthly_cost']}")
if gps['equipment']['devices'] > 0:
print(f" Equipment Pack: {gps['equipment']['devices']} devices = ${gps['equipment']['monthly_cost']}")
if gps['support']['monthly_cost'] > 0:
print(f" {gps['support']['plan']}: ${gps['support']['monthly_cost']} ({gps['support']['hours_included']} hrs)")
# Web Hosting Section
if quote['web']:
print("\n[WEB HOSTING]")
web = quote['web']
print(f" {web['tier']}: ${web['base_cost']}")
if web['extra_storage_gb'] > 0:
print(f" Extra Storage ({web['extra_storage_gb']}GB): ${web['extra_storage_cost']}")
# Email Section
if quote['email']:
print("\n[EMAIL HOSTING]")
email = quote['email']
print(f" {email['type']}")
if email['type'] == 'WHM Email':
details = email['details']
print(f" {details['mailboxes']} mailboxes × {details['storage_per_mailbox_gb']}GB")
print(f" Base: ${details['base_cost']}")
if details['storage_cost'] > 0:
print(f" Additional Storage: ${details['storage_cost']}")
if details['security_cost'] > 0:
print(f" Security Add-on: ${details['security_cost']}")
else: # M365
details = email['details']
print(f" {details['plan']}")
print(f" {details['users']} users × ${details['price_per_user']} = ${details['total_cost']}")
# Add-ons
if quote['addons']:
print("\n[ADD-ON SERVICES]")
for addon in quote['addons']:
print(f" {addon['name']}: ${addon['price']}")
# Totals
print("\n" + "-"*70)
print(f"MONTHLY TOTAL: ${quote['totals']['monthly']}")
print(f"ANNUAL TOTAL: ${quote['totals']['annual']}")
print("="*70 + "\n")
# ============================================================================
# EXAMPLE USAGE
# ============================================================================
if __name__ == "__main__":
print("\nCOMPLETE MSP PRICING CALCULATOR")
print("Arizona Computer Guru")
print("="*70)
# Example 1: Small Office - GPS + Web + WHM Email
print("\n\nExample 1: Small Office")
print("10 GPS endpoints + Website + 5 WHM email users")
quote1 = calculate_complete_quote(
gps_endpoints=10,
gps_tier='pro',
support_plan='standard',
web_hosting_tier='business',
email_type='whm',
email_users=5,
whm_storage_gb=10,
whm_security=True
)
print_complete_quote(quote1)
# Example 2: Modern Business - GPS + Web + M365
print("\n\nExample 2: Modern Business")
print("22 GPS endpoints + Website + 15 M365 users")
quote2 = calculate_complete_quote(
gps_endpoints=22,
gps_tier='pro',
support_plan='premium',
web_hosting_tier='business',
email_type='m365',
email_users=15,
m365_plan='standard'
)
print_complete_quote(quote2)
# Example 3: E-Commerce Business
print("\n\nExample 3: E-Commerce Business")
print("42 GPS endpoints + Commerce hosting + 20 M365 users + Dedicated IP")
quote3 = calculate_complete_quote(
gps_endpoints=42,
gps_tier='pro',
support_plan='priority',
web_hosting_tier='commerce',
email_type='m365',
email_users=20,
m365_plan='standard',
dedicated_ip=True,
premium_ssl=True
)
print_complete_quote(quote3)
# Example 4: Web + Email Only (No GPS)
print("\n\nExample 4: Web & Email Only")
print("Small business - Website + 8 WHM email users")
quote4 = calculate_complete_quote(
web_hosting_tier='business',
email_type='whm',
email_users=8,
whm_storage_gb=10,
whm_security=True
)
print_complete_quote(quote4)