Merge branch 'develop' into exotel-fixes
This commit is contained in:
commit
ce583c9a81
@ -34,7 +34,9 @@ class TaxWithholdingCategory(Document):
|
|||||||
|
|
||||||
def validate_thresholds(self):
|
def validate_thresholds(self):
|
||||||
for d in self.get("rates"):
|
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(
|
frappe.throw(
|
||||||
_("Row #{0}: Cumulative threshold cannot be less than Single Transaction threshold").format(
|
_("Row #{0}: Cumulative threshold cannot be less than Single Transaction threshold").format(
|
||||||
d.idx
|
d.idx
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
{%- from "templates/print_formats/standard_macros.html" import add_header, render_field, print_value -%}
|
{%- 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">
|
<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 %}>
|
<div {% if print_settings.repeat_header_footer %} id="header-html" class="hidden-pdf" {% endif %}>
|
||||||
{% if letter_head and not no_letterhead %}
|
{% if letter_head and not no_letterhead %}
|
||||||
<div class="letter-head">{{ letter_head }}</div>
|
<div class="letter-head">{{ letter_head }}</div>
|
||||||
@ -170,4 +171,10 @@
|
|||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</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>
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
// For license information, please see license.txt
|
// For license information, please see license.txt
|
||||||
|
|
||||||
frappe.ui.form.on('Website Item', {
|
frappe.ui.form.on('Website Item', {
|
||||||
onload: function(frm) {
|
onload: (frm) => {
|
||||||
// should never check Private
|
// should never check Private
|
||||||
frm.fields_dict["website_image"].df.is_private = 0;
|
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");
|
refresh_field("image_view");
|
||||||
},
|
},
|
||||||
|
|
||||||
copy_from_item_group: function(frm) {
|
copy_from_item_group: (frm) => {
|
||||||
return frm.call({
|
return frm.call({
|
||||||
doc: frm.doc,
|
doc: frm.doc,
|
||||||
method: "copy_specification_from_item_group"
|
method: "copy_specification_from_item_group"
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
set_meta_tags(frm) {
|
set_meta_tags: (frm) => {
|
||||||
frappe.utils.set_meta_tag(frm.doc.route);
|
frappe.utils.set_meta_tag(frm.doc.route);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -105,6 +105,30 @@ erpnext.setup_einvoice_actions = (doctype) => {
|
|||||||
},
|
},
|
||||||
primary_action_label: __('Submit')
|
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();
|
d.show();
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -153,7 +177,6 @@ const get_ewaybill_fields = (frm) => {
|
|||||||
'fieldname': 'gst_transporter_id',
|
'fieldname': 'gst_transporter_id',
|
||||||
'label': 'GST Transporter ID',
|
'label': 'GST Transporter ID',
|
||||||
'fieldtype': 'Data',
|
'fieldtype': 'Data',
|
||||||
'fetch_from': 'transporter.gst_transporter_id',
|
|
||||||
'default': frm.doc.gst_transporter_id
|
'default': frm.doc.gst_transporter_id
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -189,9 +212,9 @@ const get_ewaybill_fields = (frm) => {
|
|||||||
'fieldname': 'transporter_name',
|
'fieldname': 'transporter_name',
|
||||||
'label': 'Transporter Name',
|
'label': 'Transporter Name',
|
||||||
'fieldtype': 'Data',
|
'fieldtype': 'Data',
|
||||||
'fetch_from': 'transporter.name',
|
|
||||||
'read_only': 1,
|
'read_only': 1,
|
||||||
'default': frm.doc.transporter_name
|
'default': frm.doc.transporter_name,
|
||||||
|
'depends_on': 'transporter'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'fieldname': 'mode_of_transport',
|
'fieldname': 'mode_of_transport',
|
||||||
@ -206,7 +229,8 @@ const get_ewaybill_fields = (frm) => {
|
|||||||
'fieldtype': 'Data',
|
'fieldtype': 'Data',
|
||||||
'fetch_from': 'driver.full_name',
|
'fetch_from': 'driver.full_name',
|
||||||
'read_only': 1,
|
'read_only': 1,
|
||||||
'default': frm.doc.driver_name
|
'default': frm.doc.driver_name,
|
||||||
|
'depends_on': 'driver'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'fieldname': 'lr_date',
|
'fieldname': 'lr_date',
|
||||||
|
@ -387,7 +387,7 @@ def update_other_charges(
|
|||||||
|
|
||||||
def get_payment_details(invoice):
|
def get_payment_details(invoice):
|
||||||
payee_name = invoice.company
|
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
|
paid_amount = invoice.base_paid_amount
|
||||||
outstanding_amount = invoice.outstanding_amount
|
outstanding_amount = invoice.outstanding_amount
|
||||||
|
|
||||||
|
@ -55,10 +55,15 @@ frappe.ui.form.on("Item", {
|
|||||||
|
|
||||||
if (frm.doc.has_variants) {
|
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.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() {
|
frm.add_custom_button(__("Show Variants"), function() {
|
||||||
frappe.set_route("List", "Item", {"variant_of": frm.doc.name});
|
frappe.set_route("List", "Item", {"variant_of": frm.doc.name});
|
||||||
}, __("View"));
|
}, __("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() {
|
frm.add_custom_button(__("Variant Details Report"), function() {
|
||||||
frappe.set_route("query-report", "Item Variant Details", {"item": frm.doc.name});
|
frappe.set_route("query-report", "Item Variant Details", {"item": frm.doc.name});
|
||||||
}, __("View"));
|
}, __("View"));
|
||||||
@ -110,6 +115,13 @@ frappe.ui.form.on("Item", {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}, __('Actions'));
|
}, __('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);
|
erpnext.item.edit_prices_button(frm);
|
||||||
@ -131,12 +143,6 @@ frappe.ui.form.on("Item", {
|
|||||||
frappe.set_route('Form', 'Item', new_item.name);
|
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
|
const stock_exists = (frm.doc.__onload
|
||||||
&& frm.doc.__onload.stock_exists) ? 1 : 0;
|
&& frm.doc.__onload.stock_exists) ? 1 : 0;
|
||||||
|
|
||||||
|
@ -32,5 +32,6 @@ def get_data():
|
|||||||
{"label": _("Manufacture"), "items": ["Production Plan", "Work Order", "Item Manufacturer"]},
|
{"label": _("Manufacture"), "items": ["Production Plan", "Work Order", "Item Manufacturer"]},
|
||||||
{"label": _("Traceability"), "items": ["Serial No", "Batch"]},
|
{"label": _("Traceability"), "items": ["Serial No", "Batch"]},
|
||||||
{"label": _("Move"), "items": ["Stock Entry"]},
|
{"label": _("Move"), "items": ["Stock Entry"]},
|
||||||
|
{"label": _("E-commerce"), "items": ["Website Item"]},
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user