diff --git a/src/main/java/com/utopiaindustries/controller/PurchaseOrderCTPController.java b/src/main/java/com/utopiaindustries/controller/PurchaseOrderCTPController.java index a5ddee9..6656c04 100644 --- a/src/main/java/com/utopiaindustries/controller/PurchaseOrderCTPController.java +++ b/src/main/java/com/utopiaindustries/controller/PurchaseOrderCTPController.java @@ -2,13 +2,13 @@ package com.utopiaindustries.controller; import com.utopiaindustries.auth.PurchaseOrderCTPRole; import com.utopiaindustries.model.ctp.JobCard; +import com.utopiaindustries.model.ctp.PurchaseOrderCTP; import com.utopiaindustries.service.PurchaseOrderCTPService; import com.utopiaindustries.util.StringUtils; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.servlet.mvc.support.RedirectAttributes; import java.time.LocalDate; import java.util.List; @@ -37,7 +37,7 @@ public class PurchaseOrderCTPController { model.addAttribute("purchaseOrder", purchaseOrderCTPService.getAllPurchaseOrderCtp(purchaseOrderCode, articleName, startDate.toString(), endDate.toString(), limit) ); model.addAttribute("startDate", startDate); model.addAttribute("endDate", endDate); - return "job-card-list"; + return "/purchaseOrder/purchase-order-list"; } @GetMapping( "/new" ) @@ -45,4 +45,46 @@ public class PurchaseOrderCTPController { model.addAttribute("purchaseOrder", purchaseOrderCTPService.createNewPurchaseOrderCTP() ); return "/purchaseOrder/purchase-order-form"; } + + @GetMapping( value = "/edit/{id}" ) + public String showJobCardEditForm( @PathVariable("id") long id, + Model model ){ + model.addAttribute("purchaseOrder", purchaseOrderCTPService.searchPurchaseOrderById( id ) ); + return "/purchaseOrder/purchase-order-form"; + } + + /* + * draft + * */ + @PostMapping( value ="/edit" , params = "user=draft" ) + public String saveJobCard( @ModelAttribute PurchaseOrderCTP purchaseOrderCTP, + RedirectAttributes redirectAttributes, + Model model ){ + try { + purchaseOrderCTP.setStatus( PurchaseOrderCTP.Status.DRAFT.name() ); + purchaseOrderCTPService.save( purchaseOrderCTP ); + redirectAttributes.addFlashAttribute("success", "Successfully saved!" ); + } catch ( Exception ex ){ + redirectAttributes.addFlashAttribute("error", ex.getMessage() ); + } + return "redirect:/purchase-order"; + } + + @PostMapping( value ="/edit" , params = "user=post" ) + public String postJobCard( @ModelAttribute PurchaseOrderCTP purchaseOrderCTP, + RedirectAttributes redirectAttributes, + Model model ){ + + try { + purchaseOrderCTP.setStatus( PurchaseOrderCTP.Status.POSTED.name() ); + purchaseOrderCTPService.save( purchaseOrderCTP ); + redirectAttributes.addFlashAttribute("success", "Successfully saved!" ); + } catch ( Exception ex ){ + redirectAttributes.addFlashAttribute("error", ex.getMessage() ); + } + return "redirect:/purchase-order"; + } + + + } diff --git a/src/main/java/com/utopiaindustries/dao/ctp/PurchaseOrderCTPDao.java b/src/main/java/com/utopiaindustries/dao/ctp/PurchaseOrderCTPDao.java index 2e230a4..686aaef 100644 --- a/src/main/java/com/utopiaindustries/dao/ctp/PurchaseOrderCTPDao.java +++ b/src/main/java/com/utopiaindustries/dao/ctp/PurchaseOrderCTPDao.java @@ -1,7 +1,9 @@ package com.utopiaindustries.dao.ctp; +import com.utopiaindustries.dao.uind.PurchaseOrderRowMapper; import com.utopiaindustries.model.ctp.JobCard; import com.utopiaindustries.model.ctp.PurchaseOrderCTP; +import com.utopiaindustries.model.uind.PurchaseOrder; import com.utopiaindustries.util.KeyHolderFunctions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; @@ -36,6 +38,7 @@ public class PurchaseOrderCTPDao { "status = VALUES(status)", TABLE_NAME); private final String SELECT_BY_LIMIT = String.format( "SELECT * FROM %s WHERE created_by = :created_by ORDER BY id ASC limit :limit", TABLE_NAME ); + private final String SELECT_BY_TERM = String.format( "SELECT * FROM %s WHERE purchase_order_code LIKE :term limit 100 offset 0", TABLE_NAME ); // prepare query params @@ -109,4 +112,13 @@ public class PurchaseOrderCTPDao { params.addValue("limit", limit.intValue()); return namedParameterJdbcTemplate.query( SELECT_ALL_QUERY_WITH_LIMIT, params, new PurchaseOrderCTPRowMapper() ); } + + /* + * find by term + * */ + public List findByTerm(String term ){ + MapSqlParameterSource params = new MapSqlParameterSource(); + params.addValue("term", "%" + term + "%" ); + return namedParameterJdbcTemplate.query( SELECT_BY_TERM, params, new PurchaseOrderCTPRowMapper() ); + } } diff --git a/src/main/java/com/utopiaindustries/model/Roles.java b/src/main/java/com/utopiaindustries/model/Roles.java index 69aba63..7a8abbd 100644 --- a/src/main/java/com/utopiaindustries/model/Roles.java +++ b/src/main/java/com/utopiaindustries/model/Roles.java @@ -9,5 +9,6 @@ public enum Roles { ROLE_QUALITY_CONTROL, ROLE_FINISHING, ROLE_PACKAGING, - ROLE_REPORTING + ROLE_REPORTING, + ROLE_PURCHASE_ORDER } diff --git a/src/main/java/com/utopiaindustries/restcontroller/PurchaseOrderRestController.java b/src/main/java/com/utopiaindustries/restcontroller/PurchaseOrderRestController.java index 9c4c3d7..e476971 100644 --- a/src/main/java/com/utopiaindustries/restcontroller/PurchaseOrderRestController.java +++ b/src/main/java/com/utopiaindustries/restcontroller/PurchaseOrderRestController.java @@ -1,6 +1,8 @@ package com.utopiaindustries.restcontroller; +import com.utopiaindustries.model.ctp.PurchaseOrderCTP; import com.utopiaindustries.model.uind.PurchaseOrder; +import com.utopiaindustries.service.PurchaseOrderCTPService; import com.utopiaindustries.service.PurchaseOrderService; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -14,9 +16,11 @@ import java.util.List; public class PurchaseOrderRestController { private final PurchaseOrderService purchaseOrderService; + private final PurchaseOrderCTPService purchaseOrderCTPService; - public PurchaseOrderRestController(PurchaseOrderService purchaseOrderService) { + public PurchaseOrderRestController(PurchaseOrderService purchaseOrderService, PurchaseOrderCTPService purchaseOrderCTPService) { this.purchaseOrderService = purchaseOrderService; + this.purchaseOrderCTPService = purchaseOrderCTPService; } /* @@ -26,4 +30,12 @@ public class PurchaseOrderRestController { public List findByTerm(@RequestParam("term") String term ) { return purchaseOrderService.findByTerm( term ); } + + /* + * search by term in ctp purchase order table + * */ + @GetMapping( "/ctp-po-search" ) + public List findByTermInCtpPurchaseOrderTable(@RequestParam("term") String term ) { + return purchaseOrderCTPService.findByTerm( term ); + } } diff --git a/src/main/java/com/utopiaindustries/service/InventoryAccountService.java b/src/main/java/com/utopiaindustries/service/InventoryAccountService.java index 70d2af4..d35a7bf 100644 --- a/src/main/java/com/utopiaindustries/service/InventoryAccountService.java +++ b/src/main/java/com/utopiaindustries/service/InventoryAccountService.java @@ -71,11 +71,7 @@ public class InventoryAccountService { } public List findInventoryAccounts(){ - List accounts = inventoryAccountDAO.findAll(); - for( InventoryAccount account : accounts ){ - account.setLocationTitle( locationSiteDAO.find( account.getLocationSiteId() ).getTitle() ); - } - return accounts; + return inventoryAccountDAO.findAll(); } public List findInventoryAccountsByFilter(String id, String title, String active, String createdBy, String startDate, String endDate, diff --git a/src/main/java/com/utopiaindustries/service/JobCardService.java b/src/main/java/com/utopiaindustries/service/JobCardService.java index b3e1966..42a0eb0 100644 --- a/src/main/java/com/utopiaindustries/service/JobCardService.java +++ b/src/main/java/com/utopiaindustries/service/JobCardService.java @@ -149,20 +149,7 @@ public class JobCardService { for (JobCardItem item : jobCard.getItems()) { item.setJobCardId(jobCardId); long itemId = jobCardItemDAO.save(item); - for (CutPiece cutPiece : item.getCutPieces()) { - cutPiece.setJobCardItemId(itemId); - if (!skuCutPiecesDAO.doesExist(cutPiece.getType(), item.getSku())){ - SkuCutPieces skuCutPieces = new SkuCutPieces(); - skuCutPieces.setType(cutPiece.getType()); - skuCutPieces.setSku(item.getSku()); - //save cut-piece for sku next time fetch - skuCutPiecesDAO.save(skuCutPieces); - } - cutPieces.add(cutPiece); - } } - // save all pieces - cutPieceDAO.saveAll(cutPieces); } } diff --git a/src/main/java/com/utopiaindustries/service/PurchaseOrderCTPService.java b/src/main/java/com/utopiaindustries/service/PurchaseOrderCTPService.java index 306c795..71bb926 100644 --- a/src/main/java/com/utopiaindustries/service/PurchaseOrderCTPService.java +++ b/src/main/java/com/utopiaindustries/service/PurchaseOrderCTPService.java @@ -2,6 +2,7 @@ package com.utopiaindustries.service; import com.utopiaindustries.dao.ctp.PurchaseOrderCTPDao; import com.utopiaindustries.model.ctp.*; +import com.utopiaindustries.model.uind.PurchaseOrder; import com.utopiaindustries.querybuilder.ctp.JobCardQueryBuilder; import com.utopiaindustries.querybuilder.ctp.PurchaseOrderCTPQueryBuilder; import com.utopiaindustries.util.StringUtils; @@ -32,7 +33,7 @@ public class PurchaseOrderCTPService { } /* - * create new job card + * create new purchase * */ public PurchaseOrderCTP createNewPurchaseOrderCTP() { Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); @@ -43,27 +44,27 @@ public class PurchaseOrderCTPService { } /* - * save card + * save purchase order for ctp * */ @Transactional( rollbackFor = Exception.class ) public void save(PurchaseOrderCTP purchaseOrderCTP) { purchaseOrderCTPDao.save(purchaseOrderCTP); } - public List getAllPurchaseOrderCtp(String purchaseOrderCode, String articleName, String StartDate, String EndDate, Long limit) { + public List getAllPurchaseOrderCtp(String purchaseOrderCode, String articleName, String startDate, String endDate, Long limit) { Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); List list = new ArrayList<>(); String createdBy = authentication.getName(); if( limit == null ){ limit = 100L; } - if( !StringUtils.isAnyNotNullOrEmpty(purchaseOrderCode, articleName) ){ + if(StringUtils.isAnyNotNullOrEmpty(purchaseOrderCode, articleName,startDate,endDate) ){ for (GrantedAuthority role : authentication.getAuthorities()){ if (role.toString().equals("ROLE_ADMIN")){ createdBy = ""; } } - String query = PurchaseOrderCTPQueryBuilder.buildQuery(purchaseOrderCode, articleName, createdBy, StartDate, EndDate, limit ); + String query = PurchaseOrderCTPQueryBuilder.buildQuery(purchaseOrderCode, articleName, createdBy, startDate, endDate, limit ); System.out.println( query ); list = purchaseOrderCTPDao.findByQuery( query ); }else { @@ -72,4 +73,8 @@ public class PurchaseOrderCTPService { return list; } + public List findByTerm(String term ){ + return purchaseOrderCTPDao.findByTerm( term ); + } + } diff --git a/src/main/resources/static/js/job-card-form.js b/src/main/resources/static/js/job-card-form.js index 6cc224c..72b106c 100644 --- a/src/main/resources/static/js/job-card-form.js +++ b/src/main/resources/static/js/job-card-form.js @@ -219,7 +219,11 @@ data: { jobCard: {}, items: [], - }, + purchaseOrderID:0, + articleName: '', + purchaseOrderQuantity: 0, + purchaseOrderCode: '', + }, methods: { addItem: function (e) { e.preventDefault(); @@ -259,10 +263,19 @@ } } return false; + }, onPoSelect(id,purchaseOrder) { + this.purchaseOrderID = id, + this.articleName = purchaseOrder.articleName, + this.purchaseOrderQuantity = purchaseOrder.purchaseOrderQuantity, + this.purchaseOrderCode = purchaseOrder.purchaseOrderCode } }, mounted: function () { this.jobCard = window.ctp.jobCard; + this.purchaseOrderID = this.jobCard.purchaseOrderId, + this.articleName = this.jobCard.articleName, + this.purchaseOrderQuantity = this.jobCard.poQuantity, + this.purchaseOrderCode = this.jobCard.purchaseOrderTitle this.items = this.jobCard.items; } diff --git a/src/main/resources/static/js/vue-components.js b/src/main/resources/static/js/vue-components.js index 5af935d..c667641 100644 --- a/src/main/resources/static/js/vue-components.js +++ b/src/main/resources/static/js/vue-components.js @@ -3592,8 +3592,50 @@ if ( typeof Vue !== 'undefined' ) { }); + /* + * search po + * */ + Vue.component('search-ctp-po',{ + mixins: [searchComponentMixin], + data: { + purchaseOrderCode: '', + }, + methods : { + getSearchUrl : function () { + return `/ctp/rest/purchase-orders/ctp-po-search?term=${encodeURIComponent( this.list.term )}` + }, + getEmittedEventName: function() { + return 'select-po'; + }, + getTitle: function( po ) { + this.purchaseOrderCode = po.purchaseOrderCode; + return this.purchaseOrderCode; + } + }, + props: { + labelText: { + default: 'Search PO ' + }, + titleFieldName: { + default: 'poCode' + }, + idFieldName: { + default: 'poId' + }, + codeFieldName : { + default : 'poCode' + }, + received : { + default : false + }, + inputMode: { + default : 'none' + }, + } + }) -Vue.component('search-item', { + + Vue.component('search-item', { props: { label: { type: String, diff --git a/src/main/resources/templates/_fragments.html b/src/main/resources/templates/_fragments.html index 833f851..cc3a4f5 100644 --- a/src/main/resources/templates/_fragments.html +++ b/src/main/resources/templates/_fragments.html @@ -31,10 +31,10 @@