z230
This commit is contained in:
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
@@ -0,0 +1,90 @@
|
|||||||
|
import shutil
|
||||||
|
import pandas as pd
|
||||||
|
from openpyxl import load_workbook
|
||||||
|
from openpyxl.styles import Font, PatternFill, Alignment, Border, Side, Color
|
||||||
|
from datetime import datetime
|
||||||
|
|
||||||
|
IE_FILE = "EAT and Timely Filing Inclusion Exclusion List v27.0.xlsm"
|
||||||
|
EV_FILE = "Timely Filing Evidence Report_.xlsx"
|
||||||
|
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
|
||||||
|
OUT_FILE = f"Timely Filing Evidence Report_with_flag_{timestamp}.xlsx"
|
||||||
|
|
||||||
|
# --- build lookup from IE ---
|
||||||
|
ie = pd.read_excel(IE_FILE, sheet_name="JRD TMF Content Map")
|
||||||
|
lookup = {}
|
||||||
|
for _, row in ie.iterrows():
|
||||||
|
key = (
|
||||||
|
str(row["Type/Zone"]).strip().lower(),
|
||||||
|
str(row["SubType/Section"]).strip().lower(),
|
||||||
|
str(row["Classification/Artifact"]).strip().lower(),
|
||||||
|
)
|
||||||
|
lookup[key] = str(row["Include in Timely Filing Report"]).strip()
|
||||||
|
|
||||||
|
# --- copy Evidence Report ---
|
||||||
|
shutil.copy(EV_FILE, OUT_FILE)
|
||||||
|
wb = load_workbook(OUT_FILE)
|
||||||
|
ws = wb["Report"]
|
||||||
|
|
||||||
|
# header row is row 4 (1-indexed); data starts row 5
|
||||||
|
# current cols: A=DocNum, B=Version, ..., F=Type(6), G=Subtype(7), H=Classification(8)
|
||||||
|
HEADER_ROW = 4
|
||||||
|
DATA_START = 5
|
||||||
|
COL_TYPE = 6 # F
|
||||||
|
COL_SUBTYPE = 7 # G
|
||||||
|
COL_CLASS = 8 # H
|
||||||
|
INSERT_COL = 2 # insert as new column B
|
||||||
|
|
||||||
|
# read key columns before inserting
|
||||||
|
row_keys = {}
|
||||||
|
for r in range(DATA_START, ws.max_row + 1):
|
||||||
|
t = ws.cell(r, COL_TYPE).value
|
||||||
|
s = ws.cell(r, COL_SUBTYPE).value
|
||||||
|
c = ws.cell(r, COL_CLASS).value
|
||||||
|
if t or s or c:
|
||||||
|
row_keys[r] = (str(t).strip().lower() if t else "", str(s).strip().lower() if s else "", str(c).strip().lower() if c else "")
|
||||||
|
|
||||||
|
# insert column B (shifts everything right)
|
||||||
|
ws.insert_cols(INSERT_COL)
|
||||||
|
|
||||||
|
# style helpers
|
||||||
|
header_font = Font(bold=True, name="Calibri", size=11, color=Color(theme=0))
|
||||||
|
yes_fill = PatternFill("solid", start_color="C6EFCE") # light green
|
||||||
|
no_fill = PatternFill("solid", start_color="FFC7CE") # light red
|
||||||
|
na_fill = PatternFill("solid", start_color="FFEB9C") # light yellow
|
||||||
|
thin = Side(style="thin")
|
||||||
|
border = Border(left=thin, right=thin, top=thin, bottom=thin)
|
||||||
|
|
||||||
|
# write header
|
||||||
|
hcell = ws.cell(HEADER_ROW, INSERT_COL, "Include in Timely Filing")
|
||||||
|
hcell.font = header_font
|
||||||
|
hcell.fill = PatternFill("solid", start_color="0070C0")
|
||||||
|
hcell.alignment = Alignment(horizontal="center", wrap_text=True)
|
||||||
|
hcell.border = border
|
||||||
|
|
||||||
|
# write values
|
||||||
|
for r, key in row_keys.items():
|
||||||
|
val = lookup.get(key, "N/A")
|
||||||
|
cell = ws.cell(r, INSERT_COL, val)
|
||||||
|
cell.font = Font(name="Calibri", size=11)
|
||||||
|
cell.alignment = Alignment(horizontal="center")
|
||||||
|
cell.border = border
|
||||||
|
if val == "Yes":
|
||||||
|
cell.fill = yes_fill
|
||||||
|
elif val == "No":
|
||||||
|
cell.fill = no_fill
|
||||||
|
else:
|
||||||
|
cell.fill = na_fill
|
||||||
|
|
||||||
|
# set column width
|
||||||
|
ws.column_dimensions[ws.cell(1, INSERT_COL).column_letter].width = 18
|
||||||
|
|
||||||
|
wb._external_links = []
|
||||||
|
wb.defined_names = wb.defined_names.__class__()
|
||||||
|
wb.save(OUT_FILE)
|
||||||
|
print(f"Saved: {OUT_FILE}")
|
||||||
|
|
||||||
|
# quick stats
|
||||||
|
total = len(row_keys)
|
||||||
|
matched = sum(1 for k in row_keys.values() if lookup.get(k, "N/A") != "N/A")
|
||||||
|
na_count = sum(1 for k in row_keys.values() if lookup.get(k, "N/A") == "N/A")
|
||||||
|
print(f"Rows: {total}, matched: {matched}, N/A (no match): {na_count}")
|
||||||
Reference in New Issue
Block a user