AI 제작 가이드

SI 업체에 발주와 입고를 연결하는 ERP 개발 맡기기

SI 업체에 ERP 개발을 맡길 때 필요한 발주번호 연결, 분할입고, 검수불합격 처리 기준을 설명합니다. Excel 입력부터 기존 ERP 연동 범위와 구체적인 검수 조건까지 정리합니다.

핵심 요약

1. 발주번호와 품목별 수량을 기준으로 발주서, 분할입고, 검수 결과를 연결합니다. 2. pandas로 Excel 자료를 읽고 PostgreSQL과 Django로 저장과 권한 기능의 바탕을 마련합니다. 3. 입고 잔량, 불합격품 재납품, 기존 ERP 반영 규칙은 업무에 맞춰 직접 개발합니다.

발주한 자재가 여러 차례 도착하면 도착 수량과 사용할 수 있는 수량이 달라집니다. SI 업체에 ERP 개발을 맡길 때는 화면 개수보다 어느 발주의 어떤 품목에 몇 개를 입고로 인정할지 먼저 정해야 합니다. 아래 기능은 구매팀이 개발 범위와 검수 조건을 정하기 위한 구현 예시입니다.

Excel 발주서를 발주번호로 연결하기

첫 번째 준비 자료는 발주번호, 품목 줄 번호, 품목코드, 단위, 발주 수량, 납기가 들어 있는 발주서 Excel입니다. pandas의 read_excel은 Excel 파일의 한 개 또는 여러 시트를 표 형태의 DataFrame으로 읽습니다. 읽은 열을 발주 항목에 연결하고 필수값을 검사하는 기능은 별도로 개발합니다.

같은 발주에 같은 품목이 두 줄 들어갈 수 있으므로 발주번호와 품목 줄 번호를 묶어 연결 기준으로 사용합니다. ‘발주서 불러오기’를 누르면 저장 전에 등록할 행과 수정할 행을 보여주도록 구현합니다. 수량이 비어 있거나 이미 등록한 줄이 다시 들어오면 해당 행과 사유를 표시하고, 중복 발주가 생성되지 않는지 검수합니다.

SI 업체 기능 구현 요약
자료: 트램스 · SI 업체 기능 구현 요약

분할입고와 불합격 수량을 나눠 표시하기

두 번째 준비 자료는 한 발주를 여러 번 받은 입고 내역과 그중 불합격으로 처리한 기록입니다. 입고일, 도착 수량, 합격 수량, 불합격 수량, 처리 사유가 포함된 예시를 준비합니다. 이를 바탕으로 발주 품목을 선택한 뒤 ‘입고 등록’에서 도착 수량을 기록하고, 검수 결과를 추가하는 기능을 만듭니다.

예를 들어 100개 발주에 60개가 도착하고 55개가 합격했다면, 아직 도착하지 않은 수량은 40개이고 추가로 확보할 합격 수량은 45개입니다. 화면에는 두 수량을 구분해 표시하고, 불합격 5개는 사용 가능한 재고에서 제외하도록 계산합니다. 재납품을 받는 경우에는 최초 불합격 기록에 연결해, 교환 입고가 신규 발주나 일반 초과 입고로 처리되지 않도록 자체 규칙을 개발합니다.

PostgreSQL로 검수 결과와 재고 함께 저장하기

PostgreSQL 트랜잭션은 여러 데이터 변경을 함께 반영하거나 취소하지만 외부 API 요청까지 되돌리지는 않습니다. 자체 재고를 관리하는 범위라면 ‘검수 확정’ 한 번으로 검수 결과 저장과 합격 수량의 재고 반영을 함께 처리합니다. 저장 직전에 발주 잔량과 기존 처리 여부를 확인하는 로직도 추가합니다.

SI 업체 업무 처리 순서
자료: 트램스 · SI 업체 업무 처리 순서

검수할 실패 사례는 합격 55개를 확정하는 도중 재고 기록 저장이 실패하는 상황입니다. 이때 검수 결과만 확정된 채 남지 않고 관련 변경이 모두 취소되어야 합니다. 다시 확정해도 재고는 55개만 늘어나야 하며, 두 담당자가 동시에 처리하는 경우까지 포함해 중복 반영 방지를 검수합니다.

기존 ERP와 자체 개발의 책임 나누기

구매 화면은 새로 만들고 품목·거래처·재고는 기존 ERP를 기준으로 삼는 방식도 선택할 수 있습니다. 먼저 기존 ERP의 연동 문서에서 읽거나 등록할 수 있는 항목을 확인합니다. 그다음 발주와 입고 중 어느 기록을 어느 시스템에서 확정할지 정하고, 품목코드와 거래처코드를 맞추는 기능을 개발합니다.

기존 ERP가 재고의 기준이라면 새 구매 프로그램은 검수 결과를 전달하고, ERP에 반영된 수량을 확인해 보여주도록 범위를 정합니다. 외부 전송은 앞서 설명한 데이터베이스 저장과 별도로 성공 여부를 확인해야 합니다. 응답이 없을 때 확인 없이 다시 등록하지 않도록 처리하고, 같은 입고번호를 재전송해도 ERP에 수량이 두 번 잡히지 않는지 검수합니다.

SI 업체 기술별 역할
자료: 트램스 · SI 업체 기술별 역할

Django로 담당자별 확정 권한 나누기

Django authentication은 사용자·그룹·권한을 다루는 인증 체계를 제공합니다. 이를 바탕으로 구매 담당자는 발주를 등록하고, 창고 담당자는 도착 수량을 입력하며, 검수 담당자는 합격 수량을 확정하도록 업무 권한을 직접 개발합니다. 버튼 표시뿐 아니라 실제 저장 요청을 처리하는 서버에서도 담당자의 권한을 검사합니다.

확정된 수량을 바꾸는 기능에는 변경 사유와 처리자를 남기고, 취소 시 재고나 ERP 반영을 어떻게 정정할지도 정합니다. 발주 상세 화면에는 입고일별 도착·합격·불합격 수량과 변경 이력을 함께 보여주도록 구현합니다. 권한이 없는 계정으로 확정이나 취소를 요청했을 때 기록과 수량이 바뀌지 않아야 검수를 통과합니다.

발주서 Excel과 분할입고·불합격 처리 내역, 기존 ERP에서 연결할 항목을 정리해 트램스에 발주·입고 프로그램 개발을 문의해 주세요. 트램스 AI 제작 문의 (https://trams.co.kr/ai-si/contact/#inquiry)

참고 자료

  1. https://trams.co.kr/ai-si/
  2. https://www.postgresql.org/docs/current/tutorial-transactions.html
  3. https://docs.djangoproject.com/en/5.2/topics/auth/default/
  4. https://pandas.pydata.org/docs/reference/api/pandas.read_excel.html
TRAMS AI

비슷한 AI 서비스를
사업에 적용하고 싶으신가요?

아이디어와 필요한 기능을 알려주시면 제작 범위와 방법을 검토합니다.

프로젝트 문의