import {FilterBuilder, SortOrder} from "abstract-query-builder" import ProductRest, {ShopCommodity, StockCommodity} from '../model/dictionary/ProductRest' import {ProductInfoFilter, ProductInfoInnerSortOrder} from "./inner/ProductInfo" import {quantityConverter} from "./converters" import executor from "./executor" /** * @class module:productRest.ProductRestSortOrder * @classdesc Класс для сортировки элементов в результе запроса. * @property {module:productInfo.ProductInfoInnerSortOrder} productInfo Информация о продукции * @property {FieldSorter} stockQuantity Количество продукции на складе * @property {FieldSorter} shopQuantity Количество продукции в торговом зале * @property {FieldSorter} totalQuantity Общее количество продукции */ export class ProductRestSortOrder extends SortOrder { productInfo = this.addInnerSortOrder(new ProductInfoInnerSortOrder()); stockQuantity = this.addFieldSorter("STOCK_QUANTITY"); shopQuantity = this.addFieldSorter("SHOP_QUANTITY"); totalQuantity = this.addFieldSorter("TOTAL_QUANTITY"); constructor() { super(() => this); } } /** * @class module:productRest.ProductRestQuery * @classdesc Класс для формирования запроса на получение остатков продукции. * @property {module:productInfo.ProductInfoFilter} productInfo Информация о продукции * @property {FieldFilter} stockQuantity Количество продукции на складе * @property {FieldFilter} shopQuantity Количество продукции в торговом зале * @property {FieldFilter} totalQuantity Общее количество продукции */ export class ProductRestQuery extends FilterBuilder { productInfo = this.addInnerFilterBuilder(new ProductInfoFilter()); stockQuantity = this.addFieldFilter("STOCK_QUANTITY", quantityConverter); shopQuantity = this.addFieldFilter("SHOP_QUANTITY", quantityConverter); totalQuantity = this.addFieldFilter("TOTAL_QUANTITY", quantityConverter); constructor() { super(() => this, executor('ProductRest', ProductRest.prototype)); } } /** * @class module:productRest.ShopCommoditySortOrder * @classdesc Класс для сортировки элементов в результе запроса. * @property {FieldSorter} quantity Количество * @property {module:productInfo.ProductInfoInnerSortOrder} productInfo Информация о продукции */ export class ShopCommoditySortOrder extends SortOrder { quantity = this.addFieldSorter("QUANTITY"); productInfo = this.addInnerSortOrder(new ProductInfoInnerSortOrder()); constructor() { super(() => this); } } /** * @class module:productRest.ShopCommodityQuery * @classdesc Класс для формирования запроса на получение информации о магазинных товарах. * @property {FieldFilter} quantity Количество * @property {module:productInfo.ProductInfoFilter} productInfo Информация о продукции */ export class ShopCommodityQuery extends FilterBuilder { quantity = this.addFieldFilter("QUANTITY", quantityConverter); productInfo = this.addInnerFilterBuilder(new ProductInfoFilter()); constructor() { super(() => this, executor('ShopCommodity', ShopCommodity.prototype)); } } /** * @class module:productRest.StockCommoditySortOrder * @classdesc Класс для сортировки элементов в результе запроса. * @property {FieldSorter} informF1RegId Регистрационный номер раздела справки 1 * @property {FieldSorter} informF2RegId Регистрационный номер раздела справки 2 * @property {FieldSorter} quantity Количество * @property {module:productInfo.ProductInfoInnerSortOrder} productInfo Информация о продукции */ export class StockCommoditySortOrder extends SortOrder { informF1RegId = this.addFieldSorter("INFORM_F1_REG_ID"); informF2RegId = this.addFieldSorter("INFORM_F2_REG_ID"); quantity = this.addFieldSorter("QUANTITY"); productInfo = this.addInnerSortOrder(new ProductInfoInnerSortOrder()); constructor() { super(() => this); } } /** * @class module:productRest.StockCommodityQuery * @classdesc Класс для формирования запроса на получение информации о биржевых товарах. * @property {FieldFilter} informF1RegId Регистрационный номер раздела справки 1 * @property {FieldFilter} informF2RegId Регистрационный номер раздела справки 2 * @property {FieldFilter} quantity Количество * @property {module:productInfo.ProductInfoFilter} productInfo Информация о продукции */ export class StockCommodityQuery extends FilterBuilder { informF1RegId = this.addFieldFilter("INFORM_F1_REG_ID"); informF2RegId = this.addFieldFilter("INFORM_F2_REG_ID"); quantity = this.addFieldFilter("QUANTITY", quantityConverter); productInfo = this.addInnerFilterBuilder(new ProductInfoFilter()); constructor() { super(() => this, executor('StockCommodity', StockCommodity.prototype)); } }