Subversion Repositories SmartDukaan

Rev

Rev 37615 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 37615 Rev 37616
Line 137... Line 137...
137
            if (item == null) {
137
            if (item == null) {
138
                LOGGER.info("SKIP    {} - item {} not found", invoiceNumber, lineItem.getItemId());
138
                LOGGER.info("SKIP    {} - item {} not found", invoiceNumber, lineItem.getItemId());
139
                return false;
139
                return false;
140
            }
140
            }
141
 
141
 
142
            String serialNumber = lineItem.getSerialNumber();
-
 
143
            boolean serialized = ItemType.SERIALIZED.equals(item.getType());
142
            boolean serialized = ItemType.SERIALIZED.equals(item.getType());
-
 
143
            int quantity = lineItem.getQuantity();
-
 
144
 
-
 
145
            // A line item carries one serial per unit, comma separated - never a single serial for the line.
144
            // Receiving a serialized unit without its serial would create stock no scan could ever match.
146
            // Handing the whole field over as one serial stores a string no scan can match and records the
-
 
147
            // line as one unit, so the serials are split out and counted against the quantity here.
-
 
148
            List<String> serialNumbers = new ArrayList<>();
-
 
149
            if (serialized) {
-
 
150
                String serialField = lineItem.getSerialNumber();
-
 
151
                if (serialField != null) {
-
 
152
                    for (String serialNumber : serialField.split(",")) {
145
            if (serialized && (serialNumber == null || serialNumber.trim().isEmpty())) {
153
                        if (!serialNumber.trim().isEmpty()) {
-
 
154
                            serialNumbers.add(serialNumber.trim());
-
 
155
                        }
-
 
156
                    }
-
 
157
                }
-
 
158
                if (serialNumbers.size() != quantity) {
146
                LOGGER.info("SKIP    {} - serialized item {} on order {} has no serial number",
159
                    LOGGER.info("SKIP    {} - serialized item {} on order {} has {} serial(s) for {} unit(s)",
147
                        invoiceNumber, item.getId(), order.getId());
160
                            invoiceNumber, item.getId(), order.getId(), serialNumbers.size(), quantity);
148
                return false;
161
                    return false;
-
 
162
                }
149
            }
163
            }
150
 
164
 
151
            ReceiptLine line = linesByItem.get(lineItem.getItemId());
165
            ReceiptLine line = linesByItem.get(lineItem.getItemId());
152
            if (line == null) {
166
            if (line == null) {
153
                line = new ReceiptLine();
167
                line = new ReceiptLine();
154
                line.itemId = lineItem.getItemId();
168
                line.itemId = lineItem.getItemId();
155
                line.serialized = serialized;
169
                line.serialized = serialized;
156
                line.rate = lineItem.getUnitPrice();
170
                line.rate = lineItem.getUnitPrice();
157
                linesByItem.put(line.itemId, line);
171
                linesByItem.put(line.itemId, line);
158
            }
172
            }
159
            line.qty += lineItem.getQuantity();
173
            line.qty += quantity;
160
            if (serialized) {
-
 
161
                line.serialNumbers.add(serialNumber.trim());
174
            line.serialNumbers.addAll(serialNumbers);
162
            }
-
 
163
        }
175
        }
164
 
176
 
165
        int numItems = 0;
177
        int numItems = 0;
166
        int serialisedUnits = 0;
178
        int serialisedUnits = 0;
167
        BigDecimal value = BigDecimal.ZERO;
179
        BigDecimal value = BigDecimal.ZERO;