Subversion Repositories SmartDukaan

Rev

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

Rev 34427 Rev 36215
Line 24... Line 24...
24
        return;
24
        return;
25
    }
25
    }
26
 
26
 
27
    if (!supplierId) {
27
    if (!supplierId) {
28
        supplierId = 0;
28
        supplierId = 0;
29
    } else {
-
 
30
        supplierId = supplierId;
-
 
31
    }
29
    }
-
 
30
 
32
    doGetAjaxRequestHandler(`${context}/pur-sale-ratio/brandSuppliers?startDate=${startDate}&endDate=${endDate}&brand=${brand}&supplierId=${supplierId}`, function (response) {
31
    doGetAjaxRequestHandler(`${context}/pur-sale-ratio/brandSuppliers?startDate=${startDate}&endDate=${endDate}&brand=${brand}&supplierId=${supplierId}`, function (response) {
33
        if (response.hasOwnProperty('purchaseSaleQuantities') && response.purchaseSaleQuantities.length) {
32
        if (response.hasOwnProperty('purchaseSaleQuantities') && response.purchaseSaleQuantities.length) {
34
            createPurchaseSaleBarChart(response.purchaseSaleQuantities, startDate, endDate, brand, supplierId);
33
            createPurchaseSaleBarChart(response.purchaseSaleQuantities, startDate, endDate, brand, supplierId);
-
 
34
        } else {
-
 
35
            if (salesChart) salesChart.destroy();
-
 
36
            if (catalogChart) catalogChart.destroy();
35
        }
37
        }
-
 
38
        console.log('Purchase sale ratio data fetched successfully',response);
36
        if (response.hasOwnProperty('brandWiseSuppliers') && response.brandWiseSuppliers.length) {
39
        if (response.hasOwnProperty('brandWiseSuppliers') && response.brandWiseSuppliers.length) {
37
            $('.suppliersList').empty();
40
            $('.suppliersList').empty();
38
            $('.suppliersList').append(`<option selected disabled>Select Supplier</option>`);
41
            $('.suppliersList').append(`<option selected disabled>Select Supplier</option>`);
39
            $('.suppliersList').append(`<option value="0">All Supplier</option>`);
42
            $('.suppliersList').append(`<option value="0">All Supplier</option>`);
40
            response.brandWiseSuppliers.forEach(function (supplier) {
43
            response.brandWiseSuppliers.forEach(function (supplier) {
Line 55... Line 58...
55
        }
58
        }
56
    });
59
    });
57
});
60
});
58
 
61
 
59
let salesChart, catalogChart;
62
let salesChart, catalogChart;
-
 
63
let currentPurchaseSaleData = [];
-
 
64
let currentCatalogData = [];
60
 
65
 
61
Chart.register(ChartDataLabels);
66
Chart.register(ChartDataLabels);
62
 
67
 
-
 
68
$(document).on('click', '#exportCsvBtn', function () {
-
 
69
    exportPurchaseSaleCSV();
-
 
70
});
-
 
71
 
-
 
72
function exportPurchaseSaleCSV() {
-
 
73
    if (!currentPurchaseSaleData.length && !currentCatalogData.length) {
-
 
74
        alert('No data to export');
-
 
75
        return;
-
 
76
    }
-
 
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();
-
 
100
    let endDate = $('input[name="endDate"]').val();
-
 
101
    let brand = $('select[name="brand"]').val() || '';
-
 
102
    let fileName = `purchase_sale_ratio_${brand}_${startDate}_to_${endDate}.csv`;
-
 
103
 
-
 
104
    let blob = new Blob([csvContent], {type: 'text/csv;charset=utf-8;'});
-
 
105
    let link = document.createElement('a');
-
 
106
    link.href = URL.createObjectURL(blob);
-
 
107
    link.download = fileName;
-
 
108
    link.click();
-
 
109
    URL.revokeObjectURL(link.href);
-
 
110
}
-
 
111
 
63
function createPurchaseSaleBarChart(response, startDate, endDate, brand, supplierId) {
112
function createPurchaseSaleBarChart(response, startDate, endDate, brand, supplierId) {
64
    response = arrangeLabelsOrder(response);
113
    response = arrangeLabelsOrder(response);
-
 
114
    currentPurchaseSaleData = response;
-
 
115
    currentCatalogData = [];
-
 
116
    $('#exportCsvBtn').hide();
65
    let labels = [], totalQuantities = [], soldQuantities = [];
117
    let labels = [], totalQuantities = [], soldQuantities = [];
66
    labels = response.map(sale => sale.status);
118
    labels = response.map(sale => sale.status);
67
    totalQuantities = response.map(sale => sale.totalQuantity);
119
    totalQuantities = response.map(sale => sale.totalQuantity);
68
    soldQuantities = response.map(sale => sale.soldQuantity);
120
    soldQuantities = response.map(sale => sale.soldQuantity);
69
    const ctx = document.getElementById('salesChart').getContext('2d');
121
    const ctx = document.getElementById('salesChart').getContext('2d');
Line 182... Line 234...
182
 
234
 
183
function createCatalogPurchaseSaleBarChart(response, startDate, endDate, supplierId) {
235
function createCatalogPurchaseSaleBarChart(response, startDate, endDate, supplierId) {
184
    let labels = [], totalQuantities = [], soldQuantities = [];
236
    let labels = [], totalQuantities = [], soldQuantities = [];
185
 
237
 
186
    let filterResponse = response.filter(res => res.sale !== res.purchase);
238
    let filterResponse = response.filter(res => res.sale !== res.purchase);
-
 
239
    currentCatalogData = filterResponse;
-
 
240
    $('#exportCsvBtn').show();
187
 
241
 
188
    labels = filterResponse.map(sale => sale.model);
242
    labels = filterResponse.map(sale => sale.model);
189
    totalQuantities = filterResponse.map(sale => sale.purchase);
243
    totalQuantities = filterResponse.map(sale => sale.purchase);
190
    soldQuantities = filterResponse.map(sale => sale.sale);
244
    soldQuantities = filterResponse.map(sale => sale.sale);
191
    let status = filterResponse.map(sale => sale.status)[0];
245
    let status = filterResponse.map(sale => sale.status)[0];