/*
 * File: src/main/java/reports/model/purchase/PurchaseItem.java
 * Description: This model represents individual items within a Purchase. Each PurchaseItem
 * captures details such as product ID, quantity, and tenant information, and maintains a reference
 * to the associated Purchase. The model includes metadata fields for tracking creation, updates,
 * and deletions, allowing a complete record of each item within a purchase order.
 */

package com.nebula.erp.reports.model.purchase;

import com.fasterxml.jackson.annotation.JsonBackReference;
import jakarta.persistence.*;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;

import java.time.LocalDateTime;

@Data
@Entity
@Table(name = "purchase_item")
@Getter
@Setter
public class PurchaseItem {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @ManyToOne
    @JoinColumn(name = "purchase_id")
    @JsonBackReference
    private Purchase purchase_order;

    @Column(nullable = false)
    private Long product_id;

    @Column(nullable = false)
    private Integer quantity;

    @Column(nullable = false)
    private String created_by;

    @Column(nullable = false)
    private String tenant;

    private LocalDateTime created_at = LocalDateTime.now();
    private LocalDateTime updated_at = LocalDateTime.now();
    private LocalDateTime deleted_at = null;
}