Пример #1
0
    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
Пример #2
0
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))
Пример #3
0
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)
Пример #4
0
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})