@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "purchaseItem")
public class PurchaseItem {
@Id
@GeneratedValue(strategy = [Link])
private Long id;
private Long quantity;
private double unitPrice;
private String uom;
private int taxPercent;
private double lineTotal;
@ManyToOne
@JoinColumn(name = "productId", unique = false)
private Product product;
}
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "purchase")
public class Purchase {
@Id
@GeneratedValue(strategy = [Link])
@Column(name = "purchaseId")
private Long id;
@Column(name = "purchaseDate")
private LocalDate date;
private String status; // (Draft / Posted / Paid / Cancelled)
private double totalAmount;
private double taxAmount;
private double grandTotal;
@OneToMany(cascade = [Link])
@JoinColumn(name = "purchaseId", nullable= true)
private List<PurchaseItem> purchaseItem;
@ManyToOne(cascade = [Link])
@JoinColumn(name = "supplierId")
private Supplier supplier;
@ManyToOne(cascade = [Link])
@JoinColumn(name = "warehouseId")
private Warehouse warehouse;
}
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "brand")
public class Brand {
@Id
@GeneratedValue(strategy = [Link])
@Column(name = "brandId")
private Long id;
@Column(name = "brandName", nullable = false)
private String name;
@Column(name = "description", nullable = true)
private String desc;
}
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "customer")
public class Customer {
@Id
@GeneratedValue(strategy = [Link])
@Column(name = "customerId")
private Long id;
@Column(name = "customerName")
private String name;
private String email;
private long phone;
private String city;
private String state;
private String country;
@OneToMany(cascade = [Link])
@JoinColumn(name = "customerId", nullable = true)
private List<SubContacts> contacts;
}
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "opening_stock")
public class OpeningStock {
@Id
@GeneratedValue(strategy = [Link])
@Column(name = "openingStockId")
private Long id;
@OneToOne
@JoinColumn(name = "warehouseId")
private Warehouse warehouse;
@OneToOne
@JoinColumn(name = "productId")
private Product product;
@Column(nullable = false)
private long quantity;
@Column(name = "openingDate")
private LocalDate date;
}
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "product")
public class Product {
@Id
@Column(name = "productID")
@GeneratedValue(strategy = [Link])
private Long id;
@Column(name = "productName", nullable = false)
private String name;
@ManyToOne
private Brand brand;
}
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "purchase_order")
public class PurchaseOrder {
public List<PurchaseOrderItem> getPurchaseOrderItem() {
return purchaseOrderItem;
}
public void setPurchaseOrderItem(List<PurchaseOrderItem> purchaseOrderItem) {
[Link] = purchaseOrderItem;
}
@Id
@GeneratedValue(strategy = [Link])
@Column(name = "purchaseOrderId")
private Long id;
@Column(name = "orderDate")
private LocalDate date;
@OneToOne
@JoinColumn(name = "supplierId")
private Supplier supplier;
@OneToOne
@JoinColumn(name = "warehouseId")
private Warehouse warehouse;
private String status;
@OneToMany(cascade = [Link])
@JoinColumn(name = "purchaseOrderId")
private List<PurchaseOrderItem> purchaseOrderItem;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "purchaseOrderItem")
public class PurchaseOrderItem {
@Id
@GeneratedValue(strategy = [Link])
@Column(name = "purchaseOrderItemId")
private Long id;
@Column(name = "unitPrice")
private Long price;
private Long quantity;
private String uom;
@OneToOne(cascade = [Link])
@JoinColumn(name = "productId")
private Product product;
}
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "subContacts")
public class SubContacts {
@Id
@GeneratedValue(strategy = [Link])
@Column(name="subContactId")
private Long id;
@Column(name = "contactPersonName")
private String name;
@Column(name = "contactPhone")
private long phone;
@Column(name = "contactEmail")
private String email;
}
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "supplier")
public class Supplier {
@Id
@GeneratedValue(strategy = [Link])
@Column(name = "supplierId")
private Long id;
@Column(name = "supplierName", nullable = false)
private String name;
private String email;
private long phone;
private String city;
private String state;
private String country;
@OneToMany(cascade= [Link])
@JoinColumn(name = "spplierId", nullable = true)
private List<SuppliersContact> suppliersContact;
}
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "suppliersContact")
public class SuppliersContact {
@Id
@GeneratedValue(strategy = [Link])
@Column(name = "subContactId")
private Long id;
@Column(name = "contactPersonName")
private String name;
@Column(name = "contactEmail")
private String email;
@Column(name = "contactPhone")
private long phone;
}
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "users")
public class Users {
@Id
@GeneratedValue(strategy = [Link])
private Long id;
@Column(name = "username")
private String username;
@Column(name = "userPassword" )
private String password;
}
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
@Entity
@Table(name = "warehouse")
public class Warehouse {
@Id
@GeneratedValue(strategy = [Link])
private Long id;
@Column(unique = true)
private String name;
}