📄 paymentsmodel.java
字号:
// Tina POS is a point of sales application designed for touch screens.
// Copyright (C) 2005 Adrian Romero Corchado.
// http://sourceforge.net/projects/tinapos
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
package net.adrianromero.tpv.panels;
import java.util.*;
import javax.swing.table.AbstractTableModel;
import net.adrianromero.basic.BasicException;
import net.adrianromero.data.loader.*;
import net.adrianromero.format.Formats;
import net.adrianromero.tpv.forms.AppLocal;
import net.adrianromero.tpv.forms.AppView;
public class PaymentsModel {
private String m_sHost;
private Date m_dDateStart;
private Date m_dDateEnd;
private Integer m_iPayments;
private Double m_dPaymentsTotal;
private java.util.List<PaymentsLine> m_lpayments;
private final static String[] PAYMENTHEADERS = {"Label.Payment", "label.totalcash"};
private Integer m_iSales;
private Double m_dSalesSubtotal;
private Double m_dSalesTotal;
private java.util.List<SalesLine> m_lsales;
private final static String[] SALEHEADERS = {"label.taxcash", "label.subtotalcash", "label.totalcash"};
private PaymentsModel() {
}
public static PaymentsModel emptyInstance() {
PaymentsModel p = new PaymentsModel();
p.m_iPayments = new Integer(0);
p.m_dPaymentsTotal = new Double(0.0);
p.m_lpayments = new ArrayList<PaymentsLine>();
p.m_iSales = new Integer(0);
p.m_dSalesSubtotal = new Double(0.0);
p.m_dSalesTotal = new Double(0.0);
p.m_lsales = new ArrayList<SalesLine>();
return p;
}
public static PaymentsModel loadInstance(AppView app) throws BasicException {
PaymentsModel p = new PaymentsModel();
// Propiedades globales
p.m_sHost = app.getHost();
p.m_dDateStart = app.getActiveCashDateStart();
p.m_dDateEnd = null;
// Pagos
Object[] valtickets = (Object []) new StaticSentence(app.getSession()
, "SELECT COUNT(*), SUM(PAYMENTS.TOTAL) " +
"FROM PAYMENTS, TICKETS " +
"WHERE PAYMENTS.TICKETID = TICKETS.TICKETID AND TICKETS.MONEY = ?"
, SerializerWriteInteger.INSTANCE
, new SerializerReadBasic(new Datas[] {Datas.INT, Datas.DOUBLE}))
.find(app.getActiveCashIndex());
if (valtickets == null) {
p.m_iPayments = new Integer(0);
p.m_dPaymentsTotal = new Double(0.0);
} else {
p.m_iPayments = (Integer) valtickets[0];
p.m_dPaymentsTotal = (Double) valtickets[1];
}
List l = new StaticSentence(app.getSession()
, "SELECT PAYMENTS.PAYMENT, SUM(PAYMENTS.TOTAL) " +
"FROM PAYMENTS, TICKETS " +
"WHERE PAYMENTS.TICKETID = TICKETS.TICKETID AND TICKETS.MONEY = ? " +
"GROUP BY PAYMENTS.PAYMENT"
, SerializerWriteInteger.INSTANCE
, new SerializerReadClass(PaymentsModel.PaymentsLine.class)) //new SerializerReadBasic(new Datas[] {Datas.STRING, Datas.DOUBLE}))
.list(app.getActiveCashIndex());
if (l == null) {
p.m_lpayments = new ArrayList();
} else {
p.m_lpayments = l;
}
// Ventas
Object[] recsales = (Object []) new StaticSentence(app.getSession(),
"SELECT COUNT(DISTINCT TICKETS.TICKETID), " +
"SUM(UNITS * PRICE), " +
"SUM(PRODUCTSOUT.UNITS * PRODUCTSOUT.PRICE * (1 + PRODUCTSOUT.TAXRATE)) " +
"FROM TICKETS, PRODUCTSOUT WHERE TICKETS.TICKETID = PRODUCTSOUT.TICKETID " +
"AND TICKETS.MONEY = ? AND TICKETS.TICKETID IN (SELECT TICKETID FROM PAYMENTS WHERE PAYMENT <>'free')" // hespen
, SerializerWriteInteger.INSTANCE
, new SerializerReadBasic(new Datas[] {Datas.INT, Datas.DOUBLE, Datas.DOUBLE}))
.find(app.getActiveCashIndex());
if (recsales == null) {
p.m_iSales = new Integer(0);
p.m_dSalesSubtotal = new Double(0.0);
p.m_dSalesTotal = new Double(0.0);
} else {
p.m_iSales = (Integer) recsales[0];
p.m_dSalesSubtotal = (Double) recsales[1];
p.m_dSalesTotal = (Double) recsales[2];
}
List<SalesLine> asales = new StaticSentence(app.getSession()
,"SELECT TAXES.NAME, " +
"SUM(UNITS * PRICE), " +
"SUM(PRODUCTSOUT.UNITS * PRODUCTSOUT.PRICE * (1 + PRODUCTSOUT.TAXRATE)) " +
"FROM TICKETS, PRODUCTSOUT, TAXES WHERE TICKETS.TICKETID = PRODUCTSOUT.TICKETID AND PRODUCTSOUT.TAXID = TAXES.ID " +
"AND TICKETS.MONEY = ? AND TICKETS.TICKETID IN (SELECT TICKETID FROM PAYMENTS WHERE PAYMENT <> 'free') " + // hespen
"GROUP BY TAXES.ID, TAXES.NAME"
, SerializerWriteInteger.INSTANCE
, new SerializerReadClass(PaymentsModel.SalesLine.class))
.list(app.getActiveCashIndex());
if (asales == null) {
p.m_lsales = new ArrayList<SalesLine>();
} else {
p.m_lsales = asales;
}
return p;
}
public int getPayments() {
return m_iPayments.intValue();
}
public double getTotal() {
return m_dPaymentsTotal.doubleValue();
}
public String getHost() {
return m_sHost;
}
public Date getDateStart() {
return m_dDateStart;
}
public void setDateEnd(Date dValue) {
m_dDateEnd = dValue;
}
public Date getDateEnd() {
return m_dDateEnd;
}
public String printHost() {
return m_sHost;
}
public String printDateStart() {
return Formats.TIMESTAMP.formatValue(m_dDateStart);
}
public String printDateEnd() {
return Formats.TIMESTAMP.formatValue(m_dDateEnd);
}
public String printPayments() {
return Formats.INT.formatValue(m_iPayments);
}
public String printPaymentsTotal() {
return Formats.CURRENCY.formatValue(m_dPaymentsTotal);
}
public List<PaymentsLine> getPaymentLines() {
return m_lpayments;
}
public int getSales() {
return m_iSales.intValue();
}
public String printSales() {
return Formats.INT.formatValue(m_iSales);
}
public String printSalesSubtotal() {
return Formats.CURRENCY.formatValue(m_dSalesSubtotal);
}
public String printSalesTotal() {
return Formats.CURRENCY.formatValue(m_dSalesTotal);
}
public List<SalesLine> getSaleLines() {
return m_lsales;
}
public AbstractTableModel getPaymentsModel() {
return new AbstractTableModel() {
public String getColumnName(int column) {
return AppLocal.getIntString(PAYMENTHEADERS[column]);
}
public int getRowCount() {
return m_lpayments.size();
}
public int getColumnCount() {
return PAYMENTHEADERS.length;
}
public Object getValueAt(int row, int column) {
PaymentsLine l = m_lpayments.get(row);
switch (column) {
case 0: return l.getType();
case 1: return l.getValue();
default: return null;
}
}
};
}
public static class SalesLine implements SerializableRead {
private String m_SalesTaxes;
private Double m_SalesSubtotal;
private Double m_SalesTotal;
public void readValues(DataRead dr) throws BasicException {
m_SalesTaxes = dr.getString(1);
m_SalesSubtotal = dr.getDouble(2);
m_SalesTotal = dr.getDouble(3);
}
public String printTax() {
return m_SalesTaxes;
}
public String printSubtotal() {
return Formats.CURRENCY.formatValue(m_SalesSubtotal);
}
public String printTotal() {
return Formats.CURRENCY.formatValue(m_SalesTotal);
}
public String getTax() {
return m_SalesTaxes;
}
public Double getSubtotal() {
return m_SalesSubtotal;
}
public Double getTotal() {
return m_SalesTotal;
}
}
public AbstractTableModel getSalesModel() {
return new AbstractTableModel() {
public String getColumnName(int column) {
return AppLocal.getIntString(SALEHEADERS[column]);
}
public int getRowCount() {
return m_lsales.size();
}
public int getColumnCount() {
return SALEHEADERS.length;
}
public Object getValueAt(int row, int column) {
SalesLine l = m_lsales.get(row);
switch (column) {
case 0: return l.getTax();
case 1: return l.getSubtotal();
case 2: return l.getTotal();
default: return null;
}
}
};
}
public static class PaymentsLine implements SerializableRead {
private String m_PaymentType;
private Double m_PaymentValue;
public void readValues(DataRead dr) throws BasicException {
m_PaymentType = dr.getString(1);
m_PaymentValue = dr.getDouble(2);
}
public String printType() {
return AppLocal.getIntString("transpayment." + m_PaymentType);
}
public String getType() {
return m_PaymentType;
}
public String printValue() {
return Formats.CURRENCY.formatValue(m_PaymentValue);
}
public Double getValue() {
return m_PaymentValue;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -