import {FilterBuilder, SortOrder} from "abstract-query-builder" import ActWriteOffShop, {ActWriteOffShopPosition} from "../model/document/ActWriteOffShop" import {ActWriteOffStatus, ActWriteOffType} from "../model/types" import {ProductInfoFilter, ProductInfoInnerSortOrder} from "./inner/ProductInfo" import {quantityConverter} from "./converters" import executor from "./executor" /** * @class module:actWriteOff.ActWriteOffShopSortOrder * @classdesc Класс для сортировки элементов в результе запроса. * @property {FieldSorter} uuid Уникальный идентификатор акта списания из магазина * @property {FieldSorter} docOwner Отправитель акта списания из магазина * @property {FieldSorter} identity Идентификатор акта списания из магазина (клиентский, к заполнению необязательный) * @property {FieldSorter} number Номер документа * @property {FieldSorter} actDate Дата составления * @property {FieldSorter} type Причина списания (Пересортица/Недостача/Уценка/Порча/Потери/Проверки/Арест/Иные цели/Реализация) * @property {FieldSorter} note Примечание * @property {FieldSorter} status Статус акта списания * @property {FieldSorter} rejectComment Комментарий для отказа на акт списания из магазина * @property {FieldSorter} replyId Уникальный идентификатор документа (присваивается УТМ); совпадает с идентификатором исходящего документа, который получили в ответе */ export class ActWriteOffShopSortOrder extends SortOrder { uuid = this.addFieldSorter("UUID"); docOwner = this.addFieldSorter("OWNER"); identity = this.addFieldSorter("IDENTITY"); number = this.addFieldSorter("NUMBER"); actDate = this.addFieldSorter("ACT_DATE"); type = this.addFieldSorter("TYPE_WRITE_OFF"); note = this.addFieldSorter("NOTE"); status = this.addFieldSorter("STATUS"); rejectComment = this.addFieldSorter("REJECT_COMMENT"); replyId = this.addFieldSorter("REPLY_ID"); constructor() { super(() => this); } } /** * @class module:actWriteOff.ActWriteOffShopQuery * @classdesc Класс для формирования запроса на получение актов списания из магазина. * @property {FieldFilter} uuid Уникальный идентификатор акта списания из магазина * @property {FieldFilter} docOwner Отправитель акта списания из магазина * @property {FieldFilter} identity Идентификатор акта списания из магазина (клиентский, к заполнению необязательный) * @property {FieldFilter} number Номер документа * @property {FieldFilter} actDate Дата составления * @property {FieldFilter} type Причина списания (Пересортица/Недостача/Уценка/Порча/Потери/Проверки/Арест/Иные цели/Реализация) * @property {FieldFilter} note Примечание * @property {FieldFilter} status Статус акта списания * @property {FieldFilter} rejectComment Комментарий для отказа на акт списания из магазина * @property {FieldFilter} replyId Уникальный идентификатор документа (присваивается УТМ); совпадает с идентификатором исходящего документа, который получили в ответе */ export default class ActWriteOffShopQuery extends FilterBuilder { uuid = this.addFieldFilter("UUID"); docOwner = this.addFieldFilter("OWNER"); identity = this.addFieldFilter<(string | null)>("IDENTITY"); number = this.addFieldFilter<(string | null)>("NUMBER"); actDate = this.addFieldFilter("ACT_DATE"); type = this.addFieldFilter<(ActWriteOffType | null)>("TYPE_WRITE_OFF"); 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('ActWriteOffShop', ActWriteOffShop.prototype)); } } /** * @class module:actWriteOff.ActWriteOffShopPositionSortOrder * @classdesc Класс для сортировки элементов в результе запроса. * @property {FieldSorter} uuid Уникальный идентификатор позиции акта списания со склада * @property {FieldSorter} actWriteOffShopUuid Уникальный идентификатор акта списания со склада * @property {FieldSorter} identity Идентификатор позиции акта списания со склада * @property {FieldSorter} quantity Количество * @property {FieldSorter} informF2MarkInfoJson Информация о марках в формате JSON * @property {module:productInfo.ProductInfoInnerSortOrder} productInfo Информация о продукции */ export class ActWriteOffShopPositionSortOrder extends SortOrder { uuid = this.addFieldSorter("UUID"); actWriteOffShopUuid = this.addFieldSorter("ACT_WRITE_OFF_SHOP_UUID"); identity = this.addFieldSorter("IDENTITY"); quantity = this.addFieldSorter("QUANTITY"); informF2MarkInfoJson = this.addFieldSorter("INFORM_F2_MARK_INFO_JSON"); productInfo = this.addInnerSortOrder(new ProductInfoInnerSortOrder()); constructor() { super(() => this); } } /** * @class module:actWriteOff.ActWriteOffShopPositionQuery * @classdesc Класс для формирования запроса на получение позиций акта списания из магазина. * @property {FieldFilter} uuid Уникальный идентификатор позиции акта списания со склада * @property {FieldFilter} actWriteOffShopUuid Уникальный идентификатор акта списания со склада * @property {FieldFilter} identity Идентификатор позиции акта списания со склада * @property {FieldFilter} quantity Количество * @property {FieldFilter} informF2MarkInfoJson Информация о марках в формате JSON * @property {module:productInfo.ProductInfoFilter} productInfo Информация о продукции */ export class ActWriteOffShopPositionQuery extends FilterBuilder { uuid = this.addFieldFilter("UUID"); actWriteOffShopUuid = this.addFieldFilter("ACT_WRITE_OFF_SHOP_UUID"); identity = this.addFieldFilter<(string | null)>("IDENTITY"); quantity = this.addFieldFilter("QUANTITY", quantityConverter); informF2MarkInfoJson = this.addFieldFilter<(string | null)>("INFORM_F2_MARK_INFO_JSON"); productInfo = this.addInnerFilterBuilder(new ProductInfoFilter()); constructor() { super(() => this, executor('ActWriteOffShopPosition', ActWriteOffShopPosition.prototype)); } }