added billing

This commit is contained in:
Jörg Henke
2021-03-05 19:33:49 +01:00
parent 345e2fc740
commit 5ef055156b
23 changed files with 680 additions and 718 deletions

View File

@ -1,18 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="bin/main" path="src/main/resources">
<attributes>
<attribute name="gradle_scope" value="main"/>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry kind="src" output="bin/test" path="src/test/java">
<attributes>
<attribute name="gradle_scope" value="test"/>
<attribute name="gradle_used_by_scope" value="test"/>
<attribute name="test" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" output="bin/main" path="src/main/java">
<attributes>
<attribute name="gradle_scope" value="main"/>
@ -25,13 +12,30 @@
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry kind="src" output="bin/main" path="src/main/resources">
<attributes>
<attribute name="gradle_scope" value="main"/>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry kind="src" output="bin/test" path="src/test/java">
<attributes>
<attribute name="test" value="true"/>
<attribute name="gradle_scope" value="test"/>
<attribute name="gradle_used_by_scope" value="test"/>
</attributes>
</classpathentry>
<classpathentry kind="src" output="bin/main" path="src/main/webapp">
<attributes>
<attribute name="gradle_scope" value="main"/>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11/"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11/">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.web.container"/>
<classpathentry kind="con" path="org.eclipse.buildship.core.gradleclasspathcontainer">
<attributes>

View File

@ -25,7 +25,7 @@ apply plugin: 'war'
apply plugin: 'eclipse'
group = 'jottyfan'
version = '1.1.4'
version = '1.1.5'
description = """timetrack"""

View File

