-
Notifications
You must be signed in to change notification settings - Fork 0
/
product_pricelist.go
142 lines (125 loc) · 4.96 KB
/
product_pricelist.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
package odoo
import (
"fmt"
)
// ProductPricelist represents product.pricelist model.
type ProductPricelist struct {
LastUpdate *Time `xmlrpc:"__last_update,omptempty"`
Active *Bool `xmlrpc:"active,omptempty"`
CompanyId *Many2One `xmlrpc:"company_id,omptempty"`
CountryGroupIds *Relation `xmlrpc:"country_group_ids,omptempty"`
CreateDate *Time `xmlrpc:"create_date,omptempty"`
CreateUid *Many2One `xmlrpc:"create_uid,omptempty"`
CurrencyId *Many2One `xmlrpc:"currency_id,omptempty"`
DiscountPolicy *Selection `xmlrpc:"discount_policy,omptempty"`
DisplayName *String `xmlrpc:"display_name,omptempty"`
Id *Int `xmlrpc:"id,omptempty"`
ItemIds *Relation `xmlrpc:"item_ids,omptempty"`
Name *String `xmlrpc:"name,omptempty"`
Sequence *Int `xmlrpc:"sequence,omptempty"`
WriteDate *Time `xmlrpc:"write_date,omptempty"`
WriteUid *Many2One `xmlrpc:"write_uid,omptempty"`
}
// ProductPricelists represents array of product.pricelist model.
type ProductPricelists []ProductPricelist
// ProductPricelistModel is the odoo model name.
const ProductPricelistModel = "product.pricelist"
// Many2One convert ProductPricelist to *Many2One.
func (pp *ProductPricelist) Many2One() *Many2One {
return NewMany2One(pp.Id.Get(), "")
}
// CreateProductPricelist creates a new product.pricelist model and returns its id.
func (c *Client) CreateProductPricelist(pp *ProductPricelist) (int64, error) {
ids, err := c.CreateProductPricelists([]*ProductPricelist{pp})
if err != nil {
return -1, err
}
if len(ids) == 0 {
return -1, nil
}
return ids[0], nil
}
// CreateProductPricelist creates a new product.pricelist model and returns its id.
func (c *Client) CreateProductPricelists(pps []*ProductPricelist) ([]int64, error) {
var vv []interface{}
for _, v := range pps {
vv = append(vv, v)
}
return c.Create(ProductPricelistModel, vv)
}
// UpdateProductPricelist updates an existing product.pricelist record.
func (c *Client) UpdateProductPricelist(pp *ProductPricelist) error {
return c.UpdateProductPricelists([]int64{pp.Id.Get()}, pp)
}
// UpdateProductPricelists updates existing product.pricelist records.
// All records (represented by ids) will be updated by pp values.
func (c *Client) UpdateProductPricelists(ids []int64, pp *ProductPricelist) error {
return c.Update(ProductPricelistModel, ids, pp)
}
// DeleteProductPricelist deletes an existing product.pricelist record.
func (c *Client) DeleteProductPricelist(id int64) error {
return c.DeleteProductPricelists([]int64{id})
}
// DeleteProductPricelists deletes existing product.pricelist records.
func (c *Client) DeleteProductPricelists(ids []int64) error {
return c.Delete(ProductPricelistModel, ids)
}
// GetProductPricelist gets product.pricelist existing record.
func (c *Client) GetProductPricelist(id int64) (*ProductPricelist, error) {
pps, err := c.GetProductPricelists([]int64{id})
if err != nil {
return nil, err
}
if pps != nil && len(*pps) > 0 {
return &((*pps)[0]), nil
}
return nil, fmt.Errorf("id %v of product.pricelist not found", id)
}
// GetProductPricelists gets product.pricelist existing records.
func (c *Client) GetProductPricelists(ids []int64) (*ProductPricelists, error) {
pps := &ProductPricelists{}
if err := c.Read(ProductPricelistModel, ids, nil, pps); err != nil {
return nil, err
}
return pps, nil
}
// FindProductPricelist finds product.pricelist record by querying it with criteria.
func (c *Client) FindProductPricelist(criteria *Criteria) (*ProductPricelist, error) {
pps := &ProductPricelists{}
if err := c.SearchRead(ProductPricelistModel, criteria, NewOptions().Limit(1), pps); err != nil {
return nil, err
}
if pps != nil && len(*pps) > 0 {
return &((*pps)[0]), nil
}
return nil, fmt.Errorf("product.pricelist was not found with criteria %v", criteria)
}
// FindProductPricelists finds product.pricelist records by querying it
// and filtering it with criteria and options.
func (c *Client) FindProductPricelists(criteria *Criteria, options *Options) (*ProductPricelists, error) {
pps := &ProductPricelists{}
if err := c.SearchRead(ProductPricelistModel, criteria, options, pps); err != nil {
return nil, err
}
return pps, nil
}
// FindProductPricelistIds finds records ids by querying it
// and filtering it with criteria and options.
func (c *Client) FindProductPricelistIds(criteria *Criteria, options *Options) ([]int64, error) {
ids, err := c.Search(ProductPricelistModel, criteria, options)
if err != nil {
return []int64{}, err
}
return ids, nil
}
// FindProductPricelistId finds record id by querying it with criteria.
func (c *Client) FindProductPricelistId(criteria *Criteria, options *Options) (int64, error) {
ids, err := c.Search(ProductPricelistModel, criteria, options)
if err != nil {
return -1, err
}
if len(ids) > 0 {
return ids[0], nil
}
return -1, fmt.Errorf("product.pricelist was not found with criteria %v and options %v", criteria, options)
}