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();
}
}
}