본문으로 건너뛰기
LAB / 028

매입 금액이 왜 안 맞지? OpenClaw로 처음 만든 매입 정산기

거래처 매입자료와 이카운트 금액이 맞지 않을 때, 차이를 만든 품목을 찾아주는 매입 정산기를 OpenClaw로 처음 제작한 이야기.

매입 마감 때마다 꼭 한 번씩 마주치는 순간이 있다.

거래처에서 보내온 매입 금액과 이카운트에 입력된 금액이 맞지 않는 순간.

차이가 크면 오히려 찾기 쉽다. 한 품목을 통째로 빠뜨렸거나 수량을 잘못 입력했을 가능성이 높기 때문이다. 정말 사람을 지치게 하는 건 애매한 차액이다. 엑셀 두 개를 나란히 열고 품목을 한 줄씩 내려가며 수량과 단가를 확인하다 보면, 숫자는 점점 흐려지고 “도대체 어디가 다른 거야?”라는 말만 반복하게 된다.

그래서 OpenClaw에게 물었다.

“거래처 매입자료와 이카운트 자료를 비교해서, 금액이 맞지 않는 품목을 찾아주는 프로그램을 만들 수 있을까?”

이 질문이 내가 OpenClaw로 처음 만든 프로그램, 매입 정산기의 시작이었다.

총액이 다르다는 사실보다 중요한 것

처음에는 두 엑셀 파일의 총액만 비교하면 될 것 같았다. 하지만 총액이 다르다는 사실은 이미 계산기를 두드려도 알 수 있다. 내가 정말 필요했던 답은 이것이었다.

“그래서 어떤 품목을 확인해야 하는데?”

프로그램은 먼저 거래처 자료의 공급가액과 이카운트의 등록 금액을 같은 기준으로 맞춘다. 한쪽은 부가세 별도, 다른 쪽은 부가세 포함으로 표시될 수 있기 때문에 이 기준부터 통일하지 않으면 시작부터 엉뚱한 차액이 나온다.

총액이 일치하면 프로그램은 시원하게 알려준다.

✅ 총액이 일치합니다. 마감하세요.

하지만 차액이 있으면 그때부터 품목별 분석에 들어간다. 단순히 모든 차이를 쏟아내는 것이 아니라 차액에 가장 크게 영향을 준 품목을 먼저 보여주고, 수량이 다른지 단가가 다른지도 함께 짚어준다. 긴 목록 속에서 범인을 찾는 대신 가장 의심스러운 곳부터 확인할 수 있게 만든 것이다.

가장 어려웠던 문제: 같은 제품인데 코드가 달랐다

프로그램을 만들면서 가장 애를 먹은 부분은 금액 계산이 아니었다. 같은 제품을 같은 제품으로 알아보게 하는 일이었다.

거래처 자료와 사내 이카운트 자료는 품목코드가 완전히 같지 않았다. 예를 들어 한쪽에서는 코드 앞에 특정 문자를 붙이고, 다른 쪽에서는 다른 문자를 쓰는 경우가 있었다. 제품의 규격이 코드 뒤에 붙기도 했고, 띄어쓰기나 특수문자 때문에 품명이 달라 보이기도 했다.

사람이 보면 “이거 같은 제품인데?” 하고 바로 알 수 있지만, 프로그램은 한 글자만 달라도 다른 품목으로 판단한다. 처음 실행했을 때 실제로 존재하는 품목들이 ‘한쪽에만 있는 품목’으로 우르르 나타난 이유였다.

이 문제는 세 단계로 풀었다.

  1. 서로 다른 코드의 짝을 알려주는 매핑표를 만들었다.
    두 시스템에서 표기가 다른 품목은 실제 코드를 공개하지 않는 별도의 대응표로 연결했다.
  2. 코드의 공통 부분을 비교했다.
    앞 글자만 다르고 나머지 코드가 같다면 같은 품목일 가능성이 높도록 규칙을 추가했다. 규격 표기는 따로 분리해 기본 코드와 함께 판단했다.
  3. 그래도 남는 품목은 이름의 유사도를 비교했다.
    공백과 기호를 없애고 품명을 정리한 뒤, 규격이 같고 이름이 충분히 비슷한 경우에만 같은 품목으로 연결했다. 비슷하다는 이유만으로 엉뚱한 제품을 묶지 않도록 기준도 보수적으로 잡았다.

정리하면 실제 품목을 맞춘 방법은 코드 매핑 → 코드 규칙 비교 → 품명 유사도 비교 순서였다. 무조건 이름만 비슷한 것을 붙이는 방식이 아니라, 확실한 조건부터 차례로 확인하게 했다.

매칭이 끝나니 진짜 원인이 보였다

품목이 제대로 짝지어지고 나자 차액의 원인도 구분할 수 있었다.

  • 단가는 같은데 합계가 다르면 수량 차이
  • 수량은 같은데 합계가 다르면 단가 차이
  • 양쪽 모두 다르면 수량과 단가를 함께 확인
  • 한쪽 자료에만 있으면 누락 또는 코드 매칭 실패 여부 확인

결과 화면에는 실제 회사명이나 품명 대신 아래처럼 필요한 정보만 표시하도록 글에서는 익명화했다.

🎯 가장 의심되는 품목

품목: [익명 처리된 품목]
거래처 자료: 수량 10 / 합계 XXX,XXX원
이카운트 자료: 수량 9 / 합계 XXX,XXX원
판단: 수량 차이 가능성
권장 조치: 해당 품목의 입고 수량 확인

예전에는 전체 목록을 처음부터 훑었다면, 이제는 프로그램이 지목한 품목부터 확인한다. 거기서 수량 하나나 단가 하나를 바로잡으면 두 자료의 총액이 맞아떨어진다. 그 순간의 “찾았다!”는 꽤 짜릿하다.

엑셀 두 개를 고르면 나머지는 프로그램이 한다

사용 방법도 복잡하지 않게 만들었다. 저장소에 있는 엑셀 파일 목록을 불러오고, 거래처 자료와 이카운트 자료를 하나씩 선택하면 된다.

그다음 과정은 프로그램의 몫이다.

  1. 두 파일에서 총액을 읽는다.
  2. 부가세 기준을 통일한다.
  3. 품목코드, 품명, 규격, 수량, 단가를 정리한다.
  4. 서로 같은 품목을 단계적으로 매칭한다.
  5. 차액에 가장 크게 영향을 준 품목과 원인을 보여준다.

처음에는 그저 “엑셀 비교를 자동으로 해보고 싶다”는 생각으로 시작했는데, 실제 업무에서 계속 사용할 수 있는 도구가 됐다. 지금도 매입 금액이 맞지 않을 때면 이 프로그램부터 실행한다. 예전처럼 두 파일 사이를 오가며 눈으로 찾는 시간도 크게 줄었다.

OpenClaw와 만든 첫 프로그램이 남긴 것

이 매입 정산기는 화려한 프로그램은 아니다. 버튼 하나로 모든 회계 업무를 해결해 주는 것도 아니다. 하지만 내가 매번 반복하던 불편을 정확히 줄여주고, 지금까지도 아주 유용하게 쓰이고 있다.

무엇보다 의미 있는 건 OpenClaw로 처음 만든 프로그램이라는 점이다.

처음부터 완벽한 요구사항이 있었던 것도 아니다. 실행해 보고, 매칭되지 않는 품목을 발견하고, “왜 같은 제품을 다르다고 하지?”라고 다시 묻고, 코드 규칙과 품명 비교를 하나씩 보완했다. 내가 현장에서 알고 있는 업무 방식과 OpenClaw가 만들어 주는 코드가 여러 번의 대화를 거쳐 하나의 도구가 됐다.

이 경험 이후로 반복해서 확인하고, 복사하고, 비교하는 일을 만나면 먼저 이런 생각을 하게 됐다.

“이것도 프로그램으로 만들 수 있지 않을까?”

매입 마감 때의 작은 불편에서 시작한 첫 프로그램. 지금도 실제 업무에서 시간을 아껴주는 것을 보면, 꽤 괜찮은 첫 작품이었다.

※ 업무 정보 보호를 위해 회사명, 거래처명, 실제 품목명, 품목코드, 금액은 모두 공개하지 않거나 익명화했습니다.

생각을 남겨주세요

이메일 주소는 공개되지 않으며 댓글은 관리자 승인 후 표시됩니다. 필수 항목은 *로 표시됩니다.