Merge pull request #16787 from rohitwaghchaure/italian_more_fixes
fix: e-invoicing patch, patch to set country code in the address
diff --git a/erpnext/patches.txt b/erpnext/patches.txt
index b1a393b..1f104be 100755
--- a/erpnext/patches.txt
+++ b/erpnext/patches.txt
@@ -587,4 +587,4 @@
execute:frappe.delete_doc('DocType', 'Notification Control')
erpnext.patches.v11_0.remove_barcodes_field_from_copy_fields_to_variants
erpnext.patches.v10_0.item_barcode_childtable_migrate # 16-02-2019
-erpnext.patches.v11_0.make_italian_localization_fields
+erpnext.patches.v11_0.make_italian_localization_fields # 26-02-2019
diff --git a/erpnext/patches/v11_0/make_italian_localization_fields.py b/erpnext/patches/v11_0/make_italian_localization_fields.py
index fa77149..44a281f 100644
--- a/erpnext/patches/v11_0/make_italian_localization_fields.py
+++ b/erpnext/patches/v11_0/make_italian_localization_fields.py
@@ -22,7 +22,9 @@
condition += " when '{0}' then '{1}'".format(frappe.db.escape(state), frappe.db.escape(code))
if condition:
- frappe.db.sql("""
- UPDATE tabAddress set state_code = (case state {condition} end)
- WHERE country in ('Italy', 'Italia', 'Italian Republic', 'Repubblica Italiana')
- """.format(condition=condition))
+ condition = "state_code = (case state {0} end),".format(condition)
+
+ frappe.db.sql("""
+ UPDATE tabAddress set {condition} country_code = UPPER(ifnull((select code
+ from `tabCountry` where name = `tabAddress`.country), ''))
+ """.format(condition=condition))
diff --git a/erpnext/regional/italy/e-invoice.xml b/erpnext/regional/italy/e-invoice.xml
index 30ac1e0..c0ef4af 100644
--- a/erpnext/regional/italy/e-invoice.xml
+++ b/erpnext/regional/italy/e-invoice.xml
@@ -9,7 +9,7 @@
{%- if address.state_code %}
<Provincia>{{ address.state_code }}</Provincia>
{%- endif %}
-<Nazione>{{ address.country_code|upper }}</Nazione>
+<Nazione>{{ address.country_code }}</Nazione>
{%- endmacro %}
{%- macro render_discount_or_margin(item) -%}
@@ -40,7 +40,7 @@
<FatturaElettronicaHeader>
<DatiTrasmissione>
<IdTrasmittente>
- <IdPaese>{{ doc.company_address_data.country_code|upper or "IT" }}</IdPaese>
+ <IdPaese>{{ doc.company_address_data.country_code }}</IdPaese>
<IdCodice>{{ doc.company_fiscal_code or doc.company_tax_id | replace("IT","") }}</IdCodice>
</IdTrasmittente>
<ProgressivoInvio>{{ doc.progressive_number }}</ProgressivoInvio>
@@ -56,7 +56,7 @@
<CedentePrestatore>
<DatiAnagrafici>
<IdFiscaleIVA>
- <IdPaese>{{ doc.company_address_data.country_code|upper or "IT"}}</IdPaese>
+ <IdPaese>{{ doc.company_address_data.country_code }}</IdPaese>
<IdCodice>{{ doc.company_tax_id | replace("IT","") }}</IdCodice>
</IdFiscaleIVA>
{%- if doc.company_fiscal_code %}
@@ -99,7 +99,7 @@
<CodiceFiscale>{{ doc.customer_data.fiscal_code }}</CodiceFiscale>
{%- else %}
<IdFiscaleIVA>
- <IdPaese>{{ doc.customer_address_data.country_code|upper or "IT" }}</IdPaese>
+ <IdPaese>{{ doc.customer_address_data.country_code }}</IdPaese>
<IdCodice>{{ doc.tax_id | replace("IT","") }}</IdCodice>
</IdFiscaleIVA>
{%- endif %}
@@ -160,7 +160,7 @@
<CodiceTipo>CODICE</CodiceTipo>
<CodiceValore>{{ item.item_code }}</CodiceValore>
</CodiceArticolo>
- <Descrizione>{{ html2text(item.description) or item.item_name }}</Descrizione>
+ <Descrizione>{{ html2text(item.description or '') or item.item_name }}</Descrizione>
<Quantita>{{ format_float(item.qty) }}</Quantita>
<UnitaMisura>{{ item.stock_uom }}</UnitaMisura>
<PrezzoUnitario>{{ format_float(item.price_list_rate or item.rate) }}</PrezzoUnitario>
diff --git a/erpnext/regional/italy/setup.py b/erpnext/regional/italy/setup.py
index a9de2d1..1bbc722 100644
--- a/erpnext/regional/italy/setup.py
+++ b/erpnext/regional/italy/setup.py
@@ -132,7 +132,7 @@
'Supplier Quotation Item': invoice_item_fields,
'Address': [
dict(fieldname='country_code', label='Country Code',
- fieldtype='Data', insert_after='country', print_hide=1, read_only=1,
+ fieldtype='Data', insert_after='country', print_hide=1, read_only=0,
fetch_from="country.code"),
dict(fieldname='state_code', label='State Code',
fieldtype='Data', insert_after='state', print_hide=1)
diff --git a/erpnext/regional/italy/utils.py b/erpnext/regional/italy/utils.py
index 540cea3..edf66d7 100644
--- a/erpnext/regional/italy/utils.py
+++ b/erpnext/regional/italy/utils.py
@@ -189,7 +189,7 @@
if not doc.company_address:
frappe.throw(_("Please set an Address on the Company '%s'" % doc.company), title=_("E-Invoicing Information Missing"))
else:
- validate_address(doc.company_address, "Company")
+ validate_address(doc.company_address)
company_fiscal_regime = frappe.get_cached_value("Company", doc.company, 'fiscal_regime')
if not company_fiscal_regime:
@@ -217,7 +217,7 @@
if not doc.customer_address:
frappe.throw(_("Please set the Customer Address"), title=_("E-Invoicing Information Missing"))
else:
- validate_address(doc.customer_address, "Customer")
+ validate_address(doc.customer_address)
if not len(doc.taxes):
frappe.throw(_("Please set at least one row in the Taxes and Charges Table"), title=_("E-Invoicing Information Missing"))
@@ -285,13 +285,14 @@
return out
-def validate_address(address_name, address_context):
- pincode, city = frappe.db.get_value("Address", address_name, ["pincode", "city"])
- if not pincode:
- frappe.throw(_("Please set pin code on %s Address" % address_context), title=_("E-Invoicing Information Missing"))
- if not city:
- frappe.throw(_("Please set city on %s Address" % address_context), title=_("E-Invoicing Information Missing"))
+def validate_address(address_name):
+ fields = ["pincode", "city", "country_code"]
+ data = frappe.get_cached_value("Address", address_name, fields, as_dict=1) or {}
+ for field in fields:
+ if not data.get(field):
+ frappe.throw(_("Please set {0} for address {1}".format(field.replace('-',''), address_name)),
+ title=_("E-Invoicing Information Missing"))
def get_unamended_name(doc):
attributes = ["naming_series", "amended_from"]
@@ -312,6 +313,9 @@
return progressive_name, progressive_number
def set_state_code(doc, method):
+ if doc.get('country_code'):
+ doc.country_code = doc.country_code.upper()
+
if not doc.get('state'):
return