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