import {FilterBuilder, SortOrder} from "abstract-query-builder" import TransferFromShop, {TransferFromShopPosition} from "../model/document/TransferFromShop" import {TransferStatus} from "../model/types" import {ProductInfoFilter, ProductInfoInnerSortOrder} from "./inner/ProductInfo"; import {quantityConverter} from "./converters" import executor from "./executor" /** * @class module:transfer.TransferFromShopSortOrder * @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 TransferFromShopSortOrder 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.TransferFromShopQuery * @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 TransferFromShopQuery 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('TransferFromShop', TransferFromShop.prototype)); } } /** * @class module:transfer.TransferFromShopPositionSortOrder * @classdesc Класс для сортировки элементов в результе запроса. * @property {FieldSorter} transferFromShopUuid Уникальный идентификатор документа передачи * @property {FieldSorter} identity Идентификатор позиции внутри акта * @property {FieldSorter} productCode Регистрационный код продукции * @property {FieldSorter} quantity Количество * @property {FieldSorter} informF2RegId Регистрационный номер раздела справки 2 * @property {module:productInfo.ProductInfoInnerSortOrder} productInfo Информация о продукции */ export class TransferFromShopPositionSortOrder extends SortOrder { transferFromShopUuid = this.addFieldSorter("TRANSFER_FROM_SHOP_ID"); identity = this.addFieldSorter("IDENTITY"); productCode = this.addFieldSorter("PRODUCT_CODE"); quantity = this.addFieldSorter("QUANTITY"); informF2RegId = this.addFieldSorter("INFORM_F2_REG_ID"); productInfo = this.addInnerSortOrder(new ProductInfoInnerSortOrder()); constructor() { super(() => this); } } /** * @class module:transfer.TransferFromShopPositionQuery * @classdesc Класс для формирования запроса на получение позиций документа передачи продукции из торгового зала на склад. * @property {FieldFilter} transferFromShopUuid Уникальный идентификатор документа передачи * @property {FieldFilter} identity Идентификатор позиции внутри акта * @property {FieldFilter} productCode Регистрационный код продукции * @property {FieldFilter} quantity Количество * @property {FieldFilter} informF2RegId Регистрационный номер раздела справки 2 * @property {module:productInfo.ProductInfoFilter} productInfo Информация о продукции */ export class TransferFromShopPositionQuery extends FilterBuilder { transferFromShopUuid = this.addFieldFilter("TRANSFER_FROM_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"); productInfo = this.addInnerFilterBuilder(new ProductInfoFilter()); constructor() { super(() => this, executor('TransferFromShopPosition', TransferFromShopPosition.prototype)); } }