Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 20 additions & 4 deletions pos/src/lib/customer-api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -38,10 +38,11 @@ export interface CreateCustomerData {
}

export interface CreateCustomerResponse {
data: Customer;
data: CreateCustomerData;
_server_messages?: string;
}


export async function getCustomerGroups() {
const groups = await db.getDocList(DOCTYPES.CUSTOMER_GROUP, {
fields: ['name'],
Expand All @@ -66,16 +67,31 @@ export async function getCustomerTerritories() {
return territories;
}

export async function addCustomer(customerData: CreateCustomerData): Promise<CreateCustomerResponse> {
export async function addCustomer(
customerData: CreateCustomerData
): Promise<CreateCustomerResponse> {
try {
const response = await db.createDoc(DOCTYPES.CUSTOMER, customerData);
return { data: response as Customer };
const response = await call.post('ury.ury_pos.api.create_customer', customerData);
const msg = response.message;
if (!msg || msg.status !== "success") {
throw new Error("Failed to create Customer,API Response error");
}
return {
data: {
customer_name: msg.customer_name,
mobile_number: msg.mobile_number,
customer_group: msg.customer_group,
territory: msg.territory
}
};

} catch (error) {
console.error('Error creating customer:', error);
throw error;
}
}


export async function searchCustomers(search: string, limit = 5) {
if (!search.trim()) return [];
try {
Expand Down
1 change: 0 additions & 1 deletion ury/hooks.py
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,6 @@
"before_insert": "ury.ury.hooks.ury_sales_invoice.before_insert",
"on_update":"ury.ury.hooks.ury_sales_invoice.on_update",
},
"Customer": {"before_save": "ury.ury.hooks.ury_customer.before_insert"},
"Item": {"validate": "ury.ury.hooks.ury_item.validate"},
"POS Opening Entry": {
"validate":"ury.ury.hooks.ury_pos_opening_entry.set_cashier_room",
Expand Down
10 changes: 0 additions & 10 deletions ury/ury/hooks/ury_customer.py

This file was deleted.

2 changes: 1 addition & 1 deletion ury/ury/workspace/ury/ury.json
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@
"type": "Link"
}
],
"modified": "2025-07-25 10:51:43.683224",
"modified": "2026-01-16 11:47:19.008936",
"modified_by": "Administrator",
"module": "URY",
"name": "URY",
Expand Down
38 changes: 38 additions & 0 deletions ury/ury_pos/api.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import frappe
from frappe import _
from datetime import date, datetime, timedelta
from frappe.utils import validate_phone_number



Expand Down Expand Up @@ -650,7 +651,44 @@ def getAggregatorMOP(aggregator):
{"mode_of_payment": modeOfPayment, "opening_amount": float(0)}
)
return modeOfPaymentsList
@frappe.whitelist()
def create_customer(customer_name, mobile_number=None, customer_group="Individual", territory="India"):
if not customer_name:
frappe.throw("Customer name is required")
if not mobile_number:
frappe.throw("Mobile Number is required")
try:
validate_phone_number(mobile_number, throw=True)
except Exception:
frappe.throw("Invalid mobile number format")

"""Create a new customer"""
try:
customer = frappe.get_doc({
"doctype": "Customer",
"customer_name": customer_name,
"mobile_number": mobile_number,
"customer_group": customer_group,
"territory": territory
})
customer.insert(ignore_permissions=True)
frappe.db.commit()

return {
"status": "success",
"message": "Customer created successfully",
"customer_name": customer_name,
"mobile_number": mobile_number,
"customer_group": customer_group,
"territory": territory
}

except Exception as e:
frappe.log_error(message=frappe.get_traceback(), title="Customer Creation Failed")
return {
"status": "error",
"message": str(e)
}

@frappe.whitelist()
def validate_pos_close(pos_profile):
Expand Down
Loading