fix(e-invoicing): add company validation for e-invoicing (#25348)
Co-authored-by: Nabin Hait <nabinhait@gmail.com>
This commit is contained in:
parent
18c7815a1b
commit
75e13f7bb6
@ -1879,7 +1879,17 @@ class TestSalesInvoice(unittest.TestCase):
|
|||||||
|
|
||||||
def test_einvoice_submission_without_irn(self):
|
def test_einvoice_submission_without_irn(self):
|
||||||
# init
|
# init
|
||||||
frappe.db.set_value('E Invoice Settings', 'E Invoice Settings', 'enable', 1)
|
einvoice_settings = frappe.get_doc('E Invoice Settings')
|
||||||
|
einvoice_settings.enable = 1
|
||||||
|
einvoice_settings.applicable_from = nowdate()
|
||||||
|
einvoice_settings.append('credentials', {
|
||||||
|
'company': '_Test Company',
|
||||||
|
'gstin': '27AAECE4835E1ZR',
|
||||||
|
'username': 'test',
|
||||||
|
'password': 'test'
|
||||||
|
})
|
||||||
|
einvoice_settings.save()
|
||||||
|
|
||||||
country = frappe.flags.country
|
country = frappe.flags.country
|
||||||
frappe.flags.country = 'India'
|
frappe.flags.country = 'India'
|
||||||
|
|
||||||
@ -1890,7 +1900,8 @@ class TestSalesInvoice(unittest.TestCase):
|
|||||||
si.submit()
|
si.submit()
|
||||||
|
|
||||||
# reset
|
# reset
|
||||||
frappe.db.set_value('E Invoice Settings', 'E Invoice Settings', 'enable', 0)
|
einvoice_settings = frappe.get_doc('E Invoice Settings')
|
||||||
|
einvoice_settings.enable = 0
|
||||||
frappe.flags.country = country
|
frappe.flags.country = country
|
||||||
|
|
||||||
def test_einvoice_json(self):
|
def test_einvoice_json(self):
|
||||||
|
@ -38,12 +38,13 @@ def validate_eligibility(doc):
|
|||||||
einvoicing_eligible_from = frappe.db.get_single_value('E Invoice Settings', 'applicable_from') or '2021-04-01'
|
einvoicing_eligible_from = frappe.db.get_single_value('E Invoice Settings', 'applicable_from') or '2021-04-01'
|
||||||
if getdate(doc.get('posting_date')) < getdate(einvoicing_eligible_from):
|
if getdate(doc.get('posting_date')) < getdate(einvoicing_eligible_from):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
invalid_company = not frappe.db.get_value('E Invoice User', { 'company': doc.get('company') })
|
||||||
invalid_supply_type = doc.get('gst_category') not in ['Registered Regular', 'SEZ', 'Overseas', 'Deemed Export']
|
invalid_supply_type = doc.get('gst_category') not in ['Registered Regular', 'SEZ', 'Overseas', 'Deemed Export']
|
||||||
company_transaction = doc.get('billing_address_gstin') == doc.get('company_gstin')
|
company_transaction = doc.get('billing_address_gstin') == doc.get('company_gstin')
|
||||||
no_taxes_applied = not doc.get('taxes')
|
no_taxes_applied = not doc.get('taxes')
|
||||||
|
|
||||||
if invalid_supply_type or company_transaction or no_taxes_applied:
|
if invalid_company or invalid_supply_type or company_transaction or no_taxes_applied:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
return True
|
return True
|
||||||
@ -400,7 +401,7 @@ def validate_totals(einvoice):
|
|||||||
if abs(flt(value_details['AssVal']) - total_item_ass_value) > 1:
|
if abs(flt(value_details['AssVal']) - total_item_ass_value) > 1:
|
||||||
frappe.throw(_('Total Taxable Value of the items is not equal to the Invoice Net Total. Please check item taxes / discounts for any correction.'))
|
frappe.throw(_('Total Taxable Value of the items is not equal to the Invoice Net Total. Please check item taxes / discounts for any correction.'))
|
||||||
|
|
||||||
if abs(flt(value_details['TotInvVal']) + flt(value_details['Discount']) - total_item_value) > 1:
|
if abs(flt(value_details['TotInvVal']) + flt(value_details['Discount']) - flt(value_details['OthChrg']) - total_item_value) > 1:
|
||||||
frappe.throw(_('Total Value of the items is not equal to the Invoice Grand Total. Please check item taxes / discounts for any correction.'))
|
frappe.throw(_('Total Value of the items is not equal to the Invoice Grand Total. Please check item taxes / discounts for any correction.'))
|
||||||
|
|
||||||
calculated_invoice_value = \
|
calculated_invoice_value = \
|
||||||
|
Loading…
Reference in New Issue
Block a user