# Copyright (c) 2026, Jey ERP and contributors
# For license information, please see license.txt

import frappe


@frappe.whitelist()
def on_delete_journal_entry(doc, method):
	"""
	Удаляет связанные E-Taxes VAT Operations при удалении Journal Entry

	Args:
		doc: Документ Journal Entry
		method: Метод события (on_trash или on_cancel)
	"""
	try:
		# Ищем все VAT Operations, связанные с этим Journal Entry
		vat_records = frappe.get_all(
			"E-Taxes VAT Operations",
			filters={"journal_entry": doc.name},
			fields=["name"]
		)

		if vat_records:
			for record in vat_records:
				frappe.logger().info(
					f"Deleting E-Taxes VAT Operations {record.name} "
					f"due to Journal Entry {doc.name} deletion"
				)

				# Прямое удаление из БД (обходит on_trash)
				frappe.db.delete('E-Taxes VAT Operations', {'name': record.name})

			frappe.db.commit()
			frappe.logger().info(f"Successfully deleted {len(vat_records)} VAT Operations records")

	except Exception as e:
		frappe.log_error(
			f"Error deleting E-Taxes VAT Operations for Journal Entry {doc.name}: {str(e)}\n{frappe.get_traceback()}",
			"Journal Entry Delete Error"
		)
		# Не прерываем удаление JE, только логируем ошибку


def set_title_from_customer_name(doc, method):
	"""
	Устанавливает title из customer_name_etaxes если поле заполнено

	Args:
		doc: Документ Journal Entry
		method: Метод события (before_save)
	"""
	if hasattr(doc, 'customer_name_etaxes') and doc.customer_name_etaxes:
		doc.title = doc.customer_name_etaxes
