Subversion Repositories SmartDukaan

Rev

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

package in.shop2020;

import in.shop2020.logistics.DeliveryType;
import in.shop2020.logistics.LogisticsInfo;
import in.shop2020.logistics.LogisticsServiceException;
import in.shop2020.model.v1.catalog.CatalogService.Client;
import in.shop2020.model.v1.catalog.FlipkartItem;
import in.shop2020.model.v1.catalog.Item;
import in.shop2020.model.v1.catalog.SnapdealItemDetails;
import in.shop2020.model.v1.catalog.status;
import in.shop2020.model.v1.inventory.FlipkartInventorySnapshot;
import in.shop2020.model.v1.inventory.InventoryType;
import in.shop2020.model.v1.inventory.ItemInventory;
import in.shop2020.model.v1.inventory.Warehouse;
import in.shop2020.model.v1.inventory.WarehouseLocation;
import in.shop2020.model.v1.inventory.WarehouseType;
import in.shop2020.model.v1.order.OrderSource;
import in.shop2020.serving.model.Order;
import in.shop2020.serving.model.OrderItems;
import in.shop2020.thrift.clients.CatalogClient;
import in.shop2020.thrift.clients.InventoryClient;
import in.shop2020.thrift.clients.LogisticsClient;
import in.shop2020.thrift.clients.TransactionClient;
import in.shop2020.utils.GmailUtils;
import inventory.FlipkartInventoryItem;

import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

import javax.mail.MessagingException;

import org.apache.commons.codec.binary.Base64;
import org.apache.http.HttpHeaders;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.thrift.TException;
import org.apache.thrift.transport.TTransportException;
import com.google.gson.Gson;



public class CreateSubmitFlipkartInventoryFeed {
        private static Map<Long, FlipkartInventoryItem> flipkartItemsInventoryMap = new HashMap<Long, FlipkartInventoryItem>();
        private static List<FlipkartItem> flipkartItems;
        private static List<FlipkartItem> flipkartInventoryItems = new ArrayList<FlipkartItem>();
        private static Map<Long,Long> itemIdOrdersMap = new HashMap<Long,Long>();
        private static Map<Long,Item> aliveItemsMap = new HashMap<Long,Item>();
        private static Map<String,Long> heldOrdersMap = new HashMap<String,Long>();
        private static Map<Long,Long>  updatedFlipkartInventoryMap = new HashMap<Long,Long>();
        static java.text.SimpleDateFormat sdf;
        static String emailFromAddress;
        static String password;
        static GmailUtils mailer;
        static String sendTo[];
        private static List<SnapdealItemDetails> snapdealItems = new ArrayList<SnapdealItemDetails>();
        private static Map<Long,SnapdealItemDetails> snapdealItemsMap = new HashMap<Long,SnapdealItemDetails>();
        private static String cookies;
        static
        {
                sdf = new java.text.SimpleDateFormat("yyyy-MM-dd-HH:mm:ss");
                emailFromAddress = "build@shop2020.in";
                password = "cafe@nes";
                mailer = new GmailUtils();
                //sendTo = new String[]{"vikram.raghav@shop2020.in"};
                sendTo = new String[]{ "sandeep.sachdeva@shop2020.in", "vikram.raghav@shop2020.in", "rajneesh.arora@shop2020.in",
                                "khushal.bhatia@shop2020.in","manoj.kumar@saholic.com","chaitnaya.vats@saholic.com",
                                "yukti.jain@shop2020.in","manoj.pal@shop2020.in","chandan.kumar@shop2020.in","ankush.dhingra@shop2020.in","manish.sharma@shop2020.in","anikendra.das@shop2020.in"};
                List<String> flipkartorderids = null;
                Client catalogServiceClient = null;
                try {
                        catalogServiceClient = new CatalogClient("catalog_service_server_host_amazon","catalog_service_server_port").getClient();
                } catch (TTransportException e) {
                        e.printStackTrace();
                }
                try {
                        flipkartItems = catalogServiceClient.getAllFlipkartItems();
                        snapdealItems = catalogServiceClient.getAllSnapdealItems();
                } catch (TException e) {
                        e.printStackTrace();
                }
                for(FlipkartItem flipkartItem:flipkartItems){
                        if(flipkartItem.isIsListedOnFlipkart() && !flipkartItem.isSuppressInventoryFeed())
                                flipkartInventoryItems.add(flipkartItem);
                }
                for(SnapdealItemDetails snapdealItem:snapdealItems){
                        snapdealItemsMap.put(snapdealItem.getItem_id(),snapdealItem);
                }
                if(flipkartInventoryItems.size()==0){
                        String text = "";
                        try {
                                mailer.sendSSLMessage(sendTo,"No items to send inventory ", emailFromAddress, password, text);
                                System.exit(0);
                        } catch (MessagingException e) {
                                e.printStackTrace();
                        }
                }
                in.shop2020.model.v1.order.TransactionService.Client transactionClient = null;
                try {
                        flipkartorderids = FetchOrders();
                } catch (ClientProtocolException e1) {
                        e1.printStackTrace();
                } catch (IOException e1) {
                        e1.printStackTrace();
                }
                try {
                        transactionClient = new TransactionClient().getClient();
                        if(flipkartorderids!=null && flipkartorderids.size()>0){
                                itemIdOrdersMap = transactionClient.getCreatedOrdersForFlipkart(flipkartorderids);
                        }
                } catch (TTransportException e) {
                        try {
                                itemIdOrdersMap = transactionClient.getCreatedOrdersForFlipkart(flipkartorderids);
                        } catch (TException e1) {
                                e1.printStackTrace();
                        }
                }catch (TException e) {
                        e.printStackTrace();
                }
                try {
                        List<FlipkartInventorySnapshot> updatedFlipkartInventoryList = new InventoryClient().getClient().getFlipkartInventorySnapshot();
                        for(FlipkartInventorySnapshot updatedFlipkartInventory:updatedFlipkartInventoryList){
                                updatedFlipkartInventoryMap.put(updatedFlipkartInventory.getItem_id(),updatedFlipkartInventory.getAvailability());
                        }
                } catch (TException e) {
                        e.printStackTrace();
                }
                catch(Exception e){
                        List<FlipkartInventorySnapshot> updatedFlipkartInventoryList = null;
                        try {
                                updatedFlipkartInventoryList = new InventoryClient().getClient().getFlipkartInventorySnapshot();
                        } catch (TTransportException e1) {
                                e1.printStackTrace();
                        } catch (TException e1) {
                                e1.printStackTrace();
                        }
                        if(updatedFlipkartInventoryList != null){
                                for(FlipkartInventorySnapshot updatedFlipkartInventory:updatedFlipkartInventoryList){
                                        updatedFlipkartInventoryMap.put(updatedFlipkartInventory.getItem_id(),updatedFlipkartInventory.getAvailability());
                                }
                        }
                }


        }

