From c9154db5edbe7cc6b74f1a6d0ccca4a8bc9de38b Mon Sep 17 00:00:00 2001 From: Saqib Date: Wed, 27 Oct 2021 11:39:00 +0530 Subject: [PATCH] feat(e-invoicing): dispatch address (#28084) (cherry picked from commit cb97e950e67c85ad54210f8d32ebb4d5e33965c0) # Conflicts: # erpnext/regional/india/e_invoice/utils.py --- .../gst_e_invoice/gst_e_invoice.html | 13 ++++++++++++- .../india/e_invoice/einv_template.json | 2 +- erpnext/regional/india/e_invoice/utils.py | 19 ++++++++++++++----- 3 files changed, 27 insertions(+), 7 deletions(-) diff --git a/erpnext/accounts/print_format/gst_e_invoice/gst_e_invoice.html b/erpnext/accounts/print_format/gst_e_invoice/gst_e_invoice.html index 66981763c128..a65aa1ad39e9 100644 --- a/erpnext/accounts/print_format/gst_e_invoice/gst_e_invoice.html +++ b/erpnext/accounts/print_format/gst_e_invoice/gst_e_invoice.html @@ -72,7 +72,7 @@
Seller
{%- if einvoice.ShipDtls -%} {%- set shipping = einvoice.ShipDtls -%} -
Shipping
+
Shipped From

{{ shipping.Gstin }}

{{ shipping.LglNm }}

{{ shipping.Addr1 }}

@@ -90,6 +90,17 @@
Buyer
{%- if buyer.Addr2 -%}

{{ buyer.Addr2 }}

{% endif %}

{{ buyer.Loc }}

{{ frappe.db.get_value("Address", doc.customer_address, "gst_state") }} - {{ buyer.Pin }}

+ + {%- if einvoice.DispDtls -%} + {%- set dispatch = einvoice.DispDtls -%} +
Dispatched From
+ {%- if dispatch.Gstin -%}

{{ dispatch.Gstin }}

{% endif %} +

{{ dispatch.LglNm }}

+

{{ dispatch.Addr1 }}

+ {%- if dispatch.Addr2 -%}

{{ dispatch.Addr2 }}

{% endif %} +

{{ dispatch.Loc }}

+

{{ frappe.db.get_value("Address", doc.dispatch_address_name, "gst_state") }} - {{ dispatch.Pin }}

+ {% endif %}
diff --git a/erpnext/regional/india/e_invoice/einv_template.json b/erpnext/regional/india/e_invoice/einv_template.json index 60f490d61669..c2a28f20494c 100644 --- a/erpnext/regional/india/e_invoice/einv_template.json +++ b/erpnext/regional/india/e_invoice/einv_template.json @@ -38,7 +38,7 @@ "Pos": "{buyer_details.place_of_supply}" }}, "DispDtls": {{ - "Nm": "{dispatch_details.company_name}", + "Nm": "{dispatch_details.legal_name}", "Addr1": "{dispatch_details.address_line1}", "Addr2": "{dispatch_details.address_line2}", "Loc": "{dispatch_details.location}", diff --git a/erpnext/regional/india/e_invoice/utils.py b/erpnext/regional/india/e_invoice/utils.py index f788ce9a8d5d..37d4d090e2a0 100644 --- a/erpnext/regional/india/e_invoice/utils.py +++ b/erpnext/regional/india/e_invoice/utils.py @@ -113,8 +113,8 @@ def get_doc_details(invoice): invoice_date=invoice_date )) -def validate_address_fields(address, is_shipping_address): - if ((not address.gstin and not is_shipping_address) +def validate_address_fields(address, skip_gstin_validation): + if ((not address.gstin and not skip_gstin_validation) or not address.city or not address.pincode or not address.address_title @@ -126,10 +126,10 @@ def validate_address_fields(address, is_shipping_address): title=_('Missing Address Fields') ) -def get_party_details(address_name, is_shipping_address=False): +def get_party_details(address_name, skip_gstin_validation=False): addr = frappe.get_doc('Address', address_name) - validate_address_fields(addr, is_shipping_address) + validate_address_fields(addr, skip_gstin_validation) if addr.gst_state_number == 97: # according to einvoice standard @@ -434,8 +434,17 @@ def make_einvoice(invoice): if invoice.gst_category == 'Overseas': shipping_details = get_overseas_address_details(invoice.shipping_address_name) else: +<<<<<<< HEAD shipping_details = get_party_details(invoice.shipping_address_name, is_shipping_address=True) +======= + shipping_details = get_party_details(invoice.shipping_address_name, skip_gstin_validation=True) + + dispatch_details = frappe._dict({}) + if invoice.dispatch_address_name: + dispatch_details = get_party_details(invoice.dispatch_address_name, skip_gstin_validation=True) + +>>>>>>> cb97e950e6 (feat(e-invoicing): dispatch address (#28084)) if invoice.is_pos and invoice.base_paid_amount: payment_details = get_payment_details(invoice) @@ -446,7 +455,7 @@ def make_einvoice(invoice): eway_bill_details = get_eway_bill_details(invoice) # not yet implemented - dispatch_details = period_details = export_details = frappe._dict({}) + period_details = export_details = frappe._dict({}) einvoice = schema.format( transaction_details=transaction_details, doc_details=doc_details, dispatch_details=dispatch_details,