def save_email_template(request): util = Utils() company_id = request.user.profile.company_id template_list = [ 'quotation', 'sales-order', 'invoice', 'contact', 'opportunity' ] for template in template_list: try: email_tmpl_obj = EmailTemplate.objects.get(company_id=company_id, is_deleted=False, module_type=template, is_default=True) except EmailTemplate.DoesNotExist: return_data = util.set_default_template( request.user.profile.language.lower(), template) email_tmpl_obj = EmailTemplate() email_tmpl_obj.name = return_data['template_name'] email_tmpl_obj.module_type = template email_tmpl_obj.subject = return_data['subject'] email_tmpl_obj.description = return_data['description'] email_tmpl_obj.company_id = company_id email_tmpl_obj.user_id = request.user.id email_tmpl_obj.create_by_user_id = request.user.id email_tmpl_obj.update_by_user_id = request.user.id email_tmpl_obj.is_default = True email_tmpl_obj.save()
def format_and_save_contact(user_id, list_data): contact_data_list = [] utils = Utils() for i, d in enumerate(list_data): fields_list = [] contact_data = { 'name': '', 'is_vendor': False, 'is_customer': True, 'contact_type': 'I', 'profile_image': '', 'user_id': user_id, 'company_id': 0, 'parent_id': 0, 'fields': [] } contact_data['profile_image'] = utils.get_profile_image(i) for key in d: value = utils.comma_sep_value(d[key]) if key == 'name': contact_data['name'] = value else: temp_dic = {'id': key, 'value': value} fields_list.append(temp_dic) contact_data['fields'] = fields_list contact_data_list.append(contact_data) save_in_db(contact_data) return True
def editdata(request, uuid): data = {'success': False} utils = Utils() company_id = request.user.profile.company_id user_obj = request.user user_id = user_obj.id try: roles = request.user.profile.roles except roles.DoesNotExist: roles = "ADMIN" try: res = Quotation_template.objects.get(uuid=uuid, company_id=company_id) if res: edit_id = res.id currency = get_currency_name(company_id) products = getTeamplteProduct(edit_id, 'order', company_id, user_id, roles) optionals = getTeamplteProduct(edit_id, 'optional', company_id, user_id, roles) product_tax_return_data = display_tax_calculation(products) expiration_date = datetime.strptime(str( res.expiration_date), "%Y-%m-%d").strftime("%m/%d/%Y") template = { 'id': res.id, 'name': res.name, 'terms_and_codition': res.terms_and_codition, 'expiration_date': (expiration_date), 'expiration_delay': (res.expiration_delay), 'products': products, 'optionals': optionals, 'currency': currency, 'amount_untaxed': res.amount_untaxed, 'tax_amount': utils.round_value(product_tax_return_data['total_tax']), 'multiple_tax': product_tax_return_data['multiple_tax_list'], 'total_amount': res.total_amount, 'opamount_untaxed': res.opamount_untaxed, 'optax_amount': res.optax_amount, 'optotal_amount': res.optotal_amount, } data['template'] = template data['success'] = True except Quotation_template.DoesNotExist: data['success'] = False return HttpResponse(json.dumps(data), content_type="application/json")
def forgot_password(request): return_status = {'msg': ''} util = Utils() if request.method == "POST": #todo write code here email = request.POST.get("email") try: user = User.objects.get(email=email) if user: activation_key = hashlib.sha256( email.encode('utf-8')).hexdigest()[:30] user.profile.activation_key = activation_key user.profile.save() util.reset_password(user, user.profile) return_status[ 'msg'] = 'Your password rest link has been send on your email. ' else: return_status['msg'] = email + ' this email does not exits.' except User.DoesNotExist: return_status['msg'] = email + ' this email does not exits.' return render(request, 'web/auth/forgot_password.html', {'return_status': return_status}) else: return render(request, 'web/auth/forgot_password.html', {'return_status': return_status})
def contact_import_mapping(request): contact_list = {'success': False, 'file': ''} user_id = request.user.id utils = Utils() if request.method == "POST" and request.is_ajax(): if 'file_name' in request.POST: file_name = request.POST['file_name'] fields = json.loads(request.POST['fields']) if fields.count('0') == len(fields): contact_list = { 'success': False, 'file': '', 'msg': 'You did not selected any fields.' } return HttpResponse(json.dumps(contact_list), content_type="application/json") file_path = 'media/user_csv/' + str(request.user.id) uploaded_file_url = settings.BASE_DIR + '/' + file_path + '/' + file_name try: with open(uploaded_file_url, "r", encoding="latin-1") as csvfile: dialect = csv.Sniffer().sniff(csvfile.read(), delimiters=';,') csvfile.seek(0) reader = csv.reader(csvfile, dialect=dialect) file_rows = [] try: for line_number, row in enumerate(reader): if len(row) > 1: temp_dic = {} for idx, col in enumerate(fields): temp_list = [] if col != '0': if row[idx]: if fields[idx] in temp_dic: temp_list.append( utils.comma_sep_value( temp_dic[fields[idx]])) temp_list.append(row[idx]) temp_dic[ fields[idx]] = temp_list else: temp_dic[ fields[idx]] = row[idx] file_rows.append(temp_dic) if len(file_rows) > 0: format_and_save_contact(user_id, file_rows) contact_list['csv_cols'] = file_rows contact_list['success'] = True os.remove(uploaded_file_url) except csv.Error as e: sys.exit('file %s, line %d: %s' % (uploaded_file_url, reader.line_num, e)) except IOError as e: print("I/O error({0}): {1}".format(e.errno, e.strerror)) return HttpResponse(json.dumps(contact_list), content_type="application/json")
def index(request): utils = Utils() user_id = request.user.id data_list = [] result_dic = { 'fields': [], 'companies': [], 'tags': [], 'profile_image': '/static/front/images/profile.png' } contact_tabs = ContactTab.objects.all().filter( user_id=user_id).order_by('display_weight') try: c = Contact.objects.all().filter(user_id=user_id).count() except Contact.DoesNotExist: c = 1 result_dic['profile_image'] = utils.get_profile_image(c) if contact_tabs is not None: for o in contact_tabs: default_data_fields = ContactFields.objects.all().filter( id__in=o.fields).order_by('display_weight') if default_data_fields is not None: field_list = [] for f in default_data_fields: if f.type == 'checkbox' or f.type == 'radio' or f.type == 'dropdown': checkbox = [] for d in f.default_values: default_dic = {'value': d, 'checked': False} checkbox.append(default_dic) default_value = checkbox else: default_value = f.default_values field_dic = { 'id': f.id, 'name': f.label, 'type': f.type, 'display_position': f.display_position, 'default_values': default_value } field_list.append(field_dic) data_list.append({ 'name': o.name, 'id': o.id, 'display_weight': o.display_weight, 'is_default': o.is_default, 'fields': field_list }) result_dic['fields'] = data_list else: default_data_fields = {} return HttpResponse(json.dumps(result_dic), content_type="application/json")
def generate_pdf(request, report_id, report_for): report_id = str(report_id) if report_for == 'quotation' or report_for == 'sales_order': document_header_url = settings.LOCAL_HOST_NAME + 'quotation/document_header/' + report_id + '/' + report_for + '/' document_footer_url = settings.LOCAL_HOST_NAME + 'quotation/document_footer/' + report_id + '/' document_content_url = settings.LOCAL_HOST_NAME+'quotation/document/'+report_id+'/' elif report_for == 'invoice': document_header_url = settings.LOCAL_HOST_NAME + 'invoice/invoice_header/' + report_id + '/' + report_for + '/' document_footer_url = settings.LOCAL_HOST_NAME + 'invoice/invoice_footer/' + report_id + '/' document_content_url = settings.LOCAL_HOST_NAME + 'invoice/document/'+report_id+'/' file_name ='aa.pdf' file_path = settings.MEDIA_ROOT+'/'+file_name util = Utils() return util.generate_pdf_from_url(document_header_url, document_footer_url, document_content_url, file_path)
def company_wizard_step_two(request): company_users = Profile.objects.filter( is_super_admin=False, company_id=request.user.profile.company_id).count() default_template = save_email_template(request) if request.user.profile.is_super_admin and company_users == 0: return_status = { 'msg': None, 'emails': [{ 'name': 'email_1', 'class': '', 'value': '', 'style': '' }, { 'name': 'email_2', 'class': '', 'value': '', 'style': '' }, { 'name': 'email_3', 'class': '', 'value': '', 'style': '' }, { 'name': 'email_4', 'class': '', 'value': '', 'style': '' }, { 'name': 'email_5', 'class': '', 'value': '', 'style': '' }] } language = request.user.profile.company.language company_id = request.user.profile.company_id email_exits = False if request.method == "POST": for index, post_email in enumerate(return_status['emails']): request_email = request.POST.get( return_status['emails'][index]['name']) print("request_email", request_email) if User.objects.filter(username=request_email).exists( ) or User.objects.filter(email=request_email).exists(): return_status['emails'][index][ 'style'] = 'border-color: red;' email_exits = True return_status['emails'][index]['value'] = request_email if not email_exits: for index, post_email in enumerate(return_status['emails']): util = Utils() if return_status['emails'][index]['value']: activation_key = hashlib.sha256( return_status['emails'][index]['value'].encode( 'utf-8')).hexdigest()[:30] new_user = User.objects.create_user( username=return_status['emails'][index]['value'], email=return_status['emails'][index]['value'], is_active=False) new_user.save() default_roles = [ 'ROLE_MANAGE_ALL_CONTACT', 'ROLE_MANAGE_ALL_CALENDAR', 'ROLE_MANAGE_ALL_OPPORTUNITY', 'ROLE_MANAGE_ALL_QUOTATION', 'ROLE_MANAGE_ALL_INVOICE', 'ROLE_MANAGE_ALL_SALES', 'ROLE_ACCESS_RIGHT', 'ROLE_ACCESS_SETTING' ] new_user.profile = Profile( activation_key=activation_key, color=util.get_profile_color(new_user.id), company_id=company_id, user_id=new_user.id, language=language, roles=default_roles) new_user.profile.default_sales_channel = get_company_default_channel( company_id) new_user.profile.save() util.send_activation(new_user, new_user.profile, True) return redirect('/welcome/') return render(request, 'web/auth/company_wizard_step_two.html', {'return_status': return_status}) else: return redirect('/dashboard/')
def register(request): util = Utils() roles = settings.DEFAULT_ROLES return_status = { 'msg': '', 'name': '', 'email': '', 'password': '', 'compnay_name': '', 'phone': '' } if request.method == "POST": first_name = request.POST.get("first_name") last_name = request.POST.get("last_name") name = request.POST.get("email") email = request.POST.get("email") password = request.POST.get("password") compnay_name = request.POST.get("compnay_name") phone = request.POST.get("phone") return_status['first_name'] = first_name return_status['last_name'] = last_name return_status['name'] = name return_status['email'] = email return_status['password'] = password return_status['compnay_name'] = compnay_name return_status['phone'] = phone if not User.objects.filter(username=name).exists(): if not User.objects.filter(email=email).exists(): activation_key = hashlib.sha256( email.encode('utf-8')).hexdigest()[:30] user = User.objects.create_user(first_name=first_name, last_name=last_name, username=name, email=email, password=password, last_login=timezone.now()) user.last_login = timezone.now() if user: company = Company(company=compnay_name, email=email, user=user, phone=phone) company.save() profile = Profile(company=company, is_super_admin=True, is_admin=True, color=settings.ADMIN_COLOR, phone=phone, activation_key=activation_key, user=user, roles=roles) profile.save() insert_default_tags(company, user.id) status = save_default_fields(company, user.id, 'English') initalize_modules(company) util.send_activation(user, profile) if (status): user = authenticate(username=name, password=password) login(request, user) sales_channel = add_default_sales_channel_on_signup( request) default_tax = add_default_product_tax(request) if sales_channel: try: profile = Profile.objects.get(user=user) profile.default_sales_channel = sales_channel profile.save() except Profile.DoesNotExist: print("Profile.DoesNotExist") return HttpResponseRedirect('/company-wizard/') else: return HttpResponseRedirect('/register/') else: return_status['msg'] = 'User could not saved!! ' return render(request, 'web/auth/register.html', {'return_status': return_status}) else: return_status['msg'] = 'Email already exits.' return render(request, 'web/auth/register.html', {'return_status': return_status}) else: return_status['msg'] = 'Username already exits.' return render(request, 'web/auth/register.html', {'return_status': return_status}) else: return render(request, 'web/auth/register.html', {'return_status': return_status})
def user_save(request): user_id = request.user.id return_status = { 'success': False, 'user': 0, 'msg': '', 'activation_link': '', 'redirect_url': '' } if request.method == "POST" and request.is_ajax(): post_user_id = int(request.POST['user_id']) name = request.POST['email'] email = request.POST['email'] password = request.POST['password'] language = request.POST['language'] signature = request.POST['signature'] phone = request.POST['phone'] mobile = request.POST['mobile'] first_name = request.POST['first_name'] last_name = request.POST['last_name'] profile_image = request.POST['profile_image'] roles = ast.literal_eval(request.POST['roles']) user_email = User.objects.filter(email=email) user_name = User.objects.filter(username=name) activation_key = hashlib.sha256(email.encode('utf-8')).hexdigest()[:30] google_client_id = request.POST['google_client_id'] google_client_secret = request.POST['google_client_secret'] user_time_zone = request.POST['user_time_zone'] admin = False staff = False password_changed = False if 'Staff' in roles: staff = True if 'Admin' in roles: admin = True if post_user_id and post_user_id > 0: try: user = User.objects.get(pk=post_user_id) user.username = name user.email = email user.first_name = first_name user.last_name = last_name if password: user.set_password(password) password_changed = True return_status['redirect_url'] = '/login/' user.save() try: if len(roles) > 0: user.profile.roles = roles else: user.profile.roles = user.profile.roles user.profile.language = language user.profile.phone = phone user.profile.mobile = mobile user.profile.is_admin = admin user.profile.profile_image = profile_image user.profile.temp_pass = password user.profile.signature = signature user.profile.google_client_id = google_client_id user.profile.google_client_secret = google_client_secret user.profile.user_time_zone = user_time_zone user.profile.save() return_status['user'] = user.id return_status['success'] = True if password_changed: return_status[ 'msg'] = 'You changed your password that is update successfully, so you will redirect to login page after 5 second.' else: return_status['msg'] = settings.LABELS[ request.user.profile. language]['text_update_sueess'] except Profile.DoesNotExist: return_status['msg'] = 'Profile DoesNotExist' return_status['success'] = False except User.DoesNotExist: return_status['msg'] = 'User DoesNotExist' return_status['success'] = False else: if user_email.exists(): return_status[ 'msg'] = 'user email already exits' #settings.LABELS[request.user.profile.language]['text_email_exits'] elif user_name.exists(): return_status['msg'] = 'username already exits' else: util = Utils() new_user = User.objects.create_user(username=name, email=email, is_active=False, first_name=first_name, last_name=last_name, password=password, last_login=timezone.now()) new_user.save() profile = Profile(activation_key=activation_key, color=util.get_profile_color(new_user.id), is_admin=admin, temp_pass=password, profile_image=profile_image, phone=phone, mobile=mobile, company_id=request.user.profile.company_id, user_id=new_user.id, language=language, roles=roles) profile.default_sales_channel = get_company_default_channel( request.user.profile.company_id) profile.save() return_status['success'] = True return_status['user'] = new_user.id return_status['msg'] = 'User Created Successfully..' return HttpResponse(json.dumps(return_status), content_type='application/json') else: return HttpResponse(return_status)
def get_all_user(request): util = Utils() company_id = request.user.profile.company_id return_status = {'success': False, 'users': [], 'msg': ''} users_list = [] users = Profile.objects.select_related( 'user', 'company').filter(company_id=company_id).order_by('user__id') if users: for u in users: color = u.color print(color) super_admin = False editable = True if u.phone: phone = u.phone else: phone = '-' if u.user.is_superuser: user_type = 'Super Admin' if request.user.is_superuser: editable = True else: editable = False user_is_staff = False super_admin = True elif u.is_admin: user_is_staff = False user_type = settings.LABELS[ request.user.company.language]['text_admin'] else: user_is_staff = True user_type = settings.LABELS[ request.user.company.language]['text_staff'] if u.user.is_active: user_status_text = settings.LABELS[ request.user.company.language]['text_deactivate'] user_status_class = 'glyphicon-ok text-success' else: user_status_text = settings.LABELS[ request.user.company.language]['text_activate'] user_status_class = 'glyphicon-remove text-danger' users_list.append({ 'username': u.user.username, 'email': u.user.email, 'phone': phone, 'language': u.language, 'company': u.company.company, 'permissions': u.roles, 'id': u.user.id, 'is_staff': user_is_staff, 'user_type': user_type, 'super_admin': super_admin, 'status': user_status_text, 'user_status_class': user_status_class, 'editable': editable, 'color': color }) return_status['users'] = users_list return_status['success'] = True return HttpResponse(json.dumps(return_status), content_type='application/json')
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")
def updateTemplate(request): utils = Utils() data = {'success': False} company_id = request.user.profile.company_id user_obj = request.user json_data = json.loads(request.POST['fields']) if 'id' in json_data and json_data['id']: try: tmpl_obj = Quotation_template.objects.get(uuid=json_data['id']) tmpl_obj.name = json_data['name'] tmpl_obj.company_id = company_id tmpl_obj.update_by_user = user_obj if 'tax_amt' in json_data and json_data['tax_amt'] != '': tmpl_obj.tax_amount = int(json_data['tax_amt']) if 'untaxed_amt' in json_data and json_data['untaxed_amt'] != '': tmpl_obj.amount_untaxed = utils.round_value( json_data['untaxed_amt']) if 'tax_amt' in json_data and json_data['tax_amt'] != '': tmpl_obj.total_amount = utils.round_value( json_data['untaxed_amt']) + utils.round_value( json_data['tax_amt']) else: tmpl_obj.total_amount = utils.round_value( json_data['untaxed_amt']) if 'optax_amt' in json_data and json_data['optax_amt'] != '': tmpl_obj.optax_amount = utils.round_value( json_data['optax_amt']) if 'opuntaxed_amt' in json_data and json_data[ 'opuntaxed_amt'] != '': tmpl_obj.opamount_untaxed = utils.round_value( json_data['opuntaxed_amt']) if 'optax_amt' in json_data and json_data['optax_amt'] != '': tmpl_obj.optotal_amount = utils.round_value( json_data['opuntaxed_amt']) + utils.round_value( json_data['optax_amt']) else: tmpl_obj.optotal_amount = utils.round_value( json_data['opuntaxed_amt']) if 'notes' in json_data: tmpl_obj.terms_and_codition = json_data['notes'] if 'expiration_delay' in json_data and json_data[ 'expiration_delay'] != '': tmpl_obj.expiration_delay = json_data['expiration_delay'] tmpl_obj.expiration_date = datetime.now() + timedelta( days=int(json_data['expiration_delay'])) tmpl_obj.save() if tmpl_obj.id > 0: Quotation_template_record.objects.filter( quotation_template=tmpl_obj, company_id=company_id).delete() addProduct(json_data['products'], 'order', tmpl_obj, user_obj, company_id) addProduct(json_data['optional_products'], 'optional', tmpl_obj, user_obj, company_id) data['success'] = True data['uuid'] = json_data['id'] except Quotation_template.DoesNotExist: data['success'] = False return HttpResponse(json.dumps(data), content_type="application/json")
def getTeamplteProduct(id, line_type, company_id, user_id, roles): utils = Utils() pro_record_list = [] q_t_r_dict = Quotation_template_record.objects.filter( quotation_template_id=id, line_type=line_type).order_by('id') if len(q_t_r_dict) > 0: for o in q_t_r_dict: uom_name = '' product_name = 'Product Deleted' tax_id = '' tax_name = '' tax_computation = None tax_value = None json_uom = [] product_uuid = None if o.product_uom is not None: uom_name = o.product_uom.name if o.product_uom.category_id is not None: json_uom = getUOMforProduct(o.product_uom.category_id, company_id) if o.Product is not None: product_name = o.Product.internal_reference if o.Product.internal_reference is not None else '' product_name = product_name + ' ' product_name = product_name + o.Product.template_name if o.Product.template_name is not None else '' if o.Taxes is not None: tax_id = o.Taxes.id tax_name = o.Taxes.name tax_computation = o.Taxes.computation tax_value = o.Taxes.value if o.Product_id: product_uuid = str(o.Product.uuid) pro_record_list.append({ 'record_id': o.id, 'uuid': product_uuid, 'Product': o.Product_id, 'product_name': product_name, 'product_description': o.discription, 'product_qty': o.product_qty, 'product_uom': o.product_uom_id, 'product_uom_name': uom_name, 'product_tax_id': tax_id, 'product_tax_name': tax_name, 'product_tax_value': utils.round_value(tax_value), 'product_tax_computation': tax_computation, 'unit_price': utils.round_value(o.unit_price), 'tax_price': utils.round_value(o.tax_price), 'price_subtotal': utils.round_value(o.price_subtotal), 'price_total': utils.round_value(o.price_total), 'price_reduce': utils.round_value(o.price_reduce), 'discount': utils.round_value(o.discount), 'json_uom': json_uom, }) return pro_record_list
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/')
def user_change_status(request): proration_date = int(time.time()) return_status = {'success': False, 'msg': '', 'user_status': ''} company_id = request.user.profile.company_id if request.method == "POST" and request.is_ajax(): user_id = request.POST['user_id'] try: user = User.objects.get(pk=user_id) user.is_active = False if user.is_active else True user.save() if user.is_active: profile = Profile.objects.get(user_id=user_id) profile.activation_key = None profile.save() return_status['user_status'] = settings.LABELS[ request.user.profile.language]['text_activate'] return_status['msg'] = settings.LABELS[ request.user.profile.language]['msg_user_activate'] return_status[ 'user_status_class'] = 'glyphicon-ok text-success' util = Utils() util.send_invitation(request.user.username, user, profile) else: return_status['user_status'] = settings.LABELS[ request.user.profile.language]['text_deactivate'] return_status['msg'] = settings.LABELS[ request.user.profile.language]['msg_user_deactivate'] return_status[ 'user_status_class'] = 'glyphicon-remove text-danger' return_status['success'] = True except User.DoesNotExist: return_status['msg'] = 'User DoesNotExist' total_user = User.objects.select_related('profile').filter( is_active=True).filter(profile__company_id=company_id).count() try: if request.user.stripe.selected_users and request.user.stripe.selected_users < total_user: token = request.user.stripe.token customer_id = request.user.stripe.customer_id plan = request.user.stripe.plan if plan == 'yearly': stripe_plan = 'yearly-user' else: stripe_plan = 'monthly-user' subscription = update_subscription_by_user( customer_id, request.user.stripe.subscription_id, settings.STRIPE_PLANS[stripe_plan], total_user, proration_date) if subscription: amount = 0 if subscription['items']['data']: for item in subscription['items']['data']: amount = amount + item['plan']['amount'] * item[ 'quantity'] Stripe.save_update_stripe(user_id, company_id, token, customer_id, plan, amount, total_user, subscription.id) except: print("no strip account") #customer = create_customer(email, token) return HttpResponse(json.dumps(return_status), content_type='application/json')
def send_message(request): sender_email = request.user.email company_id = request.user.profile.company_id return_status = {'success': False, 'result': []} if request.method == "POST" and request.is_ajax(): send_to = [] contact_ids = [] external_emails = [] internal_recipients = json.loads(request.POST['internal_recipients']) external_recipients = json.loads(request.POST['external_recipients']) if len(external_recipients) > 0: external_emails = external_recipients[-1].split(',') if len(internal_recipients) > 0 and len(external_emails) > 0: for ir in internal_recipients: if ir['email'] not in send_to and validate_email(ir['email']): send_to.append(ir['email']) for extr_email in external_emails: if extr_email not in send_to: send_to.append(extr_email) elif len(internal_recipients) > 0 and len(external_emails) == 0: for ir in internal_recipients: if ir['email'] not in send_to and validate_email(ir['email']): send_to.append(ir['email']) elif len(internal_recipients) == 0 and len(external_emails) > 0: for extr_email in external_recipients: if validate_email(extr_email): send_to.append(extr_email) message_text = request.POST['message_text'] master_id = int(request.POST['master_id']) module_id = int(request.POST['module_id']) module_name = str(request.POST['module_name']) if master_id > 0 and module_id > 0 and module_name !='': message_data ={ 'module_id':module_id, 'master_id':master_id, 'module_name':module_name, 'summary':message_text, 'action':None, 'next_activity':'send_email', 'next_activity_date':None, 'next_activity_reminder':None } message_obj = db_save_message(request, message_data) for email in send_to: contact_data = Contact.get_contact_by_email(email, company_id) if contact_data: contact_ids.append(contact_data.id) else: contact = Contact(name=email, email=email, profile_image=settings.DEFAULT_PROFILE_IMAGE, user_id=request.user.id, user_company_id=request.user.profile.company_id) contact.save() contact_ids.append(contact.id) if len(contact_ids) > 0: for contact in contact_ids: mapping= MessageContactMap(message_id=message_obj.id, contact_id=contact) mapping.save() if len(send_to): util = Utils() util.sent_email_from_messgage(sender_email, send_to, message_text) return_status = {'success': True} return HttpResponse(json.dumps(return_status), content_type="application/json")