Beispiel #1
0
def enrollment(request,customer_id):

    customer_obj = models.Customer.objects.get(id=customer_id)
    msgs = {}
    if request.method == "POST":
        enroll_form = forms.EnrollmentForm(request.POST)
        if enroll_form.is_valid():
            msg = '''请将此链接发送给客户进行填写:
                http://localhost:8000/crm/customer/registration/{enroll_obj_id}/{random_str}/'''
            try:
                print("cleandata ",enroll_form.cleaned_data)
                enroll_form.cleaned_data["customer"] = customer_obj
                enroll_obj = models.Enrollment.objects.create(**enroll_form.cleaned_data)
                msgs["msg"] = msg.format(enroll_obj_id=enroll_obj.id)

            except IntegrityError as e :
                enroll_obj = models.Enrollment.objects.get(customer_id=customer_obj.id,
                                                           enrolled_class_id=enroll_form.cleaned_data["enrolled_class"].id)

                if enroll_obj.contract_agreed: #学生已经同意了
                    return redirect("/crm/contract_review/%s/"%enroll_obj.id)

                enroll_form.add_error("__all__","该用户的此条报名信息已存在,不能重复创建")

                random_str = "".join(random.sample(string.ascii_lowercase+string.digits, 8))
                #cache.set(enroll_obj.id, random_str,3000)
                msgs["msg"] = msg.format(enroll_obj_id=enroll_obj.id,random_str=random_str)

    else:
        enroll_form = forms.EnrollmentForm()

    return render(request,"sales/enrollment.html",{"enroll_form":enroll_form,
                                                   "customer_obj":customer_obj,
                                                   "msgs":msgs})
Beispiel #2
0
def contract_audit(request, enrollment_id):
    enrollment_obj = models.StudentEnrollment.objects.get(id=enrollment_id)
    if request.method == 'POST':
        # print(request.POST)
        enrollment_form = forms.EnrollmentForm(instance=enrollment_obj,
                                               data=request.POST)
        if enrollment_form.is_valid():
            enrollment_form.save()
            stu_obj = models.Student.objects.get_or_create(
                customer=enrollment_obj.customer)[0]
            stu_obj.class_grade.add(enrollment_obj.class_grade_id)
            stu_obj.save()
            enrollment_obj.customer.status = 1
            enrollment_obj.save()

            user_obj = User.objects.get_or_create(
                username=enrollment_obj.customer.contact,
                password=make_password('feifan@123', None, 'pbkdf2_sha256'),
                email=enrollment_obj.eamil_address)[0]
            user_profile_obj = models.UserProfile.objects.get_or_create(
                user=user_obj,
                name=enrollment_obj.customer.name,
                student_id=stu_obj.id)[0]
            role_obj = models.Role.objects.get(name='students')
            user_profile_obj.role.add(role_obj)
            user_profile_obj.save()

            send_status = send_qq_mail(user_obj)
            return redirect('kingadmin:table_obj_change', 'crm', 'student',
                            stu_obj.id)
    else:
        customer_form = forms.CustomerForm(instance=enrollment_obj.customer)
        enrollment_form = forms.EnrollmentForm(instance=enrollment_obj)
    return render(request, 'crm/contract_audit.html', locals())
Beispiel #3
0
def enrollment_contract_audit(request, enrollment_id):
    enrollment_obj = models.StudentEnrollment.objects.get(id=enrollment_id)
    if request.method == "POST":
        enrollment_form = forms.EnrollmentForm(instance=enrollment_obj,
                                               data=request.POST)
        customer_form = forms.CustomerForm(instance=enrollment_obj.customer)
        if enrollment_form.is_valid():
            print(enrollment_form.cleaned_data)
            enrollment_form.save()
            # 創建學生,get_or_create()有就取出,無就創建
            stu_obj = models.Student.objects.get_or_create(
                customer=enrollment_obj.customer)[0]
            # print(stu_obj)
            stu_obj.class_grade.add(enrollment_obj.class_grade)
            stu_obj.save()
            # 改成已報名
            enrollment_obj.customer.status = 1
            enrollment_obj.customer.save()
            return redirect("/kingadmin/crm/customerinfo/%s/change/" %
                            enrollment_obj.customer.id)
        else:
            return render(request, "crm/enrollment_contract_audit.html",
                          locals())
    else:
        customer_form = forms.CustomerForm(instance=enrollment_obj.customer)
        enrollment_form = forms.EnrollmentForm(instance=enrollment_obj)
        return render(request, "crm/enrollment_contract_audit.html", locals())
