-
Notifications
You must be signed in to change notification settings - Fork 1
/
address.go
418 lines (380 loc) · 16.2 KB
/
address.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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
package novapost
type (
SettlementRequest struct {
CityName string
Limit int
Page int
}
SettlementAddress struct {
Present string
Warehouses int
AddressDeliveryAllowed bool
StreetsAvailability bool
MainDescription string
Area string
Region string
SettlementTypeCode string
Ref string
DeliveryCity string
ParentRegionTypes string
ParentRegionCode string
RegionTypes string
RegionTypesCode string
}
Settlement struct {
TotalCount int
Addresses []SettlementAddress `xml:"Addresses>item"`
}
)
// SearchSettlements Онлайн пошук в довіднику населених пунктів
//
// Метод «searchSettlements», працює в моделі «Address», цей метод необхідний для ОНЛАЙН ПОШУКУ населених пунктів.
func (c *Client) SearchSettlements(req SettlementRequest) (*Response[Settlement], error) {
return RawRequest[Settlement](c, AddressModel, "searchSettlements", req)
}
type (
SettlementStreetRequest struct {
StreetName string
SettlementRef string
Page int
}
Location struct {
Latitude float64 `xml:"lat" json:"lat"`
Longitude float64 `xml:"lon" json:"lon"`
}
SettlementStreetAddress struct {
SettlementRef string
SettlementStreetRef string
SettlementStreetDescription string
Present string
StreetsType string
StreetsTypeDescription string
Location Location
}
SettlementStreet struct {
TotalCount string `json:"TotalCount"`
Addresses []SettlementStreetAddress `json:"Addresses"`
}
)
// SearchSettlementStreets Онлайн пошук вулиць в довіднику населених пунктів
//
// Метод «searchSettlementStreets», працює в моделі «Address», цей метод необхідний для ОНЛАЙН ПОШУКУ вулиць в обраному
// населеному пункті.
func (c *Client) SearchSettlementStreets(req SettlementStreetRequest) (*Response[SettlementStreet], error) {
return RawRequest[SettlementStreet](c, AddressModel, "searchSettlementStreets", req)
}
type SaveAddressRequest struct {
CounterpartyRef string
StreetRef string
BuildingNumber string
Flat string
Note string
}
// SaveAddress Створити адресу контрагента (відправник / одержувач)
//
// Метод «save», працює в моделі «Address», цей метод зберігає адресу контрагента отримувача/відправника.
func (c *Client) SaveAddress(req SaveAddressRequest) (*Response[RefDescription], error) {
return RawRequest[RefDescription](c, AddressModel, "save", req)
}
// DeleteAddress Видалити адресу контрагента (відправник / одержувач)
//
// Метод «delete», працює в моделі «Address», цей метод необхідний для видалення адреси контрагента
// відправника/отримувача.
//
// Редагувати дані контрагента можливо лише з моменту його створення та до моменту створення ІД з даним контаргентом.
func (c *Client) DeleteAddress(rd RefDescription) (*Response[RefDescription], error) {
return RawRequest[RefDescription](c, AddressModel, "delete", rd)
}
type UpdateAddressRequest struct {
CounterpartyRef string
StreetRef string
BuildingNumber string
Flat string
Note string
Ref string
}
// UpdateAddress Редагувати адресу контрагента (відправник / одержувач)
//
// Метод «update», працює в моделі «Address», цей метод необхідний для оновлення адреси контрагента
// відправника/отримувача.
//
// Редагувати дані контрагента можливо лише з моменту його створення та до моменту створення ІД з даним контаргентом.
func (c *Client) UpdateAddress(req UpdateAddressRequest) (*Response[RefDescription], error) {
return RawRequest[RefDescription](c, AddressModel, "update", req)
}
type (
GetSettlementsRequest struct {
AreaRef string
Ref string
RegionRef string
Warehouse bool
FindByString string
Page int
Limit int
}
SettlementGeneral struct {
Ref string
SettlementType string
Latitude float64
Longitude float64
Description string
DescriptionTranslit string
SettlementTypeDescription string
SettlementTypeDescriptionTranslit string
Region string
RegionsDescription string
RegionsDescriptionTranslit string
Area string
AreaDescription string
AreaDescriptionTranslit string
Index1 string
Index2 string
IndexCOATSU1 string
Delivery1 bool
Delivery2 bool
Delivery3 bool
Delivery4 bool
Delivery5 bool
Delivery6 bool
Delivery7 bool
Warehouse bool
SpecialCashCheck bool
}
)
// GetSettlements Довідник населених пунктів України
//
// Метод «getSettlements», працює в моделі «AddressGeneral», цей метод надає можливість завантажити довідник міст
// України (Українською або Російською мовами), до яких здійснюється доставка вантажів компанією «Нова пошта».
//
// Слід вразовувати, що метод «getSettlements» для кожного населеного пункту повертає область та район. Метод повертає
// не більше 150 записів на сторінку. Для перегляду більш ніж 150 записів, необхідно використовувати параметр "Page"
// разом з параметром "Limit".
//
// Також для методу доступний пошук по рядку, для нього потрібно зазначити параметр FindByString. Важливо! Пошук
// можливий лише Українською мовою.
//
// Параметр "Warehouse" із значенням "1 или 0" дозволить відобразити лише ті населені пункти в яких наявні відділення
// "Нова Пошта".
func (c *Client) GetSettlements(req GetSettlementsRequest) (*Response[SettlementGeneral], error) {
return RawRequest[SettlementGeneral](c, AddressGeneralModel, "getSettlements", req)
}
type (
CityRequest struct {
Ref string
FindByString string
Page int
Limit int
}
City struct {
Delivery1 bool
Delivery2 bool
Delivery3 bool
Delivery4 bool
Delivery5 bool
Delivery6 bool
Delivery7 bool
IsBranch bool
PreventEntryNewStreetsUser bool
SpecialCashCheck bool
CityID int
Description string
Ref string
Area string
SettlementType string
SettlementTypeDescription string
AreaDescription string
}
)
// GetCities Довідник міст компанії
//
// Отримання довідника міст компанії «Нова Пошта» українською та російською мовами. Метод «getCities» працює в моделі
// «Address», цей метод завантажує довідник населених пунктів України.
//
// Варто враховувати, що довідник вивантажується тільки з населеними пунктами, де є відділення "Нова Пошта" і можна
// оформити доставку на відділення, а також доставку за адресою.
//
// Якщо до цього запиту додати параметр «FindByString» (пошук за рядками) та у його властивостях прописати назву
// населеного пункту (Бровари), який потрібно знайти, то отримаємо запит за допомогою якого в довіднику знаходиться
// населений пункт.
func (c *Client) GetCities(req CityRequest) (*Response[City], error) {
return RawRequest[City](c, AddressModel, "getCities", req)
}
type Area struct {
Ref string
AreasCenter string
Description string
}
// GetAreas Довідник географічних областей України
//
// Метод «getAreas», працює в моделі «Address», цей метод необхідий для завантаження довідника географічних областей
// України, компанії «Новая почша».
func (c *Client) GetAreas() (*Response[Area], error) {
return RawRequest[Area](c, AddressModel, "getAreas", nil)
}
type (
WarehouseRequest struct {
PostFinance bool
BicycleParking bool
POSTerminal bool
WarehouseId int
FindByString string
CityName string
CityRef string
Page int
Limit int
Language string
TypeOfWarehouseRef string
}
SendingLimitationsOnDimensions struct {
Width float64
Height float64
Length float64
}
ReceivingLimitationsOnDimensions struct {
Width float64
Height float64
Length float64
}
Reception struct {
Monday string
Tuesday string
Wednesday string
Thursday string
Friday string
Saturday string
Sunday string
}
Delivery struct {
Monday string
Tuesday string
Wednesday string
Thursday string
Friday string
Saturday string
Sunday string
}
Schedule struct {
Monday string
Tuesday string
Wednesday string
Thursday string
Friday string
Saturday string
Sunday string
}
Warehouse struct {
SiteKey int
WorkInMobileAwis bool
DenyToSelect bool
CanGetMoneyTransfer bool
HasMirror bool
HasFittingRoom bool
OnlyReceivingParcel bool
PostFinance bool
BicycleParking bool
PaymentAccess bool
POSTerminal bool
InternationalShipping bool
SelfServiceWorkplacesCount bool
WarehouseForAgent bool
GeneratorEnabled bool
Description string
ShortAddress string
Phone string
TypeOfWarehouse string
Ref string
Number string
CityRef string
CityDescription string
SettlementRef string
SettlementDescription string
SettlementAreaDescription string
SettlementRegionsDescription string
SettlementTypeDescription string
Longitude float64
Latitude float64
TotalMaxWeightAllowed float64
PlaceMaxWeightAllowed float64
SendingLimitationsOnDimensions SendingLimitationsOnDimensions
ReceivingLimitationsOnDimensions ReceivingLimitationsOnDimensions
Reception Reception
Delivery Delivery
Schedule Schedule
DistrictCode string
WarehouseStatus string
WarehouseStatusDate string
WarehouseIllusha string
CategoryOfWarehouse string
Direct string
RegionCity string
MaxDeclaredCost float64
PostMachineType string
PostalCodeUA string
WarehouseIndex string
BeaconCode string
PostomatFor string
}
)
// GetWarehouses Довідник відділень та поштоматів
//
// Метод «getWarehouses», працює в моделі «Address», цей метод завантажує довідник відділень «Нова пошта» в розрізі
// населених пунктів України.
func (c *Client) GetWarehouses(req WarehouseRequest) (*Response[Warehouse], error) {
return RawRequest[Warehouse](c, AddressModel, "getWarehouses", req)
}
// GetWarehouseTypes Довідник типів відділень
//
// Метод «getWarehouseTypes», працює в моделі «Address», цей метод завантажує довідник типів відділень «Нова пошта».
func (c *Client) GetWarehouseTypes() (*Response[RefDescription], error) {
return RawRequest[RefDescription](c, AddressModel, "getWarehouseTypes", nil)
}
type (
StreetRequest struct {
CityRef string
FindByString string
Page int
Limit int
}
Street struct {
Ref string
Description string
StreetsTypeRef string
StreetsType string
}
)
// GetStreet Довідник вулиць компанії
//
// Метод «getStreet» працює в моделі «Address», цей метод завантажує довідник вулиць в рамках населених пунктів України
// куди здійснєю доставку компанія «Нова Пошта».
//
// Довідник використовується під час створення відправлень з типом доставки від/до адреси клієнта. Якщо в цей запит
// додати параметр FindByString (пошук по рядках) і в його властивостях прописати назву вулиці (Броварський), який
// потрібно знайти, то отримаємо запит за допомогою якого в довіднику знаходиться проспект або вулиця.
func (c *Client) GetStreet(req StreetRequest) (*Response[Street], error) {
return RawRequest[Street](c, AddressModel, "getStreet", req)
}
type (
AreaRef struct {
AreaRef string
}
AreaRegion struct {
Ref string
AreasCenter string
Description string
RegionType string
}
)
// GetSettlementCountryRegion Довідник районів областей населених пунктів
//
// Метод дозволяє отримати довідник районів облестей населених пунктів, тих самих які можна побачити викорисовуючи метод
// «getSettlements»
func (c *Client) GetSettlementCountryRegion(ref AreaRef) (*Response[AreaRegion], error) {
return RawRequest[AreaRegion](c, AddressModel, "getSettlementCountryRegion", ref)
}
// GetSettlementAreas Довідник областей населених пунктів
//
// Метод дозволяє отримати довідник облестей населених пунктів, тих самих які можна побачити викорисовуючи метод
// «getSettlements»
func (c *Client) GetSettlementAreas(ref Ref) (*Response[AreaRegion], error) {
return RawRequest[AreaRegion](c, AddressModel, "getSettlementAreas", ref)
}