-
Notifications
You must be signed in to change notification settings - Fork 0
/
account_create.go
166 lines (138 loc) · 5.38 KB
/
account_create.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
package webservices
import (
"net/http"
"net/url"
"github.com/omniboost/go-exactglobe-webservices/edm"
"github.com/omniboost/go-exactglobe-webservices/utils"
)
func (c *Client) NewAccountCreateRequest() AccountCreateRequest {
return AccountCreateRequest{
client: c,
queryParams: c.NewAccountCreateQueryParams(),
pathParams: c.NewAccountCreatePathParams(),
method: http.MethodPost,
headers: http.Header{},
requestBody: AccountCreateRequestBody{},
}
}
type AccountCreateRequest struct {
client *Client
queryParams *AccountCreateQueryParams
pathParams *AccountCreatePathParams
method string
headers http.Header
requestBody AccountCreateRequestBody
}
func (c *Client) NewAccountCreateQueryParams() *AccountCreateQueryParams {
return &AccountCreateQueryParams{}
}
type AccountCreateQueryParams struct{}
func (p AccountCreateQueryParams) ToURLValues() (url.Values, error) {
encoder := utils.NewSchemaEncoder()
params := url.Values{}
err := encoder.Encode(p, params)
if err != nil {
return params, err
}
return params, nil
}
func (r *AccountCreateRequest) QueryParams() *AccountCreateQueryParams {
return r.queryParams
}
func (c *Client) NewAccountCreatePathParams() *AccountCreatePathParams {
return &AccountCreatePathParams{}
}
type AccountCreatePathParams struct{}
func (p *AccountCreatePathParams) Params() map[string]string {
return map[string]string{}
}
func (r *AccountCreateRequest) PathParams() *AccountCreatePathParams {
return r.pathParams
}
func (r *AccountCreateRequest) SetMethod(method string) {
r.method = method
}
func (r *AccountCreateRequest) Method() string {
return r.method
}
func (r *AccountCreateRequest) NewRequestBody() AccountCreateRequestBody {
return AccountCreateRequestBody{}
}
type AccountCreateRequestBody NewAccount
func (r *AccountCreateRequest) RequestBody() *AccountCreateRequestBody {
return &r.requestBody
}
func (r *AccountCreateRequest) SetRequestBody(body AccountCreateRequestBody) {
r.requestBody = body
}
func (r *AccountCreateRequest) NewResponseBody() *AccountCreateResponseBody {
return &AccountCreateResponseBody{}
}
type AccountCreateResponseBody struct {
D struct {
Next string `json:"__next"`
MetaData edm.MetaData `json:"__metadata"`
Account
} `json:"d"`
}
func (r *AccountCreateRequest) URL() url.URL {
return r.client.GetEndpointURL("Account", r.PathParams())
}
func (r *AccountCreateRequest) Do() (AccountCreateResponseBody, error) {
// Create http request
req, err := r.client.NewRequest(nil, r.Method(), r.URL(), r.RequestBody())
if err != nil {
return *r.NewResponseBody(), err
}
// Process query parameters
err = utils.AddQueryParamsToRequest(r.QueryParams(), req, false)
if err != nil {
return *r.NewResponseBody(), err
}
responseBody := r.NewResponseBody()
_, err = r.client.Do(req, responseBody)
return *responseBody, err
}
type NewAccount struct {
AccountCode string `json:"AccountCode"`
AccountStatus string `json:"AccountStatus"`
CustomerType string `json:"CustomerType"`
CustomerStatus string `json:"CustomerStatus"`
AccountName string `json:"AccountName"`
CountryOfOrigin string `json:"CountryOfOrigin"`
CountryOfAssembly string `json:"CountryOfAssembly"`
PhoneNumber string `json:"PhoneNumber"`
FaxNumber string `json:"FaxNumber"`
ContactTitle string `json:"ContactTitle,omitempty"`
ContactFirstName string `json:"ContactFirstName,omitempty"`
ContactLastName string `json:"ContactLastName,omitempty"`
ContactEmail string `json:"ContactEmail,omitempty"`
ContactGender string `json:"ContactGender,omitempty"`
VATNumber string `json:"VATNumber"`
DeliveryAddressline1 string `json:"DeliveryAddressline1,omitempty"`
DeliveryAddressline2 string `json:"DeliveryAddressline2,omitempty"`
DeliveryAddressline3 string `json:"DeliveryAddressline3,omitempty"`
DeliveryPostCode string `json:"DeliveryPostCode,omitempty"`
DeliveryCity string `json:"DeliveryCity,omitempty"`
DeliveryCountry string `json:"DeliveryCountry,omitempty"`
InvoiceAddress string `json:"InvoiceAddress,omitempty"`
InvoiceAddress2 string `json:"InvoiceAddress2,omitempty"`
InvoiceAddress3 string `json:"InvoiceAddress3,omitempty"`
InvoiceAddressPostCode string `json:"InvoiceAddressPostCode,omitempty"`
InvoiceCity string `json:"InvoiceCity,omitempty"`
InvoiceCountry string `json:"InvoiceCountry,omitempty"`
MailingAddress1 string `json:"MailingAddress1,omitempty"`
MailingAddress2 string `json:"MailingAddress2,omitempty"`
MailingAddress3 string `json:"MailingAddress3,omitempty"`
MailingPostcode string `json:"MailingPostcode,omitempty"`
MailingCity string `json:"MailingCity,omitempty"`
MailingCountry string `json:"MailingCountry,omitempty"`
PostalAddressLine1 string `json:"PostalAddressLine1,omitempty"`
PostalAddressLine2 string `json:"PostalAddressLine2,omitempty"`
PostalAddressLine3 string `json:"PostalAddressLine3,omitempty"`
PostalPostCode string `json:"PostalPostCode,omitempty"`
PostalCity string `json:"PostalCity,omitempty"`
PostalCountry string `json:"PostalCountry,omitempty"`
DebtorNumber string `json:"DebtorNumber,omitempty"`
DebtorCode string `json:"DebtorCode,omitempty"`
}