import {FilterBuilder, SortOrder} from "abstract-query-builder" import OrgInfo, {OrgInfoAddress} from "../model/dictionary/OrgInfo" import {OrgType, WaybillTypeUsed} from "../model/types" import executor from "./executor" import {OrgInfoAddressFilter, OrgInfoAddressSortOrder} from "./inner/OrgInfoAddress" /** * @class module:orgInfo.OrgInfoSortOrder * @classdesc Класс для сортировки элементов в результе запроса. * @property {FieldSorter} type Тип организации (Юридическое лицо/Индивидуальный предприниматель/Иностранец (исключая таможенный союз)/Таможенный союз) * @property {FieldSorter} clientRegId Код организации * @property {FieldSorter} fullName Наименование организации полное (в верхнем регистре) * @property {FieldSorter} shortName Наименование организации краткое (в верхнем регистре) * @property {FieldSorter} inn ИНН * @property {FieldSorter} kpp КПП * @property {FieldSorter} unp УНП для респ.Беларусь * @property {FieldSorter} rnn РНН(БИН/ИИН) для респ.Казахстан * @property {module:orgInfo.OrgInfoAddressSortOrder} address Фактический адрес * @property {FieldSorter} state Статус: действующая или удалена * @property {FieldSorter} waybillVersion Версия протокола для накладных: 1, 2 или 3 */ export class OrgInfoSortOrder extends SortOrder { type = this.addFieldSorter("TYPE"); clientRegId = this.addFieldSorter("CLIENT_REG_ID"); fullName = this.addFieldSorter("FULL_NAME_UPPER_CASE"); shortName = this.addFieldSorter("SHORT_NAME_UPPER_CASE"); inn = this.addFieldSorter("INN"); kpp = this.addFieldSorter("KPP"); unp = this.addFieldSorter("UNP"); rnn = this.addFieldSorter("RNN"); address = this.addInnerSortOrder(new OrgInfoAddressSortOrder()); state = this.addFieldSorter("STATE"); waybillVersion = this.addFieldSorter("VERSION_WB"); constructor() { super(() => this); } } /** * @class module:orgInfo.OrgInfoQuery * @classdesc Класс для формирования запроса на информацию об организациях. * @property {FieldFilter} type Тип организации (Юридическое лицо/Индивидуальный предприниматель/Иностранец (исключая таможенный союз)/Таможенный союз) * @property {FieldFilter} clientRegId Код организации * @property {FieldFilter} fullName Наименование организации полное (в верхнем регистре) * @property {FieldFilter} shortName Наименование организации краткое (в верхнем регистре) * @property {FieldFilter} inn ИНН * @property {FieldFilter} kpp КПП * @property {FieldFilter} unp УНП для респ.Беларусь * @property {FieldFilter} rnn РНН(БИН/ИИН) для респ.Казахстан * @property {module:orgInfo.OrgInfoAddressFilter} address Фактический адрес * @property {FieldFilter} state Статус: действующая или удалена * @property {FieldFilter} waybillVersion Версия протокола для накладных: 1, 2 или 3 */ export class OrgInfoQuery extends FilterBuilder { type = this.addFieldFilter("TYPE"); clientRegId = this.addFieldFilter("CLIENT_REG_ID"); fullName = this.addFieldFilter("FULL_NAME_UPPER_CASE"); shortName = this.addFieldFilter<(string | null)>("SHORT_NAME_UPPER_CASE"); inn = this.addFieldFilter<(string | null)>("INN"); kpp = this.addFieldFilter<(string | null)>("KPP"); unp = this.addFieldFilter<(string | null)>("UNP"); rnn = this.addFieldFilter<(string | null)>("RNN"); address = this.addInnerFilterBuilder(new OrgInfoAddressFilter()); state = this.addFieldFilter<(string | null)>("STATE"); waybillVersion = this.addFieldFilter<(WaybillTypeUsed | null)>("VERSION_WB"); constructor() { super(() => this, executor('OrgInfo', OrgInfo.prototype, {address: OrgInfoAddress.prototype})); } }