diff --git a/package.json b/package.json index 1501496..b278786 100644 --- a/package.json +++ b/package.json @@ -45,6 +45,7 @@ } }, "dependencies": { + "commerceml-parser-core": "^2.1.0", "entities": "^2.1.0", "sax": "^1.2.4", "x2js": "^3.4.0" diff --git a/src/import-parser.ts b/src/import-parser.ts index 8aa1845..3d95dbb 100644 --- a/src/import-parser.ts +++ b/src/import-parser.ts @@ -10,7 +10,7 @@ import { Product, PropertyValue, RequisiteValue -} from './types'; +} from 'commerceml-parser-core'; export class CommerceMlImportParser extends CommerceMlAbstractParser { /** diff --git a/src/index.ts b/src/index.ts index 37b11bd..bd83f71 100644 --- a/src/index.ts +++ b/src/index.ts @@ -2,4 +2,3 @@ export * from './abstract-parser'; export * from './import-parser'; export * from './offers-parser'; export * from './orders-parser'; -export * from './types'; diff --git a/src/offers-parser.ts b/src/offers-parser.ts index 3c819cb..0c01cea 100644 --- a/src/offers-parser.ts +++ b/src/offers-parser.ts @@ -7,7 +7,7 @@ import { OffersPackage, PriceType, Warehouse -} from './types'; +} from 'commerceml-parser-core'; export class CommerceMlOffersParser extends CommerceMlAbstractParser { /** diff --git a/src/orders-parser.ts b/src/orders-parser.ts index 68d63f3..7356408 100644 --- a/src/orders-parser.ts +++ b/src/orders-parser.ts @@ -1,5 +1,5 @@ import {CommerceMlAbstractParser} from './abstract-parser'; -import {CommercialInformation, Document} from './types'; +import {CommercialInformation, Document} from 'commerceml-parser-core'; export class OrdersParser extends CommerceMlAbstractParser { /** diff --git a/src/types.ts b/src/types.ts deleted file mode 100644 index c97b6ca..0000000 --- a/src/types.ts +++ /dev/null @@ -1,2899 +0,0 @@ -/** - * CommerceML 2.10. - * 1.1.50 Группа. - * - * Компонентами «Группа» описывается иерархия групп (классификация) товаров в каталоге. Каждая - * Группа может включать в себя любое количество вложенных групп. Для каждой группы могут быть - * указаны свойства, которые затем могут быть описаны для товаров, принадлежащих как данной - * группе, так и всем подчиненным группам. Таким образом, в группах свойства объявляются, а в - * товарах – описываются, то есть указываются их значения. - */ -export interface ClassifierGroup { - /** - * Элемент: Ид - * Тип (компонент): ИдентфикаторТип - * Обязат. (Множ.): [1] - * - * Идентификатор группы товаров. - */ - id: string; - - /** - * Элемент: Наименование - * Тип (компонент): НаименованиеТип - * Обязат. (Множ.): [1] - * - * Наименование группы товаров. - */ - name: string; - - /** - * Элемент: Описание - * Тип (компонент): КомментарийТип - * Обязат. (Множ.): [0..1] - * - * Произвольное описание. - */ - description?: string; - - /** - * Элемент: Свойство - * Тип (компонент): Свойство - * Обязат. (Множ.): [0..n] - * - * Содержит коллекцию свойств, значения которых можно или нужно указать для товаров, принадлежащих данной группе. - */ - properties?: ClassifierProperty[]; - - /** - * Элемент: Группа - * Тип (компонент): Группа - * Обязат. (Множ.): [0..n] - * - * Описывается иерархия групп (классификация) товаров в каталоге - */ - groups?: ClassifierGroup[]; -} - -/** - * CommerceML 2.10 - * 1.1.78. Справочник - * - * Компонент «Справочник» определяет идентифицированный список (справочник) значений свойств. - */ -export interface DictionaryValue { - /** - * Элемент: ИдЗначения - * Тип (компонент): ИдентфикаторГлобальныйТип - * Обязат. (Множ.): [0..1] - * - * Идентифицирует значение свойства. - */ - id?: string; - - /** - * Элемент: Значение - * Тип (компонент): ЗначениеТип - * Обязат. (Множ.): [1] - * - * Определяет вариант значения свойства. - */ - value: string; -} - -/** - * CommerceML 2.10. - * 1.1.75. Свойство. - * - * Компонент «Свойство» определяет одно из свойств (характеристик), используемых для описания товара в каталоге, - * пакете предложений и/или документах. Может включать также описание вариантов значений этого свойства. - */ -export interface ClassifierProperty { - /** - * Элемент: Ид - * Тип (компонент): ИдентификаторГлобальныйТип - * Обязат. (Множ.): [1] - * - * Идентификатор свойства в классификаторе. - */ - id: string; - - /** - * Элемент: Наименование - * Тип (компонент): НаименованиеТип - * Обязат. (Множ.): [1] - * - * Наименование свойства. - */ - name: string; - - /** - * Элемент: Описание - * Тип (компонент): КомментарийТип - * Обязат. (Множ.): [0..1] - * - * Описание свойства, например, для чего оно предназначено. - */ - description?: string; - - /** - * Элемент: Обязательное - * Тип (компонент): ПереключательТип - * Обязат. (Множ.): [0..1] - * - * Определяет обязательность. - */ - required?: boolean; - - /** - * Элемент: Множественное - * Тип (компонент): ПереключательТип - * Обязат. (Множ.): [0..1] - * - * По умолчанию 0 – не множественное. - */ - multiple?: boolean; - - /** - * Элемент: ТипЗначений - * Тип (компонент): ТипЗначенийТип - * Обязат. (Множ.): [0..1] - * - * Один из следующих типов: Строка (по умолчанию), Число, ДатаВремя. - */ - type?: string; - - /** - * Элемент: ВариантыЗначений - * Тип (компонент): ВариантыЗначений - * Обязат. (Множ.): [0..n] - * - * Содержит коллекцию вариантов значений свойства. Если варианты указаны, то при указании значений данного свойства - * для товаров должны использоваться значения СТРОГО из данного списка. - */ - dictionaryValues?: DictionaryValue[]; - - /** - * Элемент: ДляТоваров - * Тип (компонент): ПереключательТип - * Обязат. (Множ.): [0..1] - * - * Свойство может (или должно) использоваться при описании товаров в каталоге, пакете предложений, документах. - */ - forProducts?: boolean; - - /** - * Элемент: ДляДокументов - * Тип (компонент): ПереключательТип - * Обязат. (Множ.): [0..1] - * - * Свойство может (должно) использоваться при описании товара в документе. - * Например: серийный номер. - */ - forDocuments?: boolean; - - /** - * Элемент: ДляПредложений - * Тип (компонент): ПереключательТип - * Обязат. (Множ.): [0..1] - * - * Свойство может (должно) использоваться при описании товара в пакете предложений. - * Например: гарантийный срок, способ доставки. - */ - forOffers?: boolean; -} - -export enum AddressType { - ZIP = 'Почтовый индекс', - COUNTRY = 'Страна', - REGION = 'Регион', - DISTRICT = 'Район', - LOCALITY = 'Населенный пункт', - CITY = 'Город', - STREET = 'Улица', - HOUSE = 'Дом', - BUILDING = 'Корпус', - APARTMENT = 'Квартира' -} - -/** - * CommerceML 2.10. - * 1.1.43. АдресноеПоле - * - * Позволяет структурировать адрес и затем, например, производить отбор сущностей по региону, городу и т.п. - */ -export interface AddressField { - /** - * Элемент: Тип - * Тип (компонент): АдресТип - * Обязат. (Множ.): [1] - * - * Возможные значения: почтовый индекс, страна, регион, район, населенный пункт, город, улица, дом, корпус, квартира. - */ - type: AddressType; - - /** - * Элемент: Значение - * Тип (компонент): ЗначениеАдресаТип - * Обязат. (Множ.): [1] - * - * Значение (например г.Москва). - */ - value: string; -} - -/** - * CommerceML 2.10. - * 1.1.44. Адрес - * - * Адрес контрагента или любого другого участника бизнес-процесса. - */ -export interface Address { - /** - * Элемент: Представление - * Тип (компонент): НаименованиеТип - * Обязат. (Множ.): [1] - * - * Строковое представление адреса. - * Например: Россия, Москва, ул. Селезневская, д.21 - */ - representation: string; - - /** - * Элемент: Комментарий - * Тип (компонент): КомментарийТип - * Обязат. (Множ.): [0..1] - * - * Произвольный комментарий. - * Например, указание, как проехать на автомобиле. - */ - comment?: string; - - /** - * Элемент: АдресноеПоле - * Тип (компонент): АдресноеПоле - * Обязат. (Множ.): [0..n] - * - * Позволяет структурировать адрес и затем, например, производить отбор сущностей по региону, городу и т.п. - */ - addressFields?: AddressField[]; -} - -/** - * CommerceML 2.10. - * 1.1.20. КонтактТип - * - * Тип связи с контрагентом. - */ -export enum ContactType { - PHONE_INTERNAL = 'Телефон внутренний', - PHONE_WORK = 'Телефон рабочий', - PHONE_MOBILE = 'Телефон мобильный', - PHONE_HOME = 'Телефон домашний', - PAGER = 'Пейджер', - FAX = 'Факс', - EMAIL = 'Почта', - ICQ = 'ICQ', - WEBSITE = 'ВебСайт', - GEOLOCATION = 'Координаты на карте', - OTHER = 'Прочее' -} - -/** - * CommerceML 2.10. - * 1.1.58. КонтактнаяИнформация - * - * Компонент «КонтактнаяИнформация» описывает информацию о контакте, контактных лицах, телефонах, факсах, - * почтовых адресах, должностях и любых других значимых сведениях. - */ -export interface ContactInfo { - /** - * Элемент: КонтактВид - * Тип (компонент): КонтактТип - * Обязат. (Множ.): [1] - * - * Возможные значения: Телефон внутренний, Телефон рабочий, Телефон мобильный, Телефон домашний, Пейджер, Факс, - * Почта, ICQ, ВебСайт, Координаты на карте, Прочее. - */ - type: ContactType; - - /** - * Элемент: Значение - * Тип (компонент): НаименованиеТип - * Обязат. (Множ.): [1] - * - * Контактная информация, например, номер рабочего телефона (095) 737-92-57 - */ - value: string; - - /** - * Элемент: Комментарий - * Тип (компонент): КомментарийТип - * Обязат. (Множ.): [0..1] - * - * Произвольный комментарий. Например: "звонить строго с 10 до 18 часов". - */ - comment?: string; -} - -/** - * CommerceML 2.10. - * 1.1.69. Представитель - * - * Описывает представителя контрагента и отношение (связь) представителя и контрагента. - */ -export interface Representative { - /** - * Элемент: Ид - * Тип (компонент): ИдентфикаторГлобальныйТип - * Обязат. (Множ.): [0..1] - * - * Глобально уникальный идентификатор контрагента (рекомендуется использовать GUID) - */ - id?: string; - - /** - * Элемент: Наименование - * Тип (компонент): НаименованиеТип - * Обязат. (Множ.): [0..1] - * - * Наименование контрагента. - */ - name?: string; - - /** - * Элемент: РеквизитыЮрЛица - * Тип (компонент): КомментарийТип - * Обязат. (Множ.): [0..1] - * - * Содержит описание реквизитов контрагента, специфических для юридических лиц. - */ - companyInfo?: string; - - /** - * Элемент: РеквизитыФизЛица - * Тип (компонент): КомментарийТип - * Обязат. (Множ.): [0..1] - * - * Содержит описание реквизитов контрагента, специфических для физических лиц. - */ - personInfo?: string; - - /** - * Элемент: Комментарий - * Тип (компонент): КомментарийТип - * Обязат. (Множ.): [0..1] - * - * Произвольный текст. - */ - comment?: string; - - /** - * Элемент: Адрес - * Тип (компонент): Адрес - * Обязат. (Множ.): [0..1] - * - * Произвольный текст. - */ - address?: Address; - - /** - * Элемент: Контакты - * Тип (компонент): КонтактнаяИнформация - * Обязат. (Множ.): [0..1] - * - * Содержит описание возможных способов связи (по телефону, электронной почте и т.д.). - */ - contactInfo?: ContactInfo; - - /** - * Элемент: Отношение - * Тип (компонент): СтрокаТип - * Обязат. (Множ.): [1] - * - * Описывает отношение (связь) представителя и контрагента. - * Примеры значений: "Контактное лицо", "Филиал", "Главный офис" и т.п. - */ - relation: string; -} - -/** - * CommerceML 2.10. - * 1.1.71. РеквизитыФизЛица - * - * Группа «РеквизитыФизЛица» содержит описание реквизитов контрагента, специфическую для физических лиц. - */ -export interface PersonInfo { - /** - * Элемент: ПолноеНаименование - * Тип (компонент): НаименованиеТип - * Обязат. (Множ.): [1] - * - * Полное наименование физического лица. Может включать обращение и суффикс. - */ - fullName: string; - - /** - * Элемент: Обращение - * Тип (компонент): ОбращениеТип - * Обязат. (Множ.): [0..1] - * - * Например: Г-н, Г-жа, Докт., Проф. и т.д. - */ - title?: string; - - /** - * Элемент: Фамилия - * Тип (компонент): СтрокаТип - * Обязат. (Множ.): [0..1] - * - * Фамилия. - */ - lastName?: string; - - /** - * Элемент: Имя - * Тип (компонент): СтрокаТип - * Обязат. (Множ.): [0..1] - * - * Имя. - */ - firstName?: string; - - /** - * Элемент: Отчество - * Тип (компонент): СтрокаТип - * Обязат. (Множ.): [0..1] - * - * Отчество. - */ - middleName?: string; - - /** - * Элемент: ДатаРождения - * Тип (компонент): ДатаТип - * Обязат. (Множ.): [0..1] - * - * Дата рождения. - */ - birthday?: Date; - - /** - * Элемент: МестоРождения - * Тип (компонент): Адрес - * Обязат. (Множ.): [0..1] - * - * Место рождения. - */ - birthPlace?: Address; - - /** - * Элемент: Пол - * Тип (компонент): ПолТип - * Обязат. (Множ.): [0..1] - * - * Пол. - * Значения: - * - М - * - Ж - */ - sex?: string; - - /** - * Элемент: ИНН - * Тип (компонент): ИННТип - * Обязат. (Множ.): [0..1] - * - * Индивидуальный номер налогоплательщика (ИНН). - */ - inn?: string; - - /** - * Элемент: КПП - * Тип (компонент): КППТип - * Обязат. (Множ.): [0..1] - * - * Код причины постановки на учет. - */ - kpp?: string; -} - -/** - * CommerceML 2.10. - * 1.1.82. УдостоверениеЛичности - * - * Компонент «УдостоверениеЛичности» содержит описание реквизитов документа, удостоверяющего личность. - */ -export interface IdentityDocument { - /** - * Элемент: ВидДокумента - * Тип (компонент): СтрокаТип - * Обязат. (Множ.): [1] - * - * Вид документа, удостоверяющего личность, например Паспорт. - */ - type: string; - - /** - * Элемент: Серия - * Тип (компонент): СтрокаТип - * Обязат. (Множ.): [0..1] - * - * Серия документа. - */ - series?: string; - - /** - * Элемент: Номер - * Тип (компонент): НомерТип - * Обязат. (Множ.): [1] - * - * Номер документа. - */ - number: string; - - /** - * Элемент: ДатаВыдачи - * Тип (компонент): ДатаТип - * Обязат. (Множ.): [1] - * - * Когда выдан. - */ - issueDate: Date; - - /** - * Элемент: КемВыдан - * Тип (компонент): НаименованиеТип - * Обязат. (Множ.): [1] - * - * Организация, выдавшая документ. - */ - issuer: string; -} - -/** - * CommerceML 2.10. - * 1.1.74. Руководитель - * - * Компонент «Руководитель» описывает информацию о руководителе. - */ -export interface Director { - /** - * Элемент: Фамилия - * Тип (компонент): СтрокаТип - * Обязат. (Множ.): [1] - * - * Фамилия. - */ - lastName: string; - - /** - * Элемент: Имя - * Тип (компонент): СтрокаТип - * Обязат. (Множ.): [1] - * - * Имя. - */ - firstName: string; - - /** - * Элемент: Отчество - * Тип (компонент): СтрокаТип - * Обязат. (Множ.): [0..1] - * - * Отчество. - */ - middleName?: string; - - /** - * Элемент: Должность - * Тип (компонент): СтрокаТип - * Обязат. (Множ.): [1] - * - * Занимаемая должность. - */ - occupation: string; - - /** - * Элемент: УдостоверениеЛичности - * Тип (компонент): УдостоверениеЛичности - * Обязат. (Множ.): [0..1] - * - * Документ, удостоверяющий личность. - */ - identityDocument?: IdentityDocument; - - /** - * Элемент: АдресРегистрации - * Тип (компонент): Адрес - * Обязат. (Множ.): [0..1] - * - * Адрес регистрации. - */ - registrationAddress?: Address; - - /** - * Элемент: Контакты - * Тип (компонент): КонтактнаяИнформация - * Обязат. (Множ.): [0..1] - * - * Описание контактной информации. - */ - contact?: ContactInfo; -} - -/** - * CommerceML 2.10. - * 1.1.48. Банк - * - * Служит для определения реквизитов КО или УБР (БИК, Наименование, Адрес и т.д.) через которые контрагент - * осуществляет расчеты. - */ -export interface Bank { - /** - * Элемент: БИК - * Тип (компонент): БИКТип - * Обязат. (Множ.): [1] - * - * Банковский идентификационный код (БИК) в соответствии со "Справочником БИК РФ". - */ - bik: string; - - /** - * Элемент: СчетКорреспондентский - * Тип (компонент): СчетНомерТип - * Обязат. (Множ.): [0..1] - * - * Корреспондентский счет. - */ - correspondentAccount?: string; - - /** - * Элемент: Наименование - * Тип (компонент): НаименованиеТип - * Обязат. (Множ.): [0..1] - * - * Наименование банка. - */ - name?: string; - - /** - * Элемент: SWIFT - * Тип (компонент): СВИФТТип - * Обязат. (Множ.): [0..1] - * - * Код SWIFT. - */ - swift?: string; -} - -/** - * CommerceML 2.10. - * 1.1.73. РасчетныйСчет - * - * Компонент «РасчетныйСчет» описывает информацию о расчетном счете, банке, в котором открыт расчетный счет - * и банке для непрямых расетов. - */ -export interface BankAccount { - /** - * Элемент: НомерСчета - * Тип (компонент): СчетНомерТип - * Обязат. (Множ.): [1] - * - * Расчетный счет, открытый в обслуживающем банке. - */ - number: string; - - /** - * Элемент: Комментарий - * Тип (компонент): КомментарийТип - * Обязат. (Множ.): [0..1] - * - * Произвольный текст. - */ - comment?: string; - - /** - * Элемент: Банк - * Тип (компонент): Банк - * Обязат. (Множ.): [1] - * - * Банк, в котором открыт расчетный счет. - */ - bank: Bank; - - /** - * Элемент: БанкКорреспондент - * Тип (компонент): Банк - * Обязат. (Множ.): [0..1] - * - * Банк для непрямых расчетов. - */ - bankCorrespondent?: Bank; -} - -/** - * CommerceML 2.10. - * 1.1.72. РеквизитыЮрЛица - * - * Группа «РеквизитыЮрЛица» содержит описание реквизитов контрагента, специфических для юридических лиц. - */ -export interface CompanyInfo { - /** - * Элемент: ОфициальноеНаименование - * Тип (компонент): НаименованиеТип - * Обязат. (Множ.): [1] - * - * Официальное наименование юридического лица в соответствии с учредительными документами. - */ - officialName: string; - - /** - * Элемент: ИНН - * Тип (компонент): ИННТип - * Обязат. (Множ.): [0..1] - * - * Индивидуальный номер налогоплательщика (ИНН). - */ - inn?: string; - - /** - * Элемент: КПП - * Тип (компонент): КППТип - * Обязат. (Множ.): [0..1] - * - * Код причины постановки на учет. - */ - kpp?: string; - - /** - * Элемент: ОсновнойВидДеятельности - * Тип (компонент): ВидДеятельностиТип - * Обязат. (Множ.): [0..1] - * - * Основной вид деятельности по учредительным документам. - */ - businessType?: string; - - /** - * Элемент: ЕГРПО - * Тип (компонент): ЕГРПОТип - * Обязат. (Множ.): [0..1] - * - * Код по ЕГРПО. - */ - egrpo?: string; - - /** - * Элемент: ОКВЭД - * Тип (компонент): ОКВЭДТип - * Обязат. (Множ.): [0..1] - * - * Код отрасли по ОКВЭД. - */ - okved?: string; - - /** - * Элемент: ОКДП - * Тип (компонент): ОКДПТип - * Обязат. (Множ.): [0..1] - * - * Код по ОКДП основного вида деятельности. - */ - okdp?: string; - - /** - * Элемент: ОКОПФ - * Тип (компонент): ОКОПФТип - * Обязат. (Множ.): [0..1] - * - * Код организационно-правовой формы организации по ОКОПФ. - */ - okopf?: string; - - /** - * Элемент: ОКФС - * Тип (компонент): ОКФСТип - * Обязат. (Множ.): [0..1] - * - * Код формы собственности по ОКФС. - */ - okfs?: string; - - /** - * Элемент: ОКПО - * Тип (компонент): ОКПОТип - * Обязат. (Множ.): [0..1] - * - * Код ОКПО организации. - */ - okpo?: string; - - /** - * Элемент: ДатаРегистрации - * Тип (компонент): ДатаТип - * Обязат. (Множ.): [0..1] - * - * Дата регистрации организации. - */ - registrationDate?: Date; - - /** - * Элемент: ЮридическийАдрес - * Тип (компонент): Адрес - * Обязат. (Множ.): [0..1] - * - * Юридический адрес. - */ - legalAddress?: Address; - - /** - * Элемент: Руководитель - * Тип (компонент): Руководитель - * Обязат. (Множ.): [0..1] - * - * Руководитель организации. - */ - director?: Director; - - /** - * Элемент: РасчетныеСчета - * Тип (компонент): РасчетныйСчет - * Обязат. (Множ.): [0..n] - * - * Содержит описание расчетных счетов организации. - */ - bankAccounts?: BankAccount[]; -} - -/** - * CommerceML 2.10. - * 1.1.59. Контрагент - * - * Компонент «Контрагент» описывает информацию о контрагенте (фирме, компании, предприятии, организации, - * физическом лице и т.д.) – участнике бизнес–процесса. - */ -export interface Counterparty { - /** - * Элемент: Ид - * Тип (компонент): ИдентфикаторГлобальныйТип - * Обязат. (Множ.): [0..1] - * - * Глобально уникальный идентификатор контрагента (рекомендуется использовать GUID). - */ - id?: string; - - /** - * Элемент: Наименование - * Тип (компонент): НаименованиеТип - * Обязат. (Множ.): [0..1] - * - * Наименование контрагента. - */ - name?: string; - - /** - * Элемент: Комментарий - * Тип (компонент): КомментарийТип - * Обязат. (Множ.): [0..1] - * - * Произвольный текст. - */ - comment?: string; - - /** - * Элемент: Адрес - * Тип (компонент): Адрес - * Обязат. (Множ.): [0..1] - * - * Фактический адрес контрагента. - */ - address?: Address; - - /** - * Элемент: Представитель - * Тип (компонент): Представитель - * Обязат. (Множ.): [0..n] - * - * Содержит описание представителей контрагента, например, контактных лиц или дочерних организаций. - */ - representatives?: Representative[]; - - /** - * Элемент: Контакт - * Тип (компонент): КонтактнаяИнформация - * Обязат. (Множ.): [0..1] - * - * Описывает информацию о контакте, контактных лицах, телефонах, факсах, почтовых адресах, должностях и любых - * других значимых сведениях. - */ - contact?: ContactInfo; - - /** - * Элемент: РеквизитыФизЛица - * Тип (компонент): РеквизитыФизЛица - * Обязат. (Множ.): [0..1] - * - * Содержит описание реквизитов контрагента, специфических для физических лиц. - */ - personInfo?: PersonInfo; - - /** - * Элемент: РеквизитыЮрЛица - * Тип (компонент): РеквизитыЮрЛица - * Обязат. (Множ.): [0..1] - * - * Содержит описание реквизитов контрагента, специфических для юридических лиц. - */ - companyInfo?: CompanyInfo; -} - -/** - * CommerceML 2.10. - * 1.1.62. Налог - * - * Компонент «Налог» описывает вид налога (НДС, НП и т.д.), флаги акциза и учета в сумме. - */ -export interface Tax { - /** - * Элемент: Наименование - * Тип (компонент): НаименованиеТип - * Обязат. (Множ.): [1] - * - * Вид налога. Например, НДС. - */ - name: string; - - /** - * Элемент: УчтеноВСумме - * Тип (компонент): ПереключательТип - * Обязат. (Множ.): [0..1] - * - * По умолчанию 0 (не учтено в сумме документа, пакета предложений). - */ - includedInSum?: boolean; - - /** - * Элемент: Акциз - * Тип (компонент): ПереключательТип - * Обязат. (Множ.): [0..1] - * - * Флаг, указывающий, что налог является акцизом. - */ - excise?: boolean; -} - -/** - * CommerceML 2.10. - * 1.1.80. ТипЦены - * - * Компонент «ТипЦены» описывает типы цены. - */ -export interface PriceType { - /** - * Элемент: Ид - * Тип (компонент): НаименованиеТип - * Обязат. (Множ.): [1] - * - * Идентификатор типа цены. - */ - id: string; - - /** - * Элемент: Наименование - * Тип (компонент): НаименованиеТип - * Обязат. (Множ.): [0..1] - * - * Наименование цены (например, оптовая). - */ - name?: string; - - /** - * Элемент: Валюта - * Тип (компонент): ВалютаТип - * Обязат. (Множ.): [0..1] - * - * Код валюты по международному классификатору валют (ISO 4217). Если не указана, то - * используется валюта установленная для данного типа цен - */ - currency?: string; - - /** - * Элемент: Описание - * Тип (компонент): КомментарийТип - * Обязат. (Множ.): [0..1] - * - * Описание типа цены. Дополнительные условия. - * Например, наличие дилерского соглашения. - */ - description?: string; - - /** - * Элемент: Налог - * Тип (компонент): Налог - * Обязат. (Множ.): [0..1] - * - * Определяет ставку (в процентах) и вид налога. - */ - tax?: Tax; -} - -/** - * CommerceML 2.10. - * 1.1.61. МестоРаботы - * - * Группа «МестоРаботы» содержит описание места работы физического лица и занимаемой им должности. - */ -export interface Workplace { - /** - * Элемент: Организация - * Тип (компонент): Контрагент - * Обязат. (Множ.): [0..1] - * - * Описание организации может быть опущено, если физ.лицо описывается, как представитель организации. - */ - company?: Counterparty; - - /** - * Элемент: Должность - * Тип (компонент): НаименованиеТип - * Обязат. (Множ.): [0..1] - * - * Занимаемая должность. - */ - occupation?: string; -} - -/** - * CommerceML 2.10. - * 1.1.66. Подписант - * - * Описывает реквизиты физического и/или юридического лица, подписавшего документ. - */ -export interface Signee { - /** - * Элемент: Фамилия - * Тип (компонент): СтрокаТип - * Обязат. (Множ.): [1] - * - * Фамилия. - */ - lastName: string; - - /** - * Элемент: Имя - * Тип (компонент): СтрокаТип - * Обязат. (Множ.): [1] - * - * Имя. - */ - firstName: string; - - /** - * Элемент: Отчество - * Тип (компонент): СтрокаТип - * Обязат. (Множ.): [0..1] - * - * Отчество. - */ - middleName?: string; - - /** - * Элемент: Обращение - * Тип (компонент): ОбращениеТип - * Обязат. (Множ.): [0..1] - * - * Например: Г-н, Г-жа, Докт., Проф. и т.д. - */ - title?: string; - - /** - * Элемент: Должность - * Тип (компонент): СтрокаТип - * Обязат. (Множ.): [0..1] - * - * Должность. - */ - occupation?: string; - - /** - * Элемент: Комментарий - * Тип (компонент): КомментарийТип - * Обязат. (Множ.): [0..1] - * - * Комментарий. - */ - comment?: string; - - /** - * Элемент: УдостоверениеЛичности - * Тип (компонент): УдостоверениеЛичности - * Обязат. (Множ.): [0..1] - * - * Документ, удостоверяющий личность. - */ - identityDocument?: IdentityDocument; - - /** - * Элемент: АдресРегистрации - * Тип (компонент): Адрес - * Обязат. (Множ.): [0..1] - * - * Адрес регистрации. - */ - registrationAddress?: Address; - - /** - * Элемент: МестоРаботы - * Тип (компонент): МестоРаботы - * Обязат. (Множ.): [0..1] - * - * Содержит описания места работы физического лица и занимаемой должности. - */ - workplace?: Workplace; -} - -/** - * CommerceML 2.10. - * 1.1.87. Структура ЭД Классификатор - * - * Классификатор устанавливает правила, по которым должен быть описан товар. - */ -export interface Classifier { - /** - * Элемент: Ид - * Тип (компонент): ИдентфикаторГлобальныйТип - * Обязат. (Множ.): [1] - * - * Идентификатор классификатора (рекомендуется использовать GUID). - */ - id: string; - - /** - * Элемент: Наименование - * Тип (компонент): НаименованиеТип - * Обязат. (Множ.): [1] - * - * Наименование классификатора товаров. - */ - name: string; - - /** - * Элемент: Владелец - * Тип (компонент): Контрагент - * Обязат. (Множ.): [1] - * - * Служит для определения владельца данного классификатора. - */ - owner: Counterparty; - - /** - * Элемент: Описание - * Тип (компонент): КомментарийТип - * Обязат. (Множ.): [0..1] - * - * Произвольное описание. - */ - description?: string; - - /** - * Элемент: Группы - * Тип (компонент): Группа - * Обязат. (Множ.): [0..n] - * - * Определяет иерархическую структуру групп. - */ - groups?: ClassifierGroup[]; - - /** - * Элемент: Свойства - * Тип (компонент): Свойство - * Обязат. (Множ.): [0..n] - * - * Содержит коллекцию свойств, значения которых можно (или нужно) указать для всех товаров в каталоге, - * пакете предложений, документах. - */ - properties?: ClassifierProperty[]; - - /** - * Элемент: ТипыЦен - * Тип (компонент): ТипЦены - * Обязат. (Множ.): [0..n] - * - * Определяет типы цен, которые могут быть использованы при формировании пакета коммерческих предложений. - */ - priceTypes?: PriceType[]; - - /** - * Элемент: Подписанты - * Тип (компонент): Подписант - * Обязат. (Множ.): [0..n] - * - * Реквизиты лиц, подписавших классификатор. - */ - signees?: Signee[]; -} - -/** - * CommerceML 2.10. - * 1.1.35. СтатусТип - * - * Определяет статус описанного товара. - */ -export enum Status { - NEW = 'Новый', - UPDATED = 'Изменен', - DELETED = 'Удален' -} - -/** - * CommerceML 2.10. - * 1.1.53. ЗначениеРеквизита - * - * Компонентами «ЗначениеРеквизита» описываются значения поризвольного реквизита документа. - */ -export interface RequisiteValue { - /** - * Элемент: Наименование - * Тип (компонент): НаименованиеТип - * Обязат. (Множ.): [1] - * - * Наименование реквизита. - */ - name: string; - - /** - * Элемент: Значение - * Тип (компонент): СтрокаТип - * Обязат. (Множ.): [1..n] - * - * Значение свойства реквизита. - */ - values: string[]; -} - -/** - * CommerceML 2.10. - * 1.1.52. ЕдиницаИзмерения - * - * Группат «ЕдиницаИзмерения» описывает единицу измерения товара и коэффициент пересчета количества в базовую единицу. - */ -export interface MeasurementUnit { - /** - * Элемент: Единица - * Тип (компонент): ЕдиницаТип - * Обязат. (Множ.): [1] - * - * Имя единицы измерения товара по ОКЕИ. - */ - unit: string; - - /** - * Элемент: Коэффициент - * Тип (компонент): КоэффициентТип - * Обязат. (Множ.): [1] - * - * Коэффициент пересчета количества товара в базовую единицу. - */ - coefficient: number; - - /** - * Элемент: ДополнительныеДанные - * Тип (компонент): ЗначениеРеквизита - * Обязат. (Множ.): [0..n] - * - * Описывает дополнительные данные. - */ - additionalData?: RequisiteValue[]; -} - -/** - * CommerceML 2.10. - * 1.1.47. БазоваяЕдиница - * - * Компонентами «БазоваяЕдиница» описывается имя базовой единицы измерения товара по ОКЕИ. - * В документах и коммерческих предложениях может быть указана другая единица измерения, но при этом обязательно - * указывается коэффициент пересчета количества в базовую единицу товара. - */ -export interface BaseMeasurementUnit { - /** - * Элемент: Код - * Тип (компонент): Строка3 - * Обязат. (Множ.): [0..1] - * - * Код базовой единицы. - */ - code?: string; - - /** - * Элемент: НаименованиеПолное - * Тип (компонент): СтрокаТип - * Обязат. (Множ.): [0..1] - * - * Наименование базовой единицы. - */ - fullName?: string; - - /** - * Элемент: МеждународноеСокращение - * Тип (компонент): Строка3 - * Обязат. (Множ.): [0..1] - * - * Международное сокращение базовой единицы. - */ - internationalAcronym?: string; - - /** - * Элемент: НаименованиеКраткое - * Тип (компонент): СтрокаТип - * Обязат. (Множ.): [0..1] - * - * Краткое наименование базовой единицы. - */ - acronym?: string; - - /** - * Элемент: Пересчет - * Тип (компонент): ЕдиницаИзмерения - * Обязат. (Множ.): [0..n] - * - * Могут быть указаны способы пересчета в другие единицы. Указанные способы пересчета следует использовать - * в случаях несовпадения базовых единиц на одни и те же товары. - */ - conversions?: MeasurementUnit[]; -} - -/** - * CommerceML 2.10. - * 1.1.54. ЗначенияСвойства - * - * Компонентами «ЗначенияСвойства» описываются значения свойств (характеристик) товаров в каталоге, - * пакете предложений, документе. - */ -export interface PropertyValue { - /** - * Элемент: Ид - * Тип (компонент): ИдентфикаторГлобальныйТип - * Обязат. (Множ.): [1] - * - * Идентификатор свойства в классификаторе товаров. - */ - id: string; - - /** - * Элемент: Наименование - * Тип (компонент): НаименованиеТип - * Обязат. (Множ.): [0..1] - * - * Наименование свойства. - */ - name?: string; - - /** - * Элемент: Значение - * Тип (компонент): СтрокаТип - * Обязат. (Множ.): [1..n] - * - * Значение свойства. - */ - values: string[]; -} - -/** - * CommerceML 2.10. - * 1.1.79. СтавкаНалога - * - * Компонент «СтавкаНалога» определяет вид и ставку налога. - */ -export interface TaxRate { - /** - * Элемент: Наименование - * Тип (компонент): НаименованиеТип - * Обязат. (Множ.): [1] - * - * Вид налога. Например, НДС. - */ - name: string; - - /** - * Элемент: Ставка - * Тип (компонент): КоэффициентТип - * Обязат. (Множ.): [1] - * - * Ставка налога в процентах. - */ - rate: number; -} - -/** - * CommerceML 2.10. - * 1.1.45. Акциз - * - * Компонент «Акциз» определяет вид, валюту и сумму акцизного сбора. - */ -export interface Excise { - /** - * Элемент: Наименование - * Тип (компонент): НаименованиеТип - * Обязат. (Множ.): [1] - * - * Вид акцизного налога. - */ - name: string; - - /** - * Элемент: СуммаЗаЕдиницу - * Тип (компонент): СуммаТип - * Обязат. (Множ.): [1] - * - * Сумма сбора за единицу (базовую) товара. - */ - pricePerUnit: number; - - /** - * Элемент: Валюта - * Тип (компонент): ВалютаТип - * Обязат. (Множ.): [1] - * - * Код валюты по международному классификатору валют (ISO 4217). - */ - currency: string; -} - -/** - * CommerceML 2.10. - * 1.1.83. ХарактеристикаТовара - * - * Компонент типа «ХарактеристикаТовара» описывает характеристики товара в элементе «Товар». - */ -export interface ProductCharacteristic { - /** - * Элемент: Ид - * Тип (компонент): ИдентификаторГлобальныйТип - * Обязат. (Множ.): [0..1] - * - * Идентификатор характеристики. - */ - id?: string; - - /** - * Элемент: Наименование - * Тип (компонент): НаименованиеТип - * Обязат. (Множ.): [1] - * - * Наименование характеристики. - */ - name: string; - - /** - * Элемент: Значение - * Тип (компонент): ЗначениеТип - * Обязат. (Множ.): [1] - * - * Значение характеристики. - */ - value: string; -} - -/** - * CommerceML 2.10 - * 1.1.57. Комплектующее - * - * Компонент «Комплектующее» определяет комплектующие составных товаров - наборов - */ -export interface Component { - /** - * Элемент: ИдКаталога - * Тип (компонент): ИдентфикаторГлобальныйТип - * Обязат. (Множ.): [0..1] - * - * Идентификатор каталога. - */ - catalogId?: string; - - /** - * Элемент: ИдКлассификатора - * Тип (компонент): ИдентфикаторГлобальныйТип - * Обязат. (Множ.): [0..1] - * - * Идентификатор классификатора, в соответствии с которым описано комплектующее. - */ - classifierId?: string; - - /** - * Элемент: Количество - * Тип (компонент): КоличествоТип - * Обязат. (Множ.): [1] - * - * Количество. - */ - quantity: number; -} - -/** - * CommerceML 2.10. - * 1.1.46. Аналог - * - * Компонент «Аналог» определяет аналог товара. - */ -export interface Analogue { - /** - * Элемент: ИдКаталога - * Тип (компонент): ИдентфикаторГлобальныйТип - * Обязат. (Множ.): [0..1] - * - * Идентификатор каталога. - */ - catalogId?: string; - - /** - * Элемент: ИдКлассификатора - * Тип (компонент): ИдентфикаторГлобальныйТип - * Обязат. (Множ.): [0..1] - * - * Идентификатор классификатора, в соответствии с которым описан аналог. - */ - classifierId?: string; - - /** - * Элемент: Аналог - * Тип (компонент): Товар - * Обязат. (Множ.): [0..n] - * - * Аналоги товара, например для медикаментов другие лекарства, заменяющие данное. - */ - products?: Product[]; -} - -/** - * CommerceML 2.10. - * 1.1.81. Товар - * - * Компонент «Товар» описывает идентифицированный в каталоге товар. Товар может относиться к нескольким группам. - * Товар может иметь аналоги (например, аналоги для лекарств и запчастей). - */ -export interface Product { - /** - * Элемент: Статус - * Тип (компонент): СтатусТип - * Обязат. (Множ.): [1] - * - * Описывает статус. Имеет одно из значений: новый, изменен, удален. - */ - status?: Status; - - /** - * Элемент: Описание - * Тип (компонент): КомментарийТип - * Обязат. (Множ.): [0..1] - * - * Описание товара. - */ - description?: string; - - /** - * Элемент: Наименование - * Тип (компонент): НаименованиеТип - * Обязат. (Множ.): [1] - * - * Наименование товара. - */ - name: string; - - /** - * Элемент: Картинка - * Тип (компонент): ИмяФайлаТип - * Обязат. (Множ.): [0..n] - * - * Имя файла с изображением товара. - */ - images?: string[]; - - /** - * Элемент: БазоваяЕдиница - * Тип (компонент): БазоваяЕдиница - * Обязат. (Множ.): [1] - * - * Имя базовой единицы измерения товара по ОКЕИ. В документах и коммерческих предложениях может быть указана другая - * единица измерения, но при этом обязательно указывается коэффициент пересчета количества в базовую единицу товара. - */ - baseMeasurementUnit: BaseMeasurementUnit; - - /** - * CommerceML 2.10. - * 1.1.55. ИдентификаторТовара - * - * Описывает идентификатор товара в каталоге. Товар может быть идентифицирован по Артикулу, Штрихкоду, - * Идентификатору в каталоге (внутреннему). - */ - - /** - * Элемент: ИдентификаторТовара - * Тип (компонент): ИдентификаторТовара - * Обязат. (Множ.): [1] - * - * Идентификатор товара в каталоге. Товар может быть идентифицирован по Артикулу, Штрихкоду, Идентификатору - * в каталоге (внутреннему). - */ - - /** - * Элемент: Ид - * Тип (компонент): ИдентфикаторТип80 - * Обязат. (Множ.): [0..1] - * - * Идентификатор товара в каталоге. - */ - id?: string; - - /** - * Элемент: Штрихкод - * Тип (компонент): ШтрихкодТип - * Обязат. (Множ.): [0..1] - * - * Штрихкод базовой единицы товара. - */ - barcode?: string; - - /** - * Элемент: Артикул - * Тип (компонент): АртикулТип - * Обязат. (Множ.): [0..1] - * - * Артикул. - */ - article?: string; - - /** - * CommerceML 2.10. - * 1.1.70. Производитель - * - * Группа «Производитель» указывает, где и кем изготовлен товара, кому пренадлежит торговая марка. - */ - /** - * Элемент: Производитель - * Тип (компонент): Производитель - * Обязат. (Множ.): [0..1] - * - * Кто производит товар. - */ - - /** - * Элемент: Страна - * Тип (компонент): НаименованиеТип - * Обязат. (Множ.): [0..1] - * - * Наименование страны (по ОКСМ), в которой изготовлен товар. - */ - country?: string; - - /** - * Элемент: ТорговаяМарка - * Тип (компонент): НаименованиеТип - * Обязат. (Множ.): [0..1] - * - * Наименование торговой марки (брэнда) товара. - */ - trademark?: string; - - /** - * Элемент: Изготовитель - * Тип (компонент): Контрагент - * Обязат. (Множ.): [0..1] - * - * Наименование непосредственного изготовителя товара. - */ - manufacturer?: Counterparty; - - /** - * Элемент: ВладелецТорговойМарки - * Тип (компонент): Контрагент - * Обязат. (Множ.): [0..1] - * - * Контрагент (компания), которому принадлежит торговая марка товара. - */ - trademarkOwner?: Counterparty; - - /** - * Элемент: Группы - * Тип (компонент): ГруппыТоваров - * Обязат. (Множ.): [0..1] - * - * Содержит идентификаторы групп, которым принадлежит данный товар в указанном классификаторе. - * Если классификатор не указан, то включать данный элемент не имеет смысла. - * - * Пример: - * <Группы> - * <Ид>2e13116a-1f33-11e7-80c2-0cc47ab29cd1 - * - */ - groupId?: string; - - /** - * Элемент: ЗначенияСвойств - * Тип (компонент): ЗначенияСвойства - * Обязат. (Множ.): [0..n] - * - * Описывает значения свойств (характеристик) номенклатурной позиции в соответствии с указанным классификатором. - * Если классификатор не указан, то включать данный элемент не имеет смысла. - */ - propertyValues?: PropertyValue[]; - - /** - * Элемент: СтавкиНалогов - * Тип (компонент): СтавкаНалога - * Обязат. (Множ.): [0..n] - * - * Определяет вид и ставку налога. - */ - taxRates?: TaxRate[]; - - /** - * Элемент: Акцизы - * Тип (компонент): Акциз - * Обязат. (Множ.): [0..n] - * - * Вид, сумма акциза за базовую единицу товара. - */ - excises?: Excise[]; - - /** - * Элемент: Комплектующие - * Тип (компонент): Комплектующее: Товар, расширенный элементами ИдКаталога, ИдКлассификатора, Количество - * Обязат. (Множ.): [0..n] - * - * Для изделий, содержащих комплектующие. - */ - components?: Component[]; - - /** - * Элемент: Аналоги - * Тип (компонент): Товар, расширенный элементами ИдКаталога, ИдКлассификатора - * Обязат. (Множ.): [0..n] - * - * Аналоги товара, например для медикаментов другие лекарства, заменяющие данное лекарство. - */ - analogues?: Analogue[]; - - /** - * Элемент: ХарактеристикиТовара - * Тип (компонент): ХарактеристикаТовара - * Обязат. (Множ.): [0..n] - * - * Описывает характеристики товара. - */ - characteristics?: ProductCharacteristic[]; - - /** - * Элемент: ЗначенияРеквизитов - * Тип (компонент): ЗначениеРеквизита - * Обязат. (Множ.): [0..n] - * - * Описывает значения реквизитов. - */ - requisiteValues?: RequisiteValue[]; -} - -/** - * CommerceML 2.10. - * 1.1.88. Структура ЭД Каталог - * - * Каталог содержит перечень товаров. Может составляться разными предприятиями (например, каталог продукции - * фирмы «1С»). У каталога всегда определен владелец. Товары в каталоге описываются по определенному классификатору. - */ -export interface Catalog { - /** - * Элемент: СодержитТолькоИзменения - * Тип (компонент): ПереключательТип - * Обязат. (Множ.): [0..1] - * - * ЭД содержит только измененные данные. - */ - hasOnlyChanges?: boolean; - - /** - * Элемент: Ид - * Тип (компонент): ИдентфикаторГлобальныйТип - * Обязат. (Множ.): [1] - * - * Идентификатор каталога. - */ - id: string; - - /** - * Элемент: ИдКлассификатора - * Тип (компонент): ИдентфикаторГлобальныйТип - * Обязат. (Множ.): [0..1] - * - * Идентификатор классификатора. - */ - classifierId?: string; - - /** - * Элемент: Наименование - * Тип (компонент): НаименованиеТип - * Обязат. (Множ.): [1] - * - * Наименование каталога, например «Каталог продукции фирмы 1С». - */ - name: string; - - /** - * Элемент: Владелец - * Тип (компонент): Контрагент - * Обязат. (Множ.): [1] - * - * Определяет владельца каталога. - */ - owner: Counterparty; - - /** - * Элемент: Товары - * Тип (компонент): Товар - * Обязат. (Множ.): [1..n] - * - * Определяет товар в каталоге, содержат описания свойств (характеристик), аналогов, комплектующих и т.д. - */ - products: Product[]; - - /** - * Элемент: Описание - * Тип (компонент): КомментарийТип - * Обязат. (Множ.): [0..1] - * - * Описание каталога. - */ - description?: string; - - /** - * Элемент: Подписанты - * Тип (компонент): Подписант - * Обязат. (Множ.): [0.n] - * - * Реквизиты лиц, подписавших каталог. - */ - signees?: Signee[]; -} - -/** - * CommerceML 2.10 - * 1.1.77. Склад - * - * Компонент «Склад» описывает информацию о складе, через который производится отгрузка. - */ -export interface Warehouse { - /** - * Элемент: Ид - * Тип (компонент): ИдентфикаторГлобальныйТип - * Обязат. (Множ.): [1] - * - * Уникальный идентификатор. - */ - id: string; - - /** - * Элемент: Наименование - * Тип (компонент): НаименованиеТип - * Обязат. (Множ.): [0..n] - * - * Наименование склада. - */ - name?: string; - - /** - * Элемент: Комментарий - * Тип (компонент): КомментарийТип - * Обязат. (Множ.): [0..1] - * - * Произвольный текст. - */ - comment?: string; - - /** - * Элемент: Адрес - * Тип (компонент): Адрес - * Обязат. (Множ.): [0..1] - * - * Фактический адрес склада. - */ - address?: Address; - - /** - * Элемент: Контакт - * Тип (компонент): КонтактнаяИнформация - * Обязат. (Множ.): [0..n] - * - * Содержит описание возможных способов связи (по телефону, электронной почте и т.д.) - */ - contactInfo?: ContactInfo[]; -} - -/** - * CommerceML 2.10. - * 1.1.84. Цена - * - * Компонент типа «Цена» описывает цены на номенклатурные позиции товара за единицу. - */ -export interface Price { - /** - * Элемент: Представление - * Тип (компонент): НаименованиеТип - * Обязат. (Множ.): [1] - * - * Представление цены так, как оно отображается в прайс-листе. - * Например: 10у.е./за 1000 шт - */ - representation: string; - - /** - * Элемент: ИдТипаЦены - * Тип (компонент): ИдентфикаторТип - * Обязат. (Множ.): [1] - * - * Идентификатор типа цены в классификаторе. - */ - priceTypeId: string; - - /** - * Элемент: ЦенаЗаЕдиницу - * Тип (компонент): ЦенаТип - * Обязат. (Множ.): [1] - * - * Цена за единицу товара. - */ - pricePerUnit: number; - - /** - * Элемент: Валюта - * Тип (компонент): ВалютаТип - * Обязат. (Множ.): [0..1] - * - * Код валюты по международному классификатору валют (ISO 4217). - * Если не указана, то используется валюта установленная для данного типа цен. - */ - currency?: string; - - // eslint-disable-next-line no-warning-comments - unitAcronym?: string; // TODO: нет в стандарте, но есть в выгрузке. - - // eslint-disable-next-line no-warning-comments - coefficient?: number; // TODO: нет в стандарте, но есть в выгрузке. - - /** - * Элемент: МинКоличество - * Тип (компонент): КоличествоТип - * Обязат. (Множ.): [0..1] - * - * Минимальное количество товара в указанных единицах, для которого действует данная цена. - */ - moq?: number; -} - -/** - * Количество товара на складе. - */ -export interface QuantityInStock { - /** - * Элемент: ИдСклада - * Тип (компонент): ИдентфикаторГлобальныйТип - * Обязат. (Множ.): [1] - * - * Идентификатор склада. - */ - warehouseId: string; - - /** - * Элемент: КоличествоНаСкладе - * Тип (компонент): КоличествоТип - * Обязат. (Множ.): [1] - * - * Количество товара на складе. - */ - quantity: number; -} - -/** - * CommerceML 2.10. - * 1.1.68. ПредложениеДляИзменений - * - * Для корректировки публикуемых предложений с целью ускорения выгрузки. - */ -export interface Offer { - /** - * Элемент: Ид - * Тип (компонент): Идентификатор80 - * Обязат. (Множ.): [0..1] - * - * Глобально уникальный идентификатор товара. - */ - id?: string; - - /** - * Элемент: Штрихкод - * Тип (компонент): ШтрихкодТип - * Обязат. (Множ.): [0..1] - * - * Штрихкод «Глобал 1». - */ - barcode?: string; - - /** - * Элемент: Артикул - * Тип (компонент): АртикулТип - * Обязат. (Множ.): [0..1] - * - * Артикул. - */ - article?: string; - - // eslint-disable-next-line no-warning-comments - name: string; // TODO: Отсутствует в докумнетации и в XSD, но есть в выгрузке. - - /** - * Элемент: ИдХарактеристики - * Тип (компонент): ИдентификаторГлобальныйТип - * Обязат. (Множ.): [0..1] - * - * Идентификатор характеристики товара. - */ - characteristicsId?: string; - - /** - * Элемент: КодЕдиницыИзмерения - * Тип (компонент): ЕдиницаТип - * Обязат. (Множ.): [0..1] - * - * Код единицы измерения товара по ОКЕИ. - */ - // eslint-disable-next-line no-warning-comments - measureUnitCode?: string; // TODO: отсутствует в выгрузке. Вместо этого есть БазоваяЕдиница. - - // eslint-disable-next-line no-warning-comments - baseMeasurementUnit: BaseMeasurementUnit; // TODO: отсутствует в документации, но есть в выгрузке. - - /** - * Элемент: Склады - * Тип (компонент): ОстаткиПоСкладам - * Обязат. (Множ.): [0..n] - * - * Идентификатор склада (из перечня складов организации) и количество на этом складе. - */ - stocks?: QuantityInStock[]; - - /** - * Элемент: Количество - * Тип (компонент): КоличествоТип - * Обязат. (Множ.): [0..1] - * - * Суммарный остаток товара на всех складах. - */ - quantity?: number; - - /** - * Элемент: Цены - * Тип (компонент): Цена - * Обязат. (Множ.): [0..n] - * - * Цена за единицу товара. - */ - prices?: Price[]; -} - -/** - * CommerceML 2.10 - * 1.1.89. Структура ЭД ПакетПредложений - * - * ПакетПредложений содержит перечень коммерческих предложений. - * Под предложением понимается описание предлагаемого товара и указание различных цен (например, "оптовая", "розничная") - * на этот товар. Предложения в пакете описываются по определенному классификатору. - */ -export interface OffersPackage { - /** - * Элемент: СодержитТолькоИзменения - * Тип (компонент): ПереключательТип - * Обязат. (Множ.): [0..1] - * - * ЭД содержит только измененные данные. - */ - changesOnly?: boolean; - - /** - * Элемент: Ид - * Тип (компонент): ИдентфикаторГлобальныйТип - * Обязат. (Множ.): [0..1] - * - * Служит для идентификации пакета коммерческих предложений. - */ - id?: string; - - /** - * Элемент: Наименование - * Тип (компонент): НаименованиеТип - * Обязат. (Множ.): [1] - * - * Наименование пакета предложений, например: "Специальные предложения по комплектующим" - */ - name: string; - - /** - * Элемент: ИдКаталога - * Тип (компонент): ИдентфикаторГлобальныйТип - * Обязат. (Множ.): [1] - * - * Служит для идентификации каталога, по которому составлены предложения. - */ - catalogId: string; - - /** - * Элемент: ИдКлассификатора - * Тип (компонент): ИдентфикаторГлобальныйТип - * Обязат. (Множ.): [0..1] - * - * Служит для идентификации классификатора, по которому составлены предложения. - */ - classifierId?: string; - - /** - * Элемент: ДействительноС - * Тип (компонент): ДатаТип - * Обязат. (Множ.): [0..1] - * - * Дата (включительно), с которой начинает действовать предложение. - */ - validFrom?: Date; - - /** - * Элемент: ДействительноДо - * Тип (компонент): ДатаТип - * Обязат. (Множ.): [0..1] - * - * Дата (включительно), с которой заканчивает действовать предложение. - */ - validUntil?: Date; - - /** - * Элемент: Описание - * Тип (компонент): КомментарийТип - * Обязат. (Множ.): [0..1] - * - * Описание пакета предложений. - */ - description?: string; - - /** - * Элемент: Владелец - * Тип (компонент): Контрагент - * Обязат. (Множ.): [1] - * - * Элемент «Владелец» служит для описания владельца пакета предложения. Определяется уникальным идентификатором. - */ - owner: Counterparty; - - /** - * Элемент: ТипыЦен - * Тип (компонент): ТипЦеныДляПакетаПредложений - * Обязат. (Множ.): [1] - * - * Содержит коллекцию типов цен, которые использованы при формировании пакета коммерческих предложений. - */ - priceTypes: PriceType[]; - - /** - * Элемент: Склады - * Тип (компонент): Склад - * Обязат. (Множ.): [0..n] - * - * Перечень складов организации, где может размещаться товар. - */ - warehouses?: Warehouse[]; - - /** - * Элемент: ЗначенияСвойства - * Тип (компонент): ЗначенияСвойства - * Обязат. (Множ.): [0..1] - * - * Значения свойств, распространяющиеся на ВСЕ предложения, входящие в пакет. - * Например: способ доставки, гарантийный срок в месяцах и т.п. - */ - propertyValues?: PropertyValue[]; - - /** - * Элемент: Предложения - * Тип (компонент): ПредложениеДляПакетаПредложений / ПредложениеДляИзменений - * Обязат. (Множ.): [1..n] - * - * Содержит информацию о товаре, ценах, общем количестве и остатках по складам. - */ - offers: Offer[]; - - /** - * Элемент: Подписанты - * Тип (компонент): Подписант - * Обязат. (Множ.): [0..1] - * - * Реквизиты лиц, подписавших прай-лист. - */ - signees?: Signee[]; -} - -/** - * CommerceML 2.10 - * 1.1.90. Структура ЭД ИзмененияПакетаПредложений - * - * Изменения публикуемых предложений - для быстрой загрузки на сайт. - */ -export interface OffersPackageChanges { - /** - * Элемент: СодержитТолькоИзменения - * Тип (компонент): ПереключательТип - * Обязат. (Множ.): [0..1] - * - * ЭД содержит только измененные данные. - */ - changesOnly: boolean; - - /** - * Элемент: ИзмененияПакетаПредложений - * Тип (компонент): ИзмененияПакетаПредложений - * Обязат. (Множ.): [1] - * - * Идентификатор каталога. - */ - // eslint-disable-next-line no-warning-comments - offersPackage: unknown; // TODO: Не понятен тип из документации. Нужно смотреть пример выгрузки. -} - -/** - * CommerceML 2.10 - * 1.1.41. ХозОперацияТип - * - * Определяет хозяйственную или торговую операцию. - */ -export enum OperationType { - ORDER_PRODUCTS = 'Заказ товара', - BILL = 'Счет на оплату', - GOODS_ISSUE = 'Отпуск товара', - INVOICE = 'Счет-фактура', - GOODS_RETURN = 'Возврат товара', - TRANSFER_GOODS_TO_COMMISSIONER = 'Передача товаров на комиссию', - RETURN_GOODS_FROM_COMMISSIONER = 'Возврат комиссионного товара', - COMMISSIONER_SELL_REPORT = 'Отчет о продажах комиссионного товара', - COMMISSIONED_GOODS_WRITE_OFF_REPORT = 'Отчет о списании комиссионного товара', - CASH_PAYOUT = 'Выплата наличных денег', - CASH_RETURN = 'Возврат наличных денег', - NON_CASH_PAYOUT = 'Выплата безналичных денег', - NON_CASH_RETURN = 'Возврат безналичных денег', - GOODS_REVALUATION = 'Переоценка товаров', - RIGHTS_TRANSFER = 'Передача прав', - OTHER = 'Прочее' -} - -/** - * CommerceML 2.10 - * 1.1.33. РольТип - * - * Определяет роль участника обмена. - */ -export enum RoleType { - SELLER = 'Продавец', - BUYER = 'Покупатель', - PAYER = 'Плательщик', - PAYEE = 'Получатель', - COMMITTENT = 'Комитент', - COMMISSIONER = 'Коммиссионер', - LICENSEE = 'Лицензиат', - LICENSOR = 'Лицензиар' -} - -/** - * CommerceML 2.10 - * 1.1.63. НалогДляДокумента - * - * Компонент «НалогДляДокумента» описывает налогкументе, его сумму и ставку. - */ -export interface TaxForDocument { - /** - * Элемент: Наименование - * Тип (компонент): НаименованиеТип - * Обязат. (Множ.): [1] - * - * Вид налога. Например, НДС. - */ - name: string; - - /** - * Элемент: УчтеноВСумме - * Тип (компонент): ПереключательТип - * Обязат. (Множ.): [0..1] - * - * По умолчанию 0 (не учтено в сумме документа, пакета предложений). - */ - includedInInSum?: boolean; - - /** - * Элемент: Акциз - * Тип (компонент): ПереключательТип - * Обязат. (Множ.): [0..1] - * - * Флаг, указывающий, что налог является акцизом. - */ - excise?: boolean; - - /** - * Элемент: Сумма - * Тип (компонент): СуммаТип - * Обязат. (Множ.): [1..1] - * - * Сумма налога определенного вида. - */ - sum: number; - - /** - * Элемент: Ставка - * Тип (компонент): ПереключательТип - * Обязат. (Множ.): [0..1] - * - * Ставка налога. - */ - rate?: number; -} - -/** - * CommerceML 2.10 - * 1.1.76. Скидка - * - * Компонент «Скидка» описывает предоставляемые скидки по товарной позиции и/или по документу в целом - * (например: скидка сезонная или скидка, зависящая от количества и т.д.). - */ -export interface Discount { - /** - * Элемент: Наименование - * Тип (компонент): НаименованиеТип - * Обязат. (Множ.): [1] - * - * Название скидки. - */ - name: string; - - /** - * Элемент: Сумма - * Тип (компонент): СуммаТип - * Обязат. (Множ.): [1] - * - * Сумма скидки. - */ - sum: number; - - /** - * Элемент: Процент - * Тип (компонент): ПроцентТип - * Обязат. (Множ.): [0..1] - * - * Процент скидки (наценки). - */ - percent?: number; - - /** - * Элемент: УчтеноВСумме - * Тип (компонент): ПереключательТип - * Обязат. (Множ.): [0..1] - * - * По умолчанию 0 – (не учтено). - */ - includedInSum: boolean; - - /** - * Элемент: Комментарий - * Тип (компонент): КомментарийТип - * Обязат. (Множ.): [0..1] - * - * Произвольный текст. - */ - comment?: string; -} - -/** - * CommerceML 2.10 - * 1.1.51. ДопРасход - * - * Компонентами «ДопРасход» описывается дополнительный расход по товарной позиции и/или по документу в целом - * (например, транспортировка, тара и т.п.). - */ -export interface ExtraExpense { - /** - * Элемент: Наименование - * Тип (компонент): НаименованиеТип - * Обязат. (Множ.): [1] - * - * Наименование, например доставка. - */ - name: string; - - /** - * Элемент: Сумма - * Тип (компонент): СуммаТип - * Обязат. (Множ.): [1] - * - * Указывается сумма дополнительного расхода. - */ - sum: number; - - /** - * Элемент: Процент - * Тип (компонент): ПроцентТип - * Обязат. (Множ.): [0..1] - * - * Процент - */ - percent?: number; - - /** - * Элемент: УчтеноВСумме - * Тип (компонент): ПереключательТип - * Обязат. (Множ.): [0..1] - * - * По умолчанию 0 (не учтено). - */ - includedInSum?: boolean; - - /** - * Элемент: Комментарий - * Тип (компонент): КомментарийТип - * Обязат. (Множ.): [0..1] - * - * Произвольный текст. - */ - comment?: string; -} - -/** - * CommerceML 2.10 - * 1.1.67. ПодчиненныйДокумент - * - * Для выгрузки дополнительных документов сопровождающих хозоперацию и созданных на основании основного документа, - * например, вместе с заказом покупателя введенные на его основании документы оплаты и отгрузки. - */ -export interface ChildDocument { - /** - * Элемент: Ид - * Тип (компонент): ИдентфикаторГлобальныйТип - * Обязат. (Множ.): [1] - * - * Идентификатор документа уникальный в рамках файла обмена. - */ - id: string; - - /** - * Элемент: Номер - * Тип (компонент): НомерТип - * Обязат. (Множ.): [1] - * - * Номер документа. - */ - number: string; - - /** - * Элемент: Дата - * Тип (компонент): ДатаТип - * Обязат. (Множ.): [1] - * - * Дата документа. - */ - date: Date; - - /** - * Элемент: ХозОперация - * Тип (компонент): ХозОперацияТип - * Обязат. (Множ.): [1] - * - * Вид хозяйственной операции - */ - operation: OperationType; - - /** - * Элемент: Роль - * Тип (компонент): РольТип - * Обязат. (Множ.): [0..1] - * - * Роль предприятия в документе (Плательщик, Получатель, Продавец, Покупатель, комитент, Комиссионер, Лицензиат, - * Лицензиар) - */ - role?: RoleType; - - /** - * Элемент: Валюта - * Тип (компонент): ВалютаТип - * Обязат. (Множ.): [0..1] - * - * Код валюты по международному классификатору валют (ISO 4217). - */ - currency?: string; - - /** - * Элемент: Курс - * Тип (компонент): КоэффициентТип - * Обязат. (Множ.): [0..1] - * - * Курс указанной валюты по отношению к национальной валюте. Для национальной валюты курс равен 1. - */ - currencyConversionRate?: number; - - /** - * Элемент: Сумма - * Тип (компонент): СуммаТип - * Обязат. (Множ.): [0..1] - * - * Общая сумма по документу. Налоги, скидки и дополнительные расходы включаются в данную сумму в зависимости от - * установок "УчтеноВСумме". - */ - sum?: number; - - /** - * Элемент: Время - * Тип (компонент): ВремяТип - * Обязат. (Множ.): [0..1] - * - * Время документа. - */ - time?: Date; - - /** - * Элемент: СрокПлатежа - * Тип (компонент): ДатаТип - * Обязат. (Множ.): [0..1] - * - * Срок платежа. - */ - paymentTerm?: Date; - - /** - * Элемент: Комментарий - * Тип (компонент): КомментарийТип - * Обязат. (Множ.): [0..1] - * - * Комментарий. - */ - comment?: string; - - /** - * Элемент: Контрагенты - * Тип (компонент): КонтрагентДляДокумента - * Обязат. (Множ.): [1..n] - * - * Контрагенты с указанием роли в документе, контактной информации и адреса склада. - */ - counterparties: Counterparty[]; - - /** - * Элемент: Налоги - * Тип (компонент): НалогДляДокумента - * Обязат. (Множ.): [0..n] - * - * Вид, ставка и сумма налога. - */ - taxes?: TaxForDocument[]; - - /** - * Элемент: Скидки - * Тип (компонент): Скидка - * Обязат. (Множ.): [0..n] - * - * Скидка, сумма, проценты. - */ - discounts?: Discount[]; - - /** - * Элемент: ДопРасходы - * Тип (компонент): ДопРасход - * Обязат. (Множ.): [0..n] - * - * Дополнительный расход, сумма, проценты. - */ - extraExpenses?: ExtraExpense[]; - - /** - * Элемент: Склады - * Тип (компонент): Склад - * Обязат. (Множ.): [0..n] - * - * Склад в документе. В зависимости от Роли составителя документа, на склад осуществляется доставка или со склада - * производится отгрузка. - */ - warehouses?: Warehouse[]; - - /** - * Элемент: Товары - * Тип (компонент): ТоварДляДокумента - * Обязат. (Множ.): [0..n] - * - * Определяет информацию о товарной позиции (строке документа) в объеме, необходимом для оформления (и передачи) - * документов. - */ - products?: unknown[]; - - /** - * Элемент: ЗначенияРеквизитов - * Тип (компонент): ЗначениеРеквизита - * Обязат. (Множ.): [0..n] - * - * Описывает дополнительные значения реквизитов документа. - */ - requisiteValues?: RequisiteValue[]; - - /** - * Элемент: Подписанты - * Тип (компонент): Подписант - * Обязат. (Множ.): [0..n] - * - * Реквизиты лиц, подписавших документ. - */ - signees?: Signee[]; -} - -/** - * CommerceML 2.10 - * 1.1.86. Структура ЭД Документ. - * - * Содержит информацию в объеме, необходимом для составления документа, сопровождающего торговую (хозяйственную) - * операцию. Определяет набор свойств документа. Содержит списки позиций документа (состав), список дополнительных - * (накладных) расходов, суммы налогов, значения дополнительных свойств документа и т.д. - * Последовательность элементов в определяется XSD-схемой стандарта - */ -export interface Document { - /** - * Элемент: Ид - * Тип (компонент): ИдентфикаторГлобальныйТип - * Обязат. (Множ.): [1] - * - * Идентификатор документа уникальный в рамках файла обмена. - */ - id: string; - - /** - * Элемент: Номер - * Тип (компонент): НомерТип - * Обязат. (Множ.): [1] - * - * Номер документа. - */ - number: string; - - /** - * Элемент: Дата - * Тип (компонент): ДатаТип - * Обязат. (Множ.): [1] - * - * Дата документа - */ - date: Date; - - /** - * Элемент: ХозОперация - * Тип (компонент): ХозОперацияТип - * Обязат. (Множ.): [1] - * - * Вид хозяйственной операции. - */ - operation: OperationType; - - /** - * Элемент: Роль - * Тип (компонент): РольТип - * Обязат. (Множ.): [1] - * - * Роль предприятия в документе (Плательщик, Получатель, Продавец, Покупатель, комитент, Комиссионер, Лицензиат, - * Лицензиар). - */ - role: RoleType; - - /** - * Элемент: Валюта - * Тип (компонент): ВалютаТип - * Обязат. (Множ.): [1] - * - * Код валюты по международному классификатору валют (ISO 4217) - */ - currency: string; - - /** - * Элемент: Курс - * Тип (компонент): КоэффициентТип - * Обязат. (Множ.): [0..1] - * - * Курс указанной валюты по отношению к национальной валюте. Для национальной валюты курс равен 1. - */ - currencyConversionRate?: number; - - /** - * Элемент: Сумма - * Тип (компонент): СуммаТип - * Обязат. (Множ.): [0..1] - * - * Общая сумма по документу. Налоги, скидки и дополнительные расходы включаются в данную сумму в зависимости от - * установок "УчтеноВСумме" - */ - sum?: number; - - /** - * Элемент: Контрагенты - * Тип (компонент): КонтрагентДляДокумента - * Обязат. (Множ.): [1..n] - * - * Контрагенты с указанием роли в документе, контактной информации и адреса склада. - */ - // eslint-disable-next-line no-warning-comments - counterparties: unknown[]; // TODO: отсутствует тип в документации. Нужен пример. - - /** - * Элемент: Время - * Тип (компонент): ВремяТип - * Обязат. (Множ.): [0..1] - * - * Время документа. - */ - time?: Date; - - /** - * Элемент: СрокПлатежа - * Тип (компонент): ДатаТип - * Обязат. (Множ.): [0..1] - * - * Срок платежа. - */ - paymentTerm?: Date; - - /** - * Элемент: Комментарий - * Тип (компонент): КомментарийТип - * Обязат. (Множ.): [0..1] - * - * Комментарий. - */ - comment?: string; - - /** - * Элемент: Налоги - * Тип (компонент): НалогДляДокумента - * Обязат. (Множ.): [0..n] - * - * Вид, ставка и сумма налога. - */ - taxes?: TaxForDocument[]; - - /** - * Элемент: Скидки - * Тип (компонент): Скидка - * Обязат. (Множ.): [0..n] - * - * Скидка, сумма, проценты. - */ - discounts?: Discount[]; - - /** - * Элемент: ДопРасходы - * Тип (компонент): ДопРасход - * Обязат. (Множ.): [0..n] - * - * Дополнительный расход, сумма, проценты. - */ - extraExpenses?: ExtraExpense[]; - - /** - * Элемент: Склады - * Тип (компонент): Склад - * Обязат. (Множ.): [0..n] - * - * Склад в документе. В зависимости от Роли составителя документа, на склад осуществляется доставка или со склада - * производится отгрузка. - */ - warehouses?: Warehouse[]; - - /** - * Элемент: Товары - * Тип (компонент): ТоварДляДокумента - * Обязат. (Множ.): [0..n] - * - * Определяет информацию о товарной позиции (строке документа) в объеме, необходимом для оформления (и передачи) - * документов. - */ - // eslint-disable-next-line no-warning-comments - products?: unknown[]; // TODO: Нет описания типа ТоварДляДокумента в документации. Нужен пример. - - /** - * Элемент: ЗначенияРеквизитов - * Тип (компонент): ЗначениеРеквизита - * Обязат. (Множ.): [0..n] - * - * Описывает дополнительные значения реквизитов документа. - */ - requisiteValue?: RequisiteValue[]; - - /** - * Элемент: Подписанты - * Тип (компонент): Подписант - * Обязат. (Множ.): [0..n] - * - * Реквизиты лиц, подписавших документ. - */ - signees?: Signee[]; - - /** - * Элемент: ПодчиненныеДокументы - * Тип (компонент): ПодчиненныйДокумент - * Обязат. (Множ.): [0..n] - * - * Для выгрузки дополнительных документов сопровождающих хозоперацию и созданных на основании основного документа, - * например, вместе с заказом покупателя введенные на его основании документы оплаты и отгрузки. - */ - childDocuments?: ChildDocument; -} - -/** - * CommerceML 2.10. - * 1.1.85. Структура ЭД КоммерческаяИнформация - * - * Пакет ЭД КоммерческаяИнформация может содержать ЭД Классификатор и один из ЭД: Каталог, ПакетПредложений или Документ. - */ -export interface CommercialInformation { - /** - * Элемент: ВерсияСхемы - * Тип (компонент): Строка - * Обязат. (Множ.): [1] - * - * Версия схемы CommerceML. - */ - schemaVersion: string; - - /** - * Элемент: ДатаФормирования - * Тип (компонент): ДатаВремяТип - * Обязат. (Множ.): [1] - * - * Дата формирования ЭД - */ - creationTimestamp: Date; - - /** - * Элемент: Классификатор - * Тип (компонент): Классификатор - * Обязат. (Множ.): [0..1] - * - * Классификатор (рубрикатор) - */ - classifier?: Classifier; - - /** - * Элемент: Каталог - * Тип (компонент): Каталог - * Обязат. (Множ.): [0..1] - * - * Каталог с описанием товаров/услуг. - */ - catalog?: Catalog; - - /** - * Элемент: ПакетПредложений - * Тип (компонент): ПакетПредложений - * Обязат. (Множ.): [0..1] - * - * Коммерческие предложения (прайс-лист). - */ - offersPackage?: OffersPackage; - - /** - * Элемент: Документ - * Тип (компонент): Документ - * Обязат. (Множ.): [0..1] - * - * Документ, сопровождающий хозяйственную (торговую) операцию. - */ - document?: Document; - - /** - * Элемент: ИзмененияПакетаПредложений - * Тип (компонент): ИзмененияПакетаПредложений - * Обязат. (Множ.): [0..1] - * - * Изменения публикуемых предложений - для быстрой загрузки на сайт - */ - offersPackageChanges?: OffersPackageChanges; -}