Beispiel #4
0
def contract_audit(request,enrollment_id):
    """
    倒数第二步,审核
    """
    enrollment_obj = models.StudentEnrollment.objects.get(id=enrollment_id)
    audit_status = {'status':"false"}
    if request.GET.get('status'):# ajax操作,获取前端数据,再返回数据给前端
        audit_status['status'] = "true"
        # print("11111111111")
        enrollment_obj.contract_agreed = False #审核驳回,设置contract_agreed为false,返回链接再发给学员重新填写
        enrollment_obj.save()
        return HttpResponse(json.dumps(audit_status))
    if request.method == "POST": # 表单提交
        # print(request.POST)
        enrollment_form = forms.EnrollmentForm(instance=enrollment_obj,data=request.POST)
        if enrollment_form.is_valid():
            enrollment_form.save()
            # stu_obj = models.Student.objects.get_or_create(customer=enrollment_obj.customer)[0]
            # stu_obj.class_grades.add(enrollment_obj.class_grade_id)
            # stu_obj.save()
            # enrollment_obj.customer.status = 1
            # enrollment_obj.customer.save()
            enrollment_obj.contract_approved_date = datetime.datetime.now()
            enrollment_obj.contract_approved = True
            enrollment_obj.save()
            return redirect("/crm/stu_Payment/%s"%enrollment_obj.id)
    else:
        customer_form = forms.CustomerForm(instance=enrollment_obj.customer)
        enrollment_form = forms.EnrollmentForm(instance=enrollment_obj)
    return render(request,"crm/contract_audit.html", locals())
Beispiel #5
0
def enrollment(request,customer_id):

    customer_obj = models.Customer.objects.get(id = customer_id)#拿到该用户
    msgs = {}
    enroll_form = forms.EnrollmentForm()
    if request.method =='POST':
        enroll_form = forms.EnrollmentForm(request.POST)
        if enroll_form.is_valid():
            msg = '''请将此链接发送给客户进行填写:
                http://localhost:8001/crm/customer/registration/{enroll_obj_id}/{random_str}/'''
            try:
                enroll_form.cleaned_data["customer"] = customer_obj  # 将用户信息单独加到form里面,因为只能给当前用户报名,不能临时切换成其他用户
                enroll_obj = models.Enrollment.objects.create(**enroll_form.cleaned_data)
                msgs["msg"] = msg.format(enroll_obj_id=enroll_obj.id)#创建成功后,把连接给用户,让其上传照片什么的

            except IntegrityError as e:  # 此错误是因为联合唯一错误,说明此用户已经报了该课程了
                enroll_obj = models.Enrollment.objects.get(customer_id=customer_obj.id,
                                                           enrolled_class_id=enroll_form.cleaned_data[
                                                               "enrolled_class"].id)
                # 拿到该用户
                enroll_form.add_error("__all__", "该用户的此条报名信息已存在,不能重复创建")

                random_str = "".join(random.sample(string.ascii_lowercase + string.digits, 8))
                cache.set(enroll_obj.id, random_str,3000)#给enroll_obj.id设置一个cache,值为random_str,
                # 超时时间为3000s,这样用户报名的网址就每次都不一样
                msgs["msg"] = msg.format(enroll_obj_id=enroll_obj.id, random_str=random_str)

    return render(request,'sales/enrollment.html',{'enroll_form':enroll_form,
                                                   'customer_obj':customer_obj,
                                                   'msgs':msgs})
Beispiel #6
0
def enrollment(request,obj_id):
    customer_obj = models.Customer.objects.get(id=obj_id)
    msgs = {}

    if request.method == "POST":
        enroll_form = forms.EnrollmentForm(request.POST)
        if enroll_form.is_valid():

            try :
                enroll_form.cleaned_data["customer"]=customer_obj
                enroll_obj = models.Enrollment.objects.create(**enroll_form.cleaned_data)
            except  IntegrityError as e :
                enroll_form.add_error("__all__","该用户的此条报名信息已存在,不能重复报名!!!")
                enroll_obj = models.Enrollment.objects.get(customer_id=customer_obj.id,
                                                           enrollment_class_id=enroll_form.cleaned_data[
                                                               "enrollment_class"].id)
                if enroll_obj.contract_agreed:  #判断学生是否已同意
                   return  redirect("/crm/contract_review/%s/"%enroll_obj.id)

            # msgs["register_link"].fomat(enroll_obj_id=enroll_obj.id,random_str=random_str)
            random_str =  "".join(random.sample(string.ascii_lowercase+string.digits,8))
            cache.set(enroll_obj.id,random_str,3000)
            msgs["register_link"] = "请将此链接复制给客户 \n  http://127.0.0.1:8000/crm/customers/stu_registration/%s/%s/"%(enroll_obj.id,random_str)

    else:
        enroll_form  = forms.EnrollmentForm()

    return  render(request,"sales/enrollment.html",{"enroll_form":enroll_form,"customer_obj":customer_obj,"msgs":msgs})
