Subversion Repositories SmartDukaan

Rev

Rev 4336 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 4336 Rev 4499
Line 1... Line 1...
1
package in.shop2020.hotspot.dashbaord.server;
1
package in.shop2020.hotspot.dashbaord.server;
2
 
2
 
-
 
3
import in.shop2020.purchase.PurchaseOrder;
-
 
4
import in.shop2020.purchase.PurchaseService.Client;
-
 
5
import in.shop2020.purchase.Supplier;
-
 
6
import in.shop2020.thrift.clients.PurchaseClient;
-
 
7
 
3
import java.io.ByteArrayOutputStream;
8
import java.io.ByteArrayOutputStream;
4
import java.io.File;
9
import java.io.File;
5
import java.io.FileOutputStream;
10
import java.io.FileOutputStream;
6
import java.io.IOException;
11
import java.io.IOException;
7
import java.text.DateFormat;
12
import java.text.DateFormat;
Line 14... Line 19...
14
import org.slf4j.LoggerFactory;
19
import org.slf4j.LoggerFactory;
15
 
20
 
16
import com.itextpdf.text.Document;
21
import com.itextpdf.text.Document;
17
import com.itextpdf.text.Element;
22
import com.itextpdf.text.Element;
18
import com.itextpdf.text.Font;
23
import com.itextpdf.text.Font;
-
 
24
import com.itextpdf.text.Font.FontFamily;
19
import com.itextpdf.text.FontFactory;
25
import com.itextpdf.text.FontFactory;
20
import com.itextpdf.text.Paragraph;
26
import com.itextpdf.text.Paragraph;
21
import com.itextpdf.text.Phrase;
27
import com.itextpdf.text.Phrase;
22
import com.itextpdf.text.Rectangle;
28
import com.itextpdf.text.Rectangle;
23
import com.itextpdf.text.Font.FontFamily;
-
 
24
import com.itextpdf.text.pdf.PdfPCell;
29
import com.itextpdf.text.pdf.PdfPCell;
25
import com.itextpdf.text.pdf.PdfPTable;
30
import com.itextpdf.text.pdf.PdfPTable;
26
import com.itextpdf.text.pdf.PdfWriter;
31
import com.itextpdf.text.pdf.PdfWriter;
27
 
32
 
28
import in.shop2020.thrift.clients.WarehouseClient;
-
 
29
import in.shop2020.warehouse.LineItem;
-
 
30
import in.shop2020.warehouse.PurchaseOrder;
-
 
31
import in.shop2020.warehouse.Supplier;
-
 
32
import in.shop2020.warehouse.WarehouseService.Client;
-
 
33
 
-
 
34
public class PoSheetGenerator {
33
public class PoSheetGenerator {
35
    
34
    
36
    private static Logger logger = LoggerFactory.getLogger(PoSheetGenerator.class);
35
    private static Logger logger = LoggerFactory.getLogger(PoSheetGenerator.class);
37
    
36
    
38
    private static final Properties properties = readProperties();
37
    private static final Properties properties = readProperties();
Line 55... Line 54...
55
            props.put(key, resource.getString(key));
54
            props.put(key, resource.getString(key));
56
        }
55
        }
57
        return props;
56
        return props;
58
    }
57
    }
59
    
58
    
60
    public static String generatePdfSheet(PurchaseOrder purchaseOrder, Supplier supplier) throws IOException{
59
    public static String generatePdfSheet(in.shop2020.purchase.PurchaseOrder purchaseOrder, in.shop2020.purchase.Supplier supplier) throws IOException{
61
        ByteArrayOutputStream baosPDF = null;
60
        ByteArrayOutputStream baosPDF = null;
62
        try {
61
        try {
63
            baosPDF = new ByteArrayOutputStream();
62
            baosPDF = new ByteArrayOutputStream();
64
 
63
 
65
            Document document = new Document();
64
            Document document = new Document();
Line 85... Line 84...
85
        FileOutputStream fos = new FileOutputStream(f);
84
        FileOutputStream fos = new FileOutputStream(f);
86
        baosPDF.writeTo(fos);
85
        baosPDF.writeTo(fos);
87
        return filename;
86
        return filename;
88
    }
87
    }
89
    
88
    
90
    private static PdfPTable getPoTable(PurchaseOrder purchaseOrder, Supplier supplier) throws Exception{
89
    private static PdfPTable getPoTable(in.shop2020.purchase.PurchaseOrder purchaseOrder, in.shop2020.purchase.Supplier supplier) throws Exception{
91
        PdfPTable poTable = new PdfPTable(1);
90
        PdfPTable poTable = new PdfPTable(1);
92
        poTable.getDefaultCell().setBorder(Rectangle.NO_BORDER);
91
        poTable.getDefaultCell().setBorder(Rectangle.NO_BORDER);
93
        poTable.getDefaultCell().setHorizontalAlignment(Element.ALIGN_CENTER);
92
        poTable.getDefaultCell().setHorizontalAlignment(Element.ALIGN_CENTER);
94
        
93
        
95
        PdfPCell poTitleCell = new PdfPCell(new Phrase("Purchase Order", helveticaBold12));
94
        PdfPCell poTitleCell = new PdfPCell(new Phrase("Purchase Order", helveticaBold12));
Line 119... Line 118...
119
        addressCell.setHorizontalAlignment(Element.ALIGN_CENTER);
118
        addressCell.setHorizontalAlignment(Element.ALIGN_CENTER);
120
        addressCell.setBorder(Rectangle.NO_BORDER);
119
        addressCell.setBorder(Rectangle.NO_BORDER);
121
        return addressCell;
120
        return addressCell;
122
    }
121
    }
123
    
122
    
124
    private static PdfPTable getSalutationTable(Supplier supplier) throws Exception{
123
    private static PdfPTable getSalutationTable(in.shop2020.purchase.Supplier supplier) throws Exception{
125
        PdfPTable salutationTable = new PdfPTable(1);
124
        PdfPTable salutationTable = new PdfPTable(1);
126
        salutationTable.getDefaultCell().setHorizontalAlignment(Element.ALIGN_LEFT);
125
        salutationTable.getDefaultCell().setHorizontalAlignment(Element.ALIGN_LEFT);
127
        salutationTable.getDefaultCell().setBorder(Rectangle.NO_BORDER);
126
        salutationTable.getDefaultCell().setBorder(Rectangle.NO_BORDER);
128
        salutationTable.addCell(new Phrase("To", helvetica8));
127
        salutationTable.addCell(new Phrase("To", helvetica8));
129
        salutationTable.addCell(new Paragraph(supplier.getCommunicationAddress(), helvetica8));
128
        salutationTable.addCell(new Paragraph(supplier.getCommunicationAddress(), helvetica8));
Line 131... Line 130...
131
        salutationTable.addCell(new Phrase("Please supply the following stocks as per the details given below:", helvetica8));
130
        salutationTable.addCell(new Phrase("Please supply the following stocks as per the details given below:", helvetica8));
132
        salutationTable.addCell(new Phrase(" "));
131
        salutationTable.addCell(new Phrase(" "));
133
        return salutationTable;
132
        return salutationTable;
134
    }
133
    }
135
    
134
    
136
    private static PdfPTable getPoDetailsTable(PurchaseOrder purchaseOrder){
135
    private static PdfPTable getPoDetailsTable(in.shop2020.purchase.PurchaseOrder purchaseOrder){
137
        PdfPTable detailsTable = new PdfPTable(new float[]{0.1f, 0.5f, 0.1f, 0.2f, 0.2f});
136
        PdfPTable detailsTable = new PdfPTable(new float[]{0.1f, 0.5f, 0.1f, 0.2f, 0.2f});
138
        detailsTable.addCell(new Phrase("Sl. No.", helveticaBold8));
137
        detailsTable.addCell(new Phrase("Sl. No.", helveticaBold8));
139
        detailsTable.addCell(new Phrase("Description", helveticaBold8));
138
        detailsTable.addCell(new Phrase("Description", helveticaBold8));
140
        detailsTable.addCell(new Phrase("Quantity", helveticaBold8));
139
        detailsTable.addCell(new Phrase("Quantity", helveticaBold8));
141
        detailsTable.addCell(new Phrase("Rate (Rs)", helveticaBold8));
140
        detailsTable.addCell(new Phrase("Rate (Rs)", helveticaBold8));
142
        detailsTable.addCell(new Phrase("Amount (Rs)", helveticaBold8));
141
        detailsTable.addCell(new Phrase("Amount (Rs)", helveticaBold8));
143
        
142
        
144
        int slNo = 0;
143
        int slNo = 0;
145
        double total = 0;
144
        double total = 0;
146
        for(LineItem lineitem : purchaseOrder.getLineitems()){
145
        for(in.shop2020.purchase.LineItem lineitem : purchaseOrder.getLineitems()){
147
            slNo++;
146
            slNo++;
148
            detailsTable.addCell(new Phrase(slNo + "", helvetica8));
147
            detailsTable.addCell(new Phrase(slNo + "", helvetica8));
149
            detailsTable.addCell(getProductNameCell(lineitem));
148
            detailsTable.addCell(getProductNameCell(lineitem));
150
            detailsTable.addCell(new Phrase(lineitem.getQuantity() + "", helvetica8));
149
            detailsTable.addCell(new Phrase(lineitem.getQuantity() + "", helvetica8));
151
            detailsTable.addCell(new Phrase(lineitem.getUnitPrice() + "", helvetica8));
150
            detailsTable.addCell(new Phrase(lineitem.getUnitPrice() + "", helvetica8));
Line 172... Line 171...
172
        billToTable.addCell(new Phrase("Prices inclusive of all taxes", helvetica8));
171
        billToTable.addCell(new Phrase("Prices inclusive of all taxes", helvetica8));
173
        
172
        
174
        return billToTable;
173
        return billToTable;
175
    }
174
    }
176
    
175
    
177
    private static PdfPCell getProductNameCell(LineItem lineitem) {
176
    private static PdfPCell getProductNameCell(in.shop2020.purchase.LineItem lineitem) {
178
        String itemName = getItemDisplayName(lineitem);
177
        String itemName = getItemDisplayName(lineitem);
179
        PdfPCell productNameCell = new PdfPCell(new Phrase(itemName, helvetica8));
178
        PdfPCell productNameCell = new PdfPCell(new Phrase(itemName, helvetica8));
180
        productNameCell.setHorizontalAlignment(Element.ALIGN_LEFT);
179
        productNameCell.setHorizontalAlignment(Element.ALIGN_LEFT);
181
        return productNameCell;
180
        return productNameCell;
182
    }
181
    }
183
    
182
    
184
    private static String getItemDisplayName(LineItem lineitem){
183
    private static String getItemDisplayName(in.shop2020.purchase.LineItem lineitem){
185
        StringBuffer itemName = new StringBuffer();
184
        StringBuffer itemName = new StringBuffer();
186
        if(lineitem.getBrand()!= null)
185
        if(lineitem.getBrand()!= null)
187
            itemName.append(lineitem.getBrand() + " ");
186
            itemName.append(lineitem.getBrand() + " ");
188
        if(lineitem.getModelName() != null)
187
        if(lineitem.getModelName() != null)
189
            itemName.append(lineitem.getModelName() + " ");
188
            itemName.append(lineitem.getModelName() + " ");
Line 207... Line 206...
207
 
206
 
208
        if (args != null && args.length != 0) {
207
        if (args != null && args.length != 0) {
209
            purchaseOrderId = Long.parseLong(args[0]);
208
            purchaseOrderId = Long.parseLong(args[0]);
210
        }
209
        }
211
 
210
 
212
        WarehouseClient warehouseServiceClient = new WarehouseClient();
211
        PurchaseClient warehouseServiceClient = new PurchaseClient();
213
        Client client = warehouseServiceClient.getClient();
212
        Client client = warehouseServiceClient.getClient();
214
        in.shop2020.warehouse.PurchaseOrder purchaseOrder = client.getPurchaseOrder(purchaseOrderId);
213
        PurchaseOrder purchaseOrder = client.getPurchaseOrder(purchaseOrderId);
215
        Supplier supplier = client.getSupplier(purchaseOrder.getSupplierId());
214
        Supplier supplier = client.getSupplier(purchaseOrder.getSupplierId());
216
        String filename = generatePdfSheet(purchaseOrder, supplier);
215
        String filename = generatePdfSheet(purchaseOrder, supplier);
217
        System.out.println("PO generated in: " + filename);
216
        System.out.println("PO generated in: " + filename);
218
    }
217
    }
219
}
218
}