Subversion Repositories SmartDukaan

Rev

Rev 27728 | Rev 27736 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

package com.spice.profitmandi.dao.entity.warehouse;

import java.time.LocalDateTime;

import javax.persistence.Column;
import javax.persistence.Convert;
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.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;

import com.spice.profitmandi.dao.convertor.LocalDateTimeAttributeConverter;

import in.shop2020.warehouse.ScanType;

/**
 * This class basically contains scheme details
 * 
 * @author Govind Kumar
 *
 */
@Entity
@Table(name = "warehouse.scanNew", schema = "warehouse")
@NamedQueries({
                @NamedQuery(name = "warehouse.selectOurPurchase", query = "select new com.spice.profitmandi.dao.model.OurPurchaseModel(li.brand, "
                                + " sum(case when sn.scannedAt >= :today then CAST(sn.quantity * li.unitPrice  AS int) else 0 end),"
                                + " sum(case when sn.scannedAt >= :threedays and sn.scannedAt < :endDate then CAST(sn.quantity * li.unitPrice  AS int) else 0 end),"
                                + " sum(case when sn.scannedAt >= :fifteendays and sn.scannedAt < :endDate then CAST(sn.quantity * li.unitPrice  AS int) else 0 end),"
                                + " sum(case when sn.scannedAt >= :startDate then CAST(sn.quantity * li.unitPrice  AS int) else 0 end),"
                                + " sum(case when sn.scannedAt >= :today then CAST(sn.quantity  AS int) else 0 end),"
                                + " sum(case when sn.scannedAt >= :threedays and sn.scannedAt < :endDate then CAST(sn.quantity  AS int) else 0 end),"
                                + " sum(case when sn.scannedAt >= :fifteendays and sn.scannedAt < :endDate then CAST(sn.quantity AS int) else 0 end),"
                                + " sum(case when sn.scannedAt >= :startDate then CAST(sn.quantity AS int) else 0 end)" + " )"
                                + " from WarehouseScan sn join WarehouseInventoryItem it on sn.inventoryItemId = it.id join WarehousePurchase p on it.purchaseId = p.id "
                                + " join WarehousePurchaseOrder po on po.id = p.poId join WarehouseLineItem li on li.purchaseOrderId = po.id "
                                + " and po.warehouseId in :warehouseId where sn.scannedAt >= :dataDate and sn.type = 'PURCHASE' group by li.brand"),

})
public class WarehouseScan {

        @Id
        @Column(name = "id", unique = true, updatable = false)
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private int id;

        @Column(name = "inventoryItemId")
        private int inventoryItemId;

        @Column(name = "quantity")
        private Integer quantity;

        @Column(name = "orderId")
        private Integer orderId; // The order that was fulfilled with thin scan!

        @Column(name = "warehouseId")
        private int warehouseId;

        @Column(name = "transferLotId")
        private Integer transferLotId;

        @Column(name = "type")
        @Enumerated(EnumType.STRING)
        private ScanType type;

        @Convert(converter = LocalDateTimeAttributeConverter.class)
        @Column(name = "scannedAt")
        private LocalDateTime scannedAt;

        @Column(name = "remarks")
        private String remarks;

        public int getId() {
                return id;
        }

        public void setId(int id) {
                this.id = id;
        }

        public int getInventoryItemId() {
                return inventoryItemId;
        }

        public void setInventoryItemId(int inventoryItemId) {
                this.inventoryItemId = inventoryItemId;
        }

        public Integer getQuantity() {
                return quantity;
        }

        public void setQuantity(Integer quantity) {
                this.quantity = quantity;
        }

        public Integer getOrderId() {
                return orderId;
        }

        public void setOrderId(Integer orderId) {
                this.orderId = orderId;
        }

        public int getWarehouseId() {
                return warehouseId;
        }

        public void setWarehouseId(int warehouseId) {
                this.warehouseId = warehouseId;
        }

        public Integer getTransferLotId() {
                return transferLotId;
        }

        public void setTransferLotId(Integer transferLotId) {
                this.transferLotId = transferLotId;
        }

        public ScanType getType() {
                return type;
        }

        public void setType(ScanType type) {
                this.type = type;
        }

        public LocalDateTime getScannedAt() {
                return scannedAt;
        }

        public void setScannedAt(LocalDateTime scannedAt) {
                this.scannedAt = scannedAt;
        }

        public String getRemarks() {
                return remarks;
        }

        public void setRemarks(String remarks) {
                this.remarks = remarks;
        }

        @Override
        public int hashCode() {
                final int prime = 31;
                int result = 1;
                result = prime * result + id;
                result = prime * result + inventoryItemId;
                result = prime * result + ((orderId == null) ? 0 : orderId.hashCode());
                result = prime * result + ((quantity == null) ? 0 : quantity.hashCode());
                result = prime * result + ((remarks == null) ? 0 : remarks.hashCode());
                result = prime * result + ((scannedAt == null) ? 0 : scannedAt.hashCode());
                result = prime * result + ((transferLotId == null) ? 0 : transferLotId.hashCode());
                result = prime * result + ((type == null) ? 0 : type.hashCode());
                result = prime * result + warehouseId;
                return result;
        }

        @Override
        public boolean equals(Object obj) {
                if (this == obj)
                        return true;
                if (obj == null)
                        return false;
                if (getClass() != obj.getClass())
                        return false;
                WarehouseScan other = (WarehouseScan) obj;
                if (id != other.id)
                        return false;
                if (inventoryItemId != other.inventoryItemId)
                        return false;
                if (orderId == null) {
                        if (other.orderId != null)
                                return false;
                } else if (!orderId.equals(other.orderId))
                        return false;
                if (quantity == null) {
                        if (other.quantity != null)
                                return false;
                } else if (!quantity.equals(other.quantity))
                        return false;
                if (remarks == null) {
                        if (other.remarks != null)
                                return false;
                } else if (!remarks.equals(other.remarks))
                        return false;
                if (scannedAt == null) {
                        if (other.scannedAt != null)
                                return false;
                } else if (!scannedAt.equals(other.scannedAt))
                        return false;
                if (transferLotId == null) {
                        if (other.transferLotId != null)
                                return false;
                } else if (!transferLotId.equals(other.transferLotId))
                        return false;
                if (type != other.type)
                        return false;
                if (warehouseId != other.warehouseId)
                        return false;
                return true;
        }

        @Override
        public String toString() {
                return "WarehouseScan [id=" + id + ", inventoryItemId=" + inventoryItemId + ", quantity=" + quantity
                                + ", orderId=" + orderId + ", warehouseId=" + warehouseId + ", transferLotId=" + transferLotId
                                + ", type=" + type + ", scannedAt=" + scannedAt + ", remarks=" + remarks + "]";
        }

}