Доступ к товарам и услугам



Структура моделей, назначение полей

Модель Good(инфо. товара/услуги)

Модель Good — представляет товар, услугу, сейчас небольшими доработками внедряется поддержка прочих ТМЦ.

* @property integer $id // ИД продукта
* @property integer $group_id // ИД группы в которой находится продукт - Принадлежит GoodGroup
* @property string $title // Название товара
* @property integer $unit_storage_id // Единица в которой товар хранится на складе - Принадлежит Unit
* @property integer $is_warehouse_account // Вести учет этого товара на складе?
* @property integer $is_active // Товар активен? 
* @property string $code // Артикул товара
* @property integer $category_id // ИД Категории для зарплаты, если она переопределяется у товара
* @property integer $is_call // Относится ли этот товар или услуга к вызову
* @property string $barcode // Штрихкод товара
* @property integer $is_for_sale // Подлежит ли товар продаже?
@property string $description // описание
@property decimal prime_cost // себестоимость

Содержит многие GoodSaleParam

Модель GoodGroup(инфо. группы товара/услуги)

Модель GoodGroup — предствляет группу товаров или услуг

* @property integer $id // ИД групы
* @property string $title // Название группы
* @property integer $price_id // ИД категории (наименование будет изменено, использовать не рекомендуется)
* @property integer $is_service // Группа товаров, или услуг
* @property double $markup // Наценка на группу товаров, справочное поле для склада
@property integer $is_show_in_vaccines // определяет будут ли товары из этой группы отображаться в списке вакцин. Значения 0/1

Модель GoodSaleParam(параметры продажи товара)

Модель GoodSaleParam — представляет параметр продажи

* @property integer $id // ИД
* @property integer $good_id // ИД товара - Принадлежит Good
* @property double $price // Цена основная
* @property double $coefficient // Коэффициент пересчета для списания со склада. 
* @property integer $unit_sale_id // ИД. ед. измерения - принадлежит Unit
* @property double $min_price // Минимальная цена - указывается для возможности редактирования цены прям со счета
* @property double $max_price // Максимальная цена - указывается для возможности редактирования цены прям со счета
* @property string $barcode // Штрих-код
* @property string $status // Статус ('active','disabled')
* @property int $clinic_id // ИД Клиники
@property double $markup // процент наценки
@property string $price_formation // параметр определяет цена с наценкой или фиксированная. значения: increase, fixed
При значении поля fixed - поле $markup должно быть равно 0, поле $price должно быть больше 0
При значении поля increase - поле $markup должно быть больше 0, поле $price должно быть равно 0

Модель Unit(ед. измерения)

Модель Unit — представляет единицу измерения

* @property integer $id //ИД
* @property string $title // Название

Примеры запросов

Пример получения данных по товару

curl --location --request GET 'http://{DOMAIN NAME}/rest/api/Good/485' \
--header 'Content-Type: application/json' \
--header 'X-REST-API-KEY: {REST API KEY}'

▶ Ответ сервера
{
    "success": true,
    "message": "Record Retrieved Successfully",
    "data": {
        "totalCount": 1,
        "good": {
            "id": "485",
            "group_id": "30",
            "title": "Остеосинтез бедра, плеча (с) (min)",
            "unit_storage_id": "7",
            "is_warehouse_account": "1",
            "is_active": "1",
            "code": "",
            "is_call": "0",
            "is_for_sale": "1",
            "barcode": null,
            "create_date": null,
            "description": "",
            "prime_cost": "0.0000000000",
            "category_id": null,
            "group": {
                "id": "30",
                "title": "Ортопедия",
                "is_service": "0",
                "markup": null,
                "is_show_in_vaccines": "0",
                "price_id": "42"
            },
            "unitStorage": {
                "id": "7",
                "title": "шт",
                "status": "active"
            },
            "goodSaleParams": [
                {
                    "id": "1",
                    "good_id": "485",
                    "price": "3000.0000000000",
                    "coefficient": "1",
                    "unit_sale_id": "7",
                    "min_price": "0.0000000000",
                    "max_price": "0.0000000000",
                    "barcode": null,
                    "status": "active",
                    "clinic_id": "1",
                    "markup": "0.0000000000",
                    "price_formation": "fixed"
                }
            ]
        }
    }
}

Пример добавления товара

После добавления товара/услуги нужно добавить параметр продажи для этого товара. Для услуги можно добавить параметр продажи только с фиксированной ценой.

curl --location --request POST 'http://{DOMAIN NAME}/rest/api/Good' \
--header 'Content-Type: application/json' \
--header 'X-REST-API-KEY: {REST API KEY}' \
--data-raw '{
    "group_id":53,
    "title":"товар003",
    "unit_storage_id":0,
    "is_warehouse_account":0,
    "is_active":1,
    "code":"",
    "category_id":,
    "is_call":0,
    "is_for_sale":1,
    "barcode":"",
    "description":"",
    "prime_cost":0
}'

▶ Ответ сервера
{
    "success": true,
    "message": "Record(s) Created",
    "data": {
        "totalCount": 1,
        "good": [
            {
                "is_warehouse_account": 0,
                "is_active": 1,
                "is_call": 0,
                "is_for_sale": 1,
                "prime_cost": 0,
                "group_id": 53,
                "title": "товар003",
                "unit_storage_id": 0,
                "code": "",
                "barcode": "",
                "description": "",
                "id": "5382",
                "create_date": null,
                "category_id": null
            }
        ]
    }
}

Пример goodGroup

curl --location --request GET 'http://{DOMAIN NAME}/rest/api/goodGroup/27' \
--header 'Content-Type: application/json' \
--header 'X-REST-API-KEY: {REST API KEY}'

