Subversion Repositories SmartDukaan

Rev

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

Rev 36215 Rev 36217
Line 68... Line 68...
68
$(document).on('click', '#exportCsvBtn', function () {
68
$(document).on('click', '#exportCsvBtn', function () {
69
    exportPurchaseSaleCSV();
69
    exportPurchaseSaleCSV();
70
});
70
});
71
 
71
 
72
function exportPurchaseSaleCSV() {
72
function exportPurchaseSaleCSV() {
73
    if (!currentPurchaseSaleData.length && !currentCatalogData.length) {
73
    if (!currentPurchaseSaleData.length) {
74
        alert('No data to export');
74
        alert('No data to export');
75
        return;
75
        return;
76
    }
76
    }
77
 
77
 
78
    let csvContent = '';
-
 
79
 
-
 
80
    // Summary section
-
 
81
    if (currentPurchaseSaleData.length) {
-
 
82
        csvContent += 'Status,Purchase,Sale,Sale %\n';
-
 
83
        currentPurchaseSaleData.forEach(row => {
-
 
84
            let pct = row.totalQuantity > 0 ? ((row.soldQuantity / row.totalQuantity) * 100).toFixed(1) : '0.0';
-
 
85
            csvContent += `${row.status},${row.totalQuantity},${row.soldQuantity},${pct}%\n`;
-
 
86
        });
-
 
87
    }
-
 
88
 
-
 
89
    // Catalog detail section
-
 
90
    if (currentCatalogData.length) {
-
 
91
        csvContent += '\nCatalog Detail\n';
-
 
92
        csvContent += 'Model,Status,Purchase,Sale,Sale %\n';
-
 
93
        currentCatalogData.forEach(row => {
-
 
94
            let pct = row.purchase > 0 ? ((row.sale / row.purchase) * 100).toFixed(1) : '0.0';
-
 
95
            csvContent += `${row.model},${row.status},${row.purchase},${row.sale},${pct}%\n`;
-
 
96
        });
-
 
97
    }
-
 
98
 
-
 
99
    let startDate = $('input[name="startDate"]').val();
78
    let startDate = $('input[name="startDate"]').val();
100
    let endDate = $('input[name="endDate"]').val();
79
    let endDate = $('input[name="endDate"]').val();
101
    let brand = $('select[name="brand"]').val() || '';
80
    let brand = $('select[name="brand"]').val() || '';
-
 
81
    let supplierId = $('select[name="supplier"]').val() || 0;
-
 
82
 
-
 
83
    doGetAjaxRequestHandler(`${context}/pur-sale-ratio/catalog-export?startDate=${startDate}&endDate=${endDate}&brand=${brand}&supplierId=${supplierId}`, function (response) {
-
 
84
        let csvContent = 'Model,Status,Purchase,Sale,Sale %,Unsold (0-5 Days),Unsold (6-15 Days),Unsold (16-30 Days),Unsold (31-45 Days),Unsold (>45 Days)\n';
-
 
85
        response.forEach(row => {
102
    let fileName = `purchase_sale_ratio_${brand}_${startDate}_to_${endDate}.csv`;
86
            let pct = row.purchase > 0 ? ((row.sale / row.purchase) * 100).toFixed(1) : '0.0';
-
 
87
            csvContent += `${row.model},${row.status},${row.purchase},${row.sale},${pct}%,${row.unsold5},${row.unsold15},${row.unsold30},${row.unsold45},${row.unsoldAbove45}\n`;
-
 
88
        });
103
 
89
 
-
 
90
        let fileName = `purchase_sale_ratio_${brand}_${startDate}_to_${endDate}.csv`;
104
    let blob = new Blob([csvContent], {type: 'text/csv;charset=utf-8;'});
91
        let blob = new Blob([csvContent], {type: 'text/csv;charset=utf-8;'});
105
    let link = document.createElement('a');
92
        let link = document.createElement('a');
106
    link.href = URL.createObjectURL(blob);
93
        link.href = URL.createObjectURL(blob);
107
    link.download = fileName;
94
        link.download = fileName;
108
    link.click();
95
        link.click();
109
    URL.revokeObjectURL(link.href);
96
        URL.revokeObjectURL(link.href);
-
 
97
    });
110
}
98
}
111
 
99
 
112
function createPurchaseSaleBarChart(response, startDate, endDate, brand, supplierId) {
100
function createPurchaseSaleBarChart(response, startDate, endDate, brand, supplierId) {
113
    response = arrangeLabelsOrder(response);
101
    response = arrangeLabelsOrder(response);
114
    currentPurchaseSaleData = response;
102
    currentPurchaseSaleData = response;
115
    currentCatalogData = [];
103
    currentCatalogData = [];
116
    $('#exportCsvBtn').hide();
104
    $('#exportCsvBtn').show();
117
    let labels = [], totalQuantities = [], soldQuantities = [];
105
    let labels = [], totalQuantities = [], soldQuantities = [];
118
    labels = response.map(sale => sale.status);
106
    labels = response.map(sale => sale.status);
119
    totalQuantities = response.map(sale => sale.totalQuantity);
107
    totalQuantities = response.map(sale => sale.totalQuantity);
120
    soldQuantities = response.map(sale => sale.soldQuantity);
108
    soldQuantities = response.map(sale => sale.soldQuantity);
121
    const ctx = document.getElementById('salesChart').getContext('2d');
109
    const ctx = document.getElementById('salesChart').getContext('2d');
Line 235... Line 223...
235
function createCatalogPurchaseSaleBarChart(response, startDate, endDate, supplierId) {
223
function createCatalogPurchaseSaleBarChart(response, startDate, endDate, supplierId) {
236
    let labels = [], totalQuantities = [], soldQuantities = [];
224
    let labels = [], totalQuantities = [], soldQuantities = [];
237
 
225
 
238
    let filterResponse = response.filter(res => res.sale !== res.purchase);
226
    let filterResponse = response.filter(res => res.sale !== res.purchase);
239
    currentCatalogData = filterResponse;
227
    currentCatalogData = filterResponse;
240
    $('#exportCsvBtn').show();
-
 
241
 
228
 
242
    labels = filterResponse.map(sale => sale.model);
229
    labels = filterResponse.map(sale => sale.model);
243
    totalQuantities = filterResponse.map(sale => sale.purchase);
230
    totalQuantities = filterResponse.map(sale => sale.purchase);
244
    soldQuantities = filterResponse.map(sale => sale.sale);
231
    soldQuantities = filterResponse.map(sale => sale.sale);
245
    let status = filterResponse.map(sale => sale.status)[0];
232
    let status = filterResponse.map(sale => sale.status)[0];