Subversion Repositories SmartDukaan

Rev

Rev 14821 | Blame | Compare with Previous | Last modification | View Log | RSS feed

/**
 * 
 */
package in.shop2020.inventory.controllers;

import in.shop2020.model.v1.inventory.Warehouse;
import in.shop2020.thrift.clients.CatalogClient;
import in.shop2020.thrift.clients.InventoryClient;
import in.shop2020.thrift.clients.PurchaseClient;
import in.shop2020.thrift.clients.WarehouseClient;
import in.shop2020.utils.ModelUtils;
import in.shop2020.warehouse.DoaOutInventoryItem;
import in.shop2020.warehouse.InventoryItem;
import in.shop2020.warehouse.Scan;
import in.shop2020.warehouse.ScanType;
import in.shop2020.warehouse.WarehouseService.Client;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

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

/**
 * @author mandeep
 *
 */
public class DoaOutController extends BaseController {
    private Log logger = LogFactory.getLog(DoaOutController.class);
    private String id;
    private String creditNote;
    List<DoaOutInventoryItem> inventoryItems;
    private String imeiNumber;
    private SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");

    public String index() {
        try {
                //List<InventoryItem> tobeRemovedInventoryItems = new ArrayList<InventoryItem>();
            Client warehouseClient = new WarehouseClient().getClient();
            inventoryItems = warehouseClient
                    .getAllDoaOutInventoryItems();
           /* for(InventoryItem inventoryItem:inventoryItems) {
                if(inventoryItem.getId()<59078 ||  
                                inventoryItem.getCurrentWarehouseId() == 1 || 
                                inventoryItem.getCurrentWarehouseId() == 9) {//removing doa_in entries before 2013 and all hotspot entries
                        tobeRemovedInventoryItems.add(inventoryItem);
                }
            }
            for(InventoryItem inventoryItem:tobeRemovedInventoryItems) {
                inventoryItems.remove(inventoryItem);
            }*/
        } catch (Exception e) {
            logger.error("Could not fetch inventory items", e);
        }

        return INDEX;
    }
    

    public String update() {
        try {
            Client warehouseClient = new WarehouseClient().getClient();
            InventoryItem inventoryItem = warehouseClient.getInventoryItemFromId(Long.valueOf(id));
            warehouseClient.scan(inventoryItem, ScanType.DOA_REPLACED, 1, inventoryItem.getPhysicalWarehouseId(), 0);
            in.shop2020.purchase.PurchaseService.Client purchaseClient = new PurchaseClient().getClient();
            purchaseClient.unFulfillPO(inventoryItem.getPurchaseId(), inventoryItem.getItemId(), 1);
            inventoryItem.setSerialNumber(this.getImeiNumber());
            warehouseClient.scan(inventoryItem, ScanType.PURCHASE, 1, inventoryItem.getPhysicalWarehouseId(), 0);
        } catch (Exception e) {
            logger.error("Could not fetch inventory items", e);
        }

        return index();
    }
    
    public String doaReject() {
        try {
            Client warehouseClient = new WarehouseClient().getClient();
            InventoryItem inventoryItem = warehouseClient.getInventoryItemFromId(Long.valueOf(id));
            in.shop2020.model.v1.inventory.InventoryService.Client catalogClient = new InventoryClient().getClient();
            Warehouse warehouse = catalogClient.getWarehouse(inventoryItem.getCurrentWarehouseId());
            warehouseClient.scan(inventoryItem, ScanType.DOA_REJECTED, 1, warehouse.getBillingWarehouseId(), 0);
        } catch (Exception e) {
            logger.error("Could not fetch inventory items", e);
        }

        return index();
    }
    
    public String closeDOAByCreditNote() {
        try {
                Client warehouseClient = new WarehouseClient().getClient();
            InventoryItem inventoryItem = warehouseClient.getInventoryItemFromId(Long.valueOf(id));
            in.shop2020.model.v1.inventory.InventoryService.Client catalogClient = new InventoryClient().getClient();
            Warehouse warehouse = catalogClient.getWarehouse(inventoryItem.getCurrentWarehouseId());
            
            Scan scan = new Scan();
            scan.setInventoryItemId(Long.parseLong(id));
            scan.setScannedAt((new Date()).getTime());
            scan.setType(ScanType.DOA_CLOSED_BY_CREDIT_NOTE);
            scan.setQuantity(1);
            scan.setRemarks(creditNote);
            scan.setWarehouseId(inventoryItem.getCurrentWarehouseId());
            warehouseClient.genericScan(inventoryItem, scan);
        } catch (Exception e) {
            logger.error("Could not fetch inventory items", e);
        }

        return index();
    }

    public String getPONumber(long purchaseId) {
        try {
            in.shop2020.purchase.PurchaseService.Client purchaseClient = new PurchaseClient().getClient();
            return purchaseClient.getPurchaseOrderForPurchase(purchaseId).getPoNumber();
        } catch (Exception e) {
            return "N/A";
        }
    }

    public String getWarehouseDisplayName(long warehouseId) {
        try {
            in.shop2020.model.v1.inventory.InventoryService.Client catalogClient = new InventoryClient().getClient();
            return catalogClient.getWarehouse(warehouseId).getDisplayName();
        } catch (Exception e) {
            return "N/A";
        }
    }
    
    public String getModelName(long itemId) {
        try {
            in.shop2020.model.v1.catalog.CatalogService.Client catalogClient = new CatalogClient()
                    .getClient();
            return ModelUtils.extractProductNameFromItem(catalogClient
                    .getItem(itemId));
        } catch (Exception e) {
            return "N/A";
        }
    }
    
    public String getDoaOutDateTime(long doaOutTimeStamp){
        return sdf.format(new Date(doaOutTimeStamp));
    }

    public String getId() {
        return id;
    }

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

    public List<DoaOutInventoryItem> getInventoryItems() {
        return inventoryItems;
    }

    public void setInventoryItems(List<DoaOutInventoryItem> inventoryItems) {
        this.inventoryItems = inventoryItems;
    }

        public String getCreditNote() {
                return creditNote;
        }

        public void setCreditNote(String creditNote) {
                this.creditNote = creditNote;
        }


        public String getImeiNumber() {
                return imeiNumber;
        }


        public void setImeiNumber(String imeiNumber) {
                this.imeiNumber = imeiNumber;
        }
    
}