        public static void main(String[] args) throws ClientProtocolException, TException{
                calculateinventory();
                DefaultHttpClient httpclient = new DefaultHttpClient();
                //httpclient = (DefaultHttpClient) WebClientWrapper.wrapClient(httpclient);
                //httpclient.getCredentialsProvider().setCredentials(
                //              new AuthScope("sandbox-api.flipkart.net", 443),
                //              new UsernamePasswordCredentials("og3yg5994bxbxxc1", "8a137068-417c-4e4f-ae95-9295ab938d88"));/// Test Server Access Keys
                //httpclient.getCredentialsProvider().setCredentials(
                //              new AuthScope("api.flipkart.net", 443),
                //              new UsernamePasswordCredentials("m2z93iskuj81qiid","0c7ab6a5-98c0-4cdc-8be3-72c591e0add4")); //Prod Server Access Keys

                HttpPost httppost = new HttpPost("https://api.flipkart.net/sellers/skus/listings/bulk"); // PROD

                String auth = "m2z93iskuj81qiid"+":"+"0c7ab6a5-98c0-4cdc-8be3-72c591e0add4";
                byte[] encodedAuth = Base64.encodeBase64(auth.getBytes(Charset.forName("US-ASCII")));
                String authHeader = "Basic " + new String(encodedAuth);
                httppost.setHeader(HttpHeaders.AUTHORIZATION, authHeader);
                //HttpPost httppost = new HttpPost("https://sandbox-api.flipkart.net/sellers/skus/listings/bulk"); // TEST
                StringBuffer jsonRequest = new StringBuffer();
                StringBuffer jsonStart = new StringBuffer();
                jsonStart = jsonStart.append("{\"listings\":[");
                StringBuffer jsonEnd = new StringBuffer();
                jsonEnd.append("]}");
                //System.out.println("JSON request  " + jsonRequest);
                LogisticsClient logisticsServiceClient;
                in.shop2020.logistics.LogisticsService.Client logisticsClient=null;
                LogisticsInfo logisticinfo = null;
                try {
                        logisticsServiceClient = new LogisticsClient();
                        logisticsClient = logisticsServiceClient.getClient();

                } catch (TTransportException e) {
                        e.printStackTrace();
                }
                long stock=0;
                int i=0;
                long available,reserve,heldforsource,totalheld,allocable,holdinventory,defaultinventory,actualstock = 0,orders,heldorders;
                float allocation;
                StringBuffer inventoryItems =new StringBuffer();
                StringBuffer backInStockItems =new StringBuffer();
                StringBuffer outOfStockItems =new StringBuffer();
                String tableHeader = "<html><table border=\"1\" align=\"center\"><tr>" 
                        + "<td><b>" + "Product Name" +"</b></td>"
                        + "<td><b>" + "SKU at Flipkart"+"</b></td>"
                        +"<td><b>" + "Item ID" + "</b></td>"
                        +"<td><b>" + "Inventory" + "</b></td>"
                        +"<td><b>" + "Orders Added to Inventory" + "</b></td>"
                        +"<td><b>" + "Sent Inventory" + "</b></td>"
                        +"<td><b>" + "Procurement SLA" + "</b></td>"
                        +"<td><b>" + "Orders on Hold" + "</b></td>"
                        +"</tr>";

                String tableFooter = "</table></html>";
                Item item;
                StringBuffer feedResponse=  new StringBuffer();
                List<FlipkartInventorySnapshot> inventorysnapshotlist = new ArrayList<FlipkartInventorySnapshot>();
                long timestamp = System.currentTimeMillis();
                for(Entry<Long, FlipkartInventoryItem> entry:flipkartItemsInventoryMap.entrySet()){
                        if(snapdealItemsMap.containsKey(entry.getKey()) && snapdealItemsMap.get(entry.getKey()).isIsListedOnSnapdeal()){
                                allocation = (float) 0.33;
                        }
                        else{
                                allocation = (float) 0.67;
                        }
                        actualstock=0;
                        orders=0;
                        stock=0;
                        heldorders=0;
                        available = entry.getValue().getAvailability();
                        reserve = entry.getValue().getReserve();
                        heldforsource = entry.getValue().getHeldForSource();
                        totalheld = entry.getValue().getTotalHeldInventory();
                        holdinventory = entry.getValue().getHoldInventory();
                        defaultinventory = entry.getValue().getDefaultInventory();
                        System.out.println("Item ID  " + entry.getKey());
                        System.out.println("Available " + available);
                        System.out.println("Reserve " + reserve);
                        System.out.println("Held For Source " + heldforsource);
                        System.out.println("Total Held " + totalheld);
                        System.out.println("General Hold " + holdinventory );
                        System.out.println("Default Inventory " + defaultinventory);
                        if(!entry.getValue().getStatus().equals(status.PAUSED)){
                                if(entry.getValue().getRisky()){
                                        if((available - reserve) < totalheld && totalheld!=0){
                                                stock = (long) Math.floor(((available - reserve)*heldforsource/totalheld));
                                        }
                                        else{
                                                allocable = available - reserve - totalheld - holdinventory;
                                                if(allocable < 0){
                                                        allocable = 0;
                                                }
                                                stock = Math.round(allocable*allocation) + heldforsource;
                                        }

                                }
                                else{
                                        allocable = available - reserve - totalheld;
                                        if(allocable < 0){
                                                allocable = 0;
                                        }
                                        if((allocable + heldforsource ) > defaultinventory){
                                                stock = Math.round(allocable*allocation) +  heldforsource;
                                        }
                                        else{
                                                stock = defaultinventory;
                                        }
                                }
                                System.out.println("Item ID " + entry.getKey()+" Stock "+stock +" Orders " + itemIdOrdersMap.get(entry.getKey()));
                                actualstock = stock;
                                if(stock >3){
                                        if(itemIdOrdersMap!=null && itemIdOrdersMap.containsKey(entry.getKey())){
                                                stock = stock + itemIdOrdersMap.get(entry.getKey());  
                                                orders = itemIdOrdersMap.get(entry.getKey());
                                        }
                                }
                                if(stock<0){
                                        stock =0;
                                }
                                else{
                                        if(stock > 25){
                                                stock=25;
                                        }
                                }
                        }
                        else{
                                stock =0;
                        }
                        /*
                        if(stock >3){
                                if(heldOrdersMap.containsKey(entry.getValue().getSkuAtflipkart())){
                                        stock = stock + heldOrdersMap.get(entry.getKey());  
                                        orders = orders + heldOrdersMap.get(entry.getKey());
                                }
                        }
                        
                        if(stock > 25){
                                stock=25;
                        }
                        */
                        try {
                                logisticinfo = logisticsClient.getLogisticsEstimation(entry.getValue().getId(),"110001",DeliveryType.COD);
                        } catch (LogisticsServiceException e) {
                                e.printStackTrace();
                                continue;
                        }
                        catch (TTransportException e) {
                                logisticsServiceClient = new LogisticsClient();
                                logisticsClient = logisticsServiceClient.getClient();
                        } 
                        System.out.println("sku at flipkart " + entry.getValue().getSkuAtflipkart());
                        System.out.println("shipping time " + logisticinfo.getShippingTime());
                        System.out.println("stock " + stock);
                        if(logisticinfo.getShippingTime() > 5 && stock > 0){
                                jsonRequest.append("{\"skuId\":"+"\""+entry.getValue().getSkuAtflipkart()+
                                                "\","+"\"attributeValues\""+":"+
                                                "{\"procurement_sla\""+":"+"\""+"5"+
                                                "\","+"\"stock_count\""+":"+"\""+"0"+"\""+"}}");
                        }
                        else{
                                jsonRequest.append("{\"skuId\":"+"\""+entry.getValue().getSkuAtflipkart()+
                                                "\","+"\"attributeValues\""+":"+
                                                "{\"procurement_sla\""+":"+"\""+logisticinfo.getShippingTime()+
                                                "\","+"\"stock_count\""+":"+"\""+stock+"\""+"}}");
                        }
                        FlipkartInventorySnapshot inventorySnapshot = new FlipkartInventorySnapshot();
                        inventorySnapshot.setItem_id(entry.getKey());
                        inventorySnapshot.setAvailability(stock);
                        if(stock > 0){
                                inventorySnapshot.setIs_oos(false);
                        }
                        else{
                                inventorySnapshot.setIs_oos(true);
                        }
                        if(heldOrdersMap.containsKey(entry.getValue().getSkuAtflipkart())){
                                inventorySnapshot.setHeldOrders(heldOrdersMap.get(entry.getValue().getSkuAtflipkart()));
                                heldorders = heldOrdersMap.get(entry.getValue().getSkuAtflipkart());
                        }
                        else{
                                inventorySnapshot.setHeldOrders(0);
                        }
                        inventorySnapshot.setCreatedOrders(orders);
                        inventorysnapshotlist.add(inventorySnapshot);
                        item = aliveItemsMap.get(entry.getValue().getId());
                        System.out.println("++++++++++++++++++Before checking > 5 SLA+++++++++++++++++++++++++++++");
                        if(logisticinfo.getShippingTime() > 5 && stock > 0){
                                System.out.println("Product : "+getProductName(item)+" Item ID : " + item.getId() + " Stock : " +  stock +" "+ "  SLA : " + logisticinfo.getShippingTime());
                                stock = 0;
                        }
                        System.out.println("++++++++++++++++++++After checking > 5 SLA++++++++++++++++++++++++");

                        if(!updatedFlipkartInventoryMap.containsKey(entry.getKey())){
                                inventoryItems.append("<tr>" 
                                                + "<td>" +getProductName(item)+"</td>"
                                                + "<td>" + entry.getValue().getSkuAtflipkart()+"</td>"
                                                +"<td>" + item.getId() + "</td>"
                                                +"<td>" + actualstock + "</td>"
                                                +"<td>" + orders + "</td>"
                                                +"<td>" + stock + "</td>"
                                                +"<td>" + logisticinfo.getShippingTime() + "</td>"
                                                +"<td>" + heldorders + "</td>"
                                                +"</tr>");
                        }
                        else if(updatedFlipkartInventoryMap.containsKey(entry.getKey())){
                        //else if(updatedFlipkartInventoryMap.containsKey(entry.getKey()) && updatedFlipkartInventoryMap.get(entry.getKey()) != stock){
                                inventoryItems.append("<tr>" 
                                                + "<td>" +getProductName(item)+"</td>"
                                                + "<td>" + entry.getValue().getSkuAtflipkart()+"</td>"
                                                +"<td>" + item.getId() + "</td>"
                                                +"<td>" + actualstock + "</td>"
                                                +"<td>" + orders + "</td>"
                                                +"<td>" + stock + "</td>"
                                                +"<td>" + logisticinfo.getShippingTime() + "</td>"
                                                +"<td>" + heldorders + "</td>"
                                                +"</tr>");
                        }
                        if(updatedFlipkartInventoryMap.containsKey(entry.getKey()) && updatedFlipkartInventoryMap.get(entry.getKey()) == 0 && stock!=0){
                                backInStockItems.append("<tr>" 
                                                + "<td>" +getProductName(item)+"</td>"
                                                + "<td>" + entry.getValue().getSkuAtflipkart()+"</td>"
                                                +"<td>" + item.getId() + "</td>"
                                                +"<td>" + actualstock + "</td>"
                                                +"<td>" + orders + "</td>"
                                                +"<td>" + stock + "</td>"
                                                +"<td>" + logisticinfo.getShippingTime() + "</td>"
                                                +"<td>" + heldorders + "</td>"
                                                +"</tr>");
                        }
                        if(updatedFlipkartInventoryMap.containsKey(entry.getKey()) && updatedFlipkartInventoryMap.get(entry.getKey()) != 0 && stock==0){
                                outOfStockItems.append("<tr>" 
                                                + "<td>" +getProductName(item)+"</td>"
                                                + "<td>" + entry.getValue().getSkuAtflipkart()+"</td>"
                                                +"<td>" + item.getId() + "</td>"
                                                +"<td>" + actualstock + "</td>"
                                                +"<td>" + orders + "</td>"
                                                +"<td>" + stock + "</td>"
                                                +"<td>" + logisticinfo.getShippingTime() + "</td>"
                                                +"<td>" + heldorders + "</td>"
                                                +"</tr>");
                        }
                        i++;
                        if(flipkartItemsInventoryMap.entrySet().size()!=1 && (i!=flipkartItemsInventoryMap.entrySet().size()) ){
                                if(i%10!=0){
                                        jsonRequest.append(",");
                                }
                        }
                        if(i%10==0 || i==flipkartItemsInventoryMap.entrySet().size()){
                                StringEntity input = null;
                                try {
                                        input = new StringEntity(jsonStart+jsonRequest.toString()+jsonEnd);
                                        System.out.println("Json input " + jsonStart+jsonRequest.toString()+jsonEnd);
                                        jsonRequest = new StringBuffer();
                                } catch (UnsupportedEncodingException e) {
                                        e.printStackTrace();
                                }
                                input.setContentType("application/json");

                                httppost.setEntity(input);
                                HttpResponse response = null;
                                try {
                                        System.out.println("Before send " );
                                        response = httpclient.execute(httppost);
                                        System.out.println("After send " );
                                } catch (IOException e) {
                                        e.printStackTrace();
                                }
                                BufferedReader rd = null;
                                try {
                                        rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
                                        /*if(!rd.readLine().equalsIgnoreCase("{\"status\":\"success\"}")){
                                                System.out.println("Before send " );
                                                httpclient = new DefaultHttpClient();
                                                response = httpclient.execute(httppost);
                                                rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
                                        }*/
                                } catch (IllegalStateException e) {
                                        e.printStackTrace();
                                } catch (IOException e) {
                                        e.printStackTrace();
                                }
                                String line;
                                in.shop2020.model.v1.inventory.InventoryService.Client inventoryServiceClient;
                                try {
                                        while ((line = rd.readLine()) != null) {
                                                System.out.println("Response " + line);
                                                if(line.equalsIgnoreCase("{\"status\":\"success\"}")){
                                                        inventoryServiceClient = new InventoryClient().getClient();
                                                        try{
                                                                inventoryServiceClient.addOrUpdateFlipkartInventorySnapshot(inventorysnapshotlist,timestamp);
                                                        }
                                                        catch(TTransportException e){
                                                                inventoryServiceClient = new InventoryClient().getClient();
                                                                inventoryServiceClient.addOrUpdateFlipkartInventorySnapshot(inventorysnapshotlist,timestamp);
                                                        }
                                                        inventorysnapshotlist = new ArrayList<FlipkartInventorySnapshot>();
                                                }
                                                else{
                                                        feedResponse.append(line);
                                                }

                                        }
                                } catch (IOException e) {
                                        e.printStackTrace();
                                }
                        }
                }
                System.out.println("Before sending email");
                if(feedResponse.toString().length()>0){
                        try {
                                mailer.sendSSLMessage(sendTo, "Flipkart Inventory could not be updated " + sdf.format(System.currentTimeMillis()), feedResponse.toString(), emailFromAddress, password,new ArrayList<File>());
                        } catch (Exception e) {
                                emailFromAddress = "build-staging@shop2020.in"; 
                                password = "shop2020";
                                try {
                                        mailer.sendSSLMessage(sendTo, "Flipkart Inventory could not be updated " + sdf.format(System.currentTimeMillis()), feedResponse.toString(), emailFromAddress, password,new ArrayList<File>());
                                } catch (MessagingException e1) {
                                        e1.printStackTrace();
                                }
                                e.printStackTrace();
                        }
                }
                else{
                        try {
                                mailer.sendSSLMessage(sendTo, "Flipkart Inventory updated successfully " + sdf.format(System.currentTimeMillis()), feedResponse.toString(), emailFromAddress, password,new ArrayList<File>());
                        } catch (MessagingException e) {
                                emailFromAddress = "build-staging@shop2020.in"; 
                                password = "shop2020";
                                try {
                                        mailer.sendSSLMessage(sendTo, "Flipkart Inventory updated successfully " + sdf.format(System.currentTimeMillis()), feedResponse.toString(), emailFromAddress, password,new ArrayList<File>());
                                } catch (MessagingException e1) {
                                        e1.printStackTrace();
                                }
                                e.printStackTrace();
                        }
                }

                String text;
                if(inventoryItems.toString().length()>0){
                        text = tableHeader+inventoryItems.toString()+tableFooter;
                        try {
                                mailer.sendSSLMessage(sendTo,"Flipkart Inventory Sent Details " + sdf.format(System.currentTimeMillis()), emailFromAddress, password, text);
                        } catch (MessagingException e) {
                                e.printStackTrace();
                        }
                }
                if(backInStockItems.toString().length()>0){
                        try {
                                text = tableHeader+backInStockItems.toString()+tableFooter;
                                mailer.sendSSLMessage(sendTo,"Flipkart Inventory Back in Stock " + sdf.format(System.currentTimeMillis()), emailFromAddress, password, text);
                        } catch (MessagingException e) {
                                e.printStackTrace();
                        }

                }
                if(outOfStockItems.toString().length()>0){
                        try {
                                text = tableHeader+outOfStockItems.toString()+tableFooter;
                                mailer.sendSSLMessage(sendTo,"Flipkart Inventory Out of Stock " + sdf.format(System.currentTimeMillis()), emailFromAddress, password, text);
                        } catch (MessagingException e) {
                                e.printStackTrace();
                        }

                }
        }

