새 프로그램의 거래처 목록은 깨끗한데 과거 전표에는 그 목록에 없는 코드가 나온다. 같은 이름의 업체도 보이고 어떤 금액은 비어 있다. 이때 가장 쉬워 보이는 정리는 비슷한 업체에 연결하고 빈 숫자를 영으로 채우는 것이다. 나는 이 작업의 이관 기록을 읽으며 그 정리가 무엇을 지우는지 다시 생각했다. 오래된 자료를 새 화면에서 보기 좋게 만드는 일과 과거의 의미를 보존하는 일은 서로 다른 판단을 요구한다.

현행 목록에 없다고 없었던 거래는 아니다

현재 기준표에서 빠진 코드는 폐업, 사용 중지, 기준표 변경 등 여러 이유로 남을 수 있다. 이유를 확인하지 않은 상태에서 전표 자체를 제외하면 그 거래가 사라진다. 반대로 비슷한 이름의 현재 업체로 바꾸면 과거의 채권과 거래 이력이 다른 대상에게 붙을 수 있다. 보관된 점검 보고서는 현행 목록에 없는 코드를 이력 코드로 유지한 범위를 설명한다.

내가 이 방식에서 중요하게 보는 점은 현재 선택 가능한 대상과 과거 기록을 읽는 대상을 구분한다는 것이다. 새 거래의 검색 기본 목록은 현행 업체를 중심으로 만들 수 있다. 과거 상세에서는 당시 코드와 원본 이름, 현재 연결 여부를 함께 보여 준다. 이력 포함 검색을 따로 제공하면 과거를 지우지 않으면서 일상 입력 화면의 혼잡도 줄일 수 있다.

과거 자료를 보존하는 목적은 파일을 오래 두는 데서 끝나지 않는다. 나중에도 그때의 거래 대상을 같은 의미로 읽을 수 있어야 한다.

미확인은 영과 다른 상태다

공급가액이 비어 있는 행에 영을 저장하면 합계 계산은 편해진다. 하지만 무료 거래라는 새로운 의미가 생긴다. 실제로 영인 금액과 아직 읽거나 대조하지 못한 금액은 다르다. 당시 보고서에도 미확인 금액을 별도로 남긴 이유가 적혀 있다. 나는 숫자 입력란이 비었다는 사실을 계산 편의 때문에 확정된 업무 사실로 바꾸지 않으려 한다.

화면에서는 확인된 합계 옆에 미확인 행 수를 같이 보여 줄 수 있다. 전체 합계의 일부만 확인됐다면 완전한 합계처럼 보이지 않게 제목도 고친다. 예를 들어 합성 자료 세 행 중 두 행만 금액이 있으면 확인된 두 행의 소계와 미확인 한 행을 함께 표시한다. 모르는 값을 합계에서 제외했다는 설명이 없으면 영으로 대체하지 않아도 사용자는 전체 금액으로 오해할 수 있다.

연결을 제안하는 일과 확정하는 일

공백이나 법인 표기를 정리해 후보를 찾는 일은 도움이 된다. 그러나 이름 유사성만으로 같은 업체라고 확정하면 안 된다. 같은 상호의 다른 사업자, 거래 당시와 현재의 다른 역할, 과거 코드의 재사용 가능성을 따져야 한다. 연결이 필요할 때는 원래 식별자와 확인 자료, 판단한 사람과 시점을 함께 남겨야 다음 수정의 근거가 된다.

이름이 같아 보인다는 이유로 원본을 고치지 않는 것도 중요하다. 원본 행은 유지하고 해석된 연결을 별도로 저장하면 나중에 잘못된 연결을 정정할 수 있다. 정정은 과거를 삭제하는 작업이 아니라 새 판단을 기록하는 작업이 된다. 연결하지 못한 항목을 실패 목록에 숨기기보다 분류 대기나 미연결 상태로 실제 업무 화면에서 찾을 수 있게 한다.

깨끗한 목록보다 설명 가능한 목록

이 설계를 다른 업종에 적용한다면 현재 사용 여부, 과거 식별자, 현재 연결 대상, 확인 상태를 다른 값으로 다루는 데서 시작할 수 있다. 모두 같은 사용 중 표시 하나에 넣으면 사용 중지한 업체의 과거 기록까지 읽을 수 없게 되거나, 불확실한 연결이 확정된 것처럼 보인다. 검색 기본값과 기록 보존 정책도 따로 정하는 편이 낫다.

새 기준표에 없는 코드 한 개, 실제 영 금액 한 개, 미확인 금액 한 개, 같은 이름의 다른 업체 한 쌍을 합성 자료로 만들어 검토해 보자. 각 항목을 다시 찾을 수 있는지와 합계의 설명이 정확한지 확인하면 된다. 이번 글은 선택한 코드와 당시 보고서를 읽어 정리했으며 실제 장부를 다시 대조하지 않았다. 남은 미확인을 드러내는 방식은 불완전함을 감추지 않고 다음 확인을 가능하게 만드는 제작 판단이다.