From cb2b226d69b69212d6479492ee4b49ff86055625 Mon Sep 17 00:00:00 2001 From: Roland Haeder Date: Thu, 13 Apr 2017 21:18:33 +0200 Subject: [PATCH] Continued a bit: - added receipt and receipt-entry POJOs/POJIs --- lib/nblibraries.properties | 2 + nbproject/project.properties | 6 + .../database/BaseFinancialsDatabaseBean.java | 10 +- .../jfinancials/receipt/Billable.java | 108 ++++++++++++ .../mxchange/jfinancials/receipt/Receipt.java | 148 ++++++++++++++++ .../receipt/entry/BillableReceiptEntry.java | 121 +++++++++++++ .../receipt/entry/ReceiptEntry.java | 166 ++++++++++++++++++ 7 files changed, 556 insertions(+), 5 deletions(-) create mode 100644 src/org/mxchange/jfinancials/receipt/Billable.java create mode 100644 src/org/mxchange/jfinancials/receipt/Receipt.java create mode 100644 src/org/mxchange/jfinancials/receipt/entry/BillableReceiptEntry.java create mode 100644 src/org/mxchange/jfinancials/receipt/entry/ReceiptEntry.java diff --git a/lib/nblibraries.properties b/lib/nblibraries.properties index 09266ab..f508429 100644 --- a/lib/nblibraries.properties +++ b/lib/nblibraries.properties @@ -9,4 +9,6 @@ libs.javaee-api-7.0.prop-maven-dependencies=javax:javaee-api:7.0:jar libs.jpa20-persistence.classpath=\ ${base}/jpa20-persistence/javax.persistence_2.1.0.v201304241213.jar libs.jpa20-persistence.displayName=Persistence (JPA 2.1) +libs.jpa20-persistence.javadoc=\ + https://docs.oracle.com/javaee/7/api/ libs.jpa20-persistence.prop-maven-dependencies=org.eclipse.persistence:javax.persistence:2.1.0:jar diff --git a/nbproject/project.properties b/nbproject/project.properties index 03dfdf8..5deda66 100644 --- a/nbproject/project.properties +++ b/nbproject/project.properties @@ -30,12 +30,14 @@ dist.jar=${dist.dir}/jfinancials-core.jar dist.javadoc.dir=${dist.dir}/javadoc endorsed.classpath= excludes= +file.reference.jcontacts-business-core.jar=lib/jcontacts-business-core.jar file.reference.jcontacts-core.jar=lib/jcontacts-core.jar file.reference.jcore-logger-lib.jar=lib/jcore-logger-lib.jar file.reference.jcoreee.jar=lib/jcoreee.jar file.reference.jcountry-core.jar=lib/jcountry-core.jar file.reference.jmailer-ee.jar=lib/jmailer-ee.jar file.reference.jphone-core.jar=lib/jphone-core.jar +file.reference.jshop-core.jar=lib/jshop-core.jar file.reference.juser-core.jar=lib/juser-core.jar includes=** jar.archive.disabled=${jnlp.enabled} @@ -48,7 +50,9 @@ javac.classpath=\ ${file.reference.jphone-core.jar}:\ ${file.reference.juser-core.jar}:\ ${file.reference.jcontacts-core.jar}:\ + ${file.reference.jcontacts-business-core.jar}:\ ${file.reference.jmailer-ee.jar}:\ + ${file.reference.jshop-core.jar}:\ ${libs.jpa20-persistence.classpath}:\ ${libs.javaee-api-7.0.classpath} # Space-separated list of extra javac options @@ -107,12 +111,14 @@ run.test.classpath=\ ${javac.test.classpath}:\ ${build.test.classes.dir} source.encoding=UTF-8 +source.reference.jcontacts-business-core.jar=../jcontacts-business-core/src/ source.reference.jcontacts-core.jar=../jcontacts-core/src/ source.reference.jcore-logger-lib.jar=../jcore-logger-lib/src/ source.reference.jcoreee.jar=../jcoreee/src/ source.reference.jcountry-core.jar=../jcountry-core/src/ source.reference.jmailer-ee.jar=../jmailer-ee/src/ source.reference.jphone-core.jar=../jphone-core/src/ +source.reference.jshop-core.jar=../jshop-core/src/ source.reference.juser-core.jar=../juser-core/src/ src.dir=src test.src.dir=test diff --git a/src/org/mxchange/jfinancials/database/BaseFinancialsDatabaseBean.java b/src/org/mxchange/jfinancials/database/BaseFinancialsDatabaseBean.java index ce4345d..e9a8b35 100644 --- a/src/org/mxchange/jfinancials/database/BaseFinancialsDatabaseBean.java +++ b/src/org/mxchange/jfinancials/database/BaseFinancialsDatabaseBean.java @@ -109,7 +109,7 @@ public abstract class BaseFinancialsDatabaseBean extends BaseDatabaseBean { } /** - * Updates all contacts's phone entry's created timestamps + * Updates all contact's phone entry's created timestamps *

