chore: resolve conflicts

This commit is contained in:
barredterra
2024-06-20 14:15:26 +02:00
parent e77534ba2b
commit 0e6edf763e
3 changed files with 107 additions and 339 deletions

View File

@@ -265,7 +265,11 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe
} }
const me = this; const me = this;
if (!this.frm.is_new() && this.frm.doc.docstatus === 0 && frappe.model.can_create("Quality Inspection")) { if (
!this.frm.is_new()
&& this.frm.doc.docstatus === 0
&& frappe.model.can_create("Quality Inspection")
) {
this.frm.add_custom_button(__("Quality Inspection(s)"), () => { this.frm.add_custom_button(__("Quality Inspection(s)"), () => {
me.make_quality_inspection(); me.make_quality_inspection();
}, __("Create")); }, __("Create"));

View File

@@ -47,10 +47,14 @@ frappe.ui.form.on("Sales Order", {
frm.set_df_property('packed_items', 'cannot_add_rows', true); frm.set_df_property('packed_items', 'cannot_add_rows', true);
frm.set_df_property('packed_items', 'cannot_delete_rows', true); frm.set_df_property('packed_items', 'cannot_delete_rows', true);
}, },
<<<<<<< HEAD
refresh: function(frm) { refresh: function(frm) {
if(frm.doc.docstatus === 1 && frm.doc.status !== 'Closed' if(
&& flt(frm.doc.per_delivered, 6) < 100 && flt(frm.doc.per_billed, 6) < 100) { frm.doc.docstatus === 1
&& frm.doc.status !== "Closed"
&& flt(frm.doc.per_delivered, 6) < 100
&& flt(frm.doc.per_billed, 6) < 100
&& frm.has_perm("write")
) {
frm.add_custom_button(__('Update Items'), () => { frm.add_custom_button(__('Update Items'), () => {
erpnext.utils.update_child_items({ erpnext.utils.update_child_items({
frm: frm, frm: frm,
@@ -58,64 +62,6 @@ frappe.ui.form.on("Sales Order", {
child_doctype: "Sales Order Detail", child_doctype: "Sales Order Detail",
cannot_add_row: false, cannot_add_row: false,
}) })
=======
refresh: function (frm) {
if (frm.doc.docstatus === 1) {
if (
frm.doc.status !== "Closed" &&
flt(frm.doc.per_delivered, 2) < 100 &&
flt(frm.doc.per_billed, 2) < 100 &&
frm.has_perm("write")
) {
frm.add_custom_button(__("Update Items"), () => {
erpnext.utils.update_child_items({
frm: frm,
child_docname: "items",
child_doctype: "Sales Order Detail",
cannot_add_row: false,
has_reserved_stock: frm.doc.__onload && frm.doc.__onload.has_reserved_stock,
});
});
// Stock Reservation > Reserve button should only be visible if the SO has unreserved stock and no Pick List is created against the SO.
if (
frm.doc.__onload &&
frm.doc.__onload.has_unreserved_stock &&
flt(frm.doc.per_picked) === 0 &&
frappe.model.can_create("Stock Reservation Entry")
) {
frm.add_custom_button(
__("Reserve"),
() => frm.events.create_stock_reservation_entries(frm),
__("Stock Reservation")
);
}
}
// Stock Reservation > Unreserve button will be only visible if the SO has un-delivered reserved stock.
if (
frm.doc.__onload &&
frm.doc.__onload.has_reserved_stock &&
frappe.model.can_cancel("Stock Reservation Entry")
) {
frm.add_custom_button(
__("Unreserve"),
() => frm.events.cancel_stock_reservation_entries(frm),
__("Stock Reservation")
);
}
frm.doc.items.forEach((item) => {
if (flt(item.stock_reserved_qty) > 0 && frappe.model.can_read("Stock Reservation Entry")) {
frm.add_custom_button(
__("Reserved Stock"),
() => frm.events.show_reserved_stock(frm),
__("Stock Reservation")
);
return;
}
>>>>>>> c29d955371 (fix(Sales Order): only show permitted actions)
}); });
} }
@@ -125,7 +71,10 @@ frappe.ui.form.on("Sales Order", {
}, },
get_items_from_internal_purchase_order(frm) { get_items_from_internal_purchase_order(frm) {
<<<<<<< HEAD if (!frappe.model.can_read("Purchase Order")) {
return;
}
frm.add_custom_button(__('Purchase Order'), () => { frm.add_custom_button(__('Purchase Order'), () => {
erpnext.utils.map_current_doc({ erpnext.utils.map_current_doc({
method: 'erpnext.buying.doctype.purchase_order.purchase_order.make_inter_company_sales_order', method: 'erpnext.buying.doctype.purchase_order.purchase_order.make_inter_company_sales_order',
@@ -147,37 +96,6 @@ frappe.ui.form.on("Sales Order", {
} }
}); });
}, __('Get Items From')); }, __('Get Items From'));
=======
if (!frappe.model.can_read("Purchase Order")) {
return;
}
frm.add_custom_button(
__("Purchase Order"),
() => {
erpnext.utils.map_current_doc({
method: "erpnext.buying.doctype.purchase_order.purchase_order.make_inter_company_sales_order",
source_doctype: "Purchase Order",
target: frm,
setters: [
{
label: "Supplier",
fieldname: "supplier",
fieldtype: "Link",
options: "Supplier",
},
],
get_query_filters: {
company: frm.doc.company,
is_internal_supplier: 1,
docstatus: 1,
status: ["!=", "Completed"],
},
});
},
__("Get Items From")
);
>>>>>>> c29d955371 (fix(Sales Order): only show permitted actions)
}, },
// When multiple companies are set up. in case company name is changed set default company address // When multiple companies are set up. in case company name is changed set default company address
@@ -318,22 +236,12 @@ erpnext.selling.SalesOrderController = class SalesOrderController extends erpnex
} }
} }
<<<<<<< HEAD
if (flt(doc.per_picked, 6) < 100 && flt(doc.per_delivered, 6) < 100) {
this.frm.add_custom_button(__('Pick List'), () => this.create_pick_list(), __('Create'));
=======
if ( if (
(!doc.__onload || !doc.__onload.has_reserved_stock) && flt(doc.per_picked, 6) < 100
flt(doc.per_picked, 2) < 100 && && flt(doc.per_delivered, 6) < 100
flt(doc.per_delivered, 2) < 100 && && frappe.model.can_create("Pick List")
frappe.model.can_create("Pick List")
) { ) {
this.frm.add_custom_button( this.frm.add_custom_button(__('Pick List'), () => this.create_pick_list(), __('Create'));
__("Pick List"),
() => this.create_pick_list(),
__("Create")
);
>>>>>>> c29d955371 (fix(Sales Order): only show permitted actions)
} }
const order_is_a_sale = ["Sales", "Shopping Cart"].indexOf(doc.order_type) !== -1; const order_is_a_sale = ["Sales", "Shopping Cart"].indexOf(doc.order_type) !== -1;
@@ -342,57 +250,18 @@ erpnext.selling.SalesOrderController = class SalesOrderController extends erpnex
const order_is_a_custom_sale = ["Sales", "Shopping Cart", "Maintenance"].indexOf(doc.order_type) === -1; const order_is_a_custom_sale = ["Sales", "Shopping Cart", "Maintenance"].indexOf(doc.order_type) === -1;
// delivery note // delivery note
<<<<<<< HEAD if(
if(flt(doc.per_delivered, 6) < 100 && (order_is_a_sale || order_is_a_custom_sale) && allow_delivery) { flt(doc.per_delivered, 6) < 100
this.frm.add_custom_button(__('Delivery Note'), () => this.make_delivery_note_based_on_delivery_date(), __('Create')); && (order_is_a_sale || order_is_a_custom_sale)
this.frm.add_custom_button(__('Work Order'), () => this.make_work_order(), __('Create')); && allow_delivery
}
// sales invoice
if(flt(doc.per_billed, 6) < 100) {
this.frm.add_custom_button(__('Sales Invoice'), () => me.make_sales_invoice(), __('Create'));
}
// material request
if(!doc.order_type || (order_is_a_sale || order_is_a_custom_sale) && flt(doc.per_delivered, 6) < 100) {
this.frm.add_custom_button(__('Material Request'), () => this.make_material_request(), __('Create'));
this.frm.add_custom_button(__('Request for Raw Materials'), () => this.make_raw_material_request(), __('Create'));
}
// Make Purchase Order
if (!this.frm.doc.is_internal_customer) {
this.frm.add_custom_button(__('Purchase Order'), () => this.make_purchase_order(), __('Create'));
}
// maintenance
if(flt(doc.per_delivered, 2) < 100 && (order_is_maintenance || order_is_a_custom_sale)) {
this.frm.add_custom_button(__('Maintenance Visit'), () => this.make_maintenance_visit(), __('Create'));
this.frm.add_custom_button(__('Maintenance Schedule'), () => this.make_maintenance_schedule(), __('Create'));
}
// project
if(flt(doc.per_delivered, 2) < 100) {
this.frm.add_custom_button(__('Project'), () => this.make_project(), __('Create'));
}
if(!doc.auto_repeat) {
this.frm.add_custom_button(__('Subscription'), function() {
erpnext.utils.make_subscription(doc.doctype, doc.name)
}, __('Create'))
=======
if (
flt(doc.per_delivered, 2) < 100 &&
(order_is_a_sale || order_is_a_custom_sale) &&
allow_delivery
) { ) {
if (frappe.model.can_create("Delivery Note")) { if (frappe.model.can_create("Delivery Note")) {
this.frm.add_custom_button( this.frm.add_custom_button(
__("Delivery Note"), __("Delivery Note"),
() => this.make_delivery_note_based_on_delivery_date(true), () => this.make_delivery_note_based_on_delivery_date(),
__("Create") __("Create")
); );
} }
if (frappe.model.can_create("Work Order")) { if (frappe.model.can_create("Work Order")) {
this.frm.add_custom_button( this.frm.add_custom_button(
__("Work Order"), __("Work Order"),
@@ -403,7 +272,7 @@ erpnext.selling.SalesOrderController = class SalesOrderController extends erpnex
} }
// sales invoice // sales invoice
if (flt(doc.per_billed, 2) < 100 && frappe.model.can_create("Sales Invoice")) { if(flt(doc.per_billed, 6) < 100 && frappe.model.can_create("Sales Invoice")) {
this.frm.add_custom_button( this.frm.add_custom_button(
__("Sales Invoice"), __("Sales Invoice"),
() => me.make_sales_invoice(), () => me.make_sales_invoice(),
@@ -413,54 +282,66 @@ erpnext.selling.SalesOrderController = class SalesOrderController extends erpnex
// material request // material request
if ( if (
(!doc.order_type || (
((order_is_a_sale || order_is_a_custom_sale) && !doc.order_type
flt(doc.per_delivered, 2) < 100)) && || (order_is_a_sale || order_is_a_custom_sale)
frappe.model.can_create("Material Request") && flt(doc.per_delivered, 6) < 100
)
&& frappe.model.can_create("Material Request")
) { ) {
this.frm.add_custom_button( this.frm.add_custom_button(
__("Material Request"), __('Material Request'),
() => this.make_material_request(), () => this.make_material_request(),
__("Create") __('Create')
); );
this.frm.add_custom_button( this.frm.add_custom_button(
__("Request for Raw Materials"), __('Request for Raw Materials'),
() => this.make_raw_material_request(), () => this.make_raw_material_request(),
__("Create") __('Create')
); );
} }
// Make Purchase Order // Make Purchase Order
if (!this.frm.doc.is_internal_customer && frappe.model.can_create("Purchase Order")) { if (!this.frm.doc.is_internal_customer && frappe.model.can_create("Purchase Order")) {
this.frm.add_custom_button( this.frm.add_custom_button(
__("Purchase Order"), __('Purchase Order'),
() => this.make_purchase_order(), () => this.make_purchase_order(),
__("Create") __('Create')
); );
} }
// maintenance // maintenance
if (flt(doc.per_delivered, 2) < 100 && (order_is_maintenance || order_is_a_custom_sale)) { if(flt(doc.per_delivered, 2) < 100 && (order_is_maintenance || order_is_a_custom_sale)) {
if (frappe.model.can_create("Maintenance Visit")) { if(frappe.model.can_create("Maintenance Visit")) {
this.frm.add_custom_button( this.frm.add_custom_button(
__("Maintenance Visit"), __('Maintenance Visit'),
() => this.make_maintenance_visit(), () => this.make_maintenance_visit(),
__("Create") __('Create')
); );
} }
if (frappe.model.can_create("Maintenance Schedule")) {
if(frappe.model.can_create("Maintenance Schedule")) {
this.frm.add_custom_button( this.frm.add_custom_button(
__("Maintenance Schedule"), __('Maintenance Schedule'),
() => this.make_maintenance_schedule(), () => this.make_maintenance_schedule(),
__("Create") __('Create')
); );
} }
} }
// project // project
if (flt(doc.per_delivered, 2) < 100 && frappe.model.can_create("Project")) { if(flt(doc.per_delivered, 2) < 100 && frappe.model.can_create("Project")) {
this.frm.add_custom_button(__("Project"), () => this.make_project(), __("Create")); this.frm.add_custom_button(__('Project'), () => this.make_project(), __('Create'));
>>>>>>> c29d955371 (fix(Sales Order): only show permitted actions) }
if(!doc.auto_repeat && frappe.model.can_create("Auto Repeat")) {
this.frm.add_custom_button(
__('Subscription'),
function() {
erpnext.utils.make_subscription(doc.doctype, doc.name)
},
__('Create')
);
} }
if ( if (
@@ -481,15 +362,7 @@ erpnext.selling.SalesOrderController = class SalesOrderController extends erpnex
} }
} }
// payment request // payment request
<<<<<<< HEAD
if(flt(doc.per_billed, precision('per_billed', doc)) < 100 + frappe.boot.sysdefaults.over_billing_allowance) { if(flt(doc.per_billed, precision('per_billed', doc)) < 100 + frappe.boot.sysdefaults.over_billing_allowance) {
this.frm.add_custom_button(__('Payment Request'), () => this.make_payment_request(), __('Create'));
this.frm.add_custom_button(__('Payment'), () => this.make_payment_entry(), __('Create'));
=======
if (
flt(doc.per_billed, precision("per_billed", doc)) <
100 + frappe.boot.sysdefaults.over_billing_allowance
) {
if (frappe.model.can_create("Payment Request")) { if (frappe.model.can_create("Payment Request")) {
this.frm.add_custom_button( this.frm.add_custom_button(
__("Payment Request"), __("Payment Request"),
@@ -497,7 +370,6 @@ erpnext.selling.SalesOrderController = class SalesOrderController extends erpnex
__("Create") __("Create")
); );
} }
if (frappe.model.can_create("Payment Entry")) { if (frappe.model.can_create("Payment Entry")) {
this.frm.add_custom_button( this.frm.add_custom_button(
__("Payment"), __("Payment"),
@@ -505,22 +377,14 @@ erpnext.selling.SalesOrderController = class SalesOrderController extends erpnex
__("Create") __("Create")
); );
} }
>>>>>>> c29d955371 (fix(Sales Order): only show permitted actions)
} }
this.frm.page.set_inner_btn_group_as_primary(__('Create')); this.frm.page.set_inner_btn_group_as_primary(__('Create'));
} }
} }
<<<<<<< HEAD if (this.frm.doc.docstatus===0 && frappe.model.can_read("Quotation")) {
if (this.frm.doc.docstatus===0) {
this.frm.add_custom_button(__('Quotation'), this.frm.add_custom_button(__('Quotation'),
function() { function() {
=======
if (this.frm.doc.docstatus === 0 && frappe.model.can_read("Quotation")) {
this.frm.add_custom_button(
__("Quotation"),
function () {
>>>>>>> c29d955371 (fix(Sales Order): only show permitted actions)
let d = erpnext.utils.map_current_doc({ let d = erpnext.utils.map_current_doc({
method: "erpnext.selling.doctype.quotation.quotation.make_sales_order", method: "erpnext.selling.doctype.quotation.quotation.make_sales_order",
source_doctype: "Quotation", source_doctype: "Quotation",

View File

@@ -85,9 +85,8 @@ frappe.ui.form.on("Delivery Note", {
erpnext.stock.delivery_note.set_print_hide(frm.doc); erpnext.stock.delivery_note.set_print_hide(frm.doc);
}, },
<<<<<<< HEAD
refresh: function(frm) { refresh: function(frm) {
if (frm.doc.docstatus === 1 && frm.doc.is_return === 1 && frm.doc.per_billed !== 100) { if (frm.doc.docstatus === 1 && frm.doc.is_return === 1 && frm.doc.per_billed !== 100 && frappe.model.can_create("Sales Invoice")) {
frm.add_custom_button(__('Credit Note'), function() { frm.add_custom_button(__('Credit Note'), function() {
frappe.model.open_mapped_doc({ frappe.model.open_mapped_doc({
method: "erpnext.stock.doctype.delivery_note.delivery_note.make_sales_invoice", method: "erpnext.stock.doctype.delivery_note.delivery_note.make_sales_invoice",
@@ -95,26 +94,6 @@ frappe.ui.form.on("Delivery Note", {
}) })
}, __('Create')); }, __('Create'));
frm.page.set_inner_btn_group_as_primary(__('Create')); frm.page.set_inner_btn_group_as_primary(__('Create'));
=======
refresh: function (frm) {
if (
frm.doc.docstatus === 1 &&
frm.doc.is_return === 1 &&
frm.doc.per_billed !== 100 &&
frappe.model.can_create("Sales Invoice")
) {
frm.add_custom_button(
__("Credit Note"),
function () {
frappe.model.open_mapped_doc({
method: "erpnext.stock.doctype.delivery_note.delivery_note.make_sales_invoice",
frm: cur_frm,
});
},
__("Create")
);
frm.page.set_inner_btn_group_as_primary(__("Create"));
>>>>>>> 418bdc1dcc (fix(Delivery Note): only show permitted actions)
} }
if ( if (
@@ -160,87 +139,24 @@ erpnext.stock.DeliveryNoteController = class DeliveryNoteController extends erpn
refresh(doc, dt, dn) { refresh(doc, dt, dn) {
var me = this; var me = this;
super.refresh(); super.refresh();
<<<<<<< HEAD
if ((!doc.is_return) && (doc.status!="Closed" || this.frm.is_new())) {
if (this.frm.doc.docstatus===0) {
this.frm.add_custom_button(__('Sales Order'),
function() {
if (!me.frm.doc.customer) {
frappe.throw({
title: __("Mandatory"),
message: __("Please Select a Customer")
});
}
erpnext.utils.map_current_doc({
method: "erpnext.selling.doctype.sales_order.sales_order.make_delivery_note",
source_doctype: "Sales Order",
target: me.frm,
setters: {
customer: me.frm.doc.customer,
},
get_query_filters: {
docstatus: 1,
status: ["not in", ["Closed", "On Hold"]],
per_delivered: ["<", 99.99],
company: me.frm.doc.company,
project: me.frm.doc.project || undefined,
}
})
}, __("Get Items From"));
}
}
if (!doc.is_return && doc.status!="Closed") {
if(doc.docstatus == 1) {
this.frm.add_custom_button(__('Shipment'), function() {
me.make_shipment() }, __('Create'));
}
if(flt(doc.per_installed, 2) < 100 && doc.docstatus==1)
this.frm.add_custom_button(__('Installation Note'), function() {
me.make_installation_note() }, __('Create'));
if (doc.docstatus==1) {
this.frm.add_custom_button(__('Sales Return'), function() {
me.make_sales_return() }, __('Create'));
}
if (doc.docstatus==1) {
this.frm.add_custom_button(__('Delivery Trip'), function() {
me.make_delivery_trip() }, __('Create'));
}
if(doc.docstatus==0 && !doc.__islocal) {
if (doc.__onload && doc.__onload.has_unpacked_items) {
this.frm.add_custom_button(__('Packing Slip'), function() {
frappe.model.open_mapped_doc({
method: "erpnext.stock.doctype.delivery_note.delivery_note.make_packing_slip",
frm: me.frm
}) }, __('Create')
);
}
=======
if ( if (
!doc.is_return && !doc.is_return
(doc.status != "Closed" || this.frm.is_new()) && && (doc.status!="Closed" || this.frm.is_new())
this.frm.has_perm("write") && && this.frm.has_perm("write")
frappe.model.can_read("Sales Order") && && frappe.model.can_read("Sales Order")
this.frm.doc.docstatus === 0 && this.frm.doc.docstatus===0
) { ) {
this.frm.add_custom_button( this.frm.add_custom_button(
__("Sales Order"), __('Sales Order'),
function () { function() {
if (!me.frm.doc.customer) { if (!me.frm.doc.customer) {
frappe.throw({ frappe.throw({
title: __("Mandatory"), title: __("Mandatory"),
message: __("Please Select a Customer"), message: __("Please Select a Customer")
}); });
} }
erpnext.utils.map_current_doc({ erpnext.utils.map_current_doc({
method: "erpnext.selling.doctype.sales_order.sales_order.make_delivery_note", method: "erpnext.selling.doctype.sales_order.sales_order.make_delivery_note",
args: {
for_reserved_stock: 1,
},
source_doctype: "Sales Order", source_doctype: "Sales Order",
target: me.frm, target: me.frm,
setters: { setters: {
@@ -252,76 +168,59 @@ erpnext.stock.DeliveryNoteController = class DeliveryNoteController extends erpn
per_delivered: ["<", 99.99], per_delivered: ["<", 99.99],
company: me.frm.doc.company, company: me.frm.doc.company,
project: me.frm.doc.project || undefined, project: me.frm.doc.project || undefined,
}, }
}); })
}, },
__("Get Items From") __("Get Items From")
); );
} }
if (!doc.is_return && doc.status != "Closed" && frappe.model.can_create("Shipment")) { if (!doc.is_return && doc.status!="Closed") {
if (doc.docstatus == 1) { if (doc.docstatus == 1 && frappe.model.can_create("Shipment")) {
this.frm.add_custom_button( this.frm.add_custom_button(__('Shipment'), function() {
__("Shipment"), me.make_shipment() }, __('Create'));
function () {
me.make_shipment();
},
__("Create")
);
} }
if ( if (
flt(doc.per_installed, 2) < 100 && flt(doc.per_installed, 2) < 100
doc.docstatus == 1 && && doc.docstatus==1
frappe.model.can_create("Installation Note") && frappe.model.can_create("Installation Note")
) { ) {
this.frm.add_custom_button( this.frm.add_custom_button(
__("Installation Note"), __('Installation Note'),
function () { function() {
me.make_installation_note(); me.make_installation_note()
}, },
__("Create") __('Create')
); );
} }
if (doc.docstatus == 1 && this.frm.has_perm("create")) { if (doc.docstatus==1 && this.frm.has_perm("create")) {
this.frm.add_custom_button( this.frm.add_custom_button(__('Sales Return'), function() {
__("Sales Return"), me.make_sales_return() }, __('Create'));
function () {
me.make_sales_return();
},
__("Create")
);
} }
if (doc.docstatus == 1 && frappe.model.can_create("Delivery Trip")) { if (doc.docstatus==1 && frappe.model.can_create("Delivery Trip")) {
this.frm.add_custom_button( this.frm.add_custom_button(__('Delivery Trip'), function() {
__("Delivery Trip"), me.make_delivery_trip() }, __('Create'));
function () {
me.make_delivery_trip();
},
__("Create")
);
} }
if ( if (
doc.docstatus == 0 && doc.docstatus==0
!doc.__islocal && && !doc.__islocal
doc.__onload && && frappe.model.can_create("Packing Slip")
doc.__onload.has_unpacked_items && && (doc.__onload && doc.__onload.has_unpacked_items)
frappe.model.can_create("Packing Slip")
) { ) {
this.frm.add_custom_button( this.frm.add_custom_button(
__("Packing Slip"), __('Packing Slip'),
function () { function() {
frappe.model.open_mapped_doc({ frappe.model.open_mapped_doc({
method: "erpnext.stock.doctype.delivery_note.delivery_note.make_packing_slip", method: "erpnext.stock.doctype.delivery_note.delivery_note.make_packing_slip",
frm: me.frm, frm: me.frm
}); });
}, },
__("Create") __('Create')
); );
>>>>>>> 418bdc1dcc (fix(Delivery Note): only show permitted actions)
} }
if (!doc.__islocal && doc.docstatus==1) { if (!doc.__islocal && doc.docstatus==1) {
@@ -340,17 +239,13 @@ erpnext.stock.DeliveryNoteController = class DeliveryNoteController extends erpn
} }
} }
<<<<<<< HEAD if(
if(doc.docstatus==1 && !doc.is_return && doc.status!="Closed" && flt(doc.per_billed) < 100) { doc.docstatus==1
======= && !doc.is_return
if ( && doc.status!="Closed"
doc.docstatus == 1 && && flt(doc.per_billed) < 100
!doc.is_return && && frappe.model.can_create("Sales Invoice")
doc.status != "Closed" &&
flt(doc.per_billed) < 100 &&
frappe.model.can_create("Sales Invoice")
) { ) {
>>>>>>> 418bdc1dcc (fix(Delivery Note): only show permitted actions)
// show Make Invoice button only if Delivery Note is not created from Sales Invoice // show Make Invoice button only if Delivery Note is not created from Sales Invoice
var from_sales_invoice = false; var from_sales_invoice = false;
from_sales_invoice = me.frm.doc.items.some(function(item) { from_sales_invoice = me.frm.doc.items.some(function(item) {
@@ -369,7 +264,12 @@ erpnext.stock.DeliveryNoteController = class DeliveryNoteController extends erpn
} }
erpnext.stock.delivery_note.set_print_hide(doc, dt, dn); erpnext.stock.delivery_note.set_print_hide(doc, dt, dn);
if(doc.docstatus==1 && !doc.is_return && !doc.auto_repeat) { if(
doc.docstatus==1
&& !doc.is_return
&& !doc.auto_repeat
&& frappe.model.can_create("Auto Repeat")
) {
cur_frm.add_custom_button(__('Subscription'), function() { cur_frm.add_custom_button(__('Subscription'), function() {
erpnext.utils.make_subscription(doc.doctype, doc.name) erpnext.utils.make_subscription(doc.doctype, doc.name)
}, __('Create')) }, __('Create'))