⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 paymentsmodel.java

📁 是一个专门设计用于触摸屏的POS(point of sales)应用软件
💻 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 + -