Add methods to retrieve products and inventory data
Implemented `GetProductByArticle` to fetch product details by article. Added `GetRemainsAndPlanresidues` to obtain inventory balances for categories. These enhancements improve the API's capability to manage product and inventory information.
This commit is contained in:
parent
8c3541a892
commit
99c8dbd911
@ -13,7 +13,10 @@ type Method interface {
|
||||
GetParentCategories() ([]model.Category, error)
|
||||
GetCategories() ([]model.Category, error)
|
||||
GetTreeCategories() ([]model.TreeCategories, error)
|
||||
|
||||
GetProducts() ([]model.Product, error)
|
||||
GetProductByArticle(article string) (model.Product, error)
|
||||
GetRemainsAndPlanresidues() ([]model.ShortProduct, error)
|
||||
}
|
||||
|
||||
func NewApi(credentials client.Credentials) Method {
|
||||
|
@ -1,8 +1,12 @@
|
||||
package api
|
||||
|
||||
import "gitea.24example.ru/spavelit/bpiek/model"
|
||||
import (
|
||||
"errors"
|
||||
"gitea.24example.ru/spavelit/bpiek/model"
|
||||
)
|
||||
|
||||
var products []model.Product
|
||||
var remainsAndPlanresidues []model.ShortProduct
|
||||
|
||||
func (a *Api) GetProducts() ([]model.Product, error) {
|
||||
|
||||
@ -29,3 +33,57 @@ func (a *Api) GetProducts() ([]model.Product, error) {
|
||||
|
||||
return products, nil
|
||||
}
|
||||
|
||||
func (a *Api) GetProductByArticle(article string) (model.Product, error) {
|
||||
apiResponse, err := a.Client.HTTPClient.
|
||||
R().
|
||||
SetResult(&model.Product{}).
|
||||
Get("client/products/" + article)
|
||||
|
||||
if err != nil {
|
||||
return model.Product{}, err
|
||||
}
|
||||
|
||||
if apiResponse.StatusCode() != 200 {
|
||||
return model.Product{}, errors.New(
|
||||
"error getting product by article: " + article)
|
||||
}
|
||||
|
||||
return apiResponse.Result().(model.Product), nil
|
||||
}
|
||||
|
||||
func (a *Api) GetRemainsAndPlanresidues() ([]model.ShortProduct, error) {
|
||||
if len(remainsAndPlanresidues) != 0 {
|
||||
return remainsAndPlanresidues, nil
|
||||
}
|
||||
|
||||
parentCategories, err := a.GetParentCategories()
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
for _, category := range parentCategories {
|
||||
apiResponse, err := a.Client.HTTPClient.
|
||||
R().
|
||||
SetResult(&model.RemainsAndPlanresiduesResponse{}).
|
||||
Get("client/category/" + category.Slug + "/balances-json")
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if apiResponse.StatusCode() != 200 {
|
||||
return nil, errors.New("file remains and planresidues not found")
|
||||
}
|
||||
|
||||
result := apiResponse.Result().(model.RemainsAndPlanresiduesResponse)
|
||||
|
||||
if len(result.Products) != 0 {
|
||||
remainsAndPlanresidues = append(remainsAndPlanresidues, result.Products...)
|
||||
}
|
||||
}
|
||||
|
||||
return remainsAndPlanresidues, nil
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user