import {FilterBuilder, SortOrder} from 'abstract-query-builder' import WaybillAct, {WaybillActPosition, WaybillActPositionMark} from '../model/document/WaybillAct' import {AcceptType, Version, WaybillActStatus, WaybillActType} from "../model/types" import {quantityConverter} from "./converters" import executor from "./executor" /** * @class module:waybillAct.WaybillActSortOrder * @classdesc Класс для сортировки элементов в результе запроса. * @property {FieldSorter} uuid Уникальный идентификатор акта * @property {FieldSorter} docOwner Кто подает документы * @property {FieldSorter} identity Идентификатор акта (клиентский) * @property {FieldSorter} acceptType Тип подтверждения: Принимаем/есть расхождения/отказываем * @property {FieldSorter} number Номер акта * @property {FieldSorter} creationDate Дата составления акта * @property {FieldSorter} wbRegId Идентификатор накладной в системе * @property {FieldSorter} note Заметки * @property {FieldSorter} type Тип приемки: Полная/частичная * @property {FieldSorter} version Версия протокола ЕГАИС * @property {FieldSorter} status Статус накладной * @property {FieldSorter} rejectComment Комментарий для отказа * @property {FieldSorter} replyId Уникальный идентификатор документа (присваивается УТМ); совпадает с идентификатором исходящего документа, который получили в ответе */ export class WaybillActSortOrder extends SortOrder { uuid = this.addFieldSorter("UUID"); docOwner = this.addFieldSorter("OWNER"); identity = this.addFieldSorter("IDENTITY"); acceptType = this.addFieldSorter("ACCEPT_TYPE"); number = this.addFieldSorter("NUMBER"); creationDate = this.addFieldSorter("CREATION_DATE"); wbRegId = this.addFieldSorter("WB_REG_ID"); note = this.addFieldSorter("NOTE"); type = this.addFieldSorter("TYPE"); version = this.addFieldSorter("VERSION"); status = this.addFieldSorter("STATUS"); rejectComment = this.addFieldSorter("REJECT_COMMENT"); replyId = this.addFieldSorter("REPLY_ID"); constructor() { super(() => this); } } /** * @class module:waybillAct.WaybillActQuery * @classdesc Класс для формирования запроса на получение актов ТТН. * @property {FieldFilter} uuid Уникальный идентификатор акта * @property {FieldFilter} docOwner Кто подает документы * @property {FieldFilter} identity Идентификатор акта (клиентский) * @property {FieldFilter} acceptType Тип подтверждения: Принимаем/есть расхождения/отказываем * @property {FieldFilter} number Номер акта * @property {FieldFilter} creationDate Дата составления акта * @property {FieldFilter} wbRegId Идентификатор накладной в системе * @property {FieldFilter} note Заметки * @property {FieldFilter} type Тип акта расхождения к ТТН: Полный/Частичный * @property {FieldFilter} version Версия протокола ЕГАИС * @property {FieldFilter} status Статус акта разногласия для ТТН * @property {FieldFilter} rejectComment Комментарий для отказа * @property {FieldFilter} replyId Уникальный идентификатор документа (присваивается УТМ); совпадает с идентификатором исходящего документа, который получили в ответе */ export default class WaybillActQuery extends FilterBuilder { uuid = this.addFieldFilter("UUID"); docOwner = this.addFieldFilter("OWNER"); identity = this.addFieldFilter<(string | null)>("IDENTITY"); acceptType = this.addFieldFilter("ACCEPT_TYPE"); number = this.addFieldFilter<(string | null)>("NUMBER"); creationDate = this.addFieldFilter("CREATION_DATE"); wbRegId = this.addFieldFilter<(string | null)>("WB_REG_ID"); note = this.addFieldFilter<(string | null)>("NOTE"); type = this.addFieldFilter<(WaybillActType | null)>("TYPE"); version = this.addFieldFilter<(Version | null)>("VERSION"); status = this.addFieldFilter("STATUS"); rejectComment = this.addFieldFilter<(string | null)>("REJECT_COMMENT"); replyId = this.addFieldFilter<(string | null)>("REPLY_ID"); constructor() { super(() => this, executor('WayBillAct', WaybillAct.prototype)); } } /** * @class module:waybillAct.WaybillActPositionSortOrder * @classdesc Класс для сортировки элементов в результе запроса. * @property {FieldSorter} uuid Уникальный идентификатор позиции акта * @property {FieldSorter} waybillActUuid Уникальный идентификатор акта, содержащего позицию * @property {FieldSorter} identity Идентификатор позиции внутри накладной * @property {FieldSorter} informF2RegId Регистрационный номер раздела справки 2 * @property {FieldSorter} realQuantity Количество */ export class WaybillActPositionSortOrder extends SortOrder { uuid = this.addFieldSorter("UUID"); waybillActUuid = this.addFieldSorter("WAY_BILL_ACT_UUID"); identity = this.addFieldSorter("IDENTITY"); informF2RegId = this.addFieldSorter("INFORM_F2_REG_ID"); realQuantity = this.addFieldSorter("REAL_QUANTITY"); constructor() { super(() => this); } } /** * @class module:waybillAct.WaybillActPositionQuery * @classdesc Класс для формирования запроса на получение позиицй акта ТТН. * @property {FieldFilter} uuid Уникальный идентификатор позиции акта * @property {FieldFilter} waybillActUuid Уникальный идентификатор акта, содержащего позицию * @property {FieldFilter} identity Идентификатор позиции внутри накладной * @property {FieldFilter} informF2RegId Регистрационный номер раздела справки 2 * @property {FieldFilter} realQuantity Количество */ export class WaybillActPositionQuery extends FilterBuilder { uuid = this.addFieldFilter("UUID"); waybillActUuid = this.addFieldFilter("WAY_BILL_ACT_UUID"); identity = this.addFieldFilter("IDENTITY"); informF2RegId = this.addFieldFilter<(string | null)>("INFORM_F2_REG_ID"); realQuantity = this.addFieldFilter("REAL_QUANTITY", quantityConverter); constructor() { super(() => this, executor('WayBillActPosition', WaybillActPosition.prototype)); } } /** * @class module:waybillAct.WaybillActPositionMarkSortOrder * @classdesc Класс для сортировки элементов в результе запроса. * @property {FieldSorter} waybillActPositionUuid Уникальный идентификатор позиции акта ТТН * @property {FieldSorter} mark Марка */ export class WaybillActPositionMarkSortOrder extends SortOrder { waybillActPositionUuid = this.addFieldSorter("WAY_BILL_ACT_POSITION_UUID"); mark = this.addFieldSorter("MARK"); constructor() { super(() => this); } } /** * @class module:waybillAct.WaybillActPositionMarkQuery * @classdesc Класс для формирования запроса на получение марок позиций акта ТТН. * @property {FieldFilter} waybillActPositionUuid Уникальный идентификатор позиции акта ТТН * @property {FieldFilter} mark Марка */ export class WaybillActPositionMarkQuery extends FilterBuilder { waybillActPositionUuid = this.addFieldFilter<(string | null)>("WAY_BILL_ACT_POSITION_UUID"); mark = this.addFieldFilter("MARK"); constructor() { super(() => this, executor('WayBillActPositionMark', WaybillActPositionMark.prototype)); } }