package is.idega.idegaweb.golf.service;
import is.idega.idegaweb.golf.entity.Account;
import is.idega.idegaweb.golf.entity.AccountEntry;
import is.idega.idegaweb.golf.entity.AccountHome;
import is.idega.idegaweb.golf.entity.AccountYear;
import is.idega.idegaweb.golf.entity.AccountYearHome;
import is.idega.idegaweb.golf.entity.Member;
import is.idega.idegaweb.golf.entity.MemberHome;
import is.idega.idegaweb.golf.entity.Payment;
import is.idega.idegaweb.golf.entity.PaymentRound;
import is.idega.idegaweb.golf.entity.PriceCatalogue;
import is.idega.idegaweb.golf.entity.PriceCatalogueHome;
import is.idega.idegaweb.golf.entity.Union;
import is.idega.idegaweb.golf.entity.UnionMemberInfo;
import java.io.IOException;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.util.Collections;
import java.util.Hashtable;
import java.util.List;
import java.util.StringTokenizer;
import java.util.Vector;
import javax.ejb.FinderException;
import com.idega.data.EntityFinder;
import com.idega.data.IDOLookup;
import com.idega.idegaweb.IWBundle;
import com.idega.idegaweb.IWResourceBundle;
import com.idega.presentation.IWContext;
import com.idega.presentation.Image;
import com.idega.presentation.PresentationObject;
import com.idega.presentation.PresentationObjectContainer;
import com.idega.presentation.Table;
import com.idega.presentation.text.Link;
import com.idega.presentation.text.Text;
import com.idega.presentation.ui.CheckBox;
import com.idega.presentation.ui.CloseButton;
import com.idega.presentation.ui.DropdownMenu;
import com.idega.presentation.ui.Form;
import com.idega.presentation.ui.HiddenInput;
import com.idega.presentation.ui.IntegerInput;
import com.idega.presentation.ui.RadioButton;
import com.idega.presentation.ui.SubmitButton;
import com.idega.presentation.ui.TextInput;
import com.idega.presentation.ui.Window;
import com.idega.util.IWTimestamp;
/**
* Title: Description: Copyright: Copyright (c) 2001 Company: idega multimedia
*
* @author <a href="mailto:aron@idega.is">aron@idega.is </a>
* @version 1.0
*/
public class Tariffer extends PresentationObjectContainer {
private String catal_action = "";
private String union_id = "1";
private int un_id, cashier_id, numOfCat, inputLines, saveCount, count, memberCount = 0;
private String unionName;
private String unionAbbrev;
private Union[] unions;
private Member thisMember, Cashier;
private Member[] unionMembers;
private PriceCatalogue[] Catalogs;
private String MenuColor, ItemColor, HeaderColor, LightColor, DarkColor, OtherColor;
private boolean isAdmin = false;
private java.util.Locale currentLocale;
private Link sidan, UpdateLink, PriceLink;
private String[][] Values = null;
private Window window;
private Member[][] mbsArray;
private Vector[] mbsVectorArray, mbsInfoVectorArray;
private Vector[] TotalMembersVector;
private int CatalogIds[];
private Integer[][] totals = null;
private int cellspacing = 1, cellpadding = 2;
private Thread payThread = null;
private String tablewidth = "539";
private String filepath = null, fileSeparator = null;
private Hashtable HeadsHash = null, AccHsh = null;
private Table MainFrame;
private int mainYear;
private final static String IW_BUNDLE_IDENTIFIER = "com.idega.projects.golf.tariff";
protected IWResourceBundle iwrb;
protected IWBundle iwb;
public Tariffer() {
HeaderColor = "#336660";
LightColor = "#CEDFD0";
DarkColor = "#ADCAB1";
OtherColor = "#6E9073";
setMenuColor("#ADCAB1");//,"#CEDFD0"
setItemColor("#CEDFD0");//"#D0F0D0"
setInputLines(15);
currentLocale = java.util.Locale.getDefault();
}
private void makeMainFrame() {
MainFrame = new Table(2, 3);
MainFrame.setWidth(1, "70");
MainFrame.setWidth(2, tablewidth);
MainFrame.setCellspacing(0);
MainFrame.setCellpadding(0);
}
private void addMain(PresentationObject T) {
MainFrame.add(T, 2, 3);
}
private void addRight(PresentationObject T) {
MainFrame.add(T, 4, 3);
}
private void addLinks(PresentationObject T) {
MainFrame.add(T, 2, 2);
}
private Table makeMainTable(int menuNr) {
Link PiLink = new Link("_", "/tarif/pi.jsp");
String sHeader = iwrb.getLocalizedString("clubtariffs", "Club Tariffs of");
Text HeaderText = new Text(sHeader + unionAbbrev);
HeaderText.setFontColor("#FFFFFF");
Table HeaderTable = new Table(1, 1);
HeaderTable.setColor(HeaderColor);
HeaderTable.setWidth(tablewidth);
HeaderTable.add(HeaderText, 1, 1);
Table MainTable = new Table(2, 5);
MainTable.setWidth(1, "50");
MainTable.setBorder(0);
MainTable.setCellpadding(0);
MainTable.setCellspacing(0);
MainTable.setWidth(tablewidth);
MainTable.setRowAlignment(5, "left");
MainTable.add(makeLinkTable(menuNr), 2, 1);
MainTable.add(HeaderTable, 2, 2);
//MainTable.add(PiLink,1,5);
Link SaveLink = new Link((iwrb.getImage("save.gif")));
SaveLink.addParameter("catal_action", "save");
SaveLink.addParameter("union_id", union_id);
MainTable.add(new CloseButton((iwrb.getImage("close.gif"))), 2, 4);
if (menuNr == 3)
MainTable.add(SaveLink, 2, 4);
return MainTable;
}
public static Link getExtraCatalogueLink(PresentationObject obj, String union_id) {
Window loginWindow = new Window("Pricecatalogue", 400, 400, "/tarif/pcmake.jsp");
loginWindow.setScrollbar(false);
loginWindow.setResizable(true);
loginWindow.setParentToReload();
Link sidan = new Link(obj, loginWindow);
sidan.addParameter("catal_action", "main");
sidan.addParameter("union_id", union_id);
return sidan;
}
public static Link getExtraCatalogueLink(String name, String union_id) {
Link sidan = new Link(name, "/tarif/pcmake.jsp");
sidan.addParameter("catal_action", "main");
sidan.addParameter("union_id", union_id);
return sidan;
}
public Link getMemberPaymentsLink(String name, String member_id) {
Link L2 = new Link(name, "/tarif/payments.jsp");
L2.addParameter("catal_member_id", member_id);
return L2;
}
public DropdownMenu getExtraCatalogueDropdownMenu(String unionID) throws SQLException {
DropdownMenu drp = new DropdownMenu();
PriceCatalogue[] p = getExtraCatalogues(unionID);
String sSelected = iwrb.getLocalizedString("specialtariffs", "Category");
drp.addDisabledMenuElement("0", sSelected);
for (int i = 0; i < p.length; i++) {
drp.addMenuElement(p[i].getID(), p[i].getName());
}
return drp;
}
public DropdownMenu getExtraCatalogueDropdownMenu(String name, String unionID) throws SQLException {
DropdownMenu drp = new DropdownMenu(name);
PriceCatalogue[] p = getExtraCatalogues(unionID);
String sSelected = iwrb.getLocalizedString("specialtariffs", "Category");
drp.addDisabledMenuElement("0", sSelected);
for (int i = 0; i < p.length; i++) {
drp.addMenuElement(p[i].getID(), p[i].getName());
}
return drp;
}
public Link getTarifLink(Image image, String union_id) {
Link sidan = new Link(image);
sidan.addParameter("catal_action", "main");
sidan.addParameter("union_id", union_id);
return sidan;
}
public Link getTarifLink(String text, String union_id) {
Link sidan = new Link(text);
sidan.addParameter("catal_action", "main");
sidan.addParameter("union_id", union_id);
return sidan;
}
public Link getTarifLink(String union_id) {
Link sidan = new Link();
sidan.addParameter("catal_action", "main");
sidan.addParameter("union_id", union_id);
return sidan;
}
public String getExtraCatalogueSQL(String union_id) {
return "select * from price_catalogue where union_id = " + union_id + " and in_use = 'Y' and is_independent = 'Y'";
}
public int getActiveMainYear(int iUnionId) {
try {
AccountYear[] AY = (AccountYear[]) ((AccountYear) IDOLookup.instanciateEntity(AccountYear.class)).findAllByColumnEquals("union_id", String.valueOf(iUnionId), "active_year", "Y");
if (AY.length > 0)
return AY[0].getMainYear();
}
catch (Exception ex) {
ex.printStackTrace();
}
return IWTimestamp.RightNow().getYear();
}
private Table makeLinkTable(int menuNr) {
Table LinkTable = new Table(1, 1);
LinkTable.setBorder(0);
LinkTable.setCellpadding(0);
LinkTable.setCellspacing(0);
LinkTable.setWidth(tablewidth);
Link sidan = new Link(iwrb.getImage(menuNr == 1 ? ("ratelist.gif") : ("ratelist1.gif")));
sidan.addParameter("catal_action", "main");
sidan.addParameter("union_id", union_id);
Link UpdateLink = new Link(iwrb.getImage(menuNr == 2 ? ("change.gif") : ("change1.gif")));
UpdateLink.addParameter("catal_action", "change");
UpdateLink.addParameter("union_id", union_id);
Link ViewLink = new Link(iwrb.getImage(menuNr == 3 ? ("look.gif") : ("look1.gif")));
ViewLink.addParameter("catal_action", "view");
ViewLink.addParameter("union_id", union_id);
Link PriceLink = new Link(iwrb.getImage(menuNr == 5 ? ("createratelist.gif") : ("createratelist1.gif")));
PriceLink.addParameter("catal_action", "price");
PriceLink.addParameter("union_id", union_id);
Link YearLink = new Link(new Image(menuNr == 6 ? "/pics/tarif/utskrift.gif" : "/pics/tarif/utskrift1.gif"));
YearLink.addParameter("catal_action", "year");
YearLink.addParameter("union_id", union_id);
Link BookingLink = new Link(iwrb.getImage(menuNr == 7 ? ("book.gif") : ("book1.gif")), "/tarif/paymentbook.jsp");
BookingLink.addParameter("union_id", union_id);
LinkTable.add(sidan, 1, 1);
if (isAdmin) {
LinkTable.add(UpdateLink, 1, 1);
LinkTable.add(ViewLink, 1, 1);
LinkTable.add(PriceLink, 1, 1);
LinkTable.add(YearLink, 1, 1);
LinkTable.add(BookingLink, 1, 1);
}
return LinkTable;
}
private Table makeSubZeroTable() {
int tablelines = 4;
if (Values != null)
tablelines += Values.length;
Table T = new Table(7, tablelines);
T.setBorder(0);
T.setWidth(tablewidth);
T.setColumnAlignment(1, "center");
T.setColumnAlignment(3, "right");
T.setColumnAlignment(4, "right");
T.setColumnAlignment(5, "right");
T.setColumnAlignment(6, "right");
T.setHorizontalZebraColored(DarkColor, LightColor);
T.setCellpadding(cellpadding);
T.setCellspacing(cellspacing);
String sNumber = iwrb.getLocalizedString("nr", "Nr");
String sDesc = iwrb.getLocalizedString("description", "Description");
String sAmount = iwrb.getLocalizedString("amount", "Amount");
String sCount = iwrb.getLocalizedString("count", "Count");
String sTotal = iwrb.getLocalizedString("total", "Total");
String sList = iwrb.getLocalizedString("list", "List");
T.add(sNumber, 1, 1);
T.add(sDesc, 2, 1);
T.add(sAmount, 3, 1);
T.add(sCount, 4, 1);
T.add("%", 5, 1);
T.add(sTotal, 6, 1);
T.add(sList, 7, 1);
if (Values != null) {
int sum = 0;
int count = 0;
String val;
java.text.NumberFormat nf = java.text.NumberFormat.getInstance();
java.text.DecimalFormat df = new java.text.DecimalFormat("#0.0");
for (int i = 0; i < Values.length; i++) {
for (int j = 0; j < (Values[i].length - 5); j++) {
val = Values[i][j];
if (j == 2)
val = nf.format(Integer.parseInt(val)) + " Kr";
T.add(val, j + 1, i + 2);
}
if (totals != null) {
T.add(totals[i][0].toString(), 4, i + 2);
int c = (totals[i][0]).intValue();
count = count + c;
if (memberCount != 0)
T.add(df.format((((float) c / memberCount) * 100)) + " %", 5, i + 2);
Integer d = totals[i][1];
if (d != null) {
T.add(nf.format(d) + " Kr", 6, i + 2);
sum = sum + totals[i][1].intValue();
}
}
if (mbsVectorArray != null) {
Link L = new Link(sList + (i + 1));
L.addParameter("catal_action", "list");
L.addParameter("catal_list_number", i);
L.addParameter("union_id", union_id);
T.add(L, 7, i + 2);
}
}
if (totals != null) {
T.setRowColor(tablelines, "#FFFFFF");
T.add(sTotal + " : ", 3, tablelines);
if (memberCount != 0) {
T.add(String.valueOf(memberCount), 4, tablelines);
}
else {
T.add(Integer.toString(count), 5, tablelines);
}
T.add(nf.format(sum) + " Kr", 6, tablelines);
if (mbsVectorArray != null) {
if (mbsVectorArray[mbsVectorArray.length - 2] != null && mbsVectorArray[mbsVectorArray.length - 2].size() > 0) {
String sIndependent = iwrb.getLocalizedString("independent", "Independent");
Link L = new Link(sIndependent);
L.addParameter("catal_action", "list");
L.addParameter("catal_list_number", mbsVectorArray.length - 2);
L.addParameter("union_id", union_id);
L.addParameter("listextra", "ups");
T.add(totals[totals.length - 2][0].toString(), 4, tablelines - 2);
T.add(L, 6, tablelines - 2);
}
if (mbsVectorArray[mbsVectorArray.length - 1] != null && mbsVectorArray[mbsVectorArray.length - 1].size() > 0) {
String sRemaining = iwrb.getLocalizedString("remaining", "Remaining");
Link L = new Link(sRemaining);
L.addParameter("catal_action", "list");
L.addParameter("catal_list_number", mbsVectorArray.length - 1);
L.addParameter("union_id", union_id);
L.addParameter("listextra", "not");
T.add(totals[totals.length - 1][0].toString(), 4, tablelines - 1);
T.add(L, 7, tablelines - 1);
}
}
}
}
return T;
}
public void setMenuColor(String MenuColor) {
this.MenuColor = MenuColor;
}
public void setItemColor(String ItemColor) {
this.ItemColor = ItemColor;
}
public void setInputLines(int inputlines) {
this.inputLines = inputlines;
}
private void control(IWContext modinfo) throws IOException {
try {
union_id = (String) modinfo.getSession().getAttribute("golf_union_id");
if (modinfo.getSession().getAttribute("member_login") != null) {
Cashier = (Member) modinfo.getSession().getAttribute("member_login");
cashier_id = Cashier.getID();
}
try {
String sNoClub = iwrb.getLocalizedString("noclub", "Need to choose a club");
if (union_id == null) {
add(sNoClub);
return;
}
un_id = Integer.parseInt(union_id);
}
catch (NumberFormatException nfe) {
String sNoClub = iwrb.getLocalizedString("noclub", "Need to choose a club");
add(sNoClub);
}
unions = (Union[]) ((Union) IDOLookup.instanciateEntity(Union.class)).findAllByColumnEquals("union_id", un_id);
unionName = unions[0].getName();
unionAbbrev = unions[0].getAbbrevation();
mainYear = getActiveMainYear(un_id);
boolean hasSomeValues = false;
fileSeparator = System.getProperty("file.separator");
filepath = modinfo.getServletContext().getRealPath(fileSeparator + "files");
if (modinfo.getParameter("catal_action") == null) {
doMain(modinfo);
}
if (modinfo.getParameter("catal_action") != null) {
catal_action = modinfo.getParameter("catal_action");
if (catal_action.equals("main")) {
doMain(modinfo);
}
else if (catal_action.equals("change")) {
doChange(modinfo);
}
else if (catal_action.equals("update")) {
doUpdate(modinfo);
}
else if (catal_action.equals("view")) {
doView(modinfo);
}
else if (catal_action.equals("save")) {
doSave(modinfo);
}
else if (catal_action.equals("list")) {
doList(modinfo);
}
else if (catal_action.equals("file")) {
doFile(modinfo);
}
else if (catal_action.equals("price")) {
doNotPrice(modinfo);
}
else if (catal_action.equals("skrifa")) {
doSkrifa(modinfo);
}
else if (catal_action.equals("gjalda")) {
doPrice(modinfo);
}
else if (catal_action.equals("updateextra")) {
doUpdateExtra(modinfo);
}
else if (catal_action.equals("seek")) {
doSeek(modinfo);
}
else if (catal_action.equals("year")) {
doYear(modinfo);
}
}
}
catch (SQLException S) {
S.printStackTrace();
}
catch (FinderException fe) {
fe.printStackTrace();
}
}
private void doMain(IWContext modinfo) throws SQLException {
//PriceCatalogue pricecatalog = new PriceCatalogue();
List CatalogList = this.getCatalogList(union_id);
java.text.NumberFormat nf = java.text.NumberFormat.getInstance();
Table MainTable = makeMainTable(1);
int count;
if (CatalogList != null)
count = CatalogList.size();
else
count = 0;
Table catalTable = new Table(3, count + 1);
catalTable.setWidth(tablewidth);
catalTable.setHorizontalZebraColored(DarkColor, LightColor);
catalTable.setCellpadding(cellpadding);
catalTable.setCellspacing(cellspacing);
catalTable.setColumnAlignment(3, "right");
String sNumber = iwrb.getLocalizedString("nr", " ");
String sDesc = iwrb.getLocalizedString("description", "Description");
String sAmount = iwrb.getLocalizedString("amount", "Amount");
catalTable.add(sNumber, 1, 1);
catalTable.add(sDesc, 2, 1);
catalTable.add(sAmount, 3, 1);
if (isAdmin) {
if (count > 0) {
PriceCatalogue PC;
String activeCats[][] = new String[count][7]; // used to store in_use,
// extra_info strings
for (int i = 0; i < count; i++) {
PC = (PriceCatalogue) CatalogList.get(i);
catalTable.add(String.valueOf(i + 1), 1, i + 2);
catalTable.add(PC.getName(), 2, i + 2);
catalTable.add(nf.format(PC.getPrice()) + " Kr", 3, i + 2);
}
Values = this.fetchValues(union_id);
this.setCatalogIds(modinfo, CatalogIds);
setValues(modinfo, Values);
setValuesCount(modinfo, count);
}
}
MainTable.add(catalTable, 2, 3);
add(MainTable);
}
private void doYear(IWContext modinfo) throws SQLException {
if (modinfo.isParameterSet("saveyear"))
processYear(modinfo);
//AccountYear year = new AccountYear();
List years = this.listOfYears(union_id);
java.text.NumberFormat nf = java.text.NumberFormat.getInstance();
IWTimestamp today = IWTimestamp.RightNow();
IWTimestamp lastToDate = new IWTimestamp(31, 12, today.getYear());
Table MainTable = makeMainTable(1);
int count;
if (years != null)
count = years.size();
else
count = 0;
Table newtable = new Table();
Table yearTable = new Table(6, count + 1);
yearTable.setWidth(tablewidth);
yearTable.setHorizontalZebraColored(DarkColor, LightColor);
yearTable.setCellpadding(cellpadding);
yearTable.setCellspacing(cellspacing);
yearTable.setColumnAlignment(3, "right");
String sName = iwrb.getLocalizedString("name", "Name");
String sInfo = iwrb.getLocalizedString("info", "info");
String sYear = iwrb.getLocalizedString("year", "Year");
String sFrom = iwrb.getLocalizedString("from", "From");
String sTo = iwrb.getLocalizedString("to", "To");
String sActive = iwrb.getLocalizedString("active", "Active");
yearTable.add(sName, 1, 1);
yearTable.add(sInfo, 2, 1);
yearTable.add(sYear, 3, 1);
yearTable.add(sFrom, 4, 1);
yearTable.add(sTo, 5, 1);
yearTable.add(sActive, 6, 1);
if (isAdmin) {
if (count > 0) {
AccountYear AY;
RadioButton active;
for (int i = 0; i < count; i++) {
AY = (AccountYear) years.get(i);
//yearTable.add(String.valueOf(i+1),1,i+2);
Link L = new Link(AY.getName());
L.addParameter("accyid", AY.getID());
L.addParameter("catal_action", "year");
L.addParameter("union_id", union_id);
yearTable.add(L, 1, i + 2);
yearTable.add(AY.getInfo(), 2, i + 2);
yearTable.add(String.valueOf(AY.getMainYear()), 3, i + 2);
yearTable.add(getDateString(new IWTimestamp(AY.getFrom())), 4, i + 2);
yearTable.add(getDateString(new IWTimestamp(AY.getTo())), 5, i + 2);
active = new RadioButton("active_year", String.valueOf(AY.getID()));
if (AY.getActive())
active.setSelected();
yearTable.add(active, 6, i + 2);
}
}
newtable.add(iwrb.getLocalizedString("newaccountyear", "Reiknings�r"), 1, 1);
newtable.mergeCells(1, 1, 2, 1);
newtable.add(sName, 1, 2);
newtable.add(sInfo, 1, 3);
newtable.add(sYear, 1, 4);
newtable.add(sFrom, 1, 5);
newtable.add(sTo, 1, 6);
newtable.add(sActive, 1, 7);
IWTimestamp from = new IWTimestamp(lastToDate);
from.addDays(1);
IWTimestamp to = new IWTimestamp(from);
to.addYears(1);
String sFromDate = getDateString(from);
String sToDate = getDateString(to);
TextInput tiFromDate = new TextInput("from_date", sFromDate);
tiFromDate.setLength(10);
TextInput tiToDate = new TextInput("to_date", sToDate);
tiToDate.setLength(10);
TextInput name = new TextInput("year_name");
TextInput info = new TextInput("year_info");
CheckBox active = new CheckBox("activecheck");
active.setChecked(true);
DropdownMenu yeardrp = new DropdownMenu("main_year");
int iyear = today.getYear() + 1;
for (int i = iyear - 3; i < iyear + 3; i++) {
yeardrp.addMenuElement(String.valueOf(i));
}
yeardrp.setSelectedElement(String.valueOf(iyear));
if (modinfo.isParameterSet("accyid")) {
int id = Integer.parseInt(modinfo.getParameter("accyid"));
try {
AccountYear ay = ((AccountYearHome) IDOLookup.getHomeLegacy(AccountYear.class)).findByPrimaryKey(id);
name.setContent(ay.getName());
info.setContent(ay.getInfo());
active.setChecked(ay.getActive());
tiFromDate.setContent(getDateString(new IWTimestamp(ay.getFrom())));
tiToDate.setContent(getDateString(new IWTimestamp(ay.getTo())));
newtable.add(new HiddenInput("year_id", String.valueOf(ay.getID())));
yeardrp.setSelectedElement(String.valueOf(ay.getMainYear()));
}
catch (Exception ex) {
}
}
newtable.add(name, 2, 2);
newtable.add(info, 2, 3);
newtable.add(yeardrp, 2, 4);
newtable.add(tiFromDate, 2, 5);
newtable.add(tiToDate, 2, 6);
newtable.add(active, 2, 7);
SubmitButton save = new SubmitButton("saveyear", iwrb.getLocalizedString("save", "Save"));
newtable.add(save, 2, 8);
newtable.add(new HiddenInput("union_id", union_id));
newtable.add(new HiddenInput("catal_action", "year"));
}
Form F = new Form();
F.add(yearTable);
F.add(newtable);
MainTable.add(F, 2, 3);
add(MainTable);
}
private void processYear(IWContext modinfo) {
String name = modinfo.getParameter("year_name");
String info = modinfo.getParameter("year_info");
IWTimestamp from = parseStamp(modinfo.getParameter("from_date"));
IWTimestamp to = parseStamp(modinfo.getParameter("to_date"));
int mainyear = Integer.parseInt(modinfo.getParameter("main_year"));
boolean active = modinfo.isParameterSet("activecheck");
int id = -1;
if (modinfo.isParameterSet("year_id"))
id = Integer.parseInt(modinfo.getParameter("year_id"));
try {
AccountYear year = (AccountYear) IDOLookup.createLegacy(AccountYear.class);
if (id > 0)
year = ((AccountYearHome) IDOLookup.getHomeLegacy(AccountYear.class)).findByPrimaryKey(id);
year.setName(name);
year.setInfo(info);
year.setFrom(from.getTimestamp());
year.setTo(to.getTimestamp());
year.setMainYear(mainyear);
year.setActive(active);
year.setCreationDate(IWTimestamp.getTimestampRightNow());
year.setUnionId(un_id);
if (id > 0)
year.update();
else
year.insert();
}
catch (Exception ex) {
ex.printStackTrace();
}
}
private String getDateString(IWTimestamp stamp) {
return stamp.getISLDate(".", true);
}
private IWTimestamp parseStamp(String sDate) {
IWTimestamp it = new IWTimestamp();
try {
StringTokenizer st = new StringTokenizer(sDate, " .-/+");
int day = 1, month = 1, year = 2001;
if (st.hasMoreTokens()) {
day = Integer.parseInt(st.nextToken());
month = Integer.parseInt(st.nextToken());
year = Integer.parseInt(st.nextToken());
}
it = new IWTimestamp(day, month, year);
}
catch (Exception pe) {
it = new IWTimestamp();
}
return it;
}
private void doChange(IWContext modinfo) throws SQLException {
Form myForm = new Form();
myForm.maintainAllParameters();
Values = getValues(modinfo);
int count = this.getValuesCount(modinfo);
Table inputTable = new Table(7, inputLines + 1);
inputTable.setWidth(tablewidth);
inputTable.setCellpadding(2);
inputTable.setCellspacing(1);
inputTable.setColumnAlignment(1, "right");
inputTable.setHorizontalZebraColored(DarkColor, LightColor);
String sNumber = iwrb.getLocalizedString("nr", " ");
String sDesc = iwrb.getLocalizedString("description", "Description");
String sAmount = iwrb.getLocalizedString("amount", "Amount");
String sFrom = iwrb.getLocalizedString("from", "From");
String sTo = iwrb.getLocalizedString("to", "To");
String sWho = iwrb.getLocalizedString("who", "Who");
String sType = iwrb.getLocalizedString("type", "Type");
String sCount = iwrb.getLocalizedString("count", "Count");
String sTotal = iwrb.getLocalizedString("total", "Total");
String sList = iwrb.getLocalizedString("list", "List");
inputTable.add(sNumber, 1, 1);
inputTable.add(sDesc, 2, 1);
inputTable.add(sAmount, 3, 1);
inputTable.add(sFrom, 4, 1);
inputTable.add(sTo, 5, 1);
inputTable.add(sWho, 6, 1);
inputTable.add(sType, 7, 1);
for (int i = 1; i < inputLines + 1; i++) {
String rownum = String.valueOf(i);
String s = "";
TextInput textInput, priceInput, ageFromInput, ageToInput, membForInput;
DropdownMenu drpGender, drpExtra;
String genderValue, extraValue;
String tmp;
String sAll = iwrb.getLocalizedString("all", "All");
String sMen = iwrb.getLocalizedString("men", "Men");
String sWomen = iwrb.getLocalizedString("women", "Women");
String sPartner = iwrb.getLocalizedString("partner", "Partner");
String sCouple = iwrb.getLocalizedString("couple", "Couple");
String sFamily = iwrb.getLocalizedString("family", "Family");
String sRookie = iwrb.getLocalizedString("rookie", "Rookie");
String sMain = iwrb.getLocalizedString("main", "Main");
String sExtra = iwrb.getLocalizedString("extra", "Extra");
String sLocker = iwrb.getLocalizedString("locker", "Locker");
if (Values != null && i <= Values.length) {
textInput = new TextInput("catal_text" + i, (Values[i - 1][1].equalsIgnoreCase("null") ? "" : Values[i - 1][1]));
priceInput = new TextInput("catal_price" + i, (Values[i - 1][2].equalsIgnoreCase("null") ? "" : Values[i - 1][2]));
ageFromInput = new TextInput("catal_agefrom" + i, (Values[i - 1][3].equalsIgnoreCase("null") ? "" : Values[i - 1][3]));
ageToInput = new TextInput("catal_ageto" + i, (Values[i - 1][4].equalsIgnoreCase("null") ? "" : Values[i - 1][4]));
membForInput = new TextInput("catal_memberfor" + i, (Values[i - 1][5].equalsIgnoreCase("null") ? "" : Values[i - 1][5]));
genderValue = (Values[i - 1][6].equalsIgnoreCase("null") ? "A" : Values[i - 1][6]);
extraValue = (Values[i - 1][7].equalsIgnoreCase("null") ? "I" : Values[i - 1][7]);
drpGender = new DropdownMenu("catal_gender" + i);
drpExtra = new DropdownMenu("catal_extra" + i);
drpGender.addMenuElement("A", sAll);
drpGender.addMenuElement("M", sMen);
drpGender.addMenuElement("F", sWomen);
drpGender.addMenuElement("P", sPartner);
drpGender.addMenuElement("C", sCouple);
drpGender.addMenuElement("G", sFamily);
drpGender.addMenuElement("N", sRookie);
drpGender.setSelectedElement(genderValue);
drpExtra.addMenuElement("I", sMain);
drpExtra.addMenuElement("N", sExtra);
drpExtra.addMenuElement("L", sLocker);
drpExtra.setSelectedElement(extraValue);
}
else {
textInput = new TextInput("catal_text" + i);
priceInput = new TextInput("catal_price" + i);
ageFromInput = new TextInput("catal_agefrom" + i);
ageToInput = new TextInput("catal_ageto" + i);
membForInput = new TextInput("catal_memberfor" + i);
drpGender = new DropdownMenu("catal_gender" + i);
drpExtra = new DropdownMenu("catal_extra" + i);
drpGender.addMenuElement("A", sAll);
drpGender.addMenuElement("M", sMen);
drpGender.addMenuElement("F", sWomen);
drpGender.addMenuElement("P", sPartner);
drpGender.addMenuElement("C", sCouple);
drpGender.addMenuElement("G", sFamily);
drpGender.addMenuElement("N", sRookie);
drpExtra.addMenuElement("I", sMain);
drpExtra.addMenuElement("N", sExtra);
drpExtra.addMenuElement("L", sLocker);
}
textInput.setSize(20);
priceInput.setSize(4);
priceInput.setAsIntegers();
ageFromInput.setSize(1);
ageFromInput.setMaxlength(2);
ageToInput.setSize(1);
ageToInput.setMaxlength(2);
membForInput.setSize(2);
membForInput.setMaxlength(4);
membForInput.setAsIntegers();
inputTable.add(rownum, 1, i + 1);
inputTable.add(textInput, 2, i + 1);
inputTable.add(priceInput, 3, i + 1);
inputTable.add(ageFromInput, 4, i + 1);
inputTable.add(ageToInput, 5, i + 1);
inputTable.add(drpGender, 6, i + 1);
inputTable.add(drpExtra, 7, i + 1);
}
myForm.add(new HiddenInput("numofcatal", String.valueOf(inputLines)));
myForm.add(new HiddenInput("catal_action", "update"));
myForm.add(inputTable);
myForm.add(new SubmitButton((iwrb.getImage("update.gif"))));
Table MainTable = makeMainTable(2);
MainTable.add(myForm, 2, 3);
add(MainTable);
}
private void doUpdate(IWContext modinfo) throws SQLException {
int number = Integer.parseInt(modinfo.getParameter("numofcatal"));
int cols = 8;
boolean hasNull = false;
if (Values == null)
Values = new String[number][cols];
String text;
String price;
String agefrom;
String ageto;
String gender;
String extra;
for (int i = 1; i < number + 1; i++) {
count = i;
text = modinfo.getParameter("catal_text" + i);
price = modinfo.getParameter("catal_price" + i);
agefrom = modinfo.getParameter("catal_agefrom" + i);
ageto = modinfo.getParameter("catal_ageto" + i);
gender = modinfo.getParameter("catal_gender" + i);
extra = modinfo.getParameter("catal_extra" + i);
if (text.equalsIgnoreCase("")) {
text = "null";
if (!hasNull) {
numOfCat = i - 1;
hasNull = true;
}
}
if (price.equalsIgnoreCase(""))
price = "null";
if (agefrom.equalsIgnoreCase(""))
agefrom = "null";
if (ageto.equalsIgnoreCase(""))
ageto = "null";
Values[i - 1][0] = String.valueOf(i);
Values[i - 1][1] = text;
Values[i - 1][2] = price;
Values[i - 1][3] = agefrom;
Values[i - 1][4] = ageto;
Values[i - 1][5] = "null";
Values[i - 1][6] = gender;
Values[i - 1][7] = extra;
}// for lykkja
String[][] parsedValues = new String[numOfCat][cols];
for (int k = 0; k < numOfCat; k++) {
for (int m = 0; m < Values[k].length; m++) {
parsedValues[k][m] = Values[k][m];
}
}
Values = parsedValues;
this.setValues(modinfo, Values);
this.setValuesCount(modinfo, numOfCat);
this.removeMemberVectorArray(modinfo);
Table MainTable = makeMainTable(3);
MainTable.add(makeSubZeroTable(), 2, 3);
String sHelp1 = iwrb.getLocalizedString("help1", "Choose Look to get a calculation");
String sHelp2 = iwrb.getLocalizedString("help2", "Save to save to database");
Text T = new Text("<H3>" + sHelp1 + "<br>" + sHelp2 + "</H3>");
MainTable.add(T, 2, 3);
add(MainTable);
}
private void doView(IWContext modinfo) {
this.getEveryThing(modinfo);
Link findLink = new Link(iwrb.getImage("search.gif"));
findLink.addParameter("catal_action", "seek");
Table MainTable = makeMainTable(3);
MainTable.add(findLink, 2, 4);
MainTable.add(makeSubZeroTable(), 2, 3);
add(MainTable);
}
private void doSeek(IWContext modinfo) {
try {
seekThem(modinfo);
}
catch (SQLException sql) {
sql.printStackTrace();
}
catch (FinderException fe) {
fe.printStackTrace();
}
doView(modinfo);
}
private void doSave(IWContext modinfo) throws SQLException {
this.getEveryThing(modinfo);
Text messageText;
if (Values != null) {
makeAllUnUsable();
saveCatalogs();
removeMemberTotals(modinfo);
String sMsg1 = iwrb.getLocalizedString("msg1", "Rate list was saved !");
messageText = new Text("<H3>" + sMsg1 + "</H3> ");
}
else {
String sMsg2 = iwrb.getLocalizedString("msg2", "Nothing was saved !");
messageText = new Text("<H3>" + sMsg2 + "</H3> ");
}
Table MainTable = makeMainTable(3);
MainTable.add(makeSubZeroTable(), 2, 3);
MainTable.add(messageText, 2, 3);
add(MainTable);
}
private void doList(IWContext modinfo) throws SQLException, FinderException {
this.getEveryThing(modinfo);
int number = Integer.parseInt(modinfo.getParameter("catal_list_number"));
String listextra = modinfo.getParameter("listextra");
boolean ExtraCatalogs = false;
boolean PcCheck = false;
java.text.NumberFormat nf = java.text.NumberFormat.getInstance();
PriceCatalogue[] pcs = null;
DropdownMenu drpXPCs = new DropdownMenu();
Form myForm = new Form();
myForm.maintainAllParameters();
Table MainTable = makeMainTable(3);
if (mbsVectorArray[number] != null) {
//Member[] mbs = mbsArray[number];
Vector mbs = mbsVectorArray[number];
Collections.sort(mbs);
int len = mbs.size();
int pclen = 0;
String[] strDisplays = new String[1];
int[] pcIds = new int[1];
String sNumber = iwrb.getLocalizedString("nr", "Nr");
String sName = iwrb.getLocalizedString("name", "Name");
String sSSN = iwrb.getLocalizedString("ssn", "Socialnumber");
String sSpecGroup = iwrb.getLocalizedString("specialgroup", "Special group");
String sNone = iwrb.getLocalizedString("none", "None");
Table T = new Table(9, len + 2);
T.add(sNumber, 1, 1);
T.add(sName, 2, 1);
T.add(sSSN, 4, 1);
if (listextra != null) {
ExtraCatalogs = true;
T.add(sSpecGroup, 8, 1);
List pcList = this.getExtraCatalogList(union_id);
if (pcList != null) {
Object[] obs = pcList.toArray();
int l = obs.length;
pcs = new PriceCatalogue[l];
for (int c = 0; c < l; c++) {
pcs[c] = (PriceCatalogue) obs[c];
}
if (listextra.equalsIgnoreCase("not")) {
PcCheck = true;
drpXPCs = new DropdownMenu("catal_extrapcdrop");
drpXPCs.addMenuElement("0", sNone);
pclen = pcs.length;
strDisplays = new String[pclen];
pcIds = new int[pclen];
for (int r = 0; r < pclen; r++) {
strDisplays[r] = pcs[r].getName() + "\t" + nf.format(pcs[r].getPrice()) + " Kr";
pcIds[r] = pcs[r].getID();
}
}
}
}
for (int b = 0; b < len; b++) {
Member M = (Member) mbs.elementAt(b);
T.add(String.valueOf(b + 1), 1, b + 2);
String name = M.getName();
Link L = new Link(name, "/clubs/member.jsp");
int mnr = M.getID();
L.addParameter("member_id", mnr);
T.add(L, 2, b + 2);
T.add(M.getSocialSecurityNumber(), 4, b + 2);
T.add(" ", 5, b + 2);
Link L2 = new Link("G", "/tarif/accountview.jsp");
L2.addParameter("member_id", mnr);
if (ExtraCatalogs) {
if (PcCheck) {
drpXPCs = new DropdownMenu("catal_extrapcdrop" + b);
drpXPCs.addMenuElement("0", sNone);
String strDisplay;
for (int r = 0; r < pclen; r++) {
drpXPCs.addMenuElement(pcIds[r], strDisplays[r]);
}
myForm.add(new HiddenInput("membernumber" + b, String.valueOf(mnr)));
T.add(drpXPCs, 8, b + 2);
}
else {
UnionMemberInfo umi = M.getUnionMemberInfo(union_id, String.valueOf(mnr));
int pcnr = umi.getPriceCatalogueID();
PriceCatalogue p = ((PriceCatalogueHome) IDOLookup.getHomeLegacy(PriceCatalogue.class)).findByPrimaryKey(pcnr);
T.add(p.getName(), 8, b + 2);
T.add(nf.format(p.getPrice()) + " Kr", 9, b + 2);
}
}
T.add(L2, 6, b + 2);
}
if (ExtraCatalogs && PcCheck || pcs == null) {
myForm.add(new HiddenInput("catal_action", "updateextra"));
myForm.add(new HiddenInput("numofextra", String.valueOf(len)));
T.add(new SubmitButton(new Image("/pics/tarif/uppfaera.gif")), 8, len + 2);
T.add(new Link(new Image("/pics/tarif/skra.gif"), "/tarif/pcmake.jsp"), 8, len + 2);
}
myForm.add(T);
MainTable.add(makeSubZeroTable(), 2, 3);
MainTable.add(myForm, 2, 4);
String sHelp3 = iwrb.getLocalizedString("help3", "Remember to save changes !");
MainTable.add("<H2><BLINK>" + sHelp3 + "</BLINK></H2> ", 2, 3);
}
else {
String sHelp4 = iwrb.getLocalizedString("help4", "No leftover !");
MainTable.add("<H2><BLINK>" + sHelp4 + "</BLINK></H2> ", 2, 3);
}
add(MainTable);
}
private void doUpdateExtra(IWContext modinfo) throws SQLException, FinderException {
this.getEveryThing(modinfo);
int number = Integer.parseInt(modinfo.getParameter("numofextra"));
int extraCatalNumber;
String membernumber, strExtraCatalNumber;
UnionMemberInfo umi;
Member M;
for (int i = 0; i < number; i++) {
strExtraCatalNumber = modinfo.getParameter("catal_extrapcdrop" + i);
extraCatalNumber = Integer.parseInt(strExtraCatalNumber);
membernumber = modinfo.getParameter("membernumber" + i);
if (extraCatalNumber != 0) {
M = ((MemberHome) IDOLookup.getHomeLegacy(Member.class)).findByPrimaryKey(Integer.parseInt(membernumber));
umi = M.getUnionMemberInfo(union_id, membernumber);
System.err.print(extraCatalNumber);
umi.setPriceCatalogueID(extraCatalNumber);
umi.update();
}
}
this.removeMemberVectorArray(modinfo);
Table MainTable = makeMainTable(3);
MainTable.add(makeSubZeroTable(), 2, 3);
add(MainTable);
}
private void doFile(IWContext modinfo) throws SQLException {
PaymentRound[] rounds = (PaymentRound[]) ((PaymentRound) IDOLookup.instanciateEntity(PaymentRound.class)).findAllByColumnDescendingOrdered("union_id", union_id, "round_date");
Form myForm = new Form();
myForm.maintainAllParameters();
DropdownMenu drpRound = new DropdownMenu("catal_round");
drpRound.addDisabledMenuElement("noround", "Engin");
if (rounds != null) {
for (int i = 0; i < rounds.length; i++) {
drpRound.addMenuElement(rounds[i].getID(), rounds[i].getRoundDate().toString());
}
}
DropdownMenu drpBank = new DropdownMenu("catal_bank");
drpBank.addMenuElement("nobnk", "Enginn");
drpBank.addMenuElement("spsj", "Sparisj��ur");
drpBank.addMenuElement("lbnk", "Landsbanki");
TextInput bankofficeInput = new TextInput("catal_bank_office");
bankofficeInput.setAsIntegers();
bankofficeInput.setLength(4);
bankofficeInput.setSize(4);
bankofficeInput.setMaxlength(4);
String sNone = iwrb.getLocalizedString("none", "None");
DropdownMenu drdFinalPayDay = new DropdownMenu("catal_finalpayday");
drdFinalPayDay.addDisabledMenuElement("0", sNone);
for (int i = 1; i < 31; i++) {
drdFinalPayDay.addMenuElement(String.valueOf(i));
}
TextInput B1input = new TextInput("catal_girotext1");
B1input.setMaxlength(70);
B1input.setSize(70);
TextInput B2input = new TextInput("catal_girotext2");
B2input.setMaxlength(70);
B2input.setSize(70);
TextInput B3input = new TextInput("catal_girotext3");
B3input.setMaxlength(70);
B3input.setSize(70);
TextInput B4input = new TextInput("catal_girotext4");
B4input.setMaxlength(70);
B4input.setSize(70);
Table T = new Table(3, 10);
//T.setHorizontalZebraColored(DarkColor,LightColor);
T.setCellpadding(cellpadding);
T.setCellspacing(cellspacing);
T.setWidth(tablewidth);
String sAssessment = iwrb.getLocalizedString("assessment", "Assessment");
String sBank = iwrb.getLocalizedString("bank", "Bank");
String sBankOffice = iwrb.getLocalizedString("bankoffice", "Bank office");
String sDuedate = iwrb.getLocalizedString("finalduedate", "Final due day");
String sGiroText = iwrb.getLocalizedString("girotext", "Giro text");
String sLine1 = iwrb.getLocalizedString("line1", "Line1");
String sLine2 = iwrb.getLocalizedString("line2", "Line2");
String sLine3 = iwrb.getLocalizedString("line3", "Line3");
String sLine4 = iwrb.getLocalizedString("line4", "Line4");
T.add(sAssessment, 1, 1);
T.add(sBank, 1, 3);
T.add(sBankOffice, 1, 4);
T.add(sDuedate, 1, 5);
T.add(sGiroText + " :", 1, 6);
T.add(sLine1, 1, 7);
T.add(sLine2, 1, 8);
T.add(sLine3, 1, 9);
T.add(sLine4, 1, 10);
T.add(drpRound, 3, 1);
T.add(drpBank, 3, 3);
T.add(bankofficeInput, 3, 4);
T.add(drdFinalPayDay, 3, 5);
T.add(B1input, 3, 7);
T.add(B2input, 3, 8);
T.add(B3input, 3, 9);
T.add(B4input, 3, 10);
//T.add(new SubmitButton(new Image("/pics/tarif/skrifa.gif")),1,10);
// KreditCard part
DropdownMenu drpKredit = new DropdownMenu("catal_kreditcc");
drpKredit.addMenuElement("nocr", "Ekkert");
drpKredit.addMenuElement("euro", "Euro");
drpKredit.addMenuElement("visa", "Visa");
TextInput kreditPrInput = new TextInput("catal_kredit_pr");
TextInput kreditKrInput = new TextInput("catal_kredit_kr");
kreditPrInput.setAsIntegers();
kreditKrInput.setAsIntegers();
kreditPrInput.setLength(4);
kreditPrInput.setSize(4);
kreditPrInput.setMaxlength(4);
kreditKrInput.setLength(4);
kreditKrInput.setSize(4);
kreditKrInput.setMaxlength(4);
TextInput kreditContractNr = new TextInput("catal_kredit_contract");
Table T2 = new Table(3, 6);
//T2.setHorizontalZebraColored(DarkColor,LightColor);
T2.setCellpadding(cellpadding);
T2.setCellspacing(cellspacing);
T2.setWidth(tablewidth);
T2.add("Kortafyrirt�ki", 1, 2);
T2.add("F�rslugjald (%) ", 1, 3);
T2.add("F�rslugjald (kr)", 1, 4);
T2.add("Samningsn�mer", 1, 5);
T2.add(drpKredit, 3, 2);
T2.add(kreditPrInput, 3, 3);
T2.add(kreditKrInput, 3, 4);
T2.add(kreditContractNr, 3, 5);
T2.add(new SubmitButton(new Image("/pics/tarif/skrifa.gif")), 1, 6);
Table MainTable = makeMainTable(6);
MainTable.add(new HiddenInput("catal_action", "skrifa"));
MainTable.add(T, 2, 3);
MainTable.add(T2, 2, 3);
myForm.add(MainTable);
add(myForm);
}
private void doSkrifa(IWContext modinfo) throws SQLException, IOException {
String bank = modinfo.getParameter("catal_bank");
String bnkofc = modinfo.getParameter("catal_bank_office");
String kreditcc = modinfo.getParameter("catal_kreditcc");
String roundstring = modinfo.getParameter("catal_round");
String Message = "";
double prosent = 0;
int amount = 0;
try {
if (!roundstring.equalsIgnoreCase("noround")) {
int roundid = Integer.parseInt(roundstring);
if (!bank.equalsIgnoreCase("nobnk")) {
if (bnkofc != null && !bnkofc.equals("")) {
int bankOffice = Integer.parseInt(bnkofc);
int finalpayday = Integer.parseInt(modinfo.getParameter("catal_finalpayday"));
String B1input = modinfo.getParameter("catal_girotext1");
String B2input = modinfo.getParameter("catal_girotext2");
String B3input = modinfo.getParameter("catal_girotext3");
String B4input = modinfo.getParameter("catal_girotext4");
GiroFile GF = new GiroFile(roundid, bankOffice, finalpayday, B1input, B2input, B3input, B4input);
GF.makeFile(modinfo);
}
}
if (!kreditcc.equalsIgnoreCase("nocr")) {
String kreditPr = modinfo.getParameter("catal_kredit_pr");
String kreditKr = modinfo.getParameter("catal_kredit_kr");
String contractnr = modinfo.getParameter("catal_kredit_contract");
if (kreditPr.equalsIgnoreCase("")) {
add("pr�senta t�mt");
prosent = 0.0;
if (kreditKr != null)
amount = Integer.parseInt(kreditKr);
}
else if (kreditKr.equalsIgnoreCase("")) {
amount = 0;
if (kreditPr != null) {
prosent = Double.parseDouble(kreditPr);
prosent = (prosent / 100.0) + 1.0;
}
}
if (kreditcc.equalsIgnoreCase("euro")) {
EuroFile EF = new EuroFile(roundid, contractnr, prosent, amount);
EF.makeFile(modinfo);
}
if (kreditcc.equalsIgnoreCase("visa")) {
VisaFile VF = new VisaFile(roundid, contractnr, prosent, amount);
VF.makeFile(modinfo);
}
}
String sMsg3 = iwrb.getLocalizedString("msg3", "File was saved !");
Message = ("<H3>" + sMsg3 + "</H3>");
}
else {
String sMsg4 = iwrb.getLocalizedString("msg4", "No File was saved !");
Message = "<H3>" + sMsg4 + "</H3>";
}
}
catch (NumberFormatException e) {
String sMsg4 = iwrb.getLocalizedString("msg4", "No File was saved !");
Message = "<H3>" + sMsg4 + "</H3>";
}
catch (FinderException fe) {
fe.printStackTrace();
}
finally {
add(makeMainTable(6));
add(Message);
//add(modinfo.getRequest().getRequestURI());
}
}
private void doNotPrice(IWContext modinfo) throws SQLException {
this.getEveryThing(modinfo);
Form myForm = new Form();
myForm.maintainAllParameters();
IWTimestamp today = IWTimestamp.RightNow();
int year = today.getYear();
int selectedyear = year;
if (today.getMonth() > 10)
selectedyear++;
IntegerInput GiroBankInterest = new IntegerInput("catal_giro_bankinterest");
GiroBankInterest.setLength(4);
IntegerInput EuroBankInterest = new IntegerInput("catal_euro_bankinterest");
EuroBankInterest.setLength(4);
IntegerInput VisaBankInterest = new IntegerInput("catal_visa_bankinterest");
VisaBankInterest.setLength(4);
IntegerInput GiroBankCost = new IntegerInput("catal_giro_bankcost");
GiroBankCost.setLength(4);
IntegerInput EuroBankCost = new IntegerInput("catal_euro_bankcost");
EuroBankCost.setLength(4);
IntegerInput VisaBankCost = new IntegerInput("catal_visa_bankcost");
VisaBankCost.setLength(4);
IntegerInput GiroTotalBankCost = new IntegerInput("catal_giro_tot_bankcost");
GiroTotalBankCost.setLength(4);
IntegerInput EuroTotalBankCost = new IntegerInput("catal_euro_tot_bankcost");
EuroTotalBankCost.setLength(4);
IntegerInput VisaTotalBankCost = new IntegerInput("catal_visa_tot_bankcost");
VisaTotalBankCost.setLength(4);
CheckBox GiroBox = new CheckBox("catal_giro_choice", "true");
CheckBox EuroBox = new CheckBox("catal_euro_choice", "true");
CheckBox VisaBox = new CheckBox("catal_visa_choice", "true");
DropdownMenu drdGiroDefaultInstallment = new DropdownMenu("catal_giro_installments");
DropdownMenu drdGiroFirstInstMonth = new DropdownMenu("catal_giro_firstmonth");
DropdownMenu drdGiroPaymentDay = new DropdownMenu("catal_giro_payday");
DropdownMenu drdGiroPaymentYear = new DropdownMenu("catal_giro_payyear");
for (int i = 1; i < 13; i++) {
drdGiroDefaultInstallment.addMenuElement(String.valueOf(i));
}
for (int i = 1; i < 31; i++) {
drdGiroPaymentDay.addMenuElement(String.valueOf(i));
}
for (int i = 1; i < 13; i++) {
drdGiroFirstInstMonth.addMenuElement(String.valueOf(i));
}
for (int i = year - 3; i < year + 3; i++) {
drdGiroPaymentYear.addMenuElement(String.valueOf(i));
}
drdGiroPaymentYear.setSelectedElement(String.valueOf(selectedyear));
drdGiroDefaultInstallment.setSelectedElement("6");
drdGiroFirstInstMonth.setSelectedElement("2");
DropdownMenu drdEuroDefaultInstallment = new DropdownMenu("catal_euro_installments");
DropdownMenu drdEuroFirstInstMonth = new DropdownMenu("catal_euro_firstmonth");
DropdownMenu drdEuroPaymentDay = new DropdownMenu("catal_euro_payday");
DropdownMenu drdEuroPaymentYear = new DropdownMenu("catal_euro_payyear");
for (int i = 1; i < 13; i++) {
drdEuroDefaultInstallment.addMenuElement(String.valueOf(i));
}
for (int i = 1; i < 31; i++) {
drdEuroPaymentDay.addMenuElement(String.valueOf(i));
}
for (int i = 1; i < 13; i++) {
drdEuroFirstInstMonth.addMenuElement(String.valueOf(i));
}
for (int i = year - 3; i < year + 3; i++) {
drdEuroPaymentYear.addMenuElement(String.valueOf(i));
}
drdEuroPaymentYear.setSelectedElement(String.valueOf(selectedyear));
drdEuroDefaultInstallment.setSelectedElement("6");
drdEuroFirstInstMonth.setSelectedElement("2");
DropdownMenu drdVisaDefaultInstallment = new DropdownMenu("catal_visa_installments");
DropdownMenu drdVisaFirstInstMonth = new DropdownMenu("catal_visa_firstmonth");
DropdownMenu drdVisaPaymentDay = new DropdownMenu("catal_visa_payday");
DropdownMenu drdVisaPaymentYear = new DropdownMenu("catal_visa_payyear");
for (int i = 1; i < 13; i++) {
drdVisaDefaultInstallment.addMenuElement(String.valueOf(i));
}
for (int i = 1; i < 31; i++) {
drdVisaPaymentDay.addMenuElement(String.valueOf(i));
}
for (int i = 1; i < 13; i++) {
drdVisaFirstInstMonth.addMenuElement(String.valueOf(i));
}
for (int i = year - 3; i < year + 3; i++) {
drdVisaPaymentYear.addMenuElement(String.valueOf(i));
}
drdVisaPaymentYear.setSelectedElement(String.valueOf(selectedyear));
drdVisaDefaultInstallment.setSelectedElement("6");
drdVisaFirstInstMonth.setSelectedElement("2");
Table DefineTable = new Table(4, 11);
DefineTable.setWidth(tablewidth);
DefineTable.setCellspacing(1);
DefineTable.setCellpadding(2);
DefineTable.setColumnColor(2, LightColor);
DefineTable.setColumnColor(3, DarkColor);
DefineTable.setColumnColor(4, LightColor);
DefineTable.setColumnColor(1, LightColor);
DefineTable.add(" Giro", 2, 3);
DefineTable.add(" Euro", 3, 3);
DefineTable.add(" Visa", 4, 3);
DefineTable.add(GiroBox, 2, 3);
DefineTable.add(EuroBox, 3, 3);
DefineTable.add(VisaBox, 4, 3);
String sCostPercent = iwrb.getLocalizedString("costpercent", "Cost percent (%)");
String sCostPerNote = iwrb.getLocalizedString("costpernote", "Cost per Note ");
String sCostPerPerson = iwrb.getLocalizedString("costperperson", "Cost per person ");
String sNumberOfPayment = iwrb.getLocalizedString("numberofpayment", "Number of payments");
String sDayOfPay = iwrb.getLocalizedString("dayofpay", "Day of first pay");
String sMontOfPay = iwrb.getLocalizedString("monthofpay", "Month of first pay");
String sYearOfPay = iwrb.getLocalizedString("yearofpay", "Year of pay");
DefineTable.add(sCostPercent, 1, 5);
DefineTable.add(sCostPerNote, 1, 6);
DefineTable.add(sCostPerPerson, 1, 7);
DefineTable.add(sNumberOfPayment, 1, 8);
DefineTable.add(sDayOfPay, 1, 9);
DefineTable.add(sMontOfPay, 1, 10);
DefineTable.add(sYearOfPay, 1, 11);
DefineTable.add(GiroBankInterest, 2, 5);
DefineTable.add(GiroBankCost, 2, 6);
DefineTable.add(GiroBankCost, 2, 7);
DefineTable.add(drdGiroDefaultInstallment, 2, 8);
DefineTable.add(drdGiroPaymentDay, 2, 9);
DefineTable.add(drdGiroFirstInstMonth, 2, 10);
DefineTable.add(drdGiroPaymentYear, 2, 11);
DefineTable.add(EuroBankInterest, 3, 5);
DefineTable.add(EuroBankCost, 3, 6);
DefineTable.add(EuroTotalBankCost, 3, 7);
DefineTable.add(drdEuroDefaultInstallment, 3, 8);
DefineTable.add(drdEuroPaymentDay, 3, 9);
DefineTable.add(drdEuroFirstInstMonth, 3, 10);
DefineTable.add(drdEuroPaymentYear, 3, 11);
DefineTable.add(VisaBankInterest, 4, 5);
DefineTable.add(VisaBankCost, 4, 6);
DefineTable.add(VisaTotalBankCost, 4, 7);
DefineTable.add(drdVisaDefaultInstallment, 4, 8);
DefineTable.add(drdVisaPaymentDay, 4, 9);
DefineTable.add(drdVisaFirstInstMonth, 4, 10);
DefineTable.add(drdVisaPaymentYear, 4, 11);
Table MainTable = makeMainTable(5);
MainTable.add(DefineTable, 2, 3);
myForm.add(new HiddenInput("catal_action", "gjalda"));
MainTable.add(new SubmitButton(iwrb.getImage("bill.gif")), 2, 3);
myForm.add(MainTable);
add(myForm);
}
private void doPrice(IWContext modinfo) throws SQLException, FinderException {
this.getEveryThing(modinfo);
int year = IWTimestamp.RightNow().getYear();
String ifGiro = modinfo.getParameter("catal_giro_choice");
String ifEuro = modinfo.getParameter("catal_euro_choice");
String ifVisa = modinfo.getParameter("catal_visa_choice");
int defGiroInstlm = 0, defGiroPayday = 0, defGiroFirstMonth = 0, defGiroYear = year;
int defEuroInstlm = 0, defEuroPayday = 0, defEuroFirstMonth = 0, defEuroYear = year;
int defVisaInstlm = 0, defVisaPayday = 0, defVisaFirstMonth = 0, defVisaYear = year;
int iGiroCost = 0, iEuroCost = 0, iVisaCost = 0;
int iGiroTotalCost = 0, iEuroTotalCost = 0, iVisaTotalCost = 0;
double dGiroInterest = 0.0, dEuroInterest = 0.0, dVisaInterest = 0.0;
if (mbsVectorArray == null) {
seekThem(modinfo);
}
if (mbsVectorArray != null) {
System.err.print("\n�lagning hefst " + new IWTimestamp().toSQLTimeString());
if (ifGiro != null && ifGiro.equalsIgnoreCase("true")) {
defGiroInstlm = Integer.parseInt(modinfo.getParameter("catal_giro_installments"));
defGiroPayday = Integer.parseInt(modinfo.getParameter("catal_giro_payday"));
defGiroFirstMonth = Integer.parseInt(modinfo.getParameter("catal_giro_firstmonth"));
defGiroYear = Integer.parseInt(modinfo.getParameter("catal_giro_payyear"));
String sGiroInterest = modinfo.getParameter("catal_giro_bankinterest");
String sGiroCost = modinfo.getParameter("catal_giro_bankcost");
String sGiroTotalCost = modinfo.getParameter("catal_giro_tot_bankcost");
if (!"".equalsIgnoreCase(sGiroInterest)) {
dGiroInterest = Double.parseDouble(sGiroInterest);
}
else if (!"".equalsIgnoreCase(sGiroCost)) {
iGiroCost = Integer.parseInt(sGiroCost);
}
if (!"".equalsIgnoreCase(sGiroTotalCost)) {
iGiroTotalCost = Integer.parseInt(sGiroTotalCost);
}
letThemPay(modinfo, 1, defGiroInstlm, defGiroYear, defGiroFirstMonth, defGiroPayday, dGiroInterest, iGiroCost, iGiroTotalCost);
}
if (ifEuro != null && ifEuro.equalsIgnoreCase("true")) {
defEuroInstlm = Integer.parseInt(modinfo.getParameter("catal_euro_installments"));
defEuroPayday = Integer.parseInt(modinfo.getParameter("catal_euro_payday"));
defEuroFirstMonth = Integer.parseInt(modinfo.getParameter("catal_euro_firstmonth"));
defEuroYear = Integer.parseInt(modinfo.getParameter("catal_euro_payyear"));
String sEuroInterest = modinfo.getParameter("catal_euro_bankinterest");
String sEuroCost = modinfo.getParameter("catal_euro_bankcost");
String sEuroTotalCost = modinfo.getParameter("catal_euro_tot_bankcost");
if (!"".equalsIgnoreCase(sEuroInterest)) {
dEuroInterest = Double.parseDouble(sEuroInterest);
}
else if (!"".equalsIgnoreCase(sEuroCost)) {
iEuroCost = Integer.parseInt(sEuroCost);
}
if (!"".equalsIgnoreCase(sEuroTotalCost)) {
iEuroTotalCost = Integer.parseInt(sEuroTotalCost);
}
letThemPay(modinfo, 2, defEuroInstlm, defEuroYear, defEuroFirstMonth, defEuroPayday, dEuroInterest, iEuroCost, iEuroTotalCost);
}
if (ifVisa != null && ifVisa.equalsIgnoreCase("true")) {
defVisaInstlm = Integer.parseInt(modinfo.getParameter("catal_visa_installments"));
defVisaPayday = Integer.parseInt(modinfo.getParameter("catal_visa_payday"));
defVisaFirstMonth = Integer.parseInt(modinfo.getParameter("catal_visa_firstmonth"));
defVisaYear = Integer.parseInt(modinfo.getParameter("catal_visa_payyear"));
String sVisaInterest = modinfo.getParameter("catal_visa_bankinterest");
String sVisaCost = modinfo.getParameter("catal_visa_bankcost");
String sVisaTotalCost = modinfo.getParameter("catal_visa_tot_bankcost");
if (!sVisaInterest.equalsIgnoreCase("")) {
dVisaInterest = Double.parseDouble(sVisaInterest);
}
else if (!"".equalsIgnoreCase(sVisaCost)) {
iVisaCost = Integer.parseInt(sVisaCost);
}
if (!"".equalsIgnoreCase(sVisaTotalCost)) {
iVisaTotalCost = Integer.parseInt(sVisaTotalCost);
}
letThemPay(modinfo, 3, defVisaInstlm, defVisaYear, defVisaFirstMonth, defVisaPayday, dVisaInterest, iVisaCost, iVisaTotalCost);
}
System.err.print("\n�lagningu l�kur " + new IWTimestamp().toSQLTimeString());
String sMsg5 = iwrb.getLocalizedString("msg5", "Assessment finished");
add("<H2>" + sMsg5 + "</H2> ");
}
else {
String sMsg6 = iwrb.getLocalizedString("msg6", "No assessment was made !");
add("<H2>" + sMsg6 + "</H2> ");
}
add(makeMainTable(5));
}
private void setValues(IWContext modinfo, String[][] values) {
modinfo.getSession().setAttribute("catalog_values", values);
}
private String[][] getValues(IWContext modinfo) {
if (modinfo.getSession().getAttribute("catalog_values") != null) {
String S[][] = (String[][]) modinfo.getSession().getAttribute("catalog_values");
return S;
}
else
return null;
}
private void removeValues(IWContext modinfo) {
if (modinfo.getSession().getAttribute("catalog_values") != null) {
modinfo.getSession().removeAttribute("catalog_values");
}
}
private void setCatalogIds(IWContext modinfo, int[] catalogids) {
modinfo.getSession().setAttribute("catalog_catalogids", catalogids);
}
private int[] getCatalogIds(IWContext modinfo) {
if (modinfo.getSession().getAttribute("catalog_catalogids") != null) {
int S[] = (int[]) modinfo.getSession().getAttribute("catalog_catalogids");
return S;
}
else
return null;
}
private void removeCatalogIds(IWContext modinfo) {
if (modinfo.getSession().getAttribute("catalog_catalogids") != null) {
modinfo.getSession().removeAttribute("catalog_catalogids");
}
}
private void setValuesCount(IWContext modinfo, int count) {
modinfo.getSession().setAttribute("catalog_count", new Integer(count));
}
private int getValuesCount(IWContext modinfo) {
if (modinfo.getSession().getAttribute("catalog_count") != null) {
Integer I = (Integer) modinfo.getSession().getAttribute("catalog_count");
return I.intValue();
}
else
return 0;
}
private void removeValuesCount(IWContext modinfo) {
if (modinfo.getSession().getAttribute("catalog_count") != null) {
modinfo.getSession().removeAttribute("catalog_count");
}
}
private void setMemberArray(IWContext modinfo, Member[][] memberarray) {
modinfo.getSession().setAttribute("catalog_victims", memberarray);
}
private Member[][] getMemberArray(IWContext modinfo) {
if (modinfo.getSession().getAttribute("catalog_victims") != null) {
return (Member[][]) modinfo.getSession().getAttribute("catalog_victims");
}
else
return null;
}
private void setMemberVectorArray(IWContext modinfo, Vector[] V) {
modinfo.getSession().setAttribute("catalog_victs", V);
}
private Vector[] getMemberVectorArray(IWContext modinfo) {
if (modinfo.getSession().getAttribute("catalog_victs") != null) {
return (Vector[]) modinfo.getSession().getAttribute("catalog_victs");
}
else
return null;
}
private void removeMemberVectorArray(IWContext modinfo) {
if (modinfo.getSession().getAttribute("catalog_victs") != null) {
modinfo.getSession().removeAttribute("catalog_victs");
}
}
private void setMbsInfoVectorArray(IWContext modinfo, Vector[] V) {
modinfo.getSession().setAttribute("catalog_totalinfo", V);
}
private Vector[] getMbsInfoVectorArray(IWContext modinfo) {
if (modinfo.getSession().getAttribute("catalog_totalinfo") != null) {
return (Vector[]) modinfo.getSession().getAttribute("catalog_totalinfo");
}
else
return null;
}
private void removeMbsInfoVectorArray(IWContext modinfo) {
if (modinfo.getSession().getAttribute("catalog_totalinfo") != null) {
modinfo.getSession().removeAttribute("catalog_totalinfo");
}
}
private void setTotalMembersVector(IWContext modinfo, Vector[] V) {
modinfo.getSession().setAttribute("catalog_totalmembers", V);
}
private Vector[] getTotalMembersVector(IWContext modinfo) {
if (modinfo.getSession().getAttribute("catalog_totalmembers") != null) {
return (Vector[]) modinfo.getSession().getAttribute("catalog_totalmembers");
}
else
return null;
}
private void removeTotalMembersVector(IWContext modinfo) {
if (modinfo.getSession().getAttribute("catalog_totalmembers") != null) {
modinfo.getSession().removeAttribute("catalog_totalmembers");
}
}
private void setMemberTotals(IWContext modinfo, Integer[][] totals) {
modinfo.getSession().setAttribute("catalog_totals", totals);
}
private Integer[][] getMemberTotals(IWContext modinfo) {
if (modinfo.getSession().getAttribute("catalog_totals") != null) {
Integer[][] T = (Integer[][]) modinfo.getSession().getAttribute("catalog_totals");
return T;
}
else
return null;
}
private void removeMemberTotals(IWContext modinfo) {
if (modinfo.getSession().getAttribute("catalog_totals") != null) {
modinfo.getSession().removeAttribute("catalog_totals");
}
}
private void setMemberCount(IWContext modinfo, int membercount) {
modinfo.getSession().setAttribute("catalog_member_count", new Integer(membercount));
}
private int getMemberCount(IWContext modinfo) {
if (modinfo.getSession().getAttribute("catalog_member_count") != null) {
Integer mc = (Integer) modinfo.getSession().getAttribute("catalog_member_count");
return mc.intValue();
}
else
return 0;
}
private void removeMemberCount(IWContext modinfo) {
if (modinfo.getSession().getAttribute("catalog_member_count") != null) {
modinfo.getSession().removeAttribute("catalog_member_count");
}
}
private void setAccountsHash(IWContext modinfo, Hashtable H) {
modinfo.getSession().setAttribute("catalog_accounthsh", H);
}
private Hashtable getAccountsHash(IWContext modinfo) {
if (modinfo.getSession().getAttribute("catalog_accounthsh") != null) {
Hashtable H = (Hashtable) modinfo.getSession().getAttribute("catalog_accounthsh");
return H;
}
else
return null;
}
private void removeAccountsHash(IWContext modinfo) {
if (modinfo.getSession().getAttribute("catalog_accounthsh") != null) {
modinfo.getSession().removeAttribute("catalog_accounthsh");
}
}
private List getCatalogList(String union_id) throws SQLException {
List L = EntityFinder.findAllByColumnEquals((PriceCatalogue) IDOLookup.instanciateEntity(PriceCatalogue.class), "union_id", union_id, "in_use", "Y", "is_independent", "N");
return L;
}
private List listOfYears(String union_id) throws SQLException {
List L = EntityFinder.findAllByColumnEquals((AccountYear) IDOLookup.instanciateEntity(AccountYear.class), "union_id", union_id);
return L;
}
public static List getExtraCatalogList(String union_id) throws SQLException {
return EntityFinder.findAllByColumnEquals((PriceCatalogue) IDOLookup.instanciateEntity(PriceCatalogue.class), "union_id", union_id, "in_use", "Y", "is_independent", "Y");
}
public PriceCatalogue[] getExtraCatalogues(String unionID) throws SQLException {
PriceCatalogue[] PCs = (PriceCatalogue[]) ((PriceCatalogue) IDOLookup.instanciateEntity(PriceCatalogue.class)).findAll(getExtraCatalogueSQL(unionID));
return PCs;
}
// Fetch the objects saved in the Session
private void getEveryThing(IWContext modinfo) {
Values = getValues(modinfo);
mbsVectorArray = this.getMemberVectorArray(modinfo);
mbsInfoVectorArray = this.getMbsInfoVectorArray(modinfo);
totals = this.getMemberTotals(modinfo);
TotalMembersVector = this.getTotalMembersVector(modinfo);
memberCount = this.getMemberCount(modinfo);
CatalogIds = this.getCatalogIds(modinfo);
AccHsh = this.getAccountsHash(mainYear);
}
private String[][] fetchValues(String union_id) throws SQLException {
List CatalogList = this.getCatalogList(union_id);
int count = 0;
if (CatalogList != null) {
count = CatalogList.size();
}
String activeCats[][] = new String[count][8];
CatalogIds = new int[count];
if (count > 0) {
//String activeCats[][] = new String[count][8]; // used to store in_use,
// extra_info strings
StringTokenizer st;
for (int i = 0; i < count; i++) {
PriceCatalogue C = (PriceCatalogue) CatalogList.get(i);
CatalogIds[i] = C.getID();
st = new StringTokenizer(C.getExtraInfo(), "#");
int a = 0;
while ((st.hasMoreTokens()) && a < 8) {
activeCats[i][a] = st.nextToken();
a++;
}
}
}
return activeCats;
}
private void saveCatalogs() throws SQLException {
PriceCatalogue pcl;
for (int i = 0; i < Values.length; i++) {
String text = Values[i][1];
String price = Values[i][2];
if (!(text.equalsIgnoreCase("null")) && !(price.equalsIgnoreCase("null"))) {
pcl = (PriceCatalogue) IDOLookup.createLegacy(PriceCatalogue.class);
pcl.setUnion_id(this.un_id);
pcl.setName(text);
pcl.setPrice(Integer.valueOf(price));
StringBuffer SB = new StringBuffer();
for (int k = 0; k < Values[i].length; k++) {
SB.append(Values[i][k]);
SB.append("#");
}
pcl.setExtraInfo(SB.toString());
pcl.setInUse(true);
pcl.setIndependent(false);
pcl.insert();
}
}
}
private void makeAllUnUsable() throws SQLException {
List CatalogList = this.getCatalogList(this.union_id);
if (CatalogList != null) {
int count = CatalogList.size();
PriceCatalogue PC;
for (int i = 0; i < count; i++) {
PC = (PriceCatalogue) CatalogList.get(i);
PC.setInUse(false);
PC.setIndependent(false);
PC.update();
}
}
}
private void addMemberToMembersArray(Vector[] MemberArray, Vector[] MemInfoArray, Member eMember, UnionMemberInfo eUmi, int[] Membergroups) {
if (Membergroups != null) {
for (int i = 0; i < Membergroups.length; i++) {
MemberArray[Membergroups[i]].addElement(eMember);
MemInfoArray[Membergroups[i]].addElement(eUmi);
}
}
else {
// Rest Members
MemberArray[MemberArray.length - 1].addElement(eMember);
MemInfoArray[MemInfoArray.length - 1].addElement(eUmi);
}
}
private String getActiveMembersSQL(int iUnionID) {
StringBuffer SQLstringbuff = new StringBuffer("select * from union_member_info where union_id = ");
SQLstringbuff.append(iUnionID);
SQLstringbuff.append(" and member_status = 'A' ");
return SQLstringbuff.toString();
}
private String getDependentMembersSQL(int iUnionID) {
return this.getActiveMembersSQL(iUnionID) + " and (price_catalogue_id is null or price_catalogue_id = 0) ";
}
private String getIndependentMembersSQL(int iUnionID) {
return this.getActiveMembersSQL(iUnionID) + " and (price_catalogue_id is not null and price_catalogue_id != 0) ";
}
private Hashtable getFamilyHash(List InfoList) {
Hashtable FamilyHash = new Hashtable();
int iListLength = InfoList.size();
UnionMemberInfo umi;
Integer iFamilyId, iMemberId;
Integer FamCount;
Integer Temp;
String sFamStat;
for (int i = 0; i < iListLength; i++) {
umi = (UnionMemberInfo) InfoList.get(i);
iFamilyId = new Integer(umi.getFamilyId());
if (FamilyHash.containsKey(iFamilyId)) {
FamCount = (Integer) FamilyHash.get(iFamilyId);
int c = FamCount.intValue() + 1;
Temp = (Integer) FamilyHash.put(iFamilyId, new Integer(c));
}
else {
Temp = (Integer) FamilyHash.put(iFamilyId, new Integer(1));
}
}
return FamilyHash;
}
private Hashtable getAccountsHash(int mainYear) {
try {
StringBuffer sql = new StringBuffer("select a.* from account a,account_year y ");
sql.append(" where a.account_year_id = y.account_year_id");
sql.append(" and y.main_year = ");
sql.append(mainYear);
sql.append(" and a.union_id = ");
sql.append(this.union_id);
Account[] A = (Account[]) ((Account) IDOLookup.instanciateEntity(Account.class)).findAll(sql.toString());
if (A != null && A.length > 0) {
int len = A.length;
Hashtable H = new Hashtable();
for (int i = 0; i < len; i++) {
H.put(new Integer(A[i].getMemberId()), new Integer(A[i].getID()));
}
return H;
}
return null;
}
catch (SQLException sql) {
return null;
}
}
private int[] findPriceGroups(int iAge, int iRegYear, String strGender, boolean bFamily, boolean bCouple, String strFamilyStatus, boolean isNew, boolean hasLocker) {
Vector V = new Vector();
Vector V2 = new Vector();
int lowestPrice = 0;
int mainGroup = -1;
boolean noMain = false;
for (int i = 0; i < Values.length; i++) {
int tempgr = -1;
String text = Values[i][1]; // Description
String price = Values[i][2]; // Price
String agefrom = Values[i][3]; // Age From
String ageto = Values[i][4]; // Age To
//String regyear = Values[i][5]; // registration year
String gender = Values[i][6]; // "A" all "M" male or "F" female or "P"
// partner "G" family "C" couple
String extra = Values[i][7]; // "I" main "N" extra "L" locker
int priceAmount = Integer.parseInt(price);
int ageFrom = 0, ageTo = 200, registrationYear = 0;
String memberGender = "A", Extra = "I";
String thegender, thefamstat;
if (!(text.equalsIgnoreCase("null")) & !(price.equalsIgnoreCase("null"))) {
if (!(agefrom.equalsIgnoreCase("null"))) {
ageFrom = Integer.parseInt(agefrom);
}
if (!(ageto.equalsIgnoreCase("null"))) {
ageTo = Integer.parseInt(ageto);
}
//if(!(regyear.equalsIgnoreCase("null"))){ registrationYear =
// Integer.parseInt(regyear); }
if (!(gender.equalsIgnoreCase("null"))) {
memberGender = gender;
}
if (!(extra.equalsIgnoreCase("null"))) {
Extra = extra;
}
if ((iAge >= ageFrom) && (iAge <= ageTo)) {
if (gender.equalsIgnoreCase("G")) {
if (bFamily && strFamilyStatus.equalsIgnoreCase("")) {
tempgr = i;
}
else
noMain = true;
}
else if (gender.equalsIgnoreCase("C")) {
if (bCouple && !strFamilyStatus.equalsIgnoreCase(""))
tempgr = i;
else
noMain = true;
}
else if (gender.equalsIgnoreCase("P") && strFamilyStatus.equalsIgnoreCase("partner")) {
tempgr = i;
}
else if (isNew && gender.equalsIgnoreCase("N")) {
tempgr = i;
}
else if (strGender.equalsIgnoreCase(gender)) {
tempgr = i;
}
else if (gender.equalsIgnoreCase("A")) {
tempgr = i;
}
}
}
if (!noMain && tempgr != -1 && extra.equalsIgnoreCase("I")) {
if (lowestPrice == 0) {
mainGroup = tempgr;
lowestPrice = priceAmount;
}
else if (priceAmount < lowestPrice) {
mainGroup = tempgr;
}
}
else if (tempgr != -1 && !extra.equalsIgnoreCase("I")) {
if (extra.equalsIgnoreCase("L") && hasLocker)
V.addElement(new Integer(tempgr));
else if (extra.equalsIgnoreCase("N"))
V.addElement(new Integer(tempgr));
}
}// for loop
int[] iReturnArray = null;
if (!V.isEmpty()) {
iReturnArray = new int[V.size() + 1];
int iplus = 0;
if (mainGroup != -1) {
iReturnArray[0] = mainGroup;
iplus = 1;
}
for (int index = 0 + iplus; index < V.size() + iplus; index++) {
iReturnArray[index] = ((Integer) V.elementAt(index - iplus)).intValue();
}
}
else if (mainGroup != -1) {
iReturnArray = new int[1];
iReturnArray[0] = mainGroup;
}
return iReturnArray;
}
private void seekThem(IWContext modinfo) throws SQLException, FinderException {
this.Values = this.fetchValues(union_id);
if (this.Values != null) {
IWTimestamp dateToday = new IWTimestamp(IWTimestamp.getTimestampRightNow());
int thisYear = dateToday.getYear();
int linecount = Values.length;
int colcount = Values[0].length;
int listlen = linecount + 2;
System.err.println("Byrja Leit" + IWTimestamp.RightNow().toString());
List IndependentMembersInfoList = EntityFinder.findAll((UnionMemberInfo) IDOLookup.instanciateEntity(UnionMemberInfo.class), this.getIndependentMembersSQL(this.un_id));
List MembersInfoList = EntityFinder.findAll((UnionMemberInfo) IDOLookup.instanciateEntity(UnionMemberInfo.class), this.getDependentMembersSQL(this.un_id));
System.err.println("Leit Loki�" + IWTimestamp.RightNow().toString());
this.memberCount = MembersInfoList.size();
Vector[] TotalMembersVector = new Vector[2];
for (int j = 0; j < TotalMembersVector.length; j++) {
TotalMembersVector[j] = new Vector(memberCount);
}
this.mbsVectorArray = new Vector[listlen];
this.mbsInfoVectorArray = new Vector[listlen];
for (int h = 0; h < listlen; h++) {
mbsVectorArray[h] = new Vector();
mbsInfoVectorArray[h] = new Vector();
}
Member member;
UnionMemberInfo umi;
int age = 0, mbid, count = 0, pcid = 0, instlm = 1, pmid = 0, groupnr = 0, lockergrnr = 0, extragrnr = 0, familygroup = 100, famid = 0, regYear = 0;
IWTimestamp instDate = new IWTimestamp();
String strName, strKt, strGender, strFamStatus = "", Price = "0";
String locker;
int totprice;
int iFamilyCount;
int iAccountId;
boolean isNew, hasLocker;
Vector extragroupsV;
Hashtable FamilyHash = getFamilyHash(MembersInfoList);
System.err.println("Sortera " + memberCount + " " + IWTimestamp.RightNow().toString());
this.AccHsh = new Hashtable();
for (int a = 0; a < memberCount; a++) {
isNew = false;
hasLocker = false;
totprice = 0;
iFamilyCount = 1;
umi = (UnionMemberInfo) MembersInfoList.get(a);
mbid = umi.getMemberID();
member = ((MemberHome) IDOLookup.getHomeLegacy(Member.class)).findByPrimaryKey(mbid);
strName = member.getName();
strKt = member.getSocialSecurityNumber();
strGender = member.getGender();
pcid = umi.getPriceCatalogueID();
instlm = umi.getPreferredInstallmentNr();
pmid = umi.getPaymentTypeID();
famid = umi.getFamilyId();
if (FamilyHash.containsKey(new Integer(famid)))
iFamilyCount = ((Integer) FamilyHash.get(new Integer(famid))).intValue();
boolean bCouple = (iFamilyCount == 2 ? true : false);
boolean bFamily = (iFamilyCount >= 2 ? true : false);
strFamStatus = umi.getFamilyStatus();
if (strFamStatus == null || strFamStatus.length() == 0)
strFamStatus = "";
if (umi.getLockerNumber() != null && umi.getLockerNumber().length() > 0)
hasLocker = true;
if (umi.getFirstInstallmentDate() != null)
instDate = new IWTimestamp(umi.getFirstInstallmentDate());
else
instDate = new IWTimestamp(1, 1, 2000);
if (umi.getRegistrationDate() != null)
regYear = new IWTimestamp(umi.getRegistrationDate()).getYear();
else
regYear = 0;
isNew = (regYear == thisYear) ? true : false;
int ktYear = 0;
if (strKt.length() >= 6) {
ktYear = Integer.parseInt(strKt.substring(4, 6));
if (strKt.length() == 10) {
if (strKt.endsWith("9"))
ktYear += 1900;
if (strKt.endsWith("0"))
ktYear += 2000;
}
else
ktYear += 1900;
}
age = thisYear - ktYear;
//System.out.print(mbid+" \t"+strGender+" ");
int[] iGroups = findPriceGroups(age, regYear, strGender, bFamily, bCouple, strFamStatus, isNew, hasLocker);
addMemberToMembersArray(mbsVectorArray, mbsInfoVectorArray, member, umi, iGroups);
//System.out.println(age);
if (iGroups != null) {
TotalMembersVector[0].addElement(umi);
TotalMembersVector[1].addElement(iGroups);
}
}// for loop
System.err.println("fj�ldi reikninga " + AccHsh.size());
System.err.println("Sortera b�in " + IWTimestamp.RightNow().toString());
this.totals = new Integer[listlen][2];
System.err.println("�h��ir " + IWTimestamp.RightNow().toString());
if (IndependentMembersInfoList != null) {
mbsInfoVectorArray[mbsInfoVectorArray.length - 2] = new Vector(IndependentMembersInfoList);
UnionMemberInfo UMI;
int[] grArray = new int[1];
grArray[0] = -2;
for (int i = 0; i < IndependentMembersInfoList.size(); i++) {
UMI = (UnionMemberInfo) IndependentMembersInfoList.get(i);
mbsVectorArray[mbsVectorArray.length - 2].addElement(((MemberHome) IDOLookup.getHomeLegacy(Member.class)).findByPrimaryKey(UMI.getMemberID()));
TotalMembersVector[0].addElement(UMI);
TotalMembersVector[1].addElement(grArray);
}
}
System.err.println("�h��ir B�nir " + IWTimestamp.RightNow().toString());
System.err.println("Samt�lur " + IWTimestamp.RightNow().toString());
for (int u = 0; u < listlen; u++) {
int s = mbsVectorArray[u].size();
totals[u][0] = new Integer(s);
if (u < linecount)
totals[u][1] = new Integer(s * Integer.parseInt(Values[u][2]));
}
System.err.println("Samt�lur b�nar" + IWTimestamp.RightNow().toString());
if (TotalMembersVector == null)
System.err.println("Vector er tomur");
else
System.err.println(TotalMembersVector[0].size());
this.setMemberTotals(modinfo, totals);
this.setMemberVectorArray(modinfo, mbsVectorArray);
this.setMbsInfoVectorArray(modinfo, mbsInfoVectorArray);
this.setMemberCount(modinfo, memberCount);
this.setTotalMembersVector(modinfo, TotalMembersVector);
}
else {
String sMsg7 = iwrb.getLocalizedString("msg7", "Search failed");
add("<H2>" + sMsg7 + "</H2> ");
}
}// seekThem
private void setEverything(IWContext modinfo) {
this.setMemberTotals(modinfo, totals);
this.setMemberVectorArray(modinfo, mbsVectorArray);
this.setMbsInfoVectorArray(modinfo, mbsInfoVectorArray);
this.setMemberCount(modinfo, memberCount);
this.setTotalMembersVector(modinfo, TotalMembersVector);
}
private void letThemPay(IWContext modinfo, int payTypeId, int defaultInstallmentNr, int defaultYear, int defaultFirstMonth, int defaultPayday, double fBankInterest, int iBankCost, int iTotalCost) throws SQLException, FinderException {
//System.err.print("\n�lagning hefst "+ new
// idegaTimestamp().toSQLTimeString());
int giroID = 1;
int euroID = 2;
int visaID = 3;
StringBuffer RoundName = new StringBuffer("F�lagsgj�ld ");
RoundName.append(this.unionAbbrev);
switch (payTypeId) {
case 1 :
RoundName.append(" Giro");
break;
case 2 :
RoundName.append(" Euro");
break;
case 3 :
RoundName.append(" V�sa");
break;
}
IWTimestamp dateToday = IWTimestamp.RightNow();
Timestamp T = dateToday.getTimestamp();
IWTimestamp prefdate;
PaymentRound round = (PaymentRound) IDOLookup.createLegacy(PaymentRound.class);
round.setRoundDate(dateToday.getTimestamp());
round.setUnionId(new Integer(union_id));
round.setName(RoundName.toString());
round.insert();
int roundnr = round.getID();
int defInstlm = defaultInstallmentNr;
int defPayday = defaultPayday;
int defFirstMonth = defaultFirstMonth;
int defYear = defaultYear;
int pmId = payTypeId;
int thisYear = defYear;
int thisMonth = defFirstMonth;
int thisDay = defPayday;
double Multi = fBankInterest / 100 + 1;
int memberID = 0, totalinst = 1, pmID = 1, price = 0, priceChange = 0, firstprice = 0;
int totalinstallments, CatalogID = 0, smallprice = 0, instCount;
String pcName = "F�lagsgj�ld " + this.unionAbbrev, ifInst = "I";
//PriceCatalogue PC = new PriceCatalogue();
boolean extra = false;
int totalPrice = 0;
CatalogIds = this.getCatalogIds(modinfo);
UnionMemberInfo UMI;
int[] mbgr;
if (TotalMembersVector != null) {
int mlen = TotalMembersVector[0].size();
//System.err.println("Byrja
// �lagningu"+idegaTimestamp.RightNow().toString());
//
Hashtable AccountsHash = getAccountsHash(thisYear);
for (int i = 0; i < mlen; i++) {
price = 0;
StringBuffer sbExtra = new StringBuffer("");
UMI = (UnionMemberInfo) TotalMembersVector[0].elementAt(i);
pmID = UMI.getPaymentTypeID();
if (pmID == 0)
pmID = giroID;
if (pmID == payTypeId) {
//System.err.print("\n"+i+" "+UMI.getMemberID()+" ");
mbgr = (int[]) TotalMembersVector[1].elementAt(i);
String gName = "";
int gPrice = 0;
memberID = UMI.getMemberID();
totalinst = UMI.getPreferredInstallmentNr();
pmID = UMI.getPaymentTypeID();
java.sql.Date D = UMI.getFirstInstallmentDate();
if (D != null) {
prefdate = new IWTimestamp(D);
thisMonth = prefdate.getMonth();
thisDay = prefdate.getDay();
}
int iAccountId = -1;
if (AccountsHash != null && AccountsHash.containsKey(new Integer(memberID)))
iAccountId = ((Integer) AccountsHash.get(new Integer(memberID))).intValue();
else
iAccountId = this.makeNewAccount(memberID, this.un_id, "", this.cashier_id, thisYear);
for (int j = 0; j < mbgr.length; j++) {
// Dependent catalogues
if (mbgr[j] >= 0) {
//System.err.print(" "+mbgr[j]+" ");
gPrice = Integer.parseInt(Values[mbgr[j]][2]);
gPrice = (int) Math.floor(gPrice * Multi);
gPrice += iBankCost;
price += gPrice;
gName = Values[mbgr[j]][1];
sbExtra.append(Values[mbgr[j]][1]);
sbExtra.append(" ");
sbExtra.append(String.valueOf(gPrice));
sbExtra.append(",");
}
// inDependent catalogues
else if (mbgr[j] == -2) {
PriceCatalogue Pr = ((PriceCatalogueHome) IDOLookup.getHomeLegacy(PriceCatalogue.class)).findByPrimaryKey(UMI.getPriceCatalogueID());
gPrice = Pr.getPrice();
gPrice = (int) Math.floor(gPrice * Multi);
gPrice += iBankCost;
price += gPrice;
gName = Pr.getName();
sbExtra.append(Pr.getName());
sbExtra.append(" ");
sbExtra.append(String.valueOf(gPrice));
sbExtra.append(" , ");
}
if (iAccountId != -1)
this.makeAccountEntry(iAccountId, -gPrice, gName, "�lagning", "", "", "", this.cashier_id, T, T);
}
if (iTotalCost != 0 && iAccountId != -1) {
price += iTotalCost;
this.makeAccountEntry(iAccountId, -iTotalCost, "Kostna�ur", "�lagning", "", "", "", this.cashier_id, T, T);
}
totalinstallments = (totalinst != 0 ? totalinst : defInstlm);
instCount = totalinstallments;
smallprice = price / totalinstallments;
priceChange = price % totalinstallments;
firstprice = smallprice + priceChange;
int thePrice;
Timestamp Paydate;
for (int k = 0; k < instCount; k++) {
Paydate = new IWTimestamp(thisYear, thisMonth + k, thisDay, 0, 0, 0).getTimestamp();
thePrice = smallprice;
if (k == 0)
thePrice = firstprice;
makePayment(memberID, iAccountId, roundnr, thePrice, false, pcName, sbExtra.toString(), (k + 1), totalinstallments, pmID, Paydate, T, cashier_id);
totalPrice += thePrice;
}
}
} // i loop
round.setTotals(totalPrice);
round.update();
}
}//letThemPay
private void makePayment(int memberID, int accountId, int RoundId, int Price, boolean Status, String Name, String Info, int InstallmentNumber, int Totalinstallments, int PaymentTypeID, Timestamp PayDate, Timestamp last_updated, int cashier_id) throws SQLException {
Payment P = (Payment) IDOLookup.createLegacy(Payment.class);
P.setAccountId(accountId);
P.setMemberId(memberID);
P.setRoundId(RoundId);
P.setPrice(Price);
P.setStatus(Status); // False meaning; has not been paid
P.setExtraInfo(Info);
P.setName(Name);
P.setInstallmentNr(InstallmentNumber);
P.setTotalInstallment(Totalinstallments);
P.setPaymentTypeID(PaymentTypeID);
P.setPaymentDate(PayDate);
P.setLastUpdated(last_updated);
P.setCashierId(cashier_id);
P.setUnionId(this.un_id);
P.insert();
}
private int makeNewAccount(int MemberId, int UnionId, String Name, int CashierId, int accountYear) {
Account A = (Account) IDOLookup.createLegacy(Account.class);
A.setBalance(0);
A.setCashierId(CashierId);
A.setCreationDate(IWTimestamp.getTimestampRightNow());
A.setLastUpdated(IWTimestamp.getTimestampRightNow());
A.setMemberId(MemberId);
A.setUnionId(UnionId);
A.setAccountYear(accountYear);
int ret = -1;
try {
A.insert();
ret = A.getID();
}
catch (SQLException sql) {
sql.printStackTrace();
ret = -1;
}
return ret;
}
private void makeAccountEntry(int AccountId, int Price, String Name, String Info, String AccountKey, String EntryKey, String TariffKey, int CashierId, Timestamp PaymentDate, Timestamp LastUpdated) throws SQLException, FinderException {
AccountEntry E = (AccountEntry) IDOLookup.createLegacy(AccountEntry.class);
E.setAccountId(AccountId);
E.setPrice(Price);
E.setName(Name);
E.setAccountKey(AccountKey);
E.setEntryKey(EntryKey);
E.setTariffKey(TariffKey);
E.setInfo(Info);
E.setCashierId(CashierId);
E.setPaymentDate(PaymentDate);
E.setLastUpdated(LastUpdated);
E.insert();
Account A = ((AccountHome) IDOLookup.getHomeLegacy(Account.class)).findByPrimaryKey(AccountId);
A.addToBalance(Price);
A.update();
}
public void main(IWContext modinfo) throws IOException {
//isAdmin =
/** @todo: fixa Admin*/
iwrb = getResourceBundle(modinfo);
iwb = getBundle(modinfo);
isAdmin = true;
control(modinfo);
}
public String getBundleIdentifier() {
return IW_BUNDLE_IDENTIFIER;
}
}// class Tariffer