test commit

This commit is contained in:
Ali 2025-05-22 18:38:06 +04:00
parent ea76b90848
commit 41aff209e8
1 changed files with 21 additions and 2 deletions

View File

@ -1745,11 +1745,14 @@ def match_similar_items():
# Get active settings # Get active settings
settings = get_active_settings() settings = get_active_settings()
if not settings: if not settings:
frappe.log_error("No active E-Taxes settings found", "E-Taxes Item Matching")
return { return {
'success': False, 'success': False,
'message': 'No active E-Taxes settings found' 'message': 'No active E-Taxes settings found'
} }
frappe.log_error(f"Using settings: {settings.name}, similarity_threshold: {settings.similarity_threshold}", "E-Taxes Item Matching")
# Get similarity threshold from settings # Get similarity threshold from settings
similarity_threshold = float(settings.similarity_threshold) / 100.0 if settings.similarity_threshold else 0.8 similarity_threshold = float(settings.similarity_threshold) / 100.0 if settings.similarity_threshold else 0.8
consider_azeri = settings.consider_azeri_chars consider_azeri = settings.consider_azeri_chars
@ -1760,6 +1763,7 @@ def match_similar_items():
fields=['name', 'etaxes_item_name', 'etaxes_item_code']) fields=['name', 'etaxes_item_name', 'etaxes_item_code'])
# Log items # Log items
frappe.log_error(f"Found {len(etaxes_items)} E-Taxes items with 'New' status", "E-Taxes Item Matching")
# Get existing mappings # Get existing mappings
existing_mappings = {} existing_mappings = {}
@ -1767,6 +1771,7 @@ def match_similar_items():
existing_mappings[mapping.etaxes_item_name] = mapping.erp_item existing_mappings[mapping.etaxes_item_name] = mapping.erp_item
# Log existing mappings # Log existing mappings
frappe.log_error(f"Found {len(existing_mappings)} existing mappings", "E-Taxes Item Matching")
# Get items with empty mapping (exist in table but erp_item is None or empty) # Get items with empty mapping (exist in table but erp_item is None or empty)
items_with_empty_mapping = [] items_with_empty_mapping = []
@ -1778,19 +1783,25 @@ def match_similar_items():
items_with_empty_mapping.append(item) items_with_empty_mapping.append(item)
break break
frappe.log_error(f"Found {len(items_with_empty_mapping)} items with empty mappings", "E-Taxes Item Matching")
# Filter only those that are not in mappings # Filter only those that are not in mappings
unmapped_items = [] unmapped_items = []
for item in etaxes_items: for item in etaxes_items:
if item.name not in existing_mappings: if item.name not in existing_mappings:
unmapped_items.append(item) unmapped_items.append(item)
frappe.log_error(f"Found {len(unmapped_items)} completely unmapped items", "E-Taxes Item Matching")
# Combine two lists: items without mappings and items with empty mappings # Combine two lists: items without mappings and items with empty mappings
items_to_process = unmapped_items + items_with_empty_mapping items_to_process = unmapped_items + items_with_empty_mapping
# Log final list of items to process # Log final list of items to process
frappe.log_error(f"Total items to process: {len(items_to_process)}", "E-Taxes Item Matching")
# Get all items from system # Get all items from system
system_items = frappe.get_all('Item', fields=['name', 'item_name', 'item_code']) system_items = frappe.get_all('Item', fields=['name', 'item_name', 'item_code'])
frappe.log_error(f"Found {len(system_items)} system items for matching", "E-Taxes Item Matching")
matched_count = 0 matched_count = 0
total_processed = len(items_to_process) total_processed = len(items_to_process)
@ -1801,6 +1812,7 @@ def match_similar_items():
# Process all items # Process all items
for etaxes_item in items_to_process: for etaxes_item in items_to_process:
# Log item being processed # Log item being processed
frappe.log_error(f"Processing item: {etaxes_item.etaxes_item_name} (ID: {etaxes_item.name})", "E-Taxes Item Matching")
# Find similar item # Find similar item
best_match = None best_match = None
@ -1818,7 +1830,7 @@ def match_similar_items():
# Log high matches (more than 0.8) # Log high matches (more than 0.8)
if name_score > 0.8: if name_score > 0.8:
print("test") frappe.log_error(f"High similarity match found: '{etaxes_item.etaxes_item_name}' vs '{item.item_name}' - Score: {name_score:.3f}", "E-Taxes Item Matching")
# Check if this is a better match # Check if this is a better match
if name_score > best_score and name_score >= similarity_threshold: if name_score > best_score and name_score >= similarity_threshold:
@ -1827,6 +1839,7 @@ def match_similar_items():
if best_match: if best_match:
# Log found match # Log found match
frappe.log_error(f"Best match found for '{etaxes_item.etaxes_item_name}': '{best_match.item_name}' with score {best_score:.3f}", "E-Taxes Item Matching")
# IMPORTANT: check if there is already a record for this item in mappings # IMPORTANT: check if there is already a record for this item in mappings
existing_row = None existing_row = None
@ -1837,10 +1850,12 @@ def match_similar_items():
if existing_row is not None: if existing_row is not None:
# If row already exists, update its erp_item value # If row already exists, update its erp_item value
frappe.log_error(f"Updating existing mapping row {existing_row} for item {etaxes_item.name}", "E-Taxes Item Matching")
doc.item_mappings[existing_row].erp_item = best_match.name doc.item_mappings[existing_row].erp_item = best_match.name
doc.item_mappings[existing_row].mapping_type = 'Automatic' doc.item_mappings[existing_row].mapping_type = 'Automatic'
else: else:
# If no row, add a new one # If no row, add a new one
frappe.log_error(f"Adding new mapping for item {etaxes_item.name}", "E-Taxes Item Matching")
doc.append('item_mappings', { doc.append('item_mappings', {
'etaxes_item_name': etaxes_item.name, 'etaxes_item_name': etaxes_item.name,
'erp_item': best_match.name, 'erp_item': best_match.name,
@ -1854,14 +1869,17 @@ def match_similar_items():
item_doc.status = 'Mapped' item_doc.status = 'Mapped'
item_doc.mapped_item = best_match.name item_doc.mapped_item = best_match.name
item_doc.save() item_doc.save()
frappe.log_error(f"Updated E-Taxes Item {etaxes_item.name} status to 'Mapped'", "E-Taxes Item Matching")
else: else:
print("test") frappe.log_error(f"No suitable match found for '{etaxes_item.etaxes_item_name}' (threshold: {similarity_threshold})", "E-Taxes Item Matching")
# Save settings only if matches were found # Save settings only if matches were found
if matched_count > 0: if matched_count > 0:
doc.save() doc.save()
frappe.log_error(f"Saved {matched_count} new mappings to settings document", "E-Taxes Item Matching")
# Log final result # Log final result
frappe.log_error(f"Matching completed: {matched_count} matched out of {total_processed} items processed", "E-Taxes Item Matching")
return { return {
'success': True, 'success': True,
@ -1871,6 +1889,7 @@ def match_similar_items():
} }
except Exception as e: except Exception as e:
frappe.log_error(f"Error in match_similar_items: {str(e)}", "E-Taxes Item Matching Error")
return { return {
'success': False, 'success': False,
'message': "An unknown error occurred, please try again in a few minutes." 'message': "An unknown error occurred, please try again in a few minutes."