▶ Ответ сервера
{
    "success": true,
    "message": "Record Retrieved Successfully",
    "data": {
        "totalCount": 1,
        "goodGroup": {
            "id": "27",
            "title": "Стоматология",
            "is_service": "0",
            "markup": null,
            "is_show_in_vaccines": "0",
            "price_id": "5"
        }
    }
}

Пример добавления группы товаров для вакцин

curl --location --request POST 'http://{DOMAIN NAME}/rest/api/goodGroup' \
--header 'Content-Type: application/json' \
--header 'X-REST-API-KEY: {REST API KEY}'
--data-raw '{
    "title": "Группа вакцин 02",
    "is_service":0,
    "is_show_in_vaccines":1
}'

▶ Ответ сервера
{
    "success": true,
    "message": "Record(s) Created",
    "data": {
        "totalCount": 1,
        "goodGroup": [
            {
                "is_service": 0,
                "is_show_in_vaccines": 1,
                "title": "Группа вакцин 02",
                "id": "73",
                "markup": null,
                "price_id": null
            }
        ]
    }
}

Пример goodSaleParam

curl --location --request GET 'http://{DOMAIN NAME}/rest/api/goodSaleParam/1' \
--header 'Content-Type: application/json' \
--header 'X-REST-API-KEY: {REST API KEY}'

▶ Ответ сервера
{
    "success": true,
    "message": "Record Retrieved Successfully",
    "data": {
        "totalCount": 1,
        "goodSaleParam": {
            "id": "1",
            "good_id": "485",
            "price": "3000.0000000000",
            "coefficient": "1",
            "unit_sale_id": "7",
            "min_price": "0.0000000000",
            "max_price": "0.0000000000",
            "barcode": null,
            "status": "active",
            "clinic_id": "1",
            "markup": "0.0000000000",
            "price_formation": "fixed",
            "unitSale": {
                "id": "7",
                "title": "шт",
                "status": "active"
            },
            "good": {
                "id": "485",
                "group_id": "30",
                "title": "Остеосинтез бедра, плеча (с) (min)",
                "unit_storage_id": "7",
                "is_warehouse_account": "1",
                "is_active": "1",
                "code": "",
                "is_call": "0",
                "is_for_sale": "1",
                "barcode": null,
                "create_date": null,
                "description": "",
                "prime_cost": "0.0000000000",
                "category_id": null
            }
        }
    }
}

Пример запроса добавления параметра продажи с фиксированной ценой

curl --location --request POST 'http://{DOMAIN NAME}/rest/api/GoodSaleParam' \
--header 'Content-Type: application/json' \
--header 'X-REST-API-KEY: {REST API KEY}'
--data-raw '{
    "good_id": 5379,
    "price":500,
    "coefficient":1,
    "unit_sale_id":7,
    "min_price":0,
    "max_price":0,
    "barcode":"",
    "status":"active",
    "clinic_id":1,
    "markup":0,
    "price_formation":"fixed"
}'

▶ Ответ сервера
{
    "success": true,
    "message": "Record(s) Created",
    "data": {
        "totalCount": 1,
        "goodSaleParam": [
            {
                "good_id": 5379,
                "coefficient": 1,
                "unit_sale_id": 7,
                "status": "active",
                "clinic_id": 1,
                "price_formation": "fixed",
                "price": 500,
                "min_price": 0,
                "max_price": 0,
                "barcode": "",
                "markup": 0,
                "id": "1040"
            }
        ]
    }
}

Пример запроса добавления параметра продажи с наценкой

curl --location --request POST 'http://{DOMAIN NAME}/rest/api/GoodSaleParam' \
--header 'Content-Type: application/json' \
--header 'X-REST-API-KEY: {REST API KEY}'
--data-raw '{
    "good_id": 5379,
    "price":0,
    "coefficient":1,
    "unit_sale_id":7,
    "min_price":0,
    "max_price":0,
    "barcode":"",
    "status":"active",
    "clinic_id":1,
    "markup":2,
    "price_formation":"increase"
}'

▶ Ответ сервера
{
    "success": true,
    "message": "Record(s) Created",
    "data": {
        "totalCount": 1,
        "goodSaleParam": [
            {
                "good_id": 5379,
                "coefficient": 1,
                "unit_sale_id": 7,
                "status": "active",
                "clinic_id": 1,
                "price_formation": "increase",
                "price": 0,
                "min_price": 0,
                "max_price": 0,
                "barcode": "",
                "markup": 2,
                "id": "1041"
            }
        ]
    }
}

Пример unit

curl --location --request GET 'http://{DOMAIN NAME}/rest/api/unit/7' \
--header 'Content-Type: application/json' \
--header 'X-REST-API-KEY: {REST API KEY}'

▶ Ответ сервера
{
    "success": true,
    "message": "Record Retrieved Successfully",
    "data": {
        "totalCount": 1,
        "unit": {
            "id": "7",
            "title": "шт",
            "status": "active"
        }
    }
}

Пример получения цены продажи

curl --location --request GET 'http://{DOMAIN NAME}/rest/api/Good/GoodSalePriceByIdSaleParamIdClinicId?good_id=1&good_sale_param_id=1&clinic_id=1&quantity=1' \
--header 'Content-Type: application/json' \
--header 'X-REST-API-KEY: {REST API KEY}'

▶ Ответ сервера
{
    "success": true,
    "message": "Records Retrieved Successfully",
    "data": {
        "totalCount": 3,
        "good_sale_price_info": {
            "price": 0,
            "min_price": "0.0000000000",
            "max_price": "0.0000000000"
        }
    }
}