Skip to content

Commit c3d98ed

Browse files
Merge pull request #14 from dynamiatools/3.x
Entity mapping improvements and support for account reseller agents
2 parents c898208 + b6808e5 commit c3d98ed

File tree

20 files changed

+613
-43
lines changed

20 files changed

+613
-43
lines changed

sources/api/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,13 @@
2626
<parent>
2727
<groupId>tools.dynamia.modules</groupId>
2828
<artifactId>tools.dynamia.modules.saas.parent</artifactId>
29-
<version>3.4.0</version>
29+
<version>3.4.1</version>
3030
</parent>
3131
<artifactId>tools.dynamia.modules.saas.api</artifactId>
3232

3333
<name>DynamiaModules - SaaS API</name>
3434
<url>https://www.dynamia.tools/modules/saas</url>
35-
<version>3.4.0</version>
35+
<version>3.4.1</version>
3636

3737
<build>
3838
<plugins>

sources/core/pom.xml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,10 @@
2222
<parent>
2323
<groupId>tools.dynamia.modules</groupId>
2424
<artifactId>tools.dynamia.modules.saas.parent</artifactId>
25-
<version>3.4.0</version>
25+
<version>3.4.1</version>
2626
</parent>
2727
<artifactId>tools.dynamia.modules.saas</artifactId>
28-
<version>3.4.0</version>
28+
<version>3.4.1</version>
2929
<name>DynamiaModules - SaaS Core</name>
3030
<url>https://www.dynamia.tools/modules/saas</url>
3131

@@ -49,12 +49,12 @@
4949
<dependency>
5050
<groupId>tools.dynamia.modules</groupId>
5151
<artifactId>tools.dynamia.modules.saas.api</artifactId>
52-
<version>3.4.0</version>
52+
<version>3.4.1</version>
5353
</dependency>
5454
<dependency>
5555
<groupId>tools.dynamia.modules</groupId>
5656
<artifactId>tools.dynamia.modules.saas.jpa</artifactId>
57-
<version>3.4.0</version>
57+
<version>3.4.1</version>
5858
</dependency>
5959
<dependency>
6060
<groupId>junit</groupId>

sources/core/src/main/java/tools/dynamia/modules/saas/domain/Account.java

