마젠토 2.3 공개 때 처음 도입된 기능인 판매 가능 수량이란 개념이 있습니다. 아주 작은 칼럼이 인벤토리 옆에 하나 추가가 된거지만, 사실 이 기능으로 인해 마젠토 2가 엔터프라이즈 비즈니스에 좀 더 탁월하게 대응할 수 있게 되었습니다.
오늘은 Salable 수량을 별도로 얻는 방법을 통해 전체 인벤토리 현황과 특정 제품들이 솔드아웃 처리되는걸 모니터링 할 수 있는 간단한 코드를 소개해드립니다.
Salable 수량의 도입으로 인해 마젠토 2는 이제 주문이 들어왔을 때 제품의 인벤토리 수량이 줄지 않게 됩니다. 인벤토리 수는 줄지 않고 Salable 수에서 차감이 됩니다. 그리고 실제 인벤토리는 배송이 된 후 차감되게 됩니다. 이런 이유로 다음과 같은 현상이 발생합니다.
- 인벤토리 수량과 Salable 수량이 같지 않게 됩니다.
- 추가 인벤토리 입고가 이루어졌지만, 이미 접수된 주문이 배송 처리가 되지 않을 경우 여전히 Salable 수량은 -로 표기될 수 있습니다.
- 실제 인벤토리가 있음에도 Salable 수가 0이 되면서 사이트에서는 품절 처리가 됩니다. 구글 쇼핑을 이용하는 경우 이 때 문제가 발생됩니다. 마젠토 2의 다양한 데이타 피드를 만드는 방식에서 인벤토리를 Salable 수량이 아닌 Inventory 수량으로 작성되기 때문입니다.
특히 3번은 구글 쇼핑 리스팅과 광고시 심각한 문제를 일으킬 수 있습니다. 구글측에서 정책 위반으로 더 이상 쇼핑 광고 등을 못하게 막는 경우까지 있는데, 이유는 Feed 상에는 인벤토리가 있지만, 실제 사이트에서는 Salable 수량 문제로 솔드 아웃으로 표기될 수 있기 때문입니다.
3번 문제는 별도 커스텀 스크립트를 통해 Salable Qty를 구글이나 페이스북 등 Feed 작성할 때 Inventory Qty로 별도 맵핑해서 해결을 하면 됩니다.
사실 Salable Qty 개념은 중소 규모 커머스 환경에서 반드시 필요한 기능은 아닙니다. 대신 글 서두에 밝혔듯이 엔터프라이즈 환경에서는 중요한 개념인데, 가령 여러 웨어하우스에 분산되어 인벤토링 되어 있는 제품이 있고, 해당 제품의 온라인 판매가 1분당 수십껀이 될 경우에는 이 Salable 수량 개념이 없을 경우 대량 주문 취소등으로 이어질 수 있기 때문입니다.
또 여러가지 문제로 특정 주문의 배송 처리시 배송을 홀드하거나 하는 문제가 있는데, 이렇게 예약된 Salable Qty가 없을 경우, 해당 주문 처리를 위해 다른 문제를 해결한 후 실제 배송시 물건이 없는 경우 또한 발생할 수 있습니다.
마젠토 2에서 간단하게 Salable 수량을 파악할 수 있는 코드를 소개합니다. 이 코드를 통해 Salable 수량이 0인 경우에도 재고에 수량 가용성을 표시할 수 있습니다.
app\code\Vendor\Extension\Helper\Data.php 등 관련 익스텐션 작업시 본문 하단에 별도 표기 된 아래 코드를 추가합니다.
마젠토 2.3으로 업그레이드 할 때 Salable Qty 관련 이슈가 실제 굉장히 많았지만 이제는 몇번의 패치로 인해 대부분의 오작동 버그 등이 해결되었습니다.
다른 엔트리 레벨 플랫폼에서 마젠토로 마이그레이션 할 때 이 Salable Qty 때문에, 혼란이 있는 경우들이 많은데, 이거 하나만 기억하시면 됩니다. “Salable Qty는 판매 가능 수량이고 실제 배송 처리까지 완료되는 경우 인벤토리에서 해당 재고 수량이 빠지게 된다.”