Beispiel #7
0
def enrollment_edit(request, enrollment_id):
    obj = models.Enrollment.objects.filter(pk=enrollment_id).first()
    form_obj = forms.EnrollmentForm(instance=obj)
    if request.method == 'POST':
        form_obj = forms.EnrollmentForm(request.POST, instance=obj)
        if form_obj.is_valid():
            form_obj.save()
            return redirect(
                reverse('enrollment_list', kwargs={'customer_id': '0'}))
    return render(request, 'consultant/enrollment_edit.html',
                  {'form_obj': form_obj})
Beispiel #8
0
def enrollment(request, customer_id):
    errors = {}
    customer_obj = models.Customer.objects.get(id=customer_id)
    msgs = {}
    if request.method == "POST":
        enrollment_form = forms.EnrollmentForm(request.POST)
        if enrollment_form.is_valid():
            msg = '''请将此连接发送给客户进行填写:
                http://127.0.0.1:8000/crm/customer/registration/{enrollment_obj_id}/'''
            try:
                enrollment_form.cleaned_data["customer"] = customer_obj
                enrollment_obj = models.Enrollment.objects.create(
                    **enrollment_form.cleaned_data)
                msgs["msg"] = msg.format(enrollment_obj_id=enrollment_obj.id)
                #设置报名链接的超时时间
                # msgs["msg"] = msg.format(enrollment_obj_id =enrollment_obj.id)
                #random_str = "".join(random.sample(string.ascii_lowercase+string.digits,8))
                # cache.set(enrollment_obj.id,random_str,604800)
                # msgs["msg"] = msg.format(enrollment_obj_id =enrollment_obj.id,random_str=random_str)

            except IntegrityError as e:
                enrollment_obj = models.Enrollment.objects.get(
                    customer_id=customer_obj.id,
                    enrolled_class_id=enrollment_form.
                    cleaned_data["enrolled_class"].id)
                msgs["msg"] = msg.format(enrollment_obj_id=enrollment_obj.id)
                if enrollment_obj.contract_agreed and enrollment_obj.contract_approved:
                    errors["error"] = "*此报名已审核,无需重复填写"
                    return render(
                        request, "sales/enrollment.html", {
                            "enrollment_form": enrollment_form,
                            "errors": errors,
                            "customer_obj": customer_obj,
                            "msgs": msgs
                        })
                else:
                    errors["error"] = "*报名信息未完成,请让用户填写"

                if enrollment_obj.contract_agreed:
                    return redirect("/crm/contract_review/%s/" %
                                    enrollment_obj.id)

        else:
            errors["error"] = "*该用户的报名信息已存在"
    else:
        enrollment_form = forms.EnrollmentForm()
    return render(
        request, "sales/enrollment.html", {
            "enrollment_form": enrollment_form,
            "errors": errors,
            "customer_obj": customer_obj,
            "msgs": msgs
        })
Beispiel #9
0
def enrollment_add(request, customer_id):
    obj = models.Enrollment(customer_id=customer_id)
    form_obj = forms.EnrollmentForm(instance=obj)
    if request.method == 'POST':
        form_obj = forms.EnrollmentForm(request.POST, instance=obj)
        if form_obj.is_valid():
            form_obj.save()
            return redirect(
                reverse('enrollment_list', kwargs={'customer_id': '0'}))

    return render(request, 'consultant/enrollment_add.html',
                  {'form_obj': form_obj})
