협력사 주문을 한곳에서 받는 웹 개발하기
협력사별 상품목록과 계약단가를 제공하는 발주 플랫폼의 구현 방법을 설명합니다. 거래처별 접근 제한, 단가버전 고정, 주문수정 마감과 승인실적 조회에 필요한 개발 범위와 검수 기준을 정리합니다.
핵심 요약
1. 협력사마다 상품목록과 계약단가가 다르게 보이는 웹 개발로 발주 창구를 한곳에 모읍니다. 2. Next.js와 PostgreSQL을 연결하고, 로그인한 거래처에 맞춰 조회와 주문 저장 범위를 제한합니다. 3. 단가버전 고정, 주문수정 마감, 승인 이력과 실적 계산은 업무 규칙에 맞게 직접 개발합니다.
협력사마다 공급 상품과 계약단가가 다르면, 같은 주문 화면에서도 서로 다른 정보가 보여야 합니다. 플랫폼 구축의 핵심은 발주 접수를 모으면서 거래처별 정보와 주문 확정 기준을 정확히 나누는 데 있습니다. 아래는 유통 본사의 협력사 주문 시스템을 만들 때 필요한 구현 범위입니다.
Next.js로 상품 선택과 발주 접수 연결하기
협력사는 자신에게 공급되는 상품을 고른 뒤 수량과 납품 희망일을 입력합니다. Next.js는 폼 입력값 묶음인 FormData를 서버 함수에서 받아 처리할 수 있습니다. 로그인 확인과 상품별 주문 가능 여부, 수량 검사는 별도 로직으로 붙입니다.
‘발주 접수’를 누르면 서버가 필수 항목과 최소 수량, 판매 단위를 검사하도록 만듭니다. 최소 주문 수량보다 적게 입력하거나 계약이 끝난 상품을 보내면 해당 항목에 수정 안내를 표시합니다. 정상 접수 후에는 주문번호와 상품별 수량을 보여주고, 버튼을 연속으로 눌러도 같은 요청이 중복 저장되지 않는지 확인합니다.

PostgreSQL RLS로 다른 거래처의 주문 막기
화면에서 거래처 선택란을 숨기는 것만으로는 열람 제한을 끝낼 수 없습니다. 서버는 로그인 계정에 연결된 거래처를 확인하고, 주문·계약단가·공급 상품마다 어느 거래처의 자료인지 기록하도록 구현합니다. 사용자가 요청에 담아 보낸 거래처 번호만으로 조회 대상을 정하지 않습니다.
PostgreSQL RLS는 행 단위 보안 정책으로 사용자별 조회·추가·수정·삭제 대상 행을 제한할 수 있습니다. 이를 적용할 데이터베이스 계정과 정책을 점검하고, 본사 담당자의 접근 범위도 업무 권한에 맞춰 정합니다. A사 계정으로 주소의 주문번호를 B사 번호로 바꿨을 때 B사의 주문과 단가가 응답에 포함되면 검수 실패로 처리합니다.
계약단가 버전을 접수 시점에 고정하기
기초 자료로 ‘거래처 코드, 상품 코드, 계약단가, 적용 시작일·종료일’이 담긴 계약단가표를 받습니다. 같은 상품도 거래처와 적용 기간에 따라 가격이 달라지므로, 가격 변경 이력을 구분하는 단가버전을 둡니다. 발주 접수 시 서버가 유효한 계약을 다시 확인하고 적용 단가와 버전을 주문에 함께 기록합니다.

주문 금액은 화면이 보내온 가격을 그대로 믿지 않고 서버가 확인한 단가로 계산합니다. 상품을 고른 뒤 접수 전에 단가가 바뀌었다면 변경 금액을 보여주고 다시 확인받도록 만듭니다. 이후 계약단가를 바꿔도 이전 주문 금액이 유지되는지 검사하며, 수량 수정 때 기존 단가를 유지할지도 발주 전에 정합니다.
주문수정 마감과 승인 기록 함께 저장하기
두 번째 자료는 ‘배송일별 수정 마감 시각, 승인 담당자, 승인 후 변경 절차’를 적은 운영 기준표입니다. 이를 바탕으로 서버가 수정 요청을 받은 시각과 승인 여부를 검사합니다. 화면에 수정 버튼이 남아 있어도 마감 뒤 요청은 거절하고, 변경이 필요하면 본사 담당자에게 별도 승인을 요청하는 흐름을 만듭니다.
PostgreSQL 트랜잭션은 여러 데이터 변경을 모두 반영하거나 모두 취소하지만 외부 API까지 함께 취소하지는 않습니다. 주문 변경과 승인 이력 저장을 한 처리로 묶고, 승인과 수정이 동시에 들어올 때 충돌을 감지하는 규칙은 직접 개발합니다. 승인 직전 수량이 바뀌면 재확인하도록 하고, 저장 중 오류가 나도 주문만 바뀌고 이력이 빠지는 일이 없는지 검사합니다.

승인된 주문으로 거래처별 실적 조회하기
실적 화면에는 조회 기간, 거래처, 상품을 고르는 필터와 승인 수량·금액을 표시합니다. 접수일과 승인일 중 어느 날짜를 집계 기준으로 삼을지 먼저 정하고, 주문에 기록한 단가로 금액을 계산합니다. 미승인 주문을 제외하고, 승인 후 취소된 주문을 실적에서 언제 차감할지도 운영 규칙으로 구현합니다.
협력사에는 자신의 실적만 보여주고, 본사에는 권한이 있는 거래처의 합계를 제공합니다. 합계 금액을 누르면 계산에 포함된 주문 목록이 열리도록 만들어 근거를 확인하게 합니다. 기간 경계에 걸린 승인 건과 취소 건을 넣어 합계가 상세 주문 금액과 일치하는지 확인하고, 내려받기에도 같은 조회 제한을 적용합니다.
협력사별 계약단가표와 주문수정·승인 운영 기준표를 준비해 트램스에 발주 플랫폼 개발을 문의해 주세요. 필요한 발주 화면과 기존 재고·회계 시스템의 연결 범위를 함께 알려주시면 됩니다. 트램스 AI 제작 문의 (https://trams.co.kr/ai-si/contact/#inquiry)
참고 자료
비슷한 AI 서비스를
사업에 적용하고 싶으신가요?
아이디어와 필요한 기능을 알려주시면 제작 범위와 방법을 검토합니다.