def update_or_create_customer_from_order(self, order, mission_instance): buyer_name = order.get("BuyerName") buyer_mail = order.get("BuyerEmail") if buyer_mail is None or buyer_mail == "": return customer_instance = Customer.objects.filter( contact__first_name_last_name=buyer_name, contact__email=buyer_mail).first() if customer_instance is None: contact = Contact(email=buyer_mail, first_name_last_name=buyer_name) contact.save() customer_instance = Customer(contact=contact) customer_instance.save() else: customer_instance.email = buyer_mail customer_instance.first_name_last_name = buyer_name customer_instance.save() if mission_instance.customer is None: mission_instance.customer = customer_instance return customer_instance
def customer_create(request): params = json.loads(request.body.decode("utf-8")) data = {} blacklist = Blacklist.objects.all() for man in blacklist: nameRatio = fuzz.partial_ratio(man.name, params['name']) nationRatio = fuzz.partial_ratio(man.nationality, params['nation']) addrRatio = fuzz.partial_ratio(man.address, params['address']) print(nameRatio, addrRatio, nationRatio) if (nameRatio > 70 or addrRatio > 80 or (nameRatio + nationRatio) > 170): log = AlertLog() log.name = params['name'] log.operate = '開戶' log.reason = '疑似為高風險或黑名單人物' log.save() return common_response(data, message='黑名單人物') try: with transaction.atomic(): distrcit = District.objects.get(id=params['district']['id']) customer = Customer() customer.name = params['name'] customer.roc_id = params['roc_id'] customer.gender = params['gender'] customer.birthday = params['birthday'] customer.cell_phone = params['cell_phone'] customer.address = params['address'] customer.district = distrcit customer.password = get_sha256_value(params['cell_phone']) customer.email = params['email'] customer.save() data['id'] = customer.id # 產生帳戶號碼 code = generate_16_digits_code() exist_codes = [account.code for account in Account.objects.all()] while code in exist_codes: code = generate_16_digits_code() # 新增帳戶 account = Account() account.code = code account.customer = Customer.objects.get(id=customer.id) # 預設第1筆(新台幣) currency_list = Currency.objects.filter(id=1) if len(currency_list) != 0: account.currency = currency_list[0] account.save() return common_response(data) except Exception as e: return common_response(data, message=str(e))
def add_enquiry(request): response = {} response.update({'customer_type_choices':customer_type_choices}) response.update({'company_type_choices':company_type_choices}) response.update({'salutation_choices':salutation_choices}) response.update({'enquiry_choices':enquiry_choices}) response.update({'services':EnquiryService.objects.all()}) if request.method == 'POST': if 'enquiry_id' in request.POST and request.POST['enquiry_id']: enquiry = get_object_or_404(Enquiry, enquiry_id=request.POST['enquiry_id']) else: enquiry = None # initialize customer object if enquiry: customer = enquiry.customer else: customer = Customer() customer.customer_type = request.POST['customer_type'] if customer.customer_type == 'cmcl': customer.company_name = request.POST.get('company_name', '') customer.company_type = request.POST.get('company_type', '') else: customer.company_name = '' customer.company_type = '' customer.salutation = request.POST['salutation'] customer.contact_person = request.POST['contact_person'] customer.address = request.POST.get('address', '') customer.pincode = request.POST.get('pincode', '') customer.mobile = request.POST.get('mobile', '') customer.landline = request.POST.get('landline', '') customer.email = request.POST.get('email', '') customer.save() # initialize enquiry object if not enquiry: enquiry = Enquiry() enquiry.customer = customer enquiry.enquiry_date = datetime.datetime.strptime(request.POST['enquiry_date'], '%m/%d/%Y') enquiry.status = request.POST.get('status', '') if enquiry.status == 'c': enquiry.amount = request.POST.get('amount', '') enquiry.service_required = get_object_or_404(EnquiryService, id=request.POST['service']) else: enquiry.status_date = datetime.datetime.strptime(request.POST['status_date'], '%m/%d/%Y') enquiry.comments = request.POST.get('comments', '') try: enquiry.save() except: customer.delete() response.update({'error':True}) else: response.update({'success':True}) if enquiry.status == 'c': return HttpResponseRedirect('/enquiry/' + enquiry.enquiry_id + '/contract/') return render(request, 'userprofile/add_enquiry.html', response)
def create_work_order(request): if request.method=='GET': # Get customer form customer_form = CustomerForm() ca_form = AddressForm() work_order_form = WorkOrderForm() vehicle_form = VehicleForm() try: parts_list = Part.objects.all() except Part.DoesNotExist: parts_list = [] return render(request, 'workorder/create_work_order.html', {'customer_form' : customer_form, 'ca_form': ca_form, 'vehicle_form' : vehicle_form, 'work_order_form' : work_order_form, 'parts' : parts_list}) elif request.method=='POST': if request.POST['c-first-name'] != '': # Returning Customer query_vehicle = int(request.POST['vehicle_id']) query_first_name = request.POST['first_name'] query_last_name = request.POST['last_name'] try: c = Customer.objects.get(first_name=query_first_name, last_name=query_last_name) except Customer.DoesNotExist: HttpResponse('Error querying customer') if query_vehicle is not -1: try: v = Vehicle.objects.get(pk=query_vehicle) except Vehicle.DoesNotExist: HttpResponse('Error querying vehicle') else: #New Vehicle v = Vehicle(license_plate=request.POST['license_plate'], make=request.POST['make'], model=request.POST['model'], vin = request.POST['vin'], year = request.POST['year']) v.save() c.vehicle.add(v) #Work Order w = WorkOrder() w.odometer = request.POST['odometer'] w.date_created = timezone.now() w.problem_description = request.POST['problem_description'] w.estimate_initial = 0 w.estimate_revision = 0 w.amount_paid = 0 w.customer = c w.status = 'Assigned' w.vehicle = v w.employee = Employee.objects.get(user=request.user) w.save() service_list = request.POST.getlist('service_type') for service in service_list: selected_service = ServiceType.objects.get(pk=int(service)) w.service_type.add(selected_service) w.estimate_initial = w.estimate_initial + selected_service.cost w.estimate_revision = w.estimate_initial w.save() work_orders = WorkOrder.objects.filter(employee=w.employee) employee = Employee.objects.get(user=request.user) return render(request, 'employee/employee_home.html', {'user': request.user, 'employee': employee, 'work_orders' : work_orders}) else: # New customer c = Customer() c.first_name = request.POST['first_name'] c.middle_initial = request.POST['middle_initial'] c.last_name = request.POST['last_name'] c.email = request.POST['email'] # Customer Address ca = CustomerAddress() ca.address = request.POST['address'] ca.city = request.POST['city'] ca.state = request.POST['state'] ca.save() c.address = ca c.save() # Vehicle v = Vehicle() v.license_plate = request.POST['license_plate'] v.make = request.POST['make'] v.model = request.POST['model'] v.vin = request.POST['vin'] v.year = request.POST['year'] v.save() c.vehicle.add(v) # Work Order w = WorkOrder() w.odometer = request.POST['odometer'] w.date_created = timezone.now() w.problem_description = request.POST['problem_description'] w.estimate_initial = 0 w.estimate_revision = 0 w.amount_paid = 0 w.customer = c w.status = 'Assigned' w.vehicle = v w.employee = Employee.objects.get(user=request.user) w.save() service_list = request.POST.getlist('service_type') for service in service_list: selected_service = ServiceType.objects.get(pk=int(service)) w.service_type.add(selected_service) w.estimate_initial = w.estimate_initial + selected_service.cost w.estimate_revision = w.estimate_initial w.save() work_orders = WorkOrder.objects.all() employee = Employee.objects.get(user=request.user) return render(request, 'employee/employee_home.html', {'user': request.user, 'employee': employee, 'work_orders' : work_orders})