Beispiel #10
0
def enrollment(request, customer_id):
    """报名表"""
    customer_obj = models.Customer.objects.get(id=customer_id)
    msg = {}
    enrollment_obj = {}
    if request.method == "POST":
        msg = {'create_status': False}
        customer_form = forms.EnrollmentForm(request.POST)
        if customer_form.is_valid():
            random_str = ''.join(
                random.sample(string.ascii_lowercase + str(string.digits), 16))
            link = 'http://127.0.0.1:8888/crm/customer/registration/%s/%s/'
            msg['create_status'] = True
            try:
                customer_form.cleaned_data['customer'] = customer_obj
                enrollment_obj = models.Enrollment.objects.create(
                    **customer_form.cleaned_data)
                link = link % (enrollment_obj.id, random_str)
                msg['message'] = '报名信息创建成功,请将报名链接发送给学员:\n <a href="%s">%s</a>' % (
                    link, link)
            except IntegrityError:
                enrollment_obj['enrolled_class'] = request.POST.get(
                    'enrolled_class')
                enrollment_obj['customer'] = customer_obj.id
                enrollment_obj = models.Enrollment.objects.get(
                    **enrollment_obj)
                if enrollment_obj.contract_agreed and not enrollment_obj.contract_approved:
                    return redirect('/crm/contract_review/%s/' %
                                    enrollment_obj.id)
                consultant_id = request.POST.get('consultant')
                link = link % (enrollment_obj.id, random_str)
                if str(enrollment_obj.consultant.id) != consultant_id:
                    msg['message'] = '该条信息已被其他教员注册,如需继续报名,请将报名链接发送给学员:\n <a href="%s">%s</a>' % (
                        link, link)
                else:
                    msg['message'] = '该条报名信息已被注册,如需继续报名,请将报名链接发送给学员:\n  <a href="%s">%s</a>' % (
                        link, link)
            cache.set(str(enrollment_obj.id), random_str, 6000)
    else:
        customer_form = forms.EnrollmentForm()
    return render(
        request, 'sales/enrollment.html', {
            'modelform': customer_form,
            'customer_obj': customer_obj,
            'msg': msg,
            'enrollment_obj': enrollment_obj
        })
Beispiel #11
0
def payment(request, enroll_id):
    enroll_obj = models.Enrollment.objects.get(id=enroll_id)
    enroll_form = forms.EnrollmentForm(instance=enroll_obj)
    print(enroll_form)
    customer_form = forms.CustomerForm(instance=enroll_obj.customer)

    return render(request, "sales/payment.html",
                  {"enroll_obj": enroll_obj, "customer_form": customer_form, "enroll_form": enroll_form})
Beispiel #12
0
def contract_review(request,enroll_id):
    enroll_obj = models.Enrollment.objects.get(id=enroll_id)
    enroll_form = forms.EnrollmentForm(instance=enroll_obj)
    customer_form = forms.CustomerForm(instance=enroll_obj.customer)
    return render(request, 'sales/contract_review.html', {
                                                "enroll_obj":enroll_obj,
                                                "enroll_form":enroll_form,
                                                'customer_form':customer_form})
Beispiel #13
0
def enrollment(request, customer_id=None, edit_id=None):
    obj = models.Enrollment.objects.filter(id=edit_id).first() or models.Enrollment(customer_id=customer_id)
    form_obj = forms.EnrollmentForm(instance=obj)
    if request.method == 'POST':
        form_obj = forms.EnrollmentForm(request.POST, instance=obj)
        if form_obj.is_valid():
            enrollment_obj = form_obj.save()
            # 修改客户的状态
            enrollment_obj.customer.status = 'signed'
            enrollment_obj.customer.save()
            next = request.GET.get('next')
            if next:
                return redirect(next)
            else:
                return redirect(reverse('crm:my_customer'))
    return render(request, 'crm/consultant/enrollment_add_and_edit.html', {
        "form_obj": form_obj,
    })
Beispiel #14
0
def contract_audit(request,enrollment_id):
    enrollment_obj = models.Enrollment.objects.get(id=enrollment_id)
    if request.method == "POST":
        #print(request.POST)
        enrollment_form = forms.EnrollmentForm(instance=enrollment_obj, data=request.POST)
        approved = enrollment_obj.contract_approved#合同是否审核
        if enrollment_form.is_valid():
            enrollment_form.save()
            #stu_obj = models.Student.objects.get_or_create(customer=enrollment_obj.customer)[0]#课程顾问审核通过后,在学员表中创建记录
            #stu_obj.class_grades.add(enrollment_obj.class_grade_id)
            #stu_obj.save()
            enrollment_obj.customer.status = 1 #更新Customer表中status状态为已报名
            enrollment_obj.save()
            return redirect("/myadmin/crm/customer/%s/change/" % enrollment_obj.customer.id)
    else:
        customer_form = forms.CustomerForm(instance=enrollment_obj.customer)
        enrollment_form = forms.EnrollmentForm(instance=enrollment_obj)
    return render(request, "crm/contract_audit.html", locals())
