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.POSException; import com.topsun.posclient.common.ProjectUtil; import com.topsun.posclient.common.service.IBaseService; import com.topsun.posclient.common.service.impl.BaseServiceImpl; import com.topsun.posclient.datamodel.Item; import com.topsun.posclient.datamodel.Material; import com.topsun.posclient.sales.MessageResources; import com.topsun.posclient.sales.ui.gold.GoldBuyBackFacade; /** * 回购表格修改 * * @author Dong * */ public class GoldBuyBackCellModify implements ICellModifier { public TableViewer tableViewer; public GoldBuyBackCellModify(TableViewer tableViewer){ this.tableViewer = tableViewer; } public boolean canModify(Object element, String property) { if("docNum".equals(property)){ return false; } if("price".equals(property)){ return false; } if("ZMDLSBQJ".equals(property)){ return false; } if("matnrName".equals(property)){ return false; } return true; } public Object getValue(Object element, String property) { Item item = (Item)element; if("invoceCode".equals(property)){ if(item.getInvoceCode() == null){ return ""; } return item.getInvoceCode(); } if("docNum".equals(property)){ if(item.getDocNum() == null){ return ""; } return item.getDocNum(); } if("MATNR".equals(property)){ if(item.getMATNR() == null){ return ""; } return item.getMATNR(); } if("matnrName".equals(property)){ if(item.getItemName() == null){ return ""; } return item.getItemName(); } if("ZDPYZL".equals(property)){ if(item.getZDPYZL() == null){ return "0.00"; } return item.getZDPYZL().toString(); } if("price".equals(property)){ if(item.getPrice() == null){ return "0.00"; } return ProjectUtil.formatString(item.getPrice().toString()).toString(); } if("ZMDLSBQJ".equals(property)){ if(item.getZMDLSBQJ() == null){ return "0.00"; } return ProjectUtil.formatString(item.getZMDLSBQJ().toString()).toString(); } return ""; } public void modify(Object element, String property, Object value) { if(element instanceof TableItem){ TableItem titem = (TableItem)element; Item item = (Item)titem.getData(); if("invoceCode".equals(property)){ if("".equals(value.toString().trim())){ return; }else{ item.setInvoceCode(value.toString()); } tableViewer.update(item, null); } if("docNum".equals(property)){ if("".equals(value.toString().trim())){ return; }else{ item.setDocNum(value.toString()); } tableViewer.update(item, null); } if("MATNR".equals(property)){ if("".equals(value.toString().trim())){ return; }else{ IBaseService baseService = new BaseServiceImpl(); item.setMATNR(value.toString()); BigDecimal goldP = new BigDecimal(0); String matnrName = ""; try { goldP = baseService.getGoldPriceByMtartCode(item.getMATNR()); Material material = baseService.getMaterialByMatnr(item.getMATNR()); matnrName = (null == material?"":material.getMaktx()); item.setMatkl(material.getMatkl()); } catch (POSException e) { MessageDialog.openError(tableViewer.getControl().getShell(), MessageResources.message_ui_tips, e.getErrorMessage()); return; } item.setPrice(goldP); item.setItemName(matnrName); tableViewer.update(item, null); } } if("ZDPYZL".equals(property)){ if("".equals(value.toString().trim())){ return; }else{ item.setZDPYZL(new BigDecimal(value.toString())); if(null == item.getMATNR() || "".equals(item.getMATNR())){ MessageDialog.openError(tableViewer.getControl().getShell(), MessageResources.message_ui_tips, "【物料编号】不能为空"); return; }else{ item.setZMDLSBQJ(item.getZDPYZL().multiply(item.getPrice())); item.setFactAmount(item.getZMDLSBQJ()); item.setSalesAmount(item.getFactAmount()); } } tableViewer.update(item, null); } if("price".equals(property)){ if("".equals(value.toString().trim())){ return; }else{ item.setPrice(new BigDecimal(value.toString())); } tableViewer.update(item, null); } if("ZMDLSBQJ".equals(property)){ if("".equals(value.toString().trim())){ return; }else{ item.setZMDLSBQJ(new BigDecimal(value.toString())); item.setFactAmount(item.getZMDLSBQJ()); } tableViewer.update(item, null); } GoldBuyBackFacade.caculatorGoldSalesPrice(); tableViewer.refresh(); } } }