View Javadoc
1   package com.srv4pos.server.api.sale;
2   
3   import com.srv4pos.server.api.infrastructure.Constraints;
4   import com.srv4pos.server.api.infrastructure.Info;
5   import com.srv4pos.server.api.infrastructure.journal.JournalDate;
6   import org.springframework.roo.addon.javabean.RooJavaBean;
7   import org.springframework.roo.addon.json.RooJson;
8   import org.springframework.roo.addon.tostring.RooToString;
9   
10  import javax.validation.Valid;
11  import javax.validation.constraints.Min;
12  import javax.validation.constraints.NotNull;
13  import javax.validation.constraints.Pattern;
14  import javax.validation.constraints.Size;
15  import java.util.Date;
16  import java.util.List;
17  
18  /**
19   * Set of field as in Sale entity.
20   * <p>User: Pavel Abizyaev, Date: 04.09.2014 17:41</p>
21   */
22  @RooJavaBean
23  @RooToString
24  @RooJson(deepSerialize = true)
25  public class SaleInfo implements Info {
26  
27      /**
28       * List of fields for ordering.
29       */
30      public static enum Fields { ID, BRUTTO }
31  
32      /**
33       * Sale identifier.
34       */
35      private long id;
36  
37      /**
38       *  Seller identifier (country + corporate id).
39      */
40      @NotNull
41      private String sellerIdentifier;
42  
43      /**
44       * Sale state.
45      */
46      @NotNull
47      private SaleState saleState;
48  
49      /**
50       * True if it is a refund sale.
51       */
52      @NotNull
53      private boolean refund;
54  
55      /**
56       * Identifier of refunded sale.
57      */
58      private Integer refundFor;
59  
60      /**
61       * Sale absolute discount.
62       */
63      @NotNull
64      @Min(0)
65      private long absoluteDiscount;
66  
67      /**
68       * Sale relative discount.
69       */
70      @NotNull
71      @Min(0)
72      private Integer relativeDiscount;
73  
74      /**
75       * Sale brutto without discount.
76       *
77       * Sum of {@link SaleProductInfo#brutto}
78       */
79      @NotNull
80      @Min(0)
81      private long vanillaBrutto;
82  
83      /**
84       * Sale discount.
85       *
86       * discount = {@link SaleInfo#relativeDiscount} != 0 ? {@link SaleInfo#vanillaBrutto} / (1 + {@link SaleInfo#relativeDiscount})
87       * : {@link SaleInfo#absoluteDiscount}
88       */
89      @NotNull
90      @Min(0)
91      private long discount;
92  
93      /**
94       * Total sale brutto.
95       *
96       * Sum of {@link SaleInfo#vatRateSums} brutto
97       */
98      @NotNull
99      @Min(0)
100     private long brutto;
101 
102     /**
103      * Total sale VAT.
104      *
105      * Sum of {@link SaleInfo#vatRateSums} vat
106      */
107     @NotNull
108     @Min(0)
109     private long vat;
110 
111     /**
112      * Control unit Id.
113      */
114     @Size(max = 20)
115     private String controlUnitId;
116 
117     /**
118      * Treasurer name.
119      */
120     @Size(max = 50, min = 1)
121     @Pattern(regexp = Constraints.WINDOWS_FILENAME_REGEX)
122     private String treasurer;
123 
124     /**
125      * Close receipt date.
126     */
127     @JournalDate
128     private Date close;
129 
130     /**
131      * Day identifier.
132      */
133     private String day;
134 
135     private Integer version;
136 
137     /**
138      * List of products.
139      */
140     @Valid
141     private List<SaleProductInfo> saleProducts;
142 
143     /**
144      * List of print types.
145      */
146     @Valid
147     private List<PrintInfo> prints;
148 
149     /**
150      * List of payments.
151      */
152     @Valid
153     private List<PaymentInfo> payments;
154 
155     @NotNull
156     @Valid
157     private List<VatRateSumInfo> vatRateSums;
158 }