package com.topsun.posclient.sales.ui.table; import java.math.BigDecimal; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.viewers.ICellModifier; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.swt.widgets.TableItem; import com.topsun.posclient.common.AppConstants; import com.topsun.posclient.common.POSException; import com.topsun.posclient.common.service.IBaseService; import com.topsun.posclient.common.service.impl.BaseServiceImpl; import com.topsun.posclient.common.ui.utils.FormatUtils; import com.topsun.posclient.datamodel.Item; import com.topsun.posclient.sales.MessageResources; import com.topsun.posclient.sales.ui.gold.GoldSalesFacade; public class BookingCellModify implements ICellModifier { public TableViewer tableViewer; public BookingCellModify(TableViewer tableViewer){ this.tableViewer = tableViewer; } public boolean canModify(Object element, String property) { Item item = (Item)element; if(item.getItemType().equals(AppConstants.ITEM_TYPE_BOOKING)){ if("kezhong".equals(property)){ return true; } if("days".equals(property)){ return true; } if("cashier".equals(property)){return true;}; }else if(item.getItemType().equals(AppConstants.ITEM_TYPE_TIMELESS)){ if("code".equals(property)){ return true; } if("cashier".equals(property)){return true;}; }else if (item.getItemType().equals(AppConstants.ITEM_TYPE_CURRENTGOLD)){ if("cashier".equals(property)){return true;}; } return false; } public Object getValue(Object element, String property) { Item item = (Item)element; if("days".equals(property)){ if(item.getBookingDays() == null){ return ""; } return item.getBookingDays(); } if("kezhong".equals(property)){ if(item.getZDPZL() == null){ return ""; } return item.getZDPZL().toString(); } if("code".equals(property)){ if(item.getItemCode() == null){ return ""; } return item.getItemCode().toString(); } if("cashier".equals(property)){ // Map<Integer,User> map = POSClientApp.get().getUserRelation(); // Iterator<Integer> iterator = map.keySet().iterator(); // while(iterator.hasNext()){ // int s = iterator.next(); // User user = map.get(s); //// System.err.println(user.getId() + ":" + user.getUserName() + "itemCasher:" + item.getCashier()); // if(user.getId() == item.getCashier()){ // return s; // } // } return item.getCashierName(); } return ""; } public void modify(Object element, String property, Object value) { IBaseService baseService = new BaseServiceImpl(); if(element instanceof TableItem){ TableItem titem = (TableItem)element; Item item = (Item)titem.getData(); if("days".equals(property)){ if("".equals(value.toString().trim())){ return; }else{ item.setBookingDays(value.toString()); } tableViewer.update(item, null); } if("kezhong".equals(property)){ if("".equals(value.toString().trim())){ return; }else{ boolean flag = FormatUtils.chenckNumFormat(tableViewer.getTable(), value.toString(), "【克重】格式错误"); if(!flag){ return; } item.setZDPZL(new BigDecimal(value.toString())); item.setFactAmount(item.getPrice().multiply(item.getZDPZL())); item.setSalesAmount(item.getPrice().multiply(item.getZDPZL())); } tableViewer.update(item, null); } if("code".equals(property)){ if("".equals(value.toString().trim())){ return; }else{ try { Item input = baseService.getItemByBarCode(value.toString()); if(null == input){ MessageDialog.openError(tableViewer.getControl().getShell(), MessageResources.message_ui_tips, "单品不存在,请重新输入"); return; } if(!input.getMatkl().equals(item.getMatkl())){ MessageDialog.openError(tableViewer.getControl().getShell(), MessageResources.message_ui_tips, "物料组不相符,请重新输入"); return; } if(!(item.getZDPZL().compareTo(input.getZDPZL()) == 0)){ MessageDialog.openError(tableViewer.getControl().getShell(), MessageResources.message_ui_tips, "克重不相符,请重新输入"); return; } } catch (POSException e) { MessageDialog.openError(tableViewer.getControl().getShell(), MessageResources.message_ui_tips, e.getErrorMessage()); return; } item.setItemCode(value.toString()); } tableViewer.update(item, null); } if("cashier".equals(property)){ // Map<Integer,User> map = POSClientApp.get().getUserRelation(); // User user = map.get(value); // item.setCashier(user.getId()); boolean flag = FormatUtils.chenckNumFormat(tableViewer.getTable(), value.toString(), "【营业员】格式错误"); if(!flag){ return; } item.setCashierName(String.valueOf(value)); tableViewer.refresh(); } } GoldSalesFacade.caculatorGoldSalesPrice(); } }