import {FilterBuilder, SortOrder} from "abstract-query-builder" import ActChargeOnShop, {ActChargeOnShopPosition} from "../model/document/ActChargeOnShop" import ProductInfo from "../model/dictionary/ProductInfo" import {ActChargeOnShopStatus, ActChargeOnShopType} from "../model/types" import {ProductInfoFilter, ProductInfoInnerSortOrder} from "./inner/ProductInfo" import {quantityConverter} from "./converters" import executor from "./executor" /** * @class module:actChargeOn.ActChargeOnShopSortOrder * @classdesc Класс для сортировки элементов в результе запроса. * @property {FieldSorter} uuid Уникальный идентификатор акта поставки * @property {FieldSorter} docOwner Кто подает документы * @property {FieldSorter} identity ID акта (клиентсикй) * @property {FieldSorter} number Номер документа * @property {FieldSorter} actDate Дата постановски на баланс * @property {FieldSorter} type Причина постановки на баланс (Пересортица/Излишки/Продукция, полученная до 01.01.2016) * @property {FieldSorter} actWriteOff Регистрационный номер акта списания по типу "Пересортица". Обязательно для заполнения для типа постановки на баланс "Пересортица". * @property {FieldSorter} note Примечание * @property {FieldSorter} status Статус документа * @property {FieldSorter} rejectComment Комментарий при отказе * @property {FieldSorter} replyId Уникальный идентификатор документа (присваивается УТМ); совпадает с идентификатором исходящего документа, который получили в ответе */ export class ActChargeOnShopSortOrder 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_ACT_CHARGE_ON_SHOP"); actWriteOff = this.addFieldSorter("ACT_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:actChargeOn.ActChargeOnShopQuery * @classdesc Класс для формирования запроса на получение актов поставки. * @property {FieldFilter} uuid Уникальный идентификатор акта списания из магазина * @property {FieldFilter} docOwner Кто подает документы * @property {FieldFilter} identity ID акта (клиентсикй) * @property {FieldFilter} number Номер документа * @property {FieldFilter} actDate Дата постановски на баланс * @property {FieldFilter} type Причина постановки на баланс (Пересортица/Излишки/Продукция, полученная до 01.01.2016) * @property {FieldFilter} actWriteOff Регистрационный номер акта списания по типу "Пересортица". Обязательно для заполнения для типа постановки на баланс "Пересортица". * @property {FieldFilter} note Примечание * @property {FieldFilter} status Статус документа * @property {FieldFilter} rejectComment Комментарий при отказе * @property {FieldFilter} replyId Уникальный идентификатор документа (присваивается УТМ); совпадает с идентификатором исходящего документа, который получили в ответе */ export class ActChargeOnShopQuery extends FilterBuilder { uuid = this.addFieldFilter("UUID"); docOwner = this.addFieldFilter("OWNER"); identity = this.addFieldFilter<(string | null)>("IDENTITY"); number = this.addFieldFilter("NUMBER"); actDate = this.addFieldFilter("ACT_DATE"); type = this.addFieldFilter("TYPE_ACT_CHARGE_ON_SHOP"); actWriteOff = this.addFieldFilter<(string | null)>("ACT_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('ActChargeOnShop', ActChargeOnShop.prototype)); } } /** * @class module:actChargeOn.ActChargeOnShopPositionSortOrder * @classdesc Класс для сортировки элементов в результе запроса. * @property {FieldSorter} uuid Уникальный идентификатор позиции акта * @property {FieldSorter} actChargeOnShopUuid Идентификатор акта постановки, содержащего позицию * @property {FieldSorter} identity Идентификатор позиции внутри накладной * @property {FieldSorter} quantity Количество * @property {module:productInfo.ProductInfoInnerSortOrder} productInfo Информация о продукции */ export class ActChargeOnShopPositionSortOrder extends SortOrder { uuid = this.addFieldSorter("UUID"); actChargeOnShopUuid = this.addFieldSorter("ACT_CHARGE_ON_SHOP_UUID"); identity = this.addFieldSorter("IDENTITY"); quantity = this.addFieldSorter("QUANTITY"); productInfo = this.addInnerSortOrder(new ProductInfoInnerSortOrder()); constructor() { super(() => this); } } /** * @class module:actChargeOn.ActChargeOnShopPositionQuery * @classdesc Класс для формирования запроса на получение позиций акта поставки. * @property {FieldFilter} uuid Уникальный идентификатор позиции акта * @property {FieldFilter} actChargeOnShopUuid Идентификатор акта постановки, содержащего позицию * @property {FieldFilter} identity Идентификатор позиции внутри накладной * @property {FieldFilter} quantity Количество * @property {module:productInfo.ProductInfoFilter} productInfo Информация о продукции */ export class ActChargeOnShopPositionQuery extends FilterBuilder { uuid = this.addFieldFilter("UUID"); actChargeOnShopUuid = this.addFieldFilter("ACT_CHARGE_ON_SHOP_UUID"); identity = this.addFieldFilter("IDENTITY"); quantity = this.addFieldFilter("QUANTITY", quantityConverter); productInfo = this.addInnerFilterBuilder(new ProductInfoFilter()); constructor() { super(() => this, executor('ActChargeOnShopPosition', ActChargeOnShopPosition.prototype, {productInfo: ProductInfo.prototype})); } }