> ## Documentation Index
> Fetch the complete documentation index at: https://docs.alforse.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 판매 규칙

> 견적, 수주, 매출 송장 라인에 대해 회사가 정의하는 검사로, 제한된 품목을 즉시 차단하거나 사용자에게 경고하며 사용자는 확인하고 계속 진행할 수 있습니다.

판매 규칙을 사용하면 비즈니스 조건이 충족되지 않을 때 품목이 견적, 주문, 송장 발행되는 것을 막을 수 있습니다. 수출 통제 부품이 제한 국가로 가는 경우, 보류 중인 고객, 판매하는 범위를 벗어난 수량이 그 예입니다. 영업 관리자가 규칙을 한 번 정의하면 모든 영업 담당자의 견적, 수주, 매출 송장 라인이 자동으로 검사됩니다.

## 판매 규칙의 동작 방식

규칙은 **조건**과 **심각도**를 짝지은 것입니다. Alforse는 규칙이 적용되는 각 라인에 대해 조건을 평가합니다.

* 조건이 **성립하면** 라인이 통과합니다.
* 성립하지 **않으면** 규칙을 위반한 것이며 심각도가 결과를 결정합니다. **오류**는 쓰기를 차단하고, **경고**는 메시지를 표시하며 사용자가 확인하고 계속할 수 있게 합니다.

차단된 문서는 아무것도 기록하지 않으므로 거부된 라인이 반쯤 저장된 견적이나 주문을 남기지 않습니다.

### 예시: 수출 통제 부품

통제 부품이 제한 목적지로 판매되는 것을 막으려면 다음과 같이 합니다.

1. 규칙의 범위를 부품의 품목 그룹으로 지정합니다.
2. 세 가지 적용 대상을 모두 활성화합니다. **견적 라인**, **수주 라인**, **매출 송장 라인**.
3. 조건 `customer.location.countryCode` `notIn` 제한 국가 목록을 추가합니다.
4. **심각도**를 **오류**로 설정하고 메시지를 `` `{item.id}` cannot ship to this destination``으로 설정합니다.

이제 배송지 국가가 목록에 있는 해당 부품의 모든 라인은 품목 id가 채워진 메시지와 함께 거부됩니다.

## 규칙 생성

**영업 → 판매 규칙**을 열고 규칙을 생성합니다. 목록에는 각 규칙의 **이름**, **심각도**, **적용 대상**(Surfaces), **상태**(활성 또는 비활성), 규칙에 배정된 **품목** 수가 표시됩니다.

FieldType

<details>
  <summary>**이름**required</summary>

  규칙의 고유한 이름입니다.
</details>

<details>
  <summary>**활성**</summary>

  규칙을 평가할지 여부입니다. 삭제하지 않고 규칙을 일시 중지하려면 끄십시오.
</details>

<details>
  <summary>**설명**</summary>

  규칙에 대한 선택적인 내부 설명입니다.
</details>

<details>
  <summary>**심각도**</summary>

  **오류**(`error`로 저장)는 해결될 때까지 저장을 차단합니다. **경고**(`warn`으로 저장)는 사용자가 확인하고 계속할 수 있게 합니다.
</details>

<details>
  <summary>**품목 필터**</summary>

  규칙이 다루는 품목 유형 및/또는 품목 그룹입니다. 모든 품목을 다루려면 비워 두십시오.
</details>

<details>
  <summary>**적용 대상**</summary>

  규칙이 검사하는 판매 문서 라인: **견적 라인**, **수주 라인**, **매출 송장 라인**.
</details>

<details>
  <summary>**조건**</summary>

  일치 종류와 하나 이상의 필드 / 연산자 / 값 행입니다.
</details>

<details>
  <summary>**메시지**</summary>

  위반 시 표시되는 텍스트입니다. `{token}` 보간을 지원합니다.
</details>

### 조건 작성

