Subversion Repositories SmartDukaan

Rev

Rev 19965 | Rev 19976 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 19965 Rev 19973
Line 1... Line 1...
1
package in.shop2020.hotspot.dashbaord.server;
1
package in.shop2020.hotspot.dashbaord.server;
2
 
2
 
3
import in.shop2020.config.ConfigException;
-
 
4
import in.shop2020.logistics.DeliveryType;
-
 
5
import in.shop2020.logistics.LogisticsServiceException;
-
 
6
import in.shop2020.logistics.PickUpType;
-
 
7
import in.shop2020.logistics.PickupStore;
-
 
8
import in.shop2020.logistics.Provider;
-
 
9
import in.shop2020.logistics.ProviderDetails;
-
 
10
import in.shop2020.model.v1.catalog.CatalogService;
-
 
11
import in.shop2020.model.v1.catalog.CatalogServiceException;
-
 
12
import in.shop2020.model.v1.catalog.Item;
-
 
13
import in.shop2020.model.v1.inventory.BillingType;
-
 
14
import in.shop2020.model.v1.inventory.InventoryServiceException;
-
 
15
import in.shop2020.model.v1.inventory.Warehouse;
-
 
16
import in.shop2020.model.v1.order.AmazonOrder;
-
 
17
import in.shop2020.model.v1.order.Attribute;
-
 
18
import in.shop2020.model.v1.order.EbayOrder;
-
 
19
import in.shop2020.model.v1.order.HsOrder;
-
 
20
import in.shop2020.model.v1.order.LineItem;
-
 
21
import in.shop2020.model.v1.order.Order;
-
 
22
import in.shop2020.model.v1.order.OrderSource;
-
 
23
import in.shop2020.model.v1.order.OrderStatus;
-
 
24
import in.shop2020.model.v1.order.OrderType;
-
 
25
import in.shop2020.model.v1.order.ProductCondition;
-
 
26
import in.shop2020.model.v1.order.SnapdealOrder;
-
 
27
import in.shop2020.model.v1.order.FlipkartOrder;
-
 
28
import in.shop2020.model.v1.order.TaxType;
-
 
29
import in.shop2020.model.v1.user.Address;
-
 
30
import in.shop2020.thrift.clients.CatalogClient;
-
 
31
import in.shop2020.thrift.clients.LogisticsClient;
-
 
32
import in.shop2020.thrift.clients.TransactionClient;
-
 
33
import in.shop2020.thrift.clients.config.ConfigClient;
-
 
34
import in.shop2020.thrift.clients.InventoryClient;
-
 
35
import in.shop2020.thrift.clients.UserClient;
-
 
36
 
-
 
37
import java.awt.image.BufferedImage;
3
import java.awt.image.BufferedImage;
38
import java.io.ByteArrayOutputStream;
4
import java.io.ByteArrayOutputStream;
39
import java.io.File;
5
import java.io.File;
40
import java.io.FileOutputStream;
6
import java.io.FileOutputStream;
41
import java.io.IOException;
7
import java.io.IOException;
42
import java.io.OutputStream;
8
import java.io.OutputStream;
43
import java.text.DateFormat;
9
import java.text.DateFormat;
44
import java.text.DecimalFormat;
10
import java.text.DecimalFormat;
45
import java.text.SimpleDateFormat;
-
 
46
import java.util.ArrayList;
11
import java.util.ArrayList;
47
import java.util.Date;
12
import java.util.Date;
48
import java.util.HashMap;
13
import java.util.HashMap;
49
import java.util.List;
14
import java.util.List;
50
import java.util.Locale;
15
import java.util.Locale;
Line 64... Line 29...
64
import org.krysalis.barcode4j.tools.UnitConv;
29
import org.krysalis.barcode4j.tools.UnitConv;
65
import org.slf4j.Logger;
30
import org.slf4j.Logger;
66
import org.slf4j.LoggerFactory;
31
import org.slf4j.LoggerFactory;
67
 
32
 
68
import com.ibm.icu.text.RuleBasedNumberFormat;
33
import com.ibm.icu.text.RuleBasedNumberFormat;
69
 
-
 
70
import com.itextpdf.text.Document;
34
import com.itextpdf.text.Document;
71
import com.itextpdf.text.Element;
35
import com.itextpdf.text.Element;
72
import com.itextpdf.text.Font;
36
import com.itextpdf.text.Font;
-
 
