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