joschetan commited on
Commit
0dde8c7
·
verified ·
1 Parent(s): 2583519

Update parser_welspun.py

Browse files
Files changed (1) hide show
  1. parser_welspun.py +7 -5
parser_welspun.py CHANGED
@@ -70,6 +70,9 @@ def extract_welspun_items(pdf_lines, pdf_text=""):
70
 
71
 
72
  def map_items_to_excel_dynamic(ws, parsed_items, item_rules, inv_sr_no=1, start_overall_sr=1, start_excel_row=2, default_invoice_no="", default_invoice_date="", pdf_text="", lut_kws="", paid_kws="", parser_rule=""):
 
 
 
73
  curr_row = start_excel_row
74
  overall_sr = start_overall_sr
75
 
@@ -99,6 +102,7 @@ def map_items_to_excel_dynamic(ws, parsed_items, item_rules, inv_sr_no=1, start_
99
 
100
  nums = item.get("nums", [])
101
 
 
102
  for field_name, r_info in item_rules.items():
103
  col_letter = r_info.get("col", "").strip().upper()
104
  rule_type_raw = str(r_info.get("type", "PDF Row Item")).strip()
@@ -110,14 +114,10 @@ def map_items_to_excel_dynamic(ws, parsed_items, item_rules, inv_sr_no=1, start_
110
  if "extract" in rule_type_raw.lower() or "box" in rule_type_raw.lower() or "header" in rule_type_raw.lower() or col_letter in ["BW", "BY"]:
111
  extracted_val = extract_header_value(
112
  pdf_lines, pdf_text, rule_val,
113
- "📦 Extract Inside Box (डब्बके अंदर का टेक्स्ट)",
114
- "Exact Word", "", "None",
115
  field_label=field_name
116
  )
117
 
118
- if not extracted_val or not extracted_val.strip():
119
- extracted_val = extract_header_value(pdf_lines, pdf_text, rule_val, "Right (आगे)", "Exact Word", "", "None", field_label=field_name)
120
-
121
  if extracted_val and "\n" in str(extracted_val):
122
  lines = [l.strip() for l in str(extracted_val).split("\n") if l.strip()]
123
  if item_idx < len(lines):
@@ -130,6 +130,7 @@ def map_items_to_excel_dynamic(ws, parsed_items, item_rules, inv_sr_no=1, start_
130
  else:
131
  ws[f"{col_letter}{curr_row}"] = ""
132
 
 
133
  for field_name, r_info in item_rules.items():
134
  col_letter = r_info.get("col", "").strip().upper()
135
  f_lower = field_name.lower()
@@ -145,6 +146,7 @@ def map_items_to_excel_dynamic(ws, parsed_items, item_rules, inv_sr_no=1, start_
145
  elif "sr" in f_lower or f_lower == "sr." or rule_val_lower in ["(1)", "sr", "serial"] or col_letter == "BR":
146
  ws[cell_ref] = item.get("commodity_sr", "")
147
 
 
148
  for field_name, r_info in item_rules.items():
149
  col_letter = r_info.get("col", "").strip().upper()
150
  rule_type_raw = str(r_info.get("type", "PDF Row Item")).strip()
 
70
 
71
 
72
  def map_items_to_excel_dynamic(ws, parsed_items, item_rules, inv_sr_no=1, start_overall_sr=1, start_excel_row=2, default_invoice_no="", default_invoice_date="", pdf_text="", lut_kws="", paid_kws="", parser_rule=""):
73
+ """
74
+ Dynamic Excel mapping function for Welspun with multi-line Consignee/Buyer address split handling.
75
+ """
76
  curr_row = start_excel_row
77
  overall_sr = start_overall_sr
78
 
 
102
 
103
  nums = item.get("nums", [])
104
 
105
+ # 🚀 1. Handle Consignee / Buyer Box / Extract fields
106
  for field_name, r_info in item_rules.items():
107
  col_letter = r_info.get("col", "").strip().upper()
108
  rule_type_raw = str(r_info.get("type", "PDF Row Item")).strip()
 
114
  if "extract" in rule_type_raw.lower() or "box" in rule_type_raw.lower() or "header" in rule_type_raw.lower() or col_letter in ["BW", "BY"]:
115
  extracted_val = extract_header_value(
116
  pdf_lines, pdf_text, rule_val,
117
+ "Right (आग)", "Exact Word", "", "None",
 
118
  field_label=field_name
119
  )
120
 
 
 
 
121
  if extracted_val and "\n" in str(extracted_val):
122
  lines = [l.strip() for l in str(extracted_val).split("\n") if l.strip()]
123
  if item_idx < len(lines):
 
130
  else:
131
  ws[f"{col_letter}{curr_row}"] = ""
132
 
133
+ # 🚀 2. Commodity Sr (BR) & Name of Commodity (BS) mapping
134
  for field_name, r_info in item_rules.items():
135
  col_letter = r_info.get("col", "").strip().upper()
136
  f_lower = field_name.lower()
 
146
  elif "sr" in f_lower or f_lower == "sr." or rule_val_lower in ["(1)", "sr", "serial"] or col_letter == "BR":
147
  ws[cell_ref] = item.get("commodity_sr", "")
148
 
149
+ # 🚀 3. Standard PDF Row Item Numeric & Other columns mapping
150
  for field_name, r_info in item_rules.items():
151
  col_letter = r_info.get("col", "").strip().upper()
152
  rule_type_raw = str(r_info.get("type", "PDF Row Item")).strip()