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 KeysHttpPost httppost = new HttpPost("https://api.flipkart.net/sellers/skus/listings/bulk"); // PRODString 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"); // TESTStringBuffer 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;}}}