Beispiel #15
0
def enrollment(request, customer_id):
    '''销售填写客户报名班级'''
    enroll_form = forms.EnrollmentForm()

    msgs = {}
    customer_obj = models.Customer.objects.get(id=customer_id)
    random_str = "".join(random.sample(string.ascii_lowercase + string.digits, 8))
    if request.method == "POST":
        enroll_form = forms.EnrollmentForm(request.POST)
        if enroll_form.is_valid():

            msg = '''请将此链接发送给客户填写:
            http://127.0.0.1:8000/crm/customer/registration/{enroll_obj_id}/{random_str}/
            '''
            try:
                enroll_form.cleaned_data['customer'] = customer_obj
                print("cleaned_data:", enroll_form.cleaned_data)
                enroll_obj = models.Enrollment.objects.create(**enroll_form.cleaned_data)

                msgs['msg'] = msg.format(enroll_obj_id=enroll_obj.id, random_str=random_str)
                cache.set(enroll_obj.id, random_str, 20)  # 设置客url的生效时间 为20秒

                # print("obj:", enroll_obj)
            except IntegrityError as e:
                enroll_obj = models.Enrollment.objects.get(customer_id=customer_id, enrolled_class_id=enroll_form.cleaned_data['enrolled_class'].id)
                # print("------>obj", obj)

                if enroll_obj.contract_agreed:  # 学生同意合同
                    return redirect(reverse("contract_review", args=(enroll_obj.id,)))
                    # return redirect("/crm/contract_review/%s/"%enroll_obj.id)



                cache.set(enroll_obj.id, random_str, 20)   # 设置客url的生效时间 为20秒
                msgs['msg'] = msg.format(enroll_obj_id=enroll_obj.id, random_str=random_str)
                enroll_form.add_error("__all__", "该用户信息已经存在")



    return render(request, "sales/enrollment.html", {"enroll_form": enroll_form,
                                                     "customer_obj": customer_obj,
                                                     "msgs": msgs,
                                                     })
Beispiel #16
0
def contract_audit(request, enrollment_id):
    enrollment_obj = models.StudentEnrollment.objects.get(id=enrollment_id)
    if request.method == "POST":
        enrollment_form = forms.EnrollmentForm(instance=enrollment_obj,
                                               data=request.POST)
        if enrollment_form.is_valid():
            enrollment_form.save()
            stu_obj = models.Student.objects.get_or_create(
                customer=enrollment_obj.customer)[0]
            stu_obj.class_grades.add(enrollment_obj.class_grade_id)
            stu_obj.save()
            enrollment_obj.customer.status = 1
            enrollment_obj.save()
            return redirect("/kingadmin/crm/customerinfo/%s/change/" %
                            enrollment_obj.customer_id)
    else:
        customer_form = forms.CustomerForm(instance=enrollment_obj.customer)
        enrollment_form = forms.EnrollmentForm(instance=enrollment_obj)
    return render(request, "crm/contract_audit.html", locals())
Beispiel #17
0
def enrollment(request, customer_id):

    customer_obj = models.Customer.objects.get(id=customer_id)
    msgs = {}
    if request.method == 'POST':
        enroll_form = forms.EnrollmentForm(request.POST)
        if enroll_form.is_valid():
            msg = 'Please send this link to customer: http://127.0.0.1:8000/crm/customer/registration/{enroll_obj_id}/{random_str}'
            random_str = ''.join(
                random.sample(string.ascii_lowercase + string.digits, 8))

            try:
                print('cleaned data', enroll_form.cleaned_data)
                enroll_form.cleaned_data['customer'] = customer_obj
                enroll_obj = models.Enrollment.objects.create(
                    **enroll_form.cleaned_data)
                cache.set(enroll_obj.id, random_str, 3000)
                msgs['msg'] = msg.format(enroll_obj_id=enroll_obj.id,
                                         random_str=random_str)
            except IntegrityError as e:
                enroll_obj = models.Enrollment.objects.get(
                    customer_id=customer_obj.id,
                    enrolled_class_id=enroll_form.
                    cleaned_data['enrolled_class'].id)
                if enroll_obj.contract_agreed:
                    return redirect("/crm/contract_review/%s/" % enroll_obj.id)

                enroll_form.add_error(
                    "__all__",
                    "This customer has already been enrolled in this course.")
                cache.set(enroll_obj.id, random_str, 3000)
                msgs['msg'] = msg.format(enroll_obj_id=enroll_obj.id,
                                         random_str=random_str)
    else:
        enroll_form = forms.EnrollmentForm()
    return render(request, 'sales/enrollment.html', {
        'enroll_form': enroll_form,
        'customer_obj': customer_obj,
        'msgs': msgs
    })
