[Fix] 'To Bill' status even if the amount is zero (#14784)
* Fix 'To Bill' status even if the invoice amount is zero * Modify fix to only apply on Delivery Note documents
This commit is contained in:
parent
a2a6568b7e
commit
e52ae4eacb
@ -335,8 +335,7 @@ class StatusUpdater(Document):
|
|||||||
from `tab%s Item` where %s=%s and docstatus=1""" %
|
from `tab%s Item` where %s=%s and docstatus=1""" %
|
||||||
(self.doctype, ref_fieldname, '%s'), (ref_dn))[0][0])
|
(self.doctype, ref_fieldname, '%s'), (ref_dn))[0][0])
|
||||||
|
|
||||||
per_billed = ((ref_doc_qty if billed_qty > ref_doc_qty else billed_qty)\
|
per_billed = (min(ref_doc_qty, billed_qty) / ref_doc_qty) * 100
|
||||||
/ ref_doc_qty)*100
|
|
||||||
|
|
||||||
ref_doc = frappe.get_doc(ref_dt, ref_dn)
|
ref_doc = frappe.get_doc(ref_dt, ref_dn)
|
||||||
|
|
||||||
|
@ -1,20 +1,25 @@
|
|||||||
frappe.listview_settings['Sales Order'] = {
|
frappe.listview_settings['Sales Order'] = {
|
||||||
add_fields: ["base_grand_total", "customer_name", "currency", "delivery_date",
|
add_fields: ["base_grand_total", "customer_name", "currency", "delivery_date",
|
||||||
"per_delivered", "per_billed", "status", "order_type", "name"],
|
"per_delivered", "per_billed", "status", "order_type", "name"],
|
||||||
get_indicator: function(doc) {
|
get_indicator: function (doc) {
|
||||||
if(doc.status==="Closed"){
|
if (doc.status === "Closed") {
|
||||||
return [__("Closed"), "green", "status,=,Closed"];
|
return [__("Closed"), "green", "status,=,Closed"];
|
||||||
|
|
||||||
} else if (doc.order_type !== "Maintenance"
|
} else if (doc.order_type !== "Maintenance"
|
||||||
&& flt(doc.per_delivered, 6) < 100 && frappe.datetime.get_diff(doc.delivery_date) < 0) {
|
&& flt(doc.per_delivered, 6) < 100 && frappe.datetime.get_diff(doc.delivery_date) < 0) {
|
||||||
// to bill & overdue
|
// not delivered & overdue
|
||||||
return [__("Overdue"), "red", "per_delivered,<,100|delivery_date,<,Today|status,!=,Closed"];
|
return [__("Overdue"), "red", "per_delivered,<,100|delivery_date,<,Today|status,!=,Closed"];
|
||||||
|
|
||||||
} else if (doc.order_type !== "Maintenance"
|
} else if (doc.order_type !== "Maintenance"
|
||||||
&& flt(doc.per_delivered, 6) < 100 && doc.status!=="Closed") {
|
&& flt(doc.per_delivered, 6) < 100 && doc.status !== "Closed") {
|
||||||
// not delivered
|
// not delivered
|
||||||
|
|
||||||
if(flt(doc.per_billed, 6) < 100) {
|
if (flt(doc.grand_total) === 0) {
|
||||||
|
// not delivered (zero-amount order)
|
||||||
|
|
||||||
|
return [__("To Deliver"), "orange",
|
||||||
|
"per_delivered,<,100|grand_total,=,0|status,!=,Closed"];
|
||||||
|
} else if (flt(doc.per_billed, 6) < 100) {
|
||||||
// not delivered & not billed
|
// not delivered & not billed
|
||||||
|
|
||||||
return [__("To Deliver and Bill"), "orange",
|
return [__("To Deliver and Bill"), "orange",
|
||||||
@ -27,13 +32,13 @@ frappe.listview_settings['Sales Order'] = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
} else if ((doc.order_type === "Maintenance" || flt(doc.per_delivered, 6) == 100)
|
} else if ((doc.order_type === "Maintenance" || flt(doc.per_delivered, 6) == 100)
|
||||||
&& flt(doc.per_billed, 6) < 100 && doc.status!=="Closed") {
|
&& flt(doc.grand_total) !== 0 && flt(doc.per_billed, 6) < 100 && doc.status !== "Closed") {
|
||||||
|
|
||||||
// to bill
|
// to bill
|
||||||
|
|
||||||
return [__("To Bill"), "orange", "per_delivered,=,100|per_billed,<,100|status,!=,Closed"];
|
return [__("To Bill"), "orange", "per_delivered,=,100|per_billed,<,100|status,!=,Closed"];
|
||||||
|
|
||||||
} else if((doc.order_type === "Maintenance" || flt(doc.per_delivered, 6) == 100)
|
} else if ((doc.order_type === "Maintenance" || flt(doc.per_delivered, 6) == 100)
|
||||||
&& flt(doc.per_billed, 6) == 100 && doc.status!=="Closed") {
|
&& (flt(doc.grand_total) === 0 || flt(doc.per_billed, 6) == 100) && doc.status !== "Closed") {
|
||||||
|
|
||||||
return [__("Completed"), "green", "per_delivered,=,100|per_billed,=,100|status,!=,Closed"];
|
return [__("Completed"), "green", "per_delivered,=,100|per_billed,=,100|status,!=,Closed"];
|
||||||
}
|
}
|
||||||
|
@ -311,7 +311,6 @@ class DeliveryNote(SellingController):
|
|||||||
|
|
||||||
for dn in set(updated_delivery_notes):
|
for dn in set(updated_delivery_notes):
|
||||||
dn_doc = self if (dn == self.name) else frappe.get_doc("Delivery Note", dn)
|
dn_doc = self if (dn == self.name) else frappe.get_doc("Delivery Note", dn)
|
||||||
if dn_doc.net_total > 0:
|
|
||||||
dn_doc.update_billing_percentage(update_modified=update_modified)
|
dn_doc.update_billing_percentage(update_modified=update_modified)
|
||||||
|
|
||||||
self.load_from_db()
|
self.load_from_db()
|
||||||
|
@ -1,14 +1,13 @@
|
|||||||
frappe.listview_settings['Delivery Note'] = {
|
frappe.listview_settings['Delivery Note'] = {
|
||||||
add_fields: ["customer", "customer_name", "base_grand_total", "per_installed", "per_billed",
|
add_fields: ["grand_total", "is_return", "per_billed", "status"],
|
||||||
"transporter_name", "grand_total", "is_return", "status"],
|
get_indicator: function (doc) {
|
||||||
get_indicator: function(doc) {
|
if (cint(doc.is_return) == 1) {
|
||||||
if(cint(doc.is_return)==1) {
|
|
||||||
return [__("Return"), "darkgrey", "is_return,=,Yes"];
|
return [__("Return"), "darkgrey", "is_return,=,Yes"];
|
||||||
} else if(doc.status==="Closed") {
|
} else if (doc.status === "Closed") {
|
||||||
return [__("Closed"), "green", "status,=,Closed"];
|
return [__("Closed"), "green", "status,=,Closed"];
|
||||||
} else if (flt(doc.per_billed, 2) < 100) {
|
} else if (doc.grand_total !== 0 && flt(doc.per_billed, 2) < 100) {
|
||||||
return [__("To Bill"), "orange", "per_billed,<,100"];
|
return [__("To Bill"), "orange", "per_billed,<,100"];
|
||||||
} else if (flt(doc.per_billed, 2) == 100) {
|
} else if (doc.grand_total === 0 || flt(doc.per_billed, 2) == 100) {
|
||||||
return [__("Completed"), "green", "per_billed,=,100"];
|
return [__("Completed"), "green", "per_billed,=,100"];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,14 +1,13 @@
|
|||||||
frappe.listview_settings['Purchase Receipt'] = {
|
frappe.listview_settings['Purchase Receipt'] = {
|
||||||
add_fields: ["supplier", "supplier_name", "base_grand_total", "is_subcontracted",
|
add_fields: ["is_return", "grand_total", "status", "per_billed"],
|
||||||
"transporter_name", "is_return", "status", "per_billed"],
|
get_indicator: function (doc) {
|
||||||
get_indicator: function(doc) {
|
if (cint(doc.is_return) == 1) {
|
||||||
if(cint(doc.is_return)==1) {
|
|
||||||
return [__("Return"), "darkgrey", "is_return,=,Yes"];
|
return [__("Return"), "darkgrey", "is_return,=,Yes"];
|
||||||
} else if(doc.status==="Closed") {
|
} else if (doc.status === "Closed") {
|
||||||
return [__("Closed"), "green", "status,=,Closed"];
|
return [__("Closed"), "green", "status,=,Closed"];
|
||||||
} else if (flt(doc.per_billed, 2) < 100) {
|
} else if (flt(doc.grand_total) !== 0 && flt(doc.per_billed, 2) < 100) {
|
||||||
return [__("To Bill"), "orange", "per_billed,<,100"];
|
return [__("To Bill"), "orange", "per_billed,<,100"];
|
||||||
} else if (flt(doc.per_billed, 2) == 100) {
|
} else if (flt(doc.grand_total) === 0 || flt(doc.per_billed, 2) == 100) {
|
||||||
return [__("Completed"), "green", "per_billed,=,100"];
|
return [__("Completed"), "green", "per_billed,=,100"];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user