-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathscan_sheet.go
127 lines (115 loc) · 6.81 KB
/
scan_sheet.go
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
package novapost
type (
InsertDocumentsRequest struct {
Ref string
DocumentRefs []string `xml:"DocumentRefs>item"`
Date string
}
RegistryDocument struct {
Ref string
Description string
Number string
Date string
Errors []string `xml:"Errors>item"`
Warnings []string `xml:"Warnings>item"`
Data []any
Success []RefNumber `xml:"Success>item"`
}
)
// InsertDocuments Додати експрес-накладні
//
// Для передачі оформлених відправлень реєстром необхідно сформувати відповідний запит. У відповідь на запит формування
// реєстру повертається номер реєстру та номери відправлень зі статусом "додано" або "не додано" до реєстру.
//
// # Є такі обмеження по роботі з реєстрами:
//
// 1) До реєстру можна додати інтернет-документ (ІД), якщо дані Відправника (місто, контрагент, адреса) ідентичні для
// всіх відправлень, що додаються.
//
// 2) ІД можна додати лише до одного реєстру, тобто один і той же документ не можна одночасно додати до кількох реєстрів.
//
// 3) До реєстру не можна додати ІД, якщо по документу вже отримано друковану форму і дата відправлення (друку) менша,
// ніж вчорашня дата від дати формування реєстру.
//
// 4) ІД можна додати до реєстру, лише до моменту створення експрес накладної на основі ІД (або проведення сканувань
// цього відправлення у відділенні/підрозділі Нової Пошти).
//
// 5) До реєстру не можна додати ІД, що помічено на видалення.
//
// 6) Після отримання друкованої форми реєстру, додання документів до нього блокується.
//
// # Робота з реєстрами приймання-передачі відправлень
//
// Для передачі оформлених відправлень по Реєстру, інтегрується функціонал формування та видалення реєстрів
// приймання-передачі відправлень. При передачі відправлень по Реєстру необхідно на кожному відправленні розміщувати
// маркування і роздрукувати два екземпляри Реєстру.
func (c *Client) InsertDocuments(req InsertDocumentsRequest) (*Response[RegistryDocument], error) {
return RawRequest[RegistryDocument](c, ScanSheetModel, "insertDocuments", req)
}
type (
ScanSheetRequest struct {
Ref string
CounterpartyRef string
}
ScanSheet struct {
Ref string
Number string
DateTime string
CitySenderRef string
CitySender string
SenderAddressRef string
SenderAddress string
SenderRef string
Sender string
Count int
Printed bool
}
)
// GetScanSheet Завантажити інформацію по одному реєстру
//
// # Робота з реєстрами прийманя-передачі відправлень
//
// Для передачі оформлених відправлень по Реєстру, інтегрується функціонал формування та видалення реєстрів
// приймання-передачі відправлень. При передачі відправлень по Реєстру необхідно на кожному відправленні розміщувати
// маркування та роздрукувати два екземпляри Реєстру.
func (c *Client) GetScanSheet(req ScanSheetRequest) (*Response[ScanSheet], error) {
return RawRequest[ScanSheet](c, ScanSheetModel, "getScanSheet", req)
}
// GetScanSheetList Завантажити список реєстрів
//
// Для передачі оформлених відправлень по Реєстру, інтегрується функціонал формування та видалення реєстрів
// приймання-передачі відправлень. При передачі відправлень по Реєстру необхідно на кожнома відправленні розміщувати
// маркування та роздрукувати два екземпляри Реєстру.
func (c *Client) GetScanSheetList() (*Response[ScanSheet], error) {
return RawRequest[ScanSheet](c, ScanSheetModel, "getScanSheetList", nil)
}
type (
ScanSheetRefs struct {
ScanSheetRefs []string `xml:"ScanSheetRefs>item"`
}
ScanSheetRef struct {
Ref string
Number string
Error string
}
RemoveDocumentsRequest struct {
DocumentRefs []string `xml:"DocumentRefs>item"`
Ref string
}
)
// DeleteScanSheet Видалити (розформувати) реєстр відправлень
//
// Після видалення реєстра, з інформаційної системи «Нова пошта" видаляється номер реєстру, а експрес-накладні, що були
// включені в нього звільняються, але не видаляються (відбувається розформування рееєстру). Для видалення реєстру
// необхідно сформувати відповідний запит.
func (c *Client) DeleteScanSheet(ssr ScanSheetRefs) (*Response[ScanSheetRef], error) {
return RawRequest[ScanSheetRef](c, ScanSheetModel, "delete", ssr)
}
// RemoveDocuments Видалити експрес-накладні з реєстру
//
// Після видалення реєстру в інформаційній системі «Нова пошта» видаляється номер реєстру, але експрес-накладні, які
// знаходилися в реєстрі, не видаляються (відбувається розформування реєстру). Для видалення експрес-накладних необхідно
// сформувати відповідний запит.
func (c *Client) RemoveDocuments(req RemoveDocumentsRequest) (*Response[ScanSheetRef], error) {
return RawRequest[ScanSheetRef](c, ScanSheetModel, "removeDocuments", req)
}