-
Notifications
You must be signed in to change notification settings - Fork 0
/
product_attribute_value.go
140 lines (123 loc) · 5.17 KB
/
product_attribute_value.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
package odoo
import (
"fmt"
)
// ProductAttributeValue represents product.attribute.value model.
type ProductAttributeValue struct {
LastUpdate *Time `xmlrpc:"__last_update,omptempty"`
AttributeId *Many2One `xmlrpc:"attribute_id,omptempty"`
CreateDate *Time `xmlrpc:"create_date,omptempty"`
CreateUid *Many2One `xmlrpc:"create_uid,omptempty"`
DisplayName *String `xmlrpc:"display_name,omptempty"`
Id *Int `xmlrpc:"id,omptempty"`
Name *String `xmlrpc:"name,omptempty"`
PriceExtra *Float `xmlrpc:"price_extra,omptempty"`
PriceIds *Relation `xmlrpc:"price_ids,omptempty"`
ProductIds *Relation `xmlrpc:"product_ids,omptempty"`
Sequence *Int `xmlrpc:"sequence,omptempty"`
WriteDate *Time `xmlrpc:"write_date,omptempty"`
WriteUid *Many2One `xmlrpc:"write_uid,omptempty"`
}
// ProductAttributeValues represents array of product.attribute.value model.
type ProductAttributeValues []ProductAttributeValue
// ProductAttributeValueModel is the odoo model name.
const ProductAttributeValueModel = "product.attribute.value"
// Many2One convert ProductAttributeValue to *Many2One.
func (pav *ProductAttributeValue) Many2One() *Many2One {
return NewMany2One(pav.Id.Get(), "")
}
// CreateProductAttributeValue creates a new product.attribute.value model and returns its id.
func (c *Client) CreateProductAttributeValue(pav *ProductAttributeValue) (int64, error) {
ids, err := c.CreateProductAttributeValues([]*ProductAttributeValue{pav})
if err != nil {
return -1, err
}
if len(ids) == 0 {
return -1, nil
}
return ids[0], nil
}
// CreateProductAttributeValue creates a new product.attribute.value model and returns its id.
func (c *Client) CreateProductAttributeValues(pavs []*ProductAttributeValue) ([]int64, error) {
var vv []interface{}
for _, v := range pavs {
vv = append(vv, v)
}
return c.Create(ProductAttributeValueModel, vv)
}
// UpdateProductAttributeValue updates an existing product.attribute.value record.
func (c *Client) UpdateProductAttributeValue(pav *ProductAttributeValue) error {
return c.UpdateProductAttributeValues([]int64{pav.Id.Get()}, pav)
}
// UpdateProductAttributeValues updates existing product.attribute.value records.
// All records (represented by ids) will be updated by pav values.
func (c *Client) UpdateProductAttributeValues(ids []int64, pav *ProductAttributeValue) error {
return c.Update(ProductAttributeValueModel, ids, pav)
}
// DeleteProductAttributeValue deletes an existing product.attribute.value record.
func (c *Client) DeleteProductAttributeValue(id int64) error {
return c.DeleteProductAttributeValues([]int64{id})
}
// DeleteProductAttributeValues deletes existing product.attribute.value records.
func (c *Client) DeleteProductAttributeValues(ids []int64) error {
return c.Delete(ProductAttributeValueModel, ids)
}
// GetProductAttributeValue gets product.attribute.value existing record.
func (c *Client) GetProductAttributeValue(id int64) (*ProductAttributeValue, error) {
pavs, err := c.GetProductAttributeValues([]int64{id})
if err != nil {
return nil, err
}
if pavs != nil && len(*pavs) > 0 {
return &((*pavs)[0]), nil
}
return nil, fmt.Errorf("id %v of product.attribute.value not found", id)
}
// GetProductAttributeValues gets product.attribute.value existing records.
func (c *Client) GetProductAttributeValues(ids []int64) (*ProductAttributeValues, error) {
pavs := &ProductAttributeValues{}
if err := c.Read(ProductAttributeValueModel, ids, nil, pavs); err != nil {
return nil, err
}
return pavs, nil
}
// FindProductAttributeValue finds product.attribute.value record by querying it with criteria.
func (c *Client) FindProductAttributeValue(criteria *Criteria) (*ProductAttributeValue, error) {
pavs := &ProductAttributeValues{}
if err := c.SearchRead(ProductAttributeValueModel, criteria, NewOptions().Limit(1), pavs); err != nil {
return nil, err
}
if pavs != nil && len(*pavs) > 0 {
return &((*pavs)[0]), nil
}
return nil, fmt.Errorf("product.attribute.value was not found with criteria %v", criteria)
}
// FindProductAttributeValues finds product.attribute.value records by querying it
// and filtering it with criteria and options.
func (c *Client) FindProductAttributeValues(criteria *Criteria, options *Options) (*ProductAttributeValues, error) {
pavs := &ProductAttributeValues{}
if err := c.SearchRead(ProductAttributeValueModel, criteria, options, pavs); err != nil {
return nil, err
}
return pavs, nil
}
// FindProductAttributeValueIds finds records ids by querying it
// and filtering it with criteria and options.
func (c *Client) FindProductAttributeValueIds(criteria *Criteria, options *Options) ([]int64, error) {
ids, err := c.Search(ProductAttributeValueModel, criteria, options)
if err != nil {
return []int64{}, err
}
return ids, nil
}
// FindProductAttributeValueId finds record id by querying it with criteria.
func (c *Client) FindProductAttributeValueId(criteria *Criteria, options *Options) (int64, error) {
ids, err := c.Search(ProductAttributeValueModel, criteria, options)
if err != nil {
return -1, err
}
if len(ids) > 0 {
return ids[0], nil
}
return -1, fmt.Errorf("product.attribute.value was not found with criteria %v and options %v", criteria, options)
}