]> git.mxchange.org Git - jproduct-core.git/blob - src/org/mxchange/jproduct/model/product/Product.java
Updated copyright year
[jproduct-core.git] / src / org / mxchange / jproduct / model / product / Product.java
1 /*
2  * Copyright (C) 2016 - 2024 Free Software Foundation
3  *
4  * This program is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation, either version 3 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
16  */
17 package org.mxchange.jproduct.model.product;
18
19 import java.io.Serializable;
20 import java.math.BigDecimal;
21 import java.util.Date;
22 import org.mxchange.jcontactsbusiness.model.basicdata.BasicData;
23 import org.mxchange.jproduct.model.category.Category;
24 import org.mxchange.jproduct.model.product.agegroup.AgeGroup;
25
26 /**
27  * A POJI for product entities
28  * <p>
29  * @author Roland Häder<roland@mxchange.org>
30  */
31 public interface Product extends Comparable<Product>, Serializable {
32
33         /**
34          * Getter for bar-code number
35          * <p>
36          * @return Bar-code number
37          */
38         String getProductBarCodeNumber ();
39
40         /**
41          * Setter for bar-code number
42          * <p>
43          * @param productBarCodeNumber Bar-code number
44          */
45         void setProductBarCodeNumber (final String productBarCodeNumber);
46
47         /**
48          * Getter for created timestamp
49          * <p>
50          * @return Created timestamp
51          */
52         Date getProductEntryCreated ();
53
54         /**
55          * Setter for created timestamp
56          * <p>
57          * @param productEntryCreated Created timestamp
58          */
59         void setProductEntryCreated (final Date productEntryCreated);
60
61         /**
62          * Getter for updated timestamp
63          * <p>
64          * @return Updated timestamp
65          */
66         Date getProductEntryUpdated ();
67
68         /**
69          * Setter for updated timestamp
70          * <p>
71          * @param productEntryUpdated Updated timestamp
72          */
73         void setProductEntryUpdated (final Date productEntryUpdated);
74
75         /**
76          * Getter for product availability
77          * <p>
78          * @return Product availability
79          */
80         Boolean getProductAvailability ();
81
82         /**
83          * Setter for product availability
84          * <p>
85          * @param productAvailability Product availability
86          */
87         void setProductAvailability (final Boolean productAvailability);
88
89         /**
90          * Getter for product category id
91          * <p>
92          * @return Product category id
93          */
94         Category getProductCategory ();
95
96         /**
97          * Setter for product category
98          * <p>
99          * @param productCategory Product category
100          */
101         void setProductCategory (final Category productCategory);
102
103         /**
104          * Getter for id number, suitable for form fields.
105          * <p>
106          * @return Id number of product
107          */
108         Long getProductId ();
109
110         /**
111          * Id number of product
112          * <p>
113          * @param productId the id number to set
114          */
115         void setProductId (final Long productId);
116
117         /**
118          * Getter for manufacturing/producing company
119          * <p>
120          * @return Manufacturing/producing company
121          */
122         BasicData getProductManufacturer ();
123
124         /**
125          * Setter for manufacturing/producing company
126          * <p>
127          * @param productManufacturer Manufacturing/producing company
128          */
129         void setProductManufacturer (final BasicData productManufacturer);
130
131         /**
132          * Getter for product's net price
133          * <p>
134          * @return Product's net price
135          */
136         BigDecimal getProductNetPrice ();
137
138         /**
139          * Setter for product's net price
140          * <p>
141          * @param productNetPrice Product's net price
142          */
143         void setProductNetPrice (final BigDecimal productNetPrice);
144
145         /**
146          * Getter for product's tax rate
147          * <p>
148          * @return Product's tax rate
149          */
150         BigDecimal getProductTaxRate ();
151
152         /**
153          * Setter for product's tax rate
154          * <p>
155          * @param productTaxRate Product's tax rate
156          */
157         void setProductTaxRate (final BigDecimal productTaxRate);
158
159         /**
160          * Getter for product's gross price
161          * <p>
162          * @return Product's gross price
163          */
164         BigDecimal getProductGrossPrice ();
165
166         /**
167          * Setter for product's gross price
168          * <p>
169          * @param productGrossPrice Product's gross price
170          */
171         void setProductGrossPrice (final BigDecimal productGrossPrice);
172
173         /**
174          * Getter for currency code like EUR or USD
175          * <p>
176          * @return Currency code like EUR or USD
177          */
178         String getProductCurrencyCode ();
179
180         /**
181          * Setter for currency code like EUR or USD
182          * <p>
183          * @param productCurrencyCode Currency code like EUR or USD
184          */
185         void setProductCurrencyCode (final String productCurrencyCode);
186
187         /**
188          * Getter for product's FSC number
189          * <p>
190          * @return Product's FSC number
191          */
192         String getProductFscNumber ();
193
194         /**
195          * Setter for product's FSC number
196          * <p>
197          * @param productFscNumber Product's FSC number
198          */
199         void setProductFscNumber (final String productFscNumber);
200
201         /**
202          * Getter for i18n key of product
203          * <p>
204          * @return I18n key of product
205          */
206         String getProductI18nKey ();
207
208         /**
209          * Setter for i18n key of product
210          * <p>
211          * @param productI18nKey I18n key
212          */
213         void setProductI18nKey (final String productI18nKey);
214
215         /**
216          * Getter for product's unit amount
217          * <p>
218          * @return Product's unit amount
219          */
220         BigDecimal getProductUnitAmount ();
221
222         /**
223          * Setter for product's unit amount
224          * <p>
225          * @param productUnitAmount Product's unit amount
226          */
227         void setProductUnitAmount (final BigDecimal productUnitAmount);
228
229         /**
230          * Getter for product's i18n key
231          * <p>
232          * @return Product's i18n key
233          */
234         String getProductUnitI18nKey ();
235
236         /**
237          * Setter for product's i18n key
238          * <p>
239          * @param productI18nKey Product's i18n key
240          */
241         void setProductUnitI18nKey (final String productI18nKey);
242
243         /**
244          * Getter for product's number
245          * <p>
246          * @return Product's number
247          */
248         Long getProductNumber ();
249
250         /**
251          * Setter for product's number
252          * <p>
253          * @param productNumber Product's number
254          */
255         void setProductNumber (final Long productNumber);
256
257         /**
258          * Getter for product's size
259          * <p>
260          * @return Product's size
261          */
262         String getProductSize ();
263
264         /**
265          * Setter for product's size
266          * <p>
267          * @param productSize Product's size
268          */
269         void setProductSize (final String productSize);
270
271         /**
272          * Getter for product's age group
273          * <p>
274          * @return Product's age group
275          */
276         AgeGroup getProductAgeGroup ();
277
278         /**
279          * Setter for product's age group
280          * <p>
281          * @param productAgeGroup Product's age group
282          */
283         void setProductAgeGroup (final AgeGroup productAgeGroup);
284
285         @Override
286         boolean equals (final Object object);
287
288         @Override
289         int hashCode ();
290
291 }