/var/www/enzatesting.onesolution.hk/xls_sales.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
<?php
require_once "inc/phpexcel_1.7.7/PHPExcel.php";

error_log("Données postées reçues : " print_r($_POSTtrue));

// Retrieve the data sent from JavaScript
$selectedData json_decode($_POST['selectedData'], true);
$totalData json_decode($_POST['totalData'], true);
$dataType $_POST['dataType'];

$objPHPExcel = new PHPExcel();

// Determine the headers to use based on the dataType value
$headers = array();
$dataColumns = array();
if (
$dataType === "Invoice") {
    
$headers = array(
        
"Customer Code",
        
"Customer Name",
        
"Total Quantity",
        
"Total Invoice Cost",
        
"Total Factory Cost",
        
"Total Price USD",
        
"Margin",
        
"Coef",
    );
    
$dataColumns = array('A''B''C''D''E''F''G''H');
} else {
    
$headers = array(
        
"Customer Code",
        
"Customer Name",
        
"Total Credit Note",
    );
    
$dataColumns = array('A''B''C');
}

// Set the headers
$column 'A';
foreach (
$headers as $header) {
    
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($column '1'$header);
    
$column++;
}

// Define the column widths
$columnWidths = array(
    
'A' => 20// Customer Code
    
'B' => 20// Customer Name
    
'C' => 20// Total Quantity
    
'D' => 20// Total Invoice Cost
    
'E' => 20// Total Factory Cost
    
'F' => 20// Total Price USD
    
'G' => 20// Margin
    
'H' => 20// Coef
);

// Set the column widths
foreach ($columnWidths as $column => $width) {
    
$objPHPExcel->getActiveSheet()->getColumnDimension($column)->setWidth($width);
}

// Add the data
$rowNumber 2// start from the second row
foreach ($selectedData as $rowData) {

    if (
$dataType === "Invoice") {
        
$objPHPExcel->setActiveSheetIndex(0)
            ->
setCellValue('A' $rowNumber$rowData['custcode'])
            ->
setCellValue('B' $rowNumber$rowData['custname'])
            ->
setCellValue('C' $rowNumberfloatval(str_replace(','''$rowData['total_quantity'])))
            ->
setCellValue('D' $rowNumberfloatval(str_replace(','''$rowData['total_invoice_cost'])))
            ->
setCellValue('E' $rowNumberfloatval(str_replace(','''$rowData['total_factory_cost'])))
            ->
setCellValue('F' $rowNumberfloatval(str_replace(','''$rowData['total_price_usd'])))
            ->
setCellValue('G' $rowNumberfloatval(str_replace('%'''$rowData['margin'])) / 100)
            ->
setCellValue('H' $rowNumber$rowData['coef']);

        
$objPHPExcel->getActiveSheet()->getStyle('C' $rowNumber)->getNumberFormat()->setFormatCode('#,##0.00');
        
$objPHPExcel->getActiveSheet()->getStyle('D' $rowNumber)->getNumberFormat()->setFormatCode('#,##0.00');
        
$objPHPExcel->getActiveSheet()->getStyle('E' $rowNumber)->getNumberFormat()->setFormatCode('#,##0.00');
        
$objPHPExcel->getActiveSheet()->getStyle('F' $rowNumber)->getNumberFormat()->setFormatCode('#,##0.00');
        
$objPHPExcel->getActiveSheet()->getStyle('G' $rowNumber)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_PERCENTAGE_00);
    } else if (
$dataType === "Credit Note") {
        
$objPHPExcel->setActiveSheetIndex(0)
            ->
setCellValue('A' $rowNumber$rowData['custcode'])
            ->
setCellValue('B' $rowNumber$rowData['custname'])
            ->
setCellValue('C' $rowNumberfloatval(str_replace(','''$rowData['total_invoice_cost'])));

        
$objPHPExcel->getActiveSheet()->getStyle('C' $rowNumber)->getNumberFormat()->setFormatCode('#,##0.00');
    }
    
$rowNumber++;
}

// Add the "Total" row to the sheet.
$totalRow = array();
if (
$dataType === "Invoice") {
    
$totalRow = array(
        
"Total",
        
"",
        
$totalData['totalqty'],
        
$totalData['totalcost'],
        
$totalData['totalfcost'],
        
$totalData['totalprice_usd'],
        
floatval(str_replace('%'''$totalData['totalMargin'])) / 100,
        
$totalData['totalCoef']
    );
} else {
    
$totalRow = array(
        
"Total",
        
"",
        
$totalData['totalcost'],
    );
}



$column 'A';
foreach (
$totalRow as $cellValue) {
    if (
in_array($column$dataColumns)) {
        
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($column $rowNumber$cellValue);
        
// If the column is one of the numeric columns, set the number format.
        
if (is_numeric($cellValue)) {
            
$objPHPExcel->getActiveSheet()->getStyle($column $rowNumber)->getNumberFormat()->setFormatCode('#,##0.00');
        }
        if (
$column === 'G') {
            
$objPHPExcel->getActiveSheet()->getStyle($column $rowNumber)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_PERCENTAGE_00);
        }
    }
    
$column++;
}

// Determine the filename based on the dataType value
$fileNamePrefix "exported_data";
$fileNameSuffix "";
if (
$dataType === "Invoice") {
    
$fileNameSuffix "_invoices";
} else {
    
$fileNameSuffix "_creditnotes";
}

header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="' $fileNamePrefix $fileNameSuffix '.xls"');
header('Cache-Control: max-age=0');

$objPHPExcel->setActiveSheetIndex(0);
$objWriter PHPExcel_IOFactory::createWriter($objPHPExcel'Excel5');
$objWriter->save('php://output');

// Send a response back to JavaScript
echo json_encode(array('success' => true'message' => 'File has been saved.'));