update
This commit is contained in:
parent
7144caecec
commit
fb80514fa6
Binary file not shown.
Binary file not shown.
@ -1,5 +1,6 @@
|
|||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
from . import models
|
from . import models
|
||||||
|
from django_ledger import models as ledger_models
|
||||||
|
|
||||||
|
|
||||||
admin.site.register(models.Dealer)
|
admin.site.register(models.Dealer)
|
||||||
@ -29,7 +30,7 @@ admin.site.register(models.CarTrim)
|
|||||||
admin.site.register(models.AdditionalServices)
|
admin.site.register(models.AdditionalServices)
|
||||||
admin.site.register(models.Payment)
|
admin.site.register(models.Payment)
|
||||||
admin.site.register(models.VatRate)
|
admin.site.register(models.VatRate)
|
||||||
admin.site.register(models.Customer)
|
admin.site.register(ledger_models.CustomerModel)
|
||||||
admin.site.register(models.Opportunity)
|
admin.site.register(models.Opportunity)
|
||||||
admin.site.register(models.Notification)
|
admin.site.register(models.Notification)
|
||||||
admin.site.register(models.Lead)
|
admin.site.register(models.Lead)
|
||||||
|
|||||||
@ -641,63 +641,21 @@ def create_ledger_vendor(sender, instance, created, **kwargs):
|
|||||||
print(f"VendorModel created for Vendor: {instance.name}")
|
print(f"VendorModel created for Vendor: {instance.name}")
|
||||||
|
|
||||||
|
|
||||||
@receiver(post_save, sender=models.Customer)
|
|
||||||
def create_customer(sender, instance, created, **kwargs):
|
|
||||||
if created:
|
|
||||||
dealer = instance.dealer
|
|
||||||
entity = dealer.entity
|
|
||||||
name = f"{instance.first_name} {instance.middle_name} {instance.last_name}"
|
|
||||||
if entity:
|
|
||||||
entity.create_customer(
|
|
||||||
customer_model_kwargs={
|
|
||||||
"customer_name": name,
|
|
||||||
"address_1": instance.address,
|
|
||||||
"phone": instance.phone_number,
|
|
||||||
"email": instance.email,
|
|
||||||
"sales_tax_rate": 0.15,
|
|
||||||
"active": True,
|
|
||||||
"hidden": False,
|
|
||||||
"additional_info": {},
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
print(f"Customer created: {name}")
|
|
||||||
|
|
||||||
|
|
||||||
@receiver(post_save, sender=models.CustomerModel)
|
@receiver(post_save, sender=models.CustomerModel)
|
||||||
def create_customer_user(sender, instance, created, **kwargs):
|
def create_customer_user(sender, instance, created, **kwargs):
|
||||||
if created:
|
if created:
|
||||||
user = User.objects.create(
|
user = User.objects.create(
|
||||||
username=instance.email,
|
username=instance.email,
|
||||||
email=instance.email,
|
email=instance.email,
|
||||||
is_active=False,
|
first_name=instance.additional_info["customer_info"].get("first_name", ""),
|
||||||
first_name=instance.additional_info.get('first_name',''),
|
last_name=instance.additional_info["customer_info"].get("last_name", ""),
|
||||||
last_name=instance.additional_info.get('last_name','')
|
|
||||||
)
|
)
|
||||||
|
user.set_unusable_password()
|
||||||
user.save()
|
user.save()
|
||||||
instance.user = user
|
instance.user = user
|
||||||
instance.save()
|
instance.save()
|
||||||
|
|
||||||
|
|
||||||
# @receiver(post_save, sender=models.Lead)
|
|
||||||
# def create_customer_from_lead(sender, instance, created, **kwargs):
|
|
||||||
# dealer = instance.dealer
|
|
||||||
# entity = dealer.entity
|
|
||||||
# if created:
|
|
||||||
# customer = entity.create_customer(
|
|
||||||
# customer_model_kwargs={
|
|
||||||
# "customer_name": instance.full_name,
|
|
||||||
# "address_1": instance.address,
|
|
||||||
# "phone": instance.phone_number,
|
|
||||||
# "email": instance.email,
|
|
||||||
# "sales_tax_rate": 0.15,
|
|
||||||
# }
|
|
||||||
# )
|
|
||||||
# instance.customer = customer
|
|
||||||
# instance.save()
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Create Item
|
# Create Item
|
||||||
@receiver(post_save, sender=models.Car)
|
@receiver(post_save, sender=models.Car)
|
||||||
def create_item_model(sender, instance, created, **kwargs):
|
def create_item_model(sender, instance, created, **kwargs):
|
||||||
|
|||||||
@ -1279,37 +1279,55 @@ def add_activity_to_customer(request, pk):
|
|||||||
|
|
||||||
def CustomerCreateView(request):
|
def CustomerCreateView(request):
|
||||||
form = forms.CustomerForm()
|
form = forms.CustomerForm()
|
||||||
|
|
||||||
if request.method == "POST":
|
if request.method == "POST":
|
||||||
|
form = forms.CustomerForm(request.POST)
|
||||||
dealer = get_user_type(request)
|
dealer = get_user_type(request)
|
||||||
if dealer.entity.get_customers().filter(email=request.POST["email"]).exists():
|
|
||||||
messages.error(request, _("Customer with this email already exists."))
|
if form.is_valid():
|
||||||
form = forms.CustomerForm(request.POST)
|
email = form.cleaned_data["email"]
|
||||||
|
|
||||||
|
# Check if customer with this email already exists
|
||||||
|
if dealer.entity.get_customers().filter(email=email).exists():
|
||||||
|
messages.error(request, _("Customer with this email already exists."))
|
||||||
|
else:
|
||||||
|
# Create customer name
|
||||||
|
customer_name = (
|
||||||
|
f"{form.cleaned_data['first_name']} "
|
||||||
|
f"{form.cleaned_data['middle_name']} "
|
||||||
|
f"{form.cleaned_data['last_name']}"
|
||||||
|
)
|
||||||
|
|
||||||
|
# Create customer instance
|
||||||
|
try:
|
||||||
|
customer = dealer.entity.create_customer(
|
||||||
|
commit=False,
|
||||||
|
customer_model_kwargs={
|
||||||
|
"customer_name": customer_name,
|
||||||
|
"address_1": form.cleaned_data["address"],
|
||||||
|
"phone": form.cleaned_data["phone_number"],
|
||||||
|
"email": email,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
customer.additional_info = {
|
||||||
|
"customer_info": {
|
||||||
|
"first_name": form.cleaned_data["first_name"],
|
||||||
|
"middle_name": form.cleaned_data["middle_name"],
|
||||||
|
"last_name": form.cleaned_data["last_name"],
|
||||||
|
},
|
||||||
|
"type": "customer",
|
||||||
|
}
|
||||||
|
customer.save()
|
||||||
|
|
||||||
|
messages.success(request, _("Customer created successfully."))
|
||||||
|
return redirect("customer_list")
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
messages.error(request, _(f"An error occurred: {str(e)}"))
|
||||||
else:
|
else:
|
||||||
customer_dict = {
|
# Form is invalid, show errors
|
||||||
x: request.POST[x] for x in request.POST if x != "csrfmiddlewaretoken"
|
messages.error(request, _("Please correct the errors below."))
|
||||||
}
|
|
||||||
customer_name = (
|
|
||||||
customer_dict["first_name"]
|
|
||||||
+ " "
|
|
||||||
+ customer_dict["middle_name"]
|
|
||||||
+ " "
|
|
||||||
+ customer_dict["last_name"]
|
|
||||||
)
|
|
||||||
instance = dealer.entity.create_customer(
|
|
||||||
customer_model_kwargs={
|
|
||||||
"customer_name": customer_name,
|
|
||||||
"address_1": customer_dict["address"],
|
|
||||||
"phone": customer_dict["phone_number"],
|
|
||||||
"email": customer_dict["email"],
|
|
||||||
}
|
|
||||||
)
|
|
||||||
customer_dict["pk"] = str(instance.pk)
|
|
||||||
instance.additional_info = {}
|
|
||||||
instance.additional_info["customer_info"] = customer_dict
|
|
||||||
instance.additional_info["type"] = "customer"
|
|
||||||
instance.save()
|
|
||||||
messages.success(request, _("Customer created successfully."))
|
|
||||||
return redirect("customer_list")
|
|
||||||
|
|
||||||
return render(request, "customers/customer_form.html", {"form": form})
|
return render(request, "customers/customer_form.html", {"form": form})
|
||||||
|
|
||||||
@ -3100,21 +3118,45 @@ class LeadDetailView(DetailView):
|
|||||||
|
|
||||||
def lead_create(request):
|
def lead_create(request):
|
||||||
form = forms.LeadForm()
|
form = forms.LeadForm()
|
||||||
make = request.GET.get("id_car_make",None)
|
make = request.GET.get("id_car_make", None)
|
||||||
|
|
||||||
if make:
|
if make:
|
||||||
form.fields['id_car_model'].queryset = models.CarModel.objects.filter(id_car_make=int(make))
|
form.fields['id_car_model'].queryset = models.CarModel.objects.filter(id_car_make=int(make))
|
||||||
|
|
||||||
if request.method == "POST":
|
if request.method == "POST":
|
||||||
form = forms.LeadForm(request.POST)
|
form = forms.LeadForm(request.POST)
|
||||||
form.fields['id_car_model'].queryset = models.CarModel.objects.filter(id_car_make=int(request.POST['id_car_make']))
|
|
||||||
|
# Filter car models based on the selected make (for POST requests)
|
||||||
|
if 'id_car_make' in request.POST:
|
||||||
|
form.fields['id_car_model'].queryset = models.CarModel.objects.filter(
|
||||||
|
id_car_make=int(request.POST['id_car_make'])
|
||||||
|
)
|
||||||
|
try:
|
||||||
if form.is_valid():
|
if form.is_valid():
|
||||||
instance = form.save(commit=False)
|
instance = form.save(commit=False)
|
||||||
dealer = get_user_type(request)
|
dealer = get_user_type(request)
|
||||||
instance = form.save(commit=False)
|
|
||||||
instance.dealer = dealer
|
instance.dealer = dealer
|
||||||
|
staff = ""
|
||||||
|
if hasattr(request.user, "staff"):
|
||||||
|
staff = request.user.staff
|
||||||
|
instance.staff = staff
|
||||||
|
|
||||||
|
# creating customer in ledger
|
||||||
|
customer = dealer.entity.create_customer(
|
||||||
|
customer_model_kwargs={
|
||||||
|
"customer_name": instance.full_name,
|
||||||
|
"address_1": instance.address,
|
||||||
|
"phone": instance.phone_number,
|
||||||
|
"email": instance.email,
|
||||||
|
"sales_tax_rate": 0.15,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
instance.customer = customer
|
||||||
instance.save()
|
instance.save()
|
||||||
|
|
||||||
messages.success(request, "Lead created successfully!")
|
messages.success(request, "Lead created successfully!")
|
||||||
return redirect("lead_list")
|
return redirect("lead_list")
|
||||||
|
except Exception as e:
|
||||||
|
messages.error(request, f"Lead was not created ... : {str(e)}")
|
||||||
|
|
||||||
return render(request, "crm/leads/lead_form.html", {"form": form})
|
return render(request, "crm/leads/lead_form.html", {"form": form})
|
||||||
|
|
||||||
@ -3200,17 +3242,17 @@ def lead_convert(request, pk):
|
|||||||
@login_required
|
@login_required
|
||||||
def schedule_lead(request, pk):
|
def schedule_lead(request, pk):
|
||||||
dealer = get_user_type(request)
|
dealer = get_user_type(request)
|
||||||
print(dealer)
|
|
||||||
lead = get_object_or_404(models.Lead, pk=pk)
|
lead = get_object_or_404(models.Lead, pk=pk, dealer=dealer)
|
||||||
if request.method == "POST":
|
if request.method == "POST":
|
||||||
form = forms.ScheduleForm(request.POST)
|
form = forms.ScheduleForm(request.POST)
|
||||||
if form.is_valid():
|
if form.is_valid():
|
||||||
instance = form.save(commit=False)
|
instance = form.save(commit=False)
|
||||||
instance.lead = lead
|
instance.lead = lead
|
||||||
|
staff = ""
|
||||||
if hasattr(request.user, "staff"):
|
if hasattr(request.user, "staff"):
|
||||||
instance.scheduled_by = request.user.staff
|
staff = request.user.staff
|
||||||
|
instance.scheduled_by = staff
|
||||||
# Save the Schedule instance
|
|
||||||
instance.save()
|
instance.save()
|
||||||
|
|
||||||
# Create AppointmentRequest
|
# Create AppointmentRequest
|
||||||
@ -3218,21 +3260,22 @@ def schedule_lead(request, pk):
|
|||||||
if not service:
|
if not service:
|
||||||
messages.error(request, "Service not found!")
|
messages.error(request, "Service not found!")
|
||||||
return redirect("lead_list")
|
return redirect("lead_list")
|
||||||
|
staff_member = StaffMember.objects.filter(user=request.user).first()
|
||||||
|
|
||||||
appointment_request = AppointmentRequest.objects.create(
|
appointment_request = AppointmentRequest.objects.create(
|
||||||
date=instance.scheduled_at.date(),
|
date=instance.scheduled_at.date(),
|
||||||
start_time=instance.scheduled_at.time(),
|
start_time=instance.scheduled_at.time(),
|
||||||
end_time=(instance.scheduled_at + instance.duration).time(),
|
end_time=(instance.scheduled_at + instance.duration).time(),
|
||||||
service=service,
|
service=service,
|
||||||
staff_member=StaffMember.objects.first()
|
staff_member=staff_member,
|
||||||
)
|
)
|
||||||
print(lead.customer)
|
client = get_object_or_404(User, email=lead.email)
|
||||||
# Create Appointment
|
# Create Appointment
|
||||||
Appointment.objects.create(
|
Appointment.objects.create(
|
||||||
client=lead.customer.user, # Replace with the appropriate client
|
client=client,
|
||||||
appointment_request=appointment_request,
|
appointment_request=appointment_request,
|
||||||
phone=lead.customer.phone, # Replace with actual phone number
|
phone=lead.phone_number,
|
||||||
address=lead.customer.address_1, # Replace with actual address
|
address=lead.address,
|
||||||
)
|
)
|
||||||
|
|
||||||
messages.success(request, "Lead scheduled and appointment created successfully!")
|
messages.success(request, "Lead scheduled and appointment created successfully!")
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user