import {FilterBuilder, SortOrder} from "abstract-query-builder" import ActWriteOff, {ActWriteOffPosition} from '../model/document/ActWriteOff' import ProductInfo from "../model/dictionary/ProductInfo" import {ActWriteOffStatus, ActWriteOffType, Version} from "../model/types" import {ProductInfoFilter, ProductInfoInnerSortOrder} from "./inner/ProductInfo" import {quantityConverter} from "./converters" import executor from './executor' /** * @class module:actWriteOff.ActWriteOffSortOrder * @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} version Версия протокола ЕГАИС * @property {FieldSorter} replyId Уникальный идентификатор документа (присваивается УТМ); совпадает с идентификатором исходящего документа, который получили в ответе */ export class ActWriteOffSortOrder 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"); version = this.addFieldSorter("VERSION"); replyId = this.addFieldSorter("REPLY_ID"); constructor() { super(() => this); } } /** * @class module:actWriteOff.ActWriteOffQuery * @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} version Версия протокола ЕГАИС * @property {FieldFilter} replyId Уникальный идентификатор документа (присваивается УТМ); совпадает с идентификатором исходящего документа, который получили в ответе */ export default class ActWriteOffQuery 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"); version = this.addFieldFilter("VERSION"); replyId = this.addFieldFilter<(string | null)>("REPLY_ID"); constructor() { super(() => this, executor('ActWriteOff', ActWriteOff.prototype)); } } /** * @class module:actWriteOff.ActWriteOffPositionSortOrder * @classdesc Класс для сортировки элементов в результе запроса. * @property {FieldSorter} uuid Уникальный идентификатор позиции акта списания со склада * @property {FieldSorter} actWriteOffUuid Уникальный идентификатор акта списания со склада * @property {FieldSorter} identity Идентификатор позиции акта списания со склада * @property {FieldSorter} quantity Количество * @property {FieldSorter} informF2RegId Регистрационный номер раздела справки 2 * @property {FieldSorter} informF2MarkInfoJson Информация о марках в формате JSON * @property {module:productInfo.ProductInfoInnerSortOrder} productInfo Информация о продукции */ export class ActWriteOffPositionSortOrder extends SortOrder { uuid = this.addFieldSorter("UUID"); actWriteOffUuid = this.addFieldSorter("ACT_WRITE_OFF_UUID"); identity = this.addFieldSorter("IDENTITY"); 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:actWriteOff.ActWriteOffPositionQuery * @classdesc Класс для формирования запроса на получение позиций акта списания со склада. * @property {FieldFilter} uuid Уникальный идентификатор позиции акта списания со склада * @property {FieldFilter} actWriteOffUuid Уникальный идентификатор акта списания со склада * @property {FieldFilter} identity Идентификатор позиции акта списания со склада * @property {FieldFilter} quantity Количество * @property {FieldFilter} informF2RegId Регистрационный номер раздела справки 2 * @property {FieldFilter} informF2MarkInfoJson Информация о марках в формате JSON * @property {module:productInfo.ProductInfoFilter} productInfo Информация о продукции */ export class ActWriteOffPositionQuery extends FilterBuilder { uuid = this.addFieldFilter("UUID"); actWriteOffUuid = this.addFieldFilter("ACT_WRITE_OFF_UUID"); identity = this.addFieldFilter<(string | null)>("IDENTITY"); 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('ActWriteOffPosition', ActWriteOffPosition.prototype, {productInfo: ProductInfo.prototype})); } }