Example #1
0
def modules(request):
    print("roles::", request.user.profile.roles,
          type(request.user.profile.roles))
    return_response = {
        'result': [],
        'status': True,
        'message': '',
        'link': '',
        'trial_over': False,
        'expire_message': ''
    }
    company_id = request.user.profile.company_id
    data_list = []
    util = Utils()
    joining_date_status = util.get_login_period(request.user.date_joined)
    user_modules = CompanyModulesMapping.objects.all().select_related(
        "module").filter(company_id=company_id)

    if request.user.profile.company.company_status == 'trial':
        if request.user.profile.is_super_admin and joining_date_status[
                'login_hours'] <= 4 and request.user.profile.activation_key:
            return_response[
                'message'] = 'Activation pending! Your account will expire in ' + str(
                    joining_date_status['login_hours']) + ' hours.'
        elif joining_date_status['left_days'] > 0 and joining_date_status[
                'left_days'] <= 14 and (request.user.is_superuser
                                        or request.user.profile.is_admin):
            return_response[
                'message'] = ' Your free trial will expire in ' + str(
                    joining_date_status['expire_days']) + ' days'
            return_response['link'] = '/price-online/'
        elif joining_date_status['left_days'] == 0 and (
                request.user.is_superuser or request.user.profile.is_admin):
            return_response[
                'message'] = ' Your free trial will expire Today.  '
            return_response['link'] = '/price-online/'
        else:
            if not request.user.profile.is_admin:
                return_response['trial_over'] = False
                return_response['message'] = ''
            else:
                return_response[
                    'message'] = 'Your free trial has been expired.'
                return_response['trial_over'] = False
                return_response['link'] = ''
    elif request.user.profile.company.company_status == 'client':
        user_modules = user_modules.filter(is_installed=True)
    '''if joining_date_status['left_days'] < 0:
        return_response['trial_over'] = True
        if joining_date_status['left_days'] <= 7 and (request.user.is_superuser or request.user.profile.is_admin) and request.user.profile.company.company_status == 'T':
            return_response['message'] = 'Your trial period is now OVER. We will keep your data on ' + str(joining_date_status['data_delete_date']) + '. To continue using our solution you have to '
    '''

    print("user_modules", user_modules)

    if len(user_modules) > 0:
        for user_module in user_modules:
            if user_module.module.slug == 'crm':
                data_list.append({
                    'sort':
                    1,
                    'label':
                    'Contact',
                    'anchor_class':
                    'contact tourist-place-1',
                    'css_class':
                    'icon-contact',
                    'link':
                    '/contact/list/'
                    if not return_response['trial_over'] else ''
                })
                data_list.append({
                    'sort':
                    2,
                    'label':
                    'Calendar',
                    'anchor_class':
                    'calendar',
                    'css_class':
                    'icon-calendar',
                    'link':
                    '/calendar/list/'
                    if not return_response['trial_over'] else ''
                })
            if user_module.module.slug == 'opportunity' and 'ROLE_NO_ACCESS_OPPORTUNITY' not in request.user.profile.roles:
                data_list.append({
                    'sort':
                    3,
                    'label':
                    'Opportunity',
                    'anchor_class':
                    'opportunity',
                    'css_class':
                    'icon-opportunity',
                    'link':
                    '/opportunity/list/'
                    if not return_response['trial_over'] else ''
                })

            if user_module.module.slug == 'sales':
                data_list.append({
                    'sort':
                    4,
                    'label':
                    'Quotations',
                    'anchor_class':
                    'quotations',
                    'css_class':
                    'icon-quotations',
                    'link':
                    '/quotation/list/'
                    if not return_response['trial_over'] else ''
                })
                data_list.append({
                    'sort':
                    5,
                    'label':
                    'Invoice',
                    'anchor_class':
                    'invoice',
                    'css_class':
                    'icon-quotations',
                    'link':
                    '/customer/invoice/list/'
                    if not return_response['trial_over'] else ''
                })

                data_list.append({
                    'sort':
                    6,
                    'label':
                    'Sales',
                    'anchor_class':
                    'sales',
                    'css_class':
                    'icon-sales',
                    'link':
                    '/sales/' if not return_response['trial_over'] else ''
                })

    if request.user.is_superuser or request.user.profile.is_admin:
        data_list.append({
            'sort':
            7,
            'label':
            'Settings',
            'anchor_class':
            'settings',
            'css_class':
            'icon-settings',
            'link':
            '/user/list/' if not return_response['trial_over'] else ''
        })

    try:
        stripe = Stripe.objects.get(company_id=request.user.profile.company_id)
        if stripe and (request.user.is_superuser
                       or request.user.profile.is_admin):
            data_list.append({
                'sort':
                8,
                'label':
                'Apps',
                'anchor_class':
                'apps',
                'css_class':
                'icon-apps',
                'link':
                '/apps/' if not return_response['trial_over'] else ''
            })
    except:
        print("not stripe user")
    data_list = sorted(data_list, key=lambda k: k['sort'])
    return_response['result'] = data_list
    return HttpResponse(json.dumps(return_response),
                        content_type="application/json")