Beispiel #18
0
def enrollment(request, obj_id):
    obj = models.Customer.objects.get(id=obj_id)
    msg = {}
    if request.method == "POST":
        enroll_form = forms.EnrollmentForm(request.POST)
        if enroll_form.is_valid():
            print(enroll_form.cleaned_data)
            message = '''请将此连接发送欸客户:
                            http://127.0.0.1:8080/crm/customer/registration/{enroll_obj_id}/{random_str}'''
            random_str = ''.join(
                random.sample(string.ascii_lowercase + string.digits, 6))
            try:
                enroll_form.cleaned_data["customer"] = obj
                enroll_obj = models.Enrollment.objects.create(
                    **enroll_form.cleaned_data)
                message = message.format(enroll_obj_id=enroll_obj.id,
                                         random_str=random_str)
                msg["msg"] = message
            except IntegrityError as e:
                enroll_obj = models.Enrollment.objects.get(
                    customer_id=obj_id,
                    enrolled_class_id=enroll_form.
                    cleaned_data["enrolled_class"].id)
                if enroll_obj.contract_agreed:
                    return redirect("/crm/registration_confirm/%s/" %
                                    enroll_obj.id)
                enroll_form.add_error("__all__", "该用户已报名此班级")
                message = message.format(enroll_obj_id=enroll_obj.id,
                                         random_str=random_str)
                msg["msg"] = message
            cache.set(enroll_obj.id, random_str, 3000)
    else:
        enroll_form = forms.EnrollmentForm()
    return render(request, "sales/enrollment.html", {
        "form_obj": enroll_form,
        "obj": obj,
        "msg": msg
    })
Beispiel #19
0
def contract_audit(request, enrollment_id):
    # 审核
    enrollment_obj = models.StudentEnrollment.objects.get(id=enrollment_id)
    if request.method == 'POST':
        enrollment_form = forms.EnrollmentForm(instance=enrollment_obj,
                                               data=request.POST)
        if enrollment_form.is_valid():
            enrollment_form.save()

            # 审核后 将学员加入班级
            stu_obj = models.Student.objects.get_or_create(
                customer=enrollment_obj.customer)[0]  # (obj, true/false)
            stu_obj.class_grades.add(enrollment_obj.class_grade_id)
            stu_obj.save()
            enrollment_obj.customer.status = 1  # 修改报名状态
            enrollment_obj.customer.save()
            return redirect("/xadmin/crm/customerinfo/%s/change/" %
                            enrollment_obj.customer.id)
    else:
        customer_form = forms.CustomerForm(instance=enrollment_obj.customer)
        enrollment_form = forms.EnrollmentForm(instance=enrollment_obj)

    return render(request, 'crm/contract_audit.html', locals())
Beispiel #20
0
def enrollment(request, customer_id):
    customer_obj = models.Customer.objects.get(id=customer_id)
    msgs = {}
    if request.method == "POST":
        # msg = '''请将此连接发给客户填写http://127.0.0.1:8000/crm/customer/enrollment/{enroll_obj_id}'''
        enroll_form = forms.EnrollmentForm(request.POST)
        if enroll_form.is_valid():
            msg = '''请将此连接发给客户填写http://127.0.0.1:8000/crm/customer/registration/{enroll_obj_id}/{random_str}/'''
            random_str = ''.join(
                random.sample(string.ascii_lowercase + string.digits, 8))

            try:
                enroll_form.cleaned_data["customer"] = customer_obj
                enroll_obj = models.Enrollment.objects.create(
                    **enroll_form.cleaned_data)
                cache.set(enroll_obj.id, random_str, 3000)
                msgs['msg'] = msg.format(enroll_obj_id=enroll_obj.id,
                                         random_str=random_str)

            except IntegrityError as e:
                enroll_obj = models.Enrollment.objects.get(
                    customer_id=customer_obj.id,
                    enrolled_class_id=enroll_form.
                    cleaned_data["enrolled_class"].id)
                enroll_form.add_error("__all__", "该用户的此条报名信息已存在,不能重复创建")
                # random_str = ''.join(random.sample(string.ascii_lowercase+string.digits,8))
                cache.set(enroll_obj.id, random_str, 3000)
                msgs['msg'] = msg.format(enroll_obj_id=enroll_obj.id,
                                         random_str=random_str)
    else:
        enroll_form = forms.EnrollmentForm()

    return render(request, 'sales/enrollment.html', {
        'enroll_form': enroll_form,
        'customer_obj': customer_obj,
        'msgs': msgs,
    })