Lines changed: 46 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ public class Account extends SimpleEntity implements Transferable<AccountDTO> {
7878
@Email(message = "ingreso direccion de correo valida ")
7979
@NotEmpty(message = "ingrese direccion de correo electronico")
8080
private String email;
81-
@OneToOne
81+
@ManyToOne
8282
@NotNull
8383
private AccountType type;
8484
@Temporal(jakarta.persistence.TemporalType.DATE)
@@ -167,6 +167,18 @@ public class Account extends SimpleEntity implements Transferable<AccountDTO> {
167167
@ManyToOne
168168
private AccountReseller reseller;
169169

170+
@ManyToOne
171+
private AccountResellerAgent resellerAgent;
172+
173+
@Lob
174+
private String resellerComments;
175+
176+
@Column(length = 50)
177+
private String resellerInvoice;
178+
179+
@Temporal(TemporalType.DATE)
180+
private Date resellerInvoiceDate;
181+
170182
@ManyToOne
171183
private AccountRegion accountRegion;
172184
private boolean templateAccount;
@@ -186,7 +198,7 @@ public class Account extends SimpleEntity implements Transferable<AccountDTO> {
186198

187199
private String activationCoupon;
188200
private String redirect;
189-
@OneToOne
201+
@ManyToOne
190202
private AccountChannelSale channel;
191203

192204
public Account() {
@@ -910,4 +922,36 @@ public boolean isTemplateAccount() {
910922
public void setTemplateAccount(boolean templateAccount) {
911923
this.templateAccount = templateAccount;
912924
}
925+
926+
public AccountResellerAgent getResellerAgent() {
927+
return resellerAgent;
928+
}
929+
930+
public void setResellerAgent(AccountResellerAgent resellerAgent) {
931+
this.resellerAgent = resellerAgent;
932+
}
933+
934+
public String getResellerComments() {
935+
return resellerComments;
936+
}
937+
938+
public void setResellerComments(String resellerComments) {
939+
this.resellerComments = resellerComments;
940+
}
941+
942+
public String getResellerInvoice() {
943+
return resellerInvoice;
944+
}
945+
946+
public void setResellerInvoice(String resellerInvoice) {
947+
this.resellerInvoice = resellerInvoice;
948+
}
949+
950+
public Date getResellerInvoiceDate() {
951+
return resellerInvoiceDate;
952+
}
953+
954+
public void setResellerInvoiceDate(Date resellerInvoiceDate) {
955+
this.resellerInvoiceDate = resellerInvoiceDate;
956+
}
913957
}

sources/core/src/main/java/tools/dynamia/modules/saas/domain/AccountCharge.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
package tools.dynamia.modules.saas.domain;
1919

20+
import jakarta.persistence.ManyToOne;
2021
import tools.dynamia.domain.jpa.BaseEntity;
2122

2223
import jakarta.persistence.Entity;
@@ -29,7 +30,7 @@
2930
@Table(name = "saas_charges")
3031
public class AccountCharge extends BaseEntity {
3132

32-
@OneToOne
33+
@ManyToOne
3334
@NotNull
3435
private Account account;
3536
@NotNull

sources/core/src/main/java/tools/dynamia/modules/saas/domain/AccountLog.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public class AccountLog extends BaseEntity implements Transferable<AccountLogDTO
3434
@Column(name = "logDate")
3535
private Date date = new Date();
3636

37-
@OneToOne
37+
@ManyToOne
3838
@NotNull
3939
private Account account;
4040
private String ip;

sources/core/src/main/java/tools/dynamia/modules/saas/domain/AccountPayment.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,10 @@
4343
@OrderBy("creationDate")
4444
public class AccountPayment extends BaseEntity implements Transferable<AccountPaymentDTO> {
4545

46-
@OneToOne
46+
@ManyToOne
4747
@NotNull(message = "Select account")
4848
private Account account;
49-
@OneToOne
49+
@ManyToOne
5050
private AccountType type;
5151
@NotEmpty(message = "Entrer payment reference")
5252
private String reference;
@@ -60,7 +60,7 @@ public class AccountPayment extends BaseEntity implements Transferable<AccountPa
6060
@Column(length = 2000)
6161
private String paymentMethodDescription;
6262
private boolean finished = true;
63-
@OneToOne
63+
@ManyToOne
6464
@NotNull
6565
private AccountPaymentMethod paymentMethod;
6666
private BigDecimal resellerComission;

sources/core/src/main/java/tools/dynamia/modules/saas/domain/AccountReseller.java

Lines changed: 46 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,36 +17,41 @@
1717

1818
package tools.dynamia.modules.saas.domain;
1919

20+
import jakarta.persistence.*;
2021
import org.hibernate.annotations.BatchSize;
2122
import tools.dynamia.domain.contraints.NotEmpty;
2223
import tools.dynamia.domain.jpa.BaseEntity;
2324
import tools.dynamia.domain.jpa.ContactInfo;
2425
import tools.dynamia.domain.util.DomainUtils;
2526

26-
import jakarta.persistence.Entity;
27-
import jakarta.persistence.OneToOne;
28-
import jakarta.persistence.Table;
27+
import java.util.ArrayList;
28+
import java.util.Date;
29+
import java.util.List;
2930

3031
@Entity
3132
@Table(name = "saas_resellers")
3233
@BatchSize(size = 20)
3334
public class AccountReseller extends BaseEntity {
3435

3536

36-
public static AccountReseller findByMainAccount(Long accountId){
37-
return DomainUtils.lookupCrudService().findSingle(AccountReseller.class,"mainAccount.id",accountId);
38-
}
39-
4037
@NotEmpty
4138
private String name;
4239
private String identification;
4340
private String idType;
4441
private ContactInfo contactInfo = new ContactInfo();
4542
private boolean enabled;
4643
private Long externalId;
47-
@OneToOne
44+
@ManyToOne
4845
private Account mainAccount;
4946
private double comissionRate;
47+
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, orphanRemoval = true, mappedBy = "reseller")
48+
private List<AccountResellerAgent> agents = new ArrayList<>();
49+
@Temporal(TemporalType.DATE)
50+
private Date startDate = new Date();
51+
@Temporal(TemporalType.DATE)
52+
private Date endDate = null;
53+
@Column(length = 1000)
54+
private String comments;
5055

5156

5257
public String getName() {
@@ -74,7 +79,7 @@ public void setIdType(String idType) {
7479
}
7580

7681
public ContactInfo getContactInfo() {
77-
if(contactInfo==null){
82+
if (contactInfo == null) {
7883
contactInfo = new ContactInfo();
7984
}
8085
return contactInfo;
@@ -116,6 +121,38 @@ public void setComissionRate(double comissionRate) {
116121
this.comissionRate = comissionRate;
117122
}
118123

124+
public List<AccountResellerAgent> getAgents() {
125+
return agents;
126+
}
127+
128+
public void setAgents(List<AccountResellerAgent> agents) {
129+
this.agents = agents;
130+
}
131+
132+
public Date getStartDate() {
133+
return startDate;
134+
}
135+
136+
public void setStartDate(Date startDate) {
137+
this.startDate = startDate;
138+
}
139+
140+
public Date getEndDate() {
141+
return endDate;
142+
}
143+
144+
public void setEndDate(Date endDate) {
145+
this.endDate = endDate;
146+
}
147+
148+
public String getComments() {
149+
return comments;
150+
}
151+
152+
public void setComments(String comments) {
153+
this.comments = comments;
154+
}
155+
119156
@Override
120157
public String toString() {
121158
return name;
Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
package tools.dynamia.modules.saas.domain;
2+
3+
import jakarta.persistence.Column;
4+
import jakarta.persistence.Entity;
5+
import jakarta.persistence.ManyToOne;
6+
import tools.dynamia.domain.contraints.Email;
7+
import tools.dynamia.domain.contraints.NotEmpty;
8+
import tools.dynamia.domain.jpa.SimpleEntity;
9+
10+
import java.io.Serializable;
11+
12+
/**
13+
* Entity representing an agent or seller for a reseller (AccountReseller).
14+
* Contains basic contact information and a many-to-one relationship with AccountReseller.
15+
* <p>
16+
* Fields:
17+
* <ul>
18+
* <li>name: Agent's full name (required)</li>
19+
* <li>email: Contact email</li>
20+
* <li>phone: Contact phone number</li>
21+
* <li>address: Contact address</li>
22+
* <li>identification: Identification number or code</li>
23+
* <li>reseller: Associated AccountReseller</li>
24+
* </ul>
25+
*/
26+
@Entity
27+
public class AccountResellerAgent extends SimpleEntity implements Serializable {
28+
29+
30+
@NotEmpty(message = "Agent name is required")
31+
private String name;
32+
33+
@Email
34+
private String email;
35+
36+
@Column(length = 20)
37+
private String phone;
38+
39+
@Column(length = 200)
40+
private String address;
41+
42+
@Column(length = 50)
43+
private String identification;
44+
45+
@ManyToOne(optional = false)
46+
private AccountReseller reseller;
47+
48+
49+
// Getters y setters
50+
51+
public String getName() {
52+
return name;
53+
}
54+
55+
public void setName(String name) {
56+
this.name = name;
57+
}
58+
59+
public String getEmail() {
60+
return email;
61+
}
62+
63+
public void setEmail(String email) {
64+
this.email = email;
65+
}
66+
67+
public String getPhone() {
68+
return phone;
69+
}
70+
71+
public void setPhone(String phone) {
72+
this.phone = phone;
73+
}
74+
75+
public String getAddress() {
76+
return address;
77+
}
78+
79+
public void setAddress(String address) {
80+
this.address = address;
81+
}
82+
83+
public String getIdentification() {
84+
return identification;
85+
}
86+
87+
public void setIdentification(String identification) {
88+
this.identification = identification;
89+
}
90+
91+
public AccountReseller getReseller() {
92+
return reseller;
93+
}
94+
95+
public void setReseller(AccountReseller reseller) {
96+
this.reseller = reseller;
97+
}
98+
99+
@Override
100+
public String toString() {
101+
return name;
102+
}
103+
}

0 commit comments

Comments
 (0)