* @param contact Contact instance to update */ @@ -163,7 +163,7 @@ public abstract class BaseFinancialsDatabaseBean extends BaseDatabaseBean { } /** - * Returnes a detached instance from given mobile instance + * Returns a detached instance from given mobile instance *

* @param mobileNumber Mobile instance * @param fetchedNumber Found mobile number in database @@ -211,7 +211,7 @@ public abstract class BaseFinancialsDatabaseBean extends BaseDatabaseBean { } /** - * Returnes a detached instance from given land-line instance + * Returns a detached instance from given land-line instance *

* @param landLineNumber Land-line instance * @param fetchedNumber Found land-line number in database @@ -257,7 +257,7 @@ public abstract class BaseFinancialsDatabaseBean extends BaseDatabaseBean { } /** - * Returnes a detached instance from given fax instance + * Returns a detached instance from given fax instance *

* @param faxNumber Fax instance * @param fetchedNumber Found fax number in database @@ -644,7 +644,7 @@ public abstract class BaseFinancialsDatabaseBean extends BaseDatabaseBean { } /** - * Updates all contacts's phone entry's updated timestamps + * Updates all contact's phone entry's updated timestamps *

* @param contact Contact instance to update * @param isMobileUnlinked Whether a mobile entry has been unlinked in diff --git a/src/org/mxchange/jfinancials/receipt/Billable.java b/src/org/mxchange/jfinancials/receipt/Billable.java new file mode 100644 index 0000000..2b1d391 --- /dev/null +++ b/src/org/mxchange/jfinancials/receipt/Billable.java @@ -0,0 +1,108 @@ +/* + * Copyright (C) 2017 Roland Haeder + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.mxchange.jfinancials.receipt; + +import java.io.Serializable; +import java.util.Calendar; +import org.mxchange.jcontactsbusiness.BusinessContact; +import org.mxchange.jshopcore.model.payment.PaymentType; +import org.mxchange.jusercore.model.user.User; + +/** + * An interface for receipts + *

+ * @author Roland Haeder + */ +public interface Billable extends Serializable { + + /** + * Getter for when this receipt has been created in database + *

+ * @return Receipt creation timestamp + */ + Calendar getReceiptCreated (); + + /** + * Setter for when this receipt has been created in database + *

+ * @param receiptCreated Receipt creation timestamp + */ + void setReceiptCreated (final Calendar receiptCreated); + + /** + * Getter for primary key + *

+ * @return Primary key + */ + Long getReceiptId (); + + /** + * Setter for primary key + *

+ * @param receiptId Primary key + */ + void setReceiptId (final Long receiptId); + + /** + * Getter for receipt's user + *

+ * @return Receipt's user + */ + User getReceiptUser (); + + /** + * Setter for receipt's user + *

+ * @param receiptUser Receipt's user + */ + void setReceiptUser (final User receiptUser); + + /** + * Getter for seller instance + *

+ * @return Seller instance + */ + BusinessContact getReceiptSeller (); + + /** + * Setter for seller instance + *

+ * @param receiptSeller Seller instance + */ + void setReceiptSeller (final BusinessContact receiptSeller); + + /** + * Getter for payment type + *

+ * @return Payment type + */ + PaymentType getReceiptPaymentType (); + + /** + * Setter for payment type + *

+ * @param receiptPaymentType Payment type + */ + void setReceiptPaymentType (final PaymentType receiptPaymentType); + + @Override + boolean equals (final Object object); + + @Override + int hashCode (); + +} diff --git a/src/org/mxchange/jfinancials/receipt/Receipt.java b/src/org/mxchange/jfinancials/receipt/Receipt.java new file mode 100644 index 0000000..337ac29 --- /dev/null +++ b/src/org/mxchange/jfinancials/receipt/Receipt.java @@ -0,0 +1,148 @@ +/* + * Copyright (C) 2017 Roland Haeder + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.mxchange.jfinancials.receipt; + +import java.util.Calendar; +import javax.persistence.Basic; +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.EnumType; +import javax.persistence.Enumerated; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.OneToOne; +import javax.persistence.Table; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; +import javax.persistence.Transient; +import org.mxchange.jcontactsbusiness.BusinessContact; +import org.mxchange.jcontactsbusiness.CompanyContact; +import org.mxchange.jshopcore.model.payment.PaymentType; +import org.mxchange.jusercore.model.user.LoginUser; +import org.mxchange.jusercore.model.user.User; + +/** + * + * @author Roland Haeder + */ +@Entity (name = "receipts") +@Table ( + name = "receipts" +) +@SuppressWarnings ("PersistenceUnitPresent") +public class Receipt implements Billable { + + /** + * Serial number + */ + @Transient + private static final long serialVersionUID = 185_867_217_461L; + + /** + * When this receipt has been created + */ + @Basic (optional = false) + @Temporal (TemporalType.TIMESTAMP) + @Column (name = "receipt_created", nullable = false) + private Calendar receiptCreated; + + /** + * Primary key + */ + @Id + @GeneratedValue (strategy = GenerationType.AUTO) + @Column (name = "receipt_id", nullable = false, updatable = false) + private Long receiptId; + + /** + * Payment type (cash, credit card, EC card ...) + */ + @Basic (optional = false) + @Column (name = "receipt_payment_type", nullable = false) + @Enumerated (EnumType.STRING) + private PaymentType receiptPaymentType; + + /** + * Seller instance + */ + @JoinColumn (name = "receipt_seller_id", referencedColumnName = "company_id", nullable = false, updatable = false) + @OneToOne (targetEntity = CompanyContact.class, cascade = CascadeType.REFRESH, optional = false) + private BusinessContact receiptSeller; + + /** + * Which user this receipt belongs to + */ + @JoinColumn (name = "receipt_user_id", referencedColumnName = "user_id", nullable = false, updatable = false) + @OneToOne (targetEntity = LoginUser.class, cascade = CascadeType.REFRESH, optional = false) + private User receiptUser; + + @Override + @SuppressWarnings ("ReturnOfDateField") + public Calendar getReceiptCreated () { + return this.receiptCreated; + } + + @Override + @SuppressWarnings ("AssignmentToDateFieldFromParameter") + public void setReceiptCreated (final Calendar receiptCreated) { + this.receiptCreated = receiptCreated; + } + + @Override + public Long getReceiptId () { + return this.receiptId; + } + + @Override + public void setReceiptId (final Long receiptId) { + this.receiptId = receiptId; + } + + @Override + public PaymentType getReceiptPaymentType () { + return this.receiptPaymentType; + } + + @Override + public void setReceiptPaymentType (final PaymentType receiptPaymentType) { + this.receiptPaymentType = receiptPaymentType; + } + + @Override + public BusinessContact getReceiptSeller () { + return this.receiptSeller; + } + + @Override + public void setReceiptSeller (final BusinessContact receiptSeller) { + this.receiptSeller = receiptSeller; + } + + @Override + public User getReceiptUser () { + return this.receiptUser; + } + + @Override + public void setReceiptUser (final User receiptUser) { + this.receiptUser = receiptUser; + } + +} diff --git a/src/org/mxchange/jfinancials/receipt/entry/BillableReceiptEntry.java b/src/org/mxchange/jfinancials/receipt/entry/BillableReceiptEntry.java new file mode 100644 index 0000000..559119f --- /dev/null +++ b/src/org/mxchange/jfinancials/receipt/entry/BillableReceiptEntry.java @@ -0,0 +1,121 @@ +/* + * Copyright (C) 2017 Roland Haeder + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.mxchange.jfinancials.receipt.entry; + +import java.io.Serializable; +import java.util.Calendar; +import org.mxchange.jfinancials.receipt.Billable; +import org.mxchange.jshopcore.model.product.Product; + +/** + * An interface for receipt entries + *

+ * @author Roland Haeder + */ +public interface BillableReceiptEntry extends Serializable { + + /** + * Getter when this receipt entry has been created in database + *

+ * @return When this entry has been created + */ + Calendar getEntryCreated (); + + /** + * Setter when this receipt entry has been created in database + *

+ * @param entryCreated When this entry has been created + */ + void setEntryCreated (final Calendar entryCreated); + + /** + * Getter for primary key + *

+ * @return Primary key + */ + Long getEntryId (); + + /** + * Setter for primary key + *

+ * @param entryId Primary key + */ + void setEntryId (final Long entryId); + + /** + * Getter for receipt instance + *

+ * @return Receipt instance + */ + Billable getEntryReceipt (); + + /** + * Setter for receipt instance + *

+ * @param entryReceipt Receipt instance + */ + void setEntryReceipt (final Billable entryReceipt); + + /** + * Getter for linked product + *

+ * @return Product + */ + Product getEntryProduct (); + + /** + * Setter for linked product + *

+ * @param entryProduct Product + */ + void setEntryProduct (final Product entryProduct); + + /** + * Getter for product quantity + *

+ * @return Product quantity + */ + Long getEntryProductQuantity (); + + /** + * Setter for product quantity + *

+ * @param entryProductQuantity Product quantity + */ + void setEntryProductQuantity (final Long entryProductQuantity); + + /** + * Getter for product single price (copied from GenericProduct) + *

+ * @return Product single price + */ + Float getEntryProductPrice (); + + /** + * Setter for product single price (copied from GenericProduct) + *

+ * @param entryProductPrice Product single price + */ + void setEntryProductPrice (final Float entryProductPrice); + + @Override + boolean equals (final Object object); + + @Override + int hashCode (); + +} diff --git a/src/org/mxchange/jfinancials/receipt/entry/ReceiptEntry.java b/src/org/mxchange/jfinancials/receipt/entry/ReceiptEntry.java new file mode 100644 index 0000000..233099a --- /dev/null +++ b/src/org/mxchange/jfinancials/receipt/entry/ReceiptEntry.java @@ -0,0 +1,166 @@ +/* + * Copyright (C) 2017 Roland Haeder + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.mxchange.jfinancials.receipt.entry; + +import java.util.Calendar; +import javax.persistence.Basic; +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Index; +import javax.persistence.JoinColumn; +import javax.persistence.OneToOne; +import javax.persistence.Table; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; +import javax.persistence.Transient; +import org.mxchange.jfinancials.receipt.Billable; +import org.mxchange.jfinancials.receipt.Receipt; +import org.mxchange.jshopcore.model.product.GenericProduct; +import org.mxchange.jshopcore.model.product.Product; + +/** + * A class for entryReceipt entries + *

+ * @author Roland Haeder + */ +@Entity (name = "receipt_entries") +@Table ( + name = "receipt_entries", + indexes = { + @Index (name = "entry_receipt_product", columnList = "entry_receipt_id,entry_product_id", unique = true) + } +) +@SuppressWarnings ("PersistenceUnitPresent") +public class ReceiptEntry implements BillableReceiptEntry { + + /** + * Serial number + */ + @Transient + private static final long serialVersionUID = 126_498_698_378_571L; + + /** + * When this entry has been created in database + */ + @Basic (optional = false) + @Temporal (TemporalType.TIMESTAMP) + @Column (name = "entry_created", nullable = false) + private Calendar entryCreated; + + /** + * Primary key + */ + @Id + @GeneratedValue (strategy = GenerationType.IDENTITY) + @Column (name = "entry_id", nullable = false, updatable = false) + private Long entryId; + + /** + * Product being linked in this entryReceipt item + */ + @JoinColumn (name = "entry_product_id", referencedColumnName = "product_id", nullable = false, updatable = false, unique = true) + @OneToOne (targetEntity = GenericProduct.class, cascade = CascadeType.ALL, optional = false) + private Product entryProduct; + + /** + * Single product price (being copied here from GenericProduct) + */ + @Basic (optional = false) + @Column (name = "entry_product_price", nullable = false) + private Float entryProductPrice; + + /** + * Product quantity + */ + @Basic (optional = false) + @Column (name = "entry_product_quantity", nullable = false) + private Long entryProductQuantity; + + /** + * Connected entryReceipt entry + */ + @JoinColumn (name = "entry_receipt_id", referencedColumnName = "receipt_id", nullable = false, updatable = false, unique = true) + @OneToOne (targetEntity = Receipt.class, cascade = CascadeType.REFRESH, optional = false) + private Billable entryReceipt; + + @Override + @SuppressWarnings ("ReturnOfDateField") + public Calendar getEntryCreated () { + return this.entryCreated; + } + + @Override + @SuppressWarnings ("AssignmentToDateFieldFromParameter") + public void setEntryCreated (final Calendar entryCreated) { + this.entryCreated = entryCreated; + } + + @Override + public Long getEntryId () { + return this.entryId; + } + + @Override + public void setEntryId (final Long entryId) { + this.entryId = entryId; + } + + @Override + public Product getEntryProduct () { + return this.entryProduct; + } + + @Override + public void setEntryProduct (final Product entryProduct) { + this.entryProduct = entryProduct; + } + + @Override + public Float getEntryProductPrice () { + return this.entryProductPrice; + } + + @Override + public void setEntryProductPrice (final Float entryProductPrice) { + this.entryProductPrice = entryProductPrice; + } + + @Override + public Long getEntryProductQuantity () { + return this.entryProductQuantity; + } + + @Override + public void setEntryProductQuantity (final Long entryProductQuantity) { + this.entryProductQuantity = entryProductQuantity; + } + + @Override + public Billable getEntryReceipt () { + return this.entryReceipt; + } + + @Override + public void setEntryReceipt (final Billable entryReceipt) { + this.entryReceipt = entryReceipt; + } + +} -- 2.39.5