package com.opentravelsoft.action.manage.finance.invoice; import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import com.opentravelsoft.action.ManageAction; import com.opentravelsoft.entity.Employee; import com.opentravelsoft.entity.finance.Income; import com.opentravelsoft.entity.finance.Invoice; import com.opentravelsoft.entity.finance.InvoiceItem; import com.opentravelsoft.entity.finance.InvoicePiece; import com.opentravelsoft.service.finance.IncomeService; import com.opentravelsoft.service.finance.InvoiceService; /** * 填写发票 * * @author <a herf="mailto:zhangsitao@gmail.com">Steven Zhang</a> */ public class InvoiceAction extends ManageAction { private static final long serialVersionUID = -8607586773699795330L; @Autowired private InvoiceService invoiceService; @Autowired private IncomeService incomeService; private Invoice invoice; /** 付款记录ID */ private int incomeId; private List<InvoiceItem> items = new ArrayList<InvoiceItem>(); private List<InvoicePiece> pieces = new ArrayList<InvoicePiece>(); public String input() { Employee user = getUser(); if (incomeId != 0) { // 付款单 Income gather = incomeService.roGetIncome(incomeId); double dAmount = 0d; // 发票记录 if (null != gather) for (Invoice item : gather.getInvices()) { dAmount += item.getAmount(); } } if (items.size() == 0) for (int i = 0; i < 4; i++) { InvoiceItem item = new InvoiceItem(); item.setId(i); items.add(item); } if (pieces.size() == 0) for (int i = 0; i < 5; i++) { InvoicePiece piece = new InvoicePiece(); piece.setId(i); pieces.add(piece); } invoice = new Invoice(); // 备注栏填写 线路名,出团时间 // invoice.setRemarks("旅游线路: 人数:"); // 经办人 invoice.setSignature(user.getUserName()); return INPUT; } @Override public void validate() { // Gathering gathering = incomeService.roGetIncome(Integer // .parseInt(incomeId)); BigDecimal pay = new BigDecimal(0); for (InvoiceItem item : items) { pay = pay.add(item.getExpense()); } // if (pay > gathering.getIncomeMon()) // { // addActionError("发票付款项目总额大于付款额."); // } else if (pay.doubleValue() == 0) { addActionError("发票付款项目总额为零."); } BigDecimal block = new BigDecimal(0); for (InvoicePiece piece : pieces) { block = block.add(piece.getAmount()); } // if (block > gathering.getIncomeMon()) // { // addActionError("发票收款方式一栏总额大于付款额."); // } else if (block.doubleValue() == 0) { addActionError("发票收款方式一栏总额为零."); } if (pay != block) addActionError("发票付款项目总额与发票收款方式一栏总额不符."); } public String submit() { Employee user = getUser(); invoice.setItems(items); invoice.setPieces(pieces); invoice.setIncomeId(incomeId); invoiceService.txSaveInvoice(invoice, user.getGroup().getGroupId()); return SUCCESS; } public Invoice getInvoice() { return invoice; } public void setInvoice(Invoice invoice) { this.invoice = invoice; } public List<InvoiceItem> getItems() { return items; } public void setItems(List<InvoiceItem> items) { this.items = items; } public List<InvoicePiece> getPieces() { return pieces; } public void setPieces(List<InvoicePiece> pieces) { this.pieces = pieces; } public int getIncomeId() { return incomeId; } public void setIncomeId(int incomeId) { this.incomeId = incomeId; } }