refactor: change labels & function names
This commit is contained in:
parent
ca985a0b76
commit
34102ef6ef
@ -678,6 +678,7 @@ def remove_assignments(doctype, name, assignees, ignore_permissions=False):
|
||||
ignore_permissions=ignore_permissions,
|
||||
)
|
||||
|
||||
|
||||
@frappe.whitelist()
|
||||
def get_assigned_users(doctype, name, default_assigned_to=None):
|
||||
assigned_users = frappe.get_all(
|
||||
@ -749,85 +750,93 @@ def getCounts(d, doctype):
|
||||
|
||||
|
||||
@frappe.whitelist()
|
||||
def getLinkedDocs(doctype, docname):
|
||||
def get_linked_docs_of_document(doctype, docname):
|
||||
doc = frappe.get_doc(doctype, docname)
|
||||
linked_docs = get_linked_docs(doc)
|
||||
dynamic_linked_docs = get_dynamic_linked_docs(doc)
|
||||
|
||||
|
||||
linked_docs.extend(dynamic_linked_docs)
|
||||
linked_docs = list({doc["reference_docname"]: doc for doc in linked_docs}.values())
|
||||
|
||||
|
||||
docs_data = []
|
||||
for doc in linked_docs:
|
||||
data = frappe.get_doc(doc["reference_doctype"], doc["reference_docname"])
|
||||
title = data.get("title")
|
||||
if data.doctype == "CRM Call Log":
|
||||
title = f"CRM Call Log - from {data.get('from')} to {data.get('to')}"
|
||||
|
||||
title = f"Call from {data.get('from')} to {data.get('to')}"
|
||||
|
||||
if data.doctype == "CRM Deal":
|
||||
title = data.get("organization")
|
||||
|
||||
docs_data.append({
|
||||
"doc": data.doctype,
|
||||
"title": title or data.get("name"),
|
||||
"reference_docname": doc["reference_docname"],
|
||||
"reference_doctype": doc["reference_doctype"],
|
||||
})
|
||||
|
||||
docs_data.append(
|
||||
{
|
||||
"doc": data.doctype,
|
||||
"title": title or data.get("name"),
|
||||
"reference_docname": doc["reference_docname"],
|
||||
"reference_doctype": doc["reference_doctype"],
|
||||
}
|
||||
)
|
||||
return docs_data
|
||||
|
||||
|
||||
def removeDocLink(doctype, docname):
|
||||
def remove_doc_link(doctype, docname):
|
||||
linked_doc_data = frappe.get_doc(doctype, docname)
|
||||
linked_doc_data.update({
|
||||
"reference_doctype": None,
|
||||
"reference_docname": None,
|
||||
})
|
||||
linked_doc_data.update(
|
||||
{
|
||||
"reference_doctype": None,
|
||||
"reference_docname": None,
|
||||
}
|
||||
)
|
||||
linked_doc_data.save(ignore_permissions=True)
|
||||
|
||||
def removeContactLink(doctype, docname):
|
||||
|
||||
def remove_contact_link(doctype, docname):
|
||||
linked_doc_data = frappe.get_doc(doctype, docname)
|
||||
linked_doc_data.update({
|
||||
"contact": None,
|
||||
"contacts": [],
|
||||
})
|
||||
linked_doc_data.update(
|
||||
{
|
||||
"contact": None,
|
||||
"contacts": [],
|
||||
}
|
||||
)
|
||||
linked_doc_data.save(ignore_permissions=True)
|
||||
|
||||
|
||||
@frappe.whitelist()
|
||||
def removeLinkedDocReference(items, removeContact=None, delete=False):
|
||||
|
||||
def remove_linked_doc_reference(items, remove_contact=None, delete=False):
|
||||
if isinstance(items, str):
|
||||
items = frappe.parse_json(items)
|
||||
|
||||
for item in items:
|
||||
if removeContact:
|
||||
removeContactLink(item["doctype"], item["docname"])
|
||||
if remove_contact:
|
||||
remove_contact_link(item["doctype"], item["docname"])
|
||||
else:
|
||||
removeDocLink(item["doctype"], item["docname"])
|
||||
|
||||
remove_doc_link(item["doctype"], item["docname"])
|
||||
|
||||
if delete:
|
||||
frappe.delete_doc(item["doctype"], item["docname"])
|
||||
|
||||
return "success"
|
||||
|
||||
|
||||
|
||||
@frappe.whitelist()
|
||||
def deleteBulkDocs(doctype, items, deleteLinked=False):
|
||||
def delete_bulk_docs(doctype, items, delete_linked=False):
|
||||
from frappe.desk.reportview import delete_bulk
|
||||
|
||||
items = frappe.parse_json(items)
|
||||
for doc in items:
|
||||
linked_docs = getLinkedDocs(doctype, doc)
|
||||
linked_docs = get_linked_docs_of_document(doctype, doc)
|
||||
for linked_doc in linked_docs:
|
||||
removeLinkedDocReference([
|
||||
{
|
||||
"doctype": linked_doc["reference_doctype"],
|
||||
"docname": linked_doc["reference_docname"],
|
||||
}
|
||||
] ,
|
||||
removeContact=doctype=="Contact",
|
||||
delete=deleteLinked
|
||||
remove_linked_doc_reference(
|
||||
[
|
||||
{
|
||||
"doctype": linked_doc["reference_doctype"],
|
||||
"docname": linked_doc["reference_docname"],
|
||||
}
|
||||
],
|
||||
remove_contact=doctype == "Contact",
|
||||
delete=delete_linked,
|
||||
)
|
||||
|
||||
|
||||
if len(items) > 10:
|
||||
frappe.enqueue("frappe.desk.reportview.delete_bulk", doctype=doctype, items=items)
|
||||
else:
|
||||
|
||||
1
frontend/components.d.ts
vendored
1
frontend/components.d.ts
vendored
@ -54,7 +54,6 @@ declare module 'vue' {
|
||||
ContactsIcon: typeof import('./src/components/Icons/ContactsIcon.vue')['default']
|
||||
ContactsListView: typeof import('./src/components/ListViews/ContactsListView.vue')['default']
|
||||
ConvertIcon: typeof import('./src/components/Icons/ConvertIcon.vue')['default']
|
||||
copy: typeof import('./src/components/DeleteLinkedDocModal copy.vue')['default']
|
||||
CountUpTimer: typeof import('./src/components/CountUpTimer.vue')['default']
|
||||
CreateDocumentModal: typeof import('./src/components/Modals/CreateDocumentModal.vue')['default']
|
||||
CRMLogo: typeof import('./src/components/Icons/CRMLogo.vue')['default']
|
||||
|
||||
@ -149,10 +149,10 @@ const confirmUnlink = () => {
|
||||
}
|
||||
|
||||
const deleteDocs = () => {
|
||||
call('crm.api.doc.deleteBulkDocs', {
|
||||
call('crm.api.doc.delete_bulk_docs', {
|
||||
items: props.items,
|
||||
doctype: props.doctype,
|
||||
deleteLinked: confirmDeleteInfo.value.delete,
|
||||
delete_linked: confirmDeleteInfo.value.delete,
|
||||
}).then(() => {
|
||||
confirmDeleteInfo.value = {
|
||||
show: false,
|
||||
|
||||
@ -5,7 +5,11 @@
|
||||
<div class="mb-6 flex items-center justify-between">
|
||||
<div>
|
||||
<h3 class="text-2xl leading-6 text-ink-gray-9 font-semibold">
|
||||
{{ __('Delete') }}
|
||||
{{
|
||||
linkedDocs?.length == 0
|
||||
? __('Delete')
|
||||
: __('Delete or unlink linked documents')
|
||||
}}
|
||||
</h3>
|
||||
</div>
|
||||
<div class="flex items-center gap-1">
|
||||
@ -32,7 +36,7 @@
|
||||
key: 'title',
|
||||
},
|
||||
{
|
||||
label: 'Doctype',
|
||||
label: 'Master',
|
||||
key: 'reference_doctype',
|
||||
width: '30%',
|
||||
},
|
||||
@ -65,7 +69,7 @@
|
||||
<div class="flex gap-1">
|
||||
<FeatherIcon name="trash" class="h-4 w-4" />
|
||||
<span>
|
||||
{{ __('Delete and unlink') }}
|
||||
{{ __('Delete') }}
|
||||
{{
|
||||
viewControls?.selections?.length == 0
|
||||
? __('all')
|
||||
@ -76,7 +80,8 @@
|
||||
</Button>
|
||||
<Button
|
||||
v-if="linkedDocs?.length > 0"
|
||||
variant="solid"
|
||||
variant="subtle"
|
||||
theme="gray"
|
||||
@click="confirmUnlink()"
|
||||
>
|
||||
<div class="flex gap-1">
|
||||
@ -172,7 +177,7 @@ const confirmDeleteInfo = ref({
|
||||
})
|
||||
|
||||
const linkedDocsResource = createResource({
|
||||
url: 'crm.api.doc.getLinkedDocs',
|
||||
url: 'crm.api.doc.get_linked_docs_of_document',
|
||||
params: {
|
||||
doctype: props.doctype,
|
||||
docname: props.docname,
|
||||
@ -211,9 +216,9 @@ const unlinkLinkedDoc = (doc) => {
|
||||
}))
|
||||
}
|
||||
|
||||
call('crm.api.doc.removeLinkedDocReference', {
|
||||
call('crm.api.doc.remove_linked_doc_reference', {
|
||||
items: selectedDocs,
|
||||
removeContact: props.doctype == 'Contact',
|
||||
remove_contact: props.doctype == 'Contact',
|
||||
delete: doc.delete,
|
||||
}).then(() => {
|
||||
linkedDocsResource.reload()
|
||||
@ -231,7 +236,7 @@ const confirmDelete = () => {
|
||||
: viewControls.value.selections.length
|
||||
confirmDeleteInfo.value = {
|
||||
show: true,
|
||||
title: __('Delete'),
|
||||
title: __('Delete linked item'),
|
||||
message: __('Are you sure you want to delete {0} linked item(s)?', [items]),
|
||||
delete: true,
|
||||
}
|
||||
@ -244,7 +249,7 @@ const confirmUnlink = () => {
|
||||
: viewControls.value.selections.length
|
||||
confirmDeleteInfo.value = {
|
||||
show: true,
|
||||
title: __('Unlink'),
|
||||
title: __('Unlink linked item'),
|
||||
message: __('Are you sure you want to unlink {0} linked item(s)?', [items]),
|
||||
delete: false,
|
||||
}
|
||||
@ -256,6 +261,7 @@ const removeDocLinks = () => {
|
||||
reference_docname: props.docname,
|
||||
delete: confirmDeleteInfo.value.delete,
|
||||
})
|
||||
viewControls.value.updateSelections([])
|
||||
}
|
||||
|
||||
const deleteDoc = async () => {
|
||||
|
||||
@ -19,15 +19,6 @@
|
||||
:item="column"
|
||||
@columnWidthUpdated="emit('columnWidthUpdated', column)"
|
||||
>
|
||||
<Button
|
||||
v-if="column.key == 'reference_docname'"
|
||||
variant="ghosted"
|
||||
class="!h-4"
|
||||
:class="isLikeFilterApplied ? 'fill-red-500' : 'fill-white'"
|
||||
@click="() => emit('applyLikeFilter')"
|
||||
>
|
||||
<HeartIcon class="h-4 w-4" />
|
||||
</Button>
|
||||
</ListHeaderItem>
|
||||
</ListHeader>
|
||||
<div class="*:mx-0 *:sm:mx-0">
|
||||
@ -50,6 +41,12 @@
|
||||
@click.stop="viewLinkedDoc(row)"
|
||||
/>
|
||||
</div>
|
||||
<span
|
||||
v-if="column.key === 'reference_doctype'"
|
||||
class="truncate text-base flex gap-2"
|
||||
>
|
||||
{{ getDoctypeName(row.reference_doctype) }}
|
||||
</span>
|
||||
</template>
|
||||
</ListRowItem>
|
||||
</ListRows>
|
||||
@ -58,7 +55,6 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import HeartIcon from '@/components/Icons/HeartIcon.vue'
|
||||
import ListRows from '@/components/ListViews/ListRows.vue'
|
||||
import { ListView, ListHeader, ListHeaderItem, ListRowItem } from 'frappe-ui'
|
||||
import { ref } from 'vue'
|
||||
@ -123,7 +119,7 @@ const viewLinkedDoc = (doc) => {
|
||||
page = 'contacts'
|
||||
id = doc.reference_docname
|
||||
break
|
||||
case 'Organization':
|
||||
case 'CRM Organization':
|
||||
page = 'organizations'
|
||||
id = doc.reference_docname
|
||||
break
|
||||
@ -136,4 +132,23 @@ const viewLinkedDoc = (doc) => {
|
||||
}
|
||||
window.open(`/crm/${page}/${id}`)
|
||||
}
|
||||
|
||||
const getDoctypeName = (doctype) => {
|
||||
switch (doctype) {
|
||||
case 'CRM Lead':
|
||||
return 'Lead'
|
||||
case 'CRM Call Log':
|
||||
return 'Call Log'
|
||||
case 'CRM Task':
|
||||
return 'Task'
|
||||
case 'Contact':
|
||||
return 'Contact'
|
||||
case 'CRM Organization':
|
||||
return 'Organization'
|
||||
case 'FCRM Note':
|
||||
return 'Note'
|
||||
default:
|
||||
return doctype
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user