"공장" 모듈은 별도 플러그인입니다
원재료, 레시피, 생산 지시, 재고 이력, 재고 실사를 쓰려면 먼저 "공장" 플러그인을 켜야 메뉴에 이 탭들이 보입니다 — 직접 만들지 않고 사다 파는 가게라면 "구매"만 켜서 쓸 수도 있습니다
원재료
상품을 만드는 데 쓰는 원재료 대장입니다. 손님에게 파는 완성품을 다루는 "메뉴 / 상품"과는 다릅니다. 원재료마다 현재 재고 수준, 마지막으로 센 날짜, 센 사람이 적혀 있습니다 — 마지막 실사가 30일을 넘으면 그 줄이 노란색 경고로 바뀝니다.
재고는 마이너스가 될 수 있고, 그것이 정상입니다
시스템은 재고가 최소한 0이어야 한다고 강제하지 않습니다 — 있는 것보다 많이 팔면 숫자는 실제로 마이너스가 되고 "마이너스 — 재고보다 많이 팔림"으로 표시되며, 마이너스를 만든 거래로 가는 링크가 함께 붙습니다. 거짓말하는 0보다 눈에 보이는 마이너스가 낫습니다
단위당 평균 원가는 factory.costs 권한을 가진 사람에게만 보입니다 — 이 권한이 없으면 원가 칸은 아예 비어 있습니다. 가짜 "0"이나 "—"를 띄우지 않습니다.
레시피
만들어 파는 상품의 레시피·배합입니다. 상품 한 개에 어떤 원재료가 얼마나 들어가는지 적습니다. 레시피마다 사용 중 / 초안 / 보관됨 상태와 자체 버전이 있습니다 — 사용 중인 레시피를 고치면 기존 것을 덮어쓰지 않고 새 버전이 생깁니다. 지난 생산 지시가 그때 쓴 레시피를 정확히 가리킬 수 있게 하기 위해서입니다.
생산 지시
정해 둔 레시피대로 실제로 상품을 만들라고 지시합니다 — 생산이 끝나면 시스템이 레시피에 따라 원재료를 재고에서 자동으로 뺍니다. 원재료가 모자라면 그냥 "실패"라고만 하지 않고, 모자란 품목(short_material)과 "원재료 입고" 화면으로 가는 링크를 함께 보여 줍니다.
레시피와의 차이 — 실제 생산에서 레시피보다 원재료를 더 쓰거나 덜 썼다면 그 차이를 기록합니다. 이것을 "손실"이 아니라 "레시피와의 차이"라고 부릅니다. 일하는 사람만큼이나 레시피 자체도 틀릴 수 있기 때문입니다.
재고 이력
가게 전체의 원재료와 상품이 들어오고 나간 기록을 시간 순서대로 남깁니다. 무엇이 언제 들어오고 나갔는지, 누가 적었는지 되짚어 볼 때 씁니다 — 모든 줄에는 적은 사람의 이름이 늘 붙습니다. 가게에 자동 저울이나 스캐너가 아직 없고, 모든 숫자는 사람이 직접 입력한 것이기 때문입니다.
재고 실사
실제 재고를 세어 시스템의 숫자와 맞춰 보고, 모자라거나 남으면 수량을 조정합니다 — 사유 없이 수량을 조정하면 시스템이 저장을 거부합니다(variance_reason_required). 차이의 사유를 언제나 적어야 합니다.
구매
가게에 들일 물건을 요청하고, 승인하고, 발주합니다. 직원이 쓴 개인 비용을 돌려받는 "직원 경비 청구서"와는 다릅니다 — 전체 흐름은 구매 요청 → 승인 → 발주서 발행 → 창고 입고 → 미지급금 등록입니다.
한 단계씩
- 구매 요청 — 직원 누구나 품목과 수량을 적어 구매 요청서를 만들 수 있습니다
- 승인 — purchase.approve 권한을 가진 사람이 승인하거나 거절합니다. 금액이 얼마일 때 어떤 권한이 필요한지는 "승인 규칙"에서 직접 정할 수 있습니다(아무것도 정하지 않으면 기본값으로 모든 금액에 purchase.approve가 필요합니다)
- 발주서 발행 — purchase.order 권한을 가진 사람이 거래처 장부에서 고른 거래처 앞으로 발주서를 냅니다
- 창고 입고 — purchase.receive 권한을 가진 사람이 물건이 실제로 도착했음을 확인하고, 주문한 대로 자산이나 원재료로 입고합니다
- 미지급금 등록 / 지급 기록 — purchase.payables 권한을 가진 사람이 "미지급금"에서 이어서 처리합니다
이 세 권한은 사장님이 사람마다 직접 줘야 합니다. 시스템이 자동으로 주지 않습니다
purchase.approve, purchase.order, purchase.payables는 어떤 역할에도 자동으로 붙지 않습니다. "매니저"에게도 붙지 않습니다 — 언제나 통과하는 사람은 가게 소유자(전체 권한 *)뿐입니다. "역할과 권한" 화면에서 직원에게 이 권한들을 직접 줘야 하며, 그러지 않으면 모든 단계가 사장님 한 사람을 기다리며 멈춥니다
거래처
가게가 물건을 사는 거래처·공급업체 장부입니다 — 발주서를 낼 때 고르는 목록이자, 거래처별 미지급금 잔액이 묶이는 곳입니다.
미지급금
입고가 끝난 발주서에 이어, 가게가 거래처에 아직 치르지 않은 금액입니다 — 지급을 기록하거나 잔액을 닫으려면 purchase.payables 권한이 있어야 합니다. 이 화면의 숫자는 언제나 실제 발주서에 묶여 있으며, 따로 손으로 입력한 금액이 아닙니다.