// uniCenta oPOS - Touch Friendly Point Of Sale
// Copyright (c) 2009-2018 uniCenta
// https://unicenta.com
//
// This file is part of uniCenta oPOS
//
// uniCenta oPOS 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 3 of the License, or
// (at your option) any later version.
//
// uniCenta oPOS 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 uniCenta oPOS. If not, see .
package com.unicenta.pos.suppliers;
import com.unicenta.basic.BasicException;
import com.unicenta.data.loader.*;
import com.unicenta.format.Formats;
import com.unicenta.pos.forms.AppLocal;
import com.unicenta.pos.forms.BeanFactoryDataSingle;
import java.util.List;
/**
* @author JG uniCenta
*/
public class DataLogicSuppliers extends BeanFactoryDataSingle {
/**
* Main Method for supplier object
*/
protected Session s;
private TableDefinition tsuppliers;
private static final Datas[] supplierdatas = new Datas[] {
Datas.STRING,
Datas.STRING,
Datas.STRING,
Datas.STRING,
Datas.STRING,
Datas.STRING,
Datas.STRING};
/**
*
* @param s
*/
@Override
public void init(Session s){
this.s = s;
tsuppliers = new TableDefinition(s
, "suppliers"
, new String[] {
"ID",
"SEARCHKEY",
"TAXID",
"NAME",
"MAXDEBT",
"ADDRESS",
"ADDRESS2",
"POSTAL",
"CITY",
"REGION",
"COUNTRY",
"FIRSTNAME",
"LASTNAME",
"EMAIL",
"PHONE",
"PHONE2",
"FAX",
"NOTES",
"VISIBLE",
"CURDATE",
"CURDEBT",
"VATID" }
, new String[] {
"ID",
AppLocal.getIntString("label.searchkey"),
AppLocal.getIntString("label.suppliertaxid"),
AppLocal.getIntString("label.name"),
AppLocal.getIntString("label.maxdebt"),
AppLocal.getIntString("label.address"),
AppLocal.getIntString("label.address2"),
AppLocal.getIntString("label.postal"),
AppLocal.getIntString("label.city"),
AppLocal.getIntString("label.region"),
AppLocal.getIntString("label.country"),
AppLocal.getIntString("label.firstname"),
AppLocal.getIntString("label.lastname"),
AppLocal.getIntString("label.email"),
AppLocal.getIntString("label.phone"),
AppLocal.getIntString("label.phone2"),
AppLocal.getIntString("label.fax"),
AppLocal.getIntString("label.notes"),
"VISIBLE",
AppLocal.getIntString("label.curdate"),
AppLocal.getIntString("label.curdebt"),
AppLocal.getIntString("label.suppliervatid") }
, new Datas[] {
Datas.STRING, Datas.STRING, Datas.STRING, Datas.STRING,
Datas.DOUBLE, Datas.STRING, Datas.STRING, Datas.STRING,
Datas.STRING, Datas.STRING, Datas.STRING, Datas.STRING,
Datas.STRING, Datas.STRING, Datas.STRING, Datas.STRING,
Datas.STRING, Datas.STRING, Datas.BOOLEAN, Datas.TIMESTAMP,
Datas.DOUBLE, Datas.STRING }
, new Formats[] {
Formats.STRING, Formats.STRING, Formats.STRING, Formats.STRING,
Formats.CURRENCY, Formats.STRING, Formats.STRING, Formats.STRING,
Formats.STRING, Formats.STRING, Formats.STRING, Formats.STRING,
Formats.STRING, Formats.STRING, Formats.STRING, Formats.STRING,
Formats.STRING, Formats.STRING, Formats.BOOLEAN, Formats.TIMESTAMP,
Formats.CURRENCY, Formats.STRING }
, new int[] {0}
);
}
/**
*
* @return supplier data
*/
public SentenceList getSupplierList() {
return new StaticSentence(s
, new QBFBuilder("SELECT "
+ "ID, SEARCHKEY, TAXID, NAME, "
+ "POSTAL, PHONE, EMAIL "
+ "FROM suppliers "
+ "WHERE VISIBLE = " + s.DB.TRUE() + " AND ?(QBF_FILTER) ORDER BY NAME"
, new String[] {"SEARCHKEY", "TAXID", "NAME", "POSTAL", "PHONE", "EMAIL"})
, new SerializerWriteBasic(new Datas[] {
Datas.OBJECT, Datas.STRING,
Datas.OBJECT, Datas.STRING,
Datas.OBJECT, Datas.STRING,
Datas.OBJECT, Datas.STRING,
Datas.OBJECT, Datas.STRING,
Datas.OBJECT, Datas.STRING})
, (DataRead dr) -> {
SupplierInfo s1 = new SupplierInfo(dr.getString(1));
s1.setSearchkey(dr.getString(2));
s1.setTaxid(dr.getString(3));
s1.setName(dr.getString(4));
s1.setPostal(dr.getString(5));
s1.setPhone(dr.getString(6));
s1.setEmail(dr.getString(7));
return s1;
});
}
/**
*
* @return supplier data
*/
public SentenceList getSuppList() {
return new StaticSentence(s
, new QBFBuilder("SELECT "
+ "ID, SEARCHKEY, TAXID, NAME, "
+ "POSTAL, PHONE, EMAIL "
+ "FROM suppliers "
+ "WHERE VISIBLE = " + s.DB.TRUE() + " ORDER BY NAME"
, new String[] {"SEARCHKEY", "TAXID", "NAME", "POSTAL", "PHONE", "EMAIL"})
, new SerializerWriteBasic(new Datas[] {
Datas.OBJECT, Datas.STRING,
Datas.OBJECT, Datas.STRING,
Datas.OBJECT, Datas.STRING,
Datas.OBJECT, Datas.STRING,
Datas.OBJECT, Datas.STRING,
Datas.OBJECT, Datas.STRING})
, (DataRead dr) -> {
SupplierInfo s1 = new SupplierInfo(dr.getString(1));
s1.setSearchkey(dr.getString(2));
s1.setTaxid(dr.getString(3));
s1.setName(dr.getString(4));
s1.setPostal(dr.getString(5));
s1.setPhone(dr.getString(6));
s1.setEmail(dr.getString(7));
return s1;
});
}
/**
*
* @param supplier
* @return
* @throws BasicException
*/
public int updateSupplierExt(final SupplierInfoExt supplier) throws BasicException {
return new PreparedSentence(s
, "UPDATE suppliers SET NOTES = ? WHERE ID = ?"
, SerializerWriteParams.INSTANCE )
.exec(new DataParams() {
@Override
public void writeValues() throws BasicException {
setString(1, supplier.getNotes());
setString(2, supplier.getID());
}
});
}
public final TableDefinition getTableSuppliers() {
return tsuppliers;
}
/**
* JG Aug 2017 - Return Supplier Id - sId param
* @param sId
* @return
* @throws BasicException
*/
@SuppressWarnings("unchecked")
public final List getSuppliersTransactionList(String sId) throws BasicException {
return new PreparedSentence(s,
"SELECT "
+ "stockdiary.datenew, "
+ "products.NAME, "
+ "stockdiary.units, "
+ "stockdiary.price, "
+ "stockdiary.reason, "
+ "suppliers.id "
+ "FROM (stockdiary stockdiary "
+ "INNER JOIN suppliers suppliers "
+ "ON (stockdiary.supplier = suppliers.id)) "
+ "INNER JOIN products products "
+ "ON (stockdiary.product = products.ID) "
+ "WHERE suppliers.id = ? "
+ "GROUP BY "
+ "stockdiary.datenew, "
+ "products.NAME, "
+ "stockdiary.reason "
+ "ORDER BY stockdiary.datenew DESC",
SerializerWriteString.INSTANCE,
SupplierTransaction.getSerializerRead()).list(sId);
}
}