client creation bug fixes

This commit is contained in:
Casey Wittrock 2025-11-25 08:03:46 -06:00
parent cb33d0c3b3
commit 2ea20a86e3
7 changed files with 52 additions and 19 deletions

View File

@ -299,7 +299,6 @@ def upsert_client(data):
"link_name": customer_doc.name
}
address_doc.append("links", link)
address_doc.save(ignore_permissions=True)
contact_exists = frappe.db.exists("Contact", {"email_id": data.get("contact_email")})
if not contact_exists:
contact_doc = frappe.get_doc({
@ -318,7 +317,8 @@ def upsert_client(data):
else:
contact_doc = frappe.get_doc("Contact", {"email_id": data.get("contact_email")})
print("Contact already exists:", contact_doc.as_dict())
address_doc.custom_contact = contact_doc.name
address_doc.save(ignore_permissions=True)
return build_success_response({
"customer": customer_doc.as_dict(),
"address": address_doc.as_dict(),

View File

@ -126,4 +126,20 @@ def build_success_response(data):
"status": "success",
"data": data
}
def build_full_address(doc):
first_parts = [
doc.address_line1,
doc.address_line2,
doc.city
]
second_parts = [
doc.state,
doc.pincode
]
first = " ".join([p for p in first_parts if p])
second = " ".join([p for p in second_parts if p])
if first and second:
return f"{first}, {second}"
return first or second or ""

View File

@ -0,0 +1,9 @@
import frappe
from custom_ui.db_utils import build_full_address
def after_insert(doc, method):
print(doc.as_dict())
if not doc.full_address:
doc.full_address = build_full_address(doc)
doc.save()

View File

@ -161,7 +161,10 @@ add_to_apps_screen = [
doc_events = {
"On-Site Meeting": {
"after_insert": "custom_ui.events.onsite_meeting.after_insert"
}
},
"Address": {
"after_insert": "custom_ui.events.address.after_insert"
},
}
# Scheduled Tasks

View File

@ -148,7 +148,8 @@ const localFormData = computed({
set: (value) => emit("update:formData", value),
});
const isNewContact = ref(false);
// Default to true for new-client flows; if editing keep it off
const isNewContact = ref(!props.isEditMode);
const selectedContact = ref(null);
const sameAsClientName = ref(false);

View File

@ -262,6 +262,7 @@ const formData = ref({
onMounted(() => {
if (props.isNew) {
resetForm();
isNewClientMode.value = true; // Set to true for new client mode
console.log("Mounted in new client mode - initialized empty form");
} else if (props.clientData && Object.keys(props.clientData).length > 0) {
populateFormFromClientData();

View File

@ -19,10 +19,12 @@ import Api from "../../api";
import { useLoadingStore } from "../../stores/loading";
import { usePaginationStore } from "../../stores/pagination";
import { useFiltersStore } from "../../stores/filters";
import { useNotificationStore } from "../../stores/notifications-primevue";
const loadingStore = useLoadingStore();
const paginationStore = usePaginationStore();
const filtersStore = useFiltersStore();
const notifications = useNotificationStore();
const tableData = ref([]);
const totalRecords = ref(0);
@ -146,24 +148,25 @@ const handleLazyLoad = async (event) => {
// Load initial data
onMounted(async () => {
notifications.addWarning("Jobs page coming soon");
// Initialize pagination and filters
paginationStore.initializeTablePagination("jobs", { rows: 10 });
filtersStore.initializeTableFilters("jobs", columns);
filtersStore.initializeTableSorting("jobs");
// paginationStore.initializeTablePagination("jobs", { rows: 10 });
// filtersStore.initializeTableFilters("jobs", columns);
// filtersStore.initializeTableSorting("jobs");
// Load first page
const initialPagination = paginationStore.getTablePagination("jobs");
const initialFilters = filtersStore.getTableFilters("jobs");
const initialSorting = filtersStore.getTableSorting("jobs");
// // Load first page
// const initialPagination = paginationStore.getTablePagination("jobs");
// const initialFilters = filtersStore.getTableFilters("jobs");
// const initialSorting = filtersStore.getTableSorting("jobs");
await handleLazyLoad({
page: initialPagination.page,
rows: initialPagination.rows,
first: initialPagination.first,
sortField: initialSorting.field || initialPagination.sortField,
sortOrder: initialSorting.order || initialPagination.sortOrder,
filters: initialFilters,
});
// await handleLazyLoad({
// page: initialPagination.page,
// rows: initialPagination.rows,
// first: initialPagination.first,
// sortField: initialSorting.field || initialPagination.sortField,
// sortOrder: initialSorting.order || initialPagination.sortOrder,
// filters: initialFilters,
// });
});
</script>
<style lang=""></style>