Excel.php 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890
  1. <?php
  2. namespace Shop\Src;
  3. use Dever;
  4. set_time_limit(0);
  5. class Excel
  6. {
  7. # 门店零售单
  8. public function sell_order($data)
  9. {
  10. if (!$data) {
  11. Dever::alert('无导出数据');
  12. }
  13. $file = Dever::input('excel_name');
  14. $header = array('门店编号', '门店名称', '门店类型', '订单号', '购买人', '商品编码', '商品名称', '规格型号', '商品单价', '购买数量', '商品合计金额', '配送类型', '订单类型', '下单时间', '付款时间', '发货时间', '订单合计金额', '订单实付金额', '已退订单金额', '支付渠道', '订单状态');
  15. $table = 'shop/info';
  16. $body = array();
  17. $status = Dever::db('shop/sell_order')->config['status_manage'];
  18. $method = Dever::db('shop/sell_order')->config['method'];
  19. $pay_method = Dever::db('shop/sell_order')->config['pay_method'];
  20. $pay_type = Dever::db('shop/sell_order')->config['pay_type'];
  21. $info_type = Dever::db($table)->config['config_type'];
  22. foreach ($data as $k => $v) {
  23. if (!is_array($v)) {
  24. continue;
  25. }
  26. $info = Dever::db($table)->find($v['shop_id']);
  27. $goods = Dever::db('shop/sell_order_goods')->select(array('order_id' => $v['id']));
  28. $ps = Dever::db('shop/sell_order_ps')->find(array('order_id' => $v['id']));
  29. $cdate = strstr($v['cdate'], '-') ? $v['cdate'] : date('Y-m-d H:i', $v['cdate']);
  30. $paydate = isset($v['paydate']) && $v['paydate'] ? date('Y-m-d H:i', $v['paydate']) : '-';
  31. $operdate = ($ps && $ps['cdate']) ? date('Y-m-d H:i', $ps['cdate']) : '-';
  32. $total_cash = Dever::load("shop/lib/manage.getTotalCash", $v['id']);
  33. $v['refund_cash'] = $v['refund_cash'] ? $v['refund_cash'] : 0;
  34. $user = Dever::load("shop/lib/manage.user", $v['id']);
  35. foreach ($goods as $k1 => $v1) {
  36. $goods_info = Dever::load('goods/lib/info')->getInfoBySku($v1['goods_id'], $v1['sku_id']);
  37. if (isset($goods_info['sku'])) {
  38. $sku = $goods_info['sku']['string'];
  39. } else {
  40. $sku = '';
  41. }
  42. if ($v['status'] == 8 || $v1['status'] == 3) {
  43. $num = $v1['num'];
  44. $v['refund_cash'] = $v1['price']*$v1['num'];
  45. $refund_status = '已退款';
  46. } else {
  47. $num = '0';
  48. $v['refund_cash'] = '0';
  49. $refund_status = '未退款';
  50. }
  51. $d = array
  52. (
  53. $info['sid'],
  54. $info['name'],
  55. $info_type[$info['type']],
  56. $v['order_num'],
  57. $user,
  58. $goods_info['code'],
  59. $goods_info['name'],
  60. $sku,
  61. $v1['price'],
  62. $v1['num'],
  63. $v1['price']*$v1['num'],
  64. $method[$v['method']],
  65. $pay_method[$v['pay_method']],
  66. $cdate,
  67. $paydate,
  68. $operdate,
  69. $total_cash,
  70. $v['price'],
  71. $v['refund_cash'],
  72. $pay_type[$v['pay_type']],
  73. $status[$v['status']],
  74. );
  75. $body[] = $d;
  76. if ($goods_info['price_type'] > 2 && isset($goods_info['goods']) && is_array($goods_info['goods'])) {
  77. foreach ($goods_info['goods'] as $v2) {
  78. if ($v2['code']) {
  79. //$v2['code'] = '-' . $v2['code'];
  80. }
  81. $p = $v2['price'];
  82. if (is_numeric($v2['num']) && is_numeric($v2['price'])) {
  83. $p = $v2['price']*$v2['num'];
  84. }
  85. $d = array
  86. (
  87. $info['sid'],
  88. $info['name'],
  89. $info_type[$info['type']],
  90. $v['order_num'],
  91. $user,
  92. $v2['code'],
  93. $v2['name'] . '('.$goods_info['name'].')',
  94. $sku,
  95. $v2['price'],
  96. $v2['num'],
  97. $p,
  98. $method[$v['method']],
  99. $pay_method[$v['pay_method']],
  100. $cdate,
  101. $paydate,
  102. $operdate,
  103. '',
  104. '',
  105. '',
  106. $pay_type[$v['pay_type']],
  107. $status[$v['status']],
  108. );
  109. $body[] = $d;
  110. }
  111. }
  112. }
  113. }
  114. Dever::excelExport($body, $header, $file);
  115. }
  116. # 平台零售订单
  117. public function p_sell_order($data)
  118. {
  119. if (!$data) {
  120. Dever::alert('无导出数据');
  121. }
  122. $file = Dever::input('excel_name');
  123. $header = array('订单号', '收件人', '收件人手机', '收件人地址', '商品编码', '商品名称', '规格型号', '商品单价', '购买数量', '商品合计金额', '下单时间', '付款时间', '发货时间', '收货时间' , '订单总数量', '订单总金额', '订单实付金额', '订单状态', '退款状态', '退款金额');
  124. $table = 'shop/info';
  125. $body = array();
  126. $status = Dever::db('shop/sell_order')->config['status_manage'];
  127. $info_type = Dever::db($table)->config['config_type'];
  128. foreach ($data as $k => $v) {
  129. if (!is_array($v)) {
  130. continue;
  131. }
  132. $info = Dever::db($table)->find($v['shop_id']);
  133. if ($v['store_id']) {
  134. $store = Dever::db('store/info')->find($v['store_id']);
  135. } else {
  136. $store['name'] = '';
  137. }
  138. $goods = Dever::db('shop/sell_order_goods')->select(array('order_id' => $v['id']));
  139. $ps = Dever::db('shop/sell_order_ps')->find(array('order_id' => $v['id']));
  140. $cdate = strstr($v['cdate'], '-') ? $v['cdate'] : date('Y-m-d H:i', $v['cdate']);
  141. $paydate = isset($v['paydate']) && $v['paydate'] ? date('Y-m-d H:i', $v['paydate']) : '-';
  142. $operdate = ($ps && $ps['cdate']) ? date('Y-m-d H:i', $ps['cdate']) : '-';
  143. $fdate = strstr($v['fdate'], '-') ? $v['fdate'] : date('Y-m-d H:i', $v['fdate']);
  144. $refund_status = Dever::load("shop/lib/manage.buyInfoRefundStatus", $v['id'], 'sell_order');
  145. $total_cash = Dever::load("shop/lib/manage.getTotalCash", $v['id']);
  146. $v['refund_cash'] = $v['refund_cash'] ? $v['refund_cash'] : 0;
  147. $address = Dever::load('passport/address')->getOne($v['uid'], $v['address_id']);
  148. foreach ($goods as $k1 => $v1) {
  149. $goods_info = Dever::load('goods/lib/info')->getInfoBySku($v1['goods_id'], $v1['sku_id']);
  150. if (isset($goods_info['sku'])) {
  151. $sku = $goods_info['sku']['string'];
  152. } else {
  153. $sku = '';
  154. }
  155. if ($v['status'] == 8 || $v1['status'] == 3) {
  156. $num = $v1['num'];
  157. $v['refund_cash'] = $v1['price']*$v1['num'];
  158. $refund_status = '已退款';
  159. } else {
  160. $num = '0';
  161. $v['refund_cash'] = '0';
  162. $refund_status = '未退款';
  163. }
  164. $d = array
  165. (
  166. $v['order_num'],
  167. isset($address['contact']) ? $address['contact'] : '',
  168. isset($address['mobile']) ? $address['mobile'] : '',
  169. isset($address['address_info']) ? $address['address_info'] : '',
  170. //$store['name'],
  171. $goods_info['code'],
  172. $goods_info['name'],
  173. $sku,
  174. $v1['price'],
  175. $v1['num'],
  176. $v1['price']*$v1['num'],
  177. $cdate,
  178. $paydate,
  179. $operdate,
  180. $fdate,
  181. $v['num'],
  182. $total_cash,
  183. $v['price'],
  184. $status[$v['status']],
  185. $refund_status,
  186. $v['refund_cash'],
  187. );
  188. $body[] = $d;
  189. if ($goods_info['price_type'] > 2 && isset($goods_info['goods']) && is_array($goods_info['goods'])) {
  190. foreach ($goods_info['goods'] as $v2) {
  191. if ($v2['code']) {
  192. //$v2['code'] = '-' . $v2['code'];
  193. }
  194. $p = $v2['price'];
  195. if (is_numeric($v2['num']) && is_numeric($v2['price'])) {
  196. $p = $v2['price']*$v2['num'];
  197. }
  198. $d = array
  199. (
  200. $v['order_num'],
  201. isset($address['contact']) ? $address['contact'] : '',
  202. isset($address['mobile']) ? $address['mobile'] : '',
  203. isset($address['address_info']) ? $address['address_info'] : '',
  204. //$store['name'],
  205. $v2['code'],
  206. $v2['name'] . '('.$goods_info['name'].')',
  207. $sku,
  208. $v2['price'],
  209. $v2['num'],
  210. $p,
  211. $cdate,
  212. $paydate,
  213. $operdate,
  214. $fdate,
  215. '',
  216. '',
  217. '',
  218. $status[$v['status']],
  219. '',
  220. '',
  221. );
  222. $body[] = $d;
  223. }
  224. }
  225. }
  226. }
  227. Dever::excelExport($body, $header, $file);
  228. }
  229. # 门店订货单
  230. public function buy_order($data)
  231. {
  232. if (!$data) {
  233. Dever::alert('无导出数据');
  234. }
  235. $file = Dever::input('excel_name');
  236. $header = array('门店编号', '门店名称', '门店类型', '供货商', '订货单号', '订货总数量', '订货单总金额', '商品编码', '商品名称', '规格型号', '订货单价', '订货数量', '商品合计金额', '订货日期', '订货单状态', '退款状态', '退款金额');
  237. $table = 'shop/info';
  238. $body = array();
  239. $status = Dever::db('shop/buy_order')->config['status'];
  240. //$refund_status = Dever::db('shop/buy_order')->config['refund_status'];
  241. $info_type = Dever::db($table)->config['config_type'];
  242. foreach ($data as $k => $v) {
  243. if (!is_array($v)) {
  244. continue;
  245. }
  246. $info = Dever::db($table)->find($v['type_id']);
  247. $goods = Dever::db('shop/buy_order_goods')->select(array('order_id' => $v['id']));
  248. $cdate = strstr($v['cdate'], '-') ? $v['cdate'] : date('Y-m-d H:i', $v['cdate']);
  249. $refund_status = Dever::load("shop/lib/manage.buyInfoRefundStatus", $v['id']);
  250. $source = Dever::load("shop/lib/manage.buyInfo", $v['source_type'], $v['source_id']);
  251. foreach ($goods as $k1 => $v1) {
  252. $goods_info = Dever::load('goods/lib/info')->getInfoBySku($v1['goods_id'], $v1['sku_id']);
  253. if (isset($goods_info['sku'])) {
  254. $sku = $goods_info['sku']['string'];
  255. } else {
  256. $sku = '';
  257. }
  258. if ($v['status'] == 8 || $v1['status'] == 3) {
  259. $num = $v1['num'];
  260. $v['refund_cash'] = $v1['price']*$v1['num'];
  261. $refund_status = '已退款';
  262. } else {
  263. $num = '0';
  264. $v['refund_cash'] = '0';
  265. $refund_status = '未退款';
  266. }
  267. $d = array
  268. (
  269. $info['sid'],
  270. $info['name'],
  271. $info_type[$info['type']],
  272. $source,
  273. $v['order_num'],
  274. $v['num'],
  275. $v['price'],
  276. $goods_info['code'],
  277. $goods_info['name'],
  278. $sku,
  279. $v1['price'],
  280. $v1['num'],
  281. $v1['price']*$v1['num'],
  282. $cdate,
  283. $status[$v['status']],
  284. $refund_status,
  285. $v['refund_cash'],
  286. );
  287. $body[] = $d;
  288. }
  289. }
  290. Dever::excelExport($body, $header, $file);
  291. }
  292. # 仓库订货单
  293. public function store_buy_order($data)
  294. {
  295. if (!$data) {
  296. Dever::alert('无导出数据');
  297. }
  298. $file = Dever::input('excel_name');
  299. $header = array('仓库名称', '供货商', '订货单号', '订货总数量', '入库单价', '商品编码', '商品名称', '规格型号', '商品订货数量', '订货日期', '发货日期', '收货日期', '订货单状态', '已退商品数量');
  300. $table = 'store/info';
  301. $body = array();
  302. $status = Dever::db('shop/buy_order')->config['status'];
  303. //$refund_status = Dever::db('shop/buy_order')->config['refund_status'];
  304. foreach ($data as $k => $v) {
  305. if (!is_array($v)) {
  306. continue;
  307. }
  308. $info = Dever::db($table)->find($v['type_id']);
  309. $goods = Dever::db('shop/buy_order_goods')->select(array('order_id' => $v['id']));
  310. $ps = Dever::db('shop/buy_order_ps')->find(array('order_id' => $v['id']));
  311. $cdate = strstr($v['cdate'], '-') ? $v['cdate'] : date('Y-m-d H:i', $v['cdate']);
  312. $fdate = ($ps && $ps['cdate']) ? date('Y-m-d H:i', $ps['cdate']) : '-';
  313. $ydate = ($ps && $ps['ydate']) ? date('Y-m-d H:i', $ps['ydate']) : '-';
  314. $num = Dever::load("shop/lib/manage.buyInfoRefundNum", $v['id']);
  315. $refund_status = Dever::load("shop/lib/manage.buyInfoRefundStatus", $v['id']);
  316. $v['refund_cash'] = $v['refund_cash'] ? $v['refund_cash'] : 0;
  317. $source = Dever::load("shop/lib/manage.buyInfo", $v['source_type'], $v['source_id']);
  318. foreach ($goods as $k1 => $v1) {
  319. $goods_info = Dever::load('goods/lib/info')->getInfoBySku($v1['goods_id'], $v1['sku_id']);
  320. if (isset($goods_info['sku'])) {
  321. $sku = $goods_info['sku']['string'];
  322. } else {
  323. $sku = '';
  324. }
  325. if ($v['status'] == 8 || $v1['status'] == 3) {
  326. $num = $v1['num'];
  327. $refund_status = '已退款';
  328. } else {
  329. $num = '0';
  330. $refund_status = '未退款';
  331. }
  332. if ($v['source_type'] == 2) {
  333. $v1['p_price'] = 0;
  334. }
  335. $d = array
  336. (
  337. $info['name'],
  338. $source,
  339. $v['order_num'],
  340. $v['num'],
  341. $v1['p_price'],
  342. $goods_info['code'],
  343. $goods_info['name'],
  344. $sku,
  345. $v1['num'],
  346. $cdate,
  347. $fdate,
  348. $ydate,
  349. $status[$v['status']],
  350. $num,
  351. );
  352. $body[] = $d;
  353. }
  354. }
  355. Dever::excelExport($body, $header, $file);
  356. }
  357. # 仓库发货单
  358. public function store_buy_order_fa($data)
  359. {
  360. if (!$data) {
  361. Dever::alert('无导出数据');
  362. }
  363. $file = Dever::input('excel_name');
  364. $header = array('仓库名称', '门店编号', '门店名称', '门店类型', '订货单号', '订货总数量', '订货单总金额', '商品编码', '商品名称', '规格型号', '订货单价', '订货数量', '商品合计金额', '订货日期', '发货日期', '订货单状态', '退款状态', '已退商品数量', '退款金额');
  365. $table = 'shop/info';
  366. $body = array();
  367. $status = Dever::db('shop/buy_order')->config['status'];
  368. //$refund_status = Dever::db('shop/buy_order')->config['refund_status'];
  369. $info_type = Dever::db($table)->config['config_type'];
  370. foreach ($data as $k => $v) {
  371. if (!is_array($v)) {
  372. continue;
  373. }
  374. $info = Dever::db($table)->find($v['type_id']);
  375. $goods = Dever::db('shop/buy_order_goods')->select(array('order_id' => $v['id']));
  376. $ps = Dever::db('shop/buy_order_ps')->find(array('order_id' => $v['id']));
  377. $cdate = strstr($v['cdate'], '-') ? $v['cdate'] : date('Y-m-d H:i', $v['cdate']);
  378. $fdate = ($ps && $ps['cdate']) ? date('Y-m-d H:i', $ps['cdate']) : '-';
  379. $ydate = ($ps && $ps['ydate']) ? date('Y-m-d H:i', $ps['ydate']) : '-';
  380. $num = Dever::load("shop/lib/manage.buyInfoRefundNum", $v['id']);
  381. $refund_status = Dever::load("shop/lib/manage.buyInfoRefundStatus", $v['id']);
  382. $v['refund_cash'] = $v['refund_cash'] ? $v['refund_cash'] : 0;
  383. $source = Dever::load("shop/lib/manage.buyInfo", $v['source_type'], $v['source_id']);
  384. foreach ($goods as $k1 => $v1) {
  385. $goods_info = Dever::load('goods/lib/info')->getInfoBySku($v1['goods_id'], $v1['sku_id']);
  386. if (isset($goods_info['sku'])) {
  387. $sku = $goods_info['sku']['string'];
  388. } else {
  389. $sku = '';
  390. }
  391. if ($v['status'] == 8 || $v1['status'] == 3) {
  392. $num = $v1['num'];
  393. $v['refund_cash'] = $v1['price']*$v1['num'];
  394. $refund_status = '已退款';
  395. } else {
  396. $num = '0';
  397. $v['refund_cash'] = '0';
  398. $refund_status = '未退款';
  399. }
  400. $d = array
  401. (
  402. $source,
  403. $info['sid'],
  404. $info['name'],
  405. $info_type[$info['type']],
  406. $v['order_num'],
  407. $v['num'],
  408. $v['price'],
  409. $goods_info['code'],
  410. $goods_info['name'],
  411. $sku,
  412. $v1['price'],
  413. $v1['num'],
  414. $v1['price']*$v1['num'],
  415. $cdate,
  416. $fdate,
  417. $status[$v['status']],
  418. $refund_status,
  419. $num,
  420. $v['refund_cash'],
  421. );
  422. $body[] = $d;
  423. }
  424. }
  425. Dever::excelExport($body, $header, $file);
  426. }
  427. # 仓库调拨单
  428. public function store_buy_order_diao($data)
  429. {
  430. if (!$data) {
  431. Dever::alert('无导出数据');
  432. }
  433. $file = Dever::input('excel_name');
  434. $header = array('发货仓库名称', '收货仓库名称', '订货单号', '订货总数量', '商品编码', '商品名称', '规格型号', '订货数量', '订货日期', '发货日期', '订货单状态', '退款状态', '已退商品数量');
  435. $table = 'store/info';
  436. $body = array();
  437. $status = Dever::db('shop/buy_order')->config['status'];
  438. //$refund_status = Dever::db('shop/buy_order')->config['refund_status'];
  439. foreach ($data as $k => $v) {
  440. if (!is_array($v)) {
  441. continue;
  442. }
  443. $info = Dever::db($table)->find($v['type_id']);
  444. $goods = Dever::db('shop/buy_order_goods')->select(array('order_id' => $v['id']));
  445. $ps = Dever::db('shop/buy_order_ps')->find(array('order_id' => $v['id']));
  446. $cdate = strstr($v['cdate'], '-') ? $v['cdate'] : date('Y-m-d H:i', $v['cdate']);
  447. $fdate = ($ps && $ps['cdate']) ? date('Y-m-d H:i', $ps['cdate']) : '-';
  448. $ydate = ($ps && $ps['ydate']) ? date('Y-m-d H:i', $ps['ydate']) : '-';
  449. $num = Dever::load("shop/lib/manage.buyInfoRefundNum", $v['id']);
  450. $refund_status = Dever::load("shop/lib/manage.buyInfoRefundStatus", $v['id']);
  451. $v['refund_cash'] = $v['refund_cash'] ? $v['refund_cash'] : 0;
  452. $source = Dever::load("shop/lib/manage.buyInfo", $v['source_type'], $v['source_id']);
  453. foreach ($goods as $k1 => $v1) {
  454. $goods_info = Dever::load('goods/lib/info')->getInfoBySku($v1['goods_id'], $v1['sku_id']);
  455. if (isset($goods_info['sku'])) {
  456. $sku = $goods_info['sku']['string'];
  457. } else {
  458. $sku = '';
  459. }
  460. if ($v['status'] == 8 || $v1['status'] == 3) {
  461. $num = $v1['num'];
  462. $v['refund_cash'] = $v1['price']*$v1['num'];
  463. $refund_status = '已退款';
  464. } else {
  465. $num = '0';
  466. $v['refund_cash'] = '0';
  467. $refund_status = '未退款';
  468. }
  469. $d = array
  470. (
  471. $source,
  472. $info['name'],
  473. $v['order_num'],
  474. $v['num'],
  475. $goods_info['code'],
  476. $goods_info['name'],
  477. $sku,
  478. $v1['num'],
  479. $cdate,
  480. $fdate,
  481. $status[$v['status']],
  482. $refund_status,
  483. $num,
  484. );
  485. $body[] = $d;
  486. }
  487. }
  488. Dever::excelExport($body, $header, $file);
  489. }
  490. # 工厂发货单
  491. public function factory_buy_order_fa($data)
  492. {
  493. if (!$data) {
  494. Dever::alert('无导出数据');
  495. }
  496. $file = Dever::input('excel_name');
  497. $header = array('工厂名称', '收件人名称', '收件人类型', '订货单号', '订货总数量', '订货单总金额', '商品编码', '商品名称', '规格型号', '商品进货单价', '订货数量', '商品合计金额', '订货日期', '发货日期', '订货单状态', '已退商品数量', '退款金额');
  498. $table = 'shop/info';
  499. $body = array();
  500. $status = Dever::db('shop/buy_order')->config['status'];
  501. //$refund_status = Dever::db('shop/buy_order')->config['refund_status'];
  502. $info_type = Dever::db($table)->config['config_type'];
  503. $order_type = Dever::db('shop/buy_order')->config['config_type'];
  504. foreach ($data as $k => $v) {
  505. if (!is_array($v)) {
  506. continue;
  507. }
  508. if ($v['type'] == 1) {
  509. $info = Dever::db('shop/info')->find($v['type_id']);
  510. } elseif ($v['type'] == 2) {
  511. $info = Dever::db('store/info')->find($v['type_id']);
  512. }
  513. $goods = Dever::db('shop/buy_order_goods')->select(array('order_id' => $v['id']));
  514. $ps = Dever::db('shop/buy_order_ps')->find(array('order_id' => $v['id']));
  515. $cdate = strstr($v['cdate'], '-') ? $v['cdate'] : date('Y-m-d H:i', $v['cdate']);
  516. $fdate = ($ps && $ps['cdate']) ? date('Y-m-d H:i', $ps['cdate']) : '-';
  517. $ydate = ($ps && $ps['ydate']) ? date('Y-m-d H:i', $ps['ydate']) : '-';
  518. $num = Dever::load("shop/lib/manage.buyInfoRefundNum", $v['id']);
  519. $refund_status = Dever::load("shop/lib/manage.buyInfoRefundStatus", $v['id']);
  520. $v['refund_p_cash'] = $v['refund_p_cash'] ? $v['refund_p_cash'] : 0;
  521. $source = Dever::load("shop/lib/manage.buyInfo", $v['source_type'], $v['source_id']);
  522. foreach ($goods as $k1 => $v1) {
  523. $goods_info = Dever::load('goods/lib/info')->getInfoBySku($v1['goods_id'], $v1['sku_id']);
  524. if (isset($goods_info['sku'])) {
  525. $sku = $goods_info['sku']['string'];
  526. } else {
  527. $sku = '';
  528. }
  529. if ($v['status'] == 8 || $v1['status'] == 3) {
  530. $num = $v1['num'];
  531. $v['refund_p_cash'] = $v1['p_price']*$v1['num'];
  532. } else {
  533. $num = '0';
  534. $v['refund_p_cash'] = '0';
  535. }
  536. $d = array
  537. (
  538. $source,
  539. $info['name'],
  540. $order_type[$v['type']],
  541. $v['order_num'],
  542. $v['num'],
  543. $v['p_price'],
  544. $goods_info['code'],
  545. $goods_info['name'],
  546. $sku,
  547. $v1['p_price'],
  548. $v1['num'],
  549. $v1['p_price']*$v1['num'],
  550. $cdate,
  551. $fdate,
  552. $status[$v['status']],
  553. $num,
  554. $v['refund_p_cash'],
  555. );
  556. $body[] = $d;
  557. }
  558. }
  559. Dever::excelExport($body, $header, $file);
  560. }
  561. # 门店出库单
  562. public function out_order($data)
  563. {
  564. if (!$data) {
  565. Dever::alert('无导出数据');
  566. }
  567. $file = Dever::input('excel_name');
  568. $header = array('门店编号', '门店名称', '门店类型', '出库单号', '出库总数量', '出库总金额', '商品编码', '商品名称', '规格型号', '订货单价', '订货数量', '商品合计金额', '出库日期', '出库类型', '出库状态');
  569. $table = 'shop/info';
  570. $body = array();
  571. $status = Dever::db('shop/out_order')->config['config_status'];
  572. $config_type = Dever::db('shop/out_order')->config['config_type'];
  573. $config_type = $config_type();
  574. $info_type = Dever::db($table)->config['config_type'];
  575. foreach ($data as $k => $v) {
  576. if (!is_array($v)) {
  577. continue;
  578. }
  579. $info = Dever::db($table)->find($v['type_id']);
  580. $goods = Dever::db('shop/out_order_goods')->select(array('order_id' => $v['id']));
  581. $cdate = strstr($v['cdate'], '-') ? $v['cdate'] : date('Y-m-d H:i', $v['cdate']);
  582. foreach ($goods as $k1 => $v1) {
  583. $goods_info = Dever::load('goods/lib/info')->getInfoBySku($v1['goods_id'], $v1['sku_id']);
  584. if (isset($goods_info['sku'])) {
  585. $sku = $goods_info['sku']['string'];
  586. } else {
  587. $sku = '';
  588. }
  589. $d = array
  590. (
  591. $info['sid'],
  592. $info['name'],
  593. $info_type[$info['type']],
  594. $v['order_num'],
  595. $v['num'],
  596. $v['price'],
  597. $goods_info['code'],
  598. $goods_info['name'],
  599. $sku,
  600. $v1['price'],
  601. $v1['num'],
  602. $v1['price']*$v1['num'],
  603. $cdate,
  604. $config_type[$v['out_type']]['name'],
  605. $status[$v['status']],
  606. );
  607. $body[] = $d;
  608. }
  609. }
  610. Dever::excelExport($body, $header, $file);
  611. }
  612. # 仓库出库单
  613. public function store_out_order($data)
  614. {
  615. if (!$data) {
  616. Dever::alert('无导出数据');
  617. }
  618. $file = Dever::input('excel_name');
  619. $header = array('仓库名称', '出库单号', '出库总数量', '出库总金额', '商品编码', '商品名称', '规格型号', '门店进货单价', '订货数量', '商品合计金额', '出库日期', '出库类型', '出库状态');
  620. $table = 'store/info';
  621. $body = array();
  622. $status = Dever::db('shop/out_order')->config['config_status'];
  623. $config_type = Dever::db('shop/out_order')->config['config_type'];
  624. $config_type = $config_type();
  625. foreach ($data as $k => $v) {
  626. if (!is_array($v)) {
  627. continue;
  628. }
  629. $info = Dever::db($table)->find($v['type_id']);
  630. $goods = Dever::db('shop/out_order_goods')->select(array('order_id' => $v['id']));
  631. $cdate = strstr($v['cdate'], '-') ? $v['cdate'] : date('Y-m-d H:i', $v['cdate']);
  632. foreach ($goods as $k1 => $v1) {
  633. $goods_info = Dever::load('goods/lib/info')->getInfoBySku($v1['goods_id'], $v1['sku_id']);
  634. if (isset($goods_info['sku'])) {
  635. $sku = $goods_info['sku']['string'];
  636. } else {
  637. $sku = '';
  638. }
  639. $d = array
  640. (
  641. $info['name'],
  642. $v['order_num'],
  643. $v['num'],
  644. $v['price'],
  645. $goods_info['code'],
  646. $goods_info['name'],
  647. $sku,
  648. $v1['price'],
  649. $v1['num'],
  650. $v1['price']*$v1['num'],
  651. $cdate,
  652. $config_type[$v['out_type']]['name'],
  653. $status[$v['status']],
  654. );
  655. $body[] = $d;
  656. }
  657. }
  658. Dever::excelExport($body, $header, $file);
  659. }
  660. public function goods_log()
  661. {
  662. //Array ( [search_option_state] => 1 [search_api_goods_id] => 猪肉 [search_api_goods-info-code] => [search_option_status] => 0 [search_option_store_id] => 6 [search_option_start_cdate] => [search_option_end_cdate] => [search_option_sday] => 0 )
  663. $data = Dever::input();
  664. $where = array();
  665. if (isset($data['search_option_store_id']) && $data['search_option_store_id']) {
  666. $where['store_id'] = $data['search_option_store_id'];
  667. }
  668. if (isset($data['search_option_status']) && $data['search_option_status']) {
  669. $where['status'] = $data['search_option_status'];
  670. }
  671. if (isset($data['search_option_start_cdate']) && $data['search_option_start_cdate']) {
  672. $where['start'] = $data['search_option_start_cdate'];
  673. }
  674. if (isset($data['search_option_end_cdate']) && $data['search_option_end_cdate']) {
  675. $where['end'] = $data['search_option_end_cdate'];
  676. }
  677. if (isset($data['search_api_goods_id']) && $data['search_api_goods_id']) {
  678. $goods_info = Dever::db('goods/info')->like(array('name' => $data['search_api_goods_id']));
  679. if ($goods_info) {
  680. $where['goods_id'] = array_keys($goods_info);
  681. }
  682. }
  683. if (isset($data['search_api_goods-info-code']) && $data['search_api_goods-info-code']) {
  684. $goods_sku = Dever::db('goods/info_sku')->like(array('code' => $data['search_api_goods-info-code']));
  685. if ($goods_sku) {
  686. $where['sku_id'] = array_keys($goods_sku);
  687. }
  688. }
  689. $goods = Dever::db('store/goods_log')->getDataByDate($where);
  690. $file = '仓库调整明细';
  691. $header = array('仓库名称', '商品编码', '商品名称', '规格型号', '当前库存', '占用库存', '在途库存', '总库存', '调整数量', '调整后库存', '调整后总库存', '调整时间');
  692. $body = array();
  693. if ($goods) {
  694. foreach ($goods as $k => $v) {
  695. $info = Dever::db('store/info')->find($v['store_id']);
  696. $goods_info = Dever::load('goods/lib/info')->getInfoBySku($v['goods_id'], $v['sku_id']);
  697. if (isset($goods_info['sku'])) {
  698. $sku = $goods_info['sku']['string'];
  699. } else {
  700. $sku = '';
  701. }
  702. $cdate = date('Y-m-d H:i', $v['cdate']);
  703. $d = array
  704. (
  705. $info['name'],
  706. $goods_info['code'],
  707. $goods_info['name'],
  708. $sku,
  709. $v['cur_num'],
  710. $v['sell_num'],
  711. $v['online_num'],
  712. $v['total_num'],
  713. $v['num'],
  714. $v['after_cur_num'],
  715. $v['after_total_num'],
  716. $cdate,
  717. );
  718. $body[] = $d;
  719. }
  720. } else {
  721. Dever::alert('无导出数据');
  722. }
  723. Dever::excelExport($body, $header, $file);
  724. }
  725. }