package com.topsun.posclient.sales.dialog; import java.io.File; import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.dialogs.MessageDialog; 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.Label; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; import com.co.lane.print.Printer; import com.co.lane.print.test.OrderBean; import com.topsun.posclient.common.AppConstants; import com.topsun.posclient.common.LoggerUtil; 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.common.ui.style.CommonCss; import com.topsun.posclient.datamodel.Invoice; import com.topsun.posclient.datamodel.PartSales; import com.topsun.posclient.datamodel.RetailFP; import com.topsun.posclient.sales.MessageResources; import com.topsun.posclient.sales.core.PartSalesPrintData; import com.topsun.posclient.sales.core.SalesDataUtil; import com.topsun.posclient.sales.ui.gold.PartSalesManager; import com.topsun.posclient.sales.ui.menu.SalesActivator; import com.topsun.posclient.sales.ui.print.IPrintProcessor; import com.topsun.posclient.sales.ui.print.SamplePrintProcessor; /** * 打印确认对话框 * * @author Dong * */ public class PrintConfirmDialog extends Dialog { public PartSales partSales;// 信息 private String price; private String itemName = "";// 商品名称 private Text payCompany; // 付款单位 private Text invoiceNumber; // 发票号码 private Text invoiceCode; // 发票代码 private Text name; // 商品名称 private Text invoiceAmount; // 开票金额 private int totalPage;// 总页数 private int indexPage;// 当前页数 private String currentInvoiceNumber;// 当前页发票号码 private String currentInvoiceCode;// 当前页发票代码 private String nextInvoiceNumber;//下一张发票号 private BigDecimal currentInvoiceAmount;// 当前开票金额 private Label totalPageLabel;// 显示打印总页数 private Label indexPageLabel;// 显示当前打印页数 private OrderBean orderBean;// 打印数据 private BigDecimal salesValue;// 折扣值(只有基本零售有折扣) private BigDecimal zeroAmount;// 抹零金额 private BigDecimal pointAmount;// 积分抵扣金额 private Invoice currentInvoice;// 当前发票对象 List<RetailFP> retailFps = new ArrayList<RetailFP>();//保存发票信息 IBaseService baseService = new BaseServiceImpl(); public Invoice getCurrentInvoice() { //放发票号码被修改之后,根据最新的发票号码获取当前发票对象 // if(null != invoiceNumber.getText() && !"".equals(invoiceNumber.getText())){ // try { // currentInvoice = baseService.getInvoiceByNum(invoiceNumber.getText(), invoiceCode.getText()); // } catch (POSException e) { // MessageDialog.openError(this.getShell(), MessageResources.message_ui_tips, e.getErrorMessage()); // invoiceNumber.forceFocus(); // } // } if(null == currentInvoice){ MessageDialog.openError(this.getShell(), MessageResources.message_ui_tips, "发票为空或已打印"); return null; } return currentInvoice; } public void setCurrentInvoice(Invoice currentInvoice) { this.currentInvoice = currentInvoice; } public BigDecimal getSalesValue() { return salesValue; } public void setSalesValue(BigDecimal salesValue) { this.salesValue = salesValue; } protected PrintConfirmDialog(Shell parentShell) { super(parentShell); } @Override protected void configureShell(Shell newShell) { newShell.setText("打印"); super.configureShell(newShell); } protected void okPressed() { super.okPressed(); } protected Control createContents(Composite parent) { Composite compsite = new Composite(parent, SWT.BORDER); compsite.setLayout(new GridLayout(7, false)); GridData layoutData = new GridData(GridData.FILL_BOTH); compsite.setLayoutData(layoutData); { Label label = new Label(compsite, SWT.NONE); GridData data = new GridData(GridData.FILL_HORIZONTAL); label.setLayoutData(data); label.setText("发票号码:"); } { invoiceNumber = new Text(compsite, SWT.BORDER); GridData data = CommonCss.getTextData(200); data.horizontalSpan = 6; invoiceNumber .setFont(CommonCss.getDefaultFont(parent.getDisplay())); invoiceNumber.setLayoutData(data); invoiceNumber.setText(String.valueOf(currentInvoiceNumber)); } { Label label = new Label(compsite, SWT.NONE); GridData data = new GridData(GridData.FILL_HORIZONTAL); label.setLayoutData(data); label.setText("发票代码:"); } { invoiceCode = new Text(compsite, SWT.BORDER); GridData data = CommonCss.getTextData(200); data.horizontalSpan = 6; invoiceCode.setFont(CommonCss.getDefaultFont(parent.getDisplay())); invoiceCode.setLayoutData(data); invoiceCode.setText(String.valueOf(currentInvoiceCode)); } { Label label = new Label(compsite, SWT.NONE); GridData data = new GridData(GridData.FILL_HORIZONTAL); label.setLayoutData(data); label.setText("付款单位:"); } { payCompany = new Text(compsite, SWT.BORDER); GridData data = CommonCss.getTextData(200); data.horizontalSpan = 6; payCompany.setFont(CommonCss.getDefaultFont(parent.getDisplay())); payCompany.setLayoutData(data); payCompany.setText(orderBean.getPayComp()); } { Label label = new Label(compsite, SWT.NONE); GridData data = new GridData(GridData.FILL_HORIZONTAL); label.setLayoutData(data); label.setText("商品名称:"); } { name = new Text(compsite, SWT.BORDER); GridData data = CommonCss.getTextData(200); data.horizontalSpan = 6; name.setFont(CommonCss.getDefaultFont(parent.getDisplay())); name.setLayoutData(data); name.setEditable(false); name.setText(itemName); } { Label label = new Label(compsite, SWT.NONE); GridData data = new GridData(GridData.FILL_HORIZONTAL); label.setLayoutData(data); label.setText("开票金额:"); } { invoiceAmount = new Text(compsite, SWT.BORDER); GridData data = CommonCss.getTextData(200); data.horizontalSpan = 6; invoiceAmount .setFont(CommonCss.getDefaultFont(parent.getDisplay())); invoiceAmount.setLayoutData(data); invoiceAmount.setEditable(false); invoiceAmount.setText(ProjectUtil.formatAmount(null, currentInvoiceAmount)); } return super.createContents(parent); } protected void createButtonsForButtonBar(Composite parent) { int buttonWidth = 80; int buttonHight = 45; parent.setLayout(new GridLayout(7, false)); { totalPageLabel = new Label(parent, SWT.NONE); GridData data = new GridData(GridData.FILL_HORIZONTAL); totalPageLabel.setLayoutData(data); totalPageLabel .setFont(CommonCss.getDefaultFont(parent.getDisplay())); totalPageLabel.setText("共" + totalPage + "张"); } { indexPageLabel = new Label(parent, SWT.NONE); GridData data = new GridData(GridData.FILL_HORIZONTAL); indexPageLabel.setLayoutData(data); indexPageLabel .setFont(CommonCss.getDefaultFont(parent.getDisplay())); indexPageLabel.setText("第" + indexPage + "张"); } { Button button = new Button(parent, SWT.NONE); button.setFont(CommonCss.getDefaultFont(parent.getDisplay())); button.setText("上一张"); GridData data = new GridData(); data.widthHint = buttonWidth; data.heightHint = buttonHight; button.setLayoutData(data); button.addSelectionListener(new SelectionListener() { public void widgetSelected(SelectionEvent e) { Button printBtn = (Button) e.getSource(); doLastPage(printBtn.getShell()); } public void widgetDefaultSelected(SelectionEvent e) { } }); } { Button button = new Button(parent, SWT.NONE); button.setFont(CommonCss.getDefaultFont(parent.getDisplay())); button.setText("下一张"); GridData data = new GridData(); data.widthHint = buttonWidth; data.heightHint = buttonHight; button.setLayoutData(data); button.addSelectionListener(new SelectionListener() { public void widgetSelected(SelectionEvent e) { Button printBtn = (Button) e.getSource(); doNextPage(printBtn.getShell()); } public void widgetDefaultSelected(SelectionEvent e) { } }); } { Button button = new Button(parent, SWT.NONE); button.setFont(CommonCss.getDefaultFont(parent.getDisplay())); button.setText("打印"); GridData data = new GridData(); data.widthHint = buttonWidth; data.heightHint = buttonHight; button.setLayoutData(data); button.addSelectionListener(new SelectionListener() { public void widgetSelected(SelectionEvent e) { Button printBtn = (Button) e.getSource(); String inputInvoiceNumber = invoiceNumber.getText(); String inputInvoiceAmount = invoiceAmount.getText(); if (ProjectUtil.formatString(inputInvoiceAmount).compareTo(new BigDecimal(0)) == 0) { MessageDialog.openError(printBtn.getShell(), MessageResources.message_ui_tips, "【开票金额】不能为零"); return; } if (null == inputInvoiceNumber || "".equals(inputInvoiceNumber)) { MessageDialog.openError(printBtn.getShell(), MessageResources.message_ui_tips, "【发票号码】不能为空"); invoiceNumber.forceFocus(); return; } if (inputInvoiceNumber.length() > 8) { MessageDialog.openError(printBtn.getShell(), MessageResources.message_ui_tips, "【发票号码】不能超过8个字符"); invoiceNumber.forceFocus(); return; } String inputInvoiceCode = invoiceCode.getText(); if (null == inputInvoiceCode || "".equals(inputInvoiceCode)) { MessageDialog.openError(printBtn.getShell(), MessageResources.message_ui_tips, "【发票代码】不能为空"); invoiceCode.forceFocus(); return; } if (inputInvoiceCode.length() > 12) { MessageDialog.openError(printBtn.getShell(), MessageResources.message_ui_tips, "【发票代码】不能超过12个字符"); invoiceNumber.forceFocus(); return; } //校验发票号码在本地是否存在 Invoice invoice = null; try { invoice = baseService.getInvoiceByNum(inputInvoiceNumber, inputInvoiceCode); if(null == invoice){ MessageDialog.openError(printBtn.getShell(), "错误", "发票号码【"+inputInvoiceNumber+"】发票代码【"+inputInvoiceCode+"】在本地发票数据中不存在"); return; } } catch (POSException e1) { MessageDialog.openError(printBtn.getShell(), "错误", e1.getErrorMessage()); return; } Printer printer = new Printer(); String coifigFilePath = ProjectUtil.getRuntimeClassPath() + AppConstants.PRINT_TEMP_FILE; File file = new File(coifigFilePath); if(!file.exists()){ LoggerUtil.logError(SalesActivator.PLUGIN_ID, "打印模板文件不存在"); MessageDialog.openError(printBtn.getShell(), "错误", "打印模板文件不存在"); return; } printer.setCoifigFilePath(coifigFilePath); // 再次设置打印的发票号码和发票代码,因为可能出现用户自己修改的情况,这样和本地保存的默认发票号码以及代码就不一样了 orderBean.setInvoiceCode(invoiceCode.getText()); orderBean.setInvoiceNum(invoiceNumber.getText()); printer.setPrintDataOriginal(orderBean); boolean printFlag = false; try { printFlag = printer.print(); } catch (Exception ew) { LoggerUtil.logError(SalesActivator.PLUGIN_ID, "打印出错", ew); MessageDialog.openError(printBtn.getShell(), "错误", "打印出错"); return; } // 打印成功,保存发票号码 if (printFlag) { try { setNextInvoiceNumber(baseService.getInvoice(invoiceNumber.getText()).getNextFPH());//打印成功之后设置下一张发票 //拆票处理 PartSales printPartSales = new PartSalesPrintData().convertPartSalesForChaiPiao(partSales); //过滤不需要打印的项 PartSales pPartSales = new PartSalesPrintData().convertPartSalesForFP(partSales); IPrintProcessor printProcessor = new SamplePrintProcessor(invoice, pPartSales); RetailFP retailFP = printProcessor.process(indexPage, totalPage, payCompany.getText(), invoiceNumber.getText(),invoiceCode.getText(), invoiceAmount.getText()); int printNum = PartSalesManager.getInstance().getPrintNum(); int needPrintNum = SalesDataUtil.getNeedPrintNum(printPartSales); if(printNum == needPrintNum){ retailFps.add(retailFP); partSales.setRetailFPList(retailFps); //最后一张打印成功删除之前所有发票 printProcessor.deleteBeforeFP(baseService.getInvoice(getNextInvoiceNumber())); okPressed(); }else { retailFps.add(retailFP); doNextPage(printBtn.getShell());// 打印成功自动跳转到下一页 } } catch (POSException ee) { MessageDialog.openError(printBtn.getShell(),MessageResources.message_ui_tips,ee.getErrorMessage()); return; }catch (Exception ee) { LoggerUtil.logError(SalesActivator.PLUGIN_ID, "打印错误", ee); MessageDialog.openError(printBtn.getShell(),MessageResources.message_ui_tips,"打印错误"); return; } } } public void widgetDefaultSelected(SelectionEvent e) { } }); } GridData btnLayout = new GridData(); btnLayout.widthHint = buttonWidth; btnLayout.heightHint = buttonHight; { Button button = new Button(parent, SWT.NONE); button.setFont(CommonCss.getDefaultFont(parent.getDisplay())); button.setText("合并打印"); GridData data = new GridData(); data.widthHint = buttonWidth; data.heightHint = buttonHight; button.setLayoutData(data); button.addSelectionListener(new SelectionListener() { public void widgetSelected(SelectionEvent e) { PartSalesManager.getInstance().setPrintNum(0); Button printBtn = (Button) e.getSource(); String inputInvoiceNumber = invoiceNumber.getText(); if (null == inputInvoiceNumber || "".equals(inputInvoiceNumber)) { MessageDialog.openError(printBtn.getShell(), MessageResources.message_ui_tips, "【发票号码】不能为空"); invoiceNumber.forceFocus(); return; } String inputInvoiceCode = invoiceCode.getText(); if (null == inputInvoiceCode || "".equals(inputInvoiceCode)) { MessageDialog.openError(printBtn.getShell(), MessageResources.message_ui_tips, "【发票代码】不能为空"); invoiceCode.forceFocus(); return; } //校验发票号码在本地是否存在 Invoice invoice = null; try { invoice = baseService.getInvoiceByNum(inputInvoiceNumber, inputInvoiceCode); if(null == invoice){ MessageDialog.openError(printBtn.getShell(), "错误", "发票号码【"+inputInvoiceNumber+"】发票代码【"+inputInvoiceCode+"】在本地发票数据中不存在"); return; } } catch (POSException e1) { MessageDialog.openError(printBtn.getShell(), "错误", e1.getErrorMessage()); return; } Printer printer = new Printer(); String coifigFilePath = ProjectUtil.getRuntimeClassPath() + AppConstants.PRINT_TEMP_FILE; printer.setCoifigFilePath(coifigFilePath); // 循环打印 for (int i = 0; i < partSales.getItemList().size(); i++) { String inputInvoiceAmount = invoiceAmount.getText(); if (ProjectUtil.formatString(inputInvoiceAmount).compareTo(new BigDecimal(0)) != 1) { MessageDialog.openError(printBtn.getShell(), MessageResources.message_ui_tips, "【开票金额】必须大于零"); return; } if (partSales.getItemList().get(i).getItemType().equals(AppConstants.ITEM_TYPE_OLDGOLD)) { continue; } if (partSales.getItemList().get(i).getItemType().equals(AppConstants.ITEM_TYPE_RETURNED)) { continue; } setCurrentInvoiceNumber(currentInvoiceNumber); partSales.setInvoiceCode(inputInvoiceCode); partSales.setInvoiceNumber(getCurrentInvoiceNumber()); OrderBean orderBean = new PartSalesPrintData().getOrderBeanPrintData(i + 1,payCompany.getText(), partSales); if (null == orderBean) { continue; } setOrderBean(orderBean); printer.setPrintDataOriginal(orderBean); boolean printFlag = printer.print(); // 打印成功,保存发票号码 if (printFlag) { try { setNextInvoiceNumber(baseService.getInvoice(invoiceNumber.getText()).getNextFPH());//打印成功之后设置下一张发票 IPrintProcessor printProcessor = new SamplePrintProcessor(invoice, partSales); RetailFP retailFP = printProcessor.process(indexPage, totalPage, payCompany.getText(), invoiceNumber.getText(),invoiceCode.getText(), invoiceAmount.getText()); if (indexPage == totalPage) { retailFps.add(retailFP); partSales.setRetailFPList(retailFps); //最后一张打印成功删除之前所有发票 printProcessor.deleteBeforeFP(baseService.getInvoice(getNextInvoiceNumber())); okPressed(); } else { retailFps.add(retailFP); doNextPage(printBtn.getShell());// 打印成功自动跳转到下一页 } } catch (POSException ee) { MessageDialog.openError(printBtn.getShell(),MessageResources.message_ui_tips,ee.getErrorMessage()); return; } catch (Exception e1) { MessageDialog.openError(printBtn.getShell(),MessageResources.message_ui_tips, ""); return; } } } okPressed(); } public void widgetDefaultSelected(SelectionEvent e) { } }); } Button cancelBtn = createButton(parent, IDialogConstants.CANCEL_ID, "取消", false); cancelBtn.setLayoutData(btnLayout); } @Override protected void cancelPressed() { // TODO Auto-generated method stub super.cancelPressed(); } protected Button createButton(Composite parent, int id, String label, boolean defaultButton) { return super.createButton(parent, id, label, defaultButton); } /** * 上一张 * * @param parent */ public void doLastPage(Shell parent) { int lastPage = indexPage - 1; if (lastPage < 1) { MessageDialog.openInformation(parent, MessageResources.message_ui_tips, "这是第一张"); return; } this.setIndexPage(lastPage); this.getIndexPageLabel().setText("第" + lastPage + "张"); String lastFPH = this.getCurrentInvoice().getLastFPH(); if(null == lastFPH || "".equals(lastFPH)){ MessageDialog.openError(parent.getShell(),MessageResources.message_ui_tips, "上一张发票数据为空"); return; } this.setCurrentInvoiceNumber(this.getCurrentInvoice().getLastFPH()); this.getInvoiceNumber().setText(this.getCurrentInvoice().getLastFPH()); this.getInvoiceCode().setText(this.getCurrentInvoice().getLastFPDM()); this.setCurrentInvoiceAmount(this.getOrderBean().getSumAmount()); String inputInvoiceNumber = invoiceNumber.getText(); if (null == inputInvoiceNumber || "".equals(inputInvoiceNumber)) { MessageDialog.openError(parent.getShell(), MessageResources.message_ui_tips, "【发票号码】不能为空"); invoiceNumber.forceFocus(); return; } String inputInvoiceCode = invoiceCode.getText(); if (null == inputInvoiceCode || "".equals(inputInvoiceCode)) { MessageDialog.openError(parent.getShell(), MessageResources.message_ui_tips, "【发票代码】不能为空"); invoiceCode.forceFocus(); return; } partSales.setInvoiceCode(inputInvoiceCode); partSales.setInvoiceNumber(inputInvoiceNumber); OrderBean orderBean = new PartSalesPrintData().getOrderBeanPrintData( lastPage, payCompany.getText(), partSales); this.setOrderBean(orderBean); IBaseService baseService = new BaseServiceImpl(); try { this.setCurrentInvoice(baseService.getInvoice(this.getCurrentInvoice().getLastFPH())); } catch (POSException e) { MessageDialog.openError(parent.getShell(), MessageResources.message_ui_tips, e.getErrorMessage()); return; } this.getInvoiceAmount().setText(ProjectUtil.formatAmount(null,orderBean.getSumAmount())); this.getName().setText(orderBean.getBusType()); } /** * 下一张 * * @param parent */ public void doNextPage(Shell parent) { int nextPage = indexPage + 1; if (nextPage > totalPage) { MessageDialog.openInformation(parent, MessageResources.message_ui_tips, "已到最后一张"); return; } this.setIndexPage(nextPage); this.getIndexPageLabel().setText("第" + nextPage + "张"); this.setCurrentInvoiceNumber(this.getNextInvoiceNumber()); this.getInvoiceNumber().setText( String.valueOf(this.getCurrentInvoiceNumber())); this.getInvoiceCode().setText(this.getCurrentInvoice().getNextFPDM()); String inputInvoiceNumber = invoiceNumber.getText(); if (null == inputInvoiceNumber || "".equals(inputInvoiceNumber)) { MessageDialog.openError(parent.getShell(), MessageResources.message_ui_tips, "【发票号码】不能为空"); invoiceNumber.forceFocus(); return; } String inputInvoiceCode = invoiceCode.getText(); if (null == inputInvoiceCode || "".equals(inputInvoiceCode)) { MessageDialog.openError(parent.getShell(), MessageResources.message_ui_tips, "【发票代码】不能为空"); invoiceCode.forceFocus(); return; } partSales.setInvoiceCode(inputInvoiceCode); partSales.setInvoiceNumber(inputInvoiceNumber); OrderBean orderBean = new PartSalesPrintData().getOrderBeanPrintData( nextPage, payCompany.getText(), partSales); this.setOrderBean(orderBean); IBaseService baseService = new BaseServiceImpl(); try { this.setCurrentInvoice(baseService.getInvoice(this.getCurrentInvoice().getNextFPH())); } catch (POSException e) { MessageDialog.openError(parent.getShell(), MessageResources.message_ui_tips, e.getErrorMessage()); return; } this.getInvoiceAmount().setText(ProjectUtil.formatAmount(null,orderBean.getSumAmount())); this.getName().setText(orderBean.getBusType()); } public final OrderBean getOrderBean() { return orderBean; } public final void setOrderBean(OrderBean orderBean) { this.orderBean = orderBean; } public final PartSales getPartSales() { return partSales; } public final void setPartSales(PartSales partSales) { this.partSales = partSales; } public final String getPrice() { return price; } public final void setPrice(String price) { this.price = price; } public final String getItemName() { return itemName; } public final void setItemName(String itemName) { this.itemName = itemName; } public final Text getPayCompany() { return payCompany; } public final void setPayCompany(Text payCompany) { this.payCompany = payCompany; } public final Text getInvoiceNumber() { return invoiceNumber; } public final void setInvoiceNumber(Text invoiceNumber) { this.invoiceNumber = invoiceNumber; } public final Text getInvoiceCode() { return invoiceCode; } public final void setInvoiceCode(Text invoiceCode) { this.invoiceCode = invoiceCode; } public final Text getName() { return name; } public final void setName(Text name) { this.name = name; } public final Text getInvoiceAmount() { return invoiceAmount; } public final void setInvoiceAmount(Text invoiceAmount) { this.invoiceAmount = invoiceAmount; } public final int getTotalPage() { return totalPage; } public final void setTotalPage(int totalPage) { this.totalPage = totalPage; } public final int getIndexPage() { return indexPage; } public final void setIndexPage(int indexPage) { this.indexPage = indexPage; } public final Label getTotalPageLabel() { return totalPageLabel; } public final void setTotalPageLabel(Label totalPageLabel) { this.totalPageLabel = totalPageLabel; } public final Label getIndexPageLabel() { return indexPageLabel; } public final void setIndexPageLabel(Label indexPageLabel) { this.indexPageLabel = indexPageLabel; } public final String getCurrentInvoiceNumber() { return currentInvoiceNumber; } public final void setCurrentInvoiceNumber(String currentInvoiceNumber) { this.currentInvoiceNumber = currentInvoiceNumber; } public final BigDecimal getCurrentInvoiceAmount() { return currentInvoiceAmount; } public final void setCurrentInvoiceAmount(BigDecimal currentInvoiceAmount) { this.currentInvoiceAmount = currentInvoiceAmount; } public BigDecimal getZeroAmount() { return zeroAmount; } public void setZeroAmount(BigDecimal zeroAmount) { this.zeroAmount = zeroAmount; } public BigDecimal getPointAmount() { return pointAmount; } public void setPointAmount(BigDecimal pointAmount) { this.pointAmount = pointAmount; } public String getCurrentInvoiceCode() { return currentInvoiceCode; } public void setCurrentInvoiceCode(String currentInvoiceCode) { this.currentInvoiceCode = currentInvoiceCode; } public String getNextInvoiceNumber() { return nextInvoiceNumber; } public void setNextInvoiceNumber(String nextInvoiceNumber) { this.nextInvoiceNumber = nextInvoiceNumber; } }