Subversion Repositories SmartDukaan

Rev

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

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

import in.shop2020.purchase.LineItem;
import in.shop2020.purchase.PurchaseOrder;
import in.shop2020.purchase.PurchaseService.Client;
import in.shop2020.thrift.clients.PurchaseClient;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.thrift.TException;
import org.apache.thrift.transport.TTransportException;


/**
 * @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;
    
    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();

        return inventoryItem;
    }

    public in.shop2020.warehouse.InventoryItem convert() {
        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.setSerialNumber(serialNumber);

        // 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());
                    break;
                }
            }
        } catch (TTransportException e) {
            logger.error("Could not fetch purchase order for purchase id: " + purchaseId, e);
        } catch (TException e) {
            logger.error("Could not fetch purchase order for purchase id: " + purchaseId, e);
        }

        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;
    }
}