| | | 1 | | using Newtonsoft.Json; |
| | | 2 | | |
| | | 3 | | namespace Services.ApiServices._1CApi.Models; |
| | | 4 | | |
| | | 5 | | public class OneCResponse |
| | | 6 | | { |
| | | 7 | | [JsonProperty("success")] |
| | 348 | 8 | | public bool Success { get; set; } |
| | | 9 | | |
| | | 10 | | [JsonProperty("message")] |
| | 69 | 11 | | public string? Message { get; set; } |
| | | 12 | | |
| | | 13 | | [JsonProperty("transactionId")] |
| | 181 | 14 | | public string? TransactionId { get; set; } |
| | | 15 | | |
| | | 16 | | /// <summary>Читаемый номер документа в 1С, например "ПЗ-000057" или "УТ-001234".</summary> |
| | | 17 | | [JsonProperty("documentNumber")] |
| | 254 | 18 | | public string? DocumentNumber { get; set; } |
| | | 19 | | |
| | | 20 | | /// <summary>Документ успешно проведён в 1С.</summary> |
| | | 21 | | [JsonProperty("isPosted")] |
| | 269 | 22 | | public bool IsPosted { get; set; } |
| | | 23 | | |
| | | 24 | | /// <summary>Документ намеренно создан черновиком без попытки проведения.</summary> |
| | | 25 | | [JsonProperty("isDraft")] |
| | 52 | 26 | | public bool IsDraft { get; set; } |
| | | 27 | | |
| | | 28 | | /// <summary> |
| | | 29 | | /// Товары, не найденные в номенклатуре 1С. Документ создан как черновик без этих позиций. |
| | | 30 | | /// Формат: "Артикул1 (Наименование1), Артикул2 (Наименование2)" |
| | | 31 | | /// </summary> |
| | | 32 | | [JsonProperty("missingNomenclature")] |
| | 121 | 33 | | public string? MissingNomenclature { get; set; } |
| | | 34 | | |
| | | 35 | | /// <summary>Номенклатура, автоматически созданная в 1С перед формированием документа.</summary> |
| | | 36 | | [JsonProperty("createdNomenclature")] |
| | 32 | 37 | | public string? CreatedNomenclature { get; set; } |
| | | 38 | | |
| | | 39 | | /// <summary> |
| | | 40 | | /// Ошибка при попытке провести (PATCH Posted=true). Документ создан, но не проведён из-за ошибки API 1С. |
| | | 41 | | /// </summary> |
| | | 42 | | [JsonProperty("postingError")] |
| | 101 | 43 | | public string? PostingError { get; set; } |
| | | 44 | | |
| | | 45 | | /// <summary> |
| | | 46 | | /// Полный ответ 1С при сбое: статус, код и причина без усечения (см. <c>OneCResponseErrors.Describe</c>). |
| | | 47 | | /// В отличие от <see cref="PostingError"/>, сюда не подставляются догадки о причине (например, нулевой |
| | | 48 | | /// остаток новой номенклатуры). Попадает в <c>DetailsJson</c> журнала проведений без изменения схемы БД. |
| | | 49 | | /// </summary> |
| | | 50 | | [JsonProperty("errorDetail", NullValueHandling = NullValueHandling.Ignore)] |
| | 53 | 51 | | public string? ErrorDetail { get; set; } |
| | | 52 | | |
| | | 53 | | /// <summary> |
| | | 54 | | /// Пометки о номенклатуре, которые стоит увидеть человеку: «найдено по варианту артикула 250603006». |
| | | 55 | | /// Пусто — поле не сериализуется. На количество и статусы документа не влияет. |
| | | 56 | | /// </summary> |
| | | 57 | | [JsonProperty("nomenclatureNotes", NullValueHandling = NullValueHandling.Ignore)] |
| | 17 | 58 | | public List<string>? NomenclatureNotes { get; set; } |
| | | 59 | | |
| | | 60 | | /// <summary> |
| | | 61 | | /// Строки, реально записанные в документ 1С. Количество в них может отличаться от количества |
| | | 62 | | /// в заказе (например, при утере реализатором в транзит уходит весь остаток склада), |
| | | 63 | | /// поэтому сводки показывают именно эти значения, а не Quantity заказа. |
| | | 64 | | /// </summary> |
| | | 65 | | [JsonProperty("documentLines")] |
| | 48 | 66 | | public List<OneCDocumentLine>? DocumentLines { get; set; } |
| | | 67 | | } |
| | | 68 | | |
| | | 69 | | /// <summary>Позиция документа 1С в том виде, в котором она ушла в 1С.</summary> |
| | | 70 | | public class OneCDocumentLine |
| | | 71 | | { |
| | | 72 | | [JsonProperty("article")] |
| | | 73 | | public string Article { get; set; } = string.Empty; |
| | | 74 | | |
| | | 75 | | [JsonProperty("quantity")] |
| | | 76 | | public decimal Quantity { get; set; } |
| | | 77 | | } |