        private static void calculateinventory(){
                CatalogClient catalogServiceClient = null;
                Map<Long,ItemInventory> availability= new HashMap<Long,ItemInventory>();
                try {
                        catalogServiceClient = new CatalogClient("catalog_service_server_host_amazon","catalog_service_server_port");
                } catch (TTransportException e) {
                        e.printStackTrace();
                }
                in.shop2020.model.v1.catalog.CatalogService.Client catalogClient = catalogServiceClient.getClient();
                try {
                        List<Item> aliveItems = catalogClient.getAllAliveItems();
                        for(in.shop2020.model.v1.catalog.Item thriftItem:aliveItems){
                                aliveItemsMap.put(thriftItem.getId(), thriftItem);

                        }
                        InventoryClient inventoryServiceClient = new InventoryClient();
                        try {
                                inventoryServiceClient = new InventoryClient();
                        } catch (TTransportException e) {
                                e.printStackTrace();
                        }
                        in.shop2020.model.v1.inventory.InventoryService.Client inventoryClient = inventoryServiceClient.getClient();
                        List<in.shop2020.model.v1.inventory.IgnoredInventoryUpdateItems> ignoreItems = inventoryClient.getIgnoredWarehouseidsAndItemids();
                        availability = inventoryClient.getInventorySnapshot(0);
                        List<Warehouse> allwarehouses = inventoryClient.getWarehouses(null,null,0,0,0);
                        Map<Long,Warehouse> allWarehousesMap = new HashMap<Long,Warehouse>();
                        for(Warehouse warehouse:allwarehouses){
                                allWarehousesMap.put(warehouse.getId(),warehouse);
                        }
                        List<Warehouse> warehouses = inventoryClient.getWarehouses(WarehouseType.OURS_THIRDPARTY,null,0,0,0);
                        List<Warehouse> ours_warehouses = inventoryClient.getWarehouses(WarehouseType.OURS, InventoryType.GOOD, 0, 0, 0);
                        List<Long> thirdpartywarehouseids = new ArrayList<Long>();
                        List<Long> oursGoodWarehouse = new ArrayList<Long>();
                        for(Warehouse warehouse:warehouses){
                                thirdpartywarehouseids.add(warehouse.getId());
                        }
                        for (Warehouse warehouse:ours_warehouses){
                                oursGoodWarehouse.add(warehouse.getId());
                        }
                        long available=0;
                        long reserve=0;
                        long total_warehouse_held=0;
                        long heldForSource=0;
                        long total_held=0;
                        double nlc=0;
                        double maxnlc=0;
                        Item thriftItem;
                        for(FlipkartItem flipkartItem:flipkartInventoryItems){
                                if(aliveItemsMap.get(flipkartItem.getItem_id()) != null){
                                        thriftItem = aliveItemsMap.get(flipkartItem.getItem_id());      
                                }
                                else{
                                        continue;
                                }
                                available=0;
                                reserve=0;
                                total_warehouse_held=0;
                                heldForSource=0;
                                total_held=0;
                                nlc=0;
                                List<Warehouse> vendor_warehouses=null;
                                FlipkartInventoryItem item;
                                if(availability.get(thriftItem.getId())!=null){ 
                                        ItemInventory iteminventory = availability.get(thriftItem.getId());
                                        Map<Long,Long> itemavailability = new HashMap<Long,Long>();
                                        itemavailability = iteminventory.getAvailability();
                                        if (thriftItem.isIsWarehousePreferenceSticky() && thriftItem.getPreferredVendor()!=0){
                                                //System.out.println("Item id "+thriftItem.getId()+".Found prefered vendor and warehouse is marked sticky (Calculating availability)"+thriftItem.getPreferredVendor());                                         
                                                vendor_warehouses = inventoryClient.getWarehouses(WarehouseType.THIRD_PARTY,InventoryType.GOOD , thriftItem.getPreferredVendor(), 0, 0);
                                                vendor_warehouses.addAll(ours_warehouses);
                                                for (Warehouse warehouse:vendor_warehouses){
                                                        if(warehouse.getBillingWarehouseId()!=7){
                                                                System.out.println("warehouse id --"+ warehouse.getId());
                                                                if(warehouse.getLogisticsLocation().equals(WarehouseLocation.Delhi) && warehouse.getWarehouseType().equals(WarehouseType.THIRD_PARTY) && warehouse.getVendor().getId()!=1){

                                                                }
                                                                else{
                                                                        continue;
                                                                }
                                                        }
                                                        in.shop2020.model.v1.inventory.IgnoredInventoryUpdateItems ignoredItem = new in.shop2020.model.v1.inventory.IgnoredInventoryUpdateItems();
                                                        ignoredItem.setItemId(thriftItem.getId());
                                                        ignoredItem.setWarehouseId(warehouse.getId());
                                                        if (itemavailability.get(warehouse.getId())!=null && !thirdpartywarehouseids.contains(warehouse.getId()) && !ignoreItems.contains(ignoredItem)){
                                                                try{
                                                                        nlc = inventoryClient.getNlcForWarehouse(warehouse.getId(),thriftItem.getId());
                                                                }
                                                                catch(TTransportException e){
                                                                        inventoryClient = inventoryServiceClient.getClient(); 
                                                                        nlc = inventoryClient.getNlcForWarehouse(warehouse.getId(),thriftItem.getId());
                                                                }
                                                                maxnlc = flipkartItem.getMaxNlc();

                                                                //System.out.println("itemId:" + thriftItem.getId() + "\tmaxnlc: " + maxnlc + "\tnlc:" + nlc + "\twid:" + warehouse.getId() );
                                                                if(nlc !=0 && (maxnlc >= nlc)){
                                                                        total_warehouse_held = inventoryClient.getHoldInventoryDetailForItemForWarehouseIdExceptSource(thriftItem.getId(), warehouse.getId(), 0);
                                                                        heldForSource = heldForSource + total_warehouse_held - inventoryClient.getHoldInventoryDetailForItemForWarehouseIdExceptSource(thriftItem.getId(), warehouse.getId(), 8);
                                                                        available = available + itemavailability.get(warehouse.getId());
                                                                        total_held = total_held + total_warehouse_held; 
                                                                        //System.out.println("itemId:" + thriftItem.getId() + "\ttotal_held: " + total_held + "\theldForSource:" + heldForSource + "\tavailable:" + available);
                                                                }
                                                                else if(maxnlc==0){
                                                                        total_warehouse_held = inventoryClient.getHoldInventoryDetailForItemForWarehouseIdExceptSource(thriftItem.getId(), warehouse.getId(), 0);
                                                                        heldForSource = heldForSource + total_warehouse_held - inventoryClient.getHoldInventoryDetailForItemForWarehouseIdExceptSource(thriftItem.getId(), warehouse.getId(), 8);
                                                                        available = available + itemavailability.get(warehouse.getId());
                                                                        total_held = total_held + total_warehouse_held;
                                                                        //System.out.println("itemId:" + thriftItem.getId() + "\ttotal_held: " + total_held + "\theldForSource:" + heldForSource + "\tavailable:" + available);
                                                                }
                                                        }
                                                }
                                        }
                                        else{
                                                for (Map.Entry<Long,Long> entry :  itemavailability.entrySet()) {
                                                        if(allWarehousesMap.get(entry.getKey()).getBillingWarehouseId()!=7){
                                                                if(allWarehousesMap.get(entry.getKey()).getLogisticsLocation().equals(WarehouseLocation.Delhi) && allWarehousesMap.get(entry.getKey()).getWarehouseType().equals(WarehouseType.THIRD_PARTY) && allWarehousesMap.get(entry.getKey()).getVendor().getId()!=1){

                                                                }
                                                                else{
                                                                        continue;
                                                                }
                                                        }
                                                        in.shop2020.model.v1.inventory.IgnoredInventoryUpdateItems ignoredItem = new in.shop2020.model.v1.inventory.IgnoredInventoryUpdateItems();
                                                        ignoredItem.setItemId(thriftItem.getId());
                                                        ignoredItem.setWarehouseId(entry.getKey());
                                                        if(!thirdpartywarehouseids.contains(entry.getKey()) && !ignoreItems.contains(ignoredItem)){

                                                                nlc = inventoryClient.getNlcForWarehouse(entry.getKey(),thriftItem.getId());
                                                                maxnlc = flipkartItem.getMaxNlc();
                                                                //System.out.println("itemId:" + thriftItem.getId() + "\tmaxnlc: " + maxnlc + "\tnlc:" + nlc + "\twid:" + entry.getKey() );
                                                                if(nlc !=0 && (maxnlc >= nlc)){
                                                                        total_warehouse_held = inventoryClient.getHoldInventoryDetailForItemForWarehouseIdExceptSource(thriftItem.getId(), entry.getKey(), 0);
                                                                        heldForSource = heldForSource + total_warehouse_held - inventoryClient.getHoldInventoryDetailForItemForWarehouseIdExceptSource(thriftItem.getId(), entry.getKey(), 8);
                                                                        available =  available + entry.getValue();
                                                                        total_held = total_held + total_warehouse_held;
                                                                        //System.out.println("itemId:" + thriftItem.getId() + "\ttotal_held: " + total_held + "\theldForSource:" + heldForSource + "\tavailable:" + available);
                                                                }
                                                                else if(maxnlc==0){
                                                                        total_warehouse_held = inventoryClient.getHoldInventoryDetailForItemForWarehouseIdExceptSource(thriftItem.getId(), entry.getKey(), 0);
                                                                        heldForSource = heldForSource + total_warehouse_held - inventoryClient.getHoldInventoryDetailForItemForWarehouseIdExceptSource(thriftItem.getId(), entry.getKey(), 8);
                                                                        available = available + itemavailability.get(entry.getKey());
                                                                        total_held = total_held + total_warehouse_held;
                                                                        //System.out.println("itemId:" + thriftItem.getId() + "\ttotal_held: " + total_held + "\theldForSource:" + heldForSource + "\tavailable:" + available);
                                                                }

                                                        }
                                                }
                                        }
                                        Map<Long,Long> itemreserve = new HashMap<Long,Long>();
                                        itemreserve = iteminventory.getReserved();
                                        if (thriftItem.isIsWarehousePreferenceSticky() && thriftItem.getPreferredVendor()!=0){
                                                //System.out.println("Item id "+thriftItem.getId()+".Found prefered vendor and warehouse is marked sticky (Calculating Reserve)"+thriftItem.getPreferredVendor());
                                                for (Warehouse warehouse:vendor_warehouses){
                                                        if(warehouse.getBillingWarehouseId()!=7){
                                                                if(warehouse.getLogisticsLocation().equals(WarehouseLocation.Delhi) && warehouse.getWarehouseType().equals(WarehouseType.THIRD_PARTY) && warehouse.getVendor().getId()!=1){

                                                                }
                                                                else{
                                                                        continue;
                                                                }
                                                        }
                                                        in.shop2020.model.v1.inventory.IgnoredInventoryUpdateItems ignoredItem = new in.shop2020.model.v1.inventory.IgnoredInventoryUpdateItems();
                                                        ignoredItem.setItemId(thriftItem.getId());
                                                        ignoredItem.setWarehouseId(warehouse.getId());
                                                        if (itemreserve.get(warehouse.getId())!=null && !thirdpartywarehouseids.contains(warehouse.getId()) && !ignoreItems.contains(warehouse.getId())){
                                                                nlc = inventoryClient.getNlcForWarehouse(warehouse.getId(),thriftItem.getId());
                                                                maxnlc = flipkartItem.getMaxNlc();
                                                                //System.out.println("itemId:" + thriftItem.getId() + "\tmaxnlc: " + maxnlc + "\tnlc:" + nlc + "\twid:" + warehouse.getId() );
                                                                if(nlc !=0 && (maxnlc >= nlc)){
                                                                        reserve = reserve + itemreserve.get(warehouse.getId());
                                                                        //System.out.println("itemId:" + thriftItem.getId() + "\ttotal_held: " + total_held + "\theldForSource:" + heldForSource + "\treserve:" + reserve);
                                                                }
                                                                else if(maxnlc==0){
                                                                        reserve = reserve + itemreserve.get(warehouse.getId());
                                                                        //System.out.println("itemId:" + thriftItem.getId() + "\ttotal_held: " + total_held + "\theldForSource:" + heldForSource + "\treserve:" + reserve);
                                                                }

                                                        }
                                                }
                                        }else{
                                                for (Map.Entry<Long,Long> entry : itemreserve.entrySet()) {
                                                        if(allWarehousesMap.get(entry.getKey()).getBillingWarehouseId()!=7){
                                                                if(allWarehousesMap.get(entry.getKey()).getLogisticsLocation().equals(WarehouseLocation.Delhi) && allWarehousesMap.get(entry.getKey()).getWarehouseType().equals(WarehouseType.THIRD_PARTY) && allWarehousesMap.get(entry.getKey()).getVendor().getId()!=1){

                                                                }
                                                                else{
                                                                        continue;
                                                                }
                                                        }
                                                        in.shop2020.model.v1.inventory.IgnoredInventoryUpdateItems ignoredItem = new in.shop2020.model.v1.inventory.IgnoredInventoryUpdateItems();
                                                        ignoredItem.setItemId(thriftItem.getId());
                                                        ignoredItem.setWarehouseId(entry.getKey());
                                                        if(!thirdpartywarehouseids.contains(entry.getKey()) && !ignoreItems.contains(ignoredItem)){
                                                                nlc = inventoryClient.getNlcForWarehouse(entry.getKey(),thriftItem.getId());
                                                                maxnlc = flipkartItem.getMaxNlc();
                                                                //System.out.println("itemId:" + thriftItem.getId() + "\tmaxnlc: " + maxnlc + "\tnlc:" + nlc + "\twid:" + entry.getKey() );
                                                                if(nlc !=0 && (maxnlc >= nlc)){
                                                                        reserve =  reserve + entry.getValue();
                                                                        //System.out.println("itemId:" + thriftItem.getId() + "\ttotal_held: " + total_held + "\theldForSource:" + heldForSource + "\treserve:" + reserve);
                                                                }
                                                                else if(maxnlc==0){
                                                                        reserve =  reserve + entry.getValue();
                                                                        //System.out.println("itemId:" + thriftItem.getId() + "\ttotal_held: " + total_held + "\theldForSource:" + heldForSource + "\treserve:" + reserve);
                                                                }

                                                        }

                                                        else{
                                                                //System.out.println("skipping inventory for warehouse id " + entry.getKey());
                                                        }
                                                }
                                        }
                                        item= new FlipkartInventoryItem(thriftItem.getId(),available,reserve,heldForSource,thriftItem.getHoldInventory(),thriftItem.getDefaultInventory(),total_held,thriftItem.isRisky(),thriftItem.getItemStatus(),flipkartItem.getSkuAtFlipkart());
                                        //System.out.println("itemId:" + thriftItem.getId() + "\tavailable: " + available + "\treserve" + reserve + "\theldForSource:" + heldForSource + "\twebsite_hold:" + thriftItem.getHoldInventory() + "\tdefault_inv:" +thriftItem.getDefaultInventory());
                                }
                                else{
                                        item = new FlipkartInventoryItem(thriftItem.getId(),0,0,0,thriftItem.getHoldInventory(),thriftItem.getDefaultInventory(),0,thriftItem.isRisky(),thriftItem.getItemStatus(),flipkartItem.getSkuAtFlipkart());
                                        //System.out.println("itemId:" + thriftItem.getId() + "\tavailable: " + available + "\treserve" + reserve + "\theldForSource:" + heldForSource + "\twebsite_hold:" + thriftItem.getHoldInventory() + "\tdefault_inv:" +thriftItem.getDefaultInventory());
                                }

                                //System.out.println(" Item details are " + thriftItem.getId() +" " + available + " " + reserve + " " + thriftItem.getHoldInventory() + " "+ thriftItem.getDefaultInventory() + " " + thriftItem.isRisky());
                                //System.out.println("+++++++++++++++++++++++");
                                flipkartItemsInventoryMap.put(thriftItem.getId(),item);

                        }

                } catch (TException e) {
                        e.printStackTrace();
                }
        }

