mirror of
https://github.com/retailcrm/api-client-go.git
synced 2024-11-21 20:36:03 +03:00
add methods for costs, customFields, customDictionaries
This commit is contained in:
parent
93bb2f5e26
commit
a2fdb06219
635
v5/client.go
635
v5/client.go
@ -2062,3 +2062,638 @@ func (c *Client) StaticticsUpdate() (SuccessfulResponse, int, errs.Failure) {
|
||||
|
||||
return resp, status, err
|
||||
}
|
||||
|
||||
// Getting of the cost list, adequate for the given filter
|
||||
//
|
||||
// Example:
|
||||
//
|
||||
// var client = v5.New("https://demo.url", "09jIJ")
|
||||
//
|
||||
// data, status, err := client.Costs(CostsRequest{
|
||||
// Filter: CostsFilter{
|
||||
// Ids: []string{"1","2","3"},
|
||||
// MinSumm: "1000"
|
||||
// },
|
||||
// })
|
||||
//
|
||||
// if err.ErrorMsg != "" {
|
||||
// fmt.Printf("%v", err.ErrorMsg)
|
||||
// }
|
||||
//
|
||||
// if status >= http.StatusBadRequest {
|
||||
// fmt.Printf("%v", err.ErrorMsg)
|
||||
// }
|
||||
//
|
||||
// for _, value := range data.Costs {
|
||||
// fmt.Printf("%v\n", value.Summ)
|
||||
// }
|
||||
func (c *Client) Costs(costs CostsRequest) (CostsResponse, int, ErrorResponse) {
|
||||
var resp CostsResponse
|
||||
|
||||
params, _ := query.Values(costs)
|
||||
|
||||
data, status, err := c.GetRequest(fmt.Sprintf("/costs?%s", params.Encode()))
|
||||
|
||||
if err.ErrorMsg != "" {
|
||||
return resp, status, err
|
||||
}
|
||||
|
||||
json.Unmarshal(data, &resp)
|
||||
|
||||
return resp, status, err
|
||||
}
|
||||
|
||||
// Creation of the cost
|
||||
//
|
||||
// Example:
|
||||
//
|
||||
// var client = v5.New("https://demo.url", "09jIJ")
|
||||
//
|
||||
// data, status, err := client.CostCreate(
|
||||
// v5.CostRecord{
|
||||
// DateFrom: "2012-12-12",
|
||||
// DateTo: "2012-12-12",
|
||||
// Summ: 12,
|
||||
// CostItem: "calculation-of-costs",
|
||||
// Order: Order{
|
||||
// Number: "1"
|
||||
// },
|
||||
// Sites: []string{"store"},
|
||||
// },
|
||||
// "store"
|
||||
// )
|
||||
//
|
||||
// if err.ErrorMsg != "" {
|
||||
// fmt.Printf("%v", err.ErrorMsg)
|
||||
// }
|
||||
//
|
||||
// if status >= http.StatusBadRequest {
|
||||
// fmt.Printf("%v", err.ErrorMsg)
|
||||
// }
|
||||
//
|
||||
// If data.Success == true {
|
||||
// fmt.Printf("%v", data.ID)
|
||||
// }
|
||||
func (c *Client) CostCreate(cost CostRecord, site ...string) (CreateResponse, int, ErrorResponse) {
|
||||
var resp CreateResponse
|
||||
|
||||
costJSON, _ := json.Marshal(&cost)
|
||||
|
||||
p := url.Values{
|
||||
"cost": {string(costJSON[:])},
|
||||
}
|
||||
|
||||
fillSite(&p, site)
|
||||
|
||||
data, status, err := c.PostRequest("/costs/create", p)
|
||||
if err.ErrorMsg != "" {
|
||||
return resp, status, err
|
||||
}
|
||||
|
||||
json.Unmarshal(data, &resp)
|
||||
|
||||
return resp, status, err
|
||||
}
|
||||
|
||||
// Method allows to remove batch up to 50 costs.
|
||||
//
|
||||
// Example:
|
||||
//
|
||||
// var client = v5.New("https://demo.url", "09jIJ")
|
||||
//
|
||||
// data, status, err := client.client.CostsDelete([]int{1, 2, 3, 48, 49, 50})
|
||||
//
|
||||
// if err.ErrorMsg != "" {
|
||||
// fmt.Printf("%v", err.ErrorMsg)
|
||||
// }
|
||||
//
|
||||
// if status >= http.StatusBadRequest {
|
||||
// fmt.Printf("%v", err.ErrorMsg)
|
||||
// }
|
||||
//
|
||||
// If data.Success == true {
|
||||
// fmt.Printf("Not removed costs: %v", data.NotRemovedIds)
|
||||
// }
|
||||
func (c *Client) CostsDelete(ids []int) (CostsDeleteResponse, int, ErrorResponse) {
|
||||
var resp CostsDeleteResponse
|
||||
|
||||
costJSON, _ := json.Marshal(&ids)
|
||||
|
||||
p := url.Values{
|
||||
"ids": {string(costJSON[:])},
|
||||
}
|
||||
|
||||
data, status, err := c.PostRequest("/costs/delete", p)
|
||||
if err.ErrorMsg != "" {
|
||||
return resp, status, err
|
||||
}
|
||||
|
||||
json.Unmarshal(data, &resp)
|
||||
|
||||
return resp, status, err
|
||||
}
|
||||
|
||||
// Method allows to upload as packet up to 50 costs.
|
||||
//
|
||||
// Example:
|
||||
//
|
||||
// var client = v5.New("https://demo.url", "09jIJ")
|
||||
//
|
||||
// data, status, err := client.CostCreate([]v5.CostRecord{
|
||||
// {
|
||||
// DateFrom: "2012-12-12",
|
||||
// DateTo: "2012-12-12",
|
||||
// Summ: 12,
|
||||
// CostItem: "calculation-of-costs",
|
||||
// Order: Order{
|
||||
// Number: "1"
|
||||
// },
|
||||
// Sites: []string{"store"},
|
||||
// },
|
||||
// {
|
||||
// DateFrom: "2012-12-13",
|
||||
// DateTo: "2012-12-13",
|
||||
// Summ: 13,
|
||||
// CostItem: "seo",
|
||||
// }
|
||||
// })
|
||||
//
|
||||
// if err.ErrorMsg != "" {
|
||||
// fmt.Printf("%v", err.ErrorMsg)
|
||||
// }
|
||||
//
|
||||
// if status >= http.StatusBadRequest {
|
||||
// fmt.Printf("%v", err.ErrorMsg)
|
||||
// }
|
||||
//
|
||||
// If data.Success == true {
|
||||
// fmt.Printf("Uploaded costs: %v", data.UploadedCosts)
|
||||
// }
|
||||
func (c *Client) CostsUpload(cost []CostRecord) (CostsUploadResponse, int, ErrorResponse) {
|
||||
var resp CostsUploadResponse
|
||||
|
||||
costJSON, _ := json.Marshal(&cost)
|
||||
|
||||
p := url.Values{
|
||||
"costs": {string(costJSON[:])},
|
||||
}
|
||||
|
||||
data, status, err := c.PostRequest("/costs/upload", p)
|
||||
if err.ErrorMsg != "" {
|
||||
return resp, status, err
|
||||
}
|
||||
|
||||
json.Unmarshal(data, &resp)
|
||||
|
||||
return resp, status, err
|
||||
}
|
||||
|
||||
// Getting of cost information
|
||||
//
|
||||
// Example:
|
||||
//
|
||||
// var client = v5.New("https://demo.url", "09jIJ")
|
||||
//
|
||||
// data, status, err := client.Cost(1)
|
||||
//
|
||||
// if err.ErrorMsg != "" {
|
||||
// fmt.Printf("%v", err.ErrorMsg)
|
||||
// }
|
||||
//
|
||||
// if status >= http.StatusBadRequest {
|
||||
// fmt.Printf("%v", err.ErrorMsg)
|
||||
// }
|
||||
//
|
||||
// If data.Success == true {
|
||||
// fmt.Printf("%v", data.Cost)
|
||||
// }
|
||||
func (c *Client) Cost(id int) (CostResponse, int, ErrorResponse) {
|
||||
var resp CostResponse
|
||||
|
||||
data, status, err := c.GetRequest(fmt.Sprintf("/costs/%d", id))
|
||||
|
||||
if err.ErrorMsg != "" {
|
||||
return resp, status, err
|
||||
}
|
||||
|
||||
json.Unmarshal(data, &resp)
|
||||
|
||||
return resp, status, err
|
||||
}
|
||||
|
||||
// Cost removing
|
||||
//
|
||||
// Example:
|
||||
//
|
||||
// var client = v5.New("https://demo.url", "09jIJ")
|
||||
//
|
||||
// data, status, err := client.CostDelete(1)
|
||||
//
|
||||
// if err.ErrorMsg != "" {
|
||||
// fmt.Printf("%v", err.ErrorMsg)
|
||||
// }
|
||||
//
|
||||
// if status >= http.StatusBadRequest {
|
||||
// fmt.Printf("%v", err.ErrorMsg)
|
||||
// }
|
||||
func (c *Client) CostDelete(id int) (SuccessfulResponse, int, ErrorResponse) {
|
||||
var resp SuccessfulResponse
|
||||
|
||||
costJSON, _ := json.Marshal(&id)
|
||||
|
||||
p := url.Values{
|
||||
"costs": {string(costJSON[:])},
|
||||
}
|
||||
|
||||
data, status, err := c.PostRequest(fmt.Sprintf("/costs/%d/delete", id), p)
|
||||
|
||||
if err.ErrorMsg != "" {
|
||||
return resp, status, err
|
||||
}
|
||||
|
||||
json.Unmarshal(data, &resp)
|
||||
|
||||
return resp, status, err
|
||||
}
|
||||
|
||||
// Cost editing
|
||||
//
|
||||
// Example:
|
||||
//
|
||||
// var client = v5.New("https://demo.url", "09jIJ")
|
||||
//
|
||||
// data, status, err := client.CostEdit(1, v5.Cost{
|
||||
// DateFrom: "2012-12-12",
|
||||
// DateTo: "2018-12-13",
|
||||
// Summ: 321,
|
||||
// CostItem: "seo",
|
||||
// })
|
||||
//
|
||||
// if err.ErrorMsg != "" {
|
||||
// fmt.Printf("%v", err.ErrorMsg)
|
||||
// }
|
||||
//
|
||||
// if status >= http.StatusBadRequest {
|
||||
// fmt.Printf("%v", err.ErrorMsg)
|
||||
// }
|
||||
//
|
||||
// If data.Success == true {
|
||||
// fmt.Printf("%v", data.Id)
|
||||
// }
|
||||
func (c *Client) CostEdit(id int, cost CostRecord, site ...string) (CreateResponse, int, ErrorResponse) {
|
||||
var resp CreateResponse
|
||||
|
||||
costJSON, _ := json.Marshal(&cost)
|
||||
|
||||
p := url.Values{
|
||||
"cost": {string(costJSON[:])},
|
||||
}
|
||||
|
||||
fillSite(&p, site)
|
||||
|
||||
data, status, err := c.PostRequest(fmt.Sprintf("/costs/%d/edit", id), p)
|
||||
if err.ErrorMsg != "" {
|
||||
return resp, status, err
|
||||
}
|
||||
|
||||
json.Unmarshal(data, &resp)
|
||||
|
||||
return resp, status, err
|
||||
}
|
||||
|
||||
// Getting the list of custom fields
|
||||
//
|
||||
// Example:
|
||||
//
|
||||
// var client = v5.New("https://demo.url", "09jIJ")
|
||||
//
|
||||
// data, status, err := client.CustomFields(v5.CustomFieldsRequest{
|
||||
// Type: "string",
|
||||
// Entity: "customer",
|
||||
// })
|
||||
//
|
||||
// if err.ErrorMsg != "" {
|
||||
// fmt.Printf("%v", err.ErrorMsg)
|
||||
// }
|
||||
//
|
||||
// if status >= http.StatusBadRequest {
|
||||
// fmt.Printf("%v", err.ErrorMsg)
|
||||
// }
|
||||
//
|
||||
// for _, value := range data.CustomFields {
|
||||
// fmt.Printf("%v\n", value)
|
||||
// }
|
||||
func (c *Client) CustomFields(customFields CustomFieldsRequest) (CustomFieldsResponse, int, ErrorResponse) {
|
||||
var resp CustomFieldsResponse
|
||||
|
||||
params, _ := query.Values(customFields)
|
||||
|
||||
data, status, err := c.GetRequest(fmt.Sprintf("/custom-fields?%s", params.Encode()))
|
||||
|
||||
if err.ErrorMsg != "" {
|
||||
return resp, status, err
|
||||
}
|
||||
|
||||
json.Unmarshal(data, &resp)
|
||||
|
||||
return resp, status, err
|
||||
}
|
||||
|
||||
// Getting the list of custom directory
|
||||
//
|
||||
// Example:
|
||||
//
|
||||
// var client = v5.New("https://demo.url", "09jIJ")
|
||||
//
|
||||
// data, status, err := client.CustomDictionaries(v5.CustomDictionariesRequest{
|
||||
// Filter: v5.CustomDictionariesFilter{
|
||||
// Name: "Dictionary-1",
|
||||
// },
|
||||
// })
|
||||
//
|
||||
// if err.ErrorMsg != "" {
|
||||
// fmt.Printf("%v", err.ErrorMsg)
|
||||
// }
|
||||
//
|
||||
// if status >= http.StatusBadRequest {
|
||||
// fmt.Printf("%v", err.ErrorMsg)
|
||||
// }
|
||||
//
|
||||
// for _, value := range data.CustomDictionaries {
|
||||
// fmt.Printf("%v\n", value.Elements)
|
||||
// }
|
||||
func (c *Client) CustomDictionaries(customDictionaries CustomDictionariesRequest) (CustomDictionariesResponse, int, ErrorResponse) {
|
||||
var resp CustomDictionariesResponse
|
||||
|
||||
params, _ := query.Values(customDictionaries)
|
||||
|
||||
data, status, err := c.GetRequest(fmt.Sprintf("/custom-fields/dictionaries?%s", params.Encode()))
|
||||
|
||||
if err.ErrorMsg != "" {
|
||||
return resp, status, err
|
||||
}
|
||||
|
||||
json.Unmarshal(data, &resp)
|
||||
|
||||
return resp, status, err
|
||||
}
|
||||
|
||||
// Directory fields creation
|
||||
//
|
||||
// Example:
|
||||
//
|
||||
// var client = v5.New("https://demo.url", "09jIJ")
|
||||
//
|
||||
// data, status, err := client.CustomDictionariesCreate(v5.CustomDictionary{
|
||||
// Name: "Courier profiles",
|
||||
// Code: "courier-profiles",
|
||||
// Elements: []Element{
|
||||
// {
|
||||
// Name: "Name",
|
||||
// Code: "name",
|
||||
// },
|
||||
// {
|
||||
// Name: "Lastname",
|
||||
// Code: "lastname",
|
||||
// }
|
||||
// },
|
||||
// })
|
||||
//
|
||||
// if err.ErrorMsg != "" {
|
||||
// fmt.Printf("%v", err.ErrorMsg)
|
||||
// }
|
||||
//
|
||||
// if status >= http.StatusBadRequest {
|
||||
// fmt.Printf("%v", err.ErrorMsg)
|
||||
// }
|
||||
//
|
||||
// If data.Success == true {
|
||||
// fmt.Printf("%v", data.Code)
|
||||
// }
|
||||
func (c *Client) CustomDictionariesCreate(customDictionary CustomDictionary) (CustomResponse, int, ErrorResponse) {
|
||||
var resp CustomResponse
|
||||
|
||||
costJSON, _ := json.Marshal(&customDictionary)
|
||||
|
||||
p := url.Values{
|
||||
"customDictionary": {string(costJSON[:])},
|
||||
}
|
||||
|
||||
data, status, err := c.PostRequest("/custom-fields/dictionaries/create", p)
|
||||
|
||||
if err.ErrorMsg != "" {
|
||||
return resp, status, err
|
||||
}
|
||||
|
||||
json.Unmarshal(data, &resp)
|
||||
|
||||
return resp, status, err
|
||||
}
|
||||
|
||||
// Getting information on directory
|
||||
//
|
||||
// Example:
|
||||
//
|
||||
// var client = v5.New("https://demo.url", "09jIJ")
|
||||
//
|
||||
// data, status, err := client.CustomDictionary("courier-profiles")
|
||||
//
|
||||
// if err.ErrorMsg != "" {
|
||||
// fmt.Printf("%v", err.ErrorMsg)
|
||||
// }
|
||||
//
|
||||
// if status >= http.StatusBadRequest {
|
||||
// fmt.Printf("%v", err.ErrorMsg)
|
||||
// }
|
||||
//
|
||||
// If data.Success == true {
|
||||
// fmt.Printf("%v", data.CustomDictionary.Name)
|
||||
// }
|
||||
func (c *Client) CustomDictionary(code string) (CustomDictionaryResponse, int, ErrorResponse) {
|
||||
var resp CustomDictionaryResponse
|
||||
|
||||
data, status, err := c.GetRequest(fmt.Sprintf("/custom-fields/dictionaries/%s", code))
|
||||
|
||||
if err.ErrorMsg != "" {
|
||||
return resp, status, err
|
||||
}
|
||||
|
||||
json.Unmarshal(data, &resp)
|
||||
|
||||
return resp, status, err
|
||||
}
|
||||
|
||||
// Directory fields editing
|
||||
//
|
||||
// Example:
|
||||
//
|
||||
// var client = v5.New("https://demo.url", "09jIJ")
|
||||
//
|
||||
// data, status, err := client.CustomDictionaryEdit(v5.CustomDictionary{
|
||||
// Name: "Courier profiles",
|
||||
// Code: "courier-profiles",
|
||||
// Elements: []Element{
|
||||
// {
|
||||
// Name: "Name",
|
||||
// Code: "name",
|
||||
// },
|
||||
// {
|
||||
// Name: "Lastname",
|
||||
// Code: "lastname",
|
||||
// }
|
||||
// },
|
||||
// })
|
||||
//
|
||||
// if err.ErrorMsg != "" {
|
||||
// fmt.Printf("%v", err.ErrorMsg)
|
||||
// }
|
||||
//
|
||||
// if status >= http.StatusBadRequest {
|
||||
// fmt.Printf("%v", err.ErrorMsg)
|
||||
// }
|
||||
//
|
||||
// If data.Success == true {
|
||||
// fmt.Printf("%v", data.Code)
|
||||
// }
|
||||
func (c *Client) CustomDictionaryEdit(customDictionary CustomDictionary) (CustomResponse, int, ErrorResponse) {
|
||||
var resp CustomResponse
|
||||
|
||||
costJSON, _ := json.Marshal(&customDictionary)
|
||||
|
||||
p := url.Values{
|
||||
"customDictionary": {string(costJSON[:])},
|
||||
}
|
||||
|
||||
data, status, err := c.PostRequest(fmt.Sprintf("/custom-fields/dictionaries/%s/edit", customDictionary.Code), p)
|
||||
if err.ErrorMsg != "" {
|
||||
return resp, status, err
|
||||
}
|
||||
|
||||
json.Unmarshal(data, &resp)
|
||||
|
||||
return resp, status, err
|
||||
}
|
||||
|
||||
// Custom fields creation
|
||||
//
|
||||
// Example:
|
||||
//
|
||||
// var client = v5.New("https://demo.url", "09jIJ")
|
||||
//
|
||||
// data, status, err := client.CustomFieldsCreate(v5.CustomFieldsEditRequest{
|
||||
// CustomField: v5.CustomFields{
|
||||
// Name: "First order",
|
||||
// Code: "first-order",
|
||||
// Type: "bool",
|
||||
// Entity: "order",
|
||||
// DisplayArea: "customer",
|
||||
// },
|
||||
// })
|
||||
//
|
||||
// if err.ErrorMsg != "" {
|
||||
// fmt.Printf("%v", err.ErrorMsg)
|
||||
// }
|
||||
//
|
||||
// if status >= http.StatusBadRequest {
|
||||
// fmt.Printf("%v", err.ErrorMsg)
|
||||
// }
|
||||
//
|
||||
// If data.Success == true {
|
||||
// fmt.Printf("%v", data.Code)
|
||||
// }
|
||||
func (c *Client) CustomFieldsCreate(customFields CustomFieldsEditRequest) (CustomResponse, int, ErrorResponse) {
|
||||
var resp CustomResponse
|
||||
|
||||
costJSON, _ := json.Marshal(&customFields)
|
||||
|
||||
p := url.Values{
|
||||
"customField": {string(costJSON[:])},
|
||||
}
|
||||
|
||||
data, status, err := c.PostRequest(fmt.Sprintf("/custom-fields/%s/create", customFields.CustomField.Entity), p)
|
||||
|
||||
if err.ErrorMsg != "" {
|
||||
return resp, status, err
|
||||
}
|
||||
|
||||
json.Unmarshal(data, &resp)
|
||||
|
||||
return resp, status, err
|
||||
}
|
||||
|
||||
// Getting information on custom fields
|
||||
//
|
||||
// Example:
|
||||
//
|
||||
// var client = v5.New("https://demo.url", "09jIJ")
|
||||
//
|
||||
// data, status, err := client.CustomField("order", "first-order")
|
||||
//
|
||||
// if err.ErrorMsg != "" {
|
||||
// fmt.Printf("%v", err.ErrorMsg)
|
||||
// }
|
||||
//
|
||||
// if status >= http.StatusBadRequest {
|
||||
// fmt.Printf("%v", err.ErrorMsg)
|
||||
// }
|
||||
//
|
||||
// If data.Success == true {
|
||||
// fmt.Printf("%v", data.CustomField)
|
||||
// }
|
||||
func (c *Client) CustomField(entity, code string) (CustomFieldResponse, int, ErrorResponse) {
|
||||
var resp CustomFieldResponse
|
||||
|
||||
data, status, err := c.GetRequest(fmt.Sprintf("/custom-fields/%s/%s", entity, code))
|
||||
|
||||
if err.ErrorMsg != "" {
|
||||
return resp, status, err
|
||||
}
|
||||
|
||||
json.Unmarshal(data, &resp)
|
||||
|
||||
return resp, status, err
|
||||
}
|
||||
|
||||
// CustomFieldEdit list method
|
||||
//
|
||||
// Example:
|
||||
//
|
||||
// var client = v5.New("https://demo.url", "09jIJ")
|
||||
//
|
||||
// data, status, err := client.CustomFieldEdit("order", v5.CustomFieldsEditRequest{
|
||||
// CustomField: v5.CustomFields{
|
||||
// Name: "First customer order",
|
||||
// Code: "first-order",
|
||||
// },
|
||||
// })
|
||||
//
|
||||
// if err.ErrorMsg != "" {
|
||||
// fmt.Printf("%v", err.ErrorMsg)
|
||||
// }
|
||||
//
|
||||
// if status >= http.StatusBadRequest {
|
||||
// fmt.Printf("%v", err.ErrorMsg)
|
||||
// }
|
||||
//
|
||||
// If data.Success == true {
|
||||
// fmt.Printf("%v", data.Code)
|
||||
// }
|
||||
func (c *Client) CustomFieldEdit(entity string, customFields CustomFieldsEditRequest) (CustomResponse, int, ErrorResponse) {
|
||||
var resp CustomResponse
|
||||
|
||||
costJSON, _ := json.Marshal(&customFields)
|
||||
|
||||
p := url.Values{
|
||||
"customField": {string(costJSON[:])},
|
||||
}
|
||||
|
||||
data, status, err := c.PostRequest(fmt.Sprintf("/custom-fields/%s/%s/edit", entity, customFields.CustomField.Code), p)
|
||||
|
||||
if err.ErrorMsg != "" {
|
||||
return resp, status, err
|
||||
}
|
||||
|
||||
json.Unmarshal(data, &resp)
|
||||
|
||||
return resp, status, err
|
||||
}
|
||||
|
@ -14,6 +14,8 @@ import (
|
||||
var r *rand.Rand // Rand for this package.
|
||||
var user, _ = strconv.Atoi(os.Getenv("RETAILCRM_USER"))
|
||||
var statuses = map[int]bool{http.StatusOK: true, http.StatusCreated: true}
|
||||
var id int
|
||||
var ids []int
|
||||
|
||||
func init() {
|
||||
r = rand.New(rand.NewSource(time.Now().UnixNano()))
|
||||
@ -1850,3 +1852,391 @@ func TestClient_DeliveryShipments(t *testing.T) {
|
||||
t.Errorf("%v", err.ApiError())
|
||||
}
|
||||
}
|
||||
|
||||
func TestClient_CostCreate(t *testing.T) {
|
||||
c := client()
|
||||
|
||||
data, status, err := c.CostCreate(CostRecord{
|
||||
DateFrom: "2018-04-02",
|
||||
DateTo: "2018-04-02",
|
||||
Summ: 124,
|
||||
CostItem: "seo",
|
||||
})
|
||||
|
||||
if err.ErrorMsg != "" {
|
||||
t.Errorf("%v", err.ErrorMsg)
|
||||
t.Fail()
|
||||
}
|
||||
|
||||
if status != http.StatusOK {
|
||||
t.Errorf("%v", err.ErrorMsg)
|
||||
t.Fail()
|
||||
}
|
||||
|
||||
if data.Success != true {
|
||||
t.Errorf("%v", err.ErrorMsg)
|
||||
t.Fail()
|
||||
}
|
||||
|
||||
id = data.ID
|
||||
}
|
||||
|
||||
func TestClient_Costs(t *testing.T) {
|
||||
c := client()
|
||||
|
||||
data, status, err := c.Costs(CostsRequest{
|
||||
Filter: CostsFilter{
|
||||
Ids: []string{strconv.Itoa(id)},
|
||||
},
|
||||
Limit: 20,
|
||||
Page: 1,
|
||||
})
|
||||
|
||||
if err.ErrorMsg != "" {
|
||||
t.Errorf("%v", err.ErrorMsg)
|
||||
t.Fail()
|
||||
}
|
||||
|
||||
if status != http.StatusOK {
|
||||
t.Errorf("%v", err.ErrorMsg)
|
||||
t.Fail()
|
||||
}
|
||||
|
||||
if data.Success != true {
|
||||
t.Errorf("%v", err.ErrorMsg)
|
||||
t.Fail()
|
||||
}
|
||||
}
|
||||
|
||||
func TestClient_Cost(t *testing.T) {
|
||||
c := client()
|
||||
|
||||
data, status, err := c.Cost(id)
|
||||
|
||||
if err.ErrorMsg != "" {
|
||||
t.Errorf("%v", err.ErrorMsg)
|
||||
t.Fail()
|
||||
}
|
||||
|
||||
if status != http.StatusOK {
|
||||
t.Errorf("%v", err.ErrorMsg)
|
||||
t.Fail()
|
||||
}
|
||||
|
||||
if data.Success != true {
|
||||
t.Errorf("%v", err.ErrorMsg)
|
||||
t.Fail()
|
||||
}
|
||||
}
|
||||
|
||||
func TestClient_CostEdit(t *testing.T) {
|
||||
c := client()
|
||||
|
||||
data, status, err := c.CostEdit(id, CostRecord{
|
||||
DateFrom: "2018-04-09",
|
||||
DateTo: "2018-04-09",
|
||||
Summ: 421,
|
||||
CostItem: "seo",
|
||||
Order: nil,
|
||||
})
|
||||
|
||||
if err.ErrorMsg != "" {
|
||||
t.Errorf("%v", err.ErrorMsg)
|
||||
t.Fail()
|
||||
}
|
||||
|
||||
if status != http.StatusOK {
|
||||
t.Errorf("%v", err.ErrorMsg)
|
||||
t.Fail()
|
||||
}
|
||||
|
||||
if data.Success != true {
|
||||
t.Errorf("%v", err.ErrorMsg)
|
||||
t.Fail()
|
||||
}
|
||||
}
|
||||
|
||||
func TestClient_CostDelete(t *testing.T) {
|
||||
c := client()
|
||||
|
||||
data, status, err := c.CostDelete(id)
|
||||
|
||||
if err.ErrorMsg != "" {
|
||||
t.Errorf("%v", err.ErrorMsg)
|
||||
t.Fail()
|
||||
}
|
||||
|
||||
if status != http.StatusOK {
|
||||
t.Errorf("%v", err.ErrorMsg)
|
||||
t.Fail()
|
||||
}
|
||||
|
||||
if data.Success != true {
|
||||
t.Errorf("%v", err.ErrorMsg)
|
||||
t.Fail()
|
||||
}
|
||||
}
|
||||
|
||||
func TestClient_CostsUpload(t *testing.T) {
|
||||
c := client()
|
||||
|
||||
data, status, err := c.CostsUpload([]CostRecord{
|
||||
{
|
||||
Source: nil,
|
||||
DateFrom: "2018-04-02",
|
||||
DateTo: "2018-04-02",
|
||||
Summ: 124,
|
||||
CostItem: "seo",
|
||||
Order: nil,
|
||||
},
|
||||
{
|
||||
Source: nil,
|
||||
DateFrom: "2018-04-03",
|
||||
DateTo: "2018-04-03",
|
||||
Summ: 125,
|
||||
CostItem: "seo",
|
||||
Order: nil,
|
||||
Sites: []string{"catalog-test"},
|
||||
},
|
||||
})
|
||||
|
||||
if err.ErrorMsg != "" {
|
||||
t.Errorf("%v", err.ErrorMsg)
|
||||
t.Fail()
|
||||
}
|
||||
|
||||
if status != http.StatusOK {
|
||||
t.Errorf("%v", err.ErrorMsg)
|
||||
t.Fail()
|
||||
}
|
||||
|
||||
if data.Success != true {
|
||||
t.Errorf("%v", err.ErrorMsg)
|
||||
t.Fail()
|
||||
}
|
||||
|
||||
ids = data.UploadedCosts
|
||||
}
|
||||
|
||||
func TestClient_CostsDelete(t *testing.T) {
|
||||
c := client()
|
||||
data, status, err := c.CostsDelete(ids)
|
||||
|
||||
if err.ErrorMsg != "" {
|
||||
t.Errorf("%v", err.ErrorMsg)
|
||||
t.Fail()
|
||||
}
|
||||
|
||||
if status != http.StatusOK {
|
||||
t.Errorf("%v", err.ErrorMsg)
|
||||
t.Fail()
|
||||
}
|
||||
|
||||
if data.Success != true {
|
||||
t.Errorf("%v", err.ErrorMsg)
|
||||
t.Fail()
|
||||
}
|
||||
}
|
||||
|
||||
func TestClient_CustomFields(t *testing.T) {
|
||||
c := client()
|
||||
|
||||
data, status, err := c.CustomFields(CustomFieldsRequest{})
|
||||
|
||||
if err.ErrorMsg != "" {
|
||||
t.Errorf("%v", err.ErrorMsg)
|
||||
t.Fail()
|
||||
}
|
||||
|
||||
if status != http.StatusOK {
|
||||
t.Errorf("%v", err.ErrorMsg)
|
||||
t.Fail()
|
||||
}
|
||||
|
||||
if data.Success != true {
|
||||
t.Errorf("%v", err.ErrorMsg)
|
||||
t.Fail()
|
||||
}
|
||||
}
|
||||
func TestClient_CustomDictionaries(t *testing.T) {
|
||||
c := client()
|
||||
|
||||
data, status, err := c.CustomDictionaries(CustomDictionariesRequest{
|
||||
Filter: CustomDictionariesFilter{
|
||||
Name: "test",
|
||||
},
|
||||
Limit: 10,
|
||||
Page: 1,
|
||||
})
|
||||
|
||||
if err.ErrorMsg != "" {
|
||||
t.Errorf("%v", err.ErrorMsg)
|
||||
t.Fail()
|
||||
}
|
||||
|
||||
if status != http.StatusOK {
|
||||
t.Errorf("%v", err.ErrorMsg)
|
||||
t.Fail()
|
||||
}
|
||||
|
||||
if data.Success != true {
|
||||
t.Errorf("%v", err.ErrorMsg)
|
||||
t.Fail()
|
||||
}
|
||||
}
|
||||
|
||||
func TestClient_CustomDictionary(t *testing.T) {
|
||||
c := client()
|
||||
|
||||
data, status, err := c.CustomDictionary("test2")
|
||||
|
||||
if err.ErrorMsg != "" {
|
||||
t.Errorf("%v", err.ErrorMsg)
|
||||
t.Fail()
|
||||
}
|
||||
|
||||
if status != http.StatusOK {
|
||||
t.Errorf("%v", err.ErrorMsg)
|
||||
t.Fail()
|
||||
}
|
||||
|
||||
if data.Success != true {
|
||||
t.Errorf("%v", err.ErrorMsg)
|
||||
t.Fail()
|
||||
}
|
||||
}
|
||||
|
||||
func TestClient_CustomDictionariesCreate(t *testing.T) {
|
||||
c := client()
|
||||
|
||||
data, status, err := c.CustomDictionariesCreate(CustomDictionary{
|
||||
Name: "test2",
|
||||
Code: "test2",
|
||||
Elements: []Element{
|
||||
{
|
||||
Name: "test",
|
||||
Code: "test",
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
if err.ErrorMsg != "" {
|
||||
t.Errorf("%v", err.ErrorMsg)
|
||||
t.Fail()
|
||||
}
|
||||
|
||||
if status != http.StatusOK {
|
||||
t.Errorf("%v", err.ErrorMsg)
|
||||
t.Fail()
|
||||
}
|
||||
|
||||
if data.Success != true {
|
||||
t.Errorf("%v", err.ErrorMsg)
|
||||
t.Fail()
|
||||
}
|
||||
}
|
||||
|
||||
func TestClient_CustomDictionaryEdit(t *testing.T) {
|
||||
c := client()
|
||||
|
||||
data, status, err := c.CustomDictionaryEdit(CustomDictionary{
|
||||
Name: "test223",
|
||||
Code: "test2",
|
||||
Elements: []Element{
|
||||
{
|
||||
Name: "test3",
|
||||
Code: "test3",
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
if err.ErrorMsg != "" {
|
||||
t.Errorf("%v", err.ErrorMsg)
|
||||
t.Fail()
|
||||
}
|
||||
|
||||
if status != http.StatusOK {
|
||||
t.Errorf("%v", err.ErrorMsg)
|
||||
t.Fail()
|
||||
}
|
||||
|
||||
if data.Success != true {
|
||||
t.Errorf("%v", err.ErrorMsg)
|
||||
t.Fail()
|
||||
}
|
||||
}
|
||||
|
||||
func TestClient_CustomFieldsCreate(t *testing.T) {
|
||||
c := client()
|
||||
|
||||
data, status, err := c.CustomFieldsCreate(CustomFieldsEditRequest{
|
||||
CustomField: CustomFields{
|
||||
Name: "test4",
|
||||
Code: "test4",
|
||||
Type: "text",
|
||||
Entity: "order",
|
||||
DisplayArea: "customer",
|
||||
},
|
||||
})
|
||||
|
||||
if err.ErrorMsg != "" {
|
||||
t.Errorf("%v", err.ErrorMsg)
|
||||
t.Fail()
|
||||
}
|
||||
|
||||
if status != http.StatusOK {
|
||||
t.Errorf("%v", err.ErrorMsg)
|
||||
t.Fail()
|
||||
}
|
||||
|
||||
if data.Success != true {
|
||||
t.Errorf("%v", err.ErrorMsg)
|
||||
t.Fail()
|
||||
}
|
||||
}
|
||||
|
||||
func TestClient_CustomField(t *testing.T) {
|
||||
c := client()
|
||||
|
||||
data, status, err := c.CustomField("customer", "testtest")
|
||||
|
||||
if err.ErrorMsg != "" {
|
||||
t.Errorf("%v", err.ErrorMsg)
|
||||
t.Fail()
|
||||
}
|
||||
|
||||
if status != http.StatusOK {
|
||||
t.Errorf("%v", err.ErrorMsg)
|
||||
t.Fail()
|
||||
}
|
||||
|
||||
if data.Success != true {
|
||||
t.Errorf("%v", err.ErrorMsg)
|
||||
t.Fail()
|
||||
}
|
||||
}
|
||||
|
||||
func TestClient_CustomFieldEdit(t *testing.T) {
|
||||
c := client()
|
||||
|
||||
data, status, err := c.CustomFieldEdit("customer", CustomFieldsEditRequest{
|
||||
CustomField: CustomFields{
|
||||
Name: "testtesttest",
|
||||
},
|
||||
})
|
||||
|
||||
if err.ErrorMsg != "" {
|
||||
t.Errorf("%v", err.ErrorMsg)
|
||||
t.Fail()
|
||||
}
|
||||
|
||||
if status != http.StatusOK {
|
||||
t.Errorf("%v", err.ErrorMsg)
|
||||
t.Fail()
|
||||
}
|
||||
|
||||
if data.Success != true {
|
||||
t.Errorf("%v", err.ErrorMsg)
|
||||
t.Fail()
|
||||
}
|
||||
}
|
||||
|
@ -296,3 +296,39 @@ type ShipmentFilter struct {
|
||||
DeliveryTypes []string `url:"deliveryTypes,omitempty,brackets"`
|
||||
Statuses []string `url:"statuses,omitempty,brackets"`
|
||||
}
|
||||
|
||||
// CostsFilter type
|
||||
type CostsFilter struct {
|
||||
MinSumm string `url:"minSumm,omitempty"`
|
||||
MaxSumm string `url:"maxSumm,omitempty"`
|
||||
OrderNumber string `url:"orderNumber,omitempty"`
|
||||
Comment string `url:"orderNumber,omitempty"`
|
||||
Ids []string `url:"ids,omitempty,brackets"`
|
||||
Sites []string `url:"sites,omitempty,brackets"`
|
||||
CreatedBy []string `url:"createdBy,omitempty,brackets"`
|
||||
CostGroups []string `url:"costGroups,omitempty,brackets"`
|
||||
CostItems []string `url:"costItems,omitempty,brackets"`
|
||||
Users []string `url:"users,omitempty,brackets"`
|
||||
DateFrom string `url:"dateFrom,omitempty"`
|
||||
DateTo string `url:"dateTo,omitempty"`
|
||||
CreatedAtFrom string `url:"createdAtFrom,omitempty"`
|
||||
CreatedAtTo string `url:"createdAtTo,omitempty"`
|
||||
OrderIds []string `url:"orderIds,omitempty,brackets"`
|
||||
OrderExternalIds []string `url:"orderIds,omitempty,brackets"`
|
||||
}
|
||||
|
||||
// CustomFieldsFilter type
|
||||
type CustomFieldsFilter struct {
|
||||
Name string `url:"name,omitempty"`
|
||||
Code string `url:"code,omitempty"`
|
||||
Type string `url:"type,omitempty"`
|
||||
Entity string `url:"entity,omitempty"`
|
||||
ViewMode string `url:"viewMode,omitempty"`
|
||||
DisplayArea string `url:"displayArea,omitempty"`
|
||||
}
|
||||
|
||||
// CustomDictionariesFilter type
|
||||
type CustomDictionariesFilter struct {
|
||||
Name string `url:"name,omitempty"`
|
||||
Code string `url:"code,omitempty"`
|
||||
}
|
||||
|
@ -142,3 +142,30 @@ type DeliveryShipmentsRequest struct {
|
||||
Limit int `url:"limit,omitempty"`
|
||||
Page int `url:"page,omitempty"`
|
||||
}
|
||||
|
||||
// CostsRequest type
|
||||
type CostsRequest struct {
|
||||
Filter CostsFilter `url:"filter,omitempty"`
|
||||
Limit int `url:"limit,omitempty"`
|
||||
Page int `url:"page,omitempty"`
|
||||
}
|
||||
|
||||
// CustomFieldsRequest type
|
||||
type CustomFieldsRequest struct {
|
||||
Filter CustomFieldsFilter `url:"filter,omitempty"`
|
||||
Limit int `url:"limit,omitempty"`
|
||||
Page int `url:"page,omitempty"`
|
||||
}
|
||||
|
||||
// CustomeDictionariesRequest type
|
||||
type CustomDictionariesRequest struct {
|
||||
Filter CustomDictionariesFilter `url:"filter,omitempty"`
|
||||
Limit int `url:"limit,omitempty"`
|
||||
Page int `url:"page,omitempty"`
|
||||
}
|
||||
|
||||
// CustomFieldsEditRequest type
|
||||
type CustomFieldsEditRequest struct {
|
||||
CustomField CustomFields `url:"customField,omitempty"`
|
||||
Entity string `url:"entity,omitempty"`
|
||||
}
|
||||
|
@ -328,3 +328,61 @@ type IntegrationModuleEditResponse struct {
|
||||
Success bool `json:"success"`
|
||||
Info map[string]string `json:"info,omitempty,brackets"`
|
||||
}
|
||||
|
||||
// CostsResponse type
|
||||
type CostsResponse struct {
|
||||
Success bool `json:"success"`
|
||||
Pagination *Pagination `json:"pagination,omitempty"`
|
||||
Costs []Cost `json:"costs,omitempty,brackets"`
|
||||
}
|
||||
|
||||
// CostsUploadResponse type
|
||||
type CostsUploadResponse struct {
|
||||
Success bool `json:"success"`
|
||||
UploadedCosts []int `json:"uploadedCosts,omitempty,brackets"`
|
||||
}
|
||||
|
||||
// CostsDeleteResponse type
|
||||
type CostsDeleteResponse struct {
|
||||
Success bool `json:"success"`
|
||||
Count int `json:"count,omitempty,brackets"`
|
||||
NotRemovedIds []int `json:"notRemovedIds,omitempty,brackets"`
|
||||
}
|
||||
|
||||
// CostResponse type
|
||||
type CostResponse struct {
|
||||
Success bool `json:"success"`
|
||||
Cost *Cost `json:"cost,omitempty,brackets"`
|
||||
}
|
||||
|
||||
// CustomFieldsResponse type
|
||||
type CustomFieldsResponse struct {
|
||||
Success bool `json:"success"`
|
||||
Pagination *Pagination `json:"pagination,omitempty"`
|
||||
CustomFields []CustomFields `json:"customFields,omitempty,brackets"`
|
||||
}
|
||||
|
||||
// CustomDictionariesResponse type
|
||||
type CustomDictionariesResponse struct {
|
||||
Success bool `json:"success"`
|
||||
Pagination *Pagination `json:"pagination,omitempty"`
|
||||
CustomDictionaries *[]CustomDictionary `json:"customDictionaries,omitempty,brackets"`
|
||||
}
|
||||
|
||||
// CustomDictionariesResponse type
|
||||
type CustomResponse struct {
|
||||
Success bool `json:"success"`
|
||||
Code string `json:"code,omitempty"`
|
||||
}
|
||||
|
||||
// CustomDictionaryResponse type
|
||||
type CustomDictionaryResponse struct {
|
||||
Success bool `json:"success"`
|
||||
CustomDictionary *CustomDictionary `json:"CustomDictionary,omitempty,brackets"`
|
||||
}
|
||||
|
||||
// CustomFieldResponse type
|
||||
type CustomFieldResponse struct {
|
||||
Success bool `json:"success"`
|
||||
CustomField CustomFields `json:"customField,omitempty,brackets"`
|
||||
}
|
||||
|
68
v5/types.go
68
v5/types.go
@ -864,3 +864,71 @@ type Action struct {
|
||||
URL string `json:"url,omitempty"`
|
||||
CallPoints []string `json:"callPoints,omitempty"`
|
||||
}
|
||||
|
||||
/**
|
||||
Cost related types
|
||||
*/
|
||||
|
||||
// CostRecord type
|
||||
type CostRecord struct {
|
||||
Source *Source `json:"source,omitempty"`
|
||||
Comment string `json:"comment,omitempty"`
|
||||
DateFrom string `json:"dateFrom,omitempty"`
|
||||
DateTo string `json:"dateTo,omitempty"`
|
||||
Summ float32 `json:"summ,omitempty"`
|
||||
CostItem string `json:"costItem,omitempty"`
|
||||
UserId int `json:"userId,omitempty"`
|
||||
Order *Order `json:"order,omitempty"`
|
||||
Sites []string `json:"sites,omitempty,brackets"`
|
||||
}
|
||||
|
||||
// Cost type
|
||||
type Cost struct {
|
||||
Source *Source `json:"source,omitempty"`
|
||||
ID int `json:"id,omitempty"`
|
||||
DateFrom string `json:"dateFrom,omitempty"`
|
||||
DateTo string `json:"dateTo,omitempty"`
|
||||
Summ float32 `json:"summ,omitempty"`
|
||||
CostItem string `json:"costItem,omitempty"`
|
||||
Comment string `json:"comment,omitempty"`
|
||||
CreatedAt string `json:"createdAt,omitempty"`
|
||||
CreatedBy string `json:"createdBy,omitempty"`
|
||||
Order *Order `json:"order,omitempty"`
|
||||
UserId int `json:"userId,omitempty"`
|
||||
Sites []string `json:"sites,omitempty,brackets"`
|
||||
}
|
||||
|
||||
// CustomFields type
|
||||
type CustomFields struct {
|
||||
Name string `json:"name,omitempty"`
|
||||
Code string `json:"code,omitempty"`
|
||||
Required bool `json:"required,omitempty"`
|
||||
InFilter bool `json:"inFilter,omitempty"`
|
||||
InList bool `json:"inList,omitempty"`
|
||||
InGroupActions bool `json:"inGroupActions,omitempty"`
|
||||
Type string `json:"type,omitempty"`
|
||||
Entity string `json:"entity,omitempty"`
|
||||
Default string `json:"default,omitempty"`
|
||||
Ordering int `json:"ordering,omitempty"`
|
||||
DisplayArea string `json:"displayArea,omitempty"`
|
||||
ViewMode string `json:"viewMode,omitempty"`
|
||||
Dictionary string `json:"dictionary,omitempty"`
|
||||
}
|
||||
|
||||
/**
|
||||
CustomeDictionaries related types
|
||||
*/
|
||||
|
||||
// customDictionary type
|
||||
type CustomDictionary struct {
|
||||
Name string `json:"name,omitempty"`
|
||||
Code string `json:"code,omitempty"`
|
||||
Elements []Element `json:"elements,omitempty,brackets"`
|
||||
}
|
||||
|
||||
// Dictionary Element type
|
||||
type Element struct {
|
||||
Name string `json:"name,omitempty"`
|
||||
Code string `json:"code,omitempty"`
|
||||
Ordering int `json:"ordering,omitempty"`
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user