package com.topsun.posclient.sales.ui.view; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Map.Entry; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.viewers.CellEditor; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.jface.viewers.TextCellEditor; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Group; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Table; import org.eclipse.swt.widgets.TableColumn; import org.eclipse.swt.widgets.Text; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.part.ViewPart; import com.co.lane.util.StringUtil; import com.topsun.posclient.common.AppConstants; import com.topsun.posclient.common.POSClientApp; import com.topsun.posclient.common.POSException; import com.topsun.posclient.common.core.BarcodeListenetManager; import com.topsun.posclient.common.core.IBarcodeListener; import com.topsun.posclient.common.core.keyboard.SoftKeyUtil; import com.topsun.posclient.common.listener.IKeyListener; import com.topsun.posclient.common.listener.KeyListenerManager; import com.topsun.posclient.common.ui.style.CommonCss; import com.topsun.posclient.common.ui.utils.TableUtils; import com.topsun.posclient.common.ui.utils.ThemeUtils; import com.topsun.posclient.datamodel.Item; import com.topsun.posclient.datamodel.Material; import com.topsun.posclient.datamodel.PartSales; import com.topsun.posclient.datamodel.User; import com.topsun.posclient.sales.MessageResources; import com.topsun.posclient.sales.core.service.IGoldBookingService; import com.topsun.posclient.sales.core.service.impl.GoldBookingServiceImpl; import com.topsun.posclient.sales.dialog.BookingDialog; import com.topsun.posclient.sales.dialog.GoldSalesPayDialog; import com.topsun.posclient.sales.dialog.GoldTimeOutPayDialog; import com.topsun.posclient.sales.ui.gold.CommonFacade; import com.topsun.posclient.sales.ui.gold.GoldSalesFacade; import com.topsun.posclient.sales.ui.gold.GoldSalesManager; import com.topsun.posclient.sales.ui.table.BookingCellModify; import com.topsun.posclient.sales.ui.table.GoldBookingTableContentProvider; import com.topsun.posclient.sales.ui.table.GoldBookingTableLableProvider; /** * 投资金条预订 * * @author Dong * */ public class GoldBookingView extends ViewPart implements IKeyListener,IBarcodeListener { public IGoldBookingService goldBookingService = new GoldBookingServiceImpl(); List<Item> itemsList = new ArrayList<Item>(); public PartSales partSales; public Text salesDate; public Text docNum;//单据号 public Text bookDocNum;//预订单据号 public Text barCode; public TableViewer tableViewer; public Text numberTotal; public Text priceTotal; public int controlVerticalAlignment = 3; public Button cleanAll; public TableViewer promotionTableView; private Label totlePrice; private Text matnrCode;//物料编号 private TableColumn last; private TableColumn first; private Button goldSalesBtn;//现货结算按钮 private Button goldTimeoutBtn;//到期开票按钮 private Button goldBookingBtn;//预订结算按钮 private Button queryBtn;//查询按钮 private Button addBookingBtn;//添加预订按钮 private Button addCurrentProductBtn;//添加现货按钮 public Text getNumberTotal() { return numberTotal; } public void setNumberTotal(Text numberTotal) { this.numberTotal = numberTotal; } public Text getPriceTotal() { return priceTotal; } public void setPriceTotal(Text priceTotal) { this.priceTotal = priceTotal; } public GoldBookingView() { } /** * 商品信息 * @param parent */ private void buildProductInfo(Composite parent){ KeyListenerManager.getInstance().addKeyListener(this); BarcodeListenetManager.getInstance().addKeyListener(this); Group productInfo = new Group(parent, SWT.NONE); productInfo.setText("单品列表"); GridLayout gridLayout = new GridLayout(1,false); productInfo.setLayout(gridLayout); GridData data = new GridData(GridData.FILL_BOTH); productInfo.setLayoutData(data); buildPrintInfo(productInfo); tableViewer = new TableViewer(productInfo,SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER|SWT.FULL_SELECTION); tableViewer.setContentProvider(new GoldBookingTableContentProvider()); tableViewer.setLabelProvider(new GoldBookingTableLableProvider()); final Table table = tableViewer.getTable(); TableUtils.setTabelHeight(table); table.setBackground(ThemeUtils.getCurrent().getTableBackGround()); table.setFont(CommonCss.getTableHeaderFont(parent.getDisplay())); String[] cloumsProperties = new String[]{"0","1","code","kezhong","days","5","6","7","cashier"}; tableViewer.setColumnProperties(cloumsProperties); table.setFont(CommonCss.getTableHeaderFont(parent.getDisplay())); CellEditor[] editors = new CellEditor[12]; editors[0] = new TextCellEditor(table); editors[1] = new TextCellEditor(table); editors[2] = new TextCellEditor(table); editors[3] = new TextCellEditor(table); editors[4] = new TextCellEditor(table); editors[5] = new TextCellEditor(table); editors[6] = new TextCellEditor(table); editors[7] = new TextCellEditor(table); List<String> userNames = new ArrayList<String>(); Map<Integer,User> map = POSClientApp.get().getUserRelation(); Iterator<Entry<Integer, User>> it = map.entrySet().iterator(); while (it.hasNext()) { Map.Entry<Integer, User> e = (Map.Entry<Integer, User>) it.next(); userNames.add(e.getValue().getUserName()); } // editors[8] = new ComboBoxCellEditor(table, userNames.toArray(new String[]{}),SWT.READ_ONLY); editors[8] = new TextCellEditor(table); tableViewer.setCellEditors(editors); tableViewer.setCellModifier(new BookingCellModify(tableViewer)); table.setLinesVisible(false); table.setHeaderVisible(true); TableUtils.addCellEditSupport(editors[3]); TableUtils.addCellEditSupport(editors[4]); TableUtils.addTableEditSupport(tableViewer,new int[]{3,4}); { GridData tableData = new GridData(GridData.FILL_HORIZONTAL); tableData.heightHint = 270; tableData.horizontalSpan = 4; table.setLayoutData(tableData); } { first = new TableColumn(table, SWT.NONE); first.setWidth(150); first.setText("物料号"); } { TableColumn column = new TableColumn(table, SWT.NONE); column.setWidth(150); column.setText("品名"); } { TableColumn column = new TableColumn(table, SWT.NONE); column.setWidth(150); column.setText("商品编码"); } { TableColumn column = new TableColumn(table, SWT.NONE); column.setWidth(130); column.setText("克重(g)"); } { TableColumn column = new TableColumn(table, SWT.NONE); column.setWidth(130); column.setText("预订天数"); } { TableColumn column = new TableColumn(table, SWT.NONE); column.setWidth(130); column.setText("单价"); } { TableColumn column = new TableColumn(table, SWT.NONE); column.setWidth(130); column.setText("应售"); } { TableColumn column = new TableColumn(table, SWT.NONE); column.setWidth(130); column.setText("实售"); } { last = new TableColumn(table, SWT.NONE); last.setWidth(130); last.setText("营业员"); } } private void buildPrintInfo(Composite parent){ Composite operationComposite = new Composite(parent, SWT.NONE); operationComposite.setLayout(new GridLayout(5,false)); { Button button = new Button(operationComposite, SWT.NONE); GridData data1 = new GridData(); data1.heightHint = 45; data1.widthHint = 80; button.setLayoutData(data1); button.setText("删除"); GoldSalesFacade.delGoldSaleItemListener(button); } { Button button = new Button(operationComposite, SWT.NONE); GridData data1 = new GridData(); data1.heightHint = 45; data1.widthHint = 80; button.setLayoutData(data1); button.setText("清空"); button.addSelectionListener(new SelectionListener() { public void widgetSelected(SelectionEvent e) { tableViewer.setInput(null); GoldSalesFacade.caculatorGoldSalesPrice(); //点击清空所有按钮可用 GoldSalesManager.getInstance().getGoldSalesBtn().setEnabled(true); GoldSalesManager.getInstance().getGoldBookingBtn().setEnabled(true); GoldSalesManager.getInstance().getGoldTimeoutBtn().setEnabled(true); GoldSalesManager.getInstance().getQueryBtn().setEnabled(true); GoldSalesManager.getInstance().getAddBookingBtn().setEnabled(true); GoldSalesManager.getInstance().getAddCurrentProductBtn().setEnabled(true); } public void widgetDefaultSelected(SelectionEvent e) { } }); } { Label label = new Label(operationComposite, SWT.NONE); label.setFont(CommonCss.getDefaultFont(parent.getDisplay())); GridData data1 = new GridData(); label.setLayoutData(data1); label.setText("预订单号:"); } { bookDocNum = new Text(operationComposite, SWT.BORDER); GridData data = CommonCss.getTextData(160); bookDocNum.setLayoutData(data); bookDocNum.setFont(CommonCss.getDefaultFont(parent.getDisplay())); SoftKeyUtil.showSoftKey(bookDocNum); } { queryBtn = new Button(operationComposite, SWT.NONE); queryBtn.setFont(CommonCss.getDefaultFont(parent.getDisplay())); queryBtn.setText("查询"); GridData data = new GridData(); data.heightHint = 45; data.widthHint = 100; queryBtn.setLayoutData(data); queryBtn.addSelectionListener(new SelectionListener(){ public void widgetSelected(SelectionEvent e) { Button saveButton = (Button)e.getSource(); String inputBookDocNum = bookDocNum.getText(); if(StringUtil.isEmpty(inputBookDocNum)){ MessageDialog.openError(saveButton.getShell(), MessageResources.message_ui_tips, "【预订单号】不能为空"); bookDocNum.forceFocus(); return; } List<Item> itemList = new ArrayList<Item>(); try { itemList = goldBookingService.queryRetailDetailByDocNum(inputBookDocNum); if(null == itemList || itemList.size() == 0){ MessageDialog.openError(saveButton.getShell(), MessageResources.message_ui_tips, "没有相应数据"); bookDocNum.forceFocus(); bookDocNum.setText(""); return; } partSales = new PartSales(); partSales.setOldDocNum(null == itemList.get(0)?"":itemList.get(0).getOldDocNum()); } catch (POSException e1) { MessageDialog.openError(saveButton.getShell(), MessageResources.message_ui_tips, e1.getErrorMessage()); bookDocNum.forceFocus(); bookDocNum.setText(""); return; } tableViewer.setInput(itemList); tableViewer.refresh(); GoldSalesFacade.caculatorGoldSalesPrice(); bookDocNum.setText(""); //点击查询按钮进行到期开票,现货结算和预订结算按钮不可用 GoldSalesManager.getInstance().getGoldBookingBtn().setEnabled(false); GoldSalesManager.getInstance().getGoldSalesBtn().setEnabled(false); addBookingBtn.setEnabled(false); addCurrentProductBtn.setEnabled(false); } public void widgetDefaultSelected(SelectionEvent e) {} }); } } public void onChange(String operationType) { Display.getDefault().asyncExec(new Runnable() { public void run() { if(tableViewer.getInput() != null){ List<Item> items = (List<Item>)tableViewer.getInput() ; Item addItem = new Item(); items.add(addItem); tableViewer.setInput(items); tableViewer.editElement(addItem, 0); tableViewer.setSelection(new StructuredSelection(addItem)); }else{ List<Item> items = new ArrayList<Item>(); Item addItem = new Item(); items.add(addItem); tableViewer.setInput(items); tableViewer.editElement(addItem, 0); } caculatorNumAndPrice(); } }); } public void createPartControl(Composite parent) { parent.setLayout(new GridLayout(1,false)); parent.setBackground(ThemeUtils.getCurrent().getBackGroundColor()); parent.setBackgroundMode(SWT.INHERIT_FORCE); buildBaseInfo(parent); buildProductInfo(parent); buildOperation(parent); GoldSalesManager.getInstance().setGoldBookingTableView(tableViewer); GoldSalesManager.getInstance().setGoldBookingTotlePrice(totlePrice); GoldSalesManager.getInstance().setBarCode(barCode); GoldSalesManager.getInstance().setBookDocNum(bookDocNum); GoldSalesManager.getInstance().setDocNum(docNum); GoldSalesManager.getInstance().setMatnrCode(matnrCode); GoldSalesManager.getInstance().setGoldBookingBtn(goldBookingBtn); GoldSalesManager.getInstance().setGoldSalesBtn(goldSalesBtn); GoldSalesManager.getInstance().setGoldTimeoutBtn(goldTimeoutBtn); GoldSalesManager.getInstance().setQueryBtn(queryBtn); GoldSalesManager.getInstance().setAddBookingBtn(addBookingBtn); GoldSalesManager.getInstance().setAddCurrentProductBtn(addCurrentProductBtn); GoldSalesFacade.addSalesItemListener(barCode); GoldSalesFacade.addBookingGoldItem(matnrCode); GoldSalesFacade.addTimeoutGoldItem(bookDocNum); } private void buildOperation(final Composite parent){ Composite operation = new Composite(parent, SWT.NONE); operation.setLayout(new GridLayout(8,false)); operation.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); { Label label = new Label(operation, SWT.NONE); label.setFont(CommonCss.getDefaultFont(parent.getDisplay())); GridData data1 = new GridData(); label.setLayoutData(data1); label.setText("金额合计:"); } { totlePrice = new Label(operation, SWT.BORDER); totlePrice.setLayoutData(CommonCss.getDefaultTextData()); totlePrice.setFont(CommonCss.getDefaultFont(parent.getDisplay())); totlePrice.setText("0.00"); } { goldBookingBtn = new Button(operation, SWT.NONE); goldBookingBtn.setFont(CommonCss.getDefaultFont(parent.getDisplay())); goldBookingBtn.setText("预订结算"); GridData data = new GridData(); data.heightHint = 45; data.widthHint = 100; goldBookingBtn.setLayoutData(data); goldBookingBtn.addSelectionListener(new SelectionListener(){ public void widgetSelected(SelectionEvent e) { Button saveButton = (Button)e.getSource(); List list = (List)tableViewer.getInput() ; if(null == list || list.size() == 0){ MessageDialog.openError(saveButton.getShell(), MessageResources.message_ui_tips, "单品列表不能为空"); barCode.forceFocus(); return; } //判断预订单号不可以为空 String bookDocStr = bookDocNum.getText(); if(StringUtil.isEmpty(bookDocStr)){ MessageDialog.openError(saveButton.getShell(), MessageResources.message_ui_tips, "【预订单号】不能为空"); bookDocNum.forceFocus(); return; } Object obj = tableViewer.getInput(); if(obj != null){ List<Item> items = (List<Item>)obj; for (Item item : items) { if(item.getZDPZL() == null || (item.getZDPZL().compareTo(new BigDecimal(0)) == 0 )){ MessageDialog.openError(saveButton.getShell(), "错误", "物料重量不能为空!"); return; } } } String price = totlePrice.getText(); BookingDialog dialog = new BookingDialog(saveButton.getShell()); partSales = new PartSales(); List<Item> itemList = GoldSalesFacade.getCurrentItemList(); partSales.setItemList(itemList); partSales.setDocNum(bookDocNum.getText()); partSales.setSalesType(AppConstants.SALES_TYPE_PRESALES); dialog.setPartSales(partSales); dialog.setPrice(price); dialog.setDocNum(bookDocNum.getText()); try{ int retrunType =dialog.open(); if(retrunType == 1){ return; } }catch(Exception ee){ ee.printStackTrace(); } } public void widgetDefaultSelected(SelectionEvent e) {} }); } { goldSalesBtn = new Button(operation, SWT.NONE); goldSalesBtn.setText("现货结算"); goldSalesBtn.setFont(CommonCss.getDefaultFont(parent.getDisplay())); GridData data = new GridData(); data.heightHint = 45; data.widthHint = 100; goldSalesBtn.setLayoutData(data); goldSalesBtn.addSelectionListener(new SelectionListener() { public void widgetSelected(SelectionEvent e) { Button saveButton = (Button)e.getSource(); List list = (List)tableViewer.getInput() ; if(null == list || list.size() == 0){ MessageDialog.openError(saveButton.getShell(), MessageResources.message_ui_tips, "单品列表不能为空"); barCode.forceFocus(); return; } String price = totlePrice.getText(); GoldSalesPayDialog dialog = new GoldSalesPayDialog(saveButton.getShell()); dialog.setPrice(price); dialog.setDocNum(docNum.getText()); partSales = new PartSales(); List<Item> itemList = GoldSalesFacade.getCurrentItemList(); partSales.setItemList(itemList); partSales.setDocNum(docNum.getText()); partSales.setSalesType(AppConstants.SALES_TYPE_GOLDSALES); dialog.setPartSales(partSales); try{ int retrunType =dialog.open(); if(retrunType == 1){ return; } }catch(Exception eeee){ eeee.printStackTrace(); } } public void widgetDefaultSelected(SelectionEvent e) { } }); } { goldTimeoutBtn = new Button(operation, SWT.NONE); goldTimeoutBtn.setFont(CommonCss.getDefaultFont(parent.getDisplay())); goldTimeoutBtn.setText("到期开票"); GridData data = new GridData(); data.heightHint = 45; data.widthHint = 100; goldTimeoutBtn.setLayoutData(data); goldTimeoutBtn.addSelectionListener(new SelectionListener(){ public void widgetSelected(SelectionEvent e) { Button saveButton = (Button)e.getSource(); List list = (List)tableViewer.getInput() ; if(null == list || list.size() == 0){ MessageDialog.openError(saveButton.getShell(), MessageResources.message_ui_tips, "单品列表不能为空"); barCode.forceFocus(); return; } for (Object object : list) { if(object instanceof Item){ Item item = (Item)object; if("".equals(item.getItemCode())){ MessageDialog.openError(saveButton.getShell(), MessageResources.message_ui_tips, "商品编码不能为空"); return; } } } //判断预订单号不可以为空 // String bookDocStr = bookDocNum.getText(); // if(StringUtil.isEmpty(bookDocStr)){ // MessageDialog.openError(saveButton.getShell(), MessageResources.message_ui_tips, "【预订单号】不能为空"); // bookDocNum.forceFocus(); // return; // } String price = totlePrice.getText(); GoldTimeOutPayDialog dialog = new GoldTimeOutPayDialog(saveButton.getShell()); dialog.setPrice(price); dialog.setDocNum(docNum.getText()); partSales = new PartSales(); List<Item> itemList = GoldSalesFacade.getCurrentItemList(); partSales.setItemList(itemList); partSales.setDocNum(docNum.getText()); partSales.setBookDocNum(bookDocNum.getText()); partSales.setSalesType(AppConstants.SALES_TYPE_GOLDTIMEOUT); partSales.setOldDocNum(itemList.get(0).getOldDocNum()); dialog.setPartSales(partSales); try{ int retrunType =dialog.open(); if(retrunType == 1){ return; } }catch(Exception eeee){ eeee.printStackTrace(); } } public void widgetDefaultSelected(SelectionEvent e) {} }); } { Label label = new Label(operation, SWT.NONE); GridData data1 = new GridData(GridData.FILL_HORIZONTAL); label.setLayoutData(data1); } { Button button = new Button(operation, SWT.NONE); button.setFont(CommonCss.getDefaultFont(parent.getDisplay())); button.setText("<"); GridData data = new GridData(); data.heightHint = 45; data.widthHint = 80; button.setLayoutData(data); button.addSelectionListener(new SelectionListener() { @Override public void widgetSelected(SelectionEvent e) { tableViewer.getTable().showColumn(first); } @Override public void widgetDefaultSelected(SelectionEvent e) { // TODO Auto-generated method stub } }); } { Button button = new Button(operation, SWT.NONE); button.setFont(CommonCss.getDefaultFont(parent.getDisplay())); button.setText(">"); GridData data = new GridData(); data.heightHint = 45; data.widthHint = 80; button.setLayoutData(data); button.addSelectionListener(new SelectionListener() { @Override public void widgetSelected(SelectionEvent e) { tableViewer.getTable().showColumn(last); } @Override public void widgetDefaultSelected(SelectionEvent e) { } }); } } private void caculatorNumAndPrice() { int totalNum = 0; double totalPrice = 0; for (Item item : (List<Item>)tableViewer.getInput()) { totalNum = 0; } numberTotal.setText(String.valueOf(totalNum)); for (Item item : (List<Item>)tableViewer.getInput()) { totalPrice = 0; } priceTotal.setText(String.valueOf(totalPrice)); } private void buildBaseInfo(Composite parent) { Group baseInfo = new Group(parent, SWT.NONE); baseInfo.setText(MessageResources.message_ui_group_baseinfo); GridLayout gridLayout = new GridLayout(3,false); gridLayout.marginLeft = 5; baseInfo.setLayout(gridLayout); baseInfo.setLayoutData(new GridData(GridData.FILL_BOTH)); Composite leftComposite = new Composite(baseInfo,SWT.NONE); leftComposite.setLayout(new GridLayout(18,false)); leftComposite.setLayoutData(new GridData(GridData.FILL_BOTH)); { Label label = new Label(leftComposite, SWT.NONE); label.setFont(CommonCss.getDefaultFont(parent.getDisplay())); GridData data = new GridData(); data.verticalIndent = controlVerticalAlignment; data.horizontalSpan = 1; label.setLayoutData(data); label.setText("单据号:"); } { String no = ""; try { no = goldBookingService.createNo(AppConstants.DOC_TYPE_BOOKINGGOLD); } catch (POSException e1) { MessageDialog.openError(parent.getShell(), MessageResources.message_ui_tips, e1.getErrorMessage()); } docNum = new Text(leftComposite, SWT.BORDER); GridData data = CommonCss.getTextData(150); docNum.setFont(CommonCss.getDefaultFont(parent.getDisplay())); docNum.setLayoutData(data); docNum.setText(no); docNum.setEnabled(false); } { Label lable = new Label(leftComposite, SWT.NONE); lable.setText("物料号:"); lable.setFont(CommonCss.getDefaultFont(parent.getDisplay())); GridData data = new GridData(); data.verticalIndent = controlVerticalAlignment; data.horizontalSpan = 1; lable.setLayoutData(data); } { matnrCode = new Text(leftComposite, SWT.BORDER); GridData data = CommonCss.getTextData(150); matnrCode.setLayoutData(data); matnrCode.setFont(CommonCss.getDefaultFont(parent.getDisplay())); SoftKeyUtil.showSoftKey(matnrCode); } { addBookingBtn = new Button(leftComposite, SWT.NONE); addBookingBtn.setFont(CommonCss.getDefaultFont(parent.getDisplay())); addBookingBtn.setText("添加预订"); GridData data = new GridData(); data.heightHint = 45; data.widthHint = 80; data.horizontalSpan = 1; addBookingBtn.setLayoutData(data); addBookingBtn.addSelectionListener(new SelectionListener() { public void widgetSelected(SelectionEvent e) { Button btn = (Button)e.getSource(); String inputString = matnrCode.getText(); if(null == inputString || "".equals(inputString)){ MessageDialog.openError(btn.getShell(), MessageResources.message_ui_tips, "【物料组】不能为空"); matnrCode.forceFocus(); return; } TableViewer tableViewer = GoldSalesManager.getInstance().getGoldBookingTableView(); List<Item> items = (List<Item>)tableViewer.getInput(); Item item = new Item(); int userId = POSClientApp.get().getLoginUser().getId(); Map<Integer,User> map = POSClientApp.get().getUserRelation(); Iterator<Entry<Integer, User>> it = map.entrySet().iterator(); while (it.hasNext()) { Map.Entry<Integer, User> value = (Map.Entry<Integer, User>) it.next(); if(value.getValue().getId() == userId){ item.setCashier(value.getValue().getId()); } } item.setId(0); BigDecimal currentGoldPrice; try { Material material = goldBookingService.getMaterialByMatnr(inputString); currentGoldPrice = goldBookingService.getServerGoldPrice(material.getMatkl()); item.setMatkl(material.getMatkl()); item.setMATNR(inputString); item.setMatrnName(material.getMaktx()); item.setItemType(AppConstants.ITEM_TYPE_BOOKING); item.setItemStatus(AppConstants.ITEM_STATU_GOLD_BOOK); } catch (POSException e1) { MessageDialog.openError(btn.getShell(), MessageResources.message_ui_tips, e1.getErrorMessage()); matnrCode.setText(""); matnrCode.forceFocus(); return; } item.setItemCode(""); item.setPrice(currentGoldPrice); item.setZMDLSBQJ(currentGoldPrice); item.setPrice(currentGoldPrice); item.setZDPZL(new BigDecimal(0)); item.setZDPYZL(new BigDecimal(0)); item.setSalesAmount(currentGoldPrice.multiply(item.getZDPZL())); if(items == null){ items = new ArrayList<Item>(); } items.add(item); tableViewer.setInput(items); GoldSalesFacade.caculatorGoldSalesPrice(); tableViewer.refresh(); matnrCode.setText(""); matnrCode.forceFocus(); //点击添加预订,现货结算和到期开票以及查询按钮不可用 goldSalesBtn.setEnabled(false); goldTimeoutBtn.setEnabled(false); queryBtn.setEnabled(false); addCurrentProductBtn.setEnabled(false); } public void widgetDefaultSelected(SelectionEvent e) { } }); } { Label lable = new Label(leftComposite, SWT.NONE); lable.setFont(CommonCss.getDefaultFont(parent.getDisplay())); lable.setText("条形码:"); GridData data = new GridData(); data.horizontalSpan = 1; data.verticalIndent = controlVerticalAlignment; lable.setLayoutData(data); } { barCode = new Text(leftComposite, SWT.BORDER); GridData data = CommonCss.getTextData(150); barCode.setLayoutData(data); barCode.setFont(CommonCss.getDefaultFont(parent.getDisplay())); SoftKeyUtil.showSoftKey(barCode); } { addCurrentProductBtn = new Button(leftComposite, SWT.NONE); addCurrentProductBtn.setFont(CommonCss.getDefaultFont(parent.getDisplay())); addCurrentProductBtn.setText("添加现货"); GridData data = new GridData(); data.heightHint = 45; data.widthHint = 80; data.horizontalSpan = 1; addCurrentProductBtn.setLayoutData(data); addCurrentProductBtn.addSelectionListener(new SelectionListener() { public void widgetSelected(SelectionEvent e) { String inputBarCode = barCode.getText(); if(null == inputBarCode || "".equals(inputBarCode)){ MessageDialog.openError(((Button)e.getSource()).getShell(), MessageResources.message_ui_tips, "【条形码】不能为空"); barCode.forceFocus(); return; } Item item = null; try { item = goldBookingService.getItemByBarCode(inputBarCode); if (item == null) { Text barCode = GoldSalesManager.getInstance().getBarCode(); barCode.forceFocus(); barCode.setText(""); return; } int userId = POSClientApp.get().getLoginUser().getId(); Map<Integer,User> map = POSClientApp.get().getUserRelation(); Iterator<Entry<Integer, User>> it = map.entrySet().iterator(); while (it.hasNext()) { Map.Entry<Integer, User> value = (Map.Entry<Integer, User>) it.next(); if(value.getValue().getId() == userId){ item.setCashier(value.getValue().getId()); } } List<Item> items = (List<Item>)tableViewer.getInput(); if(items != null){ for (Item t_item : items) { if(t_item.getItemCode().equals(barCode.getText())){ MessageDialog.openError(((Button)e.getSource()).getShell(), MessageResources.message_ui_tips, "单品已存在,请重新输入"); barCode.forceFocus(); barCode.setText(""); return; } } } BigDecimal currentPrice = goldBookingService.getServerGoldPrice(item.getMatkl()); item.setItemType(AppConstants.ITEM_TYPE_CURRENTGOLD); item.setItemStatus(AppConstants.ITEM_STATU_GOLD_NOW); if(CommonFacade.isSuGold(item.getMatkl())){ BigDecimal price = item.getZDPZL().multiply(currentPrice); item.setPrice(currentPrice); item.setFactAmount(price); item.setSalesAmount(price); }else{ item.setPrice(item.getZMDLSBQJ()); item.setFactAmount(item.getZMDLSBQJ()); item.setSalesAmount(item.getZMDLSBQJ()); } } catch (POSException e1) { MessageDialog.openError(((Control)e.getSource()).getShell(), MessageResources.message_ui_tips, e1.getErrorMessage()); barCode.forceFocus(); barCode.setText(""); return; } Object obj = tableViewer.getInput(); if (obj == null) { List<Item> list = new ArrayList<Item>(); list.add(item); tableViewer.setInput(list); } else { if (obj instanceof List) { List list = (List) obj; list.add(item); tableViewer.setInput(list); } } GoldSalesFacade.caculatorGoldSalesPrice(); tableViewer.refresh(); barCode.forceFocus(); barCode.setText(""); //点击添加现货,预订结算和到期开票以及查询按钮不可用 GoldSalesManager.getInstance().getGoldBookingBtn().setEnabled(false); GoldSalesManager.getInstance().getGoldTimeoutBtn().setEnabled(false); GoldSalesManager.getInstance().getQueryBtn().setEnabled(false); GoldSalesManager.getInstance().getAddBookingBtn().setEnabled(false); } public void widgetDefaultSelected(SelectionEvent e) { } }); } { Button btn1 = new Button(leftComposite, SWT.NONE); btn1.setFont(CommonCss.getDefaultFont(parent.getDisplay())); btn1.setText("重置"); GridData data = new GridData(); data.heightHint = 45; data.widthHint = 80; data.horizontalSpan = 1; btn1.setLayoutData(data); btn1.addSelectionListener(new SelectionListener() { public void widgetSelected(SelectionEvent e) { matnrCode.setText(""); bookDocNum.setText(""); barCode.setText(""); goldSalesBtn.setEnabled(true);//现货结算按钮 goldTimeoutBtn.setEnabled(true);//到期开票按钮 goldBookingBtn.setEnabled(true);//预订结算按钮 queryBtn.setEnabled(true);//查询按钮 addBookingBtn.setEnabled(true);//添加预订按钮 addCurrentProductBtn.setEnabled(true);//添加现货按钮 try { GoldSalesFacade.restGoldBookingView(); } catch (POSException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } public void widgetDefaultSelected(SelectionEvent e) { } }); } } public void setFocus() { } @Override public void onChangeBarcode(final String operationType) { IWorkbenchWindow window = PlatformUI.getWorkbench().getWorkbenchWindows()[0]; IWorkbenchPage page = window.getActivePage(); String viewid = page.getActivePartReference().getId(); if(!"com.topsun.posclient.sales.ui.menu.ReturnedView".equals(viewid)){ return; } Display.getDefault().asyncExec(new Runnable() { public void run() { try { if(tableViewer.getInput() != null){ List<Item> items = (List<Item>)tableViewer.getInput() ; List<String> nameList = new ArrayList<String>(); for (Item item : items) { String itemCode = item.getItemCode(); nameList.add(itemCode); } if(nameList.contains(operationType)){ Item selectedItem = null; for (Item t_item : items) { String itemCode = t_item.getItemCode(); if(itemCode.equals(operationType)){ selectedItem = t_item; } } tableViewer.refresh(); tableViewer.setSelection(new StructuredSelection(selectedItem)); tableViewer.editElement(selectedItem, 2); }else{ try { Item addItem = goldBookingService.getItemByBarCode(operationType); items.add(addItem); tableViewer.setInput(items); tableViewer.editElement(addItem, 2); tableViewer.setSelection(new StructuredSelection(addItem)); } catch (POSException e) { e.printStackTrace(); } } }else{ List<Item> items = new ArrayList<Item>(); Item addItem = new Item(); addItem.setItemCode(operationType); items.add(addItem); tableViewer.setInput(items); tableViewer.editElement(addItem, 2); } caculatorNumAndPrice(); } catch (Exception e) { e.printStackTrace(); } } }); } }