Subversion Repositories SmartDukaan

Rev

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

/**
 * 
 */
package in.shop2020.warehouse.domain;

import in.shop2020.generic.ExceptionType;
import in.shop2020.purchase.LineItem;
import in.shop2020.purchase.PurchaseOrder;
import in.shop2020.purchase.PurchaseService.Client;
import in.shop2020.thrift.clients.PurchaseClient;
import in.shop2020.warehouse.ScanType;
import in.shop2020.warehouse.TransferLotStatus;
import in.shop2020.warehouse.WarehouseServiceException;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;


/**
 * @author mandeep
 *
 */
public class InventoryItem {
    private static Log logger = LogFactory.getLog(InventoryItem.class);

    private long id;
    private long itemId;
    private String itemNumber;
    private String serialNumber;
    private long initialQuantity;
    private long currentQuantity;
    private long purchaseId;
    private long purchaseReturnId;
    private long currentWarehouseId;
    private ScanType lastScanType;
    private long physicalWarehouseId;
    private TransferLotStatus transferStatus;

    public static InventoryItem create(in.shop2020.warehouse.InventoryItem thriftInventoryItem) {
        InventoryItem inventoryItem = new InventoryItem();
        inventoryItem.id = thriftInventoryItem.getId();
        inventoryItem.itemId = thriftInventoryItem.getItemId();
        inventoryItem.itemNumber = thriftInventoryItem.getItemNumber();
        inventoryItem.serialNumber = thriftInventoryItem.getSerialNumber();
        inventoryItem.initialQuantity = thriftInventoryItem.getInitialQuantity();
        inventoryItem.currentQuantity = thriftInventoryItem.getCurrentQuantity();
        inventoryItem.purchaseId = thriftInventoryItem.getPurchaseId();
        inventoryItem.purchaseReturnId = thriftInventoryItem.getPurchaseReturnId();
        inventoryItem.currentWarehouseId = thriftInventoryItem.getCurrentWarehouseId();
        inventoryItem.lastScanType = thriftInventoryItem.getLastScanType();
        inventoryItem.physicalWarehouseId = thriftInventoryItem.getPhysicalWarehouseId();
        inventoryItem.transferStatus = thriftInventoryItem.getTransferStatus();

        return inventoryItem;
    }

    public in.shop2020.warehouse.InventoryItem convert() throws WarehouseServiceException {
        in.shop2020.warehouse.InventoryItem inventoryItem = new in.shop2020.warehouse.InventoryItem();
        inventoryItem.setId(id);
        inventoryItem.setItemId(itemId);
        inventoryItem.setCurrentQuantity(currentQuantity);
        inventoryItem.setInitialQuantity(initialQuantity);
        inventoryItem.setItemNumber(itemNumber);
        inventoryItem.setPurchaseId(purchaseId);
        inventoryItem.setPurchaseReturnId(purchaseReturnId);
        inventoryItem.setSerialNumber(serialNumber);
        inventoryItem.setCurrentWarehouseId(currentWarehouseId);
        inventoryItem.setLastScanType(lastScanType);        
        inventoryItem.setTransferStatus(transferStatus);        
        inventoryItem.setPhysicalWarehouseId(physicalWarehouseId);        

        // Setting derived fields
        try {
            Client client = new PurchaseClient().getClient();
            PurchaseOrder purchaseOrder = client.getPurchaseOrderForPurchase(purchaseId);
            inventoryItem.setSupplierId(purchaseOrder.getSupplierId());
            for (LineItem lineItem : purchaseOrder.getLineitems()) {
                if (lineItem.getItemId() == itemId) {
                    inventoryItem.setUnitPrice(lineItem.getUnitPrice());
                    inventoryItem.setNlc(lineItem.getNlc());
                    break;
                }
            }
        } catch (Exception e) {
            logger.error("Could not fetch purchase order for purchase id: " + purchaseId, e);
            throw new WarehouseServiceException(ExceptionType.DATABASE_ERROR, "Could not find item in PO.");
        }

        return inventoryItem;
    }

    public long getId() {
        return id;
    }
    public void setId(long id) {
        this.id = id;
    }
    public long getItemId() {
        return itemId;
    }
    public void setItemId(long itemId) {
        this.itemId = itemId;
    }
    public String getItemNumber() {
        return itemNumber;
    }
    public void setItemNumber(String itemNumber) {
        this.itemNumber = itemNumber;
    }
    public String getSerialNumber() {
        return serialNumber;
    }
    public void setSerialNumber(String serialNumber) {
        this.serialNumber = serialNumber;
    }
    public long getInitialQuantity() {
        return initialQuantity;
    }
    public void setInitialQuantity(long initialQuantity) {
        this.initialQuantity = initialQuantity;
    }
    public long getCurrentQuantity() {
        return currentQuantity;
    }
    public void setCurrentQuantity(long currentQuantity) {
        this.currentQuantity = currentQuantity;
    }
    public long getPurchaseId() {
        return purchaseId;
    }
    public void setPurchaseId(long purchaseId) {
        this.purchaseId = purchaseId;
    }

    public long getPurchaseReturnId() {
                return purchaseReturnId;
        }

        public void setPurchaseReturnId(long purchaseReturnId) {
                this.purchaseReturnId = purchaseReturnId;
        }

        public long getCurrentWarehouseId() {
        return currentWarehouseId;
    }

    public void setCurrentWarehouseId(long currentWarehouseId) {
        this.currentWarehouseId = currentWarehouseId;
    }

    public ScanType getLastScanType() {
        return lastScanType;
    }

    public void setLastScanType(ScanType lastScanType) {
        this.lastScanType = lastScanType;
    }

        public TransferLotStatus getTransferStatus() {
                return transferStatus;
        }

        public void setTransferStatus(TransferLotStatus transferStatus) {
                this.transferStatus = transferStatus;
        }

        public long getPhysicalWarehouseId() {
                return physicalWarehouseId;
        }

        public void setPhysicalWarehouseId(long physicalWarehouseId) {
                this.physicalWarehouseId = physicalWarehouseId;
        }
        
}