Skip to content
On this page

상품 재고 관리

와인 등 상품의 재고 관리 페이지를 만들 수 있습니다. 상품 재고 조회와 추가, 관리 기능을 쉽게 만들어보세요.

전체 YAML 파일

재고 조회와 상품/재고 추가, 그리고 상세 조회 및 수정 페이지 총 3부분으로 이루어져있습니다. 전체 내용에 이어 부분별 설명을 아래에서 확인하실 수 있습니다.

yaml
menus:
- path: stocks
  name: 재고관리
pages:
- path: stocks
  blocks:
  - type: query
    resource: mysql.qa
    sql: >
      SELECT name, vintage, inflow, outflow, price,
        COALESCE(inflow, 0) - COALESCE(outflow, 0) AS '재고',
        id
      FROM wine_stock
      WHERE deleted_at IS NULL
    searchOptions:
      enabled: true
    actions:
    - type: query
      modal: true
      single: true
      label: 와인추가
      params:
      - key: name
      resource: mysql.qa
      sql: >
        INSERT INTO wine_stock
        SET name = :name
    viewModal:
      useColumn: name
      blocks:
      - type: query
        resource: mysql.qa
        sql: >
          SELECT *, 
            COALESCE(inflow, 0) - COALESCE(outflow, 0) AS '재고',
            COALESCE(IFNULL(deleted_at, 'Y'), 'N') AS deleted_at 
          FROM wine_stock
          WHERE id = :id
        display: form
        params:
        - key: id
          valueFromRow: id
        columns:
          재고:
            style: |
              color: tomato;
              background-color: #f0f0f0;
              font-size: 28px !important;
              font-weight: 700;
              padding: 1rem;
              text-align: center;
          name:
            updateOptions:
              type: query
              resource: mysql.qa
              sql: UPDATE wine_stock SET name = :value WHERE id = :id
          vintage:
            maxlength: 10
            updateOptions:
              type: query
              resource: mysql.qa
              sql: UPDATE wine_stock SET vintage = :value WHERE id = :id
          memo:
            maxlength: 1000
            format: textarea
            updateOptions:
              type: query
              resource: mysql.qa
              sql: UPDATE wine_stock SET memo = :value WHERE id = :id
          price:
            format: text
            updateOptions:
              type: query
              resource: mysql.qa
              sql: UPDATE wine_stock SET price = :value WHERE id = :id
          inflow:
            label: 입고수량
            format: number
            min: 0
            step: 1
            updateOptions:
              type: query
              resource: mysql.qa
              sql: UPDATE wine_stock SET inflow = :value WHERE id = :id
          outflow:
            label: 출고수량
            format: number
            min: 0
            step: 1
            updateOptions:
              type: query
              resource: mysql.qa
              sql: UPDATE wine_stock SET outflow = :value WHERE id = :id
          deleted_at:
            label: 상태(삭제일시)
            radio:
            - Y
            - N
            updateOptions:
              type: query
              resource: mysql.qa
              sql: UPDATE wine_stock SET deleted_at = :value WHERE id = :id
              params:
              - key: value
                raw:
                  Y: NULL
                  N: NOW()

1. 재고 조회 기본 페이지

쿼리(query) 블록을 이용해 재고 조회 페이지를 만듭니다.

yaml
menus:
- path: stocks
  name: 재고관리
pages:
- path: stocks
  blocks:
  - type: query
    resource: mysql.qa
    sql: >
      SELECT name, vintage, inflow, outflow, price,
        COALESCE(inflow, 0) - COALESCE(outflow, 0) AS '재고',
        id
      FROM wine_stock
      WHERE deleted_at IS NULL
    searchOptions:
      enabled: true

2. 상품/재고 추가 버튼 actions

와인 등 상품을 추가할 수 있는 버튼과 모달을 만듭니다.

yaml
actions:
- type: query
  modal: true
  single: true
  label: 와인추가
  params:
  - key: name
  resource: mysql.qa
  sql: >
    INSERT INTO wine_stock
    SET name = :name

3. 상품/재고 상세 조회 및 수정 페이지

viewModal을 통해 상품의 상세 조회와 수정 페이지를 만들 수 있습니다.

yaml
viewModal:
  useColumn: name
  blocks:
  - type: query
    resource: mysql.qa
    sql: >
      SELECT *, 
        COALESCE(inflow, 0) - COALESCE(outflow, 0) AS '재고',
        COALESCE(IFNULL(deleted_at, 'Y'), 'N') AS deleted_at 
      FROM wine_stock
      WHERE id = :id
    display: form
    params:
    - key: id
      valueFromRow: id
    columns:
      재고:
        style: |
          color: tomato;
          background-color: #f0f0f0;
          font-size: 28px !important;
          font-weight: 700;
          padding: 1rem;
          text-align: center;
      name:
        updateOptions:
          type: query
          resource: mysql.qa
          sql: UPDATE wine_stock SET name = :value WHERE id = :id
      vintage:
        maxlength: 10
        updateOptions:
          type: query
          resource: mysql.qa
          sql: UPDATE wine_stock SET vintage = :value WHERE id = :id
      memo:
        maxlength: 1000
        format: textarea
        updateOptions:
          type: query
          resource: mysql.qa
          sql: UPDATE wine_stock SET memo = :value WHERE id = :id
      price:
        format: text
        updateOptions:
          type: query
          resource: mysql.qa
          sql: UPDATE wine_stock SET price = :value WHERE id = :id
      inflow:
        label: 입고수량
        format: number
        min: 0
        step: 1
        updateOptions:
          type: query
          resource: mysql.qa
          sql: UPDATE wine_stock SET inflow = :value WHERE id = :id
      outflow:
        label: 출고수량
        format: number
        min: 0
        step: 1
        updateOptions:
          type: query
          resource: mysql.qa
          sql: UPDATE wine_stock SET outflow = :value WHERE id = :id
      deleted_at:
        label: 상태(삭제일시)
        radio:
        - Y
        - N
        updateOptions:
          type: query
          resource: mysql.qa
          sql: UPDATE wine_stock SET deleted_at = :value WHERE id = :id
          params:
          - key: value
            raw:
              Y: NULL
              N: NOW()

🚧 params.raw

key에 해당하는 value로 raw sql을 지정하는 기능입니다. NULL 이나 NOW() 등 일반 데이터 타입(string, number 등 문자)이 아닌 값을 넣어야할 때 이용해주세요. 일반 데이터 타입에서는 사용하지 않는 것이 좋습니다.

updateOptions에 대한 자세한 설명은 "클릭해서 수정하기" 페이지에서 확인하실 수 있습니다.