import {FilterBuilder, SortOrder} from "abstract-query-builder" import TransferToShop, {TransferToShopPosition} from "../model/document/TransferToShop" import {TransferStatus} from "../model/types" import {ProductInfoFilter, ProductInfoInnerSortOrder} from "./inner/ProductInfo"; import {quantityConverter} from "./converters" import executor from "./executor" /** * @class module:transfer.TransferToShopSortOrder * @classdesc Класс для сортировки элементов в результе запроса. * @property {FieldSorter} uuid Уникальный идентификатор * @property {FieldSorter} owner Кто подает документы * @property {FieldSorter} identity Идентификатор документа (клиентский) * @property {FieldSorter} transferNumber Номер документа * @property {FieldSorter} transferDate Дата составления * @property {FieldSorter} note Примечание * @property {FieldSorter} status Статус обработки документа * @property {FieldSorter} rejectComment Комментарий для отказа * @property {FieldSorter} replyId Уникальный идентификатор документа (присваивается УТМ); совпадает с идентификатором исходящего документа, который получили в ответе */ export class TransferToShopSortOrder extends SortOrder { uuid = this.addFieldSorter("UUID"); owner = this.addFieldSorter("OWNER"); identity = this.addFieldSorter("IDENTITY"); transferNumber = this.addFieldSorter("NUMBER"); transferDate = this.addFieldSorter("ACT_DATE"); note = this.addFieldSorter("NOTE"); status = this.addFieldSorter("STATUS"); rejectComment = this.addFieldSorter("REJECT_COMMENT"); replyId = this.addFieldSorter("REPLY_ID"); constructor() { super(() => this); } } /** * @class module:transfer.TransferToShopQuery * @classdesc Класс для формирования запроса на получение документов передачи продукции со склада в торговый зал. * @property {FieldFilter} uuid Уникальный идентификатор * @property {FieldFilter} owner Кто подает документы * @property {FieldFilter} identity Идентификатор документа (клиентский) * @property {FieldFilter} transferNumber Номер документа * @property {FieldFilter} transferDate Дата составления * @property {FieldFilter} note Примечание * @property {FieldFilter} status Статус обработки документа * @property {FieldFilter} rejectComment Комментарий для отказа * @property {FieldFilter} replyId Уникальный идентификатор документа (присваивается УТМ); совпадает с идентификатором исходящего документа, который получили в ответе */ export default class TransferToShopQuery extends FilterBuilder { uuid = this.addFieldFilter("UUID"); owner = this.addFieldFilter("OWNER"); identity = this.addFieldFilter<(string | null)>("IDENTITY"); transferNumber = this.addFieldFilter("NUMBER"); transferDate = this.addFieldFilter<(Date | null)>("TRANSFER_DATE"); note = this.addFieldFilter<(string | null)>("NOTE"); status = this.addFieldFilter("STATUS"); rejectComment = this.addFieldFilter<(string | null)>("REJECT_COMMENT"); replyId = this.addFieldFilter<(string | null)>("REPLY_ID"); constructor() { super(() => this, executor('TransferToShop', TransferToShop.prototype)); } } /** * @class module:transfer.TransferToShopPositionSortOrder * @classdesc Класс для сортировки элементов в результе запроса. * @property {FieldSorter} transferFromShopUuid Уникальный идентификатор документа передачи * @property {FieldSorter} identity Идентификатор позиции внутри акта * @property {FieldSorter} productCode Регистрационный код продукции * @property {FieldSorter} quantity Количество * @property {FieldSorter} informF2RegId Регистрационный номер раздела справки 2 * @property {FieldSorter} informF2MarkInfoJson Информация о марках в формате JSON * @property {module:productInfo.ProductInfoInnerSortOrder} productInfo Информация о продукции */ export class TransferToShopPositionSortOrder extends SortOrder { transferToShopUuid = this.addFieldSorter("TRANSFER_TO_SHOP_ID"); identity = this.addFieldSorter("IDENTITY"); productCode = this.addFieldSorter("PRODUCT_CODE"); quantity = this.addFieldSorter("QUANTITY"); informF2RegId = this.addFieldSorter("INFORM_F2_REG_ID"); informF2MarkInfoJson = this.addFieldSorter("INFORM_F2_MARK_INFO_JSON"); productInfo = this.addInnerSortOrder(new ProductInfoInnerSortOrder()); constructor() { super(() => this); } } /** * @class module:transfer.TransferToShopPositionQuery * @classdesc Класс для формирования запроса на получение позиций документа передачи продукции со склада в торговый зал. * @property {FieldFilter} transferFromShopUuid Уникальный идентификатор документа передачи * @property {FieldFilter} identity Идентификатор позиции внутри акта * @property {FieldFilter} productCode Регистрационный код продукции * @property {FieldFilter} quantity Количество * @property {FieldFilter} informF2RegId Регистрационный номер раздела справки 2 * @property {FieldFilter} informF2MarkInfoJson Информация о марках в формате JSON * @property {module:productInfo.ProductInfoFilter} productInfo Информация о продукции */ export class TransferToShopPositionQuery extends FilterBuilder { transferToShopUuid = this.addFieldFilter("TRANSFER_TO_SHOP_ID"); identity = this.addFieldFilter<(string | null)>("IDENTITY"); productCode = this.addFieldFilter("PRODUCT_CODE"); quantity = this.addFieldFilter("QUANTITY", quantityConverter); informF2RegId = this.addFieldFilter<(string | null)>("INFORM_F2_REG_ID"); informF2MarkInfoJson = this.addFieldFilter<(string | null)>("INFORM_F2_MARK_INFO_JSON"); productInfo = this.addInnerFilterBuilder(new ProductInfoFilter()); constructor() { super(() => this, executor('TransferToShopPosition', TransferToShopPosition.prototype)); } }