37
import com.itextpdf.text.Font.FontFamily;
73
import com.itextpdf.text.FontFactory;
38
import com.itextpdf.text.FontFactory;
74
import com.itextpdf.text.FontFactoryImp;
39
import com.itextpdf.text.FontFactoryImp;
75
import com.itextpdf.text.Image;
40
import com.itextpdf.text.Image;
76
import com.itextpdf.text.PageSize;
-
 
77
import com.itextpdf.text.Paragraph;
41
import com.itextpdf.text.Paragraph;
78
import com.itextpdf.text.Phrase;
42
import com.itextpdf.text.Phrase;
79
import com.itextpdf.text.Rectangle;
43
import com.itextpdf.text.Rectangle;
80
import com.itextpdf.text.Font.FontFamily;
-
 
81
import com.itextpdf.text.pdf.Barcode128;
-
 
82
import com.itextpdf.text.pdf.BaseFont;
44
import com.itextpdf.text.pdf.BaseFont;
83
import com.itextpdf.text.pdf.PdfContentByte;
-
 
84
import com.itextpdf.text.pdf.PdfPCell;
45
import com.itextpdf.text.pdf.PdfPCell;
85
import com.itextpdf.text.pdf.PdfPTable;
46
import com.itextpdf.text.pdf.PdfPTable;
86
import com.itextpdf.text.pdf.PdfWriter;
47
import com.itextpdf.text.pdf.PdfWriter;
87
import com.itextpdf.text.pdf.draw.DottedLineSeparator;
48
import com.itextpdf.text.pdf.draw.DottedLineSeparator;
88
 
49
 
-
 
50
import in.shop2020.config.ConfigException;
-
 
51
import in.shop2020.logistics.DeliveryType;
-
 
52
import in.shop2020.logistics.LogisticsServiceException;
-
 
53
import in.shop2020.logistics.PickUpType;
-
 
54
import in.shop2020.logistics.PickupStore;
-
 
55
import in.shop2020.logistics.Provider;
-
 
56
import in.shop2020.logistics.ProviderDetails;
-
 
57
import in.shop2020.model.v1.catalog.CatalogService;
-
 
58
import in.shop2020.model.v1.catalog.CatalogServiceException;
-
 
59
import in.shop2020.model.v1.catalog.Item;
-
 
60
import in.shop2020.model.v1.inventory.BillingType;
-
 
61
import in.shop2020.model.v1.inventory.InventoryServiceException;
-
 
62
import in.shop2020.model.v1.inventory.Warehouse;
-
 
63
import in.shop2020.model.v1.order.AmazonOrder;
-
 
64
import in.shop2020.model.v1.order.Attribute;
-
 
65
import in.shop2020.model.v1.order.EbayOrder;
-
 
66
import in.shop2020.model.v1.order.FlipkartOrder;
-
 
67
import in.shop2020.model.v1.order.HsOrder;
-
 
68
import in.shop2020.model.v1.order.LineItem;
-
 
69
import in.shop2020.model.v1.order.Order;
-
 
70
import in.shop2020.model.v1.order.OrderSource;
-
 
71
import in.shop2020.model.v1.order.OrderStatus;
-
 
72
import in.shop2020.model.v1.order.OrderType;
-
 
73
import in.shop2020.model.v1.order.ProductCondition;
-
 
74
import in.shop2020.model.v1.order.SellerInfo;
-
 
75
import in.shop2020.model.v1.order.SnapdealOrder;
-
 
76
import in.shop2020.model.v1.user.Address;
-
 
77
import in.shop2020.thrift.clients.CatalogClient;
-
 
78
import in.shop2020.thrift.clients.InventoryClient;
-
 
79
import in.shop2020.thrift.clients.LogisticsClient;
-
 
80
import in.shop2020.thrift.clients.TransactionClient;
-
 
81
import in.shop2020.thrift.clients.UserClient;
-
 
82
import in.shop2020.thrift.clients.config.ConfigClient;
-
 
83
 
