Merge branch 'develop' into exotel-fixes
This commit is contained in:
commit
ce583c9a81
@ -34,7 +34,9 @@ class TaxWithholdingCategory(Document):
|
||||
|
||||
def validate_thresholds(self):
|
||||
for d in self.get("rates"):
|
||||
if d.cumulative_threshold and d.cumulative_threshold < d.single_threshold:
|
||||
if (
|
||||
d.cumulative_threshold and d.single_threshold and d.cumulative_threshold < d.single_threshold
|
||||
):
|
||||
frappe.throw(
|
||||
_("Row #{0}: Cumulative threshold cannot be less than Single Transaction threshold").format(
|
||||
d.idx
|
||||
|
@ -1,7 +1,8 @@
|
||||
{%- from "templates/print_formats/standard_macros.html" import add_header, render_field, print_value -%}
|
||||
{%- set einvoice = json.loads(doc.signed_einvoice) -%}
|
||||
|
||||
<div class="page-break">
|
||||
{% if doc.signed_einvoice %}
|
||||
{%- set einvoice = json.loads(doc.signed_einvoice) -%}
|
||||
<div {% if print_settings.repeat_header_footer %} id="header-html" class="hidden-pdf" {% endif %}>
|
||||
{% if letter_head and not no_letterhead %}
|
||||
<div class="letter-head">{{ letter_head }}</div>
|
||||
@ -170,4 +171,10 @@
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="text-center" style="color: var(--gray-500); font-size: 14px;">
|
||||
You must generate IRN before you can preview GST E-Invoice.
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
// For license information, please see license.txt
|
||||
|
||||
frappe.ui.form.on('Website Item', {
|
||||
onload: function(frm) {
|
||||
onload: (frm) => {
|
||||
// should never check Private
|
||||
frm.fields_dict["website_image"].df.is_private = 0;
|
||||
|
||||
@ -13,18 +13,35 @@ frappe.ui.form.on('Website Item', {
|
||||
});
|
||||
},
|
||||
|
||||
image: function() {
|
||||
refresh: (frm) => {
|
||||
frm.add_custom_button(__("Prices"), function() {
|
||||
frappe.set_route("List", "Item Price", {"item_code": frm.doc.item_code});
|
||||
}, __("View"));
|
||||
|
||||
frm.add_custom_button(__("Stock"), function() {
|
||||
frappe.route_options = {
|
||||
"item_code": frm.doc.item_code
|
||||
};
|
||||
frappe.set_route("query-report", "Stock Balance");
|
||||
}, __("View"));
|
||||
|
||||
frm.add_custom_button(__("E Commerce Settings"), function() {
|
||||
frappe.set_route("Form", "E Commerce Settings");
|
||||
}, __("View"));
|
||||
},
|
||||
|
||||
image: () => {
|
||||
refresh_field("image_view");
|
||||
},
|
||||
|
||||
copy_from_item_group: function(frm) {
|
||||
copy_from_item_group: (frm) => {
|
||||
return frm.call({
|
||||
doc: frm.doc,
|
||||
method: "copy_specification_from_item_group"
|
||||
});
|
||||
},
|
||||
|
||||
set_meta_tags(frm) {
|
||||
set_meta_tags: (frm) => {
|
||||
frappe.utils.set_meta_tag(frm.doc.route);
|
||||
}
|
||||
});
|
||||
|
@ -105,6 +105,30 @@ erpnext.setup_einvoice_actions = (doctype) => {
|
||||
},
|
||||
primary_action_label: __('Submit')
|
||||
});
|
||||
d.fields_dict.transporter.df.onchange = function () {
|
||||
const transporter = d.fields_dict.transporter.value;
|
||||
if (transporter) {
|
||||
frappe.db.get_value('Supplier', transporter, ['gst_transporter_id', 'supplier_name'])
|
||||
.then(({ message }) => {
|
||||
d.set_value('gst_transporter_id', message.gst_transporter_id);
|
||||
d.set_value('transporter_name', message.supplier_name);
|
||||
});
|
||||
} else {
|
||||
d.set_value('gst_transporter_id', '');
|
||||
d.set_value('transporter_name', '');
|
||||
}
|
||||
};
|
||||
d.fields_dict.driver.df.onchange = function () {
|
||||
const driver = d.fields_dict.driver.value;
|
||||
if (driver) {
|
||||
frappe.db.get_value('Driver', driver, ['full_name'])
|
||||
.then(({ message }) => {
|
||||
d.set_value('driver_name', message.full_name);
|
||||
});
|
||||
} else {
|
||||
d.set_value('driver_name', '');
|
||||
}
|
||||
};
|
||||
d.show();
|
||||
};
|
||||
|
||||
@ -153,7 +177,6 @@ const get_ewaybill_fields = (frm) => {
|
||||
'fieldname': 'gst_transporter_id',
|
||||
'label': 'GST Transporter ID',
|
||||
'fieldtype': 'Data',
|
||||
'fetch_from': 'transporter.gst_transporter_id',
|
||||
'default': frm.doc.gst_transporter_id
|
||||
},
|
||||
{
|
||||
@ -189,9 +212,9 @@ const get_ewaybill_fields = (frm) => {
|
||||
'fieldname': 'transporter_name',
|
||||
'label': 'Transporter Name',
|
||||
'fieldtype': 'Data',
|
||||
'fetch_from': 'transporter.name',
|
||||
'read_only': 1,
|
||||
'default': frm.doc.transporter_name
|
||||
'default': frm.doc.transporter_name,
|
||||
'depends_on': 'transporter'
|
||||
},
|
||||
{
|
||||
'fieldname': 'mode_of_transport',
|
||||
@ -206,7 +229,8 @@ const get_ewaybill_fields = (frm) => {
|
||||
'fieldtype': 'Data',
|
||||
'fetch_from': 'driver.full_name',
|
||||
'read_only': 1,
|
||||
'default': frm.doc.driver_name
|
||||
'default': frm.doc.driver_name,
|
||||
'depends_on': 'driver'
|
||||
},
|
||||
{
|
||||
'fieldname': 'lr_date',
|
||||
|
@ -387,7 +387,7 @@ def update_other_charges(
|
||||
|
||||
def get_payment_details(invoice):
|
||||
payee_name = invoice.company
|
||||
mode_of_payment = ", ".join([d.mode_of_payment for d in invoice.payments])
|
||||
mode_of_payment = ""
|
||||
paid_amount = invoice.base_paid_amount
|
||||
outstanding_amount = invoice.outstanding_amount
|
||||
|
||||
|
@ -55,10 +55,15 @@ frappe.ui.form.on("Item", {
|
||||
|
||||
if (frm.doc.has_variants) {
|
||||
frm.set_intro(__("This Item is a Template and cannot be used in transactions. Item attributes will be copied over into the variants unless 'No Copy' is set"), true);
|
||||
|
||||
frm.add_custom_button(__("Show Variants"), function() {
|
||||
frappe.set_route("List", "Item", {"variant_of": frm.doc.name});
|
||||
}, __("View"));
|
||||
|
||||
frm.add_custom_button(__("Item Variant Settings"), function() {
|
||||
frappe.set_route("Form", "Item Variant Settings");
|
||||
}, __("View"));
|
||||
|
||||
frm.add_custom_button(__("Variant Details Report"), function() {
|
||||
frappe.set_route("query-report", "Item Variant Details", {"item": frm.doc.name});
|
||||
}, __("View"));
|
||||
@ -110,6 +115,13 @@ frappe.ui.form.on("Item", {
|
||||
}
|
||||
});
|
||||
}, __('Actions'));
|
||||
} else {
|
||||
frm.add_custom_button(__("Website Item"), function() {
|
||||
frappe.db.get_value("Website Item", {item_code: frm.doc.name}, "name", (d) => {
|
||||
if (!d.name) frappe.throw(__("Website Item not found"));
|
||||
frappe.set_route("Form", "Website Item", d.name);
|
||||
});
|
||||
}, __("View"));
|
||||
}
|
||||
|
||||
erpnext.item.edit_prices_button(frm);
|
||||
@ -131,12 +143,6 @@ frappe.ui.form.on("Item", {
|
||||
frappe.set_route('Form', 'Item', new_item.name);
|
||||
});
|
||||
|
||||
if(frm.doc.has_variants) {
|
||||
frm.add_custom_button(__("Item Variant Settings"), function() {
|
||||
frappe.set_route("Form", "Item Variant Settings");
|
||||
}, __("View"));
|
||||
}
|
||||
|
||||
const stock_exists = (frm.doc.__onload
|
||||
&& frm.doc.__onload.stock_exists) ? 1 : 0;
|
||||
|
||||
|
@ -32,5 +32,6 @@ def get_data():
|
||||
{"label": _("Manufacture"), "items": ["Production Plan", "Work Order", "Item Manufacturer"]},
|
||||
{"label": _("Traceability"), "items": ["Serial No", "Batch"]},
|
||||
{"label": _("Move"), "items": ["Stock Entry"]},
|
||||
{"label": _("E-commerce"), "items": ["Website Item"]},
|
||||
],
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user