Merge pull request #28071 from deepeshgarg007/lower_deduction_cetificate_fixes
fix : Get LTDS based on tax withholding category
This commit is contained in:
commit
98f4b90300
@ -174,6 +174,7 @@ def get_lower_deduction_certificate(tax_details, pan_no):
|
|||||||
ldc_name = frappe.db.get_value('Lower Deduction Certificate',
|
ldc_name = frappe.db.get_value('Lower Deduction Certificate',
|
||||||
{
|
{
|
||||||
'pan_no': pan_no,
|
'pan_no': pan_no,
|
||||||
|
'tax_withholding_category': tax_details.tax_withholding_category,
|
||||||
'valid_from': ('>=', tax_details.from_date),
|
'valid_from': ('>=', tax_details.from_date),
|
||||||
'valid_upto': ('<=', tax_details.to_date)
|
'valid_upto': ('<=', tax_details.to_date)
|
||||||
}, 'name')
|
}, 'name')
|
||||||
|
|||||||
@ -306,5 +306,6 @@ erpnext.patches.v13_0.requeue_failed_reposts
|
|||||||
erpnext.patches.v12_0.update_production_plan_status
|
erpnext.patches.v12_0.update_production_plan_status
|
||||||
erpnext.patches.v13_0.healthcare_deprecation_warning
|
erpnext.patches.v13_0.healthcare_deprecation_warning
|
||||||
erpnext.patches.v14_0.delete_healthcare_doctypes
|
erpnext.patches.v14_0.delete_healthcare_doctypes
|
||||||
|
erpnext.patches.v13_0.update_category_in_ltds_certificate
|
||||||
erpnext.patches.v13_0.create_pan_field_for_india #2
|
erpnext.patches.v13_0.create_pan_field_for_india #2
|
||||||
erpnext.patches.v14_0.delete_hub_doctypes
|
erpnext.patches.v14_0.delete_hub_doctypes
|
||||||
|
|||||||
18
erpnext/patches/v13_0/update_category_in_ltds_certificate.py
Normal file
18
erpnext/patches/v13_0/update_category_in_ltds_certificate.py
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
import frappe
|
||||||
|
|
||||||
|
|
||||||
|
def execute():
|
||||||
|
company = frappe.get_all('Company', filters = {'country': 'India'})
|
||||||
|
if not company:
|
||||||
|
return
|
||||||
|
|
||||||
|
ldc = frappe.qb.DocType("Lower Deduction Certificate").as_("ldc")
|
||||||
|
supplier = frappe.qb.DocType("Supplier")
|
||||||
|
|
||||||
|
frappe.qb.update(ldc).inner_join(supplier).on(
|
||||||
|
ldc.supplier == supplier.name
|
||||||
|
).set(
|
||||||
|
ldc.tax_withholding_category, supplier.tax_withholding_category
|
||||||
|
).where(
|
||||||
|
ldc.tax_withholding_category.isnull()
|
||||||
|
).run()
|
||||||
@ -7,7 +7,7 @@
|
|||||||
"engine": "InnoDB",
|
"engine": "InnoDB",
|
||||||
"field_order": [
|
"field_order": [
|
||||||
"certificate_details_section",
|
"certificate_details_section",
|
||||||
"section_code",
|
"tax_withholding_category",
|
||||||
"fiscal_year",
|
"fiscal_year",
|
||||||
"column_break_3",
|
"column_break_3",
|
||||||
"certificate_no",
|
"certificate_no",
|
||||||
@ -33,13 +33,6 @@
|
|||||||
"reqd": 1,
|
"reqd": 1,
|
||||||
"unique": 1
|
"unique": 1
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"fieldname": "section_code",
|
|
||||||
"fieldtype": "Select",
|
|
||||||
"label": "Section Code",
|
|
||||||
"options": "192\n193\n194\n194A\n194C\n194D\n194H\n194I\n194J\n194LA\n194LBB\n194LBC\n195",
|
|
||||||
"reqd": 1
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"fieldname": "section_break_3",
|
"fieldname": "section_break_3",
|
||||||
"fieldtype": "Section Break",
|
"fieldtype": "Section Break",
|
||||||
@ -123,13 +116,22 @@
|
|||||||
"label": "Fiscal Year",
|
"label": "Fiscal Year",
|
||||||
"options": "Fiscal Year",
|
"options": "Fiscal Year",
|
||||||
"reqd": 1
|
"reqd": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "tax_withholding_category",
|
||||||
|
"fieldtype": "Link",
|
||||||
|
"label": "Tax Withholding Category",
|
||||||
|
"options": "Tax Withholding Category",
|
||||||
|
"reqd": 1
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"index_web_pages_for_search": 1,
|
||||||
"links": [],
|
"links": [],
|
||||||
"modified": "2020-04-23 23:04:41.203721",
|
"modified": "2021-10-23 18:33:38.962622",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "Regional",
|
"module": "Regional",
|
||||||
"name": "Lower Deduction Certificate",
|
"name": "Lower Deduction Certificate",
|
||||||
|
"naming_rule": "By fieldname",
|
||||||
"owner": "Administrator",
|
"owner": "Administrator",
|
||||||
"permissions": [],
|
"permissions": [],
|
||||||
"sort_field": "modified",
|
"sort_field": "modified",
|
||||||
|
|||||||
@ -15,7 +15,7 @@ from erpnext.accounts.utils import get_fiscal_year
|
|||||||
class LowerDeductionCertificate(Document):
|
class LowerDeductionCertificate(Document):
|
||||||
def validate(self):
|
def validate(self):
|
||||||
self.validate_dates()
|
self.validate_dates()
|
||||||
self.validate_supplier_against_section_code()
|
self.validate_supplier_against_tax_category()
|
||||||
|
|
||||||
def validate_dates(self):
|
def validate_dates(self):
|
||||||
if getdate(self.valid_upto) < getdate(self.valid_from):
|
if getdate(self.valid_upto) < getdate(self.valid_from):
|
||||||
@ -31,12 +31,14 @@ class LowerDeductionCertificate(Document):
|
|||||||
<= fiscal_year.year_end_date):
|
<= fiscal_year.year_end_date):
|
||||||
frappe.throw(_("Valid Upto date not in Fiscal Year {0}").format(frappe.bold(self.fiscal_year)))
|
frappe.throw(_("Valid Upto date not in Fiscal Year {0}").format(frappe.bold(self.fiscal_year)))
|
||||||
|
|
||||||
def validate_supplier_against_section_code(self):
|
def tax_withholding_category(self):
|
||||||
duplicate_certificate = frappe.db.get_value('Lower Deduction Certificate', {'supplier': self.supplier, 'section_code': self.section_code}, ['name', 'valid_from', 'valid_upto'], as_dict=True)
|
duplicate_certificate = frappe.db.get_value('Lower Deduction Certificate',
|
||||||
|
{'supplier': self.supplier, 'tax_withholding_category': self.tax_withholding_category, 'name': ("!=", self.name)},
|
||||||
|
['name', 'valid_from', 'valid_upto'], as_dict=True)
|
||||||
if duplicate_certificate and self.are_dates_overlapping(duplicate_certificate):
|
if duplicate_certificate and self.are_dates_overlapping(duplicate_certificate):
|
||||||
certificate_link = get_link_to_form('Lower Deduction Certificate', duplicate_certificate.name)
|
certificate_link = get_link_to_form('Lower Deduction Certificate', duplicate_certificate.name)
|
||||||
frappe.throw(_("There is already a valid Lower Deduction Certificate {0} for Supplier {1} against Section Code {2} for this time period.")
|
frappe.throw(_("There is already a valid Lower Deduction Certificate {0} for Supplier {1} against category {2} for this time period.")
|
||||||
.format(certificate_link, frappe.bold(self.supplier), frappe.bold(self.section_code)))
|
.format(certificate_link, frappe.bold(self.supplier), frappe.bold(self.tax_withholding_category)))
|
||||||
|
|
||||||
def are_dates_overlapping(self,duplicate_certificate):
|
def are_dates_overlapping(self,duplicate_certificate):
|
||||||
valid_from = duplicate_certificate.valid_from
|
valid_from = duplicate_certificate.valid_from
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user