89
@SuppressWarnings("serial")
84
@SuppressWarnings("serial")
90
public class InvoiceServlet extends HttpServlet {
85
public class InvoiceServlet extends HttpServlet {
91
 
86
 
92
	private static Logger logger = LoggerFactory.getLogger(InvoiceServlet.class);
87
	private static Logger logger = LoggerFactory.getLogger(InvoiceServlet.class);
93
	public static long cutoffTime = 0;
88
	private static 
94
	
89
	
95
	static {
-
 
96
		try {
-
 
97
		String cutOffDate = ConfigClient.getClient().get("warehouse_company_cutoff_date");
-
 
98
		DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
-
 
99
		cutoffTime = df.parse(cutOffDate).getTime();
-
 
100
		} catch(Exception e) {
-
 
101
			logger.info("Could not read cutoff time");
-
 
102
		}
-
 
103
	}
-
 
104
	@Override
90
	@Override
105
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
91
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
106
		long orderId = Long.parseLong(request.getParameter("id"));
92
		long orderId = Long.parseLong(request.getParameter("id"));
107
		String logisticsTxnId  = request.getParameter("logisticsTxnId");
93
		String logisticsTxnId  = request.getParameter("logisticsTxnId");
108
		long warehouseId = Long.parseLong(request.getParameter("warehouse"));
94
		long warehouseId = Long.parseLong(request.getParameter("warehouse"));
Line 179... Line 165...
179
	private static final String delhiPincodePrefix = "11";
165
	private static final String delhiPincodePrefix = "11";
180
	private static final String[] maharashtraPincodePrefix = {"40", "41", "42", "43", "44"};
166
	private static final String[] maharashtraPincodePrefix = {"40", "41", "42", "43", "44"};
181
	private static final String[] karnatakaPincodePrefix = {"56", "57", "58", "59"};
167
	private static final String[] karnatakaPincodePrefix = {"56", "57", "58", "59"};
182
	private static final String[] telanganaPincodes = {"500001","500002","500003","500004","500005","500006","500007","500008","500009","500010","500011","500012","500013","500014","500015","500016","500017","500018","500019","500020","500021","500022","500023","500024","500025","500026","500027","500028","500029","500030","500031","500032","500033","500034","500035","500036","500037","500038","500039","500040","500041","500042","500043","500044","500045","500046","500047","500048","500049","500050","500051","500052","500053","500054","500055","500056","500057","500058","500059","500060","500061","500062","500063","500064","500065","500066","500067","500068","500069","500070","500071","500072","500073","500074","500075","500076","500077","500078","500079","500080","500081","500082","500083","500084","500085","500086","500087","500088","500089","500090","500091","500092","500093","500094","500095","500096","500097","500098","500178","500409","501218","501301","501401","501510","501511","501512","502307","502319","517501","517502","517503","517505","517507","520001","520002","520003","520004","520005","520006","520007","520008","520009","520010","520011","520012","520013","520014","520015","521108","521225","522001","522002","522003","522004","522005","522006","522007","522019","522509","530001","530002","530003","530004","530005","530007","530008","530009","530010","530010","530011","530012","530013","530014","530015","530016","530017","530018","530020","530021","530022","530023","530024","530026","530027","530028","530029","530032","530035","530040","530041","530043","530044","530045","530046","531001","533101","533103","533104","533105"};
168
	private static final String[] telanganaPincodes = {"500001","500002","500003","500004","500005","500006","500007","500008","500009","500010","500011","500012","500013","500014","500015","500016","500017","500018","500019","500020","500021","500022","500023","500024","500025","500026","500027","500028","500029","500030","500031","500032","500033","500034","500035","500036","500037","500038","500039","500040","500041","500042","500043","500044","500045","500046","500047","500048","500049","500050","500051","500052","500053","500054","500055","500056","500057","500058","500059","500060","500061","500062","500063","500064","500065","500066","500067","500068","500069","500070","500071","500072","500073","500074","500075","500076","500077","500078","500079","500080","500081","500082","500083","500084","500085","500086","500087","500088","500089","500090","500091","500092","500093","500094","500095","500096","500097","500098","500178","500409","501218","501301","501401","501510","501511","501512","502307","502319","517501","517502","517503","517505","517507","520001","520002","520003","520004","520005","520006","520007","520008","520009","520010","520011","520012","520013","520014","520015","521108","521225","522001","522002","522003","522004","522005","522006","522007","522019","522509","530001","530002","530003","530004","530005","530007","530008","530009","530010","530010","530011","530012","530013","530014","530015","530016","530017","530018","530020","530021","530022","530023","530024","530026","530027","530028","530029","530032","530035","530040","530041","530043","530044","530045","530046","531001","533101","533103","533104","533105"};
183
	private Address billingAddress;
169
	private Address billingAddress;
184
	private String companyName=NEWCOMP;
170
	private SellerInfo sellerInfo;
185
 
171
 
186
	public InvoiceGenerationService() {
172
	public InvoiceGenerationService() {
187
		try {
173
		try {
188
			tsc = new TransactionClient();
174
			tsc = new TransactionClient();
189
			csc = new InventoryClient();
175
			csc = new InventoryClient();
Line 238... Line 224...
238
					}
224
					}
239
				} catch (Exception e) {
225
				} catch (Exception e) {
240
					logger.error("Error while getting order information", e);
226
					logger.error("Error while getting order information", e);
241
					return baosPDF; 
227
					return baosPDF; 
242
				}
228
				}
243
			}else{
229
			} else{
244
				if(!tclient.isAlive()){
230
				if(!tclient.isAlive()){
245
					tclient = tsc.getClient();
231
					tclient = tsc.getClient();
246
				}
232
				}
247
				orders.add(tclient.getOrder(orderId));
233
				orders.add(tclient.getOrder(orderId));
248
				Order o = orders.get(0);
234
				Order o = orders.get(0);
-
 
235
				sellerInfo = tclient.getSellerInfo(o.getSeller_id());
249
				if(o.isSetLogisticsTransactionId()){
236
				if(o.isSetLogisticsTransactionId()){
250
					List<Order> groupOrdersList = tclient.getGroupOrdersByLogisticsTxnId(o.getLogisticsTransactionId());
237
					List<Order> groupOrdersList = tclient.getGroupOrdersByLogisticsTxnId(o.getLogisticsTransactionId());
251
					logisticsTxnIdOrdersMap.put(o.getLogisticsTransactionId(), groupOrdersList);
238
					logisticsTxnIdOrdersMap.put(o.getLogisticsTransactionId(), groupOrdersList);
252
				}
239
				}
253
			}
240
			}
Line 261... Line 248...
261
					String destCode = null;
248
					String destCode = null;
262
					Warehouse shippingLocation = null;
249
					Warehouse shippingLocation = null;
263
					int barcodeFontSize = 0;
250
					int barcodeFontSize = 0;
264
					String invoiceFormat = null;
251
					String invoiceFormat = null;
265
					try {
252
					try {
266
						if(singleOrder.getWarehouse_id() == 7 && InvoiceServlet.cutoffTime > singleOrder.getBilling_timestamp() ){
-
 
267
							companyName = SORPL;
-
 
268
							warehouse = iclient.getWarehouse(7151);
-
 
269
						} else {
-
 
270
							warehouse = iclient.getWarehouse(singleOrder.getWarehouse_id());
253
						warehouse = iclient.getWarehouse(singleOrder.getWarehouse_id());
271
						}
-
 
272
						long providerId = singleOrder.getLogistics_provider_id();
254
						long providerId = singleOrder.getLogistics_provider_id();
273
						provider = logisticsClient.getProvider(providerId);
255
						provider = logisticsClient.getProvider(providerId);
274
						if(provider.getPickup().equals(PickUpType.SELF) || provider.getPickup().equals(PickUpType.RUNNER))
256
						if(provider.getPickup().equals(PickUpType.SELF) || provider.getPickup().equals(PickUpType.RUNNER))
275
							destCode = provider.getPickup().toString();
257
							destCode = provider.getPickup().toString();
276
						else
258
						else
Line 295... Line 277...
295
					}
277
					}
296
					
278
					
297
					if(printAll && warehouse.getBillingType() == BillingType.OURS_EXTERNAL){
279
					if(printAll && warehouse.getBillingType() == BillingType.OURS_EXTERNAL){
298
						for(Order order : ordersList){
280
						for(Order order : ordersList){
299
							if(isFirst){
281
							if(isFirst){
300
								document.add(getFixedTextTable(16, companyName));
282
								document.add(getFixedTextTable(16, sellerInfo.getOrganisationName()));
301
								isFirst = false;
283
								isFirst = false;
302
							}
284
							}
303
							document.add(getExtraInfoTable(order, provider, 16, warehouse.getBillingType()));
285
							document.add(getExtraInfoTable(order, provider, 16, warehouse.getBillingType()));
304
							continue;
286
							continue;
305
						}
287
						}
Line 482... Line 464...
482
					}
464
					}
