add all methods for cancellations, add methods for getting fbo shipment details
This commit is contained in:
207
ozon/cancellations.go
Normal file
207
ozon/cancellations.go
Normal file
@@ -0,0 +1,207 @@
|
||||
package ozon
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"time"
|
||||
|
||||
core "github.com/diphantxm/ozon-api-client"
|
||||
)
|
||||
|
||||
type Cancellations struct {
|
||||
client *core.Client
|
||||
}
|
||||
|
||||
type GetCancellationInfoParams struct {
|
||||
// Cancellation request identifier
|
||||
CancellationId int64 `json:"cancellation_id"`
|
||||
}
|
||||
|
||||
type GetCancellationInfoResponse struct {
|
||||
core.CommonResponse
|
||||
|
||||
// Method result
|
||||
Result CancellationInfo `json:"result"`
|
||||
}
|
||||
|
||||
type CancellationInfo struct {
|
||||
// Cancellation request identifier
|
||||
CancellationId int64 `json:"cancellation_id"`
|
||||
|
||||
// Shipment number
|
||||
PostingNumber string `json:"posting_number"`
|
||||
|
||||
// Cancellation reason
|
||||
CancellationReason struct {
|
||||
// Cancellation reason identifier
|
||||
Id int64 `json:"id"`
|
||||
|
||||
// Cancellation reason name
|
||||
Name string `json:"name"`
|
||||
} `json:"cancellation_reason"`
|
||||
|
||||
// Cancellation request creation date
|
||||
CancelledAt time.Time `json:"cancelled_at"`
|
||||
|
||||
// Comment to cancellation submitted by cancellation initiator
|
||||
CancellationReasonMessage string `json:"cancellation_reason_message"`
|
||||
|
||||
// Delivery service integration type
|
||||
TPLIntegrationType string `json:"tpl_integration_type"`
|
||||
|
||||
// Cancellation request status
|
||||
State struct {
|
||||
// Status identifier
|
||||
Id int64 `json:"id"`
|
||||
|
||||
// Status name
|
||||
Name string `json:"name"`
|
||||
|
||||
// Request status
|
||||
State string `json:"state"`
|
||||
} `json:"state"`
|
||||
|
||||
// Cancellation initiator
|
||||
CancellationInitiator string `json:"cancellation_initiator"`
|
||||
|
||||
// Order creation date
|
||||
OrderDate time.Time `json:"order_date"`
|
||||
|
||||
// Comment submitted on the cancellation request approval or rejection
|
||||
ApproveComment string `json:"approve_comment"`
|
||||
|
||||
// Cancellation request approval or rejection date
|
||||
ApproveDate time.Time `json:"approve_date"`
|
||||
|
||||
// Date after which the request will be automatically approved
|
||||
AutoApproveDate time.Time `json:"auto_approve_date"`
|
||||
}
|
||||
|
||||
// Method for getting information about a rFBS cancellation request
|
||||
func (c Cancellations) GetInfo(params *GetCancellationInfoParams) (*GetCancellationInfoResponse, error) {
|
||||
url := "/v1/delivery-method/list"
|
||||
|
||||
resp := &GetCancellationInfoResponse{}
|
||||
|
||||
response, err := c.client.Request(http.MethodPost, url, params, resp)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
response.CopyCommonResponse(&resp.CommonResponse)
|
||||
|
||||
return resp, nil
|
||||
}
|
||||
|
||||
type ListCancellationsParams struct {
|
||||
// Filters
|
||||
Filter ListCancellationsFilter `json:"filter"`
|
||||
|
||||
// Number of cancellation requests in the response
|
||||
Limit int32 `json:"limit"`
|
||||
|
||||
// Number of elements that will be skipped in the response.
|
||||
// For example, if offset=10, the response will start with the 11th element found
|
||||
Offset int32 `json:"offset"`
|
||||
|
||||
// Additional information
|
||||
With ListCancellationWith `json:"with"`
|
||||
}
|
||||
|
||||
type ListCancellationsFilter struct {
|
||||
// Filter by cancellation initiator
|
||||
CancellationInitiator []string `json:"cancellation_initiator"`
|
||||
|
||||
// Filter by shipment number.
|
||||
//
|
||||
// Optional parameter. You can pass several values here
|
||||
PostingNumber string `json:"posting_number"`
|
||||
|
||||
// Filter by cancellation request status
|
||||
State string `json:"state"`
|
||||
}
|
||||
|
||||
type ListCancellationWith struct {
|
||||
// Indication that the counter of requests in different statuses should be displayed in the response
|
||||
Counters bool `json:"counters"`
|
||||
}
|
||||
|
||||
type ListCancellationsResponse struct {
|
||||
core.CommonResponse
|
||||
|
||||
// Cancellation requests list
|
||||
Result []CancellationInfo `json:"result"`
|
||||
|
||||
// The total number of requests by the specified filters
|
||||
Total int32 `json:"total"`
|
||||
|
||||
// Counter of requests in different statuses
|
||||
Counters struct {
|
||||
// Number of requests for approval
|
||||
OnApproval int64 `json:"on_approval"`
|
||||
|
||||
// Number of approved requests
|
||||
Approved int64 `json:"approved"`
|
||||
|
||||
// Number of rejected requests
|
||||
Rejected int64 `json:"rejected"`
|
||||
} `json:"counters"`
|
||||
}
|
||||
|
||||
// Method for getting a list of rFBS cancellation requests
|
||||
func (c Cancellations) List(params *ListCancellationsParams) (*ListCancellationsResponse, error) {
|
||||
url := "/v1/conditional-cancellation/list"
|
||||
|
||||
resp := &ListCancellationsResponse{}
|
||||
|
||||
response, err := c.client.Request(http.MethodPost, url, params, resp)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
response.CopyCommonResponse(&resp.CommonResponse)
|
||||
|
||||
return resp, nil
|
||||
}
|
||||
|
||||
type ApproveRejectCancellationsParams struct {
|
||||
// Cancellation request identifier
|
||||
CancellationId int64 `json:"cancellation_id"`
|
||||
|
||||
// Comment
|
||||
Comment string `json:"comment"`
|
||||
}
|
||||
|
||||
type ApproveRejectCancellationsResponse struct {
|
||||
core.CommonResponse
|
||||
}
|
||||
|
||||
// The method allows to approve an rFBS cancellation request in the ON_APPROVAL status.
|
||||
// The order will be canceled and the money will be returned to the customer
|
||||
func (c Cancellations) Approve(params *ApproveRejectCancellationsParams) (*ApproveRejectCancellationsResponse, error) {
|
||||
url := "/v1/conditional-cancellation/approve"
|
||||
|
||||
resp := &ApproveRejectCancellationsResponse{}
|
||||
|
||||
response, err := c.client.Request(http.MethodPost, url, params, resp)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
response.CopyCommonResponse(&resp.CommonResponse)
|
||||
|
||||
return resp, nil
|
||||
}
|
||||
|
||||
// The method allows to reject an rFBS cancellation request in the ON_APPROVAL status. Explain your decision in the comment parameter.
|
||||
//
|
||||
// The order will remain in the same status and must be delivered to the customer
|
||||
func (c Cancellations) Reject(params *ApproveRejectCancellationsParams) (*ApproveRejectCancellationsResponse, error) {
|
||||
url := "/v1/conditional-cancellation/reject"
|
||||
|
||||
resp := &ApproveRejectCancellationsResponse{}
|
||||
|
||||
response, err := c.client.Request(http.MethodPost, url, params, resp)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
response.CopyCommonResponse(&resp.CommonResponse)
|
||||
|
||||
return resp, nil
|
||||
}
|
||||
Reference in New Issue
Block a user