| import re |
| from typing import Dict |
|
|
| def parse_greenco(file_text: str) -> Dict: |
| parsed_data = { |
| "Purchase Order No": "", |
| "Date": "", |
| "Supplier": "Greenco", |
| "Invoice Address": "", |
| "Delivery Address": "", |
| "Currency": "", |
| "Payment Terms": "", |
| "Items": [] |
| } |
|
|
| try: |
| parsed_data["Purchase Order No"] = re.search(r"Purchase Order No\.\s+(\d+)", file_text).group(1) |
| parsed_data["Date"] = re.search(r"Date:\s(\d{2}-\w{3}-\d{2})", file_text).group(1) |
|
|
| item_pattern = re.compile(r"(\d+)\s+([\w\s]+)\s+(\d+)\s+([\d.]+)\s+([\d.]+)") |
| for match in item_pattern.finditer(file_text): |
| parsed_data["Items"].append({ |
| "Item No": match.group(1), |
| "Description": match.group(2).strip(), |
| "Quantity": int(match.group(3)), |
| "Unit Price": float(match.group(4)), |
| "Total Price": float(match.group(5)), |
| }) |
| except Exception as e: |
| print(f"Error parsing Greenco PO: {e}") |
| |
| return parsed_data |
|
|