diff --git a/src/main/java/com/utopiaindustries/dao/ctp/StoreItemDao.java b/src/main/java/com/utopiaindustries/dao/ctp/StoreItemDao.java index 2ae579d..a34efd9 100644 --- a/src/main/java/com/utopiaindustries/dao/ctp/StoreItemDao.java +++ b/src/main/java/com/utopiaindustries/dao/ctp/StoreItemDao.java @@ -28,21 +28,18 @@ public class StoreItemDao { private static final String INSERT_QUERY = String.format( "INSERT INTO %s (" + "id, item_id, sku, barcode, job_card_id, created_at, created_by, " + - "finish_item_id, account_id, bundle_id" + + "finish_item_id, account_id, bundle_id, reject_reason" + ") VALUES (" + ":id, :item_id, :sku, :barcode, :job_card_id, :created_at, :created_by, " + - ":finish_item_id, :account_id, :bundle_id" + + ":finish_item_id, :account_id, :bundle_id, :reject_reason" + ") ON DUPLICATE KEY UPDATE " + "item_id = VALUES(item_id), sku = VALUES(sku), barcode = VALUES(barcode), " + "job_card_id = VALUES(job_card_id), created_at = VALUES(created_at), created_by = VALUES(created_by), " + - "finish_item_id = VALUES(finish_item_id), account_id = VALUES(account_id), bundle_id = VALUES(bundle_id)", + "finish_item_id = VALUES(finish_item_id), account_id = VALUES(account_id), bundle_id = VALUES(bundle_id), reject_reason = VALUES(reject_reason)", TABLE_NAME ); - private static final String SELECT_BY_DATE_AND_IDs = String.format( - "SELECT COUNT(*) FROM %s WHERE (:start_date IS NULL OR created_at >= :start_date) AND created_at <= :end_date AND id IN (:ids)", - TABLE_NAME - ); + private static final String SELECT_BY_DATE_AND_IDs = String.format("SELECT COUNT(*) FROM %s WHERE (:start_date IS NULL OR created_at >= :start_date) AND created_at <= :end_date AND id IN (:ids)", TABLE_NAME); public StoreItemDao(NamedParameterJdbcTemplate namedParameterJdbcTemplate) { this.namedParameterJdbcTemplate = namedParameterJdbcTemplate; @@ -59,7 +56,8 @@ public class StoreItemDao { .addValue("created_by", item.getCreatedBy()) .addValue("finish_item_id", item.getFinishedItemId()) .addValue("account_id", item.getAccountId()) - .addValue("bundle_id", item.getBundleId()); + .addValue("bundle_id", item.getBundleId()) + .addValue("reject_reason", item.getRejectedReason()); } public StoreItem find(long id) { diff --git a/src/main/java/com/utopiaindustries/dao/ctp/StoreItemRowMapper.java b/src/main/java/com/utopiaindustries/dao/ctp/StoreItemRowMapper.java index aee77de..cbc987e 100644 --- a/src/main/java/com/utopiaindustries/dao/ctp/StoreItemRowMapper.java +++ b/src/main/java/com/utopiaindustries/dao/ctp/StoreItemRowMapper.java @@ -21,6 +21,7 @@ public class StoreItemRowMapper implements RowMapper { item.setFinishedItemId(rs.getLong("finish_item_id")); item.setAccountId(rs.getLong("account_id")); item.setBundleId(rs.getLong("bundle_id")); + item.setRejectedReason(rs.getString("reject_reason")); return item; } } \ No newline at end of file diff --git a/src/main/java/com/utopiaindustries/model/ctp/FinishedItemWrapper.java b/src/main/java/com/utopiaindustries/model/ctp/FinishedItemWrapper.java index c9ec995..8484830 100644 --- a/src/main/java/com/utopiaindustries/model/ctp/FinishedItemWrapper.java +++ b/src/main/java/com/utopiaindustries/model/ctp/FinishedItemWrapper.java @@ -6,6 +6,7 @@ public class FinishedItemWrapper { private String qaStatus; private Long accountId; + private String rejectReason; private List items; @@ -33,6 +34,14 @@ public class FinishedItemWrapper { this.accountId = accountId; } + public String getRejectReason() { + return rejectReason; + } + + public void setRejectReason(String rejectReason) { + this.rejectReason = rejectReason; + } + @Override public String toString() { return "FinishedItemWrapper{" + diff --git a/src/main/java/com/utopiaindustries/model/ctp/StoreItem.java b/src/main/java/com/utopiaindustries/model/ctp/StoreItem.java index f8a5f05..5ceabb2 100644 --- a/src/main/java/com/utopiaindustries/model/ctp/StoreItem.java +++ b/src/main/java/com/utopiaindustries/model/ctp/StoreItem.java @@ -18,6 +18,7 @@ public class StoreItem implements InventoryArtifact { private long finishedItemId; private long bundleId; private long accountId; + private String rejectedReason; @Override @@ -122,4 +123,29 @@ public class StoreItem implements InventoryArtifact { public void setAccountId(long accountId) { this.accountId = accountId; } + + public String getRejectedReason() { + return rejectedReason; + } + + public void setRejectedReason(String rejectedReason) { + this.rejectedReason = rejectedReason; + } + + @Override + public String toString() { + return "StoreItem{" + + "id=" + id + + ", itemId=" + itemId + + ", sku='" + sku + '\'' + + ", barcode='" + barcode + '\'' + + ", jobCardId=" + jobCardId + + ", createdAt=" + createdAt + + ", createdBy='" + createdBy + '\'' + + ", finishedItemId=" + finishedItemId + + ", bundleId=" + bundleId + + ", accountId=" + accountId + + ", rejectedReason='" + rejectedReason + '\'' + + '}'; + } } diff --git a/src/main/java/com/utopiaindustries/service/InventoryService.java b/src/main/java/com/utopiaindustries/service/InventoryService.java index 5831ae7..64cd142 100644 --- a/src/main/java/com/utopiaindustries/service/InventoryService.java +++ b/src/main/java/com/utopiaindustries/service/InventoryService.java @@ -741,7 +741,7 @@ public class InventoryService { if (finishedItem.getQaStatus().equalsIgnoreCase("REJECT")) { // create OUT and IN transactions for FI - StoreItem storeItem = (createStoreItems(finishedItem)); + StoreItem storeItem = (createStoreItems(finishedItem, wrapper.getRejectReason())); storeItem.setId(storeItemDao.save(storeItem)); if (lastInvTransaction != null) { // OUT @@ -751,7 +751,7 @@ public class InventoryService { // IN createInventoryTransactionLeg(transaction, storeItem, toAccount, InventoryTransactionLeg.Type.IN.name(), InventoryArtifactType.STORED_ITEM.name()); } - finishedItem.setIsSegregated(false); + finishedItem.setIsSegregated(true); finishedItem.setStore(true); storeItems.add(storeItem); } @@ -788,7 +788,7 @@ public class InventoryService { return packagingItems; } - private StoreItem createStoreItems(FinishedItem finishedItem) { + private StoreItem createStoreItems(FinishedItem finishedItem, String reason) { Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); StoreItem storeItem = new StoreItem(); storeItem.setItemId(finishedItem.getItemId()); @@ -799,6 +799,7 @@ public class InventoryService { storeItem.setBarcode(finishedItem.getBarcode()); storeItem.setCreatedAt(LocalDateTime.now()); storeItem.setCreatedBy(authentication.getName()); + storeItem.setRejectedReason(reason); return storeItem; } } diff --git a/src/main/resources/static/js/packaging/packaging-item-form.js b/src/main/resources/static/js/packaging/packaging-item-form.js index 2139ef3..96c7baf 100644 --- a/src/main/resources/static/js/packaging/packaging-item-form.js +++ b/src/main/resources/static/js/packaging/packaging-item-form.js @@ -76,7 +76,8 @@ let app = new Vue({ el : '#packagingApp', data : { - items : [] + items : [], + reason: '', }, methods : { onItemSelect: function (id, item) { @@ -90,6 +91,18 @@ const uniqueIds = new Set(ids); return ids.length !== uniqueIds.size; }, + submitWithRejectReason: function (reason) { + this.reason = reason; + this.$nextTick(() => { + const form = document.getElementById('packagingApp'); + if (form.checkValidity()) { + form.submit(); + } else { + form.reportValidity(); + } + }); + } + }, mounted : function () { console.log( this.$accounts ) diff --git a/src/main/resources/static/js/qc/finished-items-qc-form.js b/src/main/resources/static/js/qc/finished-items-qc-form.js index 7b640b7..4c04e54 100644 --- a/src/main/resources/static/js/qc/finished-items-qc-form.js +++ b/src/main/resources/static/js/qc/finished-items-qc-form.js @@ -86,11 +86,16 @@ return ids.length !== uniqueIds.size; }, submitWithQaStatus: function (status) { - this.QaStatus = status; - this.$nextTick(() => { - document.getElementById('qcForm').submit(); - }); - } + this.QaStatus = status; + this.$nextTick(() => { + const form = document.getElementById('qcForm'); + if (form.checkValidity()) { + form.submit(); + } else { + form.reportValidity(); + } + }); + } }, mounted: function () { diff --git a/src/main/resources/templates/reporting/po-store-items-table.html b/src/main/resources/templates/reporting/po-store-items-table.html new file mode 100644 index 0000000..9a3c734 --- /dev/null +++ b/src/main/resources/templates/reporting/po-store-items-table.html @@ -0,0 +1,96 @@ + + + + + Title + + + +
+
+
+ + + + + + + + + + + + + + + +
Cut To PackKnittingDying
+
No Inventory Transactions found.
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/main/resources/templates/store/receive-inventory-form.html b/src/main/resources/templates/store/receive-inventory-form.html index 5170b90..3d8194f 100644 --- a/src/main/resources/templates/store/receive-inventory-form.html +++ b/src/main/resources/templates/store/receive-inventory-form.html @@ -21,6 +21,7 @@ v-on:finished-item-select="onItemSelect"> +