Example #2
0
def payment_step_2(request):
    company_id = request.user.profile.company_id
    stripe_key = settings.STRIPE_SETTINGS['stripe_key_test_public']
    vat_percent_value = settings.VAT['value']
    vat_percent_percent = settings.VAT['percent']
    util = Utils()
    joining_date_status = util.get_login_period(request.user.date_joined)
    vat_message = None

    if request.method == "POST":
        vat_number = request.POST['vat']
        is_vat_will_charge = request.POST['is_vat_will_charge']
        first_name = request.POST['first_name']
        last_name = request.POST['last_name']
        try:
            user = User.objects.get(pk=request.user.id)
            user.first_name = first_name
            user.last_name = last_name
            user.save()
        except User.DoesNotExist:
            print('User DoesNotExist')

        try:
            company = Company.objects.get(pk=request.user.profile.company_id)
            company.billing_street = request.POST['company-name']
            company.billing_city = request.POST['city']
            company.billing_zip = request.POST['zip']
            company.billing_street = request.POST['street']
            try:
                country = Countries.objects.get(pk=request.POST['country'])
                company.country = country
            except Countries.DoesNotExist:
                print('Countries DoesNotExist')
            company.save()
        except Company.DoesNotExist:
            print('Company DoesNotExist')

        if is_vat_will_charge and vat_number != '':
            return_status = check_vat_valid(vat_number)
            if return_status:
                vat_charge = False
            else:
                vat_charge = True
        elif is_vat_will_charge and vat_number == '':
            vat_charge = True
        else:
            vat_charge = False
        try:
            if request.user.stripe.customer_id:
                return HttpResponseRedirect("/dashboard/")
        except:
            pass
            module_list = []
            total_user = 1
            modules = Modules.objects.all()
            active_user = User.objects.select_related('profile').filter(
                is_active=True).filter(profile__company_id=company_id).count()
            if active_user > 1:
                total_user = active_user

            if modules:
                for module in modules:
                    if module.slug == 'crm':
                        data_app = 'crm'
                        data_requires = 'contact, calendar'
                        icon = 'fa fa-th'
                    if module.slug == 'invoice':
                        data_app = 'invoice'
                        data_requires = ''
                        icon = 'icon-invoice'
                    if module.slug == 'quotations':
                        data_app = 'quotations'
                        data_requires = ''
                        icon = 'icon-quotations'
                    if module.slug == 'opportunity':
                        data_app = 'opportunity'
                        data_requires = ''
                        icon = 'icon-opportunity'
                    module_list.append({
                        'name': module.name,
                        'slug': module.slug,
                        'price': '',
                        'data_app': data_app,
                        'data_requires': data_requires,
                        'icon': icon
                    })
            price = settings.PRICES
            if joining_date_status['expire_days'] in [7, 6, 5, 4, 3]:
                price['discount'] = 40
            elif joining_date_status['expire_days'] in [2, 1]:
                price['discount'] = 50
            else:
                price['discount'] = 25

            #print("vat_message", vat_message)
            return render(
                request, 'web/payment_step_2.html', {
                    'prices': price,
                    'modules': module_list,
                    'total_user': total_user,
                    'stripe_key': stripe_key,
                    'vat_charge': vat_charge,
                    'vat_percent_value': vat_percent_value,
                    'vat_message': vat_message,
                    'vat_percent_percent': vat_percent_percent
                })
    else:
        return redirect('/payment_step_1/')