mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-27 00:44:45 +00:00
fix: Addd patch for availed ITC fields
This commit is contained in:
@@ -2,9 +2,10 @@ from __future__ import unicode_literals
|
|||||||
import frappe
|
import frappe
|
||||||
from frappe.custom.doctype.custom_field.custom_field import create_custom_fields
|
from frappe.custom.doctype.custom_field.custom_field import create_custom_fields
|
||||||
from frappe.custom.doctype.property_setter.property_setter import make_property_setter
|
from frappe.custom.doctype.property_setter.property_setter import make_property_setter
|
||||||
|
from erpnext.regional.india.utils import get_gst_accounts
|
||||||
|
|
||||||
def execute():
|
def execute():
|
||||||
company = frappe.get_all('Company', filters = {'country': 'India'})
|
company = frappe.get_all('Company', filters = {'country': 'India'}, fields=['name'])
|
||||||
if not company:
|
if not company:
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -31,8 +32,64 @@ def execute():
|
|||||||
'Purchase Invoice': [
|
'Purchase Invoice': [
|
||||||
dict(fieldname='eligibility_for_itc', label='Eligibility For ITC',
|
dict(fieldname='eligibility_for_itc', label='Eligibility For ITC',
|
||||||
fieldtype='Select', insert_after='reason_for_issuing_document', print_hide=1,
|
fieldtype='Select', insert_after='reason_for_issuing_document', print_hide=1,
|
||||||
options='Input Service Distributor\nImport Of Service\nImport Of Capital Goods\nITC on Reverse Charge\nIneligible\nAll Other ITC', default="All Other ITC")
|
options='Input Service Distributor\nImport Of Service\nImport Of Capital Goods\nITC on Reverse Charge\nIneligible As Per Section 17(5)\nIneligible Others\nAll Other ITC',
|
||||||
|
default="All Other ITC")
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
create_custom_fields(custom_fields, update=True)
|
create_custom_fields(custom_fields, update=True)
|
||||||
|
|
||||||
|
# Patch ITC Availed fields from Data to Currency
|
||||||
|
# Patch Availed ITC for current fiscal_year
|
||||||
|
|
||||||
|
gst_accounts = get_gst_accounts(only_non_reverse_charge=1)
|
||||||
|
|
||||||
|
frappe.db.sql("""
|
||||||
|
UPDATE `tabCustom Field` SET fieldtype='Currency', options='Company:company:default_currency'
|
||||||
|
WHERE dt = 'Purchase Invoice' and fieldname in ('itc_integrated_tax', 'itc_state_tax', 'itc_central_tax',
|
||||||
|
'itc_cess_amount')
|
||||||
|
""")
|
||||||
|
|
||||||
|
# Get purchase invoices
|
||||||
|
invoices = frappe.get_all('Purchase Invoice',
|
||||||
|
{'posting_date': ('>=', '2021-04-01'), 'eligibility_for_itc': ('!=', 'Ineligible')},
|
||||||
|
['name'])
|
||||||
|
|
||||||
|
amount_map = {}
|
||||||
|
|
||||||
|
if invoices:
|
||||||
|
invoice_list = set([d.name for d in invoices])
|
||||||
|
|
||||||
|
# Get GST applied
|
||||||
|
amounts = frappe.db.sql("""
|
||||||
|
SELECT parent, account_head, sum(base_tax_amount_after_discount_amount) as amount
|
||||||
|
FROM `tabPurchase Taxes and Charges`
|
||||||
|
where parent in %s
|
||||||
|
GROUP BY parent, account_head
|
||||||
|
""", (invoice_list), as_dict=1)
|
||||||
|
|
||||||
|
for d in amounts:
|
||||||
|
amount_map.setdefault(d.parent,
|
||||||
|
{
|
||||||
|
'itc_integrated_tax': 0,
|
||||||
|
'itc_state_tax': 0,
|
||||||
|
'itc_central_tax': 0,
|
||||||
|
'itc_cess_amount': 0
|
||||||
|
})
|
||||||
|
|
||||||
|
if d.account_head in gst_accounts.get('igst_account'):
|
||||||
|
amount_map[d.parent]['itc_integrated_tax'] += d.amount
|
||||||
|
if d.account_head in gst_accounts.get('cgst_account'):
|
||||||
|
amount_map[d.parent]['itc_central_tax'] += d.amount
|
||||||
|
if d.account_head in gst_accounts.get('sgst_account'):
|
||||||
|
amount_map[d.parent]['itc_state_tax'] += d.amount
|
||||||
|
if d.account_head in gst_accounts.get('cess_account'):
|
||||||
|
amount_map[d.parent]['itc_cess_amount'] += d.amount
|
||||||
|
|
||||||
|
for invoice, values in amount_map.items():
|
||||||
|
frappe.db.set_value('Purchase Invoice', invoice, {
|
||||||
|
'itc_integrated_tax': values.get('itc_integrated_tax'),
|
||||||
|
'itc_central_tax': values.get('itc_central_tax'),
|
||||||
|
'itc_state_tax': values['itc_state_tax'],
|
||||||
|
'itc_cess_amount': values['itc_cess_amount'],
|
||||||
|
})
|
||||||
Reference in New Issue
Block a user