from django.core.management.base import BaseCommand
from apps.sales.models import PaymentMode
from apps.business.models import Business


class Command(BaseCommand):
    help = 'Setup default payment modes for all businesses'

    def handle(self, *args, **options):
        payment_modes = [
            {'name': 'CASH', 'is_active': True, 'requires_reference': False},
            {'name': 'MPESA', 'is_active': True, 'requires_reference': True},
            {'name': 'BANK', 'is_active': True, 'requires_reference': True},
            {'name': 'CREDIT', 'is_active': True, 'requires_reference': False},
            {'name': 'CHEQUE', 'is_active': True, 'requires_reference': True},
        ]

        businesses = Business.objects.filter(is_active=True)
        total_created = 0

        for business in businesses:
            for mode_data in payment_modes:
                payment_mode, created = PaymentMode.objects.get_or_create(
                    business=business,
                    name=mode_data['name'],
                    defaults={
                        'is_active': mode_data['is_active'],
                        'requires_reference': mode_data['requires_reference']
                    }
                )
                if created:
                    total_created += 1
                    self.stdout.write(
                        self.style.SUCCESS(
                            f"✓ Created {mode_data['name']} for {business.name}"
                        )
                    )

        self.stdout.write(
            self.style.SUCCESS(
                f"\n✓ Setup complete! Created {total_created} payment modes"
            )
        )