        static List<String> FetchOrders() throws ClientProtocolException, IOException{
                HttpClient client = new DefaultHttpClient();
                HttpPost post = new HttpPost("https://seller.flipkart.com/login");
                BufferedReader rd= null;
                HttpGet get_new;
        get_new = new HttpGet("https://seller.flipkart.com/");
        //get_new.addHeader("Cookie","T=TI142243429971151766737695736916906773632085455992575334808400001779; s_ch_list=%5B%5B'Direct%2528No%2520referrer%2529'%2C'1422434304428'%5D%2C%5B'Direct%2528No%2520referrer%2529'%2C'1422439339599'%5D%2C%5B'Direct%2528No%2520referrer%2529'%2C'1422444115782'%5D%5D; s_cc=true; s_sq=%5B%5BB%5D%5D; __utma=19769839.2084440743.1422434306.1422439341.1422440033.3; __utmc=19769839; __utmz=19769839.1422434306.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); SN=2.VIE53FF842027942E4A3ACBDFC2142A823.SIAB88E74FE6634FE09DA3A567CADE4280.VS142244411612433384132.1422444161; VID=2.VIE53FF842027942E4A3ACBDFC2142A823.1422444161.VS142244411612433384132; NSID=2.SIAB88E74FE6634FE09DA3A567CADE4280.1422444161.VIE53FF842027942E4A3ACBDFC2142A823; __sonar=1342820701753316857; s_ppv=49; km_lv=x; connect.sid=s%3A3CHKFoRqQ33Skpnid1MNW0pj.sIzVoywmYRckv3f0H%2FJVBMtZvHVpTyVmN0U5hGSvvVU; _gat=1; __utmt=1; is_login=true; sellerId=m2z93iskuj81qiid; __utma=143439159.180071142.1422513856.1422513856.1422513856.1; __utmb=143439159.8.10.1422513856; __utmc=143439159; __utmz=143439159.1422513856.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); _ga=GA1.2.180071142.1422513856; kvcd=1422515268297; km_ai=m2z93iskuj81qiid; km_ni=m2z93iskuj81qiid; km_vs=1; km_uq=");
        //get_new.addHeader("Cookie","T=TI142243429971151766737695736916906773632085455992575334808400001779; __sonar=1342820701753316857; km_lv=x; connect.sid=s%3AmqQsgsCc3HYTschY1Bm7mBUd.PNr%2Ft5nv17ZcyjSpHqnw5CdqqYpqRRLzsqfuzS2OGQw; s_ch_list=%5B%5B'Direct%2528No%2520referrer%2529'%2C'1422434304428'%5D%2C%5B'Direct%2528No%2520referrer%2529'%2C'1422439339599'%5D%2C%5B'Direct%2528No%2520referrer%2529'%2C'1422444115782'%5D%2C%5B'Direct%2528No%2520referrer%2529'%2C'1422524448936'%5D%5D; s_cc=true; s_sq=%5B%5BB%5D%5D; SN=2.VIE53FF842027942E4A3ACBDFC2142A823.SIAB88E74FE6634FE09DA3A567CADE4280.VS142252444097998631891.1422525646; VID=2.VIE53FF842027942E4A3ACBDFC2142A823.1422525646.VS142252444097998631891; NSID=2.SIAB88E74FE6634FE09DA3A567CADE4280.1422525646.VIE53FF842027942E4A3ACBDFC2142A823; s_ppv=31; __utma=19769839.2084440743.1422434306.1422524440.1422524448.5; __utmb=19769839.8.9.1422531962955; __utmc=19769839; __utmz=19769839.1422434306.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utmt=1; is_login=true; sellerId=m2z93iskuj81qiid; __utma=143439159.180071142.1422513856.1422516648.1422531968.3; __utmb=143439159.2.10.1422531968; __utmc=143439159; __utmz=143439159.1422513856.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); _ga=GA1.2.180071142.1422513856; _gat=1; kvcd=1422532102602; km_ai=m2z93iskuj81qiid; km_ni=m2z93iskuj81qiid; km_vs=1; km_uq=");
        get_new.addHeader("Host","seller.flipkart.com");
        get_new.addHeader("User-agent", "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.63 Safari/537.31");
        get_new.addHeader("Connection","keep-alive");
        //get_new.setHeader("Cookie", cookies);
        HttpResponse response = client.execute(get_new);
        rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
        String line = "";
        while ((line = rd.readLine()) != null) {
            System.out.println(line);
        }
        cookies = response.getFirstHeader("Set-Cookie") == null ? "" : 
            response.getFirstHeader("Set-Cookie").getValue();
                List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
                nameValuePairs.add(new BasicNameValuePair("authName",
                "flipkart"));
                nameValuePairs.add(new BasicNameValuePair("username",
                "flipkart-support@saholic.com"));
                nameValuePairs.add(new BasicNameValuePair("password",
                "bestmobiledeals2010"));
                post.setEntity(new UrlEncodedFormEntity(nameValuePairs,"utf-8"));
                post.addHeader("Cookie",cookies);
                post.addHeader("User-agent", "Mozilla/4.0");
                post.addHeader("Referer", "seller.flipkart.com");
                response = client.execute(post);
                cookies = response.getFirstHeader("Set-Cookie") == null ? "" : 
            response.getFirstHeader("Set-Cookie").getValue();
        System.out.println("cookies "+cookies);
                rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
                line = "";
                Gson gson;
                List<Order> orders = new ArrayList<Order>(); 
                OrderItems new_orders;
                
                int i=1;
                while ((line = rd.readLine()) != null) {
                        System.out.println(line);
                }
                
                while(true){
                        get_new = new HttpGet("https://seller.flipkart.com/order_management/new_order_items?filterByFullfillment=non_fa&next_page="+i+"&page_size=20&sellerId=m2z93iskuj81qiid&sortBy=order_date");
                        get_new.addHeader("Cookie",cookies+"; __gads=ID=dfe0374cf04d1576:T=1381304511:S=ALNI_Ma2TpDrlF9_amkoqp3MOYJBaFAOUg; km_lv=x; T=TI138130450866706710769873257251497444628820234222703981199700765991; __CG=u%3A6208250296506778000%2Cs%3A2098853214%2Ct%3A1419058011787%2Cc%3A1%2Ck%3Awww.flipkart.com/24/24/76%2Cf%3A0%2Ci%3A1; S=d1t13CXEVURPbRn%2FTAlMG9iwwwBWoS%2FUUixPxuJkY6W8pdfcWEzMG07x3EBPSRtlGHPdclpSYHdyFGacGJ0K01qpxtQ%3D%3D; __sonar=6631097455123118581; __utma=19769839.1156779613.1390806906.1432813861.1435573112.27; __utmc=19769839; __utmz=19769839.1435573112.27.15.utmcsr=zimbrasmtp.com|utmccn=(referral)|utmcmd=referral|utmcct=/ch300-3.htm; s_ch_list=%5B%5B'Affiliates'%2C'1435573117633'%5D%5D; s_cc=true; s_ppv=0; s_sq=%5B%5BB%5D%5D; SN=2.VIB4C4C187B63B4436AAE42944FD9BE1C9.SI2B008083CC2145FFB103D6E76CDB343C.VS143557310149768094467.1435573140; VID=2.VIB4C4C187B63B4436AAE42944FD9BE1C9.1435573140.VS143557310149768094467; NSID=2.SI2B008083CC2145FFB103D6E76CDB343C.1435573140.VIB4C4C187B63B4436AAE42944FD9BE1C9; sellerId=m2z93iskuj81qiid; _ga=GA1.2.1156779613.1390806906; kvcd=1435740168445; km_vs=1; km_ai=m2z93iskuj81qiid; km_ni=m2z93iskuj81qiid; _gat=1; km_uq=; __utma=143439159.1156779613.1390806906.1435737045.1435740037.94; __utmb=143439159.9.9.1435740156534; __utmc=143439159; __utmz=143439159.1390806906.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); _mkto_trk=id:021-QVV-957&token:_mch-flipkart.com-1434970574990-64308");
                        response = client.execute(get_new);
                        rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
                        line = "";
                        gson = new Gson();
                        new_orders = (OrderItems) gson.fromJson(rd, OrderItems.class);
                        if(new_orders.getItems().size()>0){
                                orders.addAll(new_orders.getItems());
                        }
                        else{
                                break;
                        }
                        i++;
                }
                
                List<String> orderIdList = new ArrayList<String>();
                Long heldOrders = 0L;
                for(Order order:orders){
                        System.out.println("Order  " + order.getOrderId() +" "+order.getOrderItemId() + " : "+ order.getStatus() + " "
                                        + order.getStatusLabel() + " " + order.getConfirmByDate() + " "+ order.getTrackingId());
                        orderIdList.add(order.getOrderId());
                        if(order.getStatus().equalsIgnoreCase("on_hold")){
                                if(heldOrdersMap.containsKey(String.valueOf(order.getSku()))){
                                        heldOrders = heldOrdersMap.get(String.valueOf(order.getSku()))+order.getQuantity();
                                        heldOrdersMap.put(String.valueOf(order.getSku()),heldOrders);
                                        System.out.println("Item ID " + order.getSku() + " Held Orders " + heldOrdersMap.get(String.valueOf(order.getSku())));
                                }
                                else{
                                        heldOrders = (long) order.getQuantity();
                                        heldOrdersMap.put(String.valueOf(order.getSku()),heldOrders);
                                        System.out.println("Item ID " + order.getSku() + " Held Orders " + heldOrdersMap.get(String.valueOf(order.getSku())));
                                }
                        }
                }
                return orderIdList; 
        }
        static String getProductName(Item item){
                return getName(item.getBrand())+" " + getName(item.getModelName())+" " + getName(item.getModelNumber())+" " + getName(item.getColor()); 

        }
        static String getName(String name){
                if(name==null || name.length()==0){
                        return "";
                }
                else{
                        return name;
                }
        }
}