add get shipments lists methods for fbs and fbo
This commit is contained in:
		
							
								
								
									
										191
									
								
								ozon/fbs.go
									
									
									
									
									
								
							
							
						
						
									
										191
									
								
								ozon/fbs.go
									
									
									
									
									
								
							@@ -40,11 +40,11 @@ type ListUnprocessedShipmentsResponse struct {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type ListUnprocessedShipmentsResult struct {
 | 
			
		||||
	Count    int64                             `json:"count"`
 | 
			
		||||
	Postings []ListUnprocessedShipmentsPosting `json:"postings"`
 | 
			
		||||
	Count    int64        `json:"count"`
 | 
			
		||||
	Postings []FBSPosting `json:"postings"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type ListUnprocessedShipmentsPosting struct {
 | 
			
		||||
type FBSPosting struct {
 | 
			
		||||
	Addressee struct {
 | 
			
		||||
		Name  string `json:"name"`
 | 
			
		||||
		Phone string `json:"phone"`
 | 
			
		||||
@@ -79,26 +79,7 @@ type ListUnprocessedShipmentsPosting struct {
 | 
			
		||||
		CancelledAfterShip       bool   `json:"cancellation_after_ship"`
 | 
			
		||||
	} `json:"cancellation"`
 | 
			
		||||
 | 
			
		||||
	Customer struct {
 | 
			
		||||
		Address struct {
 | 
			
		||||
			AddressTail     string  `json:"address_tail"`
 | 
			
		||||
			City            string  `json:"city"`
 | 
			
		||||
			Comment         string  `json:"comment"`
 | 
			
		||||
			Country         string  `json:"country"`
 | 
			
		||||
			District        string  `json:"district"`
 | 
			
		||||
			Latitude        float64 `json:"latitude"`
 | 
			
		||||
			Longitude       float64 `json:"longitude"`
 | 
			
		||||
			ProviderPVZCode string  `json:"provider_pvz_code"`
 | 
			
		||||
			PVZCode         int64   `json:"pvz_code"`
 | 
			
		||||
			Region          string  `json:"region"`
 | 
			
		||||
			ZIPCode         string  `json:"zip_code"`
 | 
			
		||||
		} `json:"customer"`
 | 
			
		||||
 | 
			
		||||
		CustomerEmail string `json:"customer_email"`
 | 
			
		||||
		CustomerId    int64  `json:"customer_id"`
 | 
			
		||||
		Name          string `json:"name"`
 | 
			
		||||
		Phone         string `json:"phone"`
 | 
			
		||||
	} `json:"customer"`
 | 
			
		||||
	Customer FBSCustomer `json:"customer"`
 | 
			
		||||
 | 
			
		||||
	DeliveringDate time.Time `json:"delivering_date"`
 | 
			
		||||
 | 
			
		||||
@@ -116,27 +97,7 @@ type ListUnprocessedShipmentsPosting struct {
 | 
			
		||||
		ClusterTo       string              `json:"cluster_to"`
 | 
			
		||||
		PostingServices MarketplaceServices `json:"posting_services"`
 | 
			
		||||
 | 
			
		||||
		Products []struct {
 | 
			
		||||
			Actions                 []string            `json:"actions"`
 | 
			
		||||
			ClientPrice             string              `json:"client_price"`
 | 
			
		||||
			CommissionAmount        float64             `json:"commission_amount"`
 | 
			
		||||
			CommissionPercent       int64               `json:"commission_percent"`
 | 
			
		||||
			CommissionsCurrencyCode string              `json:"commissions_currency_code"`
 | 
			
		||||
			ItemServices            MarketplaceServices `json:"item_services"`
 | 
			
		||||
			CurrencyCode            string              `json:"currency_code"`
 | 
			
		||||
			OldPrice                float64             `json:"old_price"`
 | 
			
		||||
			Payout                  float64             `json:"payout"`
 | 
			
		||||
			Picking                 struct {
 | 
			
		||||
				Amount float64   `json:"amount"`
 | 
			
		||||
				Moment time.Time `json:"moment"`
 | 
			
		||||
				Tag    string    `json:"tag"`
 | 
			
		||||
			} `json:"picking"`
 | 
			
		||||
			Price                float64 `json:"price"`
 | 
			
		||||
			ProductId            int64   `json:"product_id"`
 | 
			
		||||
			Quantity             int64   `json:"quantity"`
 | 
			
		||||
			TotalDiscountPercent float64 `json:"total_discount_percent"`
 | 
			
		||||
			TotalDiscountValue   float64 `json:"total_discount_value"`
 | 
			
		||||
		} `json:"products"`
 | 
			
		||||
		Products []FinancialDataProduct `json:"products"`
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	InProccessAt        time.Time `json:"in_process_at"`
 | 
			
		||||
@@ -171,6 +132,27 @@ type ListUnprocessedShipmentsPosting struct {
 | 
			
		||||
	TrackingNumber     string    `json:"tracking_number"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type FBSCustomer struct {
 | 
			
		||||
	Address struct {
 | 
			
		||||
		AddressTail     string  `json:"address_tail"`
 | 
			
		||||
		City            string  `json:"city"`
 | 
			
		||||
		Comment         string  `json:"comment"`
 | 
			
		||||
		Country         string  `json:"country"`
 | 
			
		||||
		District        string  `json:"district"`
 | 
			
		||||
		Latitude        float64 `json:"latitude"`
 | 
			
		||||
		Longitude       float64 `json:"longitude"`
 | 
			
		||||
		ProviderPVZCode string  `json:"provider_pvz_code"`
 | 
			
		||||
		PVZCode         int64   `json:"pvz_code"`
 | 
			
		||||
		Region          string  `json:"region"`
 | 
			
		||||
		ZIPCode         string  `json:"zip_code"`
 | 
			
		||||
	} `json:"customer"`
 | 
			
		||||
 | 
			
		||||
	CustomerEmail string `json:"customer_email"`
 | 
			
		||||
	CustomerId    int64  `json:"customer_id"`
 | 
			
		||||
	Name          string `json:"name"`
 | 
			
		||||
	Phone         string `json:"phone"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type MarketplaceServices struct {
 | 
			
		||||
	DeliveryToCustomer            float64 `json:"marketplace_service_item_deliv_to_customer"`
 | 
			
		||||
	DirectFlowTrans               float64 `json:"marketplace_service_item_direct_flow_trans"`
 | 
			
		||||
@@ -185,6 +167,28 @@ type MarketplaceServices struct {
 | 
			
		||||
	ReturnPartGoodsCustomer       float64 `json:"marketplace_service_item_return_part_goods_customer"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type FinancialDataProduct struct {
 | 
			
		||||
	Actions                 []string            `json:"actions"`
 | 
			
		||||
	ClientPrice             string              `json:"client_price"`
 | 
			
		||||
	CommissionAmount        float64             `json:"commission_amount"`
 | 
			
		||||
	CommissionPercent       int64               `json:"commission_percent"`
 | 
			
		||||
	CommissionsCurrencyCode string              `json:"commissions_currency_code"`
 | 
			
		||||
	ItemServices            MarketplaceServices `json:"item_services"`
 | 
			
		||||
	CurrencyCode            string              `json:"currency_code"`
 | 
			
		||||
	OldPrice                float64             `json:"old_price"`
 | 
			
		||||
	Payout                  float64             `json:"payout"`
 | 
			
		||||
	Picking                 struct {
 | 
			
		||||
		Amount float64   `json:"amount"`
 | 
			
		||||
		Moment time.Time `json:"moment"`
 | 
			
		||||
		Tag    string    `json:"tag"`
 | 
			
		||||
	} `json:"picking"`
 | 
			
		||||
	Price                float64 `json:"price"`
 | 
			
		||||
	ProductId            int64   `json:"product_id"`
 | 
			
		||||
	Quantity             int64   `json:"quantity"`
 | 
			
		||||
	TotalDiscountPercent float64 `json:"total_discount_percent"`
 | 
			
		||||
	TotalDiscountValue   float64 `json:"total_discount_value"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (c Client) ListUnprocessedShipments(params *ListUnprocessedShipmentsParams) (*ListUnprocessedShipmentsResponse, error) {
 | 
			
		||||
	url := "/v3/posting/fbs/unfulfilled/list"
 | 
			
		||||
 | 
			
		||||
@@ -198,3 +202,102 @@ func (c Client) ListUnprocessedShipments(params *ListUnprocessedShipmentsParams)
 | 
			
		||||
 | 
			
		||||
	return resp, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type GetFBSShipmentsListParams struct {
 | 
			
		||||
	// Sorting direction
 | 
			
		||||
	Direction string `json:"direction"`
 | 
			
		||||
 | 
			
		||||
	//Filter
 | 
			
		||||
	Filter GetFBSShipmentsListFilter `json:"filter"`
 | 
			
		||||
 | 
			
		||||
	// Number of shipments in the response:
 | 
			
		||||
	//   - maximum is 50,
 | 
			
		||||
	//   - minimum is 1.
 | 
			
		||||
	Limit int64 `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 int64 `json:"offset"`
 | 
			
		||||
 | 
			
		||||
	// Additional fields that should be added to the response
 | 
			
		||||
	With GetFBSShipmentsListWith `json:"with"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type GetFBSShipmentsListFilter struct {
 | 
			
		||||
	// Delivery method identifier
 | 
			
		||||
	DeliveryMethodId []int64 `json:"delivery_method_id"`
 | 
			
		||||
 | 
			
		||||
	// Order identifier
 | 
			
		||||
	OrderId int64 `json:"order_id"`
 | 
			
		||||
 | 
			
		||||
	// Delivery service identifier
 | 
			
		||||
	ProviderId []int64 `json:"provider_id"`
 | 
			
		||||
 | 
			
		||||
	// Start date of the period for which a list of shipments should be generated.
 | 
			
		||||
	//
 | 
			
		||||
	// Format: YYYYY-MM-DDTHH:MM:SSZ.
 | 
			
		||||
	//
 | 
			
		||||
	// Example: 2019-08-24T14:15:22Z
 | 
			
		||||
	Since time.Time `json:"since"`
 | 
			
		||||
 | 
			
		||||
	// End date of the period for which a list of shipments should be generated.
 | 
			
		||||
	//
 | 
			
		||||
	// Format: YYYYY-MM-DDTHH:MM:SSZ.
 | 
			
		||||
	//
 | 
			
		||||
	// Example: 2019-08-24T14:15:22Z.
 | 
			
		||||
	To time.Time `json:"to"`
 | 
			
		||||
 | 
			
		||||
	// Shipment status
 | 
			
		||||
	Status string `json:"status"`
 | 
			
		||||
 | 
			
		||||
	// Warehouse identifier
 | 
			
		||||
	WarehouseId []int64 `json:"warehouse_id"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type GetFBSShipmentsListWith struct {
 | 
			
		||||
	// Add analytics data to the response
 | 
			
		||||
	AnalyticsData bool `json:"analytics_data"`
 | 
			
		||||
 | 
			
		||||
	// Add the shipment barcodes to the response
 | 
			
		||||
	Barcodes bool `json:"barcodes"`
 | 
			
		||||
 | 
			
		||||
	// Add financial data to the response
 | 
			
		||||
	FinancialData bool `json:"financial_data"`
 | 
			
		||||
 | 
			
		||||
	// Transliterate the return values
 | 
			
		||||
	Translit bool `json:"translit"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type GetFBSShipmentsListResponse struct {
 | 
			
		||||
	core.CommonResponse
 | 
			
		||||
 | 
			
		||||
	// Array of shipments
 | 
			
		||||
	Result struct {
 | 
			
		||||
		// Indicates that the response returned not the entire array of shipments:
 | 
			
		||||
		//
 | 
			
		||||
		//   - true — it is necessary to make a new request with a different offset value to get information on the remaining shipments;
 | 
			
		||||
		//   - false — the entire array of shipments for the filter specified in the request was returned in the response
 | 
			
		||||
		HasNext bool `json:"has_next"`
 | 
			
		||||
 | 
			
		||||
		// Shipment details
 | 
			
		||||
		Postings FBSPosting `json:"postings"`
 | 
			
		||||
	} `json:"result"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Returns a list of shipments for the specified time period: it shouldn't be longer than one year.
 | 
			
		||||
//
 | 
			
		||||
// You can filter shipments by their status. The list of available statuses is specified in the description of the filter.status parameter.
 | 
			
		||||
//
 | 
			
		||||
// The true value of the has_next parameter in the response means there is not the entire array of shipments in the response. To get information on the remaining shipments, make a new request with a different offset value.
 | 
			
		||||
func (c Client) GetFBSShipmentsList(params *GetFBSShipmentsListParams) (*GetFBSShipmentsListResponse, error) {
 | 
			
		||||
	url := "/v3/posting/fbs/list"
 | 
			
		||||
 | 
			
		||||
	resp := &GetFBSShipmentsListResponse{}
 | 
			
		||||
 | 
			
		||||
	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