address customer link
This commit is contained in:
parent
0868e90916
commit
4ae49f097c
11 changed files with 4851 additions and 0 deletions
58
csv/data.py
Normal file
58
csv/data.py
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
import csv
|
||||
|
||||
# FILES
|
||||
export_file = "Item Price.csv" # ERPNext export
|
||||
output_file = "Item Price-import-ready.csv" # clean import CSV
|
||||
|
||||
# Template columns (exact Column Name values for ERPNext import)
|
||||
template_columns = [
|
||||
"name","item_code","uom","price_list","price_list_rate","packing_unit",
|
||||
"item_name","brand","item_description","customer","supplier","batch_no",
|
||||
"buying","selling","currency","valid_from","lead_time_days","valid_upto",
|
||||
"note","reference"
|
||||
]
|
||||
|
||||
# Which row has the Column Name row in ERPNext export? Usually 20th (0-index 19)
|
||||
COLUMN_NAME_ROW = 19
|
||||
DATA_START_ROW = 21 # 0-indexed row where actual data starts
|
||||
|
||||
def clean_cell(cell):
|
||||
# Remove extra quotes around the data
|
||||
if cell.startswith('"""') and cell.endswith('"""'):
|
||||
return cell[3:-3]
|
||||
elif cell.startswith('"') and cell.endswith('"'):
|
||||
return cell[1:-1]
|
||||
return cell
|
||||
|
||||
# Read the export
|
||||
with open(export_file, newline='', encoding='utf-8') as f:
|
||||
reader = list(csv.reader(f))
|
||||
|
||||
export_columns = [clean_cell(c) for c in reader[COLUMN_NAME_ROW]]
|
||||
data_rows = reader[DATA_START_ROW-1:]
|
||||
|
||||
# Build column index map
|
||||
col_indexes = []
|
||||
for col in template_columns:
|
||||
if col in export_columns:
|
||||
col_indexes.append(export_columns.index(col))
|
||||
else:
|
||||
col_indexes.append(None) # fill missing columns with empty string
|
||||
|
||||
# Write clean CSV
|
||||
with open(output_file, "w", newline='', encoding='utf-8') as f_out:
|
||||
writer = csv.writer(f_out, quoting=csv.QUOTE_ALL)
|
||||
|
||||
# Header row: template
|
||||
writer.writerow(template_columns)
|
||||
|
||||
for row in data_rows:
|
||||
clean_row = []
|
||||
for idx in col_indexes:
|
||||
if idx is not None and idx < len(row):
|
||||
clean_row.append(clean_cell(row[idx]))
|
||||
else:
|
||||
clean_row.append("")
|
||||
writer.writerow(clean_row)
|
||||
|
||||
print(f"Clean Item Price CSV written to {output_file}")
|
||||
Loading…
Add table
Add a link
Reference in a new issue