@ -5,6 +5,7 @@ package de.jottyfan.timetrack.db.done;
import de.jottyfan.timetrack.db.DefaultCatalog;
import de.jottyfan.timetrack.db.done.tables.TBilling;
import de.jottyfan.timetrack.db.done.tables.TDone;
import de.jottyfan.timetrack.db.done.tables.TJob;
import de.jottyfan.timetrack.db.done.tables.TModule;
@ -14,7 +15,6 @@ import de.jottyfan.timetrack.db.done.tables.VDaylimits;
import de.jottyfan.timetrack.db.done.tables.VDaysummary;
import de.jottyfan.timetrack.db.done.tables.VDone;
import de.jottyfan.timetrack.db.done.tables.VDuration;
import de.jottyfan.timetrack.db.done.tables.VEucanshare;
import de.jottyfan.timetrack.db.done.tables.VHamster;
import de.jottyfan.timetrack.db.done.tables.VHamstersummary;
import de.jottyfan.timetrack.db.done.tables.VTasklist;
@ -43,6 +43,11 @@ public class Done extends SchemaImpl {
*/
public static final Done DONE = new Done();
/**
* The table <code>done.t_billing</code>.
*/
public final TBilling T_BILLING = TBilling.T_BILLING;
/**
* The table <code>done.t_done</code>.
*/
@ -88,11 +93,6 @@ public class Done extends SchemaImpl {
*/
public final VDuration V_DURATION = VDuration.V_DURATION;
/**
* The table <code>done.v_eucanshare</code>.
*/
public final VEucanshare V_EUCANSHARE = VEucanshare.V_EUCANSHARE;
/**
* The table <code>done.v_hamster</code>.
*/
@ -139,6 +139,7 @@ public class Done extends SchemaImpl {
@Override
public final List<Table<?>> getTables() {
return Arrays.<Table<?>>asList(
TBilling.T_BILLING,
TDone.T_DONE,
TJob.T_JOB,
TModule.T_MODULE,
@ -148,7 +149,6 @@ public class Done extends SchemaImpl {
VDaysummary.V_DAYSUMMARY,
VDone.V_DONE,
VDuration.V_DURATION,
VEucanshare.V_EUCANSHARE,
VHamster.V_HAMSTER,
VHamstersummary.V_HAMSTERSUMMARY,
VTasklist.V_TASKLIST,

View File

@ -4,10 +4,12 @@
package de.jottyfan.timetrack.db.done;
import de.jottyfan.timetrack.db.done.tables.TBilling;
import de.jottyfan.timetrack.db.done.tables.TDone;
import de.jottyfan.timetrack.db.done.tables.TJob;
import de.jottyfan.timetrack.db.done.tables.TModule;
import de.jottyfan.timetrack.db.done.tables.TProject;
import de.jottyfan.timetrack.db.done.tables.records.TBillingRecord;
import de.jottyfan.timetrack.db.done.tables.records.TDoneRecord;
import de.jottyfan.timetrack.db.done.tables.records.TJobRecord;
import de.jottyfan.timetrack.db.done.tables.records.TModuleRecord;
@ -33,6 +35,9 @@ public class Keys {
// UNIQUE and PRIMARY KEY definitions
// -------------------------------------------------------------------------
public static final UniqueKey<TBillingRecord> T_BILLING_NAME_KEY = Internal.createUniqueKey(TBilling.T_BILLING, DSL.name("t_billing_name_key"), new TableField[] { TBilling.T_BILLING.NAME }, true);
public static final UniqueKey<TBillingRecord> T_BILLING_PKEY = Internal.createUniqueKey(TBilling.T_BILLING, DSL.name("t_billing_pkey"), new TableField[] { TBilling.T_BILLING.PK }, true);
public static final UniqueKey<TBillingRecord> T_BILLING_SHORTCUT_KEY = Internal.createUniqueKey(TBilling.T_BILLING, DSL.name("t_billing_shortcut_key"), new TableField[] { TBilling.T_BILLING.SHORTCUT }, true);
public static final UniqueKey<TDoneRecord> T_DONE_PKEY = Internal.createUniqueKey(TDone.T_DONE, DSL.name("t_done_pkey"), new TableField[] { TDone.T_DONE.PK }, true);
public static final UniqueKey<TJobRecord> T_CATEGORY_NAME_KEY = Internal.createUniqueKey(TJob.T_JOB, DSL.name("t_category_name_key"), new TableField[] { TJob.T_JOB.NAME }, true);
public static final UniqueKey<TJobRecord> T_CATEGORY_PKEY = Internal.createUniqueKey(TJob.T_JOB, DSL.name("t_category_pkey"), new TableField[] { TJob.T_JOB.PK }, true);
@ -45,6 +50,7 @@ public class Keys {
// FOREIGN KEY definitions
// -------------------------------------------------------------------------
public static final ForeignKey<TDoneRecord, TBillingRecord> T_DONE__T_DONE_FK_BILLING_FKEY = Internal.createForeignKey(TDone.T_DONE, DSL.name("t_done_fk_billing_fkey"), new TableField[] { TDone.T_DONE.FK_BILLING }, Keys.T_BILLING_PKEY, new TableField[] { TBilling.T_BILLING.PK }, true);
public static final ForeignKey<TDoneRecord, TJobRecord> T_DONE__T_DONE_FK_CATEGORY_FKEY = Internal.createForeignKey(TDone.T_DONE, DSL.name("t_done_fk_category_fkey"), new TableField[] { TDone.T_DONE.FK_JOB }, Keys.T_CATEGORY_PKEY, new TableField[] { TJob.T_JOB.PK }, true);
public static final ForeignKey<TDoneRecord, TModuleRecord> T_DONE__T_DONE_FK_JOB_FKEY = Internal.createForeignKey(TDone.T_DONE, DSL.name("t_done_fk_job_fkey"), new TableField[] { TDone.T_DONE.FK_MODULE }, Keys.T_JOB_PKEY, new TableField[] { TModule.T_MODULE.PK }, true);
public static final ForeignKey<TDoneRecord, TLoginRecord> T_DONE__T_DONE_FK_LOGIN_FKEY = Internal.createForeignKey(TDone.T_DONE, DSL.name("t_done_fk_login_fkey"), new TableField[] { TDone.T_DONE.FK_LOGIN }, de.jottyfan.timetrack.db.profile.Keys.T_LOGIN_PKEY, new TableField[] { TLogin.T_LOGIN.PK }, true);

View File

@ -4,6 +4,7 @@
package de.jottyfan.timetrack.db.done;
import de.jottyfan.timetrack.db.done.tables.TBilling;
import de.jottyfan.timetrack.db.done.tables.TDone;
import de.jottyfan.timetrack.db.done.tables.TJob;
import de.jottyfan.timetrack.db.done.tables.TModule;
@ -13,7 +14,6 @@ import de.jottyfan.timetrack.db.done.tables.VDaylimits;
import de.jottyfan.timetrack.db.done.tables.VDaysummary;
import de.jottyfan.timetrack.db.done.tables.VDone;
import de.jottyfan.timetrack.db.done.tables.VDuration;
import de.jottyfan.timetrack.db.done.tables.VEucanshare;
import de.jottyfan.timetrack.db.done.tables.VHamster;
import de.jottyfan.timetrack.db.done.tables.VHamstersummary;
import de.jottyfan.timetrack.db.done.tables.VTasklist;
@ -28,6 +28,11 @@ import de.jottyfan.timetrack.db.done.tables.VWorktime;
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
public class Tables {
/**
* The table <code>done.t_billing</code>.
*/
public static final TBilling T_BILLING = TBilling.T_BILLING;
/**
* The table <code>done.t_done</code>.
*/
@ -73,11 +78,6 @@ public class Tables {
*/
public static final VDuration V_DURATION = VDuration.V_DURATION;
/**
* The table <code>done.v_eucanshare</code>.
*/
public static final VEucanshare V_EUCANSHARE = VEucanshare.V_EUCANSHARE;
/**
* The table <code>done.v_hamster</code>.
*/

View File

@ -0,0 +1,164 @@
/*
* This file is generated by jOOQ.
*/
package de.jottyfan.timetrack.db.done.tables;
import de.jottyfan.timetrack.db.done.Done;
import de.jottyfan.timetrack.db.done.Keys;
import de.jottyfan.timetrack.db.done.tables.records.TBillingRecord;
import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.List;
import org.jooq.Field;
import org.jooq.ForeignKey;
import org.jooq.Identity;
import org.jooq.Name;
import org.jooq.Record;
import org.jooq.Row5;
import org.jooq.Schema;
import org.jooq.Table;
import org.jooq.TableField;
import org.jooq.TableOptions;
import org.jooq.UniqueKey;
import org.jooq.impl.DSL;
import org.jooq.impl.SQLDataType;
import org.jooq.impl.TableImpl;
/**
* This class is generated by jOOQ.
*/
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
public class TBilling extends TableImpl<TBillingRecord> {
private static final long serialVersionUID = 1L;
/**
* The reference instance of <code>done.t_billing</code>
*/
public static final TBilling T_BILLING = new TBilling();
/**
* The class holding records for this type
*/
@Override
public Class<TBillingRecord> getRecordType() {
return TBillingRecord.class;
}
/**
* The column <code>done.t_billing.lastchange</code>.
*/
public final TableField<TBillingRecord, LocalDateTime> LASTCHANGE = createField(DSL.name("lastchange"), SQLDataType.LOCALDATETIME(6).defaultValue(DSL.field("now()", SQLDataType.LOCALDATETIME)), this, "");
/**
* The column <code>done.t_billing.pk</code>.
*/
public final TableField<TBillingRecord, Integer> PK = createField(DSL.name("pk"), SQLDataType.INTEGER.nullable(false).identity(true), this, "");
/**
* The column <code>done.t_billing.name</code>.
*/
public final TableField<TBillingRecord, String> NAME = createField(DSL.name("name"), SQLDataType.CLOB.nullable(false), this, "");
/**
* The column <code>done.t_billing.shortcut</code>.
*/
public final TableField<TBillingRecord, String> SHORTCUT = createField(DSL.name("shortcut"), SQLDataType.CLOB.nullable(false), this, "");
/**
* The column <code>done.t_billing.csskey</code>.
*/
public final TableField<TBillingRecord, String> CSSKEY = createField(DSL.name("csskey"), SQLDataType.CLOB, this, "");
private TBilling(Name alias, Table<TBillingRecord> aliased) {
this(alias, aliased, null);
}
private TBilling(Name alias, Table<TBillingRecord> aliased, Field<?>[] parameters) {
super(alias, null, aliased, parameters, DSL.comment(""), TableOptions.table());
}
/**
* Create an aliased <code>done.t_billing</code> table reference
*/
public TBilling(String alias) {
this(DSL.name(alias), T_BILLING);
}
/**
* Create an aliased <code>done.t_billing</code> table reference
*/
public TBilling(Name alias) {
this(alias, T_BILLING);
}
/**
* Create a <code>done.t_billing</code> table reference
*/
public TBilling() {
this(DSL.name("t_billing"), null);
}
public <O extends Record> TBilling(Table<O> child, ForeignKey<O, TBillingRecord> key) {
super(child, key, T_BILLING);
}
@Override
public Schema getSchema() {
return Done.DONE;
}
@Override
public Identity<TBillingRecord, Integer> getIdentity() {
return (Identity<TBillingRecord, Integer>) super.getIdentity();
}
@Override
public UniqueKey<TBillingRecord> getPrimaryKey() {
return Keys.T_BILLING_PKEY;
}
@Override
public List<UniqueKey<TBillingRecord>> getKeys() {
return Arrays.<UniqueKey<TBillingRecord>>asList(Keys.T_BILLING_PKEY, Keys.T_BILLING_NAME_KEY, Keys.T_BILLING_SHORTCUT_KEY);
}
@Override
public TBilling as(String alias) {
return new TBilling(DSL.name(alias), this);
}
@Override
public TBilling as(Name alias) {
return new TBilling(alias, this);
}
/**
* Rename this table
*/
@Override
public TBilling rename(String name) {
return new TBilling(DSL.name(name), null);
}
/**
* Rename this table
*/
@Override
public TBilling rename(Name name) {
return new TBilling(name, null);
}
// -------------------------------------------------------------------------
// Row5 type methods
// -------------------------------------------------------------------------
@Override
public Row5<LocalDateTime, Integer, String, String, String> fieldsRow() {
return (Row5) super.fieldsRow();
}
}

View File

@ -91,9 +91,9 @@ public class TDone extends TableImpl<TDoneRecord> {
public final TableField<TDoneRecord, Integer> FK_LOGIN = createField(DSL.name("fk_login"), SQLDataType.INTEGER.nullable(false), this, "");
/**
* The column <code>done.t_done.wp</code>.
* The column <code>done.t_done.fk_billing</code>.
*/
public final TableField<TDoneRecord, String> WP = createField(DSL.name("wp"), SQLDataType.CLOB, this, "");
public final TableField<TDoneRecord, Integer> FK_BILLING = createField(DSL.name("fk_billing"), SQLDataType.INTEGER, this, "");
private TDone(Name alias, Table<TDoneRecord> aliased) {
this(alias, aliased, null);
@ -150,7 +150,7 @@ public class TDone extends TableImpl<TDoneRecord> {
@Override
public List<ForeignKey<TDoneRecord, ?>> getReferences() {
return Arrays.<ForeignKey<TDoneRecord, ?>>asList(Keys.T_DONE__T_DONE_FK_PROJECT_FKEY, Keys.T_DONE__T_DONE_FK_JOB_FKEY, Keys.T_DONE__T_DONE_FK_CATEGORY_FKEY, Keys.T_DONE__T_DONE_FK_LOGIN_FKEY);
return Arrays.<ForeignKey<TDoneRecord, ?>>asList(Keys.T_DONE__T_DONE_FK_PROJECT_FKEY, Keys.T_DONE__T_DONE_FK_JOB_FKEY, Keys.T_DONE__T_DONE_FK_CATEGORY_FKEY, Keys.T_DONE__T_DONE_FK_LOGIN_FKEY, Keys.T_DONE__T_DONE_FK_BILLING_FKEY);
}
public TProject tProject() {
@ -169,6 +169,10 @@ public class TDone extends TableImpl<TDoneRecord> {
return new TLogin(this, Keys.T_DONE__T_DONE_FK_LOGIN_FKEY);
}
public TBilling tBilling() {
return new TBilling(this, Keys.T_DONE__T_DONE_FK_BILLING_FKEY);
}
@Override
public TDone as(String alias) {
return new TDone(DSL.name(alias), this);
@ -200,7 +204,7 @@ public class TDone extends TableImpl<TDoneRecord> {
// -------------------------------------------------------------------------
@Override
public Row9<LocalDateTime, Integer, LocalDateTime, LocalDateTime, Integer, Integer, Integer, Integer, String> fieldsRow() {
public Row9<LocalDateTime, Integer, LocalDateTime, LocalDateTime, Integer, Integer, Integer, Integer, Integer> fieldsRow() {
return (Row9) super.fieldsRow();
}
}

View File

@ -1,160 +0,0 @@
/*
* This file is generated by jOOQ.
*/
package de.jottyfan.timetrack.db.done.tables;
import de.jottyfan.timetrack.db.done.Done;
import de.jottyfan.timetrack.db.done.tables.records.VEucanshareRecord;
import java.time.LocalDate;
import org.jooq.Field;
import org.jooq.ForeignKey;
import org.jooq.Name;
import org.jooq.Record;
import org.jooq.Row8;
import org.jooq.Schema;
import org.jooq.Table;
import org.jooq.TableField;
import org.jooq.TableOptions;
import org.jooq.impl.DSL;
import org.jooq.impl.SQLDataType;
import org.jooq.impl.TableImpl;
import org.jooq.types.YearToSecond;
/**
* This class is generated by jOOQ.
*/
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
public class VEucanshare extends TableImpl<VEucanshareRecord> {
private static final long serialVersionUID = 1L;
/**
* The reference instance of <code>done.v_eucanshare</code>
*/
public static final VEucanshare V_EUCANSHARE = new VEucanshare();
/**
* The class holding records for this type
*/
@Override
public Class<VEucanshareRecord> getRecordType() {
return VEucanshareRecord.class;
}
/**
* The column <code>done.v_eucanshare.fk_done</code>.
*/
public final TableField<VEucanshareRecord, Integer> FK_DONE = createField(DSL.name("fk_done"), SQLDataType.INTEGER, this, "");
/**
* The column <code>done.v_eucanshare.workday</code>.
*/
public final TableField<VEucanshareRecord, LocalDate> WORKDAY = createField(DSL.name("workday"), SQLDataType.LOCALDATE, this, "");
/**
* The column <code>done.v_eucanshare.duration</code>.
*/
public final TableField<VEucanshareRecord, YearToSecond> DURATION = createField(DSL.name("duration"), SQLDataType.INTERVAL, this, "");
/**
* The column <code>done.v_eucanshare.project_name</code>.
*/
public final TableField<VEucanshareRecord, String> PROJECT_NAME = createField(DSL.name("project_name"), SQLDataType.CLOB, this, "");
/**
* The column <code>done.v_eucanshare.module_name</code>.
*/
public final TableField<VEucanshareRecord, String> MODULE_NAME = createField(DSL.name("module_name"), SQLDataType.CLOB, this, "");
/**
* The column <code>done.v_eucanshare.job_name</code>.
*/
public final TableField<VEucanshareRecord, String> JOB_NAME = createField(DSL.name("job_name"), SQLDataType.CLOB, this, "");
/**
* The column <code>done.v_eucanshare.fk_login</code>.
*/
public final TableField<VEucanshareRecord, Integer> FK_LOGIN = createField(DSL.name("fk_login"), SQLDataType.INTEGER, this, "");
/**
* The column <code>done.v_eucanshare.wp</code>.
*/
public final TableField<VEucanshareRecord, String> WP = createField(DSL.name("wp"), SQLDataType.CLOB, this, "");
private VEucanshare(Name alias, Table<VEucanshareRecord> aliased) {
this(alias, aliased, null);
}
private VEucanshare(Name alias, Table<VEucanshareRecord> aliased, Field<?>[] parameters) {
super(alias, null, aliased, parameters, DSL.comment(""), TableOptions.view());
}
/**
* Create an aliased <code>done.v_eucanshare</code> table reference
*/
public VEucanshare(String alias) {
this(DSL.name(alias), V_EUCANSHARE);
}
/**
* Create an aliased <code>done.v_eucanshare</code> table reference
*/
public VEucanshare(Name alias) {
this(alias, V_EUCANSHARE);
}
/**
* Create a <code>done.v_eucanshare</code> table reference
*/
public VEucanshare() {
this(DSL.name("v_eucanshare"), null);
}
public <O extends Record> VEucanshare(Table<O> child, ForeignKey<O, VEucanshareRecord> key) {
super(child, key, V_EUCANSHARE);
}
@Override
public Schema getSchema() {
return Done.DONE;
}
@Override
public VEucanshare as(String alias) {
return new VEucanshare(DSL.name(alias), this);
}
@Override
public VEucanshare as(Name alias) {
return new VEucanshare(alias, this);
}
/**
* Rename this table
*/
@Override
public VEucanshare rename(String name) {
return new VEucanshare(DSL.name(name), null);
}
/**
* Rename this table
*/
@Override
public VEucanshare rename(Name name) {
return new VEucanshare(name, null);
}
// -------------------------------------------------------------------------
// Row8 type methods
// -------------------------------------------------------------------------
@Override
public Row8<Integer, LocalDate, YearToSecond, String, String, String, Integer, String> fieldsRow() {
return (Row8) super.fieldsRow();
}
}

View File

@ -11,7 +11,7 @@ import org.jooq.Field;
import org.jooq.ForeignKey;
import org.jooq.Name;
import org.jooq.Record;
import org.jooq.Row8;
import org.jooq.Row9;
import org.jooq.Schema;
import org.jooq.Table;
import org.jooq.TableField;
@ -73,9 +73,14 @@ public class VWorktime extends TableImpl<VWorktimeRecord> {
public final TableField<VWorktimeRecord, String> JOB_NAME = createField(DSL.name("job_name"), SQLDataType.CLOB, this, "");
/**
* The column <code>done.v_worktime.wp</code>.
* The column <code>done.v_worktime.billing_shortcut</code>.
*/
public final TableField<VWorktimeRecord, String> WP = createField(DSL.name("wp"), SQLDataType.CLOB, this, "");
public final TableField<VWorktimeRecord, String> BILLING_SHORTCUT = createField(DSL.name("billing_shortcut"), SQLDataType.CLOB, this, "");
/**
* The column <code>done.v_worktime.billing_csskey</code>.
*/
public final TableField<VWorktimeRecord, String> BILLING_CSSKEY = createField(DSL.name("billing_csskey"), SQLDataType.CLOB, this, "");
/**
* The column <code>done.v_worktime.fk_login</code>.
@ -147,11 +152,11 @@ public class VWorktime extends TableImpl<VWorktimeRecord> {
}
// -------------------------------------------------------------------------
// Row8 type methods
// Row9 type methods
// -------------------------------------------------------------------------
@Override
public Row8<String, String, Double, String, String, String, String, Integer> fieldsRow() {
return (Row8) super.fieldsRow();
public Row9<String, String, Double, String, String, String, String, String, Integer> fieldsRow() {
return (Row9) super.fieldsRow();
}
}

View File

@ -0,0 +1,257 @@
/*
* This file is generated by jOOQ.
*/
package de.jottyfan.timetrack.db.done.tables.records;
import de.jottyfan.timetrack.db.done.tables.TBilling;
import java.time.LocalDateTime;
import org.jooq.Field;
import org.jooq.Record1;
import org.jooq.Record5;
import org.jooq.Row5;
import org.jooq.impl.UpdatableRecordImpl;
/**
* This class is generated by jOOQ.
*/
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
public class TBillingRecord extends UpdatableRecordImpl<TBillingRecord> implements Record5<LocalDateTime, Integer, String, String, String> {
private static final long serialVersionUID = 1L;
/**
* Setter for <code>done.t_billing.lastchange</code>.
*/
public void setLastchange(LocalDateTime value) {
set(0, value);
}
/**
* Getter for <code>done.t_billing.lastchange</code>.
*/
public LocalDateTime getLastchange() {
return (LocalDateTime) get(0);
}
/**
* Setter for <code>done.t_billing.pk</code>.
*/
public void setPk(Integer value) {
set(1, value);
}
/**
* Getter for <code>done.t_billing.pk</code>.
*/
public Integer getPk() {
return (Integer) get(1);
}
/**
* Setter for <code>done.t_billing.name</code>.
*/
public void setName(String value) {
set(2, value);
}
/**
* Getter for <code>done.t_billing.name</code>.
*/
public String getName() {
return (String) get(2);
}
/**
* Setter for <code>done.t_billing.shortcut</code>.
*/
public void setShortcut(String value) {
set(3, value);
}
/**
* Getter for <code>done.t_billing.shortcut</code>.
*/
public String getShortcut() {
return (String) get(3);
}
/**
* Setter for <code>done.t_billing.csskey</code>.
*/
public void setCsskey(String value) {
set(4, value);
}
/**
* Getter for <code>done.t_billing.csskey</code>.
*/
public String getCsskey() {
return (String) get(4);
}
// -------------------------------------------------------------------------
// Primary key information
// -------------------------------------------------------------------------
@Override
public Record1<Integer> key() {
return (Record1) super.key();
}
// -------------------------------------------------------------------------
// Record5 type implementation
// -------------------------------------------------------------------------
@Override
public Row5<LocalDateTime, Integer, String, String, String> fieldsRow() {
return (Row5) super.fieldsRow();
}
@Override
public Row5<LocalDateTime, Integer, String, String, String> valuesRow() {
return (Row5) super.valuesRow();
}
@Override
public Field<LocalDateTime> field1() {
return TBilling.T_BILLING.LASTCHANGE;
}
@Override
public Field<Integer> field2() {
return TBilling.T_BILLING.PK;
}
@Override
public Field<String> field3() {
return TBilling.T_BILLING.NAME;
}
@Override
public Field<String> field4() {
return TBilling.T_BILLING.SHORTCUT;
}
@Override
public Field<String> field5() {
return TBilling.T_BILLING.CSSKEY;
}
@Override
public LocalDateTime component1() {
return getLastchange();
}
@Override
public Integer component2() {
return getPk();
}
@Override
public String component3() {
return getName();
}
@Override
public String component4() {
return getShortcut();
}
@Override
public String component5() {
return getCsskey();
}
@Override
public LocalDateTime value1() {
return getLastchange();
}
@Override
public Integer value2() {
return getPk();
}
@Override
public String value3() {
return getName();
}
@Override
public String value4() {
return getShortcut();
}
@Override
public String value5() {
return getCsskey();
}
@Override
public TBillingRecord value1(LocalDateTime value) {
setLastchange(value);
return this;
}
@Override
public TBillingRecord value2(Integer value) {
setPk(value);
return this;
}
@Override
public TBillingRecord value3(String value) {
setName(value);
return this;
}
@Override
public TBillingRecord value4(String value) {
setShortcut(value);
return this;
}
@Override
public TBillingRecord value5(String value) {
setCsskey(value);
return this;
}
@Override
public TBillingRecord values(LocalDateTime value1, Integer value2, String value3, String value4, String value5) {
value1(value1);
value2(value2);
value3(value3);
value4(value4);
value5(value5);
return this;
}
// -------------------------------------------------------------------------
// Constructors
// -------------------------------------------------------------------------
/**
* Create a detached TBillingRecord
*/
public TBillingRecord() {
super(TBilling.T_BILLING);
}
/**
* Create a detached, initialised TBillingRecord
*/
public TBillingRecord(LocalDateTime lastchange, Integer pk, String name, String shortcut, String csskey) {
super(TBilling.T_BILLING);
setLastchange(lastchange);
setPk(pk);
setName(name);
setShortcut(shortcut);
setCsskey(csskey);
}
}

View File

@ -19,7 +19,7 @@ import org.jooq.impl.UpdatableRecordImpl;
* This class is generated by jOOQ.
*/
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
public class TDoneRecord extends UpdatableRecordImpl<TDoneRecord> implements Record9<LocalDateTime, Integer, LocalDateTime, LocalDateTime, Integer, Integer, Integer, Integer, String> {
public class TDoneRecord extends UpdatableRecordImpl<TDoneRecord> implements Record9<LocalDateTime, Integer, LocalDateTime, LocalDateTime, Integer, Integer, Integer, Integer, Integer> {
private static final long serialVersionUID = 1L;
@ -136,17 +136,17 @@ public class TDoneRecord extends UpdatableRecordImpl<TDoneRecord> implements Rec
}
/**
* Setter for <code>done.t_done.wp</code>.
* Setter for <code>done.t_done.fk_billing</code>.
*/
public void setWp(String value) {
public void setFkBilling(Integer value) {
set(8, value);
}
/**
* Getter for <code>done.t_done.wp</code>.
* Getter for <code>done.t_done.fk_billing</code>.
*/
public String getWp() {
return (String) get(8);
public Integer getFkBilling() {
return (Integer) get(8);
}
// -------------------------------------------------------------------------
@ -163,12 +163,12 @@ public class TDoneRecord extends UpdatableRecordImpl<TDoneRecord> implements Rec
// -------------------------------------------------------------------------
@Override
public Row9<LocalDateTime, Integer, LocalDateTime, LocalDateTime, Integer, Integer, Integer, Integer, String> fieldsRow() {
public Row9<LocalDateTime, Integer, LocalDateTime, LocalDateTime, Integer, Integer, Integer, Integer, Integer> fieldsRow() {
return (Row9) super.fieldsRow();
}
@Override
public Row9<LocalDateTime, Integer, LocalDateTime, LocalDateTime, Integer, Integer, Integer, Integer, String> valuesRow() {
public Row9<LocalDateTime, Integer, LocalDateTime, LocalDateTime, Integer, Integer, Integer, Integer, Integer> valuesRow() {
return (Row9) super.valuesRow();
}
@ -213,8 +213,8 @@ public class TDoneRecord extends UpdatableRecordImpl<TDoneRecord> implements Rec
}
@Override
public Field<String> field9() {
return TDone.T_DONE.WP;
public Field<Integer> field9() {
return TDone.T_DONE.FK_BILLING;
}
@Override
@ -258,8 +258,8 @@ public class TDoneRecord extends UpdatableRecordImpl<TDoneRecord> implements Rec
}
@Override
public String component9() {
return getWp();
public Integer component9() {
return getFkBilling();
}
@Override
@ -303,8 +303,8 @@ public class TDoneRecord extends UpdatableRecordImpl<TDoneRecord> implements Rec
}
@Override
public String value9() {
return getWp();
public Integer value9() {
return getFkBilling();
}
@Override
@ -356,13 +356,13 @@ public class TDoneRecord extends UpdatableRecordImpl<TDoneRecord> implements Rec
}
@Override
public TDoneRecord value9(String value) {
setWp(value);
public TDoneRecord value9(Integer value) {
setFkBilling(value);
return this;
}
@Override
public TDoneRecord values(LocalDateTime value1, Integer value2, LocalDateTime value3, LocalDateTime value4, Integer value5, Integer value6, Integer value7, Integer value8, String value9) {
public TDoneRecord values(LocalDateTime value1, Integer value2, LocalDateTime value3, LocalDateTime value4, Integer value5, Integer value6, Integer value7, Integer value8, Integer value9) {
value1(value1);
value2(value2);
value3(value3);
@ -389,7 +389,7 @@ public class TDoneRecord extends UpdatableRecordImpl<TDoneRecord> implements Rec
/**
* Create a detached, initialised TDoneRecord
*/
public TDoneRecord(LocalDateTime lastchange, Integer pk, LocalDateTime timeFrom, LocalDateTime timeUntil, Integer fkProject, Integer fkModule, Integer fkJob, Integer fkLogin, String wp) {
public TDoneRecord(LocalDateTime lastchange, Integer pk, LocalDateTime timeFrom, LocalDateTime timeUntil, Integer fkProject, Integer fkModule, Integer fkJob, Integer fkLogin, Integer fkBilling) {
super(TDone.T_DONE);
setLastchange(lastchange);
@ -400,6 +400,6 @@ public class TDoneRecord extends UpdatableRecordImpl<TDoneRecord> implements Rec
setFkModule(fkModule);
setFkJob(fkJob);
setFkLogin(fkLogin);
setWp(wp);
setFkBilling(fkBilling);
}
}

View File

@ -1,359 +0,0 @@
/*
* This file is generated by jOOQ.
*/
package de.jottyfan.timetrack.db.done.tables.records;
import de.jottyfan.timetrack.db.done.tables.VEucanshare;
import java.time.LocalDate;
import org.jooq.Field;
import org.jooq.Record8;
import org.jooq.Row8;
import org.jooq.impl.TableRecordImpl;
import org.jooq.types.YearToSecond;
/**
* This class is generated by jOOQ.
*/
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
public class VEucanshareRecord extends TableRecordImpl<VEucanshareRecord> implements Record8<Integer, LocalDate, YearToSecond, String, String, String, Integer, String> {
private static final long serialVersionUID = 1L;
/**
* Setter for <code>done.v_eucanshare.fk_done</code>.
*/
public void setFkDone(Integer value) {
set(0, value);
}
/**
* Getter for <code>done.v_eucanshare.fk_done</code>.
*/
public Integer getFkDone() {
return (Integer) get(0);
}
/**
* Setter for <code>done.v_eucanshare.workday</code>.
*/
public void setWorkday(LocalDate value) {
set(1, value);
}
/**
* Getter for <code>done.v_eucanshare.workday</code>.
*/
public LocalDate getWorkday() {
return (LocalDate) get(1);
}
/**
* Setter for <code>done.v_eucanshare.duration</code>.
*/
public void setDuration(YearToSecond value) {
set(2, value);
}
/**
* Getter for <code>done.v_eucanshare.duration</code>.
*/
public YearToSecond getDuration() {
return (YearToSecond) get(2);
}
/**
* Setter for <code>done.v_eucanshare.project_name</code>.
*/
public void setProjectName(String value) {
set(3, value);
}
/**
* Getter for <code>done.v_eucanshare.project_name</code>.
*/
public String getProjectName() {
return (String) get(3);
}
/**
* Setter for <code>done.v_eucanshare.module_name</code>.
*/
public void setModuleName(String value) {
set(4, value);
}
/**
* Getter for <code>done.v_eucanshare.module_name</code>.
*/
public String getModuleName() {
return (String) get(4);
}
/**
* Setter for <code>done.v_eucanshare.job_name</code>.
*/
public void setJobName(String value) {
set(5, value);
}
/**
* Getter for <code>done.v_eucanshare.job_name</code>.
*/
public String getJobName() {
return (String) get(5);
}
/**
* Setter for <code>done.v_eucanshare.fk_login</code>.
*/
public void setFkLogin(Integer value) {
set(6, value);
}
/**
* Getter for <code>done.v_eucanshare.fk_login</code>.
*/
public Integer getFkLogin() {
return (Integer) get(6);
}
/**
* Setter for <code>done.v_eucanshare.wp</code>.
*/
public void setWp(String value) {
set(7, value);
}
/**
* Getter for <code>done.v_eucanshare.wp</code>.
*/
public String getWp() {
return (String) get(7);
}
// -------------------------------------------------------------------------
// Record8 type implementation
// -------------------------------------------------------------------------
@Override
public Row8<Integer, LocalDate, YearToSecond, String, String, String, Integer, String> fieldsRow() {
return (Row8) super.fieldsRow();
}
@Override
public Row8<Integer, LocalDate, YearToSecond, String, String, String, Integer, String> valuesRow() {
return (Row8) super.valuesRow();
}
@Override
public Field<Integer> field1() {
return VEucanshare.V_EUCANSHARE.FK_DONE;
}
@Override
public Field<LocalDate> field2() {
return VEucanshare.V_EUCANSHARE.WORKDAY;
}
@Override
public Field<YearToSecond> field3() {
return VEucanshare.V_EUCANSHARE.DURATION;
}
@Override
public Field<String> field4() {
return VEucanshare.V_EUCANSHARE.PROJECT_NAME;
}
@Override
public Field<String> field5() {
return VEucanshare.V_EUCANSHARE.MODULE_NAME;
}
@Override
public Field<String> field6() {
return VEucanshare.V_EUCANSHARE.JOB_NAME;
}
@Override
public Field<Integer> field7() {
return VEucanshare.V_EUCANSHARE.FK_LOGIN;
}
@Override
public Field<String> field8() {
return VEucanshare.V_EUCANSHARE.WP;
}
@Override
public Integer component1() {
return getFkDone();
}
@Override
public LocalDate component2() {
return getWorkday();
}
@Override
public YearToSecond component3() {
return getDuration();
}
@Override
public String component4() {
return getProjectName();
}
@Override
public String component5() {
return getModuleName();
}
@Override
public String component6() {
return getJobName();
}
@Override
public Integer component7() {
return getFkLogin();
}
@Override
public String component8() {
return getWp();
}
@Override
public Integer value1() {
return getFkDone();
}
@Override
public LocalDate value2() {
return getWorkday();
}
@Override
public YearToSecond value3() {
return getDuration();
}
@Override
public String value4() {
return getProjectName();
}
@Override
public String value5() {
return getModuleName();
}
@Override
public String value6() {
return getJobName();
}
@Override
public Integer value7() {
return getFkLogin();
}
@Override
public String value8() {
return getWp();
}
@Override
public VEucanshareRecord value1(Integer value) {
setFkDone(value);
return this;
}
@Override
public VEucanshareRecord value2(LocalDate value) {
setWorkday(value);
return this;
}
@Override
public VEucanshareRecord value3(YearToSecond value) {
setDuration(value);
return this;
}
@Override
public VEucanshareRecord value4(String value) {
setProjectName(value);
return this;
}
@Override
public VEucanshareRecord value5(String value) {
setModuleName(value);
return this;
}
@Override
public VEucanshareRecord value6(String value) {
setJobName(value);
return this;
}
@Override
public VEucanshareRecord value7(Integer value) {
setFkLogin(value);
return this;
}
@Override
public VEucanshareRecord value8(String value) {
setWp(value);
return this;
}
@Override
public VEucanshareRecord values(Integer value1, LocalDate value2, YearToSecond value3, String value4, String value5, String value6, Integer value7, String value8) {
value1(value1);
value2(value2);
value3(value3);
value4(value4);
value5(value5);
value6(value6);
value7(value7);
value8(value8);
return this;
}
// -------------------------------------------------------------------------
// Constructors
// -------------------------------------------------------------------------
/**
* Create a detached VEucanshareRecord
*/
public VEucanshareRecord() {
super(VEucanshare.V_EUCANSHARE);
}
/**
* Create a detached, initialised VEucanshareRecord
*/
public VEucanshareRecord(Integer fkDone, LocalDate workday, YearToSecond duration, String projectName, String moduleName, String jobName, Integer fkLogin, String wp) {
super(VEucanshare.V_EUCANSHARE);
setFkDone(fkDone);
setWorkday(workday);
setDuration(duration);
setProjectName(projectName);
setModuleName(moduleName);
setJobName(jobName);
setFkLogin(fkLogin);
setWp(wp);
}
}

View File

@ -7,8 +7,8 @@ package de.jottyfan.timetrack.db.done.tables.records;
import de.jottyfan.timetrack.db.done.tables.VWorktime;
import org.jooq.Field;
import org.jooq.Record8;
import org.jooq.Row8;
import org.jooq.Record9;
import org.jooq.Row9;
import org.jooq.impl.TableRecordImpl;
@ -16,7 +16,7 @@ import org.jooq.impl.TableRecordImpl;
* This class is generated by jOOQ.
*/
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
public class VWorktimeRecord extends TableRecordImpl<VWorktimeRecord> implements Record8<String, String, Double, String, String, String, String, Integer> {
public class VWorktimeRecord extends TableRecordImpl<VWorktimeRecord> implements Record9<String, String, Double, String, String, String, String, String, Integer> {
private static final long serialVersionUID = 1L;
@ -105,45 +105,59 @@ public class VWorktimeRecord extends TableRecordImpl<VWorktimeRecord> implements
}
/**
* Setter for <code>done.v_worktime.wp</code>.
* Setter for <code>done.v_worktime.billing_shortcut</code>.
*/
public void setWp(String value) {
public void setBillingShortcut(String value) {
set(6, value);
}
/**
* Getter for <code>done.v_worktime.wp</code>.
* Getter for <code>done.v_worktime.billing_shortcut</code>.
*/
public String getWp() {
public String getBillingShortcut() {
return (String) get(6);
}
/**
* Setter for <code>done.v_worktime.billing_csskey</code>.
*/
public void setBillingCsskey(String value) {
set(7, value);
}
/**
* Getter for <code>done.v_worktime.billing_csskey</code>.
*/
public String getBillingCsskey() {
return (String) get(7);
}
/**
* Setter for <code>done.v_worktime.fk_login</code>.
*/
public void setFkLogin(Integer value) {
set(7, value);
set(8, value);
}
/**
* Getter for <code>done.v_worktime.fk_login</code>.
*/
public Integer getFkLogin() {
return (Integer) get(7);
return (Integer) get(8);
}
// -------------------------------------------------------------------------
// Record8 type implementation
// Record9 type implementation
// -------------------------------------------------------------------------
@Override
public Row8<String, String, Double, String, String, String, String, Integer> fieldsRow() {
return (Row8) super.fieldsRow();
public Row9<String, String, Double, String, String, String, String, String, Integer> fieldsRow() {
return (Row9) super.fieldsRow();
}
@Override
public Row8<String, String, Double, String, String, String, String, Integer> valuesRow() {
return (Row8) super.valuesRow();
public Row9<String, String, Double, String, String, String, String, String, Integer> valuesRow() {
return (Row9) super.valuesRow();
}
@Override
@ -178,11 +192,16 @@ public class VWorktimeRecord extends TableRecordImpl<VWorktimeRecord> implements
@Override
public Field<String> field7() {
return VWorktime.V_WORKTIME.WP;
return VWorktime.V_WORKTIME.BILLING_SHORTCUT;
}
@Override
public Field<Integer> field8() {
public Field<String> field8() {
return VWorktime.V_WORKTIME.BILLING_CSSKEY;
}
@Override
public Field<Integer> field9() {
return VWorktime.V_WORKTIME.FK_LOGIN;
}
@ -218,11 +237,16 @@ public class VWorktimeRecord extends TableRecordImpl<VWorktimeRecord> implements
@Override
public String component7() {
return getWp();
return getBillingShortcut();
}
@Override
public Integer component8() {
public String component8() {
return getBillingCsskey();
}
@Override
public Integer component9() {
return getFkLogin();
}
@ -258,11 +282,16 @@ public class VWorktimeRecord extends TableRecordImpl<VWorktimeRecord> implements
@Override
public String value7() {
return getWp();
return getBillingShortcut();
}
@Override
public Integer value8() {
public String value8() {
return getBillingCsskey();
}
@Override
public Integer value9() {
return getFkLogin();
}
@ -304,18 +333,24 @@ public class VWorktimeRecord extends TableRecordImpl<VWorktimeRecord> implements
@Override
public VWorktimeRecord value7(String value) {
setWp(value);
setBillingShortcut(value);
return this;
}
@Override
public VWorktimeRecord value8(Integer value) {
public VWorktimeRecord value8(String value) {
setBillingCsskey(value);
return this;
}
@Override
public VWorktimeRecord value9(Integer value) {
setFkLogin(value);
return this;
}
@Override
public VWorktimeRecord values(String value1, String value2, Double value3, String value4, String value5, String value6, String value7, Integer value8) {
public VWorktimeRecord values(String value1, String value2, Double value3, String value4, String value5, String value6, String value7, String value8, Integer value9) {
value1(value1);
value2(value2);
value3(value3);
@ -324,6 +359,7 @@ public class VWorktimeRecord extends TableRecordImpl<VWorktimeRecord> implements
value6(value6);
value7(value7);
value8(value8);
value9(value9);
return this;
}
@ -341,7 +377,7 @@ public class VWorktimeRecord extends TableRecordImpl<VWorktimeRecord> implements
/**
* Create a detached, initialised VWorktimeRecord
*/
public VWorktimeRecord(String day, String duration, Double durationHours, String projectName, String moduleName, String jobName, String wp, Integer fkLogin) {
public VWorktimeRecord(String day, String duration, Double durationHours, String projectName, String moduleName, String jobName, String billingShortcut, String billingCsskey, Integer fkLogin) {
super(VWorktime.V_WORKTIME);
setDay(day);
@ -350,7 +386,8 @@ public class VWorktimeRecord extends TableRecordImpl<VWorktimeRecord> implements
setProjectName(projectName);
setModuleName(moduleName);
setJobName(jobName);
setWp(wp);
setBillingShortcut(billingShortcut);
setBillingCsskey(billingCsskey);
setFkLogin(fkLogin);
}
}

View File

@ -10,16 +10,18 @@ public class DailySummaryBean {
private final String moduleName;
private final String jobName;
private final String duration;
private final String wp;
private final String billingShortcut;
private final String billingCsskey;
private final Double durationHours;
public DailySummaryBean(String projectName, String moduleName, String jobName, String duration, String wp, Double durationHours) {
public DailySummaryBean(String projectName, String moduleName, String jobName, String duration, String billingShortcut, String billingCsskey, Double durationHours) {
super();
this.projectName = projectName;
this.moduleName = moduleName;
this.jobName = jobName;
this.duration = duration;
this.wp = wp;
this.billingShortcut = billingShortcut;
this.billingCsskey = billingCsskey;
this.durationHours = durationHours;
}
@ -40,10 +42,17 @@ public class DailySummaryBean {
}
/**
* @return the wp
* @return the billing shortcut
*/
public String getWp() {
return wp;
public String getBillingShortcut() {
return billingShortcut;
}
/**
* @return the billing csskey
*/
public String getBillingCsskey() {
return billingCsskey;
}
/**

View File

@ -7,9 +7,9 @@ import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.Date;
import java.util.List;
import java.util.Map;
import de.jottyfan.timetrack.db.done.tables.records.TBillingRecord;
import de.jottyfan.timetrack.db.done.tables.records.TDoneRecord;
import de.jottyfan.timetrack.db.done.tables.records.TJobRecord;
import de.jottyfan.timetrack.db.done.tables.records.TModuleRecord;
@ -32,31 +32,20 @@ public class DoneBean implements Bean, Serializable, Comparable<DoneBean> {
private TProjectRecord project;
private TModuleRecord module;
private TJobRecord activity;
private WpBean wp;
private TBillingRecord billing;
public DoneBean() {
}
public DoneBean(TDoneRecord r, Map<Integer, TProjectRecord> projectMap, Map<Integer, TModuleRecord> moduleMap,
Map<Integer, TJobRecord> jobMap) {
Map<Integer, TJobRecord> jobMap, Map<Integer, TBillingRecord> billingMap) {
this.pk = r.getPk();
this.timeFrom = r.getTimeFrom();
this.timeUntil = r.getTimeUntil();
this.project = projectMap.get(r.getFkProject());
this.module = moduleMap.get(r.getFkModule());
this.activity = jobMap.get(r.getFkJob());
List<WpBean> list = DoneGateway.getAllWps();
String key = r.getWp();
if (key != null && key.isBlank()) {
key = null;
}
if (key != null) {
for (WpBean bean : list) {
if (bean.getKey().equals(r.getWp())) {
this.wp = bean;
}
}
}
this.billing = billingMap.get(r.getFkBilling());
}
/**
@ -133,11 +122,11 @@ public class DoneBean implements Bean, Serializable, Comparable<DoneBean> {
return ldt;
}
public String getProjectNameWithWP() {
public String getProjectNameWithBilling() {
StringBuilder buf = new StringBuilder();
buf.append(project == null ? "" : project.getName());
if (wp != null) {
buf.append(" (").append(wp.getKey()).append(")");
if (billing != null) {
buf.append(" (").append(billing.getShortcut()).append(")");
}
return buf.toString();
}
@ -154,8 +143,8 @@ public class DoneBean implements Bean, Serializable, Comparable<DoneBean> {
return activity == null ? "" : activity.getName();
}
public String getWpName() {
return wp == null ? "" : wp.getName();
public String getBillingName() {
return billing == null ? "" : billing.getName();
}
public String getTimeFromString() {
@ -223,16 +212,16 @@ public class DoneBean implements Bean, Serializable, Comparable<DoneBean> {
}
/**
* @return the wp
* @return the billing
*/
public WpBean getWp() {
return wp;
public TBillingRecord getBilling() {
return billing;
}
/**
* @param wp the wp to set
* @param billing the billing to set
*/
public void setWp(WpBean wp) {
this.wp = wp;
public void setBilling(TBillingRecord billing) {
this.billing = billing;
}
}

View File

@ -4,6 +4,7 @@ import static de.jottyfan.timetrack.db.done.Tables.T_DONE;
import static de.jottyfan.timetrack.db.done.Tables.T_JOB;
import static de.jottyfan.timetrack.db.done.Tables.T_MODULE;
import static de.jottyfan.timetrack.db.done.Tables.T_PROJECT;
import static de.jottyfan.timetrack.db.done.Tables.T_BILLING;
import static de.jottyfan.timetrack.db.done.Tables.V_HAMSTERSUMMARY;
import static de.jottyfan.timetrack.db.done.Tables.V_TOTALOFDAY;
import static de.jottyfan.timetrack.db.done.Tables.V_WORKTIME;
@ -33,6 +34,7 @@ import org.jooq.Record3;
import org.jooq.Record4;
import org.jooq.Record5;
import org.jooq.Record6;
import org.jooq.Record7;
import org.jooq.SelectConditionStep;
import org.jooq.SelectJoinStep;
import org.jooq.SelectWhereStep;
@ -40,6 +42,7 @@ import org.jooq.UpdateConditionStep;
import org.jooq.exception.DataAccessException;
import de.jooqfaces.JooqFacesContext;
import de.jottyfan.timetrack.db.done.tables.records.TBillingRecord;
import de.jottyfan.timetrack.db.done.tables.records.TDoneRecord;
import de.jottyfan.timetrack.db.done.tables.records.TJobRecord;
import de.jottyfan.timetrack.db.done.tables.records.TModuleRecord;
@ -125,6 +128,27 @@ public class DoneGateway extends JooqGateway {
return list;
}
}
/**
* get all billings from db
*
* @return billings
* @throws SQLException
* @throws ClassNotFoundException
*/
public List<TBillingRecord> getAllBillings() throws DataAccessException, ClassNotFoundException, SQLException {
try (CloseableDSLContext jooq = getJooq()) {
List<TBillingRecord> list = new ArrayList<>();
SelectWhereStep<TBillingRecord> sql = jooq.selectFrom(T_BILLING);
LOGGER.debug(sql.toString());
for (TBillingRecord r : sql.fetch()) {
list.add(r);
}
list.sort((o1, o2) -> o1 == null || o2 == null || o1.getName() == null || o2.getName() == null ? 0
: o1.getName().compareTo(o2.getName()));
return list;
}
}
private Map<Integer, TProjectRecord> generateProjectMap(List<TProjectRecord> list) {
Map<Integer, TProjectRecord> map = new HashMap<>();
@ -150,6 +174,14 @@ public class DoneGateway extends JooqGateway {
return map;
}
private Map<Integer, TBillingRecord> generateBillingMap(List<TBillingRecord> list) {
Map<Integer, TBillingRecord> map = new HashMap<>();
for (TBillingRecord r : list) {
map.put(r.getPk(), r);
}
return map;
}
/**
* get all from t_done of the given day
*
@ -163,6 +195,7 @@ public class DoneGateway extends JooqGateway {
Map<Integer, TProjectRecord> projectMap = generateProjectMap(getAllProjects());
Map<Integer, TModuleRecord> moduleMap = generateModuleMap(getAllModules());
Map<Integer, TJobRecord> jobMap = generateJobMap(getAllActivities());
Map<Integer, TBillingRecord> billingMap = generateBillingMap(getAllBillings());
if (day == null) {
day = LocalDateTime.now();
@ -185,7 +218,7 @@ public class DoneGateway extends JooqGateway {
// @formatter:on
LOGGER.debug(sql.toString());
for (TDoneRecord r : sql.fetch()) {
list.add(new DoneBean(r, projectMap, moduleMap, jobMap));
list.add(new DoneBean(r, projectMap, moduleMap, jobMap, billingMap));
}
}
list.sort((o1, o2) -> o1 == null || o2 == null ? 0 : o1.compareTo(o2));
@ -203,11 +236,11 @@ public class DoneGateway extends JooqGateway {
Integer fkProject = bean.getProject() == null ? null : bean.getProject().getPk();
Integer fkModule = bean.getModule() == null ? null : bean.getModule().getPk();
Integer fkJob = bean.getActivity() == null ? null : bean.getActivity().getPk();
String wp = bean.getWp() == null ? null : bean.getWp().getKey();
Integer fkBilling = bean.getBilling() == null ? null : bean.getBilling().getPk();
Integer fkLogin = getFkLogin();
try (CloseableDSLContext jooq = getJooq()) {
InsertValuesStep7<TDoneRecord, LocalDateTime, LocalDateTime, Integer, Integer, Integer, String, Integer> sql = jooq
InsertValuesStep7<TDoneRecord, LocalDateTime, LocalDateTime, Integer, Integer, Integer, Integer, Integer> sql = jooq
// @formatter:off
.insertInto(T_DONE,
T_DONE.TIME_FROM,
@ -215,9 +248,9 @@ public class DoneGateway extends JooqGateway {
T_DONE.FK_PROJECT,
T_DONE.FK_MODULE,
T_DONE.FK_JOB,
T_DONE.WP,
T_DONE.FK_BILLING,
T_DONE.FK_LOGIN)
.values(bean.getTimeFrom(), bean.getTimeUntil(), fkProject, fkModule, fkJob, wp, fkLogin);
.values(bean.getTimeFrom(), bean.getTimeUntil(), fkProject, fkModule, fkJob, fkBilling, fkLogin);
// @formatter:on
LOGGER.debug(sql.toString());
sql.execute();
@ -233,7 +266,6 @@ public class DoneGateway extends JooqGateway {
*/
public void update(DoneBean bean) throws DataAccessException, ClassNotFoundException, SQLException {
try (CloseableDSLContext jooq = getJooq()) {
String wp = bean.getWp() == null ? null : bean.getWp().getKey();
UpdateConditionStep<TDoneRecord> sql = jooq
// @formatter:off
.update(T_DONE)
@ -242,7 +274,7 @@ public class DoneGateway extends JooqGateway {
.set(T_DONE.FK_PROJECT, bean.getProject() == null ? null : bean.getProject().getPk())
.set(T_DONE.FK_JOB, bean.getActivity() == null ? null : bean.getActivity().getPk())
.set(T_DONE.FK_MODULE, bean.getModule() == null ? null : bean.getModule().getPk())
.set(T_DONE.WP, wp)
.set(T_DONE.FK_BILLING, bean.getBilling() == null ? null : bean.getBilling().getPk())
.where(T_DONE.PK.eq(bean.getPk()));
// @formatter:on
LOGGER.debug(sql.toString());
@ -312,29 +344,31 @@ public class DoneGateway extends JooqGateway {
public List<DailySummaryBean> getAllJobs(java.util.Date day)
throws DataAccessException, ClassNotFoundException, SQLException {
try (CloseableDSLContext jooq = getJooq()) {
SelectConditionStep<Record6<String, Double, String, String, String, String>> sql = jooq
SelectConditionStep<Record7<String, Double, String, String, String, String, String>> sql = jooq
// @formatter:off
.select(V_WORKTIME.DURATION,
V_WORKTIME.DURATION_HOURS,
V_WORKTIME.PROJECT_NAME,
V_WORKTIME.MODULE_NAME,
V_WORKTIME.JOB_NAME,
V_WORKTIME.WP)
V_WORKTIME.BILLING_SHORTCUT,
V_WORKTIME.BILLING_CSSKEY)
.from(V_WORKTIME)
.where(V_WORKTIME.DAY.eq(new SimpleDateFormat("yyyy-MM-dd").format(day)))
.and(V_WORKTIME.FK_LOGIN.eq(getFkLogin()));
// @formatter:on
LOGGER.debug(sql.toString());
List<DailySummaryBean> list = new ArrayList<>();
for (Record6<String, Double, String, String, String, String> r : sql.fetch()) {
for (Record7<String, Double, String, String, String, String, String> r : sql.fetch()) {
String duration = r.get(V_WORKTIME.DURATION);
Double durationHours = r.get(V_WORKTIME.DURATION_HOURS);
String projectName = r.get(V_WORKTIME.PROJECT_NAME);
String moduleName = r.get(V_WORKTIME.MODULE_NAME);
String jobName = r.get(V_WORKTIME.JOB_NAME);
String wp = r.get(V_WORKTIME.WP);
String billingShortcut = r.get(V_WORKTIME.BILLING_SHORTCUT);
String billingCsskey = r.get(V_WORKTIME.BILLING_CSSKEY);
durationHours = durationHours == null ? null : new BigDecimal(durationHours).setScale(2, RoundingMode.HALF_UP).doubleValue();
list.add(new DailySummaryBean(projectName, moduleName, jobName, duration, wp, durationHours));
list.add(new DailySummaryBean(projectName, moduleName, jobName, duration, billingShortcut, billingCsskey, durationHours));
}
return list;
}
@ -354,7 +388,7 @@ public class DoneGateway extends JooqGateway {
// @formatter:off
.select(T_DONE.TIME_FROM,
T_DONE.TIME_UNTIL,
T_DONE.WP,
T_BILLING.NAME,
T_PROJECT.NAME,
T_MODULE.NAME,
T_JOB.NAME)
@ -362,6 +396,7 @@ public class DoneGateway extends JooqGateway {
.leftJoin(T_PROJECT).on(T_PROJECT.PK.eq(T_DONE.FK_PROJECT))
.leftJoin(T_MODULE).on(T_MODULE.PK.eq(T_DONE.FK_MODULE))
.leftJoin(T_JOB).on(T_JOB.PK.eq(T_DONE.FK_JOB))
.leftJoin(T_BILLING).on(T_BILLING.PK.eq(T_DONE.FK_BILLING))
.where(T_DONE.FK_LOGIN.eq(getFkLogin()));
// @formatter:on
LOGGER.debug(sql.toString());
@ -370,14 +405,14 @@ public class DoneGateway extends JooqGateway {
String projectName = r.get(T_PROJECT.NAME);
String moduleName = r.get(T_MODULE.NAME);
String jobName = r.get(T_JOB.NAME);
String wp = r.get(T_DONE.WP);
String billingName = r.get(T_BILLING.NAME);
LocalDateTime timeFrom = r.get(T_DONE.TIME_FROM);
LocalDateTime timeUntil = r.get(T_DONE.TIME_UNTIL);
StringBuilder buf = new StringBuilder();
buf.append(projectName);
if (wp != null && !wp.isBlank()) {
buf.append(" (").append(wp).append(")");
if (billingName != null && !billingName.isBlank()) {
buf.append(" (").append(billingName).append(")");
}
buf.append(", ");
buf.append(moduleName);
@ -453,18 +488,4 @@ public class DoneGateway extends JooqGateway {
}
return buf.toString();
}
/**
* dummy method to use until a table has been created
*
* @return all valid wps
*/
public static final List<WpBean> getAllWps() {
List<WpBean> list = new ArrayList<>();
list.add(new WpBean("WP2", "WP2 (eucs) - Opal/Mica/..., REST"));
list.add(new WpBean("WP4", "WP4 (eucs) - Square²"));
list.add(new WpBean("WP5", "WP5 (eucs) - SHIP-Datenbereitstellung"));
list.add(new WpBean("NFDI TA3", "TA3 (nfdi) - Mica Dev"));
return list;
}
}

View File

@ -21,6 +21,7 @@ import javax.inject.Named;
import org.jooq.exception.DataAccessException;
import de.jooqfaces.JooqFacesContext;
import de.jottyfan.timetrack.db.done.tables.records.TBillingRecord;
import de.jottyfan.timetrack.db.done.tables.records.TJobRecord;
import de.jottyfan.timetrack.db.done.tables.records.TModuleRecord;
import de.jottyfan.timetrack.db.done.tables.records.TProjectRecord;
@ -41,7 +42,7 @@ public class DoneModel implements Model, Serializable {
private List<TProjectRecord> projects;
private List<TModuleRecord> modules;
private List<TJobRecord> activities;
private List<WpBean> wps;
private List<TBillingRecord> billings;
private List<TimeBean> times;
private List<DailySummaryBean> allJobs;
private WholeDaySummaryBean daySummary;
@ -58,7 +59,7 @@ public class DoneModel implements Model, Serializable {
modules = gw.getAllModules();
activities = gw.getAllActivities();
projects = gw.getAllProjects();
wps = DoneGateway.getAllWps();
billings = gw.getAllBillings();
daySummary = gw.getDaySummary(day);
allJobs = gw.getAllJobs(day);
calendarEvents = gw.getAllCalendarEvents();
@ -211,8 +212,8 @@ public class DoneModel implements Model, Serializable {
buf.append(thatday).append("\t");
buf.append(sdb.getDuration()).append("\t");
buf.append(sdb.getProjectName());
if (sdb.getWp() != null && !sdb.getWp().isBlank()) {
buf.append(" (").append(sdb.getWp()).append(")");
if (sdb.getBillingShortcut() != null && !sdb.getBillingShortcut().isBlank()) {
buf.append(" (").append(sdb.getBillingShortcut()).append(")");
}
buf.append("\t");
buf.append(sdb.getModuleName()).append("\t");
@ -246,8 +247,8 @@ public class DoneModel implements Model, Serializable {
return activities;
}
public List<WpBean> getWps() {
return wps;
public List<TBillingRecord> getBillings() {
return billings;
}
public List<DailySummaryBean> getAllJobs() {

View File

@ -1,34 +0,0 @@
package de.jottyfan.timetrack.modules.done;
import java.io.Serializable;
/**
*
* @author jotty
*
*/
public class WpBean implements Serializable {
private static final long serialVersionUID = 1L;
private final String name;
private final String key;
public WpBean(String key, String name) {
super();
this.key = key;
this.name = name;
}
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @return the key
*/
public String getKey() {
return key;
}
}

View File

@ -58,9 +58,9 @@
<f:selectItem itemValue="" itemLabel="--- bitte wählen ---" />
<f:selectItems value="#{doneModel.activities}" var="i" itemValue="#{i}" itemLabel="#{i.name}" />
</b:selectOneMenu>
<b:selectOneMenu id="wp" value="#{doneModel.bean.wp}">
<b:selectOneMenu id="billing" value="#{doneModel.bean.billing}">
<f:selectItem itemValue="" itemLabel="--- bitte wählen ---" />
<f:selectItems value="#{doneModel.wps}" var="i" itemValue="#{i}" itemLabel="#{i.name}" />
<f:selectItems value="#{doneModel.billings}" var="i" itemValue="#{i}" itemLabel="#{i.name}" />
</b:selectOneMenu>
</b:panelGrid>
<b:buttonGroup>
@ -72,7 +72,7 @@
$("[id='formular:projectInner']").attr("size", 25);
$("[id='formular:moduleInner']").attr("size", 25);
$("[id='formular:activityInner']").attr("size", 25);
$("[id='formular:wpInner']").attr("size", 25);
$("[id='formular:billingInner']").attr("size", 25);
});
</script>
</b:form>

View File

@ -23,6 +23,8 @@
<h:outputText value="#{doneModel.bean.moduleName}" style="font-weight: bolder" />
<h:outputText value="Tätigkeit: " />
<h:outputText value="#{doneModel.bean.jobName}" style="font-weight: bolder" />
<h:outputText value="Abrechnung: " />
<h:outputText value="#{doneModel.bean.billingName}" style="font-weight: bolder" />
</b:panelGrid>
<b:form>
<b:buttonGroup>

View File

@ -45,7 +45,7 @@
<h:outputText value="Projekt (#{doneModel.bean.projectName})" />
<h:outputText value="Modul (#{doneModel.bean.moduleName})" />
<h:outputText value="Tätigkeit (#{doneModel.bean.jobName})" />
<h:outputText value="Abrechnung (#{doneModel.bean.wpName})" />
<h:outputText value="Abrechnung (#{doneModel.bean.billingName})" />
<b:selectOneMenu id="project" value="#{doneModel.bean.project}">
<f:selectItem itemValue="" itemLabel="--- bitte wählen ---" />
<f:selectItems value="#{doneModel.projects}" var="i" itemValue="#{i}" itemLabel="#{i.name}" />
@ -58,9 +58,9 @@
<f:selectItem itemValue="" itemLabel="--- bitte wählen ---" />
<f:selectItems value="#{doneModel.activities}" var="i" itemValue="#{i}" itemLabel="#{i.name}" />
</b:selectOneMenu>
<b:selectOneMenu id="wp" value="#{doneModel.bean.wp}">
<b:selectOneMenu id="billing" value="#{doneModel.bean.billing}">
<f:selectItem itemValue="" itemLabel="--- bitte wählen ---" />
<f:selectItems value="#{doneModel.wps}" var="i" itemValue="#{i}" itemLabel="#{i.name}" />
<f:selectItems value="#{doneModel.billings}" var="i" itemValue="#{i}" itemLabel="#{i.name}" />
</b:selectOneMenu>
</b:panelGrid>
<b:buttonGroup>
@ -72,7 +72,7 @@
$("[id='formular:projectInner']").attr("size", 25);
$("[id='formular:moduleInner']").attr("size", 25);
$("[id='formular:activityInner']").attr("size", 25);
$("[id='formular:wpInner']").attr("size", 25);
$("[id='formular:billingInner']").attr("size", 25);
});
</script>
</b:form>

View File

@ -24,7 +24,7 @@
<b:commandButton action="#{doneControl.toDelete(b)}" value="Entfernen" look="danger" iconAwesome="trash" />
</b:dataTableColumn>
<b:dataTableColumn label="" value="#{b.timeSummary}" contentStyleClass="doneoverviewtext" style="width: 128px !important" orderable="false" />
<b:dataTableColumn label="" value="#{b.projectNameWithWP}" contentStyleClass="doneoverviewtextemph" style="width: 160px !important" orderable="false" />
<b:dataTableColumn label="" value="#{b.projectNameWithBilling}" contentStyleClass="doneoverviewtextemph" style="width: 160px !important" orderable="false" />
<b:dataTableColumn label="" value="#{b.timeDiff}" contentStyleClass="doneoverviewtextemph" style="width: 64px !important" orderable="false" />
<b:dataTableColumn label="" style="width: 100px !important" orderable="false">
<b:commandButton action="#{doneControl.toEdit(b)}" value="Editieren" look="warning" iconAwesome="pencil" />
@ -75,7 +75,7 @@
searching="false">
<b:dataTableColumn label="" value="#{col.projectName}" contentStyle="font-size: 120%" orderable="false" />
<b:dataTableColumn label="" orderable="false">
<b:badge value="#{col.wp}" styleClass="#{col.wp}" />
<b:badge value="#{col.billingShortcut}" styleClass="#{col.billingCsskey}" />
</b:dataTableColumn>
<b:dataTableColumn label="" value="#{col.moduleName}" contentStyle="font-size: 120%" orderable="false" />
<b:dataTableColumn label="" value="#{col.jobName}" contentStyle="font-size: 120%" orderable="false" />
@ -108,9 +108,12 @@
</ui:repeat>
</b:tab>
<b:tab title="Abrechnung">
<b:dataTable value="#{doneModel.wps}" var="col" border="false" info="false">
<b:dataTableColumn label="Schlüssel" value="#{col.key}" />
<b:dataTable value="#{doneModel.billings}" var="col" border="false" info="false">
<b:dataTableColumn label="Kürzel" value="#{col.shortcut}" />
<b:dataTableColumn label="Name" value="#{col.name}" />
<b:dataTableColumn label="Stil">
<b:badge value="#{col.csskey}" styleClass="#{col.csskey}" />
</b:dataTableColumn>
</b:dataTable>
</b:tab>
</b:tabView>

View File

@ -47,17 +47,30 @@
.WP2 {
color: black !important;
background-color: #ffe169 !important;
background: radial-gradient(#ffff00, #ffe169) !important;
border: 1px solid darkgray;
padding-top: 8px !important;
}
.WP4 {
color: white !important;
background-color: #69c3ff !important;
color: black !important;
background: radial-gradient(#00ffff, #69c3ff) !important;
border: 1px solid darkgray;
padding-top: 8px !important;
}
.WP5 {
color: black !important;
background-color: #e396ff !important;
background: radial-gradient(#ff0000, #e396ff) !important;
border: 1px solid darkgray;
padding-top: 8px !important;
}
.TA3 {
color: black !important;
background: radial-gradient(#99ff99, #ccffcc) !important;
border: 1px solid darkgray;
padding-top: 8px !important;
}
.left {