📄 sentencecontainer.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 USApackage net.adrianromero.tpv.forms;import java.util.Date;import java.util.List;import net.adrianromero.tpv.data.*;import net.adrianromero.tpv.ticket.*;import net.adrianromero.data.loader.*;import net.adrianromero.format.Formats;import net.adrianromero.basic.BasicException;import net.adrianromero.tpv.inventory.LocationInfo;import net.adrianromero.tpv.inventory.MovementReason;import net.adrianromero.tpv.mant.FloorsInfo;import net.adrianromero.tpv.payment.PaymentInfo;public abstract class SentenceContainer implements DataLogic { protected Session s; protected Datas[] stockdiaryDatas; protected Datas[] productcatDatas; protected Datas[] paymenttabledatas; protected Datas[] stockdatas; /** Creates a new instance of SentenceContainerGeneric */ public SentenceContainer() { productcatDatas = new Datas[] {Datas.STRING, Datas.STRING, Datas.STRING, Datas.BOOLEAN, Datas.BOOLEAN, Datas.DOUBLE, Datas.DOUBLE, Datas.INT, Datas.INT, Datas.IMAGE, Datas.DOUBLE, Datas.DOUBLE, Datas.BOOLEAN, Datas.INT}; stockdiaryDatas = new Datas[] {Datas.INT, Datas.TIMESTAMP, Datas.INT, Datas.INT, Datas.STRING, Datas.DOUBLE, Datas.DOUBLE}; paymenttabledatas = new Datas[] {Datas.INT, Datas.TIMESTAMP, Datas.INT, Datas.STRING, Datas.INT, Datas.STRING, Datas.DOUBLE}; stockdatas = new Datas[] {Datas.INT, Datas.STRING, Datas.STRING, Datas.DOUBLE, Datas.DOUBLE, Datas.DOUBLE}; } public void init(Session s){ this.s = s; } // Utilidades de productos public final ProductInfoExt getProductInfo(String sCode) throws BasicException { return (ProductInfoExt) new PreparedSentence(s , "SELECT P.REFERENCE, P.CODE, P.NAME, P.ISCOM, P.ISSCALE, P.PRICEBUY, P.PRICESELL, P.TAX, T.NAME, T.RATE, P.CATEGORY, P.IMAGE " + "FROM PRODUCTS P LEFT OUTER JOIN TAXES T ON P.TAX = T.ID WHERE P.CODE = ?" , SerializerWriteString.INSTANCE , new SerializerReadClass(ProductInfoExt.class)).find(sCode); } public final ProductInfoExt getProductInfo2(String sReference) throws BasicException { return (ProductInfoExt) new PreparedSentence(s , "SELECT P.REFERENCE, P.CODE, P.NAME, P.ISCOM, P.ISSCALE, P.PRICEBUY, P.PRICESELL, P.TAX, T.NAME, T.RATE, P.CATEGORY, P.IMAGE " + "FROM PRODUCTS P LEFT OUTER JOIN TAXES T ON P.TAX = T.ID WHERE P.REFERENCE = ?" , SerializerWriteString.INSTANCE , new SerializerReadClass(ProductInfoExt.class)).find(sReference); } // Catalogo de productos public final List<CategoryInfo> getCategoryList() throws BasicException { return getCategoriesList().list(); } public final List<ProductInfoExt> getProductCatalog() throws BasicException { return new PreparedSentence(s , "SELECT P.REFERENCE, P.CODE, P.NAME, P.ISCOM, P.ISSCALE, P.PRICEBUY, P.PRICESELL, P.TAX, T.NAME, T.RATE, P.CATEGORY, P.IMAGE " + "FROM PRODUCTS P LEFT OUTER JOIN TAXES T ON P.TAX = T.ID LEFT OUTER JOIN CATEGORIES C ON P.CATEGORY = C.ID, PRODUCTS_CAT O WHERE P.REFERENCE = O.REFERENCE " + "ORDER BY C.NAME, O.CATORDER, P.NAME" , null , new SerializerReadClass(ProductInfoExt.class)).list(); } public final List<ProductInfoExt> getProductComments(String sReference) throws BasicException { return new PreparedSentence(s , "SELECT P.REFERENCE, P.CODE, P.NAME, P.ISCOM, P.ISSCALE, P.PRICEBUY, P.PRICESELL, P.TAX, T.NAME, T.RATE, P.CATEGORY, P.IMAGE " + "FROM PRODUCTS P LEFT OUTER JOIN TAXES T ON P.TAX = T.ID, PRODUCTS_CAT O, PRODUCTS_COM M WHERE P.REFERENCE = O.REFERENCE AND P.REFERENCE = M.REFERENCE2 AND P.REFERENCE = ? " + "ORDER BY O.CATORDER, P.NAME" , SerializerWriteString.INSTANCE , new SerializerReadClass(ProductInfoExt.class)).list(sReference); } // Editor de productos public final List getProductComments2(String sReference) throws BasicException { return new PreparedSentence(s , "SELECT PRODUCTS.REFERENCE, PRODUCTS.NAME FROM PRODUCTS, PRODUCTS_COM " + "WHERE PRODUCTS.REFERENCE = PRODUCTS_COM.REFERENCE2 AND PRODUCTS_COM.REFERENCE = ? " + "ORDER BY PRODUCTS.NAME" , SerializerWriteString.INSTANCE , new SerializerReadBasic(new Datas[] {Datas.STRING, Datas.STRING})).list(sReference); } // Listado de productos public final SentenceList getProductList() { return new StaticSentence(s , new QBFBuilder("SELECT P.REFERENCE, P.CODE, P.NAME, P.ISCOM, P.ISSCALE, P.PRICEBUY, P.PRICESELL, P.TAX, T.NAME, T.RATE, P.CATEGORY, P.IMAGE FROM PRODUCTS P LEFT OUTER JOIN TAXES T ON P.TAX = T.ID WHERE ?(QBF_FILTER) ORDER BY P.NAME", new String[] {"P.NAME", "P.PRICEBUY", "P.PRICESELL", "P.CATEGORY", "P.CODE"}) , new SerializerWriteBasic(new Datas[] {Datas.OBJECT, Datas.STRING, Datas.OBJECT, Datas.DOUBLE, Datas.OBJECT, Datas.DOUBLE, Datas.OBJECT, Datas.INT, Datas.OBJECT, Datas.STRING}) , new SerializerReadClass(ProductInfoExt.class)); } // Listados para combo public final SentenceList getTaxList() { return new StaticSentence(s , "SELECT ID, NAME, RATE FROM TAXES ORDER BY NAME" , null , new SerializerReadClass(TaxInfo.class)); } public final SentenceList getCategoriesList() { return new StaticSentence(s , "SELECT ID, NAME, IMAGE FROM CATEGORIES ORDER BY NAME" , null , new SerializerReadClass(CategoryInfo.class)); } public final SentenceList getLocationsList() { return new StaticSentence(s , "SELECT ID, NAME, ADDRESS FROM LOCATIONS ORDER BY NAME" , null , new SerializerReadClass(LocationInfo.class)); } public final SentenceList getFloorsList() { return new StaticSentence(s , "SELECT ID, NAME FROM FLOORS ORDER BY NAME" , null , new SerializerReadClass(FloorsInfo.class)); } public final TicketInfo loadTicket(Integer ticketid) throws BasicException { TicketInfo ticket = (TicketInfo) new PreparedSentence(s , "SELECT TICKETID, DATENEW, MONEY, PERSON FROM TICKETS WHERE TICKETID = ?" , SerializerWriteInteger.INSTANCE , new SerializerReadClass(TicketInfo.class)).find(ticketid); if (ticket != null) { ticket.setLines(new PreparedSentence(s , "SELECT TICKETID, TICKETLINE, PRODUCT, NAME, ISCOM, UNITS, PRICE, TAXID, TAXRATE FROM PRODUCTSOUT WHERE TICKETID = ?" , SerializerWriteInteger.INSTANCE , new SerializerReadClass(TicketLineInfo.class)).list(ticketid)); } return ticket; } public final void saveTicket(final TicketInfo ticket, final Integer location) throws BasicException { Transaction t = new Transaction(s) { public Object transact() throws BasicException { // new ticket new PreparedSentence(s , "INSERT INTO TICKETS (TICKETID, DATENEW, MONEY, PERSON) VALUES (?, ?, ?, ?)" , SerializerWriteBuilder.INSTANCE).exec(ticket); SentenceExec ticketlineinsert = new PreparedSentence(s , "INSERT INTO PRODUCTSOUT (TICKETID, TICKETLINE, PRODUCT, NAME, ISCOM, UNITS, PRICE, TAXID, TAXRATE) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)" , SerializerWriteBuilder.INSTANCE); for (TicketLineInfo l : ticket.getLines()) { ticketlineinsert.exec(l); if (l.getProductReference() != null) { // Hay que actualizar el stock si el hay producto Object[] diary = new Object[7]; diary[0] = getNextStockDiary(); diary[1] = ticket.getDate(); diary[2] = l.getMultiply() < 0.0 ? MovementReason.IN_REFUND.getKey() : MovementReason.OUT_SALE.getKey(); diary[3] = location; diary[4] = l.getProductReference() ; diary[5] = new Double(-l.getMultiply()); diary[6] = new Double(l.getPrice()); getStockDiaryInsert().exec(diary); } } SentenceExec paymentinsert = new PreparedSentence(s , "INSERT INTO PAYMENTS (ID, TICKETID, PAYMENT, TOTAL) VALUES (?, ?, ?, ?)" , new SerializerWriteBasic(new Datas[] {Datas.INT, Datas.INT, Datas.STRING, Datas.DOUBLE})); for (PaymentInfo p : ticket.getPayments()) { Object[] payment = new Object[4]; payment[0] = getNextPayment(); payment[1] = new Integer(ticket.getId()); payment[2] = p.getName(); payment[3] = new Double(p.getTotal()); paymentinsert.exec(payment); } return null; } }; t.execute(); } public final void deleteTicket(final TicketInfo ticket, final Integer location) throws BasicException { Transaction t = new Transaction(s) { public Object transact() throws BasicException { // actualizamos el inventario. Date d = new Date(); for (int i = 0; i < ticket.getLinesCount(); i++) { if (ticket.getLine(i).getProductReference() != null) { // Hay que actualizar el stock si el hay producto Object[] diary = new Object[7]; diary[0] = getNextStockDiary(); diary[1] = d; diary[2] = ticket.getLine(i).getMultiply() >= 0.0 ? MovementReason.IN_REFUND.getKey() : MovementReason.OUT_SALE.getKey(); diary[3] = location; diary[4] = ticket.getLine(i).getProductReference() ; diary[5] = new Double(ticket.getLine(i).getMultiply()); diary[6] = new Double(ticket.getLine(i).getPrice()); getStockDiaryInsert().exec(diary); } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -