|
@@ -1319,7 +1319,262 @@ ORDER;
|
|
|
*/
|
|
*/
|
|
|
public function actionNoLoginOrderExport()
|
|
public function actionNoLoginOrderExport()
|
|
|
{
|
|
{
|
|
|
- return $this->actionOrderExport();
|
|
|
|
|
|
|
+ $orderSn = \Yii::$app->request->get('orderSn');
|
|
|
|
|
+
|
|
|
|
|
+ $condition = " AND SN=:SN AND O.IS_DELETE = 0";
|
|
|
|
|
+ $params = [
|
|
|
|
|
+ ':SN' => $orderSn,
|
|
|
|
|
+ ];
|
|
|
|
|
+
|
|
|
|
|
+ $data = Order::lists($condition, $params, [
|
|
|
|
|
+ 'select' => 'O.*,U.REAL_NAME,OG.*,OG.CATEGORY_TYPE',
|
|
|
|
|
+ 'orderBy' => 'O.CREATED_AT DESC',
|
|
|
|
|
+ 'from' => Order::tableName() . ' AS O',
|
|
|
|
|
+ 'join' => [
|
|
|
|
|
+ ['LEFT JOIN', User::tableName() . ' AS U', 'U.ID=O.USER_ID'],
|
|
|
|
|
+ ['LEFT JOIN', OrderGoods::tableName() . ' AS OG', 'OG.ORDER_SN=O.SN'],
|
|
|
|
|
+ ],
|
|
|
|
|
+ ]);
|
|
|
|
|
+ if (!$data['list']) {
|
|
|
|
|
+ $condition .= ' AND (O.STATUS = :NOT_PAID OR O.STATUS = :FAIL_PAID)';
|
|
|
|
|
+ $params[':NOT_PAID'] = \Yii::$app->params['orderStatus']['notPaid']['value']; // 待支付
|
|
|
|
|
+ $params[':FAIL_PAID'] = \Yii::$app->params['orderStatus']['failPaid']['value']; // 支付失败
|
|
|
|
|
+ $data = ApproachOrder::lists($condition, $params, [
|
|
|
|
|
+ 'select' => 'O.*,U.REAL_NAME,OG.*,OG.CATEGORY_TYPE',
|
|
|
|
|
+ 'orderBy' => 'O.CREATED_AT DESC',
|
|
|
|
|
+ 'from' => ApproachOrder::tableName() . ' AS O',
|
|
|
|
|
+ 'join' => [
|
|
|
|
|
+ ['LEFT JOIN', User::tableName() . ' AS U', 'U.ID=O.USER_ID'],
|
|
|
|
|
+ ['LEFT JOIN', ApproachOrderGoods::tableName() . ' AS OG', 'OG.ORDER_SN=O.SN'],
|
|
|
|
|
+ ],
|
|
|
|
|
+ ]);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ $userId = '';
|
|
|
|
|
+ $userName = '';
|
|
|
|
|
+ $address = '';
|
|
|
|
|
+ $mobile = '';
|
|
|
|
|
+ $orderAt = '';
|
|
|
|
|
+ $orderDetails = '';
|
|
|
|
|
+ $orderAmount = 0; // 合计总额
|
|
|
|
|
+ $orderNums = 0; // 合计总数
|
|
|
|
|
+ $totalTaxAmount = 0; // 合计税额
|
|
|
|
|
+ $totalAmount = 0;
|
|
|
|
|
+ foreach ($data['list'] as $key => $value) {
|
|
|
|
|
+ $provinceName = $value['PROVINCE'] ? Region::getCnName($value['PROVINCE']) : '';
|
|
|
|
|
+ $cityName = $value['CITY'] ? Region::getCnName($value['CITY']) : '';
|
|
|
|
|
+ $countyName = $value['COUNTY'] ? Region::getCnName($value['COUNTY']) : '';
|
|
|
|
|
+
|
|
|
|
|
+ $userId = $value['USER_NAME'];
|
|
|
|
|
+ $userName = $value['CONSIGNEE'];
|
|
|
|
|
+ $address = $provinceName .' '. $cityName .' '. $countyName .' '. $value['ADDRESS'];
|
|
|
|
|
+ $mobile = $value['MOBILE'];
|
|
|
|
|
+ $orderAt = Date::convert($value['CREATED_AT'],'Y-m-d H:i:s');
|
|
|
|
|
+
|
|
|
|
|
+ // 总价
|
|
|
|
|
+ $totalAmount = $value['BUY_NUMS'] * $value['REAL_PRICE'];
|
|
|
|
|
+ $orderAmount += $totalAmount;
|
|
|
|
|
+ $orderNums += $value['BUY_NUMS'];
|
|
|
|
|
+ // 税额
|
|
|
|
|
+ $taxAmount = floatval(Tool::formatPrice(($value['REAL_PRICE'] - ($value['REAL_PRICE'] / (1 + $value['TAX_RATE'] / 100))) * $value['BUY_NUMS']));
|
|
|
|
|
+ $totalTaxAmount += $taxAmount;
|
|
|
|
|
+ $productAmount = Tool::formatAmount($value['REAL_PRICE']);
|
|
|
|
|
+ $taxAmount = Tool::formatAmount($taxAmount);
|
|
|
|
|
+ $totalAmount = Tool::formatAmount($totalAmount);
|
|
|
|
|
+ // 订单详情
|
|
|
|
|
+ $orderDetails .= <<<EOT
|
|
|
|
|
+ <tr>
|
|
|
|
|
+ <td style="text-align: center;">{$value['SKU_CODE']}</td>
|
|
|
|
|
+ <td style="text-align: center;">{$value['GOODS_TITLE']}</td>
|
|
|
|
|
+ <td style="text-align: right;">{$productAmount}</td>
|
|
|
|
|
+ <td style="text-align: right;">{$value['BUY_NUMS']}</td>
|
|
|
|
|
+ <td style="text-align: right;">{$value['TAX_RATE']}%</td>
|
|
|
|
|
+ <td style="text-align: right;">{$taxAmount}</td>
|
|
|
|
|
+ <td style="text-align: right;">{$totalAmount}</td>
|
|
|
|
|
+ </tr>
|
|
|
|
|
+EOT;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ $memberCode = Yii::t('app', 'memberCode');
|
|
|
|
|
+ $memberName = Yii::t('app', 'memberName');
|
|
|
|
|
+ $memberAddress = Yii::t('app', 'memberAddress');
|
|
|
|
|
+ $memberPhone = Yii::t('app', 'memberPhone');
|
|
|
|
|
+ $orderCode = Yii::t('app', 'orderCode');
|
|
|
|
|
+ $orderDetail = Yii::t('app', 'orderDetail');
|
|
|
|
|
+ $productCode = Yii::t('app', 'productCode');
|
|
|
|
|
+ $productName = Yii::t('app', 'productName');
|
|
|
|
|
+ $productPrice = Yii::t('app', 'productPrice');
|
|
|
|
|
+ $quantity = Yii::t('app', 'qty');
|
|
|
|
|
+ $taxRate = Yii::t('app', 'taxRate');
|
|
|
|
|
+ $totalTax = Yii::t('app', 'totalTax');
|
|
|
|
|
+ $totalAmount = Yii::t('app', 'totalAmount');
|
|
|
|
|
+ $total = Yii::t('app', 'total');
|
|
|
|
|
+ $signature = Yii::t('app', 'signature');
|
|
|
|
|
+ $date = Yii::t('app', 'date');
|
|
|
|
|
+ $createAt = Yii::t('app', 'createAt');
|
|
|
|
|
+
|
|
|
|
|
+ // 订单基本信息
|
|
|
|
|
+ $orderBase = <<<ORDER
|
|
|
|
|
+ <table border="1" style="table-layout: fixed; padding: 10px 20px;" width="100%">
|
|
|
|
|
+ <tr>
|
|
|
|
|
+ <td width="30%" style="font-weight: bold; text-align: center; font-size: 14px;">{$memberCode}</td>
|
|
|
|
|
+ <td width="70%"></td>
|
|
|
|
|
+ </tr>
|
|
|
|
|
+ <tr>
|
|
|
|
|
+ <td width="30%" style="font-weight: bold; text-align: center; font-size: 14px;">{$memberName}</td>
|
|
|
|
|
+ <td width="70%">{$userName}</td>
|
|
|
|
|
+ </tr>
|
|
|
|
|
+ <tr>
|
|
|
|
|
+ <td width="30%" style="font-weight: bold; text-align: center; font-size: 14px;">{$memberAddress}</td>
|
|
|
|
|
+ <td width="70%">{$address}</td>
|
|
|
|
|
+ </tr>
|
|
|
|
|
+ <tr>
|
|
|
|
|
+ <td width="30%" style="font-weight: bold; text-align: center; font-size: 14px;">{$memberPhone}</td>
|
|
|
|
|
+ <td width="70%">{$mobile}</td>
|
|
|
|
|
+ </tr>
|
|
|
|
|
+ <tr>
|
|
|
|
|
+ <td width="30%" style="font-weight: bold; text-align: center; font-size: 14px;">{$orderCode}</td>
|
|
|
|
|
+ <td width="70%">{$orderSn}</td>
|
|
|
|
|
+ </tr>
|
|
|
|
|
+ <tr>
|
|
|
|
|
+ <td width="30%" style="font-weight: bold; text-align: center; font-size: 14px;">{$createAt}</td>
|
|
|
|
|
+ <td width="70%">{$orderAt}</td>
|
|
|
|
|
+ </tr>
|
|
|
|
|
+ <tr>
|
|
|
|
|
+ <td class="bg" style="font-weight: bold; font-size: 14px; text-align: center;">{$orderDetail}</td>
|
|
|
|
|
+ <td class="bg"></td>
|
|
|
|
|
+ </tr>
|
|
|
|
|
+ </table>
|
|
|
|
|
+ORDER;
|
|
|
|
|
+
|
|
|
|
|
+ $l['a_meta_charset'] = 'UTF-8';
|
|
|
|
|
+ $l['a_meta_dir'] = 'ltr';
|
|
|
|
|
+ $l['a_meta_language'] = 'zh';
|
|
|
|
|
+ $l['w_page'] = '页面';
|
|
|
|
|
+
|
|
|
|
|
+ $orderAmount = Tool::formatAmount($orderAmount);
|
|
|
|
|
+ $totalTaxAmount = Tool::formatAmount($totalTaxAmount);
|
|
|
|
|
+
|
|
|
|
|
+ $context = <<<ORDER
|
|
|
|
|
+ <!doctype html>
|
|
|
|
|
+ <html lang="en">
|
|
|
|
|
+ <head>
|
|
|
|
|
+ <meta charset="UTF-8" />
|
|
|
|
|
+ <title>{$orderDetail}</title>
|
|
|
|
|
+ <style>
|
|
|
|
|
+ table {
|
|
|
|
|
+ border-collapse: collapse;
|
|
|
|
|
+ }
|
|
|
|
|
+ table td, table th {
|
|
|
|
|
+ border: 1px solid #ccc;
|
|
|
|
|
+ /*padding: 5px 5px;*/
|
|
|
|
|
+ border-collapse: collapse;
|
|
|
|
|
+ }
|
|
|
|
|
+ /*td {*/
|
|
|
|
|
+ /* padding: 120px;*/
|
|
|
|
|
+ /*}*/
|
|
|
|
|
+ .bg {
|
|
|
|
|
+ background-color: #ccc;
|
|
|
|
|
+ }
|
|
|
|
|
+ </style>
|
|
|
|
|
+ </head>
|
|
|
|
|
+ <body>
|
|
|
|
|
+ <div class="content">
|
|
|
|
|
+ <p style="text-align: center; font-weight: bold; font-size: 22px;"><b>{$orderDetail}</b><br></p>
|
|
|
|
|
+ <div>
|
|
|
|
|
+ <div style="display: block; width: 100%;">
|
|
|
|
|
+ {$orderBase}
|
|
|
|
|
+
|
|
|
|
|
+ <table border="1" width="100%" style="padding: 10px 5px; text-align: center;">
|
|
|
|
|
+ <tr>
|
|
|
|
|
+ <th width="15%" style="font-size: 14px; font-weight: bold; text-align: center;">{$productCode}</th>
|
|
|
|
|
+ <th width="20%" style="font-size: 14px; font-weight: bold; text-align: center;">{$productName}</th>
|
|
|
|
|
+ <th width="15%" style="font-size: 14px; font-weight: bold; text-align: center;">{$productPrice}</th>
|
|
|
|
|
+ <th width="10%" style="font-size: 14px; font-weight: bold; text-align: center;">{$quantity}</th>
|
|
|
|
|
+ <th width="12%" style="font-size: 14px; font-weight: bold; text-align: center;">{$taxRate}</th>
|
|
|
|
|
+ <th width="13%" style="font-size: 14px; font-weight: bold; text-align: center;">{$totalTax}</th>
|
|
|
|
|
+ <th width="15%" style="font-size: 14px; font-weight: bold; text-align: center;">{$totalAmount}</th>
|
|
|
|
|
+ </tr>
|
|
|
|
|
+ {$orderDetails}
|
|
|
|
|
+ <tr>
|
|
|
|
|
+ <td colspan="3">{$total}</td>
|
|
|
|
|
+ <td style="text-align: right;">{$orderNums}</td>
|
|
|
|
|
+ <td></td>
|
|
|
|
|
+ <td style="text-align: right;">{$totalTaxAmount}</td>
|
|
|
|
|
+ <td style="text-align: right;">{$orderAmount}</td>
|
|
|
|
|
+ </tr>
|
|
|
|
|
+ </table>
|
|
|
|
|
+ </div>
|
|
|
|
|
+
|
|
|
|
|
+ <div style="width: 100%; margin-top: 50px; height: 30px;">
|
|
|
|
|
+ <table width="100%" style="border: none; padding: 10px 20px; text-align: center;">
|
|
|
|
|
+ <tr style="border: none;">
|
|
|
|
|
+ <td width="70%" style="border: none;"></td>
|
|
|
|
|
+ <td width="30%" style="font-weight: bold; text-align: left; font-size: 14px; border: none;">{$signature}:</td>
|
|
|
|
|
+ </tr>
|
|
|
|
|
+ <tr style="border: none;">
|
|
|
|
|
+ <td width="70%" style="border: none;"></td>
|
|
|
|
|
+ <td width="30%" style="font-weight: bold; text-align: left; font-size: 14px; border: none;">{$date}:</td>
|
|
|
|
|
+ </tr>
|
|
|
|
|
+ </table>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </body>
|
|
|
|
|
+ </html>
|
|
|
|
|
+ORDER;
|
|
|
|
|
+ require_once (\Yii::$app->vendorPath . '/tecnickcom/tcpdf/tcpdf.php');
|
|
|
|
|
+
|
|
|
|
|
+ $pdf = new \TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
|
|
|
|
|
+ // 设置打印模式
|
|
|
|
|
+ $pdf->SetCreator(PDF_CREATOR);
|
|
|
|
|
+ $pdf->SetAuthor('DaZe');
|
|
|
|
|
+ $pdf->SetTitle($orderSn);
|
|
|
|
|
+ $pdf->SetSubject('TCPDF Tutorial');
|
|
|
|
|
+ $pdf->SetKeywords('TCPDF, PDF, example, test, guide');
|
|
|
|
|
+ // 是否显示页眉
|
|
|
|
|
+ $pdf->setPrintHeader(false);
|
|
|
|
|
+ // 设置页眉字体
|
|
|
|
|
+ $pdf->setHeaderFont(Array('dejavusans', '', '12'));
|
|
|
|
|
+ // 页眉距离顶部的距离
|
|
|
|
|
+ $pdf->SetHeaderMargin('5');
|
|
|
|
|
+ // 是否显示页脚
|
|
|
|
|
+ $pdf->setPrintFooter(false);
|
|
|
|
|
+ // 设置默认等宽字体
|
|
|
|
|
+ $pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
|
|
|
|
|
+ // 设置行高
|
|
|
|
|
+ $pdf->setCellHeightRatio(1);
|
|
|
|
|
+ // 设置左、上、右的间距
|
|
|
|
|
+ $pdf->SetMargins('10', '0', '10');
|
|
|
|
|
+ // 设置是否自动分页 距离底部多少距离时分页
|
|
|
|
|
+ $pdf->SetAutoPageBreak(TRUE, '15');
|
|
|
|
|
+ // 设置图像比例因子
|
|
|
|
|
+ $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
|
|
|
|
|
+ if (@file_exists(\Yii::$app->vendorPath . 'tecnickcom/tcpdf/examples/lang/eng.php')) {
|
|
|
|
|
+ require_once(\Yii::$app->vendorPath . '/tecnickcom/tcpdf/examples/lang/eng.php');
|
|
|
|
|
+ $pdf->setLanguageArray($l);
|
|
|
|
|
+ }
|
|
|
|
|
+ $pdf->setFontSubsetting(true);
|
|
|
|
|
+ $pdf->AddPage();
|
|
|
|
|
+ // 设置字体
|
|
|
|
|
+ $pdf->SetFont('stsongstdlight', '', 10, '', true);
|
|
|
|
|
+ // $image_file = \Yii::$app->basePath . '/../frontendEle/src/static/img/ngds-logo.jpg';
|
|
|
|
|
+// if (!file_exists($image_file)) {
|
|
|
|
|
+// $image_file = \Yii::$app->runtimePath . '/../common/uploads/ngds-logo.jpg';
|
|
|
|
|
+// }
|
|
|
|
|
+ $image_file = \Yii::$app->basePath . '/../ngds-logo.jpg';
|
|
|
|
|
+ $image = file_get_contents($image_file);
|
|
|
|
|
+ $pdf->Image('@' . $image, 15, 12, 20, 7, 'JPG');
|
|
|
|
|
+ $pdf->writeHTML($context);
|
|
|
|
|
+
|
|
|
|
|
+ ob_clean();
|
|
|
|
|
+
|
|
|
|
|
+ $file_name = $orderSn . '.pdf';
|
|
|
|
|
+ $path = 'pdfs/' . $file_name;
|
|
|
|
|
+ $pdf->Output(Yii::$app->basePath . '/web/' . $path, 'F');
|
|
|
|
|
+ @exec('chmod -R 777 /' . Yii::$app->basePath . '/web' . $path);
|
|
|
|
|
+
|
|
|
|
|
+ return static::notice(['fileUrl' => $path, 'targetName' => $file_name]);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|