Skip to content

Commit

Permalink
fix: e_way bill for inward material transfer
Browse files Browse the repository at this point in the history
  • Loading branch information
Ninad1306 committed Sep 6, 2024
1 parent 7b982a8 commit d768fcb
Show file tree
Hide file tree
Showing 4 changed files with 85 additions and 22 deletions.
41 changes: 36 additions & 5 deletions india_compliance/gst_india/client_scripts/stock_entry.js
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,11 @@ frappe.ui.form.on(DOCTYPE, {
filters: get_filters_for_relevant_stock_entries(doc),
};
});

// No event trigger are called when form is new
if (frm.is_new()) {
frm.trigger("bill_to_address");
}
},

onload(frm) {
Expand All @@ -44,8 +49,7 @@ frappe.ui.form.on(DOCTYPE, {
on_change_set_address(
frm,
"supplier_address",
"bill_to_address",
__("Bill To (same as Supplier Address)"),
...get_field_and_label(frm, "party_field"),
__("Bill To")
);
},
Expand All @@ -72,8 +76,7 @@ frappe.ui.form.on(DOCTYPE, {
on_change_set_address(
frm,
"supplier_address",
"bill_to_address",
__("Bill To (same as Supplier Address)"),
...get_field_and_label(frm, "party_field"),
__("Bill To")
);
},
Expand Down Expand Up @@ -107,7 +110,10 @@ frappe.ui.form.on(DOCTYPE, {
name: frm.doc.company,
},
callback(r) {
frm.set_value("bill_from_address", r.message);
frm.set_value(
get_field_and_label(frm, "company_field")[0],
r.message
);
},
});
}
Expand Down Expand Up @@ -190,3 +196,28 @@ function get_filters_for_relevant_stock_entries(doc) {
function get_items(doc) {
return Array.from(new Set(doc.items.map(row => row.item_code)));
}

function get_field_and_label(frm, field) {
let field_dict = {};
let label_dict = {};
if (frm.doc.purpose === "Material Transfer" && frm.doc.is_return) {
field_dict = {
party_field: "bill_from_address",
company_field: "bill_to_address",
};
label_dict = {
party_field: __("Bill From (same as Supplier Address)"),
company_field: __("Bill To"),
};
} else {
field_dict = {
party_field: "bill_to_address",
company_field: "bill_from_address",
};
label_dict = {
party_field: __("Bill To (same as Supplier Address)"),
company_field: __("Bill From"),
};
}
return [field_dict[field], label_dict[field]];
}
13 changes: 10 additions & 3 deletions india_compliance/gst_india/overrides/subcontracting_transaction.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,11 +69,18 @@ def after_mapping_subcontracting_order(doc, method, source_doc):


def after_mapping_stock_entry(doc, method, source_doc):
if source_doc.doctype == "Subcontracting Order":
if not source_doc.doctype == "Subcontracting Order":
doc.taxes_and_charges = ""
doc.taxes = []

if not doc.purpose == "Material Transfer" or not doc.is_return:
return

doc.taxes_and_charges = ""
doc.taxes = []
doc.bill_to_address = source_doc.billing_address
doc.bill_from_address = source_doc.supplier_address
doc.bill_to_gstin = source_doc.company_gstin
doc.bill_from_gstin = source_doc.supplier_gstin
set_address_display(doc)


def before_mapping_subcontracting_receipt(doc, method, source_doc, table_maps):
Expand Down
29 changes: 19 additions & 10 deletions india_compliance/gst_india/overrides/transaction.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,6 @@ def set_gst_breakup(doc):


def update_taxable_values(doc):

if doc.doctype not in DOCTYPES_WITH_GST_DETAIL:
return

Expand Down Expand Up @@ -785,9 +784,15 @@ def update_party_details(party_details, doctype, company):
def get_party_details_for_subcontracting(party_details, doctype, company):
party_details = frappe.parse_json(party_details)

party_address_field = (
"supplier_address" if doctype != "Stock Entry" else "bill_to_address"
)
if doctype == "Stock Entry":
party_address_field = (
"bill_from_address"
if party_details.get("is_inward_material_transfer")
else "bill_to_address"
)
else:
party_address_field = "supplier_address"

party_details[party_address_field] = get_default_address(
"Supplier", party_details.supplier
)
Expand Down Expand Up @@ -817,7 +822,6 @@ def get_gst_details(party_details, doctype, company, *, update_place_of_supply=F
- tax template
- taxes in the tax template
"""

is_sales_transaction = doctype in SALES_DOCTYPES or doctype == "Payment Entry"
party_details = frappe.parse_json(party_details)
gst_details = frappe._dict()
Expand All @@ -834,10 +838,16 @@ def get_gst_details(party_details, doctype, company, *, update_place_of_supply=F
gst_category_field = "gst_category"

elif doctype == "Stock Entry":
company_gstin_field = "bill_from_gstin"
party_gstin_field = "bill_to_gstin"
party_address_field = "bill_to_address"
gst_category_field = "bill_to_gst_category"
if party_details.get("is_inward_material_transfer"):
company_gstin_field = "bill_to_gstin"
party_gstin_field = "bill_from_gstin"
party_address_field = "bill_from_address"
gst_category_field = "bill_from_gst_category"
else:
company_gstin_field = "bill_from_gstin"
party_gstin_field = "bill_to_gstin"
party_address_field = "bill_to_address"
gst_category_field = "bill_to_gst_category"

else:
company_gstin_field = "company_gstin"
Expand Down Expand Up @@ -1529,7 +1539,6 @@ def before_print(doc, method=None, print_settings=None):


def onload(doc, method=None):

if ignore_gst_validations(doc) or not doc.place_of_supply or not doc.company_gstin:
return

Expand Down
24 changes: 20 additions & 4 deletions india_compliance/public/js/transaction.js
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ function fetch_gst_details(doctype) {
"is_export_with_gst"
);
} else if (doctype === "Stock Entry") {
event_fields.push("bill_from_gstin", "bill_to_address");
event_fields.push("bill_from_address", "bill_to_address");
} else if (["Subcontracting Order", "Subcontracting Receipt"].includes(doctype)) {
event_fields.push("supplier_gstin");
} else {
Expand Down Expand Up @@ -87,7 +87,6 @@ async function update_gst_details(frm, event) {

if (!party && !is_outward_material_transfer_or_issue) return;


if (
[
"company_gstin",
Expand Down Expand Up @@ -146,9 +145,15 @@ async function update_gst_details(frm, event) {
fieldnames_to_set.push(
"bill_from_gstin",
"bill_to_gstin",
"bill_to_address",
"bill_from_address",
"bill_to_address"
);
party_details["is_outward_material_transfer_or_issue"] = is_outward_material_transfer_or_issue;

party_details["is_outward_material_transfer_or_issue"] =
["Material Transfer", "Material Issue"].includes(frm.doc.purpose) &&
!frm.doc.is_return;
party_details["is_inward_material_transfer"] =
frm.doc.purpose === "Material Transfer" && frm.doc.is_return;
} else {
fieldnames_to_set.push("supplier_address", "supplier_gstin");
}
Expand Down Expand Up @@ -382,17 +387,28 @@ function _set_e_commerce_ecommerce_supply_type(frm) {

function fetch_party_details(doctype) {
let company_gstin_field = "company_gstin";
let is_inward_material_transfer = false;

if (doctype === "Stock Entry") {
company_gstin_field = "bill_from_gstin";
}

frappe.ui.form.on(doctype, {
supplier(frm) {
if (
frm.doc.doctype === "Stock Entry" &&
frm.doc.purpose === "Material Transfer" &&
frm.doc.is_return
) {
company_gstin_field = "bill_to_gstin";
is_inward_material_transfer = true;
}

setTimeout(() => {
const party_details = {
[company_gstin_field]: frm.doc[company_gstin_field],
supplier: frm.doc.supplier,
is_inward_material_transfer,
};
const args = {
party_details: JSON.stringify(party_details),
Expand Down

0 comments on commit d768fcb

Please sign in to comment.