Beispiel #21
0
def contract_review(request, enroll_id):
    enroll_obj = models.Enrollment.objects.get(id=enroll_id)  #取对象
    contract_review = request.user.name  #当前登陆人 #合同审核人
    #payment_form=forms.PaymentForm()#生成表单
    enroll_form = forms.EnrollmentForm(instance=enroll_obj)  #报名表对象
    customer_form = forms.CustomerForm(instance=enroll_obj.customer)  #学员的信息
    enrolled_path = '%s/%s/' % (settings.ENROLLED_DATA, enroll_id)  #证件上传路径
    if os.path.exists(enrolled_path):  #判断目录是否存在
        file_list = os.listdir(enrolled_path)  #取目录 下的文件
        imgs_one = file_list[0]  #图片1
        imgs_two = file_list[1]  #图片2
    if request.method == "POST":
        enroll_obj.contract_approved = True  # 审核通过
        enroll_obj.save()  #保存
        enroll = models.Enrollment.objects.filter(id=enroll_id).update(
            contract_review=contract_review)  #合同审核人
        print('审核通过。。。')
        return redirect('/crm/not_audit/')  #跳转到待审核
    return render(request, 'crm/contract_review.html', locals())  #
Beispiel #22
0
def enrollment(request, customer_id):
    """销售为客户报名"""
    customer_obj = models.Customer.objects.filter(id=customer_id).first()  # 获取客户对象
    enrollment_form_obj = forms.EnrollmentForm()  # 报名model_from
    payment_form_obj = forms.PaymentModelForm()  # 缴费model_form
    if request.method == "POST":
        ret = {"status": False, "errors": None, "data": None}
        if request.POST.get("first_step"):
            # print("报名流程第一步!")
            enrollment_form_obj = forms.EnrollmentForm(request.POST)
            if enrollment_form_obj.is_valid():
                try:
                    enrollment_obj = models.Enrollment.objects.create(
                        customer=customer_obj,
                        enrolled_class_id=request.POST.get("enrolled_class"),
                        consultant=customer_obj.consultant,
                    )
                    ret["errors"] = "请将此链接发给客户填写:%s" % get_registration_url(enrollment_obj)
                except Exception as e:
                    enrollment_obj = models.Enrollment.objects.filter(
                        customer=customer_obj,
                        enrolled_class_id=request.POST.get("enrolled_class")
                    ).first()
                    if enrollment_obj.contract_agreed:  # 用户同意合同并填入了个人信息资料,此时销售可以继续第二步操作了
                        customer_obj = models.Customer.objects.filter(id=customer_id).first()  # 获取最新的客户对象
                        ret["data"] = {"identity_photo_list": [], "customer_info": {
                            "name": ["客户姓名", customer_obj.name],
                            "qq_name": ["qq名称", customer_obj.qq_name],
                            "phone": ["手机号", customer_obj.phone],
                            "person_id": ["身份证号", customer_obj.person_id],
                            "contact_email": ["联系邮箱", customer_obj.contact_email],
                        }}  # 第一步操作返回的内容
                        # 客户身份证照片存放地址
                        identity_photo_path = os.path.join(settings.ENROLLED_DATA_DIR, str(enrollment_obj.id))
                        for file_name in os.listdir(identity_photo_path):
                            ret["data"]["identity_photo_list"].append(file_name)
                        ret["status"] = True
                    else:
                        ret["errors"] = "请将此链接发给客户填写:%s" % get_registration_url(enrollment_obj)
            else:
                ret["errors"] = enrollment_form_obj.errors.as_ul()
            return HttpResponse(json.dumps(ret))
        elif request.POST.get("second_step"):
            # print("报名流程第二步!")
            ret["status"] = True
            return HttpResponse(json.dumps(ret))
        elif request.POST.get("third_step"):
            # print("报名流程第三步!")
            models.Enrollment.objects.filter(
                customer_id=request.POST.get("customer_id"),
                enrolled_class_id=request.POST.get("enrolled_class_id")
            ).update(contract_approved=True)
            ret["status"] = True
            return HttpResponse(json.dumps(ret))
        elif request.POST.get("fourth_step"):
            # print("报名流程第四步!")
            class_obj = models.ClassList.objects.filter(id=request.POST.get("enrolled_class_id")).first()  # 获取用户报名的班级
            data = {
                "customer": customer_obj,
                "course": class_obj.course,
                "amount": request.POST.get("amount"),
                "consultant": customer_obj.consultant,
            }
            payment_form_obj = forms.PaymentModelForm(data=data)
            if payment_form_obj.is_valid():
                models.Payment.objects.create(**data)  # 创建缴费记录
                customer_obj.status = 1  # 将客户状态改为已报名
                customer_obj.save()  # 保存客户对象
                ret["status"] = True
            else:
                ret["errors"] = payment_form_obj.errors.as_ul()
            return HttpResponse(json.dumps(ret))
    return render(request, "sales/enrollment.html", {
        "customer_obj": customer_obj,
        "enrollment_form_obj": enrollment_form_obj,
        "payment_form_obj": payment_form_obj,
    })
