import {FilterBuilder, SortOrder} from "abstract-query-builder"; import Ticket, {ConfirmTicket} from "../model/document/Ticket"; import {ConclusionType, ConfirmTicketStatus, DocType, OperationResult} from "../model/types"; import executor from "./executor"; /** * @class module:ticket.TicketSortOrder * @classdesc Класс для сортировки элементов в результе запроса. * @property {FieldSorter} uuid Уникальный идентификатор * @property {FieldSorter} owner Кто подает документы * @property {FieldSorter} ticketDate Дата квитанции * @property {FieldSorter} identity Идентификатор документа(исходного, клиентский из содержимого XML(может не быть)) * @property {FieldSorter} docId Ид задачи из файловой базы * @property {FieldSorter} transportId Транспортный ид из файловой базы * @property {FieldSorter} regId Присвоенный документу номер * @property {FieldSorter} docHash Хэш документа * @property {FieldSorter} docType Тип исходного документа * @property {FieldSorter} conclusionType Результат фиксации * @property {FieldSorter} resultDate Дата фиксации * @property {FieldSorter} resultComments Описание результата фиксации, описание ошибки фиксации * @property {FieldSorter} operationResultName Операция * @property {FieldSorter} operationResultResult Результат выполнения * @property {FieldSorter} operationResultComment Сообщение * @property {FieldSorter} operationResultDate Дата операции */ export class TicketSortOrder extends SortOrder { uuid = this.addFieldSorter("UUID"); owner = this.addFieldSorter("OWNER"); ticketDate = this.addFieldSorter("TICKET_DATE"); identity = this.addFieldSorter("IDENTITY"); docId = this.addFieldSorter("DOC_ID"); transportId = this.addFieldSorter("TRANSPORT_ID"); regId = this.addFieldSorter("REG_ID"); docHash = this.addFieldSorter("DOC_HASH"); docType = this.addFieldSorter("DOC_TYPE"); conclusionType = this.addFieldSorter("RESULT_CONCLUSION"); resultDate = this.addFieldSorter("RESULT_DATE"); resultComments = this.addFieldSorter("RESULT_COMMENTS"); operationResultName = this.addFieldSorter("OPERATION_RESULT_NAME"); operationResultResult = this.addFieldSorter("OPERATION_RESULT_RESULT"); operationResultComment = this.addFieldSorter("OPERATION_RESULT_COMMENT"); operationResultDate = this.addFieldSorter("OPERATION_RESULT_DATE"); constructor() { super(() => this); } } /** * @class module:ticket.TicketQuery * @classdesc Класс для формирования запроса на получение подтверждения акта разногласий для Товарно-Транспортной Накладной. * @property {FieldFilter} uuid Уникальный идентификатор * @property {FieldFilter} owner Кто подает документы * @property {FieldFilter} ticketDate Дата квитанции * @property {FieldFilter} identity Идентификатор документа(исходного, клиентский из содержимого XML(может не быть)) * @property {FieldFilter} docId Ид задачи из файловой базы * @property {FieldFilter} transportId Транспортный ид из файловой базы * @property {FieldFilter} regId Присвоенный документу номер * @property {FieldFilter} docHash Хэш документа * @property {FieldFilter} docType Тип исходного документа * @property {FieldFilter} conclusionType Результат фиксации * @property {FieldFilter} resultDate Дата фиксации * @property {FieldFilter} resultComments Описание результата фиксации, описание ошибки фиксации * @property {FieldFilter} operationResultName Операция * @property {FieldFilter} operationResultResult Результат выполнения * @property {FieldFilter} operationResultComment Сообщение * @property {FieldFilter} operationResultDate Дата операции */ export default class TicketQuery extends FilterBuilder { uuid = this.addFieldFilter("UUID"); owner = this.addFieldFilter("OWNER"); ticketDate = this.addFieldFilter<(Date | null)>("TICKET_DATE"); identity = this.addFieldFilter<(string | null)>("IDENTITY"); docId = this.addFieldFilter<(string | null)>("DOC_ID"); transportId = this.addFieldFilter<(string | null)>("TRANSPORT_ID"); regId = this.addFieldFilter<(string | null)>("REG_ID"); docHash = this.addFieldFilter<(string | null)>("DOC_HASH"); docType = this.addFieldFilter<(DocType | null)>("DOC_TYPE"); conclusionType = this.addFieldFilter<(ConclusionType | null)>("RESULT_CONCLUSION"); resultDate = this.addFieldFilter<(Date | null)>("RESULT_DATE"); resultComments = this.addFieldFilter<(string | null)>("RESULT_COMMENTS"); operationResultName = this.addFieldFilter("OPERATION_RESULT_NAME"); operationResultResult = this.addFieldFilter<(OperationResult | null)>("OPERATION_RESULT_RESULT"); operationResultComment = this.addFieldFilter<(string | null)>("OPERATION_RESULT_COMMENT"); operationResultDate = this.addFieldFilter<(Date | null)>("OPERATION_RESULT_DATE"); constructor() { super(() => this, executor('Ticket', Ticket.prototype)); } } /** * @class module:ticket.ConfirmTicketSortOrder * @classdesc Класс для сортировки элементов в результе запроса. * @property {FieldSorter} uuid Уникальный идентификатор * @property {FieldSorter} owner Кто подает документы * @property {FieldSorter} identity Идентификатор документа(исходного, клиентский из содержимого XML(может не быть)) * @property {FieldSorter} isConfirm Тип подтверждения: Принимаем/отказываем * @property {FieldSorter} ticketNumber Номер подтверждения * @property {FieldSorter} ticketDate Дата составления подтверждения * @property {FieldSorter} wbRegId ИД накладной в системе * @property {FieldSorter} note Примечания * @property {FieldSorter} status Статус (подтвержден/отклонен) * @property {FieldSorter} rejectComment Комментарий для отказа */ export class ConfirmTicketSortOrder extends SortOrder { uuid = this.addFieldSorter("UUID"); owner = this.addFieldSorter("OWNER"); identity = this.addFieldSorter("IDENTITY"); isConfirm = this.addFieldSorter("IS_CONFIRM"); ticketNumber = this.addFieldSorter("TICKET_NUMBER"); ticketDate = this.addFieldSorter("TICKET_DATE"); wbRegId = this.addFieldSorter("WB_REG_ID"); note = this.addFieldSorter("NOTE"); status = this.addFieldSorter("STATUS"); rejectComment = this.addFieldSorter("REJECT_COMMENT"); constructor() { super(() => this); } } /** * @class module:ticket.ConfirmTicketQuery * @classdesc Класс для формирования запроса на получение подтверждения акта разногласий для Товарно-Транспортной Накладной. * @property {FieldFilter} uuid Уникальный идентификатор * @property {FieldFilter} owner Кто подает документы * @property {FieldFilter} identity Идентификатор документа(исходного, клиентский из содержимого XML(может не быть)) * @property {FieldFilter} isConfirm Тип подтверждения: Принимаем/отказываем * @property {FieldFilter} ticketNumber Номер подтверждения * @property {FieldFilter} ticketDate Дата составления подтверждения * @property {FieldFilter} wbRegId ИД накладной в системе * @property {FieldFilter} note Примечания * @property {FieldFilter} status Статус (подтвержден/отклонен) * @property {FieldFilter} rejectComment Комментарий для отказа */ export class ConfirmTicketQuery extends FilterBuilder { uuid = this.addFieldFilter("UUID"); owner = this.addFieldFilter("OWNER"); identity = this.addFieldFilter<(string | null)>("IDENTITY"); isConfirm = this.addFieldFilter<(ConclusionType | null)>("IS_CONFIRM"); ticketNumber = this.addFieldFilter<(string | null)>("TICKET_NUMBER"); ticketDate = this.addFieldFilter<(Date | null)>("TICKET_DATE"); wbRegId = this.addFieldFilter<(string | null)>("WB_REG_ID"); note = this.addFieldFilter<(string | null)>("NOTE"); status = this.addFieldFilter("STATUS"); rejectComment = this.addFieldFilter<(string | null)>("REJECT_COMMENT"); constructor() { super(() => this, executor('ConfirmTicket', ConfirmTicket.prototype)); } }