├── .editorconfig
├── .gitignore
├── .gitlab-ci.yml
├── FairMark.Docs
├── 4_5_1_CreateOrderSignedResponse.txt
├── 4_5_1_CreateOrderUnsignedResponse.txt
├── 4_5_8_GetOrderSummariesResponse.txt
├── DocumentFormats.md
├── Errors
│ ├── getTokenFromSuzTimedOut.txt
│ └── pingBadRequest.txt
├── FairMarkGlitchyLogo.gif
├── FairMarkGlitchyLogo.png
├── FairMarkGlitchyLogo.webp
├── OmsID_blue_OmsConnectionID_green.png
├── TestCertificates.md
├── XsdSchema.png
├── edo_methods.txt
├── oms_methods.txt
└── true_methods.txt
├── FairMark.Tests
├── App.config
├── AuthentificationTests.cs
├── EdoLiteClientTests.Chapter3.cs
├── FairMark.Tests.csproj
├── GostCryptoHelpersTests.cs
├── OmsClientTests.Chapter4.cs
├── Properties
│ ├── Resources.Designer.cs
│ └── Resources.resx
├── Resources
│ ├── EdoLite_Chapter_3_1_SampleUpd.xml
│ ├── ON_KORSCHFDOPPR_2LT-600003352_2LT-600006439_20210426_a4941fa7-9a53-4991-aa02-f1606b71142c.xml
│ ├── ON_KORSCHFDOPPR_2LT-600006439_2LT-600003352_20210426_68426923-d1e2-4582-93f2-f690912d5161.xml
│ ├── ON_NSCHFDOPPR_2LT-600003352_2LT-600006439_20210426_00c4d099-a48f-47ed-8608-54d32890fe73.УПДи.xml
│ ├── ON_NSCHFDOPPR_2LT-600003352_2LT-600006439_20210426_afb6cce6-6cb9-4147-bc2f-689be4fd2198.xml
│ ├── ON_NSCHFDOPPR_2LT-600006439_2LT-600003352_20210426_0dc17582-d11d-4a4d-8e25-816d59870ef4.xml
│ └── ON_NSCHFDOPPR_2LT-600006439_2LT-600003352_20210426_a5011718-844e-4bba-b15c-a1c15e49a691.УПДи.xml
├── SerializationTests.cs
├── TrueApiClientTests.Chapter3.cs
├── TrueApiClientTests.Chapter6.cs
└── UnitTestsBase.cs
├── FairMark
├── CommonApiClient.Tracing.cs
├── CommonApiClient.cs
├── CommonCredentials.cs
├── CredentialsAuthenticator.cs
├── DataContracts
│ ├── ApiFieldError.cs
│ ├── ApiGlobalError.cs
│ ├── AuthResponse.cs
│ ├── AuthToken.cs
│ ├── CustomDate.cs
│ ├── CustomDateTime.cs
│ ├── CustomDateTimeSpace.cs
│ └── ErrorResponse.cs
├── EdoLite
│ ├── DataContracts
│ │ ├── DocumentAgent.cs
│ │ ├── DocumentGroup.cs
│ │ ├── DocumentInfo.cs
│ │ ├── DocumentListFilter.cs
│ │ ├── GetDocumentsResponse.cs
│ │ └── ResID.cs
│ ├── EdoLiteClient.Chapter3.cs
│ ├── EdoLiteClient.cs
│ └── EdoLiteCredentials.cs
├── FairMark.csproj
├── FairMarkException.cs
├── OmsApi
│ ├── DataContracts
│ │ ├── 11_3_4_ProductGroups.cs
│ │ ├── 4_5_10_2_ReportStatusDto.cs
│ │ ├── 4_5_13_1_AppVersion.cs
│ │ ├── 4_5_14_3_BlockDto.cs
│ │ ├── 4_5_14_3_BlocksDto.cs
│ │ ├── 4_5_16_3_ReceiptDto.cs
│ │ ├── 4_5_16_3_ReceiptsDto.cs
│ │ ├── 4_5_17_ProviderInfo.cs
│ │ ├── 4_5_17_ProvidersDto.cs
│ │ ├── 4_5_1_1_0_Order.cs
│ │ ├── 4_5_1_1_0_OrderProduct.cs
│ │ ├── 4_5_1_1_10_Order_Wheelchairs.cs
│ │ ├── 4_5_1_1_11_OrderProduct_Otp.cs
│ │ ├── 4_5_1_1_11_Order_Otp.cs
│ │ ├── 4_5_1_1_12_Order_Water.cs
│ │ ├── 4_5_1_1_13_OrderProduct_Beer.cs
│ │ ├── 4_5_1_1_13_Order_Beer.cs
│ │ ├── 4_5_1_1_14_Order_Ncp.cs
│ │ ├── 4_5_1_1_1_OrderProduct_Tobacco.cs
│ │ ├── 4_5_1_1_1_Order_Tobacco.cs
│ │ ├── 4_5_1_1_2_OrderProduct_Lp.cs
│ │ ├── 4_5_1_1_2_Order_Lp.cs
│ │ ├── 4_5_1_1_3_OrderProduct_Shoes.cs
│ │ ├── 4_5_1_1_3_Order_Shoes.cs
│ │ ├── 4_5_1_1_4_OrderProduct_Tires.cs
│ │ ├── 4_5_1_1_4_Order_Tires.cs
│ │ ├── 4_5_1_1_5_OrderProduct_Perfum.cs
│ │ ├── 4_5_1_1_5_Order_Perfum.cs
│ │ ├── 4_5_1_1_6_OrderProduct_Photo.cs
│ │ ├── 4_5_1_1_6_Order_Photo.cs
│ │ ├── 4_5_1_1_7_Order_Pharma.cs
│ │ ├── 4_5_1_1_8_OrderProduct_Milk.cs
│ │ ├── 4_5_1_1_8_Order_Milk.cs
│ │ ├── 4_5_1_1_9_Order_Bicycle.cs
│ │ ├── 4_5_1_2_OrderResponse.cs
│ │ ├── 4_5_2_1_0_DropoutReport.cs
│ │ ├── 4_5_2_1_1_DropoutReport_Tobacco.cs
│ │ ├── 4_5_2_1_2_DropoutReport_Ncp.cs
│ │ ├── 4_5_3+4_5_9_AggregationUnit.cs
│ │ ├── 4_5_3_AggregationReport.cs
│ │ ├── 4_5_4_1_0_UtilisationReport.cs
│ │ ├── 4_5_4_1_1_UtilisationReport_Tobacco.cs
│ │ ├── 4_5_4_1_2_UtilisationReport_Pharma.cs
│ │ ├── 4_5_4_1_3_UtilisationReport_Milk.cs
│ │ ├── 4_5_4_1_4_UtilisationReport_Otp.cs
│ │ ├── 4_5_4_1_5_UtilisationReport_Water.cs
│ │ ├── 4_5_4_1_6_UtilisationReport_Ncp.cs
│ │ ├── 4_5_6_2_CodesDto.cs
│ │ ├── 4_5_7_2_BufferInfo.cs
│ │ ├── 4_5_7_2_PoolInfo.cs
│ │ ├── 4_5_8_OrderSummaries.cs
│ │ ├── 4_5_8_OrderSummaryInfo.cs
│ │ ├── 4_5_9_2_ProductInfo.cs
│ │ ├── 4_5_9_AggregationInfo.cs
│ │ ├── 4_5_x_EmptyResult.cs
│ │ ├── 4_5_x_ReportResult.cs
│ │ ├── 5_3_1_10_OrderStatuses.cs
│ │ ├── 5_3_1_11_DropoutReasons.cs
│ │ ├── 5_3_1_12_CisTypes.cs
│ │ ├── 5_3_1_13_Countries.cs
│ │ ├── 5_3_1_1_ReleaseMethodTypes.cs
│ │ ├── 5_3_1_2_SerialNumberTypes.cs
│ │ ├── 5_3_1_3_CreateMethodTypes.cs
│ │ ├── 5_3_1_4_Templates.cs
│ │ ├── 5_3_1_5_PoolStatuses.cs
│ │ ├── 5_3_1_6_AggregationTypes.cs
│ │ ├── 5_3_1_7_BufferStatuses.cs
│ │ ├── 5_3_1_8_ReportStatuses.cs
│ │ ├── 5_3_1_9_UsageType.cs
│ │ └── DataContracts.cs
│ ├── OmsApiClient.Chapter4.cs
│ ├── OmsApiClient.cs
│ └── OmsCredentials.cs
├── Properties
│ └── AssemblyInfo.cs
├── Toolbox
│ ├── GostCryptoHelpers.cs
│ ├── HashUtilities.cs
│ ├── HtmlHelper.cs
│ ├── JsonFormatter.cs
│ ├── ServiceStackSerializer.cs
│ └── StringExtensions.cs
├── TrueApi
│ ├── DataContracts
│ │ ├── 3_1_1_BankDetails.cs
│ │ ├── 3_1_1_EdoOperator.cs
│ │ ├── 3_1_1_Organization.cs
│ │ ├── 3_1_1_ProductDocument.cs
│ │ ├── 3_1_1_ProductGroup.cs
│ │ ├── 3_1_1_Registration.cs
│ │ ├── 3_1_1_RegistrationResponse.cs
│ │ ├── 3_1_1_User.cs
│ │ ├── 3_1_2_RegistrationStatusError.cs
│ │ ├── 3_1_2_RegistrationStatusResponse.cs
│ │ ├── 3_4_Balance.cs
│ │ ├── 4_1_UniformDocument.cs
│ │ ├── 4_2_1_1_AggregationDocument.cs
│ │ ├── 4_2_1_1_AggregationUnit.cs
│ │ ├── 4_2_1_3_DisaggregationUnit.cs
│ │ ├── 4_2_2_3_DisaggregationDocument.cs
│ │ ├── 4_2_5_1_IntroduceGoodsDocumentRF.cs
│ │ ├── 4_2_5_1_IntroduceGoodsProduct.cs
│ │ ├── 5_4_1_GetProductsInfoResponse.cs
│ │ ├── 5_4_2_GetParticipantGtinsReponse.cs
│ │ ├── 6_4_UnifiedDocumentInfo.cs
│ │ ├── DocumentStatuses.cs
│ │ └── ProductGroupsTrueApi.cs
│ ├── TrueApiClient.Chapter3.cs
│ ├── TrueApiClient.Chapter4.cs
│ ├── TrueApiClient.Chapter5.cs
│ ├── TrueApiClient.Chapter6.cs
│ ├── TrueApiClient.cs
│ └── TrueApiCredentials.cs
└── Xsd
│ ├── ON_NSCHFDOPPOK
│ ├── СвИПТип.cs
│ ├── СвФЛТип.cs
│ ├── ФИОТип.cs
│ ├── Файл.cs
│ ├── ФайлИнфПок.cs
│ ├── ФайлИнфПокИдИнфПрод.cs
│ ├── ФайлИнфПокИнфПокГосЗакКазн.cs
│ ├── ФайлИнфПокИнфПокГосЗакКазнИнфСведДенОбяз.cs
│ ├── ФайлИнфПокКНД.cs
│ ├── ФайлИнфПокПодписант.cs
│ ├── ФайлИнфПокПодписантЮЛ.cs
│ ├── ФайлИнфПокСодФХЖ4.cs
│ ├── ФайлИнфПокСодФХЖ4ИнфПолФХЖ4.cs
│ ├── ФайлИнфПокСодФХЖ4ИнфПолФХЖ4ТекстИнф.cs
│ ├── ФайлИнфПокСодФХЖ4СвПрин.cs
│ ├── ФайлИнфПокСодФХЖ4СвПринКодСодОпер.cs
│ ├── ФайлИнфПокСодФХЖ4СвПринСвЛицПрин.cs
│ ├── ФайлИнфПокСодФХЖ4СвПринСвЛицПринИнЛицо.cs
│ ├── ФайлИнфПокСодФХЖ4СвПринСвЛицПринИнЛицоПредОргПрин.cs
│ ├── ФайлИнфПокСодФХЖ4СвПринСвЛицПринИнЛицоФЛПрин.cs
│ ├── ФайлИнфПокСодФХЖ4СвПринСвЛицПринРабОргПок.cs
│ ├── ФайлСвУчДокОбор.cs
│ └── ФайлСвУчДокОборСвОЭДОтпр.cs
│ └── ON_NSCHFDOPPR
│ ├── АдрИнфТип.cs
│ ├── АдрРФТип.cs
│ ├── АдресТип.cs
│ ├── КонтактТип.cs
│ ├── ОснованиеТип.cs
│ ├── СвИПТип.cs
│ ├── СвФЛТип.cs
│ ├── СумАкцизТип.cs
│ ├── СумНДСТип.cs
│ ├── ТекстИнфТип.cs
│ ├── УчастникТип.cs
│ ├── УчастникТипБанкРекв.cs
│ ├── УчастникТипБанкРеквСвБанк.cs
│ ├── УчастникТипИдСв.cs
│ ├── УчастникТипИдСвСвИнНеУч.cs
│ ├── УчастникТипИдСвСвЮЛУч.cs
│ ├── ФИОТип.cs
│ ├── Файл.cs
│ ├── ФайлДокумент.cs
│ ├── ФайлДокументКНД.cs
│ ├── ФайлДокументПодписант.cs
│ ├── ФайлДокументПодписантЮЛ.cs
│ ├── ФайлДокументСвПродПер.cs
│ ├── ФайлДокументСвПродПерИнфПолФХЖ3.cs
│ ├── ФайлДокументСвПродПерСвПер.cs
│ ├── ФайлДокументСвПродПерСвПерСвЛицПер.cs
│ ├── ФайлДокументСвПродПерСвПерСвЛицПерИнЛицо.cs
│ ├── ФайлДокументСвПродПерСвПерСвЛицПерИнЛицоПредОргПер.cs
│ ├── ФайлДокументСвПродПерСвПерСвЛицПерИнЛицоФЛПер.cs
│ ├── ФайлДокументСвПродПерСвПерСвЛицПерРабОргПрод.cs
│ ├── ФайлДокументСвПродПерСвПерСвПерВещи.cs
│ ├── ФайлДокументСвПродПерСвПерТранГруз.cs
│ ├── ФайлДокументСвПродПерСвПерТранГрузТранНакл.cs
│ ├── ФайлДокументСвСчФакт.cs
│ ├── ФайлДокументСвСчФактГрузОт.cs
│ ├── ФайлДокументСвСчФактДокПодтвОтгр.cs
│ ├── ФайлДокументСвСчФактДопСвФХЖ1.cs
│ ├── ФайлДокументСвСчФактДопСвФХЖ1ИнфПродГосЗакКазн.cs
│ ├── ФайлДокументСвСчФактИнфПолФХЖ1.cs
│ ├── ФайлДокументСвСчФактИспрСчФ.cs
│ ├── ФайлДокументСвСчФактСвПРД.cs
│ ├── ФайлДокументТаблСчФакт.cs
│ ├── ФайлДокументТаблСчФактВсегоОпл.cs
│ ├── ФайлДокументТаблСчФактСведТов.cs
│ ├── ФайлДокументТаблСчФактСведТовДопСведТов.cs
│ ├── ФайлДокументТаблСчФактСведТовДопСведТовНомСредИдентТов.cs
│ ├── ФайлДокументТаблСчФактСведТовДопСведТовСведПрослеж.cs
│ ├── ФайлДокументТаблСчФактСведТовСвТД.cs
│ ├── ФайлСвУчДокОбор.cs
│ └── ФайлСвУчДокОборСвОЭДОтпр.cs
├── FairMarkClient.sln
├── LICENSE
├── README.md
├── Schemas
└── UniversalTransferDocumentXsd
│ ├── ON_NSCHFDOPPOK_1_997_02_05_01_01.xsd
│ ├── ON_NSCHFDOPPR_1_997_01_05_01_01.xsd
│ └── generate.bat
├── Scripts
├── Coverage.ps1
└── TestReportPrefix.ps1
├── SwaggerTest
├── App.xaml
├── App.xaml.cs
├── AssemblyInfo.cs
├── MainWindow.xaml
├── MainWindow.xaml.cs
└── SwaggerTest.csproj
└── TestApp
├── App.xaml
├── App.xaml.cs
├── AssemblyInfo.cs
├── MainWindow.xaml
├── MainWindow.xaml.cs
└── TestApp.csproj
/.editorconfig:
--------------------------------------------------------------------------------
1 | # EditorConfig: http://EditorConfig.org
2 | # VS extension: https://visualstudiogallery.msdn.microsoft.com/c8bccfe2-650c-4b42-bc5c-845e21f96328
3 |
4 | # tab indentation
5 | [*.cs]
6 | indent_style = space
7 | indent_size = 4
8 |
--------------------------------------------------------------------------------
/.gitlab-ci.yml:
--------------------------------------------------------------------------------
1 | variables:
2 | GIT_CLEAN_FLAGS: none # disable git clean on every stage
3 | CODECOV_TOKEN: "c01ca799-5c1f-4647-9743-7d6e8b3fb0f8"
4 |
5 | stages:
6 | - build
7 | - unit tests
8 |
9 | build:
10 | stage: build
11 | before_script:
12 | - git clean -ffdx -e $MIRROR_DIR/
13 | script:
14 | - dotnet build FairMark
15 | - dotnet build FairMark.Tests
16 | - dotnet pack FairMark
17 | artifacts:
18 | paths:
19 | - FairMark\bin\Debug\*.nupkg
20 |
21 | unit_tests:
22 | stage: unit tests
23 | before_script:
24 | - echo "Normal build -- running unit tests with coverage..."
25 | - chcp 65001
26 | # uncomment to install the required tools --
27 | # dotnet tool install -g trx2junit
28 | # choco install opencover.portable
29 | # choco install codecov
30 | script:
31 | # original test command line --
32 | # dotnet test --logger "trx;LogFileName=TestResults.trx"
33 | # don't use -returntargetcode for now
34 | # 'OpenCover.Console.exe -register:administrator -target:dotnet.exe -targetargs:"test --logger=trx;LogFileName=TestResults.trx" -filter:"+[*]* -[*Test*]*" -output:MdlpCoverage.xml'
35 | # codecov -f "MdlpCoverage.xml"
36 | - Scripts\Coverage.ps1
37 | - TrxerConsole.exe FairMark.Tests\TestResults\TestResults.trx
38 | - copy "FairMark.Tests\TestResults\TestResults.trx.html" "$ULTIMA_REPORT_UPLOAD_PATH\FairMark.html"
39 | artifacts:
40 | paths:
41 | - FairMark.Tests\TestResults\TestResults.trx
42 | - FairMark.Tests\TestResults\TestResults.xml
43 | reports:
44 | junit:
45 | - FairMark.Tests\TestResults\TestResults.xml
46 | expire_in: 1 day
47 |
--------------------------------------------------------------------------------
/FairMark.Docs/4_5_1_CreateOrderUnsignedResponse.txt:
--------------------------------------------------------------------------------
1 | // CreateOrder
2 | -> POST https://intuot.crpt.ru:12011/api/v2/milk/orders?omsId=67ad4640-48f4-4eca-886b-517462cf0415
3 | headers: {
4 | X-ApiMethodName = CreateOrder
5 | clientToken = 63810c34-9d72-4f56-9c17-253c1e53b84d
6 | Accept = application/json, text/json, text/x-json, text/javascript, application/xml, text/xml
7 | Content-type = application/json
8 | }
9 | body: {
10 | "contactPerson": "Говоров К.А.",
11 | "releaseMethodType": "PRODUCTION",
12 | "createMethodType": "CM",
13 | "productionOrderId": "efa002c4-aaf1-4862-93c8-823b7e7468ad",
14 | "products": [
15 | {
16 | "gtin": "04635785586010",
17 | "quantity": 5,
18 | "serialNumberType": "SELF_MADE",
19 | "serialNumbers": [
20 | "asdf7",
21 | "asdf8",
22 | "asdf9",
23 | "asdfa",
24 | "asdfb"
25 | ],
26 | "templateId": 20,
27 | "stickerId": "19"
28 | }
29 | ],
30 | "serviceProviderId": "156893d9-42d9-4753-9a19-bdbf182c7851"
31 | }
32 |
33 | <- OK 200 (OK) https://intuot.crpt.ru:12011/api/v2/milk/orders?omsId=67ad4640-48f4-4eca-886b-517462cf0415
34 | timings: {
35 | started: 2021-04-14 00:24:19
36 | elapsed: 0:00:06.844
37 | }
38 | headers: {
39 | Pragma = no-cache
40 | X-Content-Type-Options = nosniff
41 | X-Frame-Options = DENY
42 | X-Xss-Protection = 1; mode=block
43 | Content-Length = 132
44 | Cache-Control = no-cache, no-store, max-age=0, must-revalidate
45 | Content-Type = application/json; charset=UTF-8
46 | Date = Tue, 13 Apr 2021 21:24:26 GMT
47 | Expires = 0
48 | Set-Cookie = targetsrv=http://10.0.25.4:8811; Path=/
49 | }
50 | body: {
51 | "omsId": "67ad4640-48f4-4eca-886b-517462cf0415",
52 | "orderId": "9d420e24-38ea-401c-bf5b-4947bf25384b",
53 | "expectedCompleteTimestamp": 120000
54 | }
55 |
56 | Order placed: 9d420e24-38ea-401c-bf5b-4947bf25384b
57 | Expected to be ready in: 120000
58 | NUnit Adapter 3.16.1.0: Test execution complete
--------------------------------------------------------------------------------
/FairMark.Docs/DocumentFormats.md:
--------------------------------------------------------------------------------
1 | # Форматы документов
2 |
3 | УПД и УКД — стандартные XML форматы для электронного документооборота.
4 | Для создания документов в этих форматах на C# используются классы,
5 | сгенерированные на базе XSD-схем утилитой XmlSchemaClassGenerator:
6 |
7 | * https://www.nuget.org/packages/XmlSchemaClassGenerator.Console/
8 | * https://www.nuget.org/packages/dotnet-xscgen (то же самое, но оформлено в виде dotnet tool)
9 |
10 | Последовательность действий при выходе новых версий XSD-схем этих форматов такая:
11 |
12 | 1. Скачивается XSD-схема (ссылки см. ниже)
13 | 2. Устанавливается генератор: dotnet tool install -g dotnet-xscgen
14 | 2. Генерируются классы в нужном namespace: xscgen upd.xsd -n ""=FairMark.Xsd.ON_NSCHFDOPPOK -sf
15 | 3. Копируются в проект FairMarkClient.
16 |
17 | После этого можно создавать документы и сериализовывать их в XML обычным XmlSerializer-ом.
18 | К сожалению, в XSD-схеме все названия русскоязычные, типа ФайлИнфПокИнфПокГосЗакКазнИнфСведДенОбяз.
19 |
20 | Для документа УПД есть два варианта, две XSD-схемы: информация покупателя и информация продавца.
21 | Структуры в них местами пересекаются, местами почти совпадают, но не идентичны на 100%.
22 | Из-за этого сгенерированные классы пришлось положить в два отдельных пространства имен:
23 |
24 | * FairMark.Xsd.ON_NSCHFDOPPOK -- информация покупателя
25 | * FairMark.Xsd.ON_NSCHFDOPP -- информация продавца
26 |
27 | Корневой элемент, с которого начинается заполнение УПД, в обоих случаях -- Файл.
28 | То, что в нем заполняется дальше, зависит от типа документа (например, счет-фактура):
29 |
30 | [](https://www.diadoc.ru/docs/forms/upd/structure/8)
31 |
32 | ## Общее описание
33 |
34 | * Неформальное описание УПД, УКД и др., примеры: https://sbis.ru/help/edo/primary/formats_doc
35 | * Примеры готовых XML-документов: https://bi-cons.ru/xml/materials/vat-invoice-xml-xsd.html
36 | * УПД и УКД. Найдите отличия: https://www.buhgalteria.ru/article/upd-i-ukd-naydite-otlichiya
37 |
38 | ## Универсальный передаточный документ (УПД)
39 |
40 | * Неформальное описание: https://www.diadoc.ru/docs/upd
41 | * Диаграммы и XSD-схемы: https://api-docs.diadoc.ru/ru/latest/docflows/UtdDocflow.html
42 | * Тоже XSD-схемы: https://www.diadoc.ru/docs/forms/upd/structure/8
43 |
44 | ## Универсальный корректировочный документ (УКД)
45 |
46 | * Пока не нашел
--------------------------------------------------------------------------------
/FairMark.Docs/FairMarkGlitchyLogo.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FairMark/FairMarkClient/c564b226c8696f8016d7e0ca8866f516968b2736/FairMark.Docs/FairMarkGlitchyLogo.gif
--------------------------------------------------------------------------------
/FairMark.Docs/FairMarkGlitchyLogo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FairMark/FairMarkClient/c564b226c8696f8016d7e0ca8866f516968b2736/FairMark.Docs/FairMarkGlitchyLogo.png
--------------------------------------------------------------------------------
/FairMark.Docs/FairMarkGlitchyLogo.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FairMark/FairMarkClient/c564b226c8696f8016d7e0ca8866f516968b2736/FairMark.Docs/FairMarkGlitchyLogo.webp
--------------------------------------------------------------------------------
/FairMark.Docs/OmsID_blue_OmsConnectionID_green.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FairMark/FairMarkClient/c564b226c8696f8016d7e0ca8866f516968b2736/FairMark.Docs/OmsID_blue_OmsConnectionID_green.png
--------------------------------------------------------------------------------
/FairMark.Docs/TestCertificates.md:
--------------------------------------------------------------------------------
1 | # Тестовые сертификаты УКЭП
2 |
3 | Юнит-тесты запускаются на демо-контуре ГИС МТ с использованием тестовых УКЭП-сертификатов.
4 | Для получения тестового сертификата нужно зарегистрироваться в тестовом УЦ КриптоПро,
5 | который расположен тут:
6 |
7 | https://testca2012.cryptopro.ru/ui
8 |
9 | При регистрации нужно указывать реальные реквизиты какого-нибудь юридического лица,
10 | так как даже демо-контур сверяет все реквизиты с ЕГРЮЛ.
11 |
12 | После регистрации УКЭП в демо-контуре ГИС МТ его можно будет использовать для авторизации
13 | в ГИС МТ, СУЗ Облако, ЭДО Лайт, и True API. Клиент FairMarkClient не реализует API ГИС МТ,
14 | т.к. документация рекомендует пользоваться вместо него True API (там охват функционала
15 | больше, и развиваться в качестве основного API для интеграции будет True API).
16 |
17 | Когда тестовый сертификат будет просрочен, нужно зайти повторно на сайт тестового УЦ
18 | и запросить перевыпуск. При перевыпуске, как я понимаю, заполнять уже ничего не надо.
19 |
20 | После перевыпуска в юнит-тестах нужно указать новые параметры сертификата.
21 | Нужны ли еще какие-то манипуляции, чтобы активировать в ГИС МТ новый сертификат взамен
22 | просроченного, я пока не знаю.
23 |
--------------------------------------------------------------------------------
/FairMark.Docs/XsdSchema.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FairMark/FairMarkClient/c564b226c8696f8016d7e0ca8866f516968b2736/FairMark.Docs/XsdSchema.png
--------------------------------------------------------------------------------
/FairMark.Docs/edo_methods.txt:
--------------------------------------------------------------------------------
1 | Список реализованных методов API ЭДО Лайт
2 | ------------------------------------------
3 |
4 | https://честныйзнак.рф/upload/API ЭДО lite.pdf
5 |
6 | + 2.1. Запрос авторизации
7 | + 2.2. Получение ключа сессии
8 | + 3.1. Метод загрузки файла информации продавца УПД согласно приказу 820 от 19.12.2018 № ММВ-7-15/820@
9 | + 3.2. Метод загрузки файла информации продавца УПДи согласно приказу 820 от 19.12.2018 № ММВ-7-15/820@ в формате XML
10 | + 3.3. Методы загрузки информации продавца УКД согласно приказу 189 от 13 апреля 2016 г. в формате XML
11 | + 3.4. Получение содержимого XML документа
12 | + 3.5. Подписание исходящего документа
13 | + 3.6. Получение печатной формы УПД/УПДи/УКД
14 | + 3.7. Получение ZIP архива с документооборотом УПД/УПДи/УКД
15 | + 3.8. Получение списка документов
16 | - 3.9. Метод загрузки файла информации покупателя УПД согласно приказу 820 от 19.12.2018 № ММВ-7-15/820@ в формате XML
17 | - 3.10. Метод загрузки файла информации покупателя УПДи согласно приказу 820 от 19.12.2018 № ММВ-7-15/820@ в формате XML
18 | - 3.11. Метод загрузки файла информации покупателя УКД согласно приказу 189 от 13 апреля 2016 г. в формате XML
19 | - 3.12. Получение XML файла информации покупателя (УПД/УПДи/УКД) или квитанции
20 | - 3.13. Подписание квитанций или файла информации покупателя (УПД/УПДи/УКД)
21 | - 3.14. Получение списка квитанций для подписания
22 | + 3.15. Создание уведомления об уточнении
23 |
--------------------------------------------------------------------------------
/FairMark.Docs/oms_methods.txt:
--------------------------------------------------------------------------------
1 | Список реализованных методов API СУЗ Облако
2 | --------------------------------------------
3 |
4 | https://честныйзнак.рф/upload/iblock/07f/ru_API_OMS-CLOUD.pdf
5 |
6 | + 4.5.1. Метод «Создать заказ на эмиссию кодов маркировки»
7 | + 4.5.2. Метод «Отправить отчёт о выбытии/отбраковке КМ»
8 | - 4.5.3. Метод «Отправить отчёт об агрегации КМ»
9 | + 4.5.4. Метод «Отправить отчёт об использовании (нанесении) КМ»
10 | + 4.5.5. Метод «Закрыть подзаказ/заказ»
11 | + 4.5.6. Метод «Получить КМ из заказа»
12 | + 4.5.7. Метод «Получить статус массива КМ из заказа»
13 | + 4.5.8. Метод «Получить статус заказов»
14 | + 4.5.9. Метод «Получить информацию об агрегации»
15 | + 4.5.10. Метод «Получить статус обработки отчёта»
16 | + 4.5.11. Метод «Проверить доступность СУЗ»
17 | x 4.5.12. Не поддерживается в «СУЗ Облако»: Метод «Получить маркер безопасности по имени пользователя и паролю»
18 | + 4.5.13. Метод «Получить версию СУЗ и API»
19 | + 4.5.14 Метод «Получить список идентификаторов пакетов кодов маркировки»
20 | + 4.5.15 Метод «Получить повторно коды маркировки из заказа кодов маркировки»
21 | + 4.5.16. Метод «Получить квитанцию по уникальному идентификатору документа»
22 | + 4.5.17. Метод «Получить список сервис-провайдеров»
23 | - 10.2.1. Метод «Запрос регистрации установки экземпляра интеграционного решения»
24 | + 10.3.1.1. Метод для получения кода аутентификации
25 | + 10.3.1.2. Метод для получения ключа сессии
26 |
--------------------------------------------------------------------------------
/FairMark.Tests/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/FairMark.Tests/FairMark.Tests.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | net462
5 | FairMark.Tests
6 | FairMark.Tests
7 |
8 |
9 |
10 | pdbonly
11 | True
12 |
13 |
14 |
15 |
16 |
17 |
18 | runtime; build; native; contentfiles; analyzers
19 | all
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 | True
38 | True
39 | Resources.resx
40 |
41 |
42 |
43 |
44 |
45 | ResXFileCodeGenerator
46 | Resources.Designer.cs
47 |
48 |
49 |
50 |
51 | full
52 | True
53 |
54 |
55 |
--------------------------------------------------------------------------------
/FairMark.Tests/GostCryptoHelpersTests.cs:
--------------------------------------------------------------------------------
1 | using System.Security.Cryptography.X509Certificates;
2 | using NUnit.Framework;
3 | using FairMark.Toolbox;
4 |
5 | namespace FairMark.Tests
6 | {
7 | [TestFixture]
8 | public class GostCryptoHelpersTests : UnitTestsBase
9 | {
10 | private X509Certificate2 GetTestCertificate()
11 | {
12 | return GostCryptoHelpers.FindCertificate(TestCertificateSubjectName);
13 | }
14 |
15 | [Test]
16 | public void CertificateThumbprintIsCleanedUp()
17 | {
18 | Assert.AreEqual(null, GostCryptoHelpers.CleanupThumbprint(null));
19 | Assert.AreEqual(string.Empty, GostCryptoHelpers.CleanupThumbprint(string.Empty));
20 | Assert.AreEqual(string.Empty, GostCryptoHelpers.CleanupThumbprint(" \t\v\r\n"));
21 | Assert.AreEqual("1234abcd", GostCryptoHelpers.CleanupThumbprint(" 12 34 ab cd "));
22 | Assert.AreEqual(TestCertificateThumbprint, GostCryptoHelpers.CleanupThumbprint(TestCertificateThumbprintCopiedFromTheSnapin));
23 | }
24 |
25 | [Test]
26 | public void GostCryproProviderIsInstalled()
27 | {
28 | Assert.IsTrue(GostCryptoHelpers.IsGostCryptoProviderInstalled());
29 | }
30 |
31 | [Test]
32 | public void CertificateIsLoadedByThumbprint()
33 | {
34 | var cert = GostCryptoHelpers.FindCertificate(TestCertificateThumbprint);
35 | Assert.NotNull(cert);
36 | }
37 |
38 | [Test]
39 | public void CertificateWithPrivateKeyIsLoaded()
40 | {
41 | var cert = GetTestCertificate();
42 | Assert.IsNotNull(cert);
43 | Assert.AreEqual(cert.Thumbprint.ToUpper(), TestCertificateThumbprint.ToUpper());
44 | }
45 |
46 | [Test]
47 | public void CertificateCanBeUsedToComputeDetachedCmsSignature()
48 | {
49 | var cert = GetTestCertificate();
50 | var sign = GostCryptoHelpers.ComputeDetachedSignature(cert, "Привет!");
51 | Assert.IsNotNull(sign);
52 | Assert.IsTrue(sign.StartsWith("MII"));
53 | Assert.IsTrue(sign.Length > 1000);
54 | }
55 |
56 | [Test]
57 | public void CertificateCanBeUsedToComputeAttachedCmsSignature()
58 | {
59 | var cert = GetTestCertificate();
60 | var sign = GostCryptoHelpers.ComputeAttachedSignature(cert, "Привет!");
61 | Assert.IsNotNull(sign);
62 | Assert.IsTrue(sign.StartsWith("MII"));
63 | Assert.IsTrue(sign.Length > 1000);
64 | }
65 | }
66 | }
67 |
--------------------------------------------------------------------------------
/FairMark.Tests/Resources/ON_KORSCHFDOPPR_2LT-600003352_2LT-600006439_20210426_a4941fa7-9a53-4991-aa02-f1606b71142c.xml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FairMark/FairMarkClient/c564b226c8696f8016d7e0ca8866f516968b2736/FairMark.Tests/Resources/ON_KORSCHFDOPPR_2LT-600003352_2LT-600006439_20210426_a4941fa7-9a53-4991-aa02-f1606b71142c.xml
--------------------------------------------------------------------------------
/FairMark.Tests/Resources/ON_KORSCHFDOPPR_2LT-600006439_2LT-600003352_20210426_68426923-d1e2-4582-93f2-f690912d5161.xml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FairMark/FairMarkClient/c564b226c8696f8016d7e0ca8866f516968b2736/FairMark.Tests/Resources/ON_KORSCHFDOPPR_2LT-600006439_2LT-600003352_20210426_68426923-d1e2-4582-93f2-f690912d5161.xml
--------------------------------------------------------------------------------
/FairMark.Tests/Resources/ON_NSCHFDOPPR_2LT-600003352_2LT-600006439_20210426_00c4d099-a48f-47ed-8608-54d32890fe73.УПДи.xml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FairMark/FairMarkClient/c564b226c8696f8016d7e0ca8866f516968b2736/FairMark.Tests/Resources/ON_NSCHFDOPPR_2LT-600003352_2LT-600006439_20210426_00c4d099-a48f-47ed-8608-54d32890fe73.УПДи.xml
--------------------------------------------------------------------------------
/FairMark.Tests/Resources/ON_NSCHFDOPPR_2LT-600003352_2LT-600006439_20210426_afb6cce6-6cb9-4147-bc2f-689be4fd2198.xml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FairMark/FairMarkClient/c564b226c8696f8016d7e0ca8866f516968b2736/FairMark.Tests/Resources/ON_NSCHFDOPPR_2LT-600003352_2LT-600006439_20210426_afb6cce6-6cb9-4147-bc2f-689be4fd2198.xml
--------------------------------------------------------------------------------
/FairMark.Tests/Resources/ON_NSCHFDOPPR_2LT-600006439_2LT-600003352_20210426_0dc17582-d11d-4a4d-8e25-816d59870ef4.xml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FairMark/FairMarkClient/c564b226c8696f8016d7e0ca8866f516968b2736/FairMark.Tests/Resources/ON_NSCHFDOPPR_2LT-600006439_2LT-600003352_20210426_0dc17582-d11d-4a4d-8e25-816d59870ef4.xml
--------------------------------------------------------------------------------
/FairMark.Tests/Resources/ON_NSCHFDOPPR_2LT-600006439_2LT-600003352_20210426_a5011718-844e-4bba-b15c-a1c15e49a691.УПДи.xml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FairMark/FairMarkClient/c564b226c8696f8016d7e0ca8866f516968b2736/FairMark.Tests/Resources/ON_NSCHFDOPPR_2LT-600006439_2LT-600003352_20210426_a5011718-844e-4bba-b15c-a1c15e49a691.УПДи.xml
--------------------------------------------------------------------------------
/FairMark.Tests/TrueApiClientTests.Chapter6.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 | using FairMark.TrueApi.DataContracts;
7 | using NUnit.Framework;
8 |
9 | namespace FairMark.Tests
10 | {
11 | [TestFixture]
12 | public partial class TrueApiClientTests : UnitTestsBase
13 | {
14 | [Test]
15 | public void Chapter_6_9_GetCisesByOrderId()
16 | {
17 | var verificationCises = new[]
18 | {
19 | "0104635785586010215MRZpi",
20 | "0104635785586010215O(JSD",
21 | "0104635785586010215boSWI",
22 | "0104635785586010215Yc51t",
23 | "0104635785586010215cS2kT",
24 | "0104635785586010215kyoYo",
25 | "0104635785586010215S4PPf",
26 | "0104635785586010215BC!FF",
27 | "0104635785586010215UrkP'",
28 | "0104635785586010215nU:VT"
29 | };
30 |
31 | var cises = Client.GetCisesByOrderId("a1769132-796e-47cb-8bc5-1053c4d7d6c5");
32 | Assert.NotNull(cises);
33 | CollectionAssert.AreEquivalent(verificationCises, cises);
34 | }
35 |
36 | [Test]
37 | public void Chapter_6_9_GetCisesByOrderId_NotFound()
38 | {
39 | var ex = Assert.Throws(() =>
40 | {
41 | // "836cc65b-6b89-40f2-b074-0bcd22b998cd"
42 | Client.GetCisesByOrderId("this-order-id-is-invalid");
43 | });
44 | }
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/FairMark/CommonCredentials.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using FairMark.DataContracts;
3 |
4 | namespace FairMark
5 | {
6 | ///
7 | /// Common FairMark credentials for True API, OMS API, etc.
8 | /// Credentials class stores the authentication data and implements
9 | /// the authentication protocol when connection is established.
10 | ///
11 | public abstract class CommonCredentials
12 | {
13 | ///
14 | /// Gets or sets the user identity, same as the cryptographic certificate thumbprint.
15 | ///
16 | public string CertificateThumbprint { get; set; }
17 |
18 | ///
19 | /// Gets of sets the session token, if the client has already authorized.
20 | ///
21 | ///
22 | /// If session token is specified, the client will try to skip the authentication process.
23 | /// If session token is not specified or is not valid, the client will proceed to log in as usual.
24 | ///
25 | public AuthToken SessionToken { get; set; }
26 |
27 | ///
28 | /// Performs authentication, returns access token with a limited lifetime.
29 | ///
30 | /// REST API client to perform API calls.
31 | /// instance.
32 | public abstract AuthToken Authenticate(CommonApiClient apiClient);
33 |
34 | ///
35 | /// Invalidates the authentication token and closes the session.
36 | ///
37 | /// REST API clientn to perform API calls.
38 | public abstract void Logout(CommonApiClient apiClient);
39 |
40 | ///
41 | /// Formats the authentication header for REST requests.
42 | ///
43 | /// Authentication token.
44 | public abstract Tuple FormatAuthHeader(AuthToken authToken);
45 | }
46 | }
--------------------------------------------------------------------------------
/FairMark/CredentialsAuthenticator.cs:
--------------------------------------------------------------------------------
1 | namespace FairMark
2 | {
3 | using System;
4 | using DataContracts;
5 | using RestSharp;
6 | using RestSharp.Authenticators;
7 |
8 | ///
9 | /// RestSharp client authenticator.
10 | /// Uses credentials to log in to the API and get the auth token.
11 | /// Sets the authentication headers on each REST request.
12 | ///
13 | internal class CredentialsAuthenticator : IAuthenticator
14 | {
15 | public CredentialsAuthenticator(CommonApiClient apiClient, CommonCredentials credentials)
16 | {
17 | State = AuthState.NotAuthenticated;
18 | Client = apiClient;
19 | Credentials = credentials;
20 | }
21 |
22 | private CommonApiClient Client { get; set; }
23 |
24 | private CommonCredentials Credentials { get; set; }
25 |
26 | private AuthState State { get; set; }
27 |
28 | private enum AuthState
29 | {
30 | NotAuthenticated, InProgress, Authenticated
31 | }
32 |
33 | public bool IsAuthenticated => State == AuthState.Authenticated;
34 |
35 | internal AuthToken AuthToken { get; set; }
36 |
37 | private Tuple AuthHeader { get; set; }
38 |
39 | protected virtual void SetAuthHeader(AuthToken authToken)
40 | {
41 | AuthHeader = string.IsNullOrWhiteSpace(authToken?.Token) ? null :
42 | Credentials.FormatAuthHeader(authToken);
43 | }
44 |
45 | public virtual void Authenticate(IRestClient client, IRestRequest request)
46 | {
47 | // perform authentication request
48 | if (State == AuthState.NotAuthenticated)
49 | {
50 | State = AuthState.InProgress;
51 | AuthToken = Credentials.Authenticate(Client);
52 | SetAuthHeader(AuthToken);
53 | State = AuthState.Authenticated;
54 | }
55 |
56 | // add authorization header if specified
57 | if (AuthHeader != null)
58 | {
59 | request.AddOrUpdateParameter(AuthHeader.Item1, AuthHeader.Item2, ParameterType.HttpHeader);
60 | }
61 | }
62 |
63 | public virtual void Logout()
64 | {
65 | Credentials.Logout(Client);
66 | State = AuthState.NotAuthenticated;
67 | AuthToken = null;
68 | AuthHeader = null;
69 | }
70 | }
71 | }
72 |
--------------------------------------------------------------------------------
/FairMark/DataContracts/ApiFieldError.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Runtime.Serialization;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 |
8 | namespace FairMark.DataContracts
9 | {
10 | ///
11 | /// Структура, которая содержит описание ошибочного поля.
12 | ///
13 | [DataContract]
14 | public partial class ApiFieldError
15 | {
16 | [DataMember(Name = "errorCode", IsRequired = false)]
17 | public int? ErrorCode { get; set; }
18 |
19 | [DataMember(Name = "fieldError", IsRequired = false)]
20 | public string FieldError { get; set; }
21 |
22 | [DataMember(Name = "fieldName", IsRequired = false)]
23 | public string FieldName { get; set; }
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/FairMark/DataContracts/ApiGlobalError.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Runtime.Serialization;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 |
8 | namespace FairMark.DataContracts
9 | {
10 | ///
11 | /// Структура, которая содержит описание ошибочного поля.
12 | ///
13 | [DataContract]
14 | public partial class ApiGlobalError
15 | {
16 | [DataMember(Name = "error", IsRequired = false)]
17 | public string Error { get; set; }
18 |
19 | [DataMember(Name = "errorCode", IsRequired = false)]
20 | public int? ErrorCode { get; set; }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/FairMark/DataContracts/AuthResponse.cs:
--------------------------------------------------------------------------------
1 | namespace FairMark.DataContracts
2 | {
3 | using System.Runtime.Serialization;
4 |
5 | ///
6 | /// Fair Mark API authentication key.
7 | /// True API 1.5.1. Запрос авторизации при единой аутентификации
8 | /// OMS API 10.3.2.1. Запрос авторизации при единой аутентификации
9 | /// Edo Lite API 2.1. Запрос авторизации
10 | ///
11 | [DataContract]
12 | public class AuthResponse
13 | {
14 | [DataMember(Name = "uuid")]
15 | public string UUID { get; set; }
16 |
17 | [DataMember(Name = "data")]
18 | public string Data { get; set; }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/FairMark/DataContracts/AuthToken.cs:
--------------------------------------------------------------------------------
1 | namespace FairMark.DataContracts
2 | {
3 | using System;
4 | using System.Runtime.Serialization;
5 |
6 | ///
7 | /// Fair Mark API authentication token.
8 | /// True Api 1.5.2. Получение ключа сессии при единой аутентификации
9 | /// OMS API 10.3.2.2. Получение аутентификационного токена
10 | /// Edo Lite API 2.2. Получение ключа сессии
11 | ///
12 | [DataContract]
13 | public class AuthToken
14 | {
15 | ///
16 | /// Initializes a new instance of the .
17 | ///
18 | public AuthToken()
19 | {
20 | // make sure we don't expire prematurely
21 | CreationDate = DateTime.Now.AddSeconds(-30);
22 | }
23 |
24 | ///
25 | /// Gets the creation date.
26 | ///
27 | [DataMember(Name = "$creation_date$", IsRequired = false)]
28 | public DateTime CreationDate { get; private set; }
29 |
30 | ///
31 | /// Gets the expiration date.
32 | ///
33 | [IgnoreDataMember]
34 | public DateTime ExpirationDate
35 | {
36 | get { return CreationDate.AddMinutes(LifeTime); }
37 | }
38 |
39 | ///
40 | /// Gets or sets the authentication token.
41 | ///
42 | [DataMember(Name = "token", IsRequired = true)]
43 | public string Token { get; set; }
44 |
45 | ///
46 | /// Gets or sets the token type (EDO-specific property).
47 | ///
48 | [DataMember(Name = "type", IsRequired = false)]
49 | public string Type { get; set; }
50 |
51 | ///
52 | /// Gets or sets the token lifetime, in minutes.
53 | ///
54 | [IgnoreDataMember]
55 | public int LifeTime { get; } = (int)TimeSpan.FromHours(10).TotalMinutes;
56 | }
57 | }
58 |
--------------------------------------------------------------------------------
/FairMark/EdoLite/DataContracts/DocumentAgent.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Runtime.Serialization;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 |
8 | namespace FairMark.EdoLite.DataContracts
9 | {
10 | ///
11 | /// 3.8. Получение списка документов.
12 | /// Отправитель или получатель цепочки документов.
13 | ///
14 | [DataContract]
15 | public class DocumentAgent
16 | {
17 | ///
18 | /// Идентификатор получателя в системе ЭДО оператора
19 | ///
20 | [DataMember(Name = "id", IsRequired = false)]
21 | public int ID { get; set; } // 600061573,
22 |
23 | ///
24 | /// Дополнительный идентификатор получателя в системе ЭДО оператора
25 | ///
26 | [DataMember(Name = "extra_id", IsRequired = false)]
27 | public string ExtraID { get; set; } // "00000000-23c4-3685-0000-000000000000",
28 |
29 | ///
30 | /// ИНН получателя
31 | ///
32 | [DataMember(Name = "inn", IsRequired = false)]
33 | public string Inn { get; set; } // "0000000000",
34 |
35 | ///
36 | /// КПП получателя
37 | ///
38 | [DataMember(Name = "kpp", IsRequired = false)]
39 | public string Kpp { get; set; } // null,
40 |
41 | ///
42 | /// ОГРН получателя
43 | ///
44 | [DataMember(Name = "ogrn", IsRequired = false)]
45 | public string Ogrn { get; set; } // "316503200073256",
46 |
47 | ///
48 | /// Адрес получателя
49 | ///
50 | [DataMember(Name = "address", IsRequired = false)]
51 | public string Address { get; set; } // null,
52 |
53 | ///
54 | /// Наименование получателя
55 | ///
56 | [DataMember(Name = "name", IsRequired = false)]
57 | public string Name { get; set; } // "ООО",
58 |
59 | ///
60 | /// E-mail получателя
61 | ///
62 | [DataMember(Name = "email", IsRequired = false)]
63 | public string Email { get; set; } // "noreply@example.com",
64 | }
65 | }
66 |
--------------------------------------------------------------------------------
/FairMark/EdoLite/DataContracts/DocumentInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.Linq;
3 | using System.Runtime.Serialization;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace FairMark.EdoLite.DataContracts
8 | {
9 | using System;
10 |
11 | ///
12 | /// 3.8. Получение списка документов.
13 | /// Информация о документе.
14 | ///
15 | [DataContract]
16 | public class DocumentInfo
17 | {
18 | ///
19 | /// Идентификатор документа в системе ЭДО оператора
20 | ///
21 | [DataMember(Name = "id", IsRequired = false)]
22 | public string ID { get; set; } // "66ecae1e-5ff6-41c5-be29-5e1162237b8c",
23 |
24 | ///
25 | /// Дата создания документа в формате timestamp
26 | ///
27 | [DataMember(Name = "created_at", IsRequired = false)]
28 | public long CreatedAt { get; set; } // 1582090925
29 |
30 | ///
31 | /// Дата документа в формате timestamp
32 | ///
33 | [DataMember(Name = "date", IsRequired = false)]
34 | public int Date { get; set; } // 1582059600
35 |
36 | ///
37 | /// Номер документа
38 | ///
39 | [DataMember(Name = "number", IsRequired = false)]
40 | public string Number { get; set; }
41 |
42 | ///
43 | /// Дата последней обработки документа в формате timestamp
44 | ///
45 | [DataMember(Name = "processed_at", IsRequired = false)]
46 | public long ProcessedAt { get; set; } // 1582059600
47 |
48 | ///
49 | /// Числовой статус документа
50 | /// см. Справочник "Статусы документов"
51 | ///
52 | [DataMember(Name = "status", IsRequired = false)]
53 | public int Status { get; set; } // 0
54 |
55 | ///
56 | /// Цена с НДС
57 | ///
58 | [DataMember(Name = "total_price", IsRequired = false)]
59 | public int TotalPrice { get; set; } // 1930500
60 |
61 | ///
62 | /// Цена с НДС
63 | ///
64 | [DataMember(Name = "total_vat_amount", IsRequired = false)]
65 | public int TotalVatAmount { get; set; } // 279500
66 |
67 | ///
68 | /// Код типа документа
69 | /// см. Справочник "Типы документов"
70 | ///
71 | [DataMember(Name = "type", IsRequired = false)]
72 | public int Type { get; set; } // 504
73 | }
74 | }
--------------------------------------------------------------------------------
/FairMark/EdoLite/DataContracts/GetDocumentsResponse.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Runtime.Serialization;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 |
8 | namespace FairMark.EdoLite.DataContracts
9 | {
10 | ///
11 | /// 3.8. Получение списка документов.
12 | /// Список цепочек документов.
13 | ///
14 | [DataContract]
15 | internal class GetDocumentsResponse
16 | {
17 | ///
18 | /// Цепочки документов
19 | ///
20 | [DataMember(Name = "items")]
21 | public List Items { get; set; }
22 |
23 | ///
24 | /// Количество цепочек
25 | ///
26 | [DataMember(Name = "count", IsRequired = false)]
27 | public int Count { get; set; } // 1
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/FairMark/EdoLite/DataContracts/ResID.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Runtime.Serialization;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 |
8 | namespace FairMark.EdoLite.DataContracts
9 | {
10 | [DataContract]
11 | internal class ResID
12 | {
13 | [DataMember(Name = "id", IsRequired = true)]
14 | public string ID { get; set; }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/FairMark/EdoLite/EdoLiteClient.cs:
--------------------------------------------------------------------------------
1 | using FairMark.OmsApi.DataContracts;
2 | using FairMark.Toolbox;
3 |
4 | namespace FairMark.EdoLite
5 | {
6 | ///
7 | /// EDO Lite API client.
8 | ///
9 | ///
10 | /// Документация по API ЭДО Лайт:
11 | /// https://честныйзнак.рф/upload/API ЭДО lite.pdf
12 | ///
13 | public partial class EdoLiteClient : CommonApiClient
14 | {
15 | ///
16 | /// Sandbox EDO Lite API URL. Интеграционный стенд ЭДО Лайт для ГИС МТ (маркировка промтоваров).
17 | ///
18 | public const string SandboxApiUrl = "https://int.edo.crpt.tech/api/v1";
19 |
20 | ///
21 | /// Production EDO Lite for GIS MT API URL. Промышленный стенд ЭДО Лайт для ГИС МТ (маркировка промтоваров).
22 | ///
23 | public const string ProductionApiGisMtUrl = "https://elk.edo.crpt.tech/api/v1";
24 |
25 | ///
26 | /// Production EDO Lite for MDLP API URL. Промышленный стенд ЭДО Лайт для МДЛП (маркировка лекарств).
27 | ///
28 | public const string ProductionApiMdlpUrl = "https://mdlp.edo.crpt.tech/api/v1";
29 |
30 | ///
31 | /// Initializes a new instance of the class.
32 | ///
33 | /// OMS API endpoint.
34 | /// Authentication credentials.
35 | public EdoLiteClient(string apiUrl, EdoLiteCredentials credentials)
36 | : base(apiUrl, credentials)
37 | {
38 | }
39 |
40 | ///
41 | /// EDO Lite-specific credentials.
42 | ///
43 | public EdoLiteCredentials EdoLiteCredentials => (EdoLiteCredentials)Credentials;
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/FairMark/FairMark.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | net462
5 | FairMark
6 | FairMark
7 | Честный Знак. ИС «Маркировка», СУЗ Облако. Неофициальная клиентская библиотека для .NET.
8 |
9 | Alexey Yakovlev
10 | Copyright © Alexey Yakovlev 2021
11 | 1.0.1.0
12 | 1.0.1.0
13 | 1.0.0.0
14 | Alexey Yakovlev;Aleksei Kudryakov;Contributors
15 |
16 | FairMarkClient
17 | REST;API;TrueAPI;Честный знак;ГИС МТ;СУЗ Облако;ЭДО Лайт
18 | https://raw.githubusercontent.com/FairMark/FairMarkClient/master/FairMark.Docs/FairMarkGlitchyLogo.gif
19 | https://github.com/FairMark/FairMarkClient
20 | https://github.com/FairMark/FairMarkClient/blob/master/LICENSE
21 | git
22 | https://github.com/FairMark/FairMarkClient.git
23 |
24 | Alpha release. What's new:
25 |
26 | v1.0.0:
27 | — Initial implementation of the OMS API client.
28 | — Stub implementations of the True API and EDO Lite clients.
29 |
30 | en-US
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 | full
54 | True
55 |
56 |
57 |
--------------------------------------------------------------------------------
/FairMark/OmsApi/DataContracts/4_5_10_2_ReportStatusDto.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Runtime.Serialization;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 |
8 | namespace FairMark.OmsApi.DataContracts
9 | {
10 | ///
11 | /// 4.5.10. Метод «Получить статус обработки отчёта»
12 | /// 4.5.10.2. Ответ на запрос, Таблица 67.
13 | ///
14 | [DataContract]
15 | public class ReportStatusDto
16 | {
17 | /// Причина отклонения отчета (обнаруженная ошибка)
18 | [DataMember(Name = "errorReason", IsRequired = false)]
19 | public string ErrorReason { get; set; }
20 |
21 | /// Уникальный идентификатор СУЗ
22 | [DataMember(Name = "omsId", IsRequired = true)]
23 | public string OmsID { get; set; }
24 |
25 | /// Report ID (Идентификатор отчета)
26 | [DataMember(Name = "reportId", IsRequired = true)]
27 | public string ReportID { get; set; }
28 |
29 | /// Report status (Статус отчета)
30 | [DataMember(Name = "reportStatus", IsRequired = true)]
31 | public ReportStatuses ReportStatus { get; set; }
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/FairMark/OmsApi/DataContracts/4_5_13_1_AppVersion.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Runtime.Serialization;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 |
8 | namespace FairMark.OmsApi.DataContracts
9 | {
10 | ///
11 | /// 4.5.13. Метод «Получить версию СУЗ и API»
12 | ///
13 | [DataContract]
14 | public class AppVersion
15 | {
16 | /// OMS API Version (Версия API СУЗ)
17 | [DataMember(Name = "apiVersion")]
18 | public string ApiVersion { get; set; }
19 |
20 | /// OMS Version (Версия СУЗ)
21 | [DataMember(Name = "omsVersion")]
22 | public string OmsVersion { get; set; }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/FairMark/OmsApi/DataContracts/4_5_14_3_BlockDto.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Runtime.Serialization;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 |
8 | namespace FairMark.OmsApi.DataContracts
9 | {
10 | ///
11 | /// 4.5.14. Метод «Получить список идентификаторов пакетов кодов маркировки»
12 | /// 4.5.14.3. Ответ на запрос, Таблица 76.
13 | ///
14 | [DataContract]
15 | public partial class BlockDto
16 | {
17 | /// Date, time of creation of the marking code package(Дата, время создания пакета кодов маркировки)
18 | [DataMember(Name = "blockDateTime", IsRequired = false)]
19 | public long? BlockDateTime { get; set; }
20 |
21 | /// Unique identifier of a business order for issuing MC (Уникальный идентификатор бизнес-заказа на эмиссию КМ)
22 | [DataMember(Name = "blockId", IsRequired = false)]
23 | public string BlockID { get; set; }
24 |
25 | /// Количество КМ/СИ
26 | [DataMember(Name = "quantity", IsRequired = false)]
27 | public int? Quantity { get; set; }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/FairMark/OmsApi/DataContracts/4_5_14_3_BlocksDto.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Runtime.Serialization;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 |
8 | namespace FairMark.OmsApi.DataContracts
9 | {
10 | ///
11 | /// 4.5.14. Метод «Получить список идентификаторов пакетов кодов маркировки»
12 | /// 4.5.14.3. Ответ на запрос, Таблица 75.
13 | ///
14 | [DataContract]
15 | public partial class BlocksDto
16 | {
17 | [DataMember(Name = "blocks", IsRequired = false)]
18 | public List Blocks { get; set; }
19 |
20 | /// Product GTIN (GTIN товара)
21 | [DataMember(Name = "gtin", IsRequired = true)]
22 | public string Gtin { get; set; }
23 |
24 | /// Уникальный идентификатор СУЗ
25 | [DataMember(Name = "omsId", IsRequired = true)]
26 | public string OmsID { get; set; }
27 |
28 | /// Unique identifier of a business order for issuing MC (Уникальный идентификатор бизнес-заказа на эмиссию КМ)
29 | [DataMember(Name = "orderId", IsRequired = false)]
30 | public Guid OrderID { get; set; }
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/FairMark/OmsApi/DataContracts/4_5_16_3_ReceiptDto.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Runtime.Serialization;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 |
8 | namespace FairMark.OmsApi.DataContracts
9 | {
10 | ///
11 | /// 4.5.16. Метод «Получить квитанцию по уникальному идентификатору документа»
12 | /// 4.5.16.2. Формат объекта Receipt, Таблица 81.
13 | ///
14 | [DataContract]
15 | public partial class ReceiptDto
16 | {
17 | [DataMember(Name = "content", IsRequired = false)]
18 | public string Content { get; set; }
19 |
20 | [DataMember(Name = "signature", IsRequired = false)]
21 | public string Signature { get; set; }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/FairMark/OmsApi/DataContracts/4_5_16_3_ReceiptsDto.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Runtime.Serialization;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 |
8 | namespace FairMark.OmsApi.DataContracts
9 | {
10 | ///
11 | /// 4.5.16. Метод «Получить квитанцию по уникальному идентификатору документа»
12 | /// 4.5.16.2. Ответ на запрос, Таблица 80.
13 | ///
14 | [DataContract]
15 | public partial class ReceiptsDto
16 | {
17 | [DataMember(Name = "receipts", IsRequired = false)]
18 | public List Receipts { get; set; }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/FairMark/OmsApi/DataContracts/4_5_17_ProviderInfo.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Runtime.Serialization;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 |
8 | namespace FairMark.OmsApi.DataContracts
9 | {
10 | ///
11 | /// 4.5.17. Метод «Получить список сервис-провайдеров»
12 | /// 4.5.17.2, Ответ на запрос, Таблица 84.
13 | ///
14 | [DataContract]
15 | public partial class ProviderInfo
16 | {
17 | /// Site address (Адрес площадки)
18 | [DataMember(Name = "address", IsRequired = false)]
19 | public string Address { get; set; }
20 |
21 | /// Contact person (Контактное лицо)
22 | [DataMember(Name = "contactPerson", IsRequired = false)]
23 | public string ContactPerson { get; set; }
24 |
25 | /// Service provider country (Страна сервис провайдера)
26 | [DataMember(Name = "country", IsRequired = true)]
27 | public string Country { get; set; }
28 |
29 | /// E-mail (Электронный адрес)
30 | [DataMember(Name = "email", IsRequired = false)]
31 | public string Email { get; set; }
32 |
33 | /// Contractor name (Наименование контрагента)
34 | [DataMember(Name = "name", IsRequired = true)]
35 | public string Name { get; set; }
36 |
37 | /// Contractor role (Service Provider Role)
38 | [DataMember(Name = "productGroups", IsRequired = true)]
39 | public List ProductGroups { get; set; } = new List();
40 |
41 | /// Service provider name (Наименование сервис-провайдера)
42 | [DataMember(Name = "providerName", IsRequired = true)]
43 | public string ProviderName { get; set; }
44 |
45 | /// Service provider role (Роль сервис провайдера)
46 | [DataMember(Name = "role", IsRequired = false)]
47 | public string Role { get; set; }
48 |
49 | /// Service Provider ID (Идентификатор сервис-провайдера)
50 | [DataMember(Name = "serviceProviderId", IsRequired = true)]
51 | public string ServiceProviderID { get; set; }
52 |
53 | /// Exporter ID (Идентификатор экспортера)
54 | [DataMember(Name = "taxIdentificationNumber", IsRequired = true)]
55 | public string TaxIdentificationNumber { get; set; }
56 | }
57 | }
58 |
--------------------------------------------------------------------------------
/FairMark/OmsApi/DataContracts/4_5_17_ProvidersDto.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Runtime.Serialization;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 |
8 | namespace FairMark.OmsApi.DataContracts
9 | {
10 | ///
11 | /// 4.5.17. Метод «Получить список сервис-провайдеров»
12 | /// 4.5.17.2, Ответ на запрос, Таблица 83.
13 | ///
14 | [DataContract]
15 | public partial class ProvidersDto
16 | {
17 | [DataMember(Name = "providers", IsRequired = false)]
18 | public List Providers { get; set; }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/FairMark/OmsApi/DataContracts/4_5_1_1_0_Order.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Runtime.Serialization;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 |
8 | namespace FairMark.OmsApi.DataContracts
9 | {
10 | ///
11 | /// Code emission order.
12 | /// 4.5.1. Метод «Создать заказ на эмиссию кодов маркировки»
13 | /// 4.5.1.1. Запрос, Таблица 5.
14 | ///
15 | /// The type of the order product.
16 | [DataContract]
17 | public class Order
18 | where T : OrderProduct
19 | {
20 | ///
21 | /// Список товаров.
22 | ///
23 | ///
24 | /// В зависимости от типа товара в этой коллекции нужно
25 | /// передавать экземпляры либо класса ,
26 | /// либо его потомков: и др.
27 | ///
28 | [DataMember(Name = "products", IsRequired = true)]
29 | public List Products { get; set; } = new List();
30 |
31 | ///
32 | /// Идентификатор сервис-провайдера.
33 | ///
34 | [DataMember(Name = "serviceProviderId", IsRequired = false)]
35 | public string ServiceProviderID { get; set; }
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/FairMark/OmsApi/DataContracts/4_5_1_1_10_Order_Wheelchairs.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Runtime.Serialization;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 |
8 | namespace FairMark.OmsApi.DataContracts
9 | {
10 | ///
11 | /// Code emission order.
12 | /// 4.5.1. Метод «Создать заказ на эмиссию кодов маркировки»
13 | /// 4.5.1.1.10 Расширения для производителей кресел-колясок, Таблица 23.
14 | ///
15 | [DataContract]
16 | public partial class Order_Wheelchairs : Order
17 | {
18 | /// Contact Person (Контактное лицо)
19 | [DataMember(Name = "contactPerson", IsRequired = false)]
20 | public string ContactPerson { get; set; }
21 |
22 | /// Marking Manufacturing Type (Способ изготовления)
23 | [DataMember(Name = "createMethodType", IsRequired = true)]
24 | public CreateMethodTypes CreateMethodType { get; set; }
25 |
26 | /// Production Order ID (Идентификатор производственного заказа)
27 | [DataMember(Name = "productionOrderId", IsRequired = false)]
28 | public string ProductionOrderID { get; set; }
29 |
30 | /// Product Release Type (Способ выпуска товаров в оборот)
31 | [DataMember(Name = "releaseMethodType", IsRequired = true)]
32 | public ReleaseMethodTypes ReleaseMethodType { get; set; }
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/FairMark/OmsApi/DataContracts/4_5_1_1_11_OrderProduct_Otp.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Runtime.Serialization;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 |
8 | namespace FairMark.OmsApi.DataContracts
9 | {
10 | ///
11 | /// Code emission order product.
12 | /// 4.5.1. Метод «Создать заказ на эмиссию кодов маркировки»
13 | /// 4.5.1.1.11 Расширения для производителей альтернативной табачной продукции, Таблица 24.
14 | ///
15 | [DataContract]
16 | public class OrderProduct_Otp : OrderProduct
17 | {
18 | /// CIS type (Тип КМ)
19 | [DataMember(Name = "cisType", IsRequired = false)]
20 | public CisTypes? CisType { get; set; }
21 |
22 | ///
23 | /// Максимальная розничная цена.
24 | ///
25 | ///
26 | /// Примечание*: Поле «mrp» (Максимальная розничная цена) является обязательным
27 | /// для заполнения, максимально розничная цена должна указываться в копейках, с точностью
28 | /// до единицы, например, если цена 105 рублей и 1 копейка, то это число 10501, для блока
29 | /// это сумма всех пачек, также в копейках.
///
30 | [DataMember(Name = "mrp", IsRequired = true)]
31 | public string MaxRetailPrice { get; set; }
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/FairMark/OmsApi/DataContracts/4_5_1_1_12_Order_Water.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Runtime.Serialization;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 |
8 | namespace FairMark.OmsApi.DataContracts
9 | {
10 | ///
11 | /// Code emission order.
12 | /// 4.5.1. Метод «Создать заказ на эмиссию кодов маркировки»
13 | /// 4.5.1.1.12 Расширения для производителей упакованной воды, Таблица 26.
14 | ///
15 | [DataContract]
16 | public partial class Order_Water : Order
17 | {
18 | /// Contact Person (Контактное лицо)
19 | [DataMember(Name = "contactPerson", IsRequired = false)]
20 | public string ContactPerson { get; set; }
21 |
22 | /// Marking Manufacturing Type (Способ изготовления)
23 | [DataMember(Name = "createMethodType", IsRequired = true)]
24 | public CreateMethodTypes CreateMethodType { get; set; }
25 |
26 | /// Production Order ID (Идентификатор производственного заказа)
27 | [DataMember(Name = "productionOrderId", IsRequired = false)]
28 | public string ProductionOrderID { get; set; }
29 |
30 | /// Product Release Type (Способ выпуска товаров в оборот)
31 | [DataMember(Name = "releaseMethodType", IsRequired = true)]
32 | public ReleaseMethodTypes ReleaseMethodType { get; set; }
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/FairMark/OmsApi/DataContracts/4_5_1_1_13_OrderProduct_Beer.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Runtime.Serialization;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 |
8 | namespace FairMark.OmsApi.DataContracts
9 | {
10 | ///
11 | /// Code emission order product.
12 | /// 4.5.1. Метод «Создать заказ на эмиссию кодов маркировки»
13 | /// 4.5.1.1.13 Расширения для производителей пива, напитков,
14 | /// изготавливаемых на основе пива и слабоалкогольных напитков, Таблица 28.
15 | ///
16 | [DataContract]
17 | public class OrderProduct_Beer : OrderProduct
18 | {
19 | /// CIS type (Тип КМ)
20 | [DataMember(Name = "cisType", IsRequired = false)]
21 | public CisTypes? CisType { get; set; }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/FairMark/OmsApi/DataContracts/4_5_1_1_13_Order_Beer.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Runtime.Serialization;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 |
8 | namespace FairMark.OmsApi.DataContracts
9 | {
10 | ///
11 | /// Code emission order.
12 | /// 4.5.1. Метод «Создать заказ на эмиссию кодов маркировки»
13 | /// 4.5.1.1.13 Расширения для производителей пива, напитков,
14 | /// изготавливаемых на основе пива и слабоалкогольных напитков, Таблица 27.
15 | ///
16 | [DataContract]
17 | public partial class Order_Beer : Order
18 | {
19 | /// Contact Person (Контактное лицо)
20 | [DataMember(Name = "contactPerson", IsRequired = false)]
21 | public string ContactPerson { get; set; }
22 |
23 | /// Marking Manufacturing Type (Способ изготовления)
24 | [DataMember(Name = "createMethodType", IsRequired = true)]
25 | public CreateMethodTypes CreateMethodType { get; set; }
26 |
27 | /// Production Order ID (Идентификатор производственного заказа)
28 | [DataMember(Name = "productionOrderId", IsRequired = false)]
29 | public string ProductionOrderID { get; set; }
30 |
31 | /// Product Release Type (Способ выпуска товаров в оборот)
32 | [DataMember(Name = "releaseMethodType", IsRequired = true)]
33 | public ReleaseMethodTypes ReleaseMethodType { get; set; }
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/FairMark/OmsApi/DataContracts/4_5_1_1_1_OrderProduct_Tobacco.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Runtime.Serialization;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 |
8 | namespace FairMark.OmsApi.DataContracts
9 | {
10 | ///
11 | /// Code emission order product.
12 | /// 4.5.1. Метод «Создать заказ на эмиссию кодов маркировки»
13 | /// 4.5.1.1.1 Расширения для табачной промышленности, Таблица 7.
14 | ///
15 | [DataContract]
16 | public class OrderProduct_Tobacco : OrderProduct
17 | {
18 | ///
19 | /// Максимальная розничная цена.
20 | ///
21 | ///
22 | /// Примечание*: Поле «mrp» (Максимальная розничная цена) является обязательным
23 | /// для заполнения, максимально розничная цена должна указываться в копейках, с точностью
24 | /// до единицы, например, если цена 105 рублей и 1 копейка, то это число 10501, для блока
25 | /// это сумма всех пачек, также в копейках.
///
26 | [DataMember(Name = "mrp", IsRequired = true)]
27 | public string MaxRetailPrice { get; set; }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/FairMark/OmsApi/DataContracts/4_5_1_1_1_Order_Tobacco.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Runtime.Serialization;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 |
8 | namespace FairMark.OmsApi.DataContracts
9 | {
10 | ///
11 | /// Code emission order.
12 | /// 4.5.1. Метод «Создать заказ на эмиссию кодов маркировки»
13 | /// 4.5.1.1.1 Расширения для табачной промышленности, Таблица 8.
14 | ///
15 | [DataContract]
16 | public partial class Order_Tobacco : Order
17 | {
18 | ///
19 | /// Expected Start Date (Ожидаемая дата начала производства продукции по данному заказу).
20 | ///
21 | ///
22 | /// Формат: (yyyy-mm-dd).
23 | ///
24 | /// )
25 | [DataMember(Name = "expectedStartDate", IsRequired = false)]
26 | public string ExpectedStartDate { get; set; }
27 |
28 | /// Factory Address (Адрес производства)
29 | [DataMember(Name = "factoryAddress", IsRequired = false)]
30 | public string FactoryAddress { get; set; }
31 |
32 | /// Factory Country (Страна производителя)
33 | [DataMember(Name = "factoryCountry", IsRequired = true)]
34 | public string FactoryCountry { get; set; }
35 |
36 | /// Factory Identifier (GLN) Идентификатор производства. (Глобальный номер места нахождения)
37 | [DataMember(Name = "factoryId", IsRequired = true)]
38 | public string FactoryID { get; set; }
39 |
40 | /// Factory Name (Наименование производства)
41 | [DataMember(Name = "factoryName", IsRequired = false)]
42 | public string FactoryName { get; set; }
43 |
44 | /// PO Number (Номер заказа)
45 | [DataMember(Name = "poNumber", IsRequired = false)]
46 | public string PoNumber { get; set; }
47 |
48 | /// Product Code (SKU) Код продукта (SKU)
49 | [DataMember(Name = "productCode", IsRequired = true)]
50 | public string ProductCode { get; set; }
51 |
52 | /// Product Description (Описание продукта)
53 | [DataMember(Name = "productDescription", IsRequired = true)]
54 | public string ProductDescription { get; set; }
55 |
56 | /// Line Identifier (Идентификатор производственной линии)
57 | [DataMember(Name = "productionLineId", IsRequired = true)]
58 | public string ProductionLineID { get; set; }
59 | }
60 | }
61 |
--------------------------------------------------------------------------------
/FairMark/OmsApi/DataContracts/4_5_1_1_2_OrderProduct_Lp.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Runtime.Serialization;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 |
8 | namespace FairMark.OmsApi.DataContracts
9 | {
10 | ///
11 | /// Code emission order product.
12 | /// 4.5.1. Метод «Создать заказ на эмиссию кодов маркировки»
13 | /// 4.5.1.1.2 Расширения для лёгкой промышленности – категория товарной группы
14 | /// «Предметы одежды, белье постельное, столовое, туалетное и кухонное», Таблица 10.
15 | ///
16 | ///
17 | /// Примечание*: Поле «exporterTaxpayerId» становится обязательным, если в поле
18 | /// releaseMethod (способ выпуска товара в оборот) было выбрано значение
19 | /// «CROSSBORDER» (Ввезен в РФ из стран ЕАЭС).
20 | ///
21 | [DataContract]
22 | public class OrderProduct_Lp : OrderProduct
23 | {
24 | /// CIS type (Тип КМ)
25 | [DataMember(Name = "cisType", IsRequired = false)]
26 | public CisTypes? CisType { get; set; }
27 |
28 | /// ИНН/УНБ (или аналог) экспортера
29 | [DataMember(Name = "exporterTaxpayerId", IsRequired = false)]
30 | public string ExporterTaxpayerID { get; set; }
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/FairMark/OmsApi/DataContracts/4_5_1_1_2_Order_Lp.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Runtime.Serialization;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 |
8 | namespace FairMark.OmsApi.DataContracts
9 | {
10 | ///
11 | /// Code emission order.
12 | /// 4.5.1. Метод «Создать заказ на эмиссию кодов маркировки»
13 | /// 4.5.1.1.2 Расширения для лёгкой промышленности – категория товарной группы
14 | /// «Предметы одежды, белье постельное, столовое, туалетное и кухонное», Таблица 9.
15 | ///
16 | [DataContract]
17 | public partial class Order_Lp : Order
18 | {
19 | /// Contact Person (Контактное лицо)
20 | [DataMember(Name = "contactPerson", IsRequired = false)]
21 | public string ContactPerson { get; set; }
22 |
23 | /// Marking Manufacturing Type (Способ изготовления)
24 | [DataMember(Name = "createMethodType", IsRequired = true)]
25 | public CreateMethodTypes CreateMethodType { get; set; }
26 |
27 | /// Production Order ID (Идентификатор производственного заказа)
28 | [DataMember(Name = "productionOrderId", IsRequired = false)]
29 | public string ProductionOrderID { get; set; }
30 |
31 | /// Product Release Type (Способ выпуска товаров в оборот)
32 | [DataMember(Name = "releaseMethodType", IsRequired = true)]
33 | public ReleaseMethodTypes ReleaseMethodType { get; set; }
34 |
35 | /// Признак того, что товар произведен/приобретен до даты запрета оборота немаркированных товаров по данной ТГ
36 | [DataMember(Name = "remainsAvailable", IsRequired = false)]
37 | public bool? RemainsAvailable { get; set; }
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/FairMark/OmsApi/DataContracts/4_5_1_1_3_OrderProduct_Shoes.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Runtime.Serialization;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 |
8 | namespace FairMark.OmsApi.DataContracts
9 | {
10 | ///
11 | /// Code emission order product.
12 | /// 4.5.1. Метод «Создать заказ на эмиссию кодов маркировки»
13 | /// 4.5.1.1.3 Расширения для лёгкой промышленности – категория товарной группы «Обувные товары», Таблица 12.
14 | ///
15 | ///
16 | /// Примечание*: Поле «exporterTaxpayerId» становится обязательным, если в поле
17 | /// releaseMethod (способ выпуска товара в оборот) было выбрано значение
18 | /// «CROSSBORDER» (Ввезен в РФ из стран ЕАЭС).
19 | ///
20 | [DataContract]
21 | public class OrderProduct_Shoes : OrderProduct
22 | {
23 | /// ИНН/УНБ (или аналог) экспортера
24 | [DataMember(Name = "exporterTaxpayerId", IsRequired = false)]
25 | public string ExporterTaxpayerID { get; set; }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/FairMark/OmsApi/DataContracts/4_5_1_1_3_Order_Shoes.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Runtime.Serialization;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 |
8 | namespace FairMark.OmsApi.DataContracts
9 | {
10 | ///
11 | /// Code emission order.
12 | /// 4.5.1. Метод «Создать заказ на эмиссию кодов маркировки»
13 | /// 4.5.1.1.3 Расширения для лёгкой промышленности – категория товарной группы «Обувные товары», Таблица 11.
14 | ///
15 | ///
16 | /// Примечание*: значение «REMAINS» справочника «Способ выпуска товаров в
17 | /// оборот» не применимо для категории товаров «Обувные товары».
18 | ///
19 | [DataContract]
20 | public partial class Order_Shoes : Order
21 | {
22 | /// Contact Person (Контактное лицо)
23 | [DataMember(Name = "contactPerson", IsRequired = false)]
24 | public string ContactPerson { get; set; }
25 |
26 | /// Marking Manufacturing Type (Способ изготовления)
27 | [DataMember(Name = "createMethodType", IsRequired = true)]
28 | public CreateMethodTypes CreateMethodType { get; set; }
29 |
30 | /// Production Order ID (Идентификатор производственного заказа)
31 | [DataMember(Name = "productionOrderId", IsRequired = false)]
32 | public string ProductionOrderID { get; set; }
33 |
34 | /// Product Release Type (Способ выпуска товаров в оборот)
35 | [DataMember(Name = "releaseMethodType", IsRequired = true)]
36 | public ReleaseMethodTypes ReleaseMethodType { get; set; }
37 |
38 | /// Признак того, что товар произведен/приобретен до даты запрета оборота немаркированных товаров по данной ТГ
39 | [DataMember(Name = "remainsAvailable", IsRequired = false)]
40 | public bool? RemainsAvailable { get; set; }
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/FairMark/OmsApi/DataContracts/4_5_1_1_4_OrderProduct_Tires.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Runtime.Serialization;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 |
8 | namespace FairMark.OmsApi.DataContracts
9 | {
10 | ///
11 | /// Code emission order product.
12 | /// 4.5.1. Метод «Создать заказ на эмиссию кодов маркировки»
13 | /// 4.5.1.1.4 Расширения для производителей шин – категория товарной группы
14 | /// «Шины и покрышки пневматические резиновые новые», Таблица 14.
15 | ///
16 | ///
17 | /// Примечание*: Поле «exporterTaxpayerId» становится обязательным, если в поле
18 | /// releaseMethod (способ выпуска товара в оборот) было выбрано значение
19 | /// «CROSSBORDER» (Ввезен в РФ из стран ЕАЭС).
20 | ///
21 | [DataContract]
22 | public class OrderProduct_Tires : OrderProduct
23 | {
24 | /// ИНН/УНБ (или аналог) экспортера
25 | [DataMember(Name = "exporterTaxpayerId", IsRequired = false)]
26 | public string ExporterTaxpayerID { get; set; }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/FairMark/OmsApi/DataContracts/4_5_1_1_4_Order_Tires.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Runtime.Serialization;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 |
8 | namespace FairMark.OmsApi.DataContracts
9 | {
10 | ///
11 | /// Code emission order.
12 | /// 4.5.1. Метод «Создать заказ на эмиссию кодов маркировки»
13 | /// 4.5.1.1.4 Расширения для производителей шин – категория товарной группы
14 | /// «Шины и покрышки пневматические резиновые новые», Таблица 13.
15 | ///
16 | [DataContract]
17 | public partial class Order_Tires : Order
18 | {
19 | /// Contact Person (Контактное лицо)
20 | [DataMember(Name = "contactPerson", IsRequired = false)]
21 | public string ContactPerson { get; set; }
22 |
23 | /// Marking Manufacturing Type (Способ изготовления)
24 | [DataMember(Name = "createMethodType", IsRequired = true)]
25 | public CreateMethodTypes CreateMethodType { get; set; }
26 |
27 | /// Production Order ID (Идентификатор производственного заказа)
28 | [DataMember(Name = "productionOrderId", IsRequired = false)]
29 | public string ProductionOrderID { get; set; }
30 |
31 | /// Product Release Type (Способ выпуска товаров в оборот)
32 | [DataMember(Name = "releaseMethodType", IsRequired = true)]
33 | public ReleaseMethodTypes ReleaseMethodType { get; set; }
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/FairMark/OmsApi/DataContracts/4_5_1_1_5_OrderProduct_Perfum.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Runtime.Serialization;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 |
8 | namespace FairMark.OmsApi.DataContracts
9 | {
10 | ///
11 | /// Code emission order product.
12 | /// 4.5.1. Метод «Создать заказ на эмиссию кодов маркировки»
13 | /// 4.5.1.1.5 Расширения для производителей парфюмерной продукции – категория
14 | /// товарной группы «Духи и туалетная вода», Таблица 16.
15 | ///
16 | ///
17 | /// Примечание*: Поле «exporterTaxpayerId» становится обязательным, если в поле
18 | /// releaseMethod (способ выпуска товара в оборот) было выбрано значение
19 | /// «CROSSBORDER» (Ввезен в РФ из стран ЕАЭС).
20 | ///
21 | [DataContract]
22 | public class OrderProduct_Perfum : OrderProduct
23 | {
24 | /// CIS type (Тип КМ)
25 | [DataMember(Name = "cisType", IsRequired = false)]
26 | public CisTypes? CisType { get; set; }
27 |
28 | /// ИНН/УНБ (или аналог) экспортера
29 | [DataMember(Name = "exporterTaxpayerId", IsRequired = false)]
30 | public string ExporterTaxpayerID { get; set; }
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/FairMark/OmsApi/DataContracts/4_5_1_1_5_Order_Perfum.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Runtime.Serialization;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 |
8 | namespace FairMark.OmsApi.DataContracts
9 | {
10 | ///
11 | /// Code emission order.
12 | /// 4.5.1. Метод «Создать заказ на эмиссию кодов маркировки»
13 | /// 4.5.1.1.5 Расширения для производителей парфюмерной продукции – категория
14 | /// товарной группы «Духи и туалетная вода», Таблица 15.
15 | ///
16 | [DataContract]
17 | public partial class Order_Perfum : Order
18 | {
19 | /// Contact Person (Контактное лицо)
20 | [DataMember(Name = "contactPerson", IsRequired = false)]
21 | public string ContactPerson { get; set; }
22 |
23 | /// Marking Manufacturing Type (Способ изготовления)
24 | [DataMember(Name = "createMethodType", IsRequired = true)]
25 | public CreateMethodTypes CreateMethodType { get; set; }
26 |
27 | /// Production Order ID (Идентификатор производственного заказа)
28 | [DataMember(Name = "productionOrderId", IsRequired = false)]
29 | public string ProductionOrderID { get; set; }
30 |
31 | /// Product Release Type (Способ выпуска товаров в оборот)
32 | [DataMember(Name = "releaseMethodType", IsRequired = true)]
33 | public ReleaseMethodTypes ReleaseMethodType { get; set; }
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/FairMark/OmsApi/DataContracts/4_5_1_1_6_OrderProduct_Photo.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Runtime.Serialization;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 |
8 | namespace FairMark.OmsApi.DataContracts
9 | {
10 | ///
11 | /// Code emission order product.
12 | /// 4.5.1. Метод «Создать заказ на эмиссию кодов маркировки»
13 | /// 4.5.1.1.6 Расширения для производителей фототоваров – категория товарной группы
14 | /// «Фотокамеры (кроме кинокамер), фотовспышки и лампы-вспышки», Таблица 17.
15 | ///
16 | ///
17 | /// Примечание*: Поле «exporterTaxpayerId» становится обязательным, если в поле
18 | /// releaseMethod (способ выпуска товара в оборот) было выбрано значение
19 | /// «CROSSBORDER» (Ввезен в РФ из стран ЕАЭС).
20 | ///
21 | [DataContract]
22 | public class OrderProduct_Photo : OrderProduct
23 | {
24 | /// CIS type (Тип КМ)
25 | [DataMember(Name = "cisType", IsRequired = false)]
26 | public CisTypes? CisType { get; set; }
27 |
28 | /// ИНН/УНБ (или аналог) экспортера
29 | [DataMember(Name = "exporterTaxpayerId", IsRequired = false)]
30 | public string ExporterTaxpayerID { get; set; }
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/FairMark/OmsApi/DataContracts/4_5_1_1_6_Order_Photo.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Runtime.Serialization;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 |
8 | namespace FairMark.OmsApi.DataContracts
9 | {
10 | ///
11 | /// Code emission order.
12 | /// 4.5.1. Метод «Создать заказ на эмиссию кодов маркировки»
13 | /// 4.5.1.1.6 Расширения для производителей фототоваров – категория товарной группы
14 | /// «Фотокамеры (кроме кинокамер), фотовспышки и лампы-вспышки», Таблица 17.
15 | ///
16 | ///
17 | /// Примечание*: значение «REMAINS» справочника «Способ выпуска товаров в
18 | /// оборот» не применимо для категории товаров «Фотокамеры (кроме кинокамер),
19 | /// фотовспышки и лампы-вспышки»
20 | ///
21 | [DataContract]
22 | public partial class Order_Photo : Order
23 | {
24 | /// Contact Person (Контактное лицо)
25 | [DataMember(Name = "contactPerson", IsRequired = false)]
26 | public string ContactPerson { get; set; }
27 |
28 | /// Marking Manufacturing Type (Способ изготовления)
29 | [DataMember(Name = "createMethodType", IsRequired = true)]
30 | public CreateMethodTypes CreateMethodType { get; set; }
31 |
32 | /// Production Order ID (Идентификатор производственного заказа)
33 | [DataMember(Name = "productionOrderId", IsRequired = false)]
34 | public string ProductionOrderID { get; set; }
35 |
36 | /// Product Release Type (Способ выпуска товаров в оборот)
37 | [DataMember(Name = "releaseMethodType", IsRequired = true)]
38 | public ReleaseMethodTypes ReleaseMethodType { get; set; }
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/FairMark/OmsApi/DataContracts/4_5_1_1_7_Order_Pharma.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Runtime.Serialization;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 |
8 | namespace FairMark.OmsApi.DataContracts
9 | {
10 | ///
11 | /// Code emission order.
12 | /// 4.5.1. Метод «Создать заказ на эмиссию кодов маркировки»
13 | /// 4.5.1.1.7 Расширения для фармацевтической промышленности, Таблица 19.
14 | ///
15 | [DataContract]
16 | public partial class Order_Pharma : Order
17 | {
18 | /// Is code emission free (Признак оплаты эмиссии КМ: true - не подлежит оплате, false - подлежит оплате (значение по умолчанию)
19 | [DataMember(Name = "freeCode", IsRequired = false)]
20 | public bool? FreeCode { get; set; }
21 |
22 | /// Payment Type (Тип оплаты: 1 - Оплата по эмиссии, 2 - Оплата по нанесению (значение по умолчанию)
23 | [DataMember(Name = "paymentType", IsRequired = false)]
24 | public int? PaymentType { get; set; }
25 |
26 | /// Subject ID (Субъект обращения)
27 | [DataMember(Name = "subjectId", IsRequired = true)]
28 | public string SubjectID { get; set; }
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/FairMark/OmsApi/DataContracts/4_5_1_1_8_OrderProduct_Milk.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Runtime.Serialization;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 |
8 | namespace FairMark.OmsApi.DataContracts
9 | {
10 | ///
11 | /// Code emission order product.
12 | /// 4.5.1. Метод «Создать заказ на эмиссию кодов маркировки»
13 | /// 4.5.1.1.8 Расширения для производителей молока, Таблица 20.
14 | ///
15 | [DataContract]
16 | public class OrderProduct_Milk : OrderProduct
17 | {
18 | /// CIS type (Тип КМ)
19 | [DataMember(Name = "cisType", IsRequired = false)]
20 | public CisTypes? CisType { get; set; }
21 |
22 | ///
23 | /// Expiry date of the product (expiration date more than 72 hours)
24 | /// Дата окончания срока годности продукции (срок хранения более 72 часов)
25 | ///
26 | [DataMember(Name = "expDate", IsRequired = false)]
27 | public string ExpDate { get; set; }
28 |
29 | /// Expiration date of the product (shelf life less than 72 hours)
30 | /// Дата окончания срока годности продукции (срок хранения менее 72 часов)
31 | ///
32 | [DataMember(Name = "expDate72", IsRequired = false)]
33 | public string ExpDate72 { get; set; }
34 |
35 | /// ИНН/УНБ (или аналог) экспортера
36 | ///
37 | /// Примечание*: Поле «exporterTaxpayerId» становится обязательным, если в поле
38 | /// releaseMethodType (способ выпуска товара в оборот) было выбрано значение
39 | /// «CROSSBORDER» (Ввезен в РФ из стран ЕАЭС).
40 | ///
41 | [DataMember(Name = "exporterTaxpayerId", IsRequired = false)]
42 | public string ExporterTaxpayerID { get; set; }
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/FairMark/OmsApi/DataContracts/4_5_1_1_8_Order_Milk.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Runtime.Serialization;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 |
8 | namespace FairMark.OmsApi.DataContracts
9 | {
10 | ///
11 | /// Code emission order.
12 | /// 4.5.1. Метод «Создать заказ на эмиссию кодов маркировки»
13 | /// 4.5.1.1.8 Расширения для производителей молока, Таблица 21.
14 | ///
15 | ///
16 | /// Примечание*: значения «REMAINS», «REMARK» справочника «Способ выпуска
17 | /// товаров в оборот» не применимы для категории товаров «Молочная продукция».
18 | ///
19 | [DataContract]
20 | public class Order_Milk : Order
21 | {
22 | ///
23 | /// Контактное лицо.
24 | ///
25 | [DataMember(Name = "contactPerson", IsRequired = false)]
26 | public string ContactPerson { get; set; }
27 |
28 | ///
29 | /// Способ выпуска товаров в оборот.
30 | /// Справочное значение «Способ выпуска товаров в оборот»
31 | /// см. раздел 5.3.1.1.
32 | ///
33 | [DataMember(Name = "releaseMethodType", IsRequired = true)]
34 | public ReleaseMethodTypes ReleaseMethodType { get; set; }
35 |
36 | ///
37 | /// Способ изготовления СИ.
38 | /// Справочное значение «Способ изготовления»
39 | /// см. раздел 5.3.1.3.
40 | ///
41 | [DataMember(Name = "createMethodType", IsRequired = true)]
42 | public CreateMethodTypes CreateMethodType { get; set; }
43 |
44 | ///
45 | /// Идентификатор производственного заказа.
46 | ///
47 | [DataMember(Name = "productionOrderId", IsRequired = true)]
48 | public string ProductionOrderID { get; set; }
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/FairMark/OmsApi/DataContracts/4_5_1_1_9_Order_Bicycle.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Runtime.Serialization;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 |
8 | namespace FairMark.OmsApi.DataContracts
9 | {
10 | ///
11 | /// Code emission order.
12 | /// 4.5.1. Метод «Создать заказ на эмиссию кодов маркировки»
13 | /// 4.5.1.1.9 Расширения для производителей велосипедов и велосипедных рам, Таблица 22.
14 | ///
15 | [DataContract]
16 | public partial class Order_Bicycle : Order
17 | {
18 | /// Contact Person (Контактное лицо)
19 | [DataMember(Name = "contactPerson", IsRequired = false)]
20 | public string ContactPerson { get; set; }
21 |
22 | /// Marking Manufacturing Type (Способ изготовления)
23 | [DataMember(Name = "createMethodType", IsRequired = true)]
24 | public CreateMethodTypes CreateMethodType { get; set; }
25 |
26 | /// Production Order ID (Идентификатор производственного заказа)
27 | [DataMember(Name = "productionOrderId", IsRequired = false)]
28 | public string ProductionOrderID { get; set; }
29 |
30 | /// Product Release Type (Способ выпуска товаров в оборот)
31 | [DataMember(Name = "releaseMethodType", IsRequired = true)]
32 | public ReleaseMethodTypes ReleaseMethodType { get; set; }
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/FairMark/OmsApi/DataContracts/4_5_1_2_OrderResponse.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Runtime.Serialization;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 |
8 | namespace FairMark.OmsApi.DataContracts
9 | {
10 | ///
11 | /// Code emission order response.
12 | /// 4.5.1. Метод «Создать заказ на эмиссию кодов маркировки»
13 | /// 4.5.1.2. Ответ на запрос
14 | ///
15 | [DataContract]
16 | public class OrderResponse
17 | {
18 | [DataMember(Name = "omsId")]
19 | public string OmsID { get; set; }
20 |
21 | [DataMember(Name = "orderId")]
22 | public Guid OrderID { get; set; }
23 |
24 | [DataMember(Name = "expectedCompleteTimestamp")]
25 | public long ExpectedCompleteTimestamp { get; set; }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/FairMark/OmsApi/DataContracts/4_5_2_1_0_DropoutReport.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Runtime.Serialization;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 |
8 | namespace FairMark.OmsApi.DataContracts
9 | {
10 | ///
11 | /// 4.5.2.1. Метод «Отправить отчёт о выбытии/отбраковке КМ», Таблица 32.
12 | ///
13 | ///
14 | /// Примечание. Количество КМ в отчёте о выбытии не должно превышать 30 000 кодов.
15 | /// Примечание. Для ТГ «Табачная продукция» и «Никотиносодержащая продукция»
16 | /// допустимо указывать в массиве выбывших КМ транспортные и групповые упаковки с
17 | /// указанием признака списания всех вложенных элементов.
18 | /// Массив выбывших КМ потребительской упаковки для ТГ «Табачная продукция» и
19 | /// «Никотиносодержащая продукция» обязательно должен содержать код идентификации
20 | /// (GTIN + Serial).
21 | ///
22 | [DataContract]
23 | public partial class DropoutReport
24 | {
25 | /// Dropout reason (Причина выбытия)
26 | [DataMember(Name = "dropoutReason", IsRequired = true)]
27 | public DropoutReasons DropoutReason { get; set; }
28 |
29 | /// Identification Codes that were dropped out (Информация о выбывших КМ)
30 | [DataMember(Name = "sntins", IsRequired = true)]
31 | public List Sntins { get; set; } = new List();
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/FairMark/OmsApi/DataContracts/4_5_2_1_1_DropoutReport_Tobacco.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Runtime.Serialization;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 |
8 | namespace FairMark.OmsApi.DataContracts
9 | {
10 | ///
11 | /// 4.5.2.1. Метод «Отправить отчёт о выбытии/отбраковке КМ»
12 | /// 4.5.2.1.1 Расширения для табачной промышленности, Таблица 33.
13 | ///
14 | ///
15 | /// Примечание*: В случае отсутствия полей sourceDocDate и sourceDocNum СУЗ
16 | /// заполняет их автоматически следующими значениями:
17 | /// 1) sourceDocDate – текущая дата в unixTime UTC:0 в миллисекундах;
18 | /// 2) sourceDocNum – текущая дата в unixTime UTC:0 в миллисекундах.
19 | ///
20 | [DataContract]
21 | public partial class DropoutReport_Tobacco : DropoutReport
22 | {
23 | /// Address where the write-off was made (Адрес, где было произведено списание)
24 | [DataMember(Name = "address", IsRequired = true)]
25 | public string Address { get; set; }
26 |
27 | /// Taxpayer Identification Number (Идентификационный номер налогоплательщика)
28 | [DataMember(Name = "participantId", IsRequired = true)]
29 | public string ParticipantID { get; set; }
30 |
31 | /// Production Line Number (Идентификатор производственной линии)
32 | [DataMember(Name = "productionLineId", IsRequired = false)]
33 | public string ProductionLineID { get; set; }
34 |
35 | /// The Id of the production order (Идентификатор производственного заказа)
36 | [DataMember(Name = "productionOrderId", IsRequired = false)]
37 | public string ProductionOrderID { get; set; }
38 |
39 | /// Dropout document date (Дата первичного документа)
40 | [DataMember(Name = "sourceDocDate", IsRequired = false)]
41 | public string SourceDocDate { get; set; }
42 |
43 | /// Dropout document number (Номер первичного документа)
44 | [DataMember(Name = "sourceDocNum", IsRequired = false)]
45 | public string SourceDocNum { get; set; }
46 |
47 | /// Specifies whether to write off all nested items (Признак списания всех вложенных элементов)
48 | [DataMember(Name = "withChild", IsRequired = true)]
49 | public bool WithChild { get; set; }
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/FairMark/OmsApi/DataContracts/4_5_2_1_2_DropoutReport_Ncp.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Runtime.Serialization;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 |
8 | namespace FairMark.OmsApi.DataContracts
9 | {
10 | ///
11 | /// 4.5.2.1. Метод «Отправить отчёт о выбытии/отбраковке КМ»
12 | /// 4.5.2.1.2 Расширения для никотиносодержащей продукции, Таблица 34.
13 | ///
14 | ///
15 | /// Примечание: В случае отсутствия полей sourceDocDate и sourceDocNum СУЗ
16 | /// заполняет их автоматически следующими значениями:
17 | /// 3) sourceDocDate – текущая дата в unixTime UTC:0 в миллисекундах;
18 | /// 4) sourceDocNum – текущая дата в unixTime UTC:0 в миллисекундах.
19 | ///
20 | [DataContract]
21 | public partial class DropoutReport_Ncp : DropoutReport
22 | {
23 | /// Address where the write-off was made (Адрес, где было произведено списание)
24 | [DataMember(Name = "address", IsRequired = true)]
25 | public string Address { get; set; }
26 |
27 | /// Taxpayer Identification Number (Идентификационный номер налогоплательщика)
28 | [DataMember(Name = "participantId", IsRequired = true)]
29 | public string ParticipantID { get; set; }
30 |
31 | /// Production Line Number (Идентификатор производственной линии)
32 | [DataMember(Name = "productionLineId", IsRequired = false)]
33 | public string ProductionLineID { get; set; }
34 |
35 | /// The Id of the production order (Идентификатор производственного заказа)
36 | [DataMember(Name = "productionOrderId", IsRequired = false)]
37 | public string ProductionOrderID { get; set; }
38 |
39 | /// Dropout document date (Дата документа)
40 | [DataMember(Name = "sourceDocDate", IsRequired = false)]
41 | public string SourceDocDate { get; set; }
42 |
43 | /// Dropout document number (Идентификатор документа, на основании которого осуществляется списание)
44 | [DataMember(Name = "sourceDocNum", IsRequired = false)]
45 | public string SourceDocNum { get; set; }
46 |
47 | /// Specifies whether to write off all nested items (Признак списания всех вложенных элементов)
48 | [DataMember(Name = "withChild", IsRequired = true)]
49 | public bool WithChild { get; set; }
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/FairMark/OmsApi/DataContracts/4_5_3+4_5_9_AggregationUnit.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Runtime.Serialization;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 |
8 | namespace FairMark.OmsApi.DataContracts
9 | {
10 | ///
11 | /// 4.5.3. Метод «Отправить отчёт об агрегации КМ»
12 | /// 4.5.9. Метод «Получить информацию об агрегации»
13 | /// 4.5.9.2. Ответ на запрос, Таблица 38.
14 | ///
15 | [DataContract]
16 | public class AggregationUnit
17 | {
18 | /// Number of goods actually aggregated in the unit (Фактически упаковано)
19 | [DataMember(Name = "aggregatedItemsCount", IsRequired = true)]
20 | public int AggregatedItemsCount { get; set; }
21 |
22 | /// Aggregation operation type (Тип агрегации)
23 | [DataMember(Name = "aggregationType", IsRequired = true)]
24 | public AggregationTypes AggregationType { get; set; }
25 |
26 | /// Aggregation Unit Capacity (Емкость упаковки)
27 | [DataMember(Name = "aggregationUnitCapacity", IsRequired = true)]
28 | public int AggregationUnitCapacity { get; set; }
29 |
30 | /// List of the Aggregated Identification Codes (Список агрегированных КМ)
31 | [DataMember(Name = "sntins", IsRequired = true)]
32 | public List Sntins { get; set; } = new List();
33 |
34 | /// Identification Code of Aggregation Unit (КМ агрегата)
35 | [DataMember(Name = "unitSerialNumber", IsRequired = true)]
36 | public string UnitSerialNumber { get; set; }
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/FairMark/OmsApi/DataContracts/4_5_3_AggregationReport.cs:
--------------------------------------------------------------------------------
1 | namespace FairMark.OmsApi.DataContracts
2 | {
3 | using System.Collections.Generic;
4 | using System.Runtime.Serialization;
5 |
6 | ///
7 | /// 4.5.3. Метод «Отправить отчёт об агрегации КМ»
8 | ///
9 | [DataContract]
10 | public class AggregationReport
11 | {
12 | ///
13 | /// Идентификационный номер налогоплательщика
14 | ///
15 | [DataMember(Name = "participantId")]
16 | public string ParticipantId { get; set; }
17 |
18 | ///
19 | /// Массив единиц агрегации
20 | ///
21 | [DataMember(Name = "aggregationUnits")]
22 | public List AggregationUnits { get; set; }
23 | }
24 |
25 |
26 | }
27 |
--------------------------------------------------------------------------------
/FairMark/OmsApi/DataContracts/4_5_4_1_0_UtilisationReport.cs:
--------------------------------------------------------------------------------
1 | namespace FairMark.OmsApi.DataContracts
2 | {
3 | using System.Collections.Generic;
4 | using System.Runtime.Serialization;
5 |
6 | ///
7 | /// 4.5.4.1. Метод «Отправить отчёт об использовании (нанесении) КМ», Таблица 44.
8 | ///
9 | ///
10 | /// Примечание:
11 | /// 1) для участников, не являющихся Операторами ЕАЭС, данный метод в настоящий
12 | /// момент доступен по товарным группам «Табачная продукция», «Молоко», «Лекарственные
13 | /// препараты для медицинского применения», «Альтернативная табачная продукция»,
14 | /// «Упакованная вода», «Пиво, напитки, изготавливаемые на основе пива и
15 | /// слабоалкогольные напитки» (структура запроса, направляемого по пивным напиткам,
16 | /// должна содержать базовый объект «UtilisationReport» без расширений для товарной
17 | /// группы) и «Никотиносодержащая продукция». Для следующих товарных групп отчет
18 | /// формируется автоматически:
19 | /// - «Велосипеды и велосипедные рамы»
20 | /// - «Кресла-коляски»
21 | /// - «Предметы одежды, белье постельное, столовое, туалетное и кухонное»
22 | /// - «Обувные товары»
23 | /// - «Духи и туалетная вода»
24 | /// - «Шины и покрышки пневматические резиновые новые»
25 | /// - «Фотокамеры (кроме кинокамер), фотовспышки и лампы-вспышки»
26 | /// Впоследствии, по мере готовности информационной системы, автоматическая
27 | /// отправка отчетов о нанесении будет отключена.Отчеты об использовании(нанесении) КМ
28 | /// необходимо будет формировать и отправлять самостоятельно с помощью описываемого
29 | /// метода.
30 | /// 2) для Оператора ЕАЭС данный метод доступен по следующим товарным группам:
31 | /// - «Молоко».
32 | /// По итогам отправки отчета об использовании КМ в СУЗ необходимо получить статус
33 | /// обработки отчета(используя Метод «Получить статус обработки отчёта»), после
34 | /// получения ответа предоставляется возможным использование мотода «Получить
35 | /// квитанцию по уникальному идентификатору документа (см.раздел 4.5.16).
36 | ///
37 | [DataContract]
38 | public partial class UtilisationReport
39 | {
40 | /// List of Utilized Identification Codes (Информация об использованных КМ)
41 | [DataMember(Name = "sntins", IsRequired = true)]
42 | public List Sntins { get; set; } = new List();
43 |
44 | /// Usage type (Тип использования)
45 | [DataMember(Name = "usageType", IsRequired = true)]
46 | public UsageTypes UsageType { get; set; }
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/FairMark/OmsApi/DataContracts/4_5_4_1_1_UtilisationReport_Tobacco.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Runtime.Serialization;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 |
8 | namespace FairMark.OmsApi.DataContracts
9 | {
10 | ///
11 | /// 4.5.4.1 Метод «Отправить отчёт об использовании (нанесении) КМ»
12 | /// 4.5.4.1.1 Расширения для табачной промышленности, Таблица 44.
13 | ///
14 | [DataContract]
15 | public partial class UtilisationReport_Tobacco : UtilisationReport
16 | {
17 | /// Product Brand Name (Наименование бренда продукции)
18 | [DataMember(Name = "brandcode", IsRequired = false)]
19 | public string Brandcode { get; set; }
20 |
21 | /// Production date (Дата производства. Дата указывается с учетом часового пояса. Обозначение даты в соответствии с ГОСТ ИСО 8601–2001)
22 | /// Формат даты: yyyy-MMddTHH:mm:ss.SSSZ
23 | [DataMember(Name = "productionDate", IsRequired = false)]
24 | public string ProductionDate { get; set; }
25 |
26 | /// Production line number (Номер производственной линии)
27 | [DataMember(Name = "productionLineId", IsRequired = true)]
28 | public string ProductionLineID { get; set; }
29 |
30 | /// The Id of the production order (Идентификатор производственного заказа)
31 | [DataMember(Name = "productionOrderId", IsRequired = false)]
32 | public string ProductionOrderID { get; set; }
33 |
34 | /// Utilisation report identifier of APCS (Идентификатор отчёта о нанесении АСУТП)
35 | [DataMember(Name = "sourceReportId", IsRequired = false)]
36 | public string SourceReportID { get; set; }
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/FairMark/OmsApi/DataContracts/4_5_4_1_3_UtilisationReport_Milk.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Runtime.Serialization;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 |
8 | namespace FairMark.OmsApi.DataContracts
9 | {
10 | ///
11 | /// 4.5.4.1 Метод «Отправить отчёт об использовании (нанесении) КМ»
12 | /// 4.5.4.1.3 Расширения для производителей молока, Таблица 47.
13 | ///
14 | ///
15 | /// Примечание*: В отчёте обязательно должна быть представлена дата срока
16 | /// годности продукции в атрибуте «expDate» или «expDate72». В случае, если коды
17 | /// маркировки содержат дату срока годности продукции, отличную от значения, указанного в
18 | /// атрибутах «expDate» или «expDate72», отчёт не будет принят.
19 | /// Атрибут «accompanyingDocument» в текущей версии является необязательным и в
20 | /// дальнейшем будет исключён как устаревший.
21 | ///
22 | [DataContract]
23 | public partial class UtilisationReport_Milk : UtilisationReport
24 | {
25 | /// Производственный ветеринарный сопроводительный документ
26 | [DataMember(Name = "accompanyingDocument", IsRequired = false)]
27 | public string AccompanyingDocument { get; set; }
28 |
29 | /// Capacity/Weight (Объем/Масса)
30 | [DataMember(Name = "capacity", IsRequired = false)]
31 | public double? Capacity { get; set; }
32 |
33 | /// CIS type (Тип КМ)
34 | [DataMember(Name = "cisType", IsRequired = true)]
35 | public CisTypes CisType { get; set; }
36 |
37 | /// Date format: "yyMMdd" Expiry date of the product (expiration date more than 72 hours) (Дата окончания срока годности продукции (срок хранения более 72 часов))
38 | [DataMember(Name = "expDate", IsRequired = false)]
39 | public string ExpDate { get; set; }
40 |
41 | /// Date format: "yyMMddHHmm" Expiry date of the product (expiration date more than 72 hours) (Дата окончания срока годности продукции (срок хранения менее 72 часов))
42 | [DataMember(Name = "expDate72", IsRequired = false)]
43 | public string ExpDate72 { get; set; }
44 |
45 | /// The indication of use of ICs in production (Признак использовании КМ на производстве)
46 | /// Признак использования КМ на производстве: 0 – значение по умолчанию; 1 – КМ были использованы на производстве
47 | [DataMember(Name = "usedInProduction", IsRequired = false)]
48 | public int? UsedInProduction { get; set; }
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/FairMark/OmsApi/DataContracts/4_5_4_1_4_UtilisationReport_Otp.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Runtime.Serialization;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 |
8 | namespace FairMark.OmsApi.DataContracts
9 | {
10 | ///
11 | /// 4.5.4.1 Метод «Отправить отчёт об использовании (нанесении) КМ»
12 | /// 4.5.4.1.4 Расширения для производителей альтернативной табачной продукции, Таблица 48.
13 | ///
14 | [DataContract]
15 | public partial class UtilisationReport_Otp : UtilisationReport
16 | {
17 | /// Наименование бренда продукции
18 | [DataMember(Name = "brandcode", IsRequired = false)]
19 | public string Brandcode { get; set; }
20 |
21 | /// Идентификатор производственной линии
22 | [DataMember(Name = "productionLineId", IsRequired = true)]
23 | public string ProductionLineID { get; set; }
24 |
25 | /// Идентификатор производственного заказа
26 | [DataMember(Name = "productionOrderId", IsRequired = false)]
27 | public string ProductionOrderID { get; set; }
28 |
29 | /// Идентификатор отчёта о нанесении АСУТП
30 | [DataMember(Name = "sourceReportId", IsRequired = false)]
31 | public string SourceReportID { get; set; }
32 |
33 | /// The indication of use of ICs in production (Признак использовании КМ на производстве)
34 | [DataMember(Name = "usedInProduction", IsRequired = false)]
35 | public int? UsedInProduction { get; set; }
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/FairMark/OmsApi/DataContracts/4_5_4_1_5_UtilisationReport_Water.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Runtime.Serialization;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 |
8 | namespace FairMark.OmsApi.DataContracts
9 | {
10 | ///
11 | /// 4.5.4.1 Метод «Отправить отчёт об использовании (нанесении) КМ»
12 | /// 4.5.4.1.5 Расширения для производителей упакованной воды, Таблица 49.
13 | ///
14 | [DataContract]
15 | public partial class UtilisationReport_Water : UtilisationReport
16 | {
17 | /// The indication of use of ICs in production (Признак использовании КМ на производстве)
18 | [DataMember(Name = "usedInProduction", IsRequired = false)]
19 | public int? UsedInProduction { get; set; }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/FairMark/OmsApi/DataContracts/4_5_4_1_6_UtilisationReport_Ncp.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Runtime.Serialization;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 |
8 | namespace FairMark.OmsApi.DataContracts
9 | {
10 | ///
11 | /// 4.5.4.1 Метод «Отправить отчёт об использовании (нанесении) КМ»
12 | /// 4.5.4.1.6 Расширения для никотиносодержащей продукции, Таблица 50.
13 | ///
14 | [DataContract]
15 | public partial class UtilisationReport_Ncp : UtilisationReport
16 | {
17 | /// Наименование бренда продукции
18 | [DataMember(Name = "brandcode", IsRequired = false)]
19 | public string Brandcode { get; set; }
20 |
21 | /// Идентификатор производственной линии
22 | [DataMember(Name = "productionLineId", IsRequired = true)]
23 | public string ProductionLineID { get; set; }
24 |
25 | /// Идентификатор производственного заказа
26 | [DataMember(Name = "productionOrderId", IsRequired = false)]
27 | public string ProductionOrderID { get; set; }
28 |
29 | /// Идентификатор отчёта о нанесении АСУТП
30 | [DataMember(Name = "sourceReportId", IsRequired = false)]
31 | public string SourceReportID { get; set; }
32 |
33 | /// Production date (Дата производства. Дата указывается с учетом часового пояса. Обозначение даты в соответствии с ГОСТ ИСО 8601–2001)
34 | [DataMember(Name = "productionDate", IsRequired = false)]
35 | public string ProductionDate { get; set; }
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/FairMark/OmsApi/DataContracts/4_5_6_2_CodesDto.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Runtime.Serialization;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 |
8 | namespace FairMark.OmsApi.DataContracts
9 | {
10 | ///
11 | /// 4.5.6. Метод «Получить КМ из заказа»
12 | /// 4.5.6.2. Ответ на запрос, Таблица 55.
13 | /// 4.5.15 Метод «Получить повторно коды маркировки из заказа кодов маркировки»
14 | /// 4.5.15.3. Ответ на запрос, Таблица 78.
15 | ///
16 | [DataContract]
17 | public partial class CodesDto
18 | {
19 | /// Identifier of code block (Идентификатор блока кодов)
20 | [DataMember(Name = "blockId", IsRequired = false)]
21 | public string BlockID { get; set; }
22 |
23 | /// Identification Codes (Список КМ)
24 | [DataMember(Name = "codes", IsRequired = false)]
25 | public List Codes { get; set; }
26 |
27 | /// Уникальный идентификатор СУЗ
28 | [DataMember(Name = "omsId", IsRequired = true)]
29 | public string OmsID { get; set; }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/FairMark/OmsApi/DataContracts/4_5_7_2_PoolInfo.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Runtime.Serialization;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 |
8 | namespace FairMark.OmsApi.DataContracts
9 | {
10 | ///
11 | /// CIS buffer pool information
12 | /// 4.5.7. Метод «Получить статус массива КМ из заказа»
13 | /// 4.5.7.2. Ответ на запрос, Таблица 58
14 | ///
15 | [DataContract]
16 | public class PoolInfo
17 | {
18 | /// Logical flag that shows if the Emission Registrar is currently ready for orders (Готовность РЭ)
19 | [DataMember(Name = "isRegistrarReady", IsRequired = true)]
20 | public bool IsRegistrarReady { get; set; }
21 |
22 | /// Timestamp when the last Emission Registrar error occurred (Метка времени последней наблюдавшейся ошибки РЭ)
23 | [DataMember(Name = "lastRegistrarErrorTimestamp", IsRequired = true)]
24 | public long LastRegistrarErrorTimestamp { get; set; }
25 |
26 | /// Number of unused ICs in the pool (Оставшеесе кол-во КМ в пуле)
27 | [DataMember(Name = "leftInRegistrar", IsRequired = true)]
28 | public int LeftInRegistrar { get; set; }
29 |
30 | /// Number of ICs ordered in the array (Заказанное кол-во КМ в пуле)
31 | [DataMember(Name = "quantity", IsRequired = true)]
32 | public int Quantity { get; set; }
33 |
34 | /// Number of Emission Registrar errors occurred (Количество ошибок РЭ)
35 | [DataMember(Name = "registrarErrorCount", IsRequired = true)]
36 | public int RegistrarErrorCount { get; set; }
37 |
38 | /// Emission Registrar Identifier (Номер РЭ)
39 | [DataMember(Name = "registrarId", IsRequired = true)]
40 | public string RegistrarID { get; set; }
41 |
42 | /// The IC array rejection reason returned by the Emission Registrar (Причина отказа)
43 | [DataMember(Name = "rejectionReason", IsRequired = false)]
44 | public string RejectionReason { get; set; }
45 |
46 | ///
47 | /// IC array status (Статус пула КМ). Справочное значение «Статус массива КМ».
48 | /// см. раздел 5.3.1.5, .
49 | ///
50 | [DataMember(Name = "status", IsRequired = true)]
51 | public PoolStatuses Status { get; set; }
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/FairMark/OmsApi/DataContracts/4_5_8_OrderSummaries.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Runtime.Serialization;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 |
8 | namespace FairMark.OmsApi.DataContracts
9 | {
10 | ///
11 | /// Current orders and their statuses.
12 | /// 4.5.8. Метод «Получить статус заказов»
13 | /// 4.5.8.2. Ответ на запрос, Таблица 60.
14 | ///
15 | [DataContract]
16 | public class OrderSummaries
17 | {
18 | [DataMember(Name = "omsId")]
19 | public string OmsID { get; set; }
20 |
21 | [DataMember(Name = "orderInfos")]
22 | public List OrderInfos { get; set; }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/FairMark/OmsApi/DataContracts/4_5_8_OrderSummaryInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.Runtime.Serialization;
3 |
4 | namespace FairMark.OmsApi.DataContracts
5 | {
6 | using System;
7 |
8 | ///
9 | /// Current orders and their statuses.
10 | /// 4.5.8. Метод «Получить статус заказов»
11 | /// 4.5.8.2. Ответ на запрос, Таблица 61.
12 | ///
13 | [DataContract]
14 | public class OrderSummaryInfo
15 | {
16 | ///
17 | /// Идентификатор заказа на эмиссию КМ.
18 | ///
19 | [DataMember(Name = "orderId", IsRequired = true)]
20 | public Guid OrderID { get; set; }
21 |
22 | ///
23 | /// Статус заказа. Справочное значение «Статус заказа»
24 | /// см. раздел 5.3.1.10: .
25 | ///
26 | [DataMember(Name = "orderStatus", IsRequired = true)]
27 | public OrderStatuses OrderStatus { get; set; }
28 |
29 | ///
30 | /// Массив информации о статусе буферов.
31 | ///
32 | [DataMember(Name = "buffers", IsRequired = true)]
33 | public List Buffers { get; set; } = new List();
34 |
35 | ///
36 | /// Время создания заказа.
37 | ///
38 | [DataMember(Name = "createdTimestamp", IsRequired = true)]
39 | public long CreatedTimestamp { get; set; }
40 |
41 | ///
42 | /// Причина отклонения заказа.
43 | ///
44 | [DataMember(Name = "declineReason", IsRequired = false)]
45 | public string DeclineReason { get; set; }
46 |
47 | ///
48 | /// Идентификатор производственного заказа.
49 | ///
50 | [DataMember(Name = "productionOrderId", IsRequired = false)]
51 | public string ProductionOrderId { get; set; }
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/FairMark/OmsApi/DataContracts/4_5_9_2_ProductInfo.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Runtime.Serialization;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 |
8 | namespace FairMark.OmsApi.DataContracts
9 | {
10 | ///
11 | /// 4.5.9. Метод «Получить информацию об агрегации»
12 | /// 4.5.9.2. Ответ на запрос, Таблица 64.
13 | ///
14 | [DataContract]
15 | public class ProductInfo
16 | {
17 | [DataMember(Name = "gtin", IsRequired = false)]
18 | public string Gtin { get; set; }
19 |
20 | [DataMember(Name = "name", IsRequired = false)]
21 | public string Name { get; set; }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/FairMark/OmsApi/DataContracts/4_5_9_AggregationInfo.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Runtime.Serialization;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 |
8 | namespace FairMark.OmsApi.DataContracts
9 | {
10 | ///
11 | /// 4.5.9. Метод «Получить информацию об агрегации»
12 | /// 4.5.9.2. Ответ на запрос, Таблица 63.
13 | ///
14 | [DataContract]
15 | public class AggregationInfo
16 | {
17 | /// Aggregation unit (Единица агрегации)
18 | [DataMember(Name = "aggregationUnit", IsRequired = true)]
19 | public AggregationUnit AggregationUnit { get; set; } = new AggregationUnit();
20 |
21 | /// Уникальный идентификатор СУЗ
22 | [DataMember(Name = "omsId", IsRequired = true)]
23 | public string OmsID { get; set; }
24 |
25 | /// Taxpayer Identification Number (Идентификационный номер налогоплательщика)
26 | [DataMember(Name = "participantId", IsRequired = false)]
27 | public string ParticipantID { get; set; }
28 |
29 | [DataMember(Name = "productsInfo", IsRequired = false)]
30 | public List ProductsInfo { get; set; }
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/FairMark/OmsApi/DataContracts/4_5_x_EmptyResult.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Runtime.Serialization;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 |
8 | namespace FairMark.OmsApi.DataContracts
9 | {
10 | ///
11 | /// 4.5.5. Метод «Закрыть подзаказ/заказ»
12 | /// 4.5.11 Метод «Проверить доступность СУЗ»
13 | ///
14 | [DataContract]
15 | internal class EmptyResult
16 | {
17 | [DataMember(Name = "omsId")]
18 | public string OmsID { get; set; }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/FairMark/OmsApi/DataContracts/4_5_x_ReportResult.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Runtime.Serialization;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 |
8 | namespace FairMark.OmsApi.DataContracts
9 | {
10 | ///
11 | /// 4.5.2.2. Метод «Отправить отчёт о выбытии/отбраковке КМ», Ответ на запрос Таблица 35.
12 | /// 4.5.4.2. Метод «Отправить отчёт об использовании (нанесении) КМ», Таблица 51.
13 | ///
14 | [DataContract]
15 | internal partial class ReportResult
16 | {
17 | /// Уникальный идентификатор СУЗ
18 | [DataMember(Name = "omsId", IsRequired = true)]
19 | public string OmsID { get; set; }
20 |
21 | /// Unique OMS Report ID (Уникальный идентификатор отчета в СУЗ)
22 | [DataMember(Name = "reportId", IsRequired = false)]
23 | public string ReportID { get; set; }
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/FairMark/OmsApi/DataContracts/5_3_1_10_OrderStatuses.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Linq;
5 | using System.Runtime.Serialization;
6 | using System.Text;
7 | using System.Threading.Tasks;
8 |
9 | namespace FairMark.OmsApi.DataContracts
10 | {
11 | ///
12 | /// 5.3.1.10. Справочник «Статус заказа» (orderStatus)
13 | ///
14 | public enum OrderStatuses
15 | {
16 | ///
17 | /// Заказ создан.
18 | ///
19 | [Description("Заказ создан")]
20 | [EnumMember(Value = @"CREATED")]
21 | CREATED = 0,
22 |
23 | ///
24 | /// Заказ ожидает подтверждения ГИС МТ.
25 | ///
26 | [Description("Заказ ожидает подтверждения ГИС МТ")]
27 | [EnumMember(Value = @"PENDING")]
28 | PENDING = 1,
29 |
30 | ///
31 | /// Заказ не подтверждён в ГИС МТ.
32 | ///
33 | [Description("Заказ не подтверждён в ГИС МТ")]
34 | [EnumMember(Value = @"DECLINED")]
35 | DECLINED = 2,
36 |
37 | ///
38 | /// Заказ подтверждён в ГИС МТ.
39 | ///
40 | [Description("Заказ подтверждён в ГИС МТ")]
41 | [EnumMember(Value = @"APPROVED")]
42 | APPROVED = 3,
43 |
44 | ///
45 | /// Заказ готов.
46 | ///
47 | [Description("Заказ готов")]
48 | [EnumMember(Value = @"READY")]
49 | READY = 4,
50 |
51 | ///
52 | /// Заказ закрыт.
53 | ///
54 | [Description("Заказ закрыт")]
55 | [EnumMember(Value = @"CLOSED")]
56 | CLOSED = 5,
57 |
58 | ///
59 | /// Заказ аннулирован (по истечению срока годности не использованных КМ).
60 | ///
61 | [Description("Заказ аннулирован")]
62 | [EnumMember(Value = @"EXPIRED")]
63 | EXPIRED = 6,
64 | }
65 | }
66 |
--------------------------------------------------------------------------------
/FairMark/OmsApi/DataContracts/5_3_1_11_DropoutReasons.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.Serialization;
2 |
3 | namespace FairMark.OmsApi.DataContracts
4 | {
5 | ///
6 | /// 5.3.1.11. Справочник «Причина выбытия» (dropoutReason)
7 | ///
8 | public enum DropoutReasons
9 | {
10 | ///
11 | /// Брак.
12 | ///
13 | [EnumMember(Value = @"DEFECT")]
14 | DEFECT = 0,
15 |
16 | ///
17 | /// Истек срок годности.
18 | ///
19 | [EnumMember(Value = @"EXPIRY")]
20 | EXPIRY = 1,
21 |
22 | ///
23 | /// Лабораторные образцы.
24 | ///
25 | [EnumMember(Value = @"QA_SAMPLES")]
26 | QA_SAMPLES = 2,
27 |
28 | ///
29 | /// Отзыв с рынка.
30 | ///
31 | [EnumMember(Value = @"PRODUCT_RECALL")]
32 | PRODUCT_RECALL = 3,
33 |
34 | ///
35 | /// Рекламации.
36 | ///
37 | [EnumMember(Value = @"COMPLAINTS")]
38 | COMPLAINTS = 4,
39 |
40 | ///
41 | /// Тестирование продукта.
42 | ///
43 | [EnumMember(Value = @"PRODUCT_TESTING")]
44 | PRODUCT_TESTING = 5,
45 |
46 | ///
47 | /// Демонстрационные образцы.
48 | ///
49 | [EnumMember(Value = @"DEMO_SAMPLES")]
50 | DEMO_SAMPLES = 6,
51 |
52 | ///
53 | /// Другие причины.
54 | ///
55 | [EnumMember(Value = @"OTHER")]
56 | OTHER = 7,
57 |
58 | ///
59 | /// Утрата товаров.
60 | ///
61 | [EnumMember(Value = @"DAMAGE_LOSS")]
62 | DAMAGE_LOSS = 8,
63 |
64 | ///
65 | /// Уничтожение товаров.
66 | ///
67 | [EnumMember(Value = @"DESTRUCTION")]
68 | DESTRUCTION = 9,
69 |
70 | ///
71 | /// Ликвидация предприятия.
72 | ///
73 | [EnumMember(Value = @"LIQUIDATION")]
74 | LIQUIDATION = 10,
75 |
76 | ///
77 | /// Конфискация товаров.
78 | ///
79 | [EnumMember(Value = @"CONFISCATION")]
80 | CONFISCATION = 11,
81 | }
82 | }
83 |
--------------------------------------------------------------------------------
/FairMark/OmsApi/DataContracts/5_3_1_12_CisTypes.cs:
--------------------------------------------------------------------------------
1 | using System.ComponentModel;
2 | using System.Runtime.Serialization;
3 |
4 | namespace FairMark.OmsApi.DataContracts
5 | {
6 | ///
7 | /// 5.3.1.12. Справочник «Типы КМ» (cisType)
8 | ///
9 | public enum CisTypes
10 | {
11 | ///
12 | /// Единица товара
13 | ///
14 | [Description("Единица товара")]
15 | [EnumMember(Value = @"UNIT")]
16 | UNIT = 0,
17 |
18 | ///
19 | /// Комплект
20 | ///
21 | [Description("Комплект")]
22 | [EnumMember(Value = @"BUNDLE")]
23 | BUNDLE = 1,
24 |
25 | ///
26 | /// Групповая потребительская упаковка
27 | ///
28 | [Description("Групповая потребительская упаковка")]
29 | [EnumMember(Value = @"GROUP")]
30 | GROUP = 2,
31 |
32 | ///
33 | /// Набор
34 | ///
35 | [Description("Набор")]
36 | [EnumMember(Value = @"SET")]
37 | SET = 3,
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/FairMark/OmsApi/DataContracts/5_3_1_13_Countries.cs:
--------------------------------------------------------------------------------
1 | namespace FairMark.OmsApi.DataContracts
2 | {
3 | ///
4 | /// 5.3.1.13. Справочник «Код страны эмиссии КМ» (используется для templateId=20)
5 | ///
6 | public static class Countries
7 | {
8 | ///
9 | /// Республика Армения
10 | ///
11 | public static int Armenia = 1;
12 |
13 | ///
14 | /// Республика Беларусь
15 | ///
16 | public static int Belarus = 2;
17 |
18 | ///
19 | /// Республика Казахстан
20 | ///
21 | public static int Kazakhstan = 3;
22 |
23 | ///
24 | /// Киргизская республика
25 | ///
26 | public static int Kyrgyzstan = 4;
27 |
28 | ///
29 | /// Российская Федерация
30 | ///
31 | public static int Russia = 5;
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/FairMark/OmsApi/DataContracts/5_3_1_1_ReleaseMethodTypes.cs:
--------------------------------------------------------------------------------
1 | using System.ComponentModel;
2 | using System.Runtime.Serialization;
3 |
4 | namespace FairMark.OmsApi.DataContracts
5 | {
6 | ///
7 | /// 5.3.1.1. Справочник «Способ выпуска товаров в оборот» (releaseMethodType)
8 | ///
9 | public enum ReleaseMethodTypes
10 | {
11 | ///
12 | /// Производство в РФ
13 | ///
14 | [Description("Производство в РФ")]
15 | [EnumMember(Value = @"PRODUCTION")]
16 | PRODUCTION = 0,
17 |
18 | ///
19 | /// Ввезен в РФ (Импорт)
20 | ///
21 | [Description("Ввезен в РФ (Импорт)")]
22 | [EnumMember(Value = @"IMPORT")]
23 | IMPORT = 1,
24 |
25 | ///
26 | /// Маркировка остатков (доступно только для ТГ «Альтернативная табачная продукция», «Духи и туалетная вода», «Предметы одежды, белье постельное, столовое, туалетное и кухонное»)
27 | ///
28 | [Description("Маркировка остатков")]
29 | [EnumMember(Value = @"REMAINS")]
30 | REMAINS = 2,
31 |
32 | ///
33 | /// Доступен исключительно Операторам ЕАЭС для следующих товарных групп («Обувные товары», «Предметы одежды, белье постельное, столовое, туалетное и кухонное», «Шины и покрышки пневматические резиновые новые», «Духи и туалетная вода», «Фотокамеры (кроме кинокамер), фотовспышки и лампы-вспышки») в том числе «Молочная продукция»
34 | ///
35 | [Description("Трансграничная торговля")]
36 | [EnumMember(Value = @"CROSSBORDER")]
37 | CROSSBORDER = 3,
38 |
39 | ///
40 | /// Перемаркировка (доступно только для ТГ «Предметы одежды, белье постельное, столовое, туалетное и кухонное», «Обувные товары», «Шины и покрышки пневматические резиновые новые», «Духи и туалетная вода», «Фотокамеры (кроме кинокамер), фотовспышки и лампывспышки», «Велосипеды и велосипедные рамы», «Кресла-коляски»).
41 | ///
42 | [Description("Перемаркировка")]
43 | [EnumMember(Value = @"REMARK")]
44 | REMARK = 4,
45 |
46 | ///
47 | /// Принят на комиссию от физического лица (доступно для для ТГ «Предметы одежды, белье постельное, столовое, туалетное и кухонное», «Обувные товары»)
48 | ///
49 | [Description("Принят на комиссию от физического лица")]
50 | [EnumMember(Value = @"COMMISSION")]
51 | COMMISSION = 5,
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/FairMark/OmsApi/DataContracts/5_3_1_2_SerialNumberTypes.cs:
--------------------------------------------------------------------------------
1 | using System.ComponentModel;
2 | using System.Runtime.Serialization;
3 |
4 | namespace FairMark.OmsApi.DataContracts
5 | {
6 | ///
7 | /// 5.3.1.2. Справочник «Способ формирования индивидуального серийного номера» (serialNumberType)
8 | ///
9 | public enum SerialNumberTypes
10 | {
11 | ///
12 | /// Самостоятельно.
13 | ///
14 | [Description("Самостоятельно")]
15 | [EnumMember(Value = @"SELF_MADE")]
16 | SELF_MADE = 0,
17 |
18 | ///
19 | /// Оператором ГИС МТ.
20 | ///
21 | [Description("Оператором ГИС МТ")]
22 | [EnumMember(Value = @"OPERATOR")]
23 | OPERATOR = 1,
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/FairMark/OmsApi/DataContracts/5_3_1_3_CreateMethodTypes.cs:
--------------------------------------------------------------------------------
1 | using System.ComponentModel;
2 | using System.Runtime.Serialization;
3 |
4 | namespace FairMark.OmsApi.DataContracts
5 | {
6 | ///
7 | /// 5.3.1.3. Справочник «Способ изготовления» (createMethodType)
8 | ///
9 | public enum CreateMethodTypes
10 | {
11 | ///
12 | /// Самостоятельно.
13 | ///
14 | [Description("Самостоятельно")]
15 | [EnumMember(Value = @"SELF_MADE")]
16 | SELF_MADE = 0,
17 |
18 | ///
19 | /// ЦЭМ.
20 | ///
21 | [Description("ЦЭМ")]
22 | [EnumMember(Value = @"CEM")]
23 | CEM = 1,
24 |
25 | ///
26 | /// Контрактное производство.
27 | ///
28 | [Description("Контрактное производство")]
29 | [EnumMember(Value = @"CM")]
30 | CM = 2,
31 |
32 | ///
33 | /// Логистический склад.
34 | ///
35 | [Description("Логистический склад")]
36 | [EnumMember(Value = @"CL")]
37 | CL = 3,
38 |
39 | ///
40 | /// Комиссионная площадка.
41 | ///
42 | [Description("Комиссионная площадка")]
43 | [EnumMember(Value = @"CA")]
44 | CA = 4,
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/FairMark/OmsApi/DataContracts/5_3_1_5_PoolStatuses.cs:
--------------------------------------------------------------------------------
1 | using System.ComponentModel;
2 | using System.Runtime.Serialization;
3 |
4 | namespace FairMark.OmsApi.DataContracts
5 | {
6 | ///
7 | /// 5.3.1.5. Справочник «Статус массива КМ» (status)
8 | ///
9 | public enum PoolStatuses
10 | {
11 | ///
12 | /// Неверный формат запроса.
13 | ///
14 | [Description("Неверный формат запроса")]
15 | [EnumMember(Value = @"REQUEST_ERROR")]
16 | REQUEST_ERROR = 0,
17 |
18 | ///
19 | /// Массив (пул) КМ был запрошен в РЭ.
20 | ///
21 | [Description("Массив (пул) КМ был запрошен в РЭ")]
22 | [EnumMember(Value = @"REQUESTED")]
23 | REQUESTED = 1,
24 |
25 | ///
26 | /// В процессе обработки.
27 | ///
28 | [Description("В процессе обработки")]
29 | [EnumMember(Value = @"IN_PROCESS")]
30 | IN_PROCESS = 2,
31 |
32 | ///
33 | /// Массив (пул) КМ готов к использованию.
34 | ///
35 | [Description("Массив (пул) КМ готов к использованию")]
36 | [EnumMember(Value = @"READY")]
37 | READY = 3,
38 |
39 | ///
40 | /// Все КМ в массиве были использованы полностью.
41 | ///
42 | [Description("Все КМ в массиве были использованы полностью")]
43 | [EnumMember(Value = @"CLOSED")]
44 | CLOSED = 4,
45 |
46 | ///
47 | /// Массив КМ был исчерпан и закрыт.
48 | ///
49 | [Description("Массив КМ был исчерпан и закрыт")]
50 | [EnumMember(Value = @"DELETED")]
51 | DELETED = 5,
52 |
53 | ///
54 | /// Заказ не был выполнен (неверные параметры заказа,
55 | /// например, заказ содержит неуникальные серийные номера).
56 | ///
57 | [Description("Заказ не был выполнен")]
58 | [EnumMember(Value = @"REJECTED")]
59 | REJECTED = 6,
60 | }
61 | }
62 |
--------------------------------------------------------------------------------
/FairMark/OmsApi/DataContracts/5_3_1_6_AggregationTypes.cs:
--------------------------------------------------------------------------------
1 | using System.ComponentModel;
2 | using System.Runtime.Serialization;
3 |
4 | namespace FairMark.OmsApi.DataContracts
5 | {
6 | ///
7 | /// 5.3.1.6. Справочник «Тип агрегации» (aggregationType)
8 | ///
9 | public enum AggregationTypes
10 | {
11 | ///
12 | /// Новая агрегация.
13 | ///
14 | [Description("Новая агрегация")]
15 | [EnumMember(Value = @"AGGREGATION")]
16 | AGGREGATION = 0,
17 |
18 | ///
19 | /// Обновление существующей агрегации.
20 | ///
21 | ///
22 | /// Примечание: выбор данного значения означает
23 | /// переупаковку (к указанному коду агрегата будут
24 | /// относиться только переданные в рамках текущего
25 | /// запроса коды маркировки).
26 | /// Значение UPDATE считается уставревшим (не
27 | /// рекомендуется использовать и не исключается для
28 | /// совместимости старых версий), для обновления
29 | /// существующей агрегации, рекомендуется
30 | /// использовать значение AGGREGATION.
31 | ///
32 | [Description("Обновление существующей агрегации")]
33 | [EnumMember(Value = @"UPDATE")]
34 | UPDATE = 1,
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/FairMark/OmsApi/DataContracts/5_3_1_7_BufferStatuses.cs:
--------------------------------------------------------------------------------
1 | using System.ComponentModel;
2 | using System.Runtime.Serialization;
3 |
4 | namespace FairMark.OmsApi.DataContracts
5 | {
6 | ///
7 | /// 5.3.1.7. Справочник «Статус буфера КМ» (bufferStatus)
8 | ///
9 | public enum BufferStatuses
10 | {
11 | ///
12 | /// Буфер КМ находится в ожидании.
13 | ///
14 | [Description("Буфер КМ находится в ожидании")]
15 | [EnumMember(Value = @"PENDING")]
16 | PENDING = 0,
17 |
18 | ///
19 | /// Буфер создан.
20 | ///
21 | [Description("Буфер создан")]
22 | [EnumMember(Value = @"ACTIVE")]
23 | ACTIVE = 1,
24 |
25 | ///
26 | /// Буфер и пулы РЭ не содержат больше кодов.
27 | ///
28 | [Description("Буфер и пулы РЭ не содержат больше кодов")]
29 | [EnumMember(Value = @"EXHAUSTED")]
30 | EXHAUSTED = 2,
31 |
32 | ///
33 | /// Буфер более не доступен для работы.
34 | ///
35 | [Description("Буфер более не доступен для работы")]
36 | [EnumMember(Value = @"REJECTED")]
37 | REJECTED = 3,
38 |
39 | ///
40 | /// Буфер закрыт.
41 | ///
42 | [Description("Буфер закрыт")]
43 | [EnumMember(Value = @"CLOSED")]
44 | CLOSED = 4,
45 |
46 | ///
47 | /// Буфер аннулирован (по истечению срока годности не использованных КМ).
48 | ///
49 | [Description("Буфер аннулирован")]
50 | [EnumMember(Value = @"EXPIRED")]
51 | EXPIRED = 5,
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/FairMark/OmsApi/DataContracts/5_3_1_8_ReportStatuses.cs:
--------------------------------------------------------------------------------
1 | using System.ComponentModel;
2 | using System.Runtime.Serialization;
3 |
4 | namespace FairMark.OmsApi.DataContracts
5 | {
6 | ///
7 | /// 5.3.1.8. Справочник «Статус обработки отчета» (reportStatus)
8 | ///
9 | ///
10 | /// Примечание: Статус «Отчет обработан» PROCESSED используется только для
11 | /// отчетов об использовании (нанесении) КМ.
12 | ///
13 | public enum ReportStatuses
14 | {
15 | ///
16 | /// Отчет получен СУЗ (Устаревший, не используется).
17 | ///
18 | [Description("Отчет получен СУЗ")]
19 | [EnumMember(Value = @"DRAFT")]
20 | DRAFT = 0,
21 |
22 | ///
23 | /// Отчет находится в ожидании.
24 | ///
25 | [Description("Отчет находится в ожидании")]
26 | [EnumMember(Value = @"PENDING")]
27 | PENDING = 1,
28 |
29 | ///
30 | /// Выполняется проверка метаданных отчёта
31 | /// (применимо к товарной группе «Лекарственные
32 | /// препараты для медицинского применения»).
33 | ///
34 | [Description("Выполняется проверка метаданных отчёта")]
35 | [EnumMember(Value = @"CHECK")]
36 | CHECK = 2,
37 |
38 | ///
39 | /// Отчет готов к отправке в РЭ.
40 | ///
41 | [Description("Отчет готов к отправке в РЭ")]
42 | [EnumMember(Value = @"READY_TO_SEND")]
43 | READY_TO_SEND = 3,
44 |
45 | ///
46 | /// Отчет отклонен.
47 | ///
48 | [Description("Отчет отклонен")]
49 | [EnumMember(Value = @"REJECTED")]
50 | REJECTED = 4,
51 |
52 | ///
53 | /// Отчет отправлен.
54 | ///
55 | [Description("Отчет отправлен")]
56 | [EnumMember(Value = @"SENT")]
57 | SENT = 5,
58 |
59 | ///
60 | /// Отчет обработан.
61 | ///
62 | [Description("Отчет обработан")]
63 | [EnumMember(Value = @"PROCESSED")]
64 | PROCESSED = 6,
65 | }
66 | }
67 |
--------------------------------------------------------------------------------
/FairMark/OmsApi/DataContracts/5_3_1_9_UsageType.cs:
--------------------------------------------------------------------------------
1 | using System.ComponentModel;
2 | using System.Runtime.Serialization;
3 |
4 | namespace FairMark.OmsApi.DataContracts
5 | {
6 | ///
7 | /// 5.3.1.9. Справочник «Тип использования» (usageType)
8 | ///
9 | ///
10 | /// Примечание*: значения справочника «USED_FOR_PRODUCTION»,
11 | /// «SENT_TO_PRINTER» и «PRINTER_LOST» в настоящее время не используются
12 | /// (отмечены как устаревшие) и впоследствии будут исключены из справочника
13 | ///
14 | public enum UsageTypes
15 | {
16 | ///
17 | /// КМ был передан на производственную линию (данное значение не используется)*.
18 | ///
19 | [Description("КМ был передан на производственную линию")]
20 | [EnumMember(Value = @"USED_FOR_PRODUCTION")]
21 | USED_FOR_PRODUCTION = 0,
22 |
23 | ///
24 | /// Производственная линия отправила КМ на принтер (данное значение не используется)*.
25 | ///
26 | [Description("Производственная линия отправила КМ на принтер")]
27 | [EnumMember(Value = @"SENT_TO_PRINTER")]
28 | SENT_TO_PRINTER = 1,
29 |
30 | ///
31 | /// КМ был напечатан.
32 | ///
33 | [Description("КМ был напечатан")]
34 | [EnumMember(Value = @"PRINTED")]
35 | PRINTED = 2,
36 |
37 | ///
38 | /// Подтверждённая потеря КМ принтером (данное значение не используется)*.
39 | ///
40 | [Description("Подтверждённая потеря КМ принтером")]
41 | [EnumMember(Value = @"PRINTER_LOST")]
42 | PRINTER_LOST = 3,
43 |
44 | ///
45 | /// Нанесение КМ подтверждено.
46 | ///
47 | [Description("Нанесение КМ подтверждено")]
48 | [EnumMember(Value = @"VERIFIED")]
49 | VERIFIED = 4,
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/FairMark/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.CompilerServices;
2 |
3 | [assembly: InternalsVisibleTo("FairMark.Tests")]
4 |
5 |
--------------------------------------------------------------------------------
/FairMark/Toolbox/HtmlHelper.cs:
--------------------------------------------------------------------------------
1 | namespace FairMark.Toolbox
2 | {
3 | using System;
4 | using System.Linq;
5 | using System.Text.RegularExpressions;
6 |
7 | internal static class HtmlHelper
8 | {
9 | ///
10 | /// Try to extract readable text from HTML.
11 | ///
12 | /// HTML to process.
13 | /// Human-readable text.
14 | public static string ExtractText(string html)
15 | {
16 | if (string.IsNullOrWhiteSpace(html))
17 | {
18 | return string.Empty;
19 | }
20 |
21 | var bodyStart = html.IndexOf("= 0)
23 | {
24 | html = html.Substring(bodyStart);
25 | }
26 |
27 | // replace tags
28 | var text = new Regex("<(br/?)|(").Replace(html, Environment.NewLine);
29 | text = new Regex("<[^>]+>").Replace(text, " ");
30 | text = new Regex("[ \t]+").Replace(text, " ");
31 |
32 | // trim lines
33 | var lines = text.Split('\r').Select(l => l.Trim()).Where(l => !string.IsNullOrEmpty(l));
34 | return string.Join(Environment.NewLine, lines);
35 | }
36 | }
37 |
38 | }
39 |
--------------------------------------------------------------------------------
/FairMark/Toolbox/JsonFormatter.cs:
--------------------------------------------------------------------------------
1 | namespace FairMark.Toolbox
2 | {
3 | using System;
4 | using System.Linq;
5 |
6 | ///
7 | /// Dependency-free JSON formatter.
8 | ///
9 | internal static class JsonFormatter
10 | {
11 | ///
12 | /// Formats the given JSON code.
13 | ///
14 | ///
15 | /// Based on:
16 | /// https://stackoverflow.com/a/57100143/544641
17 | /// https://stackoverflow.com/a/24782322/544641
18 | ///
19 | /// JSON code to format.
20 | /// Optional indent.
21 | public static string FormatJson(string json, string indent = " ")
22 | {
23 | var indentation = 0;
24 | var quoteCount = 0;
25 | var escapeCount = 0;
26 |
27 | var result =
28 | from ch in json ?? string.Empty
29 | let escaped = (ch == '\\' ? escapeCount++ : escapeCount > 0 ? escapeCount-- : escapeCount) > 0
30 | let quotes = ch == '"' && !escaped ? quoteCount++ : quoteCount
31 | let unquoted = quotes % 2 == 0
32 | let colon = ch == ':' && unquoted ? ": " : null
33 | let nospace = char.IsWhiteSpace(ch) && unquoted ? string.Empty : null
34 | let lineBreak = ch == ',' && unquoted ? ch + Environment.NewLine + string.Concat(Enumerable.Repeat(indent, indentation)) : null
35 | let openChar = (ch == '{' || ch == '[') && unquoted ? ch + Environment.NewLine + string.Concat(Enumerable.Repeat(indent, ++indentation)) : ch.ToString()
36 | let closeChar = (ch == '}' || ch == ']') && unquoted ? Environment.NewLine + string.Concat(Enumerable.Repeat(indent, --indentation)) + ch : ch.ToString()
37 | select colon ?? nospace ?? lineBreak ?? (
38 | openChar.Length > 1 ? openChar : closeChar
39 | );
40 |
41 | return string.Concat(result);
42 | }
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/FairMark/Toolbox/StringExtensions.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace FairMark.Toolbox
8 | {
9 | internal static class StringExtensions
10 | {
11 | ///
12 | /// Appends the given suffix if it's missing.
13 | ///
14 | /// The string to append to.
15 | /// The suffix.
16 | /// Optional comparison type.
17 | public static string AppendMissing(this string str, string suffix, StringComparison comparison = StringComparison.InvariantCulture)
18 | {
19 | if (str.EndsWith(suffix, comparison))
20 | {
21 | return str;
22 | }
23 |
24 | return str + suffix;
25 | }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/FairMark/TrueApi/DataContracts/3_1_1_BankDetails.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.Serialization;
2 |
3 | namespace FairMark.TrueApi.DataContracts
4 | {
5 | ///
6 | /// Банковские реквизиты.
7 | /// 3.1.1. Метод создания заявки на регистрацию УОТ
8 | ///
9 | [DataContract(Name="bank_details")]
10 | public class BankDetails
11 | {
12 | [DataMember(Name = "bic")]
13 | public string Bic { get; set; }
14 |
15 | [DataMember(Name = "account")]
16 | public string Account { get; set; }
17 |
18 | [DataMember(Name = "sf_required")]
19 | public bool SfRequired { get; set; }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/FairMark/TrueApi/DataContracts/3_1_1_EdoOperator.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.Serialization;
2 |
3 | namespace FairMark.TrueApi.DataContracts
4 | {
5 | ///
6 | /// Оператор электронного документооборота.
7 | /// 3.1.1. Метод создания заявки на регистрацию УОТ
8 | ///
9 | [DataContract(Name = "edo_operators")]
10 | public partial class EdoOperator
11 | {
12 | [DataMember(Name = "edo_operator_name")]
13 | public string EdoOperatorName { get; set; }
14 |
15 | [DataMember(Name = "edo_participant_id")]
16 | public string EdoParticipantId { get; set; }
17 |
18 | [DataMember(Name = "is_main_operator")]
19 | public bool IsMainOperator { get; set; }
20 | }
21 | }
--------------------------------------------------------------------------------
/FairMark/TrueApi/DataContracts/3_1_1_Organization.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.Serialization;
2 |
3 | namespace FairMark.TrueApi.DataContracts
4 | {
5 | ///
6 | /// Организация.
7 | /// 3.1.1. Метод создания заявки на регистрацию УОТ
8 | ///
9 | [DataContract(Name = "organisation")]
10 | public class Organization
11 | {
12 | [DataMember(Name = "inn")]
13 | public string Inn { get; set; }
14 |
15 | [DataMember(Name = "ogrn")]
16 | public string Ogrn { get; set; }
17 |
18 | [DataMember(Name = "organisation_name")]
19 | public string OrganizationName { get; set; }
20 |
21 | [DataMember(Name = "email")]
22 | public string Email { get; set; }
23 |
24 | [DataMember(Name = "ifns")]
25 | public string Ifns { get; set; }
26 |
27 | [DataMember(Name = "phone")]
28 | public string Phone { get; set; }
29 |
30 | [DataMember(Name = "kpp")]
31 | public string Kpp { get; set; }
32 |
33 | [DataMember(Name = "address")]
34 | public string Address { get; set; }
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/FairMark/TrueApi/DataContracts/3_1_1_ProductDocument.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.Serialization;
2 |
3 | namespace FairMark.TrueApi.DataContracts
4 | {
5 | ///
6 | /// Заявка на регистрацию.
7 | /// 3.1.1. Метод создания заявки на регистрацию УОТ
8 | ///
9 | [DataContract(Name = "product_document")]
10 | public class ProductDocument
11 | {
12 | [DataMember(Name = "organisation")]
13 | public Organization Organization { get; set; }
14 |
15 | [DataMember(Name = "bank_details")]
16 | public BankDetails BankDetails { get; set; }
17 |
18 | [DataMember(Name = "product_group")]
19 | public ProductGroup[] ProductGroups { get; set; }
20 |
21 | [DataMember(Name = "user")]
22 | public User User { get; set; }
23 |
24 | [DataMember(Name = "edo_operators")]
25 | public EdoOperator[] EdoOperators;
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/FairMark/TrueApi/DataContracts/3_1_1_ProductGroup.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.Serialization;
2 |
3 | namespace FairMark.TrueApi.DataContracts
4 | {
5 | ///
6 | /// Товарная группа.
7 | /// 3.1.1. Метод создания заявки на регистрацию УОТ
8 | ///
9 | [DataContract(Name = "product_group")]
10 | public class ProductGroup
11 | {
12 | [DataMember(Name = "code")]
13 | public string Code { get; set; }
14 |
15 | [DataMember(Name = "types")]
16 | public string[] Types { get; set; }
17 | }
18 | }
--------------------------------------------------------------------------------
/FairMark/TrueApi/DataContracts/3_1_1_Registration.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.Serialization;
2 |
3 | namespace FairMark.TrueApi.DataContracts
4 | {
5 | ///
6 | /// Заявка на регистрацию УОТ.
7 | /// 3.1.1. Метод создания заявки на регистрацию УОТ
8 | ///
9 | [DataContract(Name="registration")]
10 | public class Registration
11 | {
12 | public const string DocumentFormatXml = "XML";
13 | public const string DocumentFormatManual = "MANUAL";
14 | public const string DocumentFormatJson = DocumentFormatManual;
15 |
16 | [DataMember(Name = "document_format")]
17 | public string DocumentFormat { get; set; }
18 |
19 | ///
20 | /// Base64-encoded instance of the class.
21 | ///
22 | [DataMember(Name = "product_document")]
23 | public string ProductDocument { get; set; }
24 |
25 | ///
26 | /// Detached signature of the original instance.
27 | ///
28 | [DataMember(Name = "signature")]
29 | public string Signature { get; set; }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/FairMark/TrueApi/DataContracts/3_1_1_RegistrationResponse.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.Serialization;
2 |
3 | namespace FairMark.TrueApi.DataContracts
4 | {
5 | ///
6 | /// Ответ на заявку на регистрацию УОТ.
7 | /// 3.1.1. Метод создания заявки на регистрацию УОТ
8 | ///
9 | [DataContract(Name="registration_response")]
10 | internal class RegistrationResponse
11 | {
12 | [DataMember(Name = "registrationRequestDocId")]
13 | public string RegistrationRequestDocID { get; set; }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/FairMark/TrueApi/DataContracts/3_1_1_User.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.Serialization;
2 |
3 | namespace FairMark.TrueApi.DataContracts
4 | {
5 | ///
6 | /// Пользователь с усиленной электронной подписью.
7 | /// 3.1.1. Метод создания заявки на регистрацию УОТ
8 | ///
9 | [DataContract(Name = "user")]
10 | public class User
11 | {
12 | [DataMember(Name = "name")]
13 | public string FirstName { get; set; }
14 |
15 | [DataMember(Name = "last_name")]
16 | public string LastName { get; set; }
17 |
18 | [DataMember(Name = "finger_print")]
19 | public string Fingerprint { get; set; }
20 | }
21 | }
--------------------------------------------------------------------------------
/FairMark/TrueApi/DataContracts/3_1_2_RegistrationStatusError.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.Serialization;
2 |
3 | namespace FairMark.TrueApi.DataContracts
4 | {
5 | ///
6 | /// Сообщение об ошибке регистрации.
7 | /// 3.1.2. Метод проверки статуса заявки УОТ на регистрацию по ID заявки
8 | ///
9 | [DataContract]
10 | public class RegistrationStatusError
11 | {
12 | [DataMember(Name = "message")]
13 | public string Message { get; set; }
14 |
15 | [DataMember(Name = "internalError")]
16 | public string InternalError { get; set; }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/FairMark/TrueApi/DataContracts/3_1_2_RegistrationStatusResponse.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.Serialization;
2 |
3 | namespace FairMark.TrueApi.DataContracts
4 | {
5 | ///
6 | /// Результат обработки заявки на регистрацию.
7 | /// 3.1.2. Метод проверки статуса заявки УОТ на регистрацию по ID заявки
8 | ///
9 | [DataContract]
10 | public class RegistrationStatusResponse
11 | {
12 | [DataMember(Name = "registrationRequestStatus")]
13 | public string RegistrationRequestStatus { get; set; }
14 |
15 | [DataMember(Name = "documentType")]
16 | public string DocumentType { get; set; }
17 |
18 | [DataMember(Name = "errors")]
19 | public RegistrationStatusError[] Errors { get; set; }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/FairMark/TrueApi/DataContracts/3_4_Balance.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.Serialization;
2 |
3 | namespace FairMark.TrueApi.DataContracts
4 | {
5 | [DataContract]
6 | public class ProductGroupBalance
7 | {
8 | [DataMember(Name = "balance")]
9 | public long? Balance { get; set; }
10 |
11 | [DataMember(Name = "contractId")]
12 | public long? ContractId { get; set; }
13 |
14 | [DataMember(Name = "organisationId")]
15 | public long OrganisationId { get; set; }
16 |
17 | [DataMember(Name = "productGroupId")]
18 | public long ProductGroupID { get; set; }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/FairMark/TrueApi/DataContracts/4_1_UniformDocument.cs:
--------------------------------------------------------------------------------
1 | namespace FairMark.TrueApi.DataContracts
2 | {
3 | using System.Runtime.Serialization;
4 |
5 | public interface IUniformDocumentBase
6 | {
7 | ///
8 | /// Document name according to TrueApi uniform documents list (see attachment 1)
9 | ///
10 | string DocumentApiName { get; }
11 | ///
12 | /// TrueApi Product group
13 | ///
14 | ProductGroupsTrueApi ProductGroup { get; set; }
15 |
16 | }
17 | ///
18 | /// Uniform document used in TrueApi chapter 4
19 | ///
20 | [DataContract]
21 | public class UniformDocument
22 | {
23 | ///
24 | /// Document format. Only "MANUAL"(JSON) format is supported
25 | ///
26 | [DataMember(Name = "document_format")] public string DocumentFormat { get; private set; } = "MANUAL";//TODO Сделать справочником? На данный момент поддерживаем только JSON, поэтому может вообще захордкоидть?
27 |
28 | ///
29 | /// Base64-encoded instance of the class.
30 | ///
31 | [DataMember(Name = "product_document")]
32 | public string DocumentBase64 { get; set; }
33 |
34 | ///
35 | /// Detached signature of the original instance.
36 | ///
37 | [DataMember(Name = "signature")]
38 | public string Signature { get; set; }
39 |
40 | ///
41 | /// Код типа документа
42 | ///
43 | [DataMember(Name = "type")]
44 | public string Type { get; set; }
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/FairMark/TrueApi/DataContracts/4_2_1_1_AggregationDocument.cs:
--------------------------------------------------------------------------------
1 | namespace FairMark.TrueApi.DataContracts
2 | {
3 | using System.Collections.Generic;
4 | using System.Runtime.Serialization;
5 |
6 | ///
7 | /// 4.2.1.1. Агрегация
8 | ///
9 | [DataContract]
10 | public class AggregationDocument : IUniformDocumentBase
11 | {
12 | public string DocumentApiName { get; } = "AGGREGATION_DOCUMENT";
13 | public ProductGroupsTrueApi ProductGroup { get; set; } = ProductGroupsTrueApi.milk;
14 |
15 | ///
16 | /// ИНН участника оборота товаров
17 | ///
18 | [DataMember(Name = "participantId")]
19 | public string ParticipantInn { get; set; }
20 |
21 | ///
22 | /// Список формируемых агрегатов
23 | ///
24 | [DataMember(Name = "aggregationUnits")]
25 | public List AggregationUnits { get; set; }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/FairMark/TrueApi/DataContracts/4_2_1_1_AggregationUnit.cs:
--------------------------------------------------------------------------------
1 | namespace FairMark.TrueApi.DataContracts
2 | {
3 | using System.Collections.Generic;
4 | using System.Runtime.Serialization;
5 |
6 | [DataContract]
7 | public class AggregationUnit
8 | {
9 | ///
10 | /// Код идентификации агрегата
11 | /// Примечание: КИ может содержать от 18 до 74 символов включительно: цифры, буквы латинского алфавита, спецсимволы(A-Z a-z 0-9 % & ' " ( ) * + , - _ . / : ; < = > ? !)
12 | ///
13 | [DataMember(Name = "unitSerialNumber")]
14 | public string UnitSerialNumber { get; set; }
15 |
16 | ///
17 | /// Код типа агрегации
18 | /// Примечание: Значение может быть только "AGGREGATION"
19 | ///
20 | [DataMember(Name = "aggregationType")]
21 | public string AggregationType { get; set; } = "AGGREGATION";
22 |
23 | ///
24 | /// Список КИ, входящих в агрегат
25 | /// Примечание: Статусы КИ, входящих в агрегат, должны быть идентичны
26 | ///
27 | [DataMember(Name = "sntins")]
28 | public List Sntins { get; set; }
29 | }
30 |
31 | }
32 |
--------------------------------------------------------------------------------
/FairMark/TrueApi/DataContracts/4_2_1_3_DisaggregationUnit.cs:
--------------------------------------------------------------------------------
1 | namespace FairMark.TrueApi.DataContracts
2 | {
3 | using System.Collections.Generic;
4 | using System.Runtime.Serialization;
5 |
6 | [DataContract]
7 | public class DisaggregationUnit
8 | {
9 | ///
10 | /// Код расформировываемого агрегата
11 | /// Примечание: Указание КИН в данном поле недопустимо
12 | ///
13 | [DataMember(Name = "uitu")]
14 | public string Uitu { get; set; }
15 | }
16 |
17 | }
18 |
--------------------------------------------------------------------------------
/FairMark/TrueApi/DataContracts/4_2_2_3_DisaggregationDocument.cs:
--------------------------------------------------------------------------------
1 | namespace FairMark.TrueApi.DataContracts
2 | {
3 | using System.Collections.Generic;
4 | using System.Runtime.Serialization;
5 |
6 | ///
7 | /// 4.2.1.3. Расформирование агрегата
8 | ///
9 | [DataContract]
10 | public class DisaggregationDocument : IUniformDocumentBase
11 | {
12 | public string DocumentApiName { get; } = "DISAGGREGATION_DOCUMENT";
13 | public ProductGroupsTrueApi ProductGroup { get; set; } = ProductGroupsTrueApi.milk;
14 |
15 | ///
16 | /// ИНН участника оборота товаров
17 | ///
18 | [DataMember(Name = "participant_inn")]
19 | public string ParticipantInn { get; set; }
20 |
21 | ///
22 | /// Список расформируемых агрегатов
23 | ///
24 | [DataMember(Name = "products_list")]
25 | public List DisaggregationUnits { get; set; }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/FairMark/TrueApi/DataContracts/4_2_5_1_IntroduceGoodsDocumentRF.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace FairMark.TrueApi.DataContracts
8 | {
9 | using System.Runtime.Serialization;
10 |
11 | ///
12 | /// 4.2.5.1. Ввод в оборот
13 | ///
14 | [DataContract]
15 | public class IntroduceGoodsDocumentRF : IUniformDocumentBase
16 | {
17 | public string DocumentApiName { get; } = "LP_INTRODUCE_GOODS";
18 | public ProductGroupsTrueApi ProductGroup { get; set; }
19 |
20 | ///
21 | /// ИНН участника, осуществившего эмиссию КИ
22 | ///
23 | [DataMember(Name = "participant_inn")]
24 | public string ParticipantInn { get; set; }
25 |
26 | ///
27 | /// Дата производства товара.
28 | /// Задаётся в формате yyyy-MM-dd. Диапазон допустимых значений: от даты создания документа минус пять лет по дату создания документа.
29 | /// Диапазон допустимых значений: от даты создания документа минус пять лет по дату создания документа.
30 | /// Параметр является обязательным, если "production_date" ("Дата производства товара") не указан в массиве ("Массив, содержащий список передаваемых кодов товаров")
31 | [DataMember(Name = "production_date")]
32 | public string ProductionDate { get; set; }
33 |
34 | ///
35 | /// ИНН производителя товара
36 | ///
37 | [DataMember(Name = "producer_inn")]
38 | public string ProducerInn { get; set; }
39 |
40 | ///
41 | /// ИНН собственника товара
42 | ///
43 | [DataMember(Name = "owner_inn")]
44 | public string OwnerInn { get; set; }
45 |
46 | ///
47 | /// Тип производственного заказа
48 | /// Возможные значения: OWN_PRODUCTION – Собственное производство
49 | ///
50 | [DataMember(Name = "production_type")]
51 | public string ProductionType { get; } = "OWN_PRODUCTION";//According to documentation only one value can be - OWN_PRODUCTION
52 |
53 | ///
54 | /// Перечень товаров
55 | ///
56 | [DataMember(Name = "products")]
57 | public List Products { get; set; }
58 | }
59 |
60 | }
61 |
--------------------------------------------------------------------------------
/FairMark/TrueApi/DataContracts/5_4_2_GetParticipantGtinsReponse.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace FairMark.TrueApi.DataContracts
8 | {
9 | using System.Runtime.Serialization;
10 |
11 | ///
12 | /// Ответ на 5.4.2. Метод получения списка кодов товаров (GTIN) УОТ по ИНН
13 | /// Примечание: Ответ, получаемый в реальности, не соответствует документации!
14 | ///
15 | [DataContract]
16 | public class GetParticipantGtinsReponse
17 | {
18 | ///
19 | /// Сколько всего кодов
20 | ///
21 | [DataMember(Name = "total")]
22 | public int Total { get; set; }
23 |
24 | ///
25 | /// Список Gtin`ов
26 | ///
27 | [DataMember(Name = "gtins")]
28 | public List Gtins { get; set; }
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/FairMark/TrueApi/DataContracts/DocumentStatuses.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.Serialization;
2 |
3 | namespace FairMark.TrueApi.DataContracts
4 | {
5 | ///
6 | /// Справочник TrueApi "Статусы документов"
7 | ///
8 | [DataContract]
9 | public enum DocumentStatuses
10 | {
11 | ///
12 | /// Проверяется
13 | ///
14 | [EnumMember(Value = @"IN_PROGRESS")]
15 | IN_PROGRESS = 0,
16 |
17 | ///
18 | /// Обработан
19 | ///
20 | [EnumMember(Value = @"CHECKED_OK")]
21 | CHECKED_OK = 1,
22 |
23 | ///
24 | /// Обработан с ошибками
25 | ///
26 | [EnumMember(Value = @"CHECKED_NOT_OK")]
27 | CHECKED_NOT_OK = 2,
28 |
29 | ///
30 | /// Техническая ошибка
31 | ///
32 | [EnumMember(Value = @"PROCESSING_ERROR")]
33 | PROCESSING_ERROR = 3,
34 |
35 | ///
36 | /// Принят
37 | /// Примечание: Только для документа "Отгрузка"
38 | ///
39 | [EnumMember(Value = @"ACCEPTED")]
40 | ACCEPTED = 4,
41 |
42 | ///
43 | /// Аннулирован
44 | /// Примечание: Только для документа "Отгрузка" и документов ЭДО
45 | ///
46 | [EnumMember(Value = @"CANCELLED")]
47 | CANCELLED = 5,
48 |
49 | ///
50 | /// Ожидает приемку
51 | /// Примечание: Только для документа "Отгрузка". Устанавливается при успешной обработке документа "Отгрузка"
52 | ///
53 | [EnumMember(Value = @"WAIT_ACCEPTANCE")]
54 | WAIT_ACCEPTANCE = 6,
55 |
56 | ///
57 | /// Обработан с ошибками
58 | ///
59 | [EnumMember(Value = @"PARSE_ERROR")]
60 | PARSE_ERROR = 7,
61 |
62 | ///
63 | /// Ожидает регистрации участника в ГИС МТ
64 | /// Примечание: Только для документа "Отгрузка". Устанавливается при успешной обработке документа "Отгрузка товара" в сторону незарегистрированного участника
65 | ///
66 | [EnumMember(Value = @"WAIT_PARTICIPANT_REGISTRATION")]
67 | WAIT_PARTICIPANT_REGISTRATION = 8,
68 |
69 | ///
70 | /// Ожидает продолжения обработки документа
71 | ///
72 | [EnumMember(Value = @"WAIT_FOR_CONTINUATION")]
73 | WAIT_FOR_CONTINUATION = 9
74 | }
75 | }
76 |
--------------------------------------------------------------------------------
/FairMark/TrueApi/DataContracts/ProductGroupsTrueApi.cs:
--------------------------------------------------------------------------------
1 | namespace FairMark.TrueApi.DataContracts
2 | {
3 | using System.Runtime.Serialization;
4 |
5 | [DataContract]
6 | public enum ProductGroupsTrueApi
7 | {
8 | ///
9 | ///Предметы одежды, бельё постельное, столовое, туалетное и кухонное
10 | ///
11 | [EnumMember(Value = @"lp")]
12 | lp = 1,
13 | ///
14 | /// Обувные товары
15 | ///
16 | [EnumMember(Value = @"shoes")]
17 | shoes = 2,
18 | ///
19 | /// Табачная продукция
20 | ///
21 | [EnumMember(Value = @"tobacco")]
22 | tobacco = 3,
23 | ///
24 | /// Духи и туалетная вода
25 | ///
26 | [EnumMember(Value = @"perfumery")]
27 | perfumery = 4,
28 | ///
29 | /// Шины и покрышки пневматические резиновые новые
30 | ///
31 | [EnumMember(Value = @"tires")]
32 | tires = 5,
33 | ///
34 | /// Фотокамеры (кроме кинокамер), фотовспышки и лампы-вспышки
35 | ///
36 | [EnumMember(Value = @"electronics")]
37 | electronics = 6,
38 | ///
39 | /// Молочная продукция
40 | ///
41 | [EnumMember(Value = @"milk")]
42 | milk = 8,
43 | ///
44 | /// Велосипеды и велосипедные рамы
45 | ///
46 | [EnumMember(Value = @"bicycle")]
47 | bicycle = 9,
48 | ///
49 | /// Кресла-коляски
50 | ///
51 | [EnumMember(Value = @"wheelchairs")]
52 | wheelchairs = 10,
53 | ///
54 | /// Альтернативная табачная продукция
55 | ///
56 | [EnumMember(Value = @"otp")]
57 | otp = 12,
58 | ///
59 | /// Упакованная вода
60 | ///
61 | [EnumMember(Value = @"water")]
62 | water = 13,
63 | ///
64 | /// Товары из натурального меха
65 | ///
66 | [EnumMember(Value = @"furs")]
67 | furs = 14,
68 | ///
69 | /// Пиво, напитки, изготавливаемые на основе пива, слабоалкогольные напитки
70 | ///
71 | [EnumMember(Value = @"beer")]
72 | beer = 15,
73 | ///
74 | /// Никотиносодержащая продукция
75 | ///
76 | [EnumMember(Value = @"ncp")]
77 | ncp = 16,
78 | ///
79 | /// Биологические активные добавки к пище
80 | ///
81 | [EnumMember(Value = @"bio")]
82 | bio = 17
83 | }
84 | }
85 |
--------------------------------------------------------------------------------
/FairMark/TrueApi/TrueApiClient.Chapter3.cs:
--------------------------------------------------------------------------------
1 | namespace FairMark.TrueApi
2 | {
3 | using System;
4 | using System.Text;
5 | using DataContracts;
6 | using RestSharp;
7 | using Toolbox;
8 |
9 | public partial class TrueApiClient
10 | {
11 | ///
12 | /// 3.1.1. Метод создания заявки на регистрацию УОТ
13 | ///
14 | public string Register(ProductDocument organizationInfo)
15 | {
16 | var json = Serializer.Serialize(organizationInfo);
17 | var signature = GostCryptoHelpers.ComputeDetachedSignature(UserCertificate, json);
18 | var jsonBase64 = Convert.ToBase64String(Encoding.UTF8.GetBytes(json));
19 | var response = Post("/elk/registration", new Registration
20 | {
21 | DocumentFormat = Registration.DocumentFormatJson,
22 | ProductDocument = jsonBase64,
23 | Signature = signature,
24 | });
25 |
26 | return response.RegistrationRequestDocID;
27 | }
28 |
29 | ///
30 | /// 3.1.2. Метод проверки статуса заявки УОТ на регистрацию по ID заявки
31 | ///
32 | public RegistrationStatusResponse GetRegistrationStatus(int registrationDocId)
33 | {
34 | return Get("/elk/documents/status/{documentId}", new[]
35 | {
36 | new Parameter("documentId", registrationDocId, ParameterType.UrlSegment),
37 | });
38 | }
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/FairMark/TrueApi/TrueApiClient.Chapter4.cs:
--------------------------------------------------------------------------------
1 | namespace FairMark.TrueApi
2 | {
3 | using System;
4 | using System.Text;
5 | using DataContracts;
6 | using RestSharp;
7 | using Toolbox;
8 |
9 | public partial class TrueApiClient
10 | {
11 | public UniformDocument PrepareUniformDocument(IUniformDocumentBase document)
12 | {
13 | var Serializer = new ServiceStackSerializer();
14 | var json = Serializer.Serialize(document);
15 | var signature = GostCryptoHelpers.ComputeDetachedSignature(UserCertificate, json);
16 | var jsonBase64 = Convert.ToBase64String(Encoding.UTF8.GetBytes(json));
17 | Tracer.Invoke("Кодирование универсального документа в DocumentBase64", new[] { json });
18 | return new UniformDocument() { DocumentBase64 = jsonBase64, Signature = signature, Type = document.DocumentApiName };
19 | }
20 |
21 | ///
22 | /// 4.1. Send unified document method
23 | ///
24 | public string SendUniformDocument(IUniformDocumentBase document)
25 | {
26 | var response = Post("/lk/documents/create",
27 | PrepareUniformDocument(document),
28 | new Parameter[] { new RestSharp.Parameter("pg", document.ProductGroup, ParameterType.QueryString) });
29 |
30 | return response;
31 | }
32 |
33 |
34 | ///
35 | /// 4.2.2.1 Аггрегация
36 | ///
37 | [Obsolete("Use SendUniformDocument() method for sending AggregationDocument")]
38 | public string Aggregation(AggregationDocument Document)
39 | {
40 | var json = Serializer.Serialize(Document);
41 | var signature = GostCryptoHelpers.ComputeDetachedSignature(UserCertificate, json);
42 | var jsonBase64 = Convert.ToBase64String(Encoding.UTF8.GetBytes(json));
43 | var response = Post("/lk/documents/create", new UniformDocument()
44 | {
45 | DocumentBase64 = jsonBase64,
46 | Signature = signature,
47 | Type = "AGGREGATION_DOCUMENT"
48 | },
49 | new Parameter[] { new RestSharp.Parameter("pg", "milk", ParameterType.QueryString) });
50 |
51 | return response;
52 | }
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/FairMark/TrueApi/TrueApiClient.Chapter6.cs:
--------------------------------------------------------------------------------
1 | namespace FairMark.TrueApi
2 | {
3 | using System;
4 | using DataContracts;
5 | using RestSharp;
6 |
7 | public partial class TrueApiClient
8 | {
9 | ///
10 | /// 6.4. Метод получения содержимого документа по идентификатору
11 | ///
12 | /// ID документа, формируемый в ГИС МТ
13 | /// Значение устанавливает количество записей в ответе(не более 10 000 записей, по умолчанию 10 записей)
14 | /// Примечание: При указании данного параметра необходимо указать товарную группу
15 | /// Товарная групп
16 | /// Примечание: Параметр обязательный для товарных групп: milk – Молочная продукция; water – Упакованная вода
17 | ///
18 | public DocumentInfo GetDocumentInfo(Guid docId, int limit, ProductGroupsTrueApi productGroup)
19 | {
20 | return GetDocumentInfo(docId.ToString(), limit, productGroup);
21 | }
22 |
23 | ///
24 | /// 6.4. Метод получения содержимого документа по идентификатору
25 | ///
26 | /// ID документа, формируемый в ГИС МТ
27 | /// Значение устанавливает количество записей в ответе(не более 10 000 записей, по умолчанию 10 записей)
28 | /// Примечание: При указании данного параметра необходимо указать товарную группу
29 | /// Товарная групп
30 | /// Примечание: Параметр обязательный для товарных групп: milk – Молочная продукция; water – Упакованная вода
31 | ///
32 | public DocumentInfo GetDocumentInfo(string docId, int limit, ProductGroupsTrueApi productGroup)
33 | {
34 | return Get("/doc/{docId}/info", new[]
35 | {
36 | new Parameter("docId", docId.ToLower(), ParameterType.UrlSegment),
37 | new Parameter("limit", limit.ToString(), ParameterType.QueryString),
38 | new Parameter("pg", productGroup.ToString(), ParameterType.UrlSegment)
39 | });
40 | }
41 |
42 |
43 |
44 | ///
45 | /// 6.9. Метод получения списка КИ по номеру документа.
46 | ///
47 | ///
48 | /// Список КИ
49 | public string[] GetCisesByOrderId(string docNum) // TODO Сделать поддержку второго параметра pg (товарная группа)
50 | {
51 | return Get("/cises/doc/{docNum}", new[] { new Parameter("docNum", docNum, ParameterType.UrlSegment) });
52 | }
53 |
54 |
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/FairMark/TrueApi/TrueApiClient.cs:
--------------------------------------------------------------------------------
1 | namespace FairMark.TrueApi
2 | {
3 | using RestSharp;
4 |
5 | public partial class TrueApiClient : CommonApiClient
6 | {
7 | ///
8 | /// Sandbox API endpoint.
9 | ///
10 | public const string SandboxApiUrl =
11 | //"https://demo.lp.crpt.tech/api/v3/";
12 | //"https://demo.lp.crpt.tech/api/v3/auth/cert/key";
13 | "https://int01.gismt.crpt.tech/api/v3/true-api";
14 |
15 | ///
16 | /// Production API endpoint.
17 | ///
18 | public const string ProductionApiUrl = "https://ismp.crpt.ru/api/v3/";
19 |
20 | ///
21 | /// Initializes a new instance of the .
22 | ///
23 | /// Base URL of the True API.
24 | /// Authentication credentials.
25 | public TrueApiClient(string baseUrl, CommonCredentials credentials)
26 | : base(baseUrl, credentials)
27 | {
28 | }
29 |
30 | ///
31 | /// Initializes a new instance of the .
32 | ///
33 | /// REST client.
34 | /// Authentication credentials.
35 | public TrueApiClient(IRestClient restClient, CommonCredentials credentials)
36 | : base(restClient, credentials)
37 | {
38 | }
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/FairMark/Xsd/ON_NSCHFDOPPOK/ФайлИнфПокКНД.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | //
5 | // Changes to this file may cause incorrect behavior and will be lost if
6 | // the code is regenerated.
7 | //
8 | //------------------------------------------------------------------------------
9 |
10 | // This code was generated by XmlSchemaClassGenerator version 2.0.521.0.
11 | namespace FairMark.Xsd.ON_NSCHFDOPPOK
12 | {
13 |
14 |
15 | [System.CodeDom.Compiler.GeneratedCodeAttribute("XmlSchemaClassGenerator", "2.0.521.0")]
16 | [System.SerializableAttribute()]
17 | [System.Xml.Serialization.XmlTypeAttribute("ФайлИнфПокКНД", Namespace="", AnonymousType=true)]
18 | public enum ФайлИнфПокКНД
19 | {
20 |
21 | [System.Xml.Serialization.XmlEnumAttribute("1115132")]
22 | Item1115132,
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/FairMark/Xsd/ON_NSCHFDOPPOK/ФайлИнфПокСодФХЖ4ИнфПолФХЖ4ТекстИнф.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | //
5 | // Changes to this file may cause incorrect behavior and will be lost if
6 | // the code is regenerated.
7 | //
8 | //------------------------------------------------------------------------------
9 |
10 | // This code was generated by XmlSchemaClassGenerator version 2.0.521.0.
11 | namespace FairMark.Xsd.ON_NSCHFDOPPOK
12 | {
13 |
14 |
15 | [System.CodeDom.Compiler.GeneratedCodeAttribute("XmlSchemaClassGenerator", "2.0.521.0")]
16 | [System.SerializableAttribute()]
17 | [System.Xml.Serialization.XmlTypeAttribute("ФайлИнфПокСодФХЖ4ИнфПолФХЖ4ТекстИнф", Namespace="", AnonymousType=true)]
18 | [System.Diagnostics.DebuggerStepThroughAttribute()]
19 | [System.ComponentModel.DesignerCategoryAttribute("code")]
20 | public partial class ФайлИнфПокСодФХЖ4ИнфПолФХЖ4ТекстИнф
21 | {
22 |
23 | ///
24 | /// Идентификатор
25 | /// Minimum length: 1.
26 | /// Maximum length: 50.
27 | ///
28 | [System.ComponentModel.DescriptionAttribute("Идентификатор")]
29 | [System.ComponentModel.DataAnnotations.MinLengthAttribute(1)]
30 | [System.ComponentModel.DataAnnotations.MaxLengthAttribute(50)]
31 | [System.ComponentModel.DataAnnotations.RequiredAttribute()]
32 | [System.Xml.Serialization.XmlAttributeAttribute("Идентиф")]
33 | public string Идентиф { get; set; }
34 |
35 | ///
36 | /// Значение
37 | /// Minimum length: 1.
38 | /// Maximum length: 2000.
39 | ///
40 | [System.ComponentModel.DescriptionAttribute("Значение")]
41 | [System.ComponentModel.DataAnnotations.MinLengthAttribute(1)]
42 | [System.ComponentModel.DataAnnotations.MaxLengthAttribute(2000)]
43 | [System.ComponentModel.DataAnnotations.RequiredAttribute()]
44 | [System.Xml.Serialization.XmlAttributeAttribute("Значен")]
45 | public string Значен { get; set; }
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/FairMark/Xsd/ON_NSCHFDOPPOK/ФайлИнфПокСодФХЖ4СвПринСвЛицПрин.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | //
5 | // Changes to this file may cause incorrect behavior and will be lost if
6 | // the code is regenerated.
7 | //
8 | //------------------------------------------------------------------------------
9 |
10 | // This code was generated by XmlSchemaClassGenerator version 2.0.521.0.
11 | namespace FairMark.Xsd.ON_NSCHFDOPPOK
12 | {
13 |
14 |
15 | [System.CodeDom.Compiler.GeneratedCodeAttribute("XmlSchemaClassGenerator", "2.0.521.0")]
16 | [System.SerializableAttribute()]
17 | [System.Xml.Serialization.XmlTypeAttribute("ФайлИнфПокСодФХЖ4СвПринСвЛицПрин", Namespace="", AnonymousType=true)]
18 | [System.Diagnostics.DebuggerStepThroughAttribute()]
19 | [System.ComponentModel.DesignerCategoryAttribute("code")]
20 | public partial class ФайлИнфПокСодФХЖ4СвПринСвЛицПрин
21 | {
22 |
23 | ///
24 | /// Работник организации покупателя
25 | ///
26 | [System.ComponentModel.DescriptionAttribute("Работник организации покупателя")]
27 | [System.Xml.Serialization.XmlElementAttribute("РабОргПок", Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
28 | public ФайлИнфПокСодФХЖ4СвПринСвЛицПринРабОргПок РабОргПок { get; set; }
29 |
30 | ///
31 | /// Иное лицо
32 | ///
33 | [System.ComponentModel.DescriptionAttribute("Иное лицо")]
34 | [System.Xml.Serialization.XmlElementAttribute("ИнЛицо", Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
35 | public ФайлИнфПокСодФХЖ4СвПринСвЛицПринИнЛицо ИнЛицо { get; set; }
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/FairMark/Xsd/ON_NSCHFDOPPOK/ФайлИнфПокСодФХЖ4СвПринСвЛицПринИнЛицо.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | //
5 | // Changes to this file may cause incorrect behavior and will be lost if
6 | // the code is regenerated.
7 | //
8 | //------------------------------------------------------------------------------
9 |
10 | // This code was generated by XmlSchemaClassGenerator version 2.0.521.0.
11 | namespace FairMark.Xsd.ON_NSCHFDOPPOK
12 | {
13 |
14 |
15 | [System.CodeDom.Compiler.GeneratedCodeAttribute("XmlSchemaClassGenerator", "2.0.521.0")]
16 | [System.SerializableAttribute()]
17 | [System.Xml.Serialization.XmlTypeAttribute("ФайлИнфПокСодФХЖ4СвПринСвЛицПринИнЛицо", Namespace="", AnonymousType=true)]
18 | [System.Diagnostics.DebuggerStepThroughAttribute()]
19 | [System.ComponentModel.DesignerCategoryAttribute("code")]
20 | public partial class ФайлИнфПокСодФХЖ4СвПринСвЛицПринИнЛицо
21 | {
22 |
23 | ///
24 | /// Представитель организации, которой доверено принятие товаров (груза)
25 | ///
26 | [System.ComponentModel.DescriptionAttribute("Представитель организации, которой доверено принятие товаров (груза)")]
27 | [System.Xml.Serialization.XmlElementAttribute("ПредОргПрин", Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
28 | public ФайлИнфПокСодФХЖ4СвПринСвЛицПринИнЛицоПредОргПрин ПредОргПрин { get; set; }
29 |
30 | ///
31 | /// Физическое лицо, которому доверено принятие товаров (груза)
32 | ///
33 | [System.ComponentModel.DescriptionAttribute("Физическое лицо, которому доверено принятие товаров (груза)")]
34 | [System.Xml.Serialization.XmlElementAttribute("ФЛПрин", Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
35 | public ФайлИнфПокСодФХЖ4СвПринСвЛицПринИнЛицоФЛПрин ФЛПрин { get; set; }
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/FairMark/Xsd/ON_NSCHFDOPPR/АдрИнфТип.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | //
5 | // Changes to this file may cause incorrect behavior and will be lost if
6 | // the code is regenerated.
7 | //
8 | //------------------------------------------------------------------------------
9 |
10 | // This code was generated by XmlSchemaClassGenerator version 2.0.521.0.
11 | namespace FairMark.Xsd.ON_NSCHFDOPPR
12 | {
13 |
14 |
15 | ///
16 | /// Информация об адресе, в том числе об адресе за пределами территории Российской Федерации
17 | ///
18 | [System.ComponentModel.DescriptionAttribute("Информация об адресе, в том числе об адресе за пределами территории Российской Фе" +
19 | "дерации")]
20 | [System.CodeDom.Compiler.GeneratedCodeAttribute("XmlSchemaClassGenerator", "2.0.521.0")]
21 | [System.SerializableAttribute()]
22 | [System.Xml.Serialization.XmlTypeAttribute("АдрИнфТип", Namespace="")]
23 | [System.Diagnostics.DebuggerStepThroughAttribute()]
24 | [System.ComponentModel.DesignerCategoryAttribute("code")]
25 | public partial class АдрИнфТип
26 | {
27 |
28 | ///
29 | /// Код страны
30 | /// Код из Общероссийского классификатора стран мира
31 | /// Minimum length: 3.
32 | /// Maximum length: 3.
33 | /// Pattern: [0-9]{3}.
34 | ///
35 | [System.ComponentModel.DescriptionAttribute("Код страны")]
36 | [System.ComponentModel.DataAnnotations.MinLengthAttribute(3)]
37 | [System.ComponentModel.DataAnnotations.MaxLengthAttribute(3)]
38 | [System.ComponentModel.DataAnnotations.RegularExpressionAttribute("[0-9]{3}")]
39 | [System.ComponentModel.DataAnnotations.RequiredAttribute()]
40 | [System.Xml.Serialization.XmlAttributeAttribute("КодСтр")]
41 | public string КодСтр { get; set; }
42 |
43 | ///
44 | /// Адрес
45 | /// Minimum length: 1.
46 | /// Maximum length: 1000.
47 | ///
48 | [System.ComponentModel.DescriptionAttribute("Адрес")]
49 | [System.ComponentModel.DataAnnotations.MinLengthAttribute(1)]
50 | [System.ComponentModel.DataAnnotations.MaxLengthAttribute(1000)]
51 | [System.ComponentModel.DataAnnotations.RequiredAttribute()]
52 | [System.Xml.Serialization.XmlAttributeAttribute("АдрТекст")]
53 | public string АдрТекст { get; set; }
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/FairMark/Xsd/ON_NSCHFDOPPR/КонтактТип.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | //
5 | // Changes to this file may cause incorrect behavior and will be lost if
6 | // the code is regenerated.
7 | //
8 | //------------------------------------------------------------------------------
9 |
10 | // This code was generated by XmlSchemaClassGenerator version 2.0.521.0.
11 | namespace FairMark.Xsd.ON_NSCHFDOPPR
12 | {
13 |
14 |
15 | ///
16 | /// Контактные данные
17 | ///
18 | [System.ComponentModel.DescriptionAttribute("Контактные данные")]
19 | [System.CodeDom.Compiler.GeneratedCodeAttribute("XmlSchemaClassGenerator", "2.0.521.0")]
20 | [System.SerializableAttribute()]
21 | [System.Xml.Serialization.XmlTypeAttribute("КонтактТип", Namespace="")]
22 | [System.Diagnostics.DebuggerStepThroughAttribute()]
23 | [System.ComponentModel.DesignerCategoryAttribute("code")]
24 | public partial class КонтактТип
25 | {
26 |
27 | ///
28 | /// Номер контактного телефона/факс
29 | /// Minimum length: 1.
30 | /// Maximum length: 255.
31 | ///
32 | [System.ComponentModel.DescriptionAttribute("Номер контактного телефона/факс")]
33 | [System.ComponentModel.DataAnnotations.MinLengthAttribute(1)]
34 | [System.ComponentModel.DataAnnotations.MaxLengthAttribute(255)]
35 | [System.Xml.Serialization.XmlAttributeAttribute("Тлф")]
36 | public string Тлф { get; set; }
37 |
38 | ///
39 | /// Адрес электронной почты
40 | /// Minimum length: 1.
41 | /// Maximum length: 255.
42 | ///
43 | [System.ComponentModel.DescriptionAttribute("Адрес электронной почты")]
44 | [System.ComponentModel.DataAnnotations.MinLengthAttribute(1)]
45 | [System.ComponentModel.DataAnnotations.MaxLengthAttribute(255)]
46 | [System.Xml.Serialization.XmlAttributeAttribute("ЭлПочта")]
47 | public string ЭлПочта { get; set; }
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/FairMark/Xsd/ON_NSCHFDOPPR/СумАкцизТип.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | //
5 | // Changes to this file may cause incorrect behavior and will be lost if
6 | // the code is regenerated.
7 | //
8 | //------------------------------------------------------------------------------
9 |
10 | // This code was generated by XmlSchemaClassGenerator version 2.0.521.0.
11 | namespace FairMark.Xsd.ON_NSCHFDOPPR
12 | {
13 |
14 |
15 | ///
16 | /// Сумма акциза
17 | ///
18 | [System.ComponentModel.DescriptionAttribute("Сумма акциза")]
19 | [System.CodeDom.Compiler.GeneratedCodeAttribute("XmlSchemaClassGenerator", "2.0.521.0")]
20 | [System.SerializableAttribute()]
21 | [System.Xml.Serialization.XmlTypeAttribute("СумАкцизТип", Namespace="")]
22 | [System.Diagnostics.DebuggerStepThroughAttribute()]
23 | [System.ComponentModel.DesignerCategoryAttribute("code")]
24 | public partial class СумАкцизТип
25 | {
26 |
27 | ///
28 | /// Сумма акциза
29 | /// Total number of digits: 19.
30 | /// Total number of digits in fraction: 2.
31 | ///
32 | [System.ComponentModel.DescriptionAttribute("Сумма акциза")]
33 | [System.Xml.Serialization.XmlElementAttribute("СумАкциз", Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
34 | public decimal СумАкциз { get; set; }
35 |
36 | ///
37 | /// Gets or sets a value indicating whether the СумАкциз property is specified.
38 | ///
39 | [System.Xml.Serialization.XmlIgnoreAttribute()]
40 | public bool СумАкцизSpecified { get; set; }
41 |
42 | ///
43 | /// Без акциза
44 | /// Minimum length: 10.
45 | /// Maximum length: 10.
46 | ///
47 | [System.ComponentModel.DescriptionAttribute("Без акциза")]
48 | [System.ComponentModel.DataAnnotations.MinLengthAttribute(10)]
49 | [System.ComponentModel.DataAnnotations.MaxLengthAttribute(10)]
50 | [System.Xml.Serialization.XmlElementAttribute("БезАкциз", Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
51 | public string БезАкциз { get; set; }
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/FairMark/Xsd/ON_NSCHFDOPPR/ТекстИнфТип.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | //
5 | // Changes to this file may cause incorrect behavior and will be lost if
6 | // the code is regenerated.
7 | //
8 | //------------------------------------------------------------------------------
9 |
10 | // This code was generated by XmlSchemaClassGenerator version 2.0.521.0.
11 | namespace FairMark.Xsd.ON_NSCHFDOPPR
12 | {
13 |
14 |
15 | ///
16 | /// Текстовая информация
17 | ///
18 | [System.ComponentModel.DescriptionAttribute("Текстовая информация")]
19 | [System.CodeDom.Compiler.GeneratedCodeAttribute("XmlSchemaClassGenerator", "2.0.521.0")]
20 | [System.SerializableAttribute()]
21 | [System.Xml.Serialization.XmlTypeAttribute("ТекстИнфТип", Namespace="")]
22 | [System.Diagnostics.DebuggerStepThroughAttribute()]
23 | [System.ComponentModel.DesignerCategoryAttribute("code")]
24 | public partial class ТекстИнфТип
25 | {
26 |
27 | ///
28 | /// Идентификатор
29 | /// Minimum length: 1.
30 | /// Maximum length: 50.
31 | ///
32 | [System.ComponentModel.DescriptionAttribute("Идентификатор")]
33 | [System.ComponentModel.DataAnnotations.MinLengthAttribute(1)]
34 | [System.ComponentModel.DataAnnotations.MaxLengthAttribute(50)]
35 | [System.ComponentModel.DataAnnotations.RequiredAttribute()]
36 | [System.Xml.Serialization.XmlAttributeAttribute("Идентиф")]
37 | public string Идентиф { get; set; }
38 |
39 | ///
40 | /// Значение
41 | /// Minimum length: 1.
42 | /// Maximum length: 2000.
43 | ///
44 | [System.ComponentModel.DescriptionAttribute("Значение")]
45 | [System.ComponentModel.DataAnnotations.MinLengthAttribute(1)]
46 | [System.ComponentModel.DataAnnotations.MaxLengthAttribute(2000)]
47 | [System.ComponentModel.DataAnnotations.RequiredAttribute()]
48 | [System.Xml.Serialization.XmlAttributeAttribute("Значен")]
49 | public string Значен { get; set; }
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/FairMark/Xsd/ON_NSCHFDOPPR/УчастникТипБанкРекв.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | //
5 | // Changes to this file may cause incorrect behavior and will be lost if
6 | // the code is regenerated.
7 | //
8 | //------------------------------------------------------------------------------
9 |
10 | // This code was generated by XmlSchemaClassGenerator version 2.0.521.0.
11 | namespace FairMark.Xsd.ON_NSCHFDOPPR
12 | {
13 |
14 |
15 | [System.CodeDom.Compiler.GeneratedCodeAttribute("XmlSchemaClassGenerator", "2.0.521.0")]
16 | [System.SerializableAttribute()]
17 | [System.Xml.Serialization.XmlTypeAttribute("УчастникТипБанкРекв", Namespace="", AnonymousType=true)]
18 | [System.Diagnostics.DebuggerStepThroughAttribute()]
19 | [System.ComponentModel.DesignerCategoryAttribute("code")]
20 | public partial class УчастникТипБанкРекв
21 | {
22 |
23 | ///
24 | /// Сведения о банке
25 | ///
26 | [System.ComponentModel.DescriptionAttribute("Сведения о банке")]
27 | [System.Xml.Serialization.XmlElementAttribute("СвБанк", Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
28 | public УчастникТипБанкРеквСвБанк СвБанк { get; set; }
29 |
30 | ///
31 | /// Номер банковского счета
32 | /// Minimum length: 1.
33 | /// Maximum length: 20.
34 | ///
35 | [System.ComponentModel.DescriptionAttribute("Номер банковского счета")]
36 | [System.ComponentModel.DataAnnotations.MinLengthAttribute(1)]
37 | [System.ComponentModel.DataAnnotations.MaxLengthAttribute(20)]
38 | [System.Xml.Serialization.XmlAttributeAttribute("НомерСчета")]
39 | public string НомерСчета { get; set; }
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/FairMark/Xsd/ON_NSCHFDOPPR/ФайлДокументКНД.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | //
5 | // Changes to this file may cause incorrect behavior and will be lost if
6 | // the code is regenerated.
7 | //
8 | //------------------------------------------------------------------------------
9 |
10 | // This code was generated by XmlSchemaClassGenerator version 2.0.521.0.
11 | namespace FairMark.Xsd.ON_NSCHFDOPPR
12 | {
13 |
14 |
15 | [System.CodeDom.Compiler.GeneratedCodeAttribute("XmlSchemaClassGenerator", "2.0.521.0")]
16 | [System.SerializableAttribute()]
17 | [System.Xml.Serialization.XmlTypeAttribute("ФайлДокументКНД", Namespace="", AnonymousType=true)]
18 | public enum ФайлДокументКНД
19 | {
20 |
21 | [System.Xml.Serialization.XmlEnumAttribute("1115131")]
22 | Item1115131,
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/FairMark/Xsd/ON_NSCHFDOPPR/ФайлДокументСвПродПер.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | //
5 | // Changes to this file may cause incorrect behavior and will be lost if
6 | // the code is regenerated.
7 | //
8 | //------------------------------------------------------------------------------
9 |
10 | // This code was generated by XmlSchemaClassGenerator version 2.0.521.0.
11 | namespace FairMark.Xsd.ON_NSCHFDOPPR
12 | {
13 |
14 |
15 | [System.CodeDom.Compiler.GeneratedCodeAttribute("XmlSchemaClassGenerator", "2.0.521.0")]
16 | [System.SerializableAttribute()]
17 | [System.Xml.Serialization.XmlTypeAttribute("ФайлДокументСвПродПер", Namespace="", AnonymousType=true)]
18 | [System.Diagnostics.DebuggerStepThroughAttribute()]
19 | [System.ComponentModel.DesignerCategoryAttribute("code")]
20 | public partial class ФайлДокументСвПродПер
21 | {
22 |
23 | ///
24 | /// Сведения о передаче (сдаче) товаров (результатов работ), имущественных прав (о предъявлении оказанных услуг)
25 | ///
26 | [System.ComponentModel.DescriptionAttribute("Сведения о передаче (сдаче) товаров (результатов работ), имущественных прав (о пр" +
27 | "едъявлении оказанных услуг)")]
28 | [System.ComponentModel.DataAnnotations.RequiredAttribute()]
29 | [System.Xml.Serialization.XmlElementAttribute("СвПер", Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
30 | public ФайлДокументСвПродПерСвПер СвПер { get; set; }
31 |
32 | ///
33 | /// Информационное поле факта хозяйственной жизни 3
34 | ///
35 | [System.ComponentModel.DescriptionAttribute("Информационное поле факта хозяйственной жизни 3")]
36 | [System.Xml.Serialization.XmlElementAttribute("ИнфПолФХЖ3", Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
37 | public ФайлДокументСвПродПерИнфПолФХЖ3 ИнфПолФХЖ3 { get; set; }
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/FairMark/Xsd/ON_NSCHFDOPPR/ФайлДокументСвПродПерСвПерСвЛицПер.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | //
5 | // Changes to this file may cause incorrect behavior and will be lost if
6 | // the code is regenerated.
7 | //
8 | //------------------------------------------------------------------------------
9 |
10 | // This code was generated by XmlSchemaClassGenerator version 2.0.521.0.
11 | namespace FairMark.Xsd.ON_NSCHFDOPPR
12 | {
13 |
14 |
15 | [System.CodeDom.Compiler.GeneratedCodeAttribute("XmlSchemaClassGenerator", "2.0.521.0")]
16 | [System.SerializableAttribute()]
17 | [System.Xml.Serialization.XmlTypeAttribute("ФайлДокументСвПродПерСвПерСвЛицПер", Namespace="", AnonymousType=true)]
18 | [System.Diagnostics.DebuggerStepThroughAttribute()]
19 | [System.ComponentModel.DesignerCategoryAttribute("code")]
20 | public partial class ФайлДокументСвПродПерСвПерСвЛицПер
21 | {
22 |
23 | ///
24 | /// Работник организации продавца
25 | ///
26 | [System.ComponentModel.DescriptionAttribute("Работник организации продавца")]
27 | [System.Xml.Serialization.XmlElementAttribute("РабОргПрод", Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
28 | public ФайлДокументСвПродПерСвПерСвЛицПерРабОргПрод РабОргПрод { get; set; }
29 |
30 | ///
31 | /// Иное лицо
32 | ///
33 | [System.ComponentModel.DescriptionAttribute("Иное лицо")]
34 | [System.Xml.Serialization.XmlElementAttribute("ИнЛицо", Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
35 | public ФайлДокументСвПродПерСвПерСвЛицПерИнЛицо ИнЛицо { get; set; }
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/FairMark/Xsd/ON_NSCHFDOPPR/ФайлДокументСвПродПерСвПерСвЛицПерИнЛицо.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | //
5 | // Changes to this file may cause incorrect behavior and will be lost if
6 | // the code is regenerated.
7 | //
8 | //------------------------------------------------------------------------------
9 |
10 | // This code was generated by XmlSchemaClassGenerator version 2.0.521.0.
11 | namespace FairMark.Xsd.ON_NSCHFDOPPR
12 | {
13 |
14 |
15 | [System.CodeDom.Compiler.GeneratedCodeAttribute("XmlSchemaClassGenerator", "2.0.521.0")]
16 | [System.SerializableAttribute()]
17 | [System.Xml.Serialization.XmlTypeAttribute("ФайлДокументСвПродПерСвПерСвЛицПерИнЛицо", Namespace="", AnonymousType=true)]
18 | [System.Diagnostics.DebuggerStepThroughAttribute()]
19 | [System.ComponentModel.DesignerCategoryAttribute("code")]
20 | public partial class ФайлДокументСвПродПерСвПерСвЛицПерИнЛицо
21 | {
22 |
23 | ///
24 | /// Представитель организации, которой доверена отгрузка товаров (передача результатов работ), передача имущественных прав (предъявление оказанных услуг)
25 | ///
26 | [System.ComponentModel.DescriptionAttribute("Представитель организации, которой доверена отгрузка товаров (передача результато" +
27 | "в работ), передача имущественных прав (предъявление оказанных услуг)")]
28 | [System.Xml.Serialization.XmlElementAttribute("ПредОргПер", Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
29 | public ФайлДокументСвПродПерСвПерСвЛицПерИнЛицоПредОргПер ПредОргПер { get; set; }
30 |
31 | ///
32 | /// Физическое лицо, которому доверена отгрузка товаров (передача результатов работ), передача имущественных прав (предъявление оказанных услуг)
33 | ///
34 | [System.ComponentModel.DescriptionAttribute("Физическое лицо, которому доверена отгрузка товаров (передача результатов работ)," +
35 | " передача имущественных прав (предъявление оказанных услуг)")]
36 | [System.Xml.Serialization.XmlElementAttribute("ФЛПер", Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
37 | public ФайлДокументСвПродПерСвПерСвЛицПерИнЛицоФЛПер ФЛПер { get; set; }
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/FairMark/Xsd/ON_NSCHFDOPPR/ФайлДокументСвСчФактГрузОт.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | //
5 | // Changes to this file may cause incorrect behavior and will be lost if
6 | // the code is regenerated.
7 | //
8 | //------------------------------------------------------------------------------
9 |
10 | // This code was generated by XmlSchemaClassGenerator version 2.0.521.0.
11 | namespace FairMark.Xsd.ON_NSCHFDOPPR
12 | {
13 |
14 |
15 | [System.CodeDom.Compiler.GeneratedCodeAttribute("XmlSchemaClassGenerator", "2.0.521.0")]
16 | [System.SerializableAttribute()]
17 | [System.Xml.Serialization.XmlTypeAttribute("ФайлДокументСвСчФактГрузОт", Namespace="", AnonymousType=true)]
18 | [System.Diagnostics.DebuggerStepThroughAttribute()]
19 | [System.ComponentModel.DesignerCategoryAttribute("code")]
20 | public partial class ФайлДокументСвСчФактГрузОт
21 | {
22 |
23 | ///
24 | /// Грузоотправитель и его адрес
25 | ///
26 | [System.ComponentModel.DescriptionAttribute("Грузоотправитель и его адрес")]
27 | [System.Xml.Serialization.XmlElementAttribute("ГрузОтпр", Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
28 | public УчастникТип ГрузОтпр { get; set; }
29 |
30 | ///
31 | /// Указано «он же»
32 | /// Minimum length: 5.
33 | /// Maximum length: 5.
34 | ///
35 | [System.ComponentModel.DescriptionAttribute("Указано «он же»")]
36 | [System.ComponentModel.DataAnnotations.MinLengthAttribute(5)]
37 | [System.ComponentModel.DataAnnotations.MaxLengthAttribute(5)]
38 | [System.Xml.Serialization.XmlElementAttribute("ОнЖе", Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
39 | public string ОнЖе { get; set; }
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/FairMarkClient.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio Version 16
4 | VisualStudioVersion = 16.0.30804.86
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FairMark", "FairMark\FairMark.csproj", "{9E173CD0-F789-4512-873D-02E765FBDF12}"
7 | EndProject
8 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FairMark.Tests", "FairMark.Tests\FairMark.Tests.csproj", "{6811BD91-847C-4DF0-A77C-3B8584889BB4}"
9 | EndProject
10 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TestApp", "TestApp\TestApp.csproj", "{670A8484-DA5C-45B0-894E-7DC4623CD504}"
11 | EndProject
12 | Global
13 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
14 | Debug|Any CPU = Debug|Any CPU
15 | Release|Any CPU = Release|Any CPU
16 | EndGlobalSection
17 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
18 | {9E173CD0-F789-4512-873D-02E765FBDF12}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
19 | {9E173CD0-F789-4512-873D-02E765FBDF12}.Debug|Any CPU.Build.0 = Debug|Any CPU
20 | {9E173CD0-F789-4512-873D-02E765FBDF12}.Release|Any CPU.ActiveCfg = Release|Any CPU
21 | {9E173CD0-F789-4512-873D-02E765FBDF12}.Release|Any CPU.Build.0 = Release|Any CPU
22 | {6811BD91-847C-4DF0-A77C-3B8584889BB4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
23 | {6811BD91-847C-4DF0-A77C-3B8584889BB4}.Debug|Any CPU.Build.0 = Debug|Any CPU
24 | {6811BD91-847C-4DF0-A77C-3B8584889BB4}.Release|Any CPU.ActiveCfg = Release|Any CPU
25 | {6811BD91-847C-4DF0-A77C-3B8584889BB4}.Release|Any CPU.Build.0 = Release|Any CPU
26 | {670A8484-DA5C-45B0-894E-7DC4623CD504}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
27 | {670A8484-DA5C-45B0-894E-7DC4623CD504}.Debug|Any CPU.Build.0 = Debug|Any CPU
28 | {670A8484-DA5C-45B0-894E-7DC4623CD504}.Release|Any CPU.ActiveCfg = Release|Any CPU
29 | {670A8484-DA5C-45B0-894E-7DC4623CD504}.Release|Any CPU.Build.0 = Release|Any CPU
30 | EndGlobalSection
31 | GlobalSection(SolutionProperties) = preSolution
32 | HideSolutionNode = FALSE
33 | EndGlobalSection
34 | GlobalSection(ExtensibilityGlobals) = postSolution
35 | SolutionGuid = {D844AF1B-8538-4FCA-8580-D1640239701C}
36 | EndGlobalSection
37 | EndGlobal
38 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2021 Alexey Yakovlev
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/Schemas/UniversalTransferDocumentXsd/ON_NSCHFDOPPOK_1_997_02_05_01_01.xsd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FairMark/FairMarkClient/c564b226c8696f8016d7e0ca8866f516968b2736/Schemas/UniversalTransferDocumentXsd/ON_NSCHFDOPPOK_1_997_02_05_01_01.xsd
--------------------------------------------------------------------------------
/Schemas/UniversalTransferDocumentXsd/ON_NSCHFDOPPR_1_997_01_05_01_01.xsd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FairMark/FairMarkClient/c564b226c8696f8016d7e0ca8866f516968b2736/Schemas/UniversalTransferDocumentXsd/ON_NSCHFDOPPR_1_997_01_05_01_01.xsd
--------------------------------------------------------------------------------
/Schemas/UniversalTransferDocumentXsd/generate.bat:
--------------------------------------------------------------------------------
1 | @echo off
2 | :: install the tool using:
3 | :: dotnet tool install -g dotnet-xscgen
4 |
5 | xscgen ON_NSCHFDOPPOK_1_997_02_05_01_01.xsd -n ""=FairMark.Xsd.ON_NSCHFDOPPOK -sf
6 |
7 | xscgen ON_NSCHFDOPPR_1_997_01_05_01_01.xsd -n ""=FairMark.Xsd.ON_NSCHFDOPPR -sf
8 |
--------------------------------------------------------------------------------
/Scripts/Coverage.ps1:
--------------------------------------------------------------------------------
1 | # run unit tests and gather coverage information
2 | $args = "test FairMark.Tests --logger=trx;LogFileName=TestResults.trx"
3 | $filter = "+[*]* -[*Test*]* -[*]MdlpApiClient.Xsd*"
4 | OpenCover.Console.exe -returntargetcode -register:administrator -target:dotnet.exe "-targetargs:$args" "-filter:$filter" -output:FairMarkCoverage.xml
5 | $exit = $lastexitcode
6 |
7 | # upload reports to the codecov.io server
8 | codecov -t "c01ca799-5c1f-4647-9743-7d6e8b3fb0f8" -f FairMarkCoverage.xml
9 |
10 | # convert trx reports to JUnit format so Gitlab can parse them
11 | trx2junit FairMark.Tests\TestResults\TestResults.trx
12 | #& "$PSScriptRoot\TestReportPrefix.ps1" -inputFileName FairMark.Tests\TestResults\TestResults.xml -outputFileName FairMark.Tests\TestResults\TestResults.xml -prefix "Normal."
13 |
14 | # make sure we don't fail on REST methods that need long timeouts
15 | Wait-Event -Timeout 20
16 |
17 | # return dotnet test exit code
18 | if (($exit + $exit2) -ne 0)
19 | {
20 | exit ($exit + $exit2)
21 | }
22 |
--------------------------------------------------------------------------------
/Scripts/TestReportPrefix.ps1:
--------------------------------------------------------------------------------
1 | # Add prefix to the test fixture names
2 | # This step is necessary because GitLab seems to
3 | # merge test reports based on their class names
4 | #
5 | # Usage:
6 | #
7 | # powershell /file TestReportPrefix.ps1 -inputFileName in.xml -outputFileName out.xml -prefix MyProject
8 |
9 | # Powershell 5.0 is required for using:
10 | #using assembly System.Xml.Linq
11 | #using namespace System.Xml.Linq
12 |
13 | param (
14 | [parameter(Mandatory = $true)] $inputFileName,
15 | [parameter(Mandatory = $true)] $outputFileName,
16 | [parameter(Mandatory = $true)] $prefix
17 | )
18 |
19 | $xmlLinq = [System.Reflection.Assembly]::LoadWithPartialName("System.Xml.Linq");
20 |
21 | echo "Loading $inputFileName..."
22 | $xml = [System.Xml.Linq.XDocument]::Load($inputFileName)
23 |
24 | # add prefix to all test suite class names
25 | ForEach ($suite in $xml.Root.Elements("testsuite"))
26 | {
27 | ForEach ($case in $suite.Elements("testcase"))
28 | {
29 | $name = $case.Attribute("classname")
30 | if ($name -ne $null)
31 | {
32 | $name.Value = $prefix + "." + $name.Value
33 | }
34 | }
35 | }
36 |
37 | echo "Saving $outputFileName..."
38 | $xml.Save($outputFileName)
39 |
--------------------------------------------------------------------------------
/SwaggerTest/App.xaml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/SwaggerTest/App.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Configuration;
4 | using System.Data;
5 | using System.Linq;
6 | using System.Threading.Tasks;
7 | using System.Windows;
8 |
9 | namespace SwaggerTest
10 | {
11 | ///
12 | /// Interaction logic for App.xaml
13 | ///
14 | public partial class App : Application
15 | {
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/SwaggerTest/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Windows;
2 |
3 | [assembly: ThemeInfo(
4 | ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
5 | //(used if a resource is not found in the page,
6 | // or application resource dictionaries)
7 | ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
8 | //(used if a resource is not found in the page,
9 | // app, or any theme specific resource dictionaries)
10 | )]
11 |
--------------------------------------------------------------------------------
/SwaggerTest/MainWindow.xaml:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/SwaggerTest/MainWindow.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 | using System.Windows;
7 | using System.Windows.Controls;
8 | using System.Windows.Data;
9 | using System.Windows.Documents;
10 | using System.Windows.Input;
11 | using System.Windows.Media;
12 | using System.Windows.Media.Imaging;
13 | using System.Windows.Navigation;
14 | using System.Windows.Shapes;
15 |
16 | namespace SwaggerTest
17 | {
18 | ///
19 | /// Interaction logic for MainWindow.xaml
20 | ///
21 | public partial class MainWindow : Window
22 | {
23 | public MainWindow()
24 | {
25 | InitializeComponent();
26 | }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/SwaggerTest/SwaggerTest.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | WinExe
5 | net5.0-windows
6 | true
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/TestApp/App.xaml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/TestApp/App.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Configuration;
4 | using System.Data;
5 | using System.Linq;
6 | using System.Threading.Tasks;
7 | using System.Windows;
8 |
9 | namespace TestApp
10 | {
11 | ///
12 | /// Interaction logic for App.xaml
13 | ///
14 | public partial class App : Application
15 | {
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/TestApp/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Windows;
2 |
3 | [assembly: ThemeInfo(
4 | ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
5 | //(used if a resource is not found in the page,
6 | // or application resource dictionaries)
7 | ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
8 | //(used if a resource is not found in the page,
9 | // app, or any theme specific resource dictionaries)
10 | )]
11 |
--------------------------------------------------------------------------------
/TestApp/MainWindow.xaml:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/TestApp/MainWindow.xaml.cs:
--------------------------------------------------------------------------------
1 | namespace TestApp
2 | {
3 | using System.Windows;
4 | using FairMark.Toolbox;
5 | using FairMark.TrueApi;
6 | using FairMark.TrueApi.DataContracts;
7 |
8 | ///
9 | /// Interaction logic for MainWindow.xaml
10 | ///
11 | public partial class MainWindow : Window
12 | {
13 | public TrueApiCredentials Credentials { get; set; }
14 | public TrueApiClient TrueApiClient { get; set; }
15 |
16 |
17 | public MainWindow()
18 | {
19 | InitializeComponent();
20 |
21 | Credentials = new TrueApiCredentials() { CertificateThumbprint = "bd7aa30aed4e856fc68b05eda8ae85d7888b2da6" };
22 | TrueApiClient = new TrueApiClient("https://int01.gismt.crpt.tech/api/v3/true-api/", Credentials);
23 |
24 | //var cises = TrueApiClient.GetCisesByOrderId("a1769132-796e-47cb-8bc5-1053c4d7d6c5");
25 | return;
26 | //var t = TrueApiClient.PostVoid("cises/list", , new[] { new Parameter("values","010463578558601021U6vlokgzAt0K!", ParameterType.RequestBody) });
27 | var t = TrueApiClient.Get("elk/product-groups/balance/all");
28 | var tt = TrueApiClient.Get("elk/product-groups/balance/all");
29 | }
30 |
31 |
32 | private void Button_Click(object sender, RoutedEventArgs e)
33 | {
34 | //tbxSignedText.Text = GostCryptoHelpers.ComputeDetachedSignature(TrueApiClient.UserCertificate, tbxTextToSign.Text);
35 | tbxSignedText.Text = GostCryptoHelpers.ComputeAttachedSignature(TrueApiClient.UserCertificate, tbxTextToSign.Text.Trim()).Trim();
36 | }
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/TestApp/TestApp.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | WinExe
5 | net462
6 | true
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------