Beispiel #23
0
def enrollment(request, customer_id):
    msgs = {}  # 错误信息
    customer_obj = models.Customer.objects.get(
        id=customer_id)  # 取到客户信息记录 #返回到页面#报名人
    consultant_obj = models.UserProfile.objects.get(
        id=request.user.id)  # 报名课程顾问

    stmp_mail = {}  # 邮件发送成功
    stmpemail = stmp()  # 实例化发送邮件的功能
    email = request.POST.get('email')  # 让页面POST提交的值,在页面GET后仍然存在显示
    if request.method == "POST":
        enroll_form = forms.EnrollmentForm(request.POST)  # 获取数据
        if enroll_form.is_valid():  # 表单验证

            # ————————50PerfectCRM实现CRM客户报名流程学生合同URL随机码————————
            msg = "/crm/customer/registration/{enroll_obj_id}/{random_str}/ "
            random_str = ''.join(
                random.sample(string.ascii_lowercase + string.digits,
                              8))  # 生成8位随机字符串 #URL使用
            url_str = '''customer/registration/{enroll_obj_id}/{random_str}/'''  # 报名链接
            # ————————50PerfectCRM实现CRM客户报名流程学生合同URL随机码————————

            try:
                enroll_form.cleaned_data[
                    'customer'] = customer_obj  # 添加学员对象 记录 #报名人
                enroll_form.cleaned_data[
                    'consultant'] = consultant_obj  # 报名课程顾问
                enroll_obj = models.Enrollment.objects.create(
                    **enroll_form.cleaned_data)  # 创建记录

                # ————————50PerfectCRM实现CRM客户报名流程学生合同URL随机码————————
                # msgs['msg']=msg.format(enroll_obj_id=enroll_obj.id)#报名记录对应的id,随机字符串,报名链接
                sort_url = enroll_obj.id  # 获取报名表对应的ID
                cache.set(enroll_obj.id, random_str,
                          61000)  # 加入过期时间   #URL使用    # cache缓存
                msgs['msg'] = msg.format(
                    enroll_obj_id=enroll_obj.id,
                    random_str=random_str)  # 报名记录对应的id,随机字符串,报名链接
                url_str = url_str.format(enroll_obj_id=enroll_obj.id,
                                         random_str=random_str)  # 报名链接
                print(url_str)
                # ————————50PerfectCRM实现CRM客户报名流程学生合同URL随机码————————
            except IntegrityError as e:
                # 取到这条记录
                enroll_obj = models.Enrollment.objects.get(
                    customer_id=customer_obj.id,
                    enrolled_class_id=enroll_form.
                    cleaned_data['enrolled_class'].id)

                if enroll_obj.contract_agreed:  #学员已经同意合同,提交了身份证
                    #return redirect('/crm/contract_review/%s/'%enroll_obj.id)#跳转到审核页面
                    return render(request, 'crm/contract_prompt.html',
                                  locals())  #跳转提示页面
                enroll_form.add_error('__all__', '记录已经存在,不能重复创建!')

                # ————————50PerfectCRM实现CRM客户报名流程学生合同URL随机码————————
                # msgs['msg']=msg.format(enroll_obj_id=enroll_obj.id)#报名记录对应的id
                cache.set(enroll_obj.id, random_str,
                          61000)  # 加入过期时间  #URL使用    # cache缓存
                msgs['msg'] = msg.format(enroll_obj_id=enroll_obj.id,
                                         random_str=random_str)  # 报名记录对应的id
                url_str = url_str.format(enroll_obj_id=enroll_obj.id,
                                         random_str=random_str)  # 报名链接
                # ————————50PerfectCRM实现CRM客户报名流程学生合同URL随机码————————

            if email:
                # ————————50PerfectCRM实现CRM客户报名流程学生合同URL随机码————————
                # msg_mail = "/crm/customer/registration/%s" %enroll_obj.id
                msg_mail = "/crm/customer/registration/%s/%s" % (enroll_obj.id,
                                                                 random_str)
                # ————————50PerfectCRM实现CRM客户报名流程学生合同URL随机码————————
                stmpemail.stmps(request, email, msg_mail)  # 发送邮件
                stmp_mail['ok'] = "邮件已发送成功!"

    else:
        enroll_form = forms.EnrollmentForm()  # modelform表单
    return render(request, 'crm/enrollment.html', locals())
Beispiel #24
0
def contract_prompt(request, enroll_id):
    enroll_obj = models.Enrollment.objects.get(id=enroll_id)  #取对象
    enroll_form = forms.EnrollmentForm(instance=enroll_obj)  #报名表对象
    customers_form = forms.CustomerForm(instance=enroll_obj.customer)  #学员的信息
    return render(request, 'crm/contract_prompt.html', locals())