조건은 작은 트리입니다. 하나 이상의 필드 / 연산자 / 값 행에 적용되는 **일치 종류**입니다.

| 부분 | 옵션 |
| - | - |
| 일치 종류 | `all` — 모든 행이 성립해야 합니다. `any` — 하나 이상의 행이 성립해야 합니다. `none` — 어떤 행도 성립하면 안 됩니다. |
| 필드 | 품목 정보: `item.type`, `item.replenishmentSystem`, `item.itemTrackingType`, 품목 사용자 정의 필드. 고객 정보: `customer.customerTypeId`, `customer.customerStatusId`, 고객 사용자 정의 필드. 문서의 배송지 국가: `customer.location.countryCode`. 라인의 `transaction.quantity`. |
| 연산자 | 예: `eq`, `neq`, `in`, `notIn`, `isSet`, `isNotSet`, `gt`, `lt`. 빌더는 선택한 필드가 지원하는 연산자만 제공합니다. |

필드는 고정된 레지스트리에서 가져옵니다. 품목 및 고객 사용자 정의 필드 외에는 직접 추가할 수 없습니다.

### 메시지 작성

메시지는 규칙이 작동했을 때 사용자에게 표시되는 내용이므로 문제를 명시하도록 작성하십시오. `` `{item.id}` ``와 `` `{customer.location.countryCode}` `` 같은 토큰은 라인의 실제 값으로 대체됩니다.

NOTE

**값이 없으면 위반입니다**

`isSet`과 `isNotSet`을 제외하고, **값이 없는** 필드를 가리키는 조건은 통과하지 않고 *"…is required"*(…이(가) 필요합니다) 위반으로 실패합니다. 따라서 배송지 위치가 없는 수주의 국가 규칙은 *"Customer location is required"*(고객 위치가 필요합니다)로 안전하게 실패합니다. \*\*"배송처"\*\*가 없는 송장의 독립 송장 라인(원본 수주가 없는 라인)도 마찬가지이며, Alforse는 청구 대상 주소를 대신 사용하지 않습니다.

## 규칙이 다루는 품목 선택

규칙은 두 가지 방법 중 하나로 라인에 도달합니다.

* **필터로.** 규칙의 범위를 **품목 유형** 및/또는 **품목 그룹**으로 OR 또는 AND로 조합하여 지정합니다. 비어 있는 필터는 **모든** 품목과 일치합니다.
* **배정으로.** 해당 품목의 영업 탭에 있는 **판매 규칙** 카드에서 규칙을 특정 품목 하나에 연결합니다. **라이브러리에서 추가…**로 기존 규칙을 선택하거나 **새 규칙 생성**으로 그곳에서 시작합니다.

품목의 **판매 규칙** 카드에는 품목에 적용되는 모든 규칙이 나열됩니다. 필터를 통해 품목에 도달하는 규칙은 카드에서 배정을 해제할 수 없습니다. 제거하려면 규칙의 품목 필터를 편집하십시오.

