공급처에서 받은 명세서 한 장이 발주서 한 장과 정확히 맞아떨어지면 연결은 단순하다. 실제로는 한 발주를 여러 번 나눠 받거나 한 원본에 여러 현장의 품목이 함께 들어갈 수 있다. 이 작업에서도 받은 거래명세서를 해당 현장의 발주와 연결하자는 요청이 나왔다. 나는 첨부 파일을 전표 한 장의 부속품으로만 다루지 않고, 원본의 정체성과 연결된 업무 기록을 분리하는 구조에서 중요한 제작 이야기를 찾았다.

원본 한 개와 연결 여러 개를 구별한다

한 파일을 두 현장에서 사용한다고 원본 파일이 두 개가 될 필요는 없다. 같은 파일을 새로 등록하기보다 기존 원본에 필요한 연결을 추가할 수 있어야 한다. 보관된 구현에는 받은 명세서와 발주 관계를 따로 저장하는 구조가 있다. 원본의 내용과 식별자는 유지하면서 여러 발주를 연결하면 같은 증빙이 어느 업무에서 사용되는지 추적하기도 쉽다.

반대로 한 발주에 원본이 여러 장 붙을 수도 있다. 부분 납품을 여러 번 받았는데 첫 첨부가 존재한다는 이유로 발주 전체를 완료 처리하면 안 된다. 파일이 있다는 사실은 확인할 자료를 보관했다는 뜻이지 요청한 모든 수량이 도착했다는 뜻은 아니다. 회사 대표가 현황을 볼 때도 첨부 있음과 납품 완료가 다른 표시여야 과도하게 낙관적인 화면을 피할 수 있다.

원본 전체 금액을 현장마다 더하지 않는다

설명용 원본 한 장에 두 현장의 금액이 함께 있다고 가정해 보자. 각 현장에 그 원본을 연결한 뒤 전체 금액을 각각 매입으로 더하면 회사 합계는 두 배가 된다. 파일 연결은 원본을 읽기 위한 관계이고 매입 금액 배정은 별도의 업무 판단이다. 화면에서 보이는 원본 전체 합계와 실제로 해당 현장에 귀속된 금액을 구분해야 한다.

이때 아직 확인하지 못한 금액을 빈칸으로 둘 수 있어야 한다. 첨부가 있으니 영으로 입력하거나 발주 금액과 같다고 확정하는 방식은 편하지만 원본의 차이를 숨긴다. 발주 당시 가격과 실제 공급처 명세서의 가격이 다를 수도 있다. 원래 발주를 보존하면서 확인한 수량과 금액을 새 내부 기록으로 이어야 나중에 왜 차이가 났는지 설명할 근거가 남는다.

파일을 바꾸는 일과 연결을 고치는 일을 나눈다

잘못된 현장에 연결했다고 원본을 삭제하고 같은 파일을 다시 올리면 이력이 끊어진다. 보관된 기능 설명은 원본을 추가 보관하고 연결 취소에 사유를 남기는 방향을 담고 있다. 이미 매입 기록이 연결돼 있다면 그 후속 관계도 고려해야 한다. 원본만 없애서 화면에서 사라지게 하는 방식은 다른 쪽에 남은 금액 기록을 설명하지 못한다.

원본에는 확인되지 않은 이름과 날짜, 번호가 있을 수 있다. 파일명만으로 같은 거래라고 단정하지 않고 파일 내용의 식별과 업무 연결을 각각 확인해야 한다. 같은 바이트라는 사실은 중복 파일을 찾는 데 도움이 되지만 동일한 업무 처리를 두 번 해도 된다는 뜻은 아니다. 반대로 파일이 조금 달라도 같은 증빙의 다른 스캔일 수 있으므로 해시 하나로 업무 중복까지 확정해서도 안 된다.

첨부 완료 뒤에 남는 업무를 보여 준다

직원이 원본을 올린 뒤 해야 할 일은 연결 확인, 수량·단가 대조, 내부 매입 준비와 확정 등으로 나뉜다. 지급은 또 다른 사실이다. 업로드 성공 화면만 있으면 원본을 올린 것이 정산 완료처럼 느껴질 수 있다. 나는 원본 보기에서 다음 검토로 이어지는 동작과 현재 미확인 값을 같이 보여 주는 편이 좋다고 본다. 대표에게도 자료가 모인 상태와 검토가 끝난 상태가 다르게 읽혀야 한다.

적용 전에는 한 발주의 부분 명세서 여러 장, 한 원본의 여러 발주 연결, 복수 현장 금액 분리와 잘못된 연결의 정정을 합성 사례로 준비한다. 전체 금액이 중복되지 않고 원본과 후속 기록을 다시 찾을 수 있는지 확인하면 된다. 이번 글은 선택한 보관 코드와 당시 검사 기록에서 구조를 확인한 설명이다. 실제 업체 명세서 원본은 제공 자료에 없으며 현재 장부의 연결을 다시 확인하지 않았다. 원본을 잃지 않는 것과 업무의 의미를 잃지 않는 것을 함께 설계해야 한다.