def x12_820_to_csv(x12_data, output_file, delimiter=','):
    lines = x12_data.split('~')
    output = []
    headers = ['TransactionID', 'PaymentAmount', 'PaymentMethod', 'PayeeID', 'PayerID', 'EntityID', 'InvoiceNumber', 'AmountPaid', 'ServiceDateRange']
    output.append(delimiter.join(headers))
    
    current_data = {
        'TransactionID': '', 'PaymentAmount': '', 'PaymentMethod': '', 
        'PayeeID': '', 'PayerID': '', 'EntityID': ''
    }
    
    for line in lines:
        elements = line.split('*')
        if elements[0] == 'TRN':
            current_data['TransactionID'] = elements[2]
        elif elements[0] == 'BPR':
            current_data['PaymentAmount'] = elements[2]
            current_data['PaymentMethod'] = elements[4]
        elif elements[0] == 'N1' and elements[1] == 'PE':
            current_data['PayeeID'] = elements[3]
        elif elements[0] == 'N1' and elements[1] == 'PR':
            current_data['PayerID'] = elements[3]
        elif elements[0] == 'ENT':
            current_data['EntityID'] = elements[3]
        elif elements[0] == 'RMR':
            invoice_number = elements[2]
            amount_paid = elements[4]
            next_line_idx = lines.index(line) + 1
            date_range = ''
            if next_line_idx < len(lines) and lines[next_line_idx].startswith('DTM'):
                dtm_elements = lines[next_line_idx].split('*')
                date_range = dtm_elements[5] if len(dtm_elements) > 5 else ''
            row = [
                current_data['TransactionID'], current_data['PaymentAmount'], current_data['PaymentMethod'],
                current_data['PayeeID'], current_data['PayerID'], current_data['EntityID'],
                invoice_number, amount_paid, date_range
            ]
            output.append(delimiter.join(row))
    
    with open(output_file, 'w') as f:
        f.write('\n'.join(output))

# Load your X12 file
with open('C:\X12\PCVR6201.x12', 'r') as f:
    x12_data = f.read()

# Convert to CSV
x12_820_to_csv(x12_data, 'remittance.csv')