config; return $config['config_audit_type'][$audit_type] . $config['config_audit'][$audit]; } public function statDate($type, $day) { if ($type == 1) { $string = 'Y年m月'; } elseif ($type == 2) { $string = 'Y年W周'; } else { $string = 'Y年m月d日'; } return date($string, $day); } public function statYes($info, $type, $source = false) { $table = 'cash/' . $type; if ($type == 'shop_sell') { $type = 'shop'; } $info = is_array($info) ? $info : Dever::db($table)->one($info); $other = Dever::db($type . '/info')->find($info[$type . '_id']); if (!$other) { return ''; } if ($type == 'store') { return $this->statDate($info['type'], $info['day']) . '与'.$other['name'].'对账单数量是否正确
对账数量' . $info['num'] . '个'; } return $this->statDate($info['type'], $info['day']) . '与'.$other['name'].'对账单款项是否正确
对账金额¥' . round($info['cash'],2) . '元'; } public function statTime($start, $end) { return date('Y-m-d', $start) . ' ~ ' . date('Y-m-d', $end); } public function orderUpdate_commit($id, $name, $data) { Dever::config('base')->hook = true; $update = array(); $audit = Dever::param('audit', $data); $info = Dever::db('cash/order')->one($id); if ($audit > 1 && $info['refund_id'] && $info['refund_id'] > 0) { Dever::load('shop/lib/refund')->set('buy')->action($info['refund_id'], $audit, false, false); if ($audit == 2) { $state = Dever::db('cash/order')->update(array('where_id' => $id, 'status' => 2, 'operdate' => time(), 'fdate' => time())); $order = Dever::db('shop/buy_order')->find(array('id' => $info['source_order_id'], 'clear' => true)); if ($state && $info['jstype'] == 2 && isset($order['status']) && $order['status'] == 8) { # 如果是退款结算,同时要把主订单也结算 $where = array(); $where['source_order_id'] = $order['id']; $where['jstype'] = 1; $where['audit'] = 1; $info = Dever::db('cash/order')->find($where); if ($info) { $set['status'] = 2; $set['audit'] = 2; $set['where_id'] = $info['id']; $set['operdate'] = time(); $set['fdate'] = time(); Dever::db('cash/order')->update($set); } } } } } # 审核对账 public function audit_api() { Dever::config('base')->hook = true; $id = Dever::input('id'); $type = Dever::input('type', 'shop'); $table = 'cash/' . $type; $data = Dever::db($table)->one($id); if ($data) { Dever::db($table)->update(array('where_id' => $id, 'status' => 2)); if ($type == 'shop_sell' && $data['cash'] > 0) { return 'reload'; $card = Dever::db('cash/order')->getCardAll(array('start'=>$data['start'],'end'=>$data['end'],'pay_type'=>2,'status'=>2,'type'=>1,'type_id'=>$data['shop_id'],'state'=>1)); $shop = Dever::db('shop/info')->find($data['shop_id']); if ($card && $card['cash'] > 0) { $cash = sprintf("%01.2f", $card['cash']); $yue = $shop['price'] + $cash; $explan = date('Y年m月d日',$data['end']).'礼品卡对账金额'; Dever::load('shop/lib/record')->pingtai($data['shop_id'],$shop['sid'],8,$data['shop_id'],$cash,$yue,$explan); } $bao = Dever::db('cash/order')->getCardAll(array('start'=>$data['start'],'end'=>$data['end'],'pay_type'=>3,'status'=>2,'type'=>1,'type_id'=>$data['shop_id'],'state'=>1)); if($bao && $bao['cash']>0){ $shop = Dever::db('shop/info')->find(array('id'=>$shop['id'],'s'=>1)); $cash = sprintf("%01.2f", $bao['cash']); $yue = $shop['price'] + $cash; $explan = date('Y年m月d日',$data['end']).'钱包对账金额'; Dever::load('shop/lib/record')->pingtai($data['shop_id'],$shop['sid'],8,$data['shop_id'],$cash,$yue,$explan); } } } return 'reload'; } # 批量审核对账 public function auditShopMul($id, $name, $data) { Dever::config('base')->hook = true; $table = 'cash/shop'; if ($id) { $list = explode(',', $id); if ($list) { foreach ($list as $k => $v) { $data = Dever::db($table)->one($v); if ($data) { Dever::db($table)->update(array('where_id' => $v, 'status' => 2)); } } } } return 'reload'; } # 审核对账 public function audit_other_api() { $id = Dever::input('id'); $type = Dever::input('type', 'shop'); $table = 'cash/' . $type; $info = Dever::db($table)->one($id); if ($info) { Dever::db($table)->update(array('where_id' => $id, $type . '_status' => 2)); } return 'reload'; } # 查看对账单详情 public function view_api() { $id = Dever::input('id'); if (!$id) { return false; } $show = Dever::input('show', 1); $type = Dever::input('type', 'shop'); $pay_type = 1; $table = 'cash/' . $type; $source_type = $type; if ($type == 'shop') { $search_option_type = 1; $name = '门店'; } if ($type == 'shop_sell') { $search_option_type = 1; $pay_type = '2,3'; $name = '门店零售'; $type = 'shop'; } elseif ($type == 'store') { $search_option_type = 3; $name = '仓库'; } elseif ($type == 'factory') { $search_option_type = 2; $name = '工厂'; } $config = Dever::db($table)->config; $info = Dever::db($table)->one($id); $status = $config['config_status'][$info['status']]; $other_status = $config['config_status'][$info[$type . '_status']]; $other = Dever::db($type . '/info')->find($info[$type . '_id']); $html = '
对账单详情
'; $html .= ''; $html .= ''; $html .= ''; $html .= ''; if ($type == 'store') { $html .= ''; } else { $html .= ''; } if ($show == 1) { $manage_config = Dever::db('main/manage_config')->find(); $s = 2; if ($table == 'cash/shop' && $manage_config['buy_dz'] == 1) { $s = 1; } if ($table == 'cash/shop_sell' && $manage_config['sell_dz'] == 1) { $s = 1; } if ($s == 1) { $html .= ''; } $html .= ''; } else { $html .= ''; } $button = array(); if ($show == 1) { if ($info['status'] == 1) { $url = Dever::url('lib/set.audit&id='.$id.'&type=' . $source_type, 'cash'); $button[] = ''; } $config['phone'] = '联系人:' . $other['truename'] . ',联系电话:' . $other['mobile']; $button[] = ''; $start = date('Y-m-d H:i:s', $info['start']); $end = date('Y-m-d H:i:s', $info['end']); $out = Dever::url('lib/set.excel?id=' . $info['id'] . '&type=' . $source_type, 'cash'); $button[] = '导出对账单'; } elseif ($show == 2) { if ($info[$type . '_status'] == 1 && $show != 1) { $url = Dever::url('lib/set.audit_other&id='.$id.'&type=' . $source_type, 'cash'); $button[] = ''; } $config = Dever::load('factory/admin/auth.config'); $config['phone'] = '联系电话:' . $config['dz_phone']; $button[] = ''; $print = Dever::url('admin/stat.print?id=' . $info['id'] . '&type=' . $source_type, $type); $button[] = '打印对账单'; } $html .= ''; $html .= '
对账'.$name.' '.$this->table(false, array(array($other['name']))).'
对账时间 '.$this->table(false, array(array($this->statDate($info['type'], $info['day'])))).'
对账周期 '.$this->table(false, array(array($this->statTime($info['start'], $info['end'])))).'
商品数量 '.$this->table(false, array(array($info['num']))).'
对账金额 '.$this->table(false, array(array('¥' . round($info['cash'], 2)))).'
'.$name.'对账状态 '.$this->table(false, array(array($other_status))).'
平台对账状态 '.$this->table(false, array(array($status))).'
对账状态 '.$this->table(false, array(array($other_status))).'
功能按钮 '.$this->table(false, array($button)).'
'; $data = $this->getOrderData($type, $info, '', $pay_type); if ($data) { $body = array(); $config = Dever::db('cash/order')->config; foreach ($data as $k => $v) { $cdate = date('Y-m-d H:i', $v['cdate']); $fdate = $v['fdate'] ? date('Y-m-d H:i', $v['fdate']) : ''; $operdate = $v['operdate'] ? date('Y-m-d H:i', $v['operdate']) : ''; $noprice = 2; if ($type == 'factory') { $set_type = 2; $cash = '¥' . round($v['p_cash'], 2); } else { $cash = '¥' . round($v['cash'], 2); $set_type = 1; } if ($show == 1) { if ($v['source_type'] == 4) { $url = Dever::url('project/database/list?project=shop&table=sell_order_goods&order_id='.$v['source_order_id'].'&page_type=1&noprice=' . $noprice . '&type=' . $set_type, 'manage'); } else { $url = Dever::url('project/database/list?project=shop&table=buy_order_goods&order_id='.$v['source_order_id'].'&page_type=1&noprice=' . $noprice . '&type=' . $set_type, 'manage'); } $v['source_order_num'] = ''.$v['source_order_num'].''; $head = array('结算单号', '订货单号', '结算类型', '下单日期', '完成日期', '结算日期', '对账金额'); if ($type == 'store') { $head[6] = '商品数量'; } $head[] = '结算状态'; $d = array ( $v['order_num'], $v['source_order_num'], $config['config_jstype'][$v['jstype']], $cdate, $fdate, $operdate, $cash, ); if ($type == 'store') { $d[6] = $v['num']; } $d[] = '已入账'; $body[] = $d; } else { $head = array('订货单号', '下单日期', '完成日期', '对账金额'); if ($type == 'store') { $head[3] = '商品数量'; } $head[] = '状态'; $d = array ( $v['source_order_num'], $cdate, $fdate, $cash, ); if ($type == 'store') { $d[3] = $v['num']; } $d[] = '已入账'; $body[] = $d; } } $page = Dever::page("current"); $html .= '
对账清单
' . $this->table($head, $body) . $page . '
'; } $html .= '
'; return '
' . $html . '
'; } private function table($head, $data) { $html = ''; if ($head) { $html = ''; $html .= ''; foreach ($head as $k => $v) { $html .= ''; } $html .= ''; $html .= ''; foreach ($data as $k => $v) { $html .= ''; foreach ($v as $k1 => $v1) { $html .= ''; } $html .= ''; } $html .= ''; $html .= '
'.$v.'
'.$v1.'
'; } else { foreach ($data as $k => $v) { $html .= ''; foreach ($v as $k1 => $v1) { $html .= $v1 . '    '; } $html .= ''; } } return $html; } # 导出对账单 public function excel_api() { $type = Dever::input('type'); $id = Dever::input('id'); $table = 'cash/' . $type; $pay_type = 1; if ($type == 'shop_sell') { $pay_type = '2,3'; $type = 'shop'; } $config = Dever::db($table)->config; $info = Dever::db($table)->one($id); $data = $this->getOrderData($type, $info, 'NoPage', $pay_type); $stat_type = Dever::db('cash/shop')->config['config_type']; $other = Dever::db($type . '/info')->find($info[$type . '_id']); $status = $config['config_status'][$info['status']]; $other_status = $config['config_status'][$info[$type . '_status']]; $info['name'] = Dever::load('cash/lib/set')->statDate($stat_type, $info['day']); $info['status_name'] = $status; $file = $other['name'] . '的' . $info['name'] . '对账单'; $header = $body = array(); $header = array ( 'top' => array ( $file . ' ' . $info['status_name'] . ' 对账金额¥' . $info['cash']. ' 商品数量¥' . $info['num'], ), '结算单号', '订货单号', '结算类型', '下单日期', '完成日期', '结算日期', '对账金额', '礼品卡卡号', '礼品卡抵扣金额', ); if ($type == 'store') { $head[6] = '商品数量'; } $head[] = '结算状态'; if ($data) { $body = array(); foreach ($data as $k => $v) { $cdate = date('Y-m-d H:i', $v['cdate']); $fdate = $v['fdate'] ? date('Y-m-d H:i', $v['fdate']) : ''; $operdate = $v['operdate'] ? date('Y-m-d H:i', $v['operdate']) : ''; if ($type == 'factory') { $cash = '¥' . round($v['p_cash'], 2); } else { $cash = '¥' . round($v['cash'], 2); } $card_code_card = ''; $card_code_cash = ''; if ($v['pay_type'] == 2) { $sell_order = Dever::db('shop/sell_order')->find($v['source_order_id']); if ($sell_order) { $card_code_card = $sell_order['card_code_card']; $card_code_cash = $sell_order['card_code_cash']; } } $jstype = Dever::db('cash/order')->config['config_jstype'][$v['jstype']]; $body[$k][0] = $v['order_num']; $body[$k][1] = $v['source_order_num']; $body[$k][2] = $jstype; $body[$k][3] = $cdate; $body[$k][4] = $operdate; $body[$k][5] = $fdate; $body[$k][6] = $cash; if ($type == 'store') { $body[$k][6] = $v['num']; } $body[$k][7] = $card_code_card; $body[$k][8] = $card_code_cash; $body[$k][] = '已入账'; } } Dever::excelExport($body, $header, $file); } # 打印订单单 public function printer($user) { $id = Dever::input('id'); if (!$id) { return false; } $type = Dever::input('type', 'shop'); $table = 'cash/' . $type; $pay_type = 1; if ($type == 'shop') { $name = '门店'; } elseif ($type == 'shop_sell') { $pay_type = '2,3'; $name = '门店'; $type = 'shop'; } elseif ($type == 'store') { $name = '仓库'; } elseif ($type == 'factory') { $name = '工厂'; } $config = Dever::db($table)->config; $info = Dever::db($table)->one($id); $status = $config['config_status'][$info['status']]; $other_status = $config['config_status'][$info[$type . '_status']]; $other = Dever::db($type . '/info')->find($info[$type . '_id']); $member = Dever::db($type . '/member')->find($user['id']); $factory_config = Dever::db('main/factory_config')->find(); $main_config = Dever::db('main/config')->find(); $pdf = Dever::load('pdf/lib/base')->init(); $pdf->hr('-', $other['name']); $pdf->br()->font(20)->center('对账周期:' . $this->statTime($info['start'], $info['end'])); $pdf->font(10); $pdf->br(); $pdf->br()->left('对账日期:' . $this->statDate($info['type'], $info['day']), 80)->left('制单人:' . $member['name'], 60)->left('制单时间:' . date('Y-m-d H:i'), 40); $pdf->hr(); $data = $this->getOrderData($type, $info, 'NoPage', $pay_type); $body = array(); $body_total = array(); $body_total['cash'] = 0; $body_total['num'] = 0; if ($data) { foreach ($data as $k => $v) { $cdate = date('Y-m-d H:i', $v['cdate']); $fdate = $v['fdate'] ? date('Y-m-d H:i', $v['fdate']) : ''; $operdate = $v['operdate'] ? date('Y-m-d H:i', $v['operdate']) : ''; $prefix = '¥'; if ($type == 'store') { $cash = $v['num']; $prefix = ''; } elseif ($type == 'factory') { $cash = $v['p_cash']; } else { $cash = $v['cash']; } $cash = round($cash, 2); $body[] = array ( $v['source_order_num'], $cdate, $fdate, $prefix . $cash, '已入账' ); $body_total['cash'] += $cash; $body_total['num'] += 1; } } $head = array(array('订单号', 60), array('下单日期', 43), array('完成日期', 43), array('对账金额', 30), array('状态', 20)); if ($type == 'store') { $head[3][0] = '对账数量'; } if ($body) { $pdf->br(); foreach ($head as $k => $v) { $pdf->left($v[0], $v[1]); } foreach ($body as $k => $v) { $pdf->br(); foreach ($head as $k1 => $v1) { $pdf->left($v[$k1], $v1[1]); } } $pdf->br(); if ($type == 'store') { $pdf->right('共'.$body_total['num'].'个订单,合计对账数量' . $body_total['cash'] . '个'); } else { $pdf->right('共'.$body_total['num'].'个订单,合计对账金额¥' . $body_total['cash'] . '元'); } $pdf->hr(); } $pdf->br(1); //$pdf->SetY(-100); $pdf->right('如遇任何问题请致电客服'); $pdf->br(); $pdf->font(20); $pdf->left($main_config['name'], 160); $pdf->font(10); $pdf->right('电话:' . $factory_config['phone'], 30); $pdf->br(); $pdf->left($main_config['site'], 160); $pdf->font(10); $pdf->right($main_config['worktime'], 30); $pdf->out('对账单'); } # 获取对账单数据 public function getOrderData($type, $info, $page = 'NoPage', $pay_type = 1) { $id = $info[$type . '_id'];; if ($type == 'shop' || $type == 'shop_sell') { $where['type'] = 1; $where['type_id'] = $id; $where['pay_type'] = $pay_type; $m = 'getAll'; } elseif ($type == 'factory') { $where['source_type'] = 3; $where['source_id'] = $id; $m = 'getAll'; } else { $where['type'] = 2; $where['type_id'] = $id; $where['source_type'] = 2; $where['source_id'] = $id; $m = 'getAllByStore'; } $m .= $page; $where['status'] = 2; $where['start'] = $info['start']; $where['end'] = $info['end']; return Dever::db('cash/order')->$m($where); } }