483
					
465
					
484
					if(printAll && warehouse.getBillingType() == BillingType.OURS_EXTERNAL){
466
					if(printAll && warehouse.getBillingType() == BillingType.OURS_EXTERNAL){
485
						for(Order order : ordersList){
467
						for(Order order : ordersList){
486
							if(isFirst){
468
							if(isFirst){
487
								document.add(getFixedTextTable(16, companyName));
469
								document.add(getFixedTextTable(16, sellerInfo.getOrganisationName()));
488
								isFirst = false;
470
								isFirst = false;
489
							}
471
							}
490
							document.add(getExtraInfoTable(order, provider, 16, warehouse.getBillingType()));
472
							document.add(getExtraInfoTable(order, provider, 16, warehouse.getBillingType()));
491
							continue;
473
							continue;
492
						}
474
						}
Line 1247... Line 1229...
1247
		PdfPTable regAddAndDisCellTable = new PdfPTable(2);
1229
		PdfPTable regAddAndDisCellTable = new PdfPTable(2);
1248
		
1230
		
1249
		PdfPCell disclaimerCell = new PdfPCell(new Phrase("Goods once sold will not be taken back.\nAll disputes subject to Delhi Jurisdiction.\nThis is a Computer generated Invoice.", helvetica8));
1231
		PdfPCell disclaimerCell = new PdfPCell(new Phrase("Goods once sold will not be taken back.\nAll disputes subject to Delhi Jurisdiction.\nThis is a Computer generated Invoice.", helvetica8));
1250
		disclaimerCell.setHorizontalAlignment(Element.ALIGN_LEFT);
1232
		disclaimerCell.setHorizontalAlignment(Element.ALIGN_LEFT);
1251
		disclaimerCell.setBorder(Rectangle.NO_BORDER);
1233
		disclaimerCell.setBorder(Rectangle.NO_BORDER);
1252
		PdfPCell regAddressCell = new PdfPCell(new Phrase(" SPICE & ONLINE RETAIL PRIVATE LIMITED\n Regd. Add. 60-D, STREET NO. C-5, SAINIK FARMS,NEW DELHI-110062\n CIN: U74140DL2008PTC183856 Tel. No. +91-9818116289 E-mail. help@saholic.com Website. www.saholic.com", helvetica6));
1234
		PdfPCell regAddressCell = new PdfPCell(new Phrase(sellerInfo.getOrganisationName() + 
1253
		if(companyName.equals(SORPL)){
1235
										"\n Regd. Add. " +  sellerInfo.getRegisteredAddress() + 
-
 
1236
										(StringUtils.isEmpty(sellerInfo.getCinNumber())? "" :"\n CIN: " + sellerInfo.getCinNumber()) +  
1254
			regAddressCell = new PdfPCell(new Phrase(" SPICE ONLINE RETAIL PRIVATE LIMITED\n Regd. Add. 60-D, STREET NO. C-5, SAINIK FARMS,NEW DELHI-110062\n CIN: U74140DL2008PTC183856 Tel. No. +91-9818116289 E-mail. help@saholic.com Website. www.saholic.com", helvetica6));
1237
										"Tel. No. +91-9818116289 E-mail. help@saholic.com Website. www.saholic.com", helvetica6));
1255
		}
-
 
1256
		regAddressCell.setHorizontalAlignment(Element.ALIGN_LEFT);
1238
		regAddressCell.setHorizontalAlignment(Element.ALIGN_LEFT);
1257
		regAddressCell.setBorder(Rectangle.NO_BORDER);
1239
		regAddressCell.setBorder(Rectangle.NO_BORDER);
1258
		/*SPICE ONLINE RETAIL PRIVATE LIMITED
1240
		/*SPICE ONLINE RETAIL PRIVATE LIMITED
1259
		Regd. Add. 60-D, STREET NO. C-5, SAINIK FARMS,NEW DELHI-110062
1241
		Regd. Add. 60-D, STREET NO. C-5, SAINIK FARMS,NEW DELHI-110062
1260
		CIN: U74140DL2008PTC183856
1242
		CIN: U74140DL2008PTC183856