판매 규칙은 항상 품목을 대상으로 합니다. [보관 규칙](https://docs.alforse.com/ko/docs/reference/storage-rules.md)과 달리 작업장 대상은 없습니다.

## 규칙이 검사되는 시점

규칙은 두 종류의 체크포인트에서 실행됩니다.

### 라인 검사

견적, 수주 또는 매출 송장에서 라인이 생성되거나 편집되면 적용 대상에 해당 라인 유형이 포함된 규칙이 즉시 평가됩니다.

### 문서 게이트

문서가 확정된 약속이 되는 각 시점에서 문서의 모든 라인이 다시 검사됩니다.

* 견적 확정
* 견적을 수주로, 또는 RFQ를 견적으로 전환
* 수주 확인
* 수주의 출하 전기
* 매출 송장 전기

이러한 게이트에서 **모든** 라인을 다시 읽으면 라인 검사가 잡지 못하는 것을 잡아냅니다. 전환, 가져오기 또는 API로 생성된 라인, 라인이 저장된 후 작성된 규칙, 그 이후 변경된 배송지입니다.

### 국가 규칙이 읽는 배송지

국가 조건은 상품이 실제로 가는 곳을 기준으로 평가합니다.

* 직배송은 수주 헤더의 주소를 재정의합니다.
* 수주에서 전환된 송장 라인은 해당 수주를 통해 목적지를 확인합니다.
* 독립 송장 라인은 송장 자체의 **"배송처"**를 사용합니다.

### 고객의 디지털 견적에서

고객이 [디지털 견적](https://docs.alforse.com/ko/docs/reference/quotes.md)을 수락할 때는 무언가를 확인할 직원이 없습니다.

* `error` 위반은 중립적인 메시지와 함께 수락을 거부합니다. 내부 규칙 텍스트가 고객에게 전달되지 않습니다.
* `warn` 위반은 판매자를 위해 기록되고 수락은 진행됩니다.

## 차단 또는 경고

| 심각도 | 결과 |
| - | - |
| `error`(**오류**) | 조건이 충족될 때까지 라인이나 문서를 차단합니다. 확인하고 넘어갈 수 없습니다. |
| `warn`(**경고**) | 메시지를 표시하고 사용자가 **확인하고 계속**할 수 있게 합니다. |

두 경우 모두 기록이 남습니다. 차단된 각 쓰기와 확인된 각 경고는 규칙, 문서, 라인, 품목, 사용자, 시각이 증거로 기록되며, **판매 규칙 알림 그룹**(설정 → 영업)의 사람들에게 이메일이 전송됩니다.

## 플랜

HEADS UP

**Business 플랜 전용**

판매 규칙에는 **Business** 플랜이 필요합니다. 다른 플랜에서는 판매 규칙 화면에 업그레이드 안내가 표시되며 규칙이 평가되지 않습니다.

## 문제 해결

| 증상 | 원인 | 해결 방법 |
| - | - | - |
| 저장 또는 전기가 낯선 비즈니스성 메시지와 함께 실패합니다. | 심각도가 `error`인 판매 규칙이 작동했습니다. | **영업 → 판매 규칙**에서 메시지로 규칙을 찾은 다음 문서 데이터나 규칙을 수정하십시오. |
| 메시지가 *"…is required"*로 끝납니다. | 규칙이 값이 없는 필드를 검사했습니다. 대개 배송지 위치가 없는 경우입니다. | 규칙을 완화하지 말고 문서의 누락된 값을 입력하십시오. |
| 저장 시 경고 대화상자가 나타납니다. | `warn` 규칙이 작동했습니다. | 확인하고 다시 제출하십시오. 확인은 기록됩니다. |
| 규칙이 전혀 작동하지 않습니다. | 비활성이거나, 적용 대상에 이 라인 유형이 제외되어 있거나, 품목 필터가 품목을 놓치거나, 회사가 Business 플랜이 아닙니다. | 규칙의 **상태**, **적용 대상**, **품목 필터**를 확인하십시오. |

## 관련 문서

**보관 규칙**

자매 규칙 계열: 동일한 조건 빌더를 판매 문서 대신 재고 거래에 적용합니다.

[Open](https://docs.alforse.com/ko/docs/reference/storage-rules.md)

**견적**

첫 번째 적용 대상: 규칙은 견적 라인이 작성될 때와 확정 및 전환 시 다시 실행됩니다.

[Open](https://docs.alforse.com/ko/docs/reference/quotes.md)

**수주**

규칙은 수주 확인과 이를 이행하는 출하를 게이트로 제어합니다.

[Open](https://docs.alforse.com/ko/docs/reference/sales-orders.md)

**송장**

마지막 체크포인트: 상위 수주 없이 발행된 송장도 전기 시 검사됩니다.

[Open](https://docs.alforse.com/ko/docs/reference/invoices.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.