외주 개발로 견적서 작성과 승인 자동화하기
판매 단가표와 할인·배송비를 견적서로 만드는 외주 개발 범위를 설명합니다. 화면, PDF, 엑셀의 품목코드·단가버전·계산 결과·승인상태를 일치시키는 구현 방법과 검수 조건을 정리합니다.
핵심 요약
1. 판매 단가표와 할인·배송비를 입력해 견적 PDF와 엑셀을 생성하는 프로그램을 만듭니다. 2. pandas로 단가표를 읽고 Next.js로 입력을 처리하며 PostgreSQL로 관련 데이터를 함께 저장합니다. 3. 단가버전, 계산식, 반올림, 승인상태를 관리하는 업무 로직과 화면·파일의 일치 여부를 직접 구현합니다.
견적 화면에서는 맞았던 금액이 내려받은 파일에서 달라지면 고객에게 보내기 전에 다시 계산해야 합니다. 견적서 프로그램의 외주 개발 범위에는 입력 편의뿐 아니라 같은 견적을 어디서 열어도 같은 값으로 확인하는 기준이 필요합니다.
프로그램 제작의뢰를 준비할 때는 출력 모양과 함께 금액을 결정하는 규칙을 전달해야 합니다. 아래는 판매 단가표를 견적 작성부터 승인과 문서 출력까지 연결하는 구현 방법입니다.
pandas로 판매 단가표를 읽고 품목을 연결합니다
pandas의 read_excel은 엑셀의 한 개 또는 여러 시트를 DataFrame이라는 표 형태의 데이터로 읽을 수 있습니다. 첫 번째 준비 자료는 품목코드·품목명·판매단가·적용일이 들어 있는 판매 단가표 예시입니다. 프로그램에서는 이 열들을 견적에 필요한 항목과 연결하는 작업을 별도로 구현합니다.
업로드 화면에는 읽은 품목과 오류가 있는 행을 표시하도록 만듭니다. 품목코드 중복, 단가 누락, 적용일 오류는 등록 전에 확인하며 코드 앞자리의 0도 유지하도록 처리합니다. 단가표를 등록할 때 버전을 구분하고, 견적에는 선택한 버전과 당시 단가를 함께 남겨 이후 가격 변경과 구분합니다.

Next.js로 할인·배송비 입력과 계산을 연결합니다
Next.js에서는 폼의 FormData를 서버 함수에서 받아 처리할 수 있습니다. 이를 견적 입력에 활용하되 사용자 인증과 입력값 검사는 직접 구현해야 합니다. 품목을 선택하면 해당 버전의 단가를 불러오고, 수량·할인·배송비를 입력한 뒤 ‘견적 계산’ 버튼으로 결과를 확인하게 만듭니다.
계산 순서는 ‘단가×수량 → 할인 적용 → 반올림 → 품목 합계 → 배송비 합산’처럼 업무 기준에 맞춰 확정합니다. 할인율과 정액 할인을 함께 허용할지, 반올림은 어느 자리에서 할지도 별도 규칙으로 정합니다. 이 계산은 서버의 공통 로직에서 처리하고 화면에는 그 결과를 표시하며, 음수 수량이나 허용 범위를 넘는 할인은 저장 전에 안내합니다.
PostgreSQL로 견적 저장과 승인을 함께 처리합니다
PostgreSQL의 트랜잭션은 여러 데이터 변경을 모두 반영하거나 모두 취소하는 기능입니다. 이를 이용해 견적의 기본 정보, 품목별 단가와 계산 결과, 단가버전을 한 번의 저장 작업으로 묶습니다. 품목 일부만 저장되거나 합계만 바뀌는 경우가 생기지 않도록 저장 범위를 직접 정해야 합니다.

승인 기능에는 승인할 수 있는 담당자와 승인 대상 견적을 확인하는 로직을 추가합니다. ‘승인’ 버튼을 누를 때는 담당자가 확인한 내용과 현재 저장된 내용이 같은지 비교합니다. 승인 후 수량이나 할인을 수정하면 새 견적 버전으로 남기고 다시 승인받도록 하며, 이전 승인 기록을 새 금액에 그대로 붙이지 않습니다.
공통 견적 데이터로 PDF와 엑셀을 출력합니다
출력 기능은 저장된 견적 한 건을 기준으로 화면과 PDF, 엑셀에 필요한 내용을 전달하도록 만듭니다. 품목코드·단가버전·계산식·반올림 기준·승인상태도 동일한 저장 내용을 사용합니다. 파일을 만들 때 최신 단가표를 다시 조회하거나 출력 형식마다 금액을 따로 계산하지 않도록 연결하는 것이 핵심입니다.
두 번째 준비 자료는 품목 배열, 할인 표시, 배송비 위치, 승인 표시가 드러나는 기존 견적서 예시입니다. 이를 바탕으로 PDF와 엑셀의 표시 항목을 정하고, 긴 품목명과 여러 페이지에 걸친 품목 목록도 확인합니다. 엑셀을 확정 금액 전달용으로 사용할지 수식 편집용으로 사용할지 구분하되, 최초 내려받은 값은 화면과 일치하도록 검수합니다.

단가 변경과 파일 생성 실패를 검수합니다
대표 실패 사례는 승인된 견적을 열어 둔 사이 새 단가표가 등록되어 화면에는 이전 금액이, PDF에는 새 금액이 나오는 경우입니다. 검수할 때는 견적 승인 후 단가표를 바꾸고 같은 견적의 PDF와 엑셀을 다시 내려받습니다. 두 파일의 품목별 단가, 할인, 배송비, 최종 합계와 승인상태가 저장된 견적과 모두 같아야 통과하도록 기준을 정합니다.
반올림 경계에 걸리는 계산과 배송비가 없는 견적도 같은 방식으로 대조합니다. 파일 생성은 견적 저장이 끝난 뒤 별도 작업으로 연결하고, 출력에 실패하면 저장된 견적으로 다시 생성할 수 있게 만듭니다. 재시도할 때도 동일한 견적 버전을 사용하며, 수정한 견적과 이전에 승인된 파일을 화면에서 구별할 수 있는지 확인합니다.
판매 단가표와 기존 견적서 예시, 할인·배송비 계산 규칙, 승인 담당자 기준을 정리해 트램스에 견적서 프로그램 개발을 문의해 주세요. 트램스 AI 제작 문의 (https://trams.co.kr/ai-si/contact/#inquiry)
참고 자료
비슷한 AI 서비스를
사업에 적용하고 싶으신가요?
아이디어와 필요한 기능을 알려주시면 제작 범위와 방법을 검토합니다.