decode ( $_COOKIE ["staff"] ); header ( 'Content-Type:text/html;charset=utf-8' ); $moldList = $invoiceManage->getInvoiceByStaff ( $sid ); if (empty ( $moldList )) { $flag = false; $uGroups = 'ordinary'; if (Doo::acl ()->isAllowed ( $uGroups, $resource, $action )) { $flag = true; } } else { $flag = false; array_push ( $moldList, array ( 'mold' => 'ordinary' ) ); // 删除审批人后-加入权限问题-暂时关闭 $fileInvoice = file_get_contents ( "protected/config/invoice/invoice.ini" ); $fiML = json_decode ( $fileInvoice, true ); if (empty ( $fiML )) $fiML = array (); foreach ( $fiML as $key => $value ) { $sidList = explode ( ',', $value ); foreach ( $sidList as $k => $v ) { if ($v == $sid) { array_push ( $moldList, array ( 'mold' => $key ) ); break; } } } foreach ( $moldList as $value ) { if (Doo::acl ()->isAllowed ( $value ['mold'], $resource, $action )) { $flag = true; break; } } } /* * Doo::acl()->isAllowed($uGroups['groups'], $resource, $action); */ // 单独判断办事处汇总的访问权限 invoiceAggregateCategoryDetail,invoiceAggregateStaffDetail if ($action == 'invoiceAggregateCategoryDetail' || $action == 'invoiceAggregateStaffDetail') { Doo::loadModel ( "invoiceCategoryManage" ); $invoiceCategoryManage = new invoiceCategoryManage (); $icm = $invoiceCategoryManage->getInvoiceCMByStaff ( $sid ); if (empty ( $icm )) die ( 'illegal request-iacd' ); } // 单独判断应收款访问权限 if ($action == 'invoiceAggregateCompanyDetail') { Doo::loadModel ( "invoiceCompanyManage" ); $invoiceCompanyManage = new invoiceCompanyManage (); $icm = $invoiceCompanyManage->getInvoiceCMByStaff ( $sid ); if (empty ( $icm )) die ( 'illegal request' ); } // 主权限获得与判断 Doo::loadModel ( 'staff' ); $staff = new staff (); $detail = $staff->getStaffBySid ( $_COOKIE ["staff"] ); $accessModular = 'INVOICE'; if (empty ( $detail ['cldAccessArray'] )) die ( 'illegal request' ); else { if (in_array ( $accessModular, $detail ['cldAccessArray'] )) { if (Doo::acl ()->isAllowed ( $accessModular, $resource, $action )) { $flag = true; } else { $flag = false; } } else { die ( 'illegal request' ); } } if (! $flag) die ( 'illegal request' ); } function __construct() { $this->invoiceService = new invoice_service (); //echo $routeRs ['1']; //die('dd'); if (isset ( $_COOKIE ["staff"] )) { if (! empty ( $_COOKIE ["staff"] )) { Doo::loadModel ( 'staff' ); $staff = new staff (); $uriPartsOrig = explode ( '/', $_SERVER ['REQUEST_URI'] ); $this->ACTION = $uriPartsOrig [1]; $this->data ['new'] = $this->isInvoiceNew (); $this->staff = $staff->getUserByIdList ( $_COOKIE ["staff"] ); $this->data ['isStaffCompleteMsg'] = false; $detail = $staff->checkStaffInfoIsComplete ( $_COOKIE ["staff"] ); if (! empty ( $detail )) $this->data ['isStaffCompleteMsg'] = true; return "/"; } } Doo::loadCore ( 'uri/DooUriRouter' ); $router = new DooUriRouter (); $routeRs = $router->execute ( Doo::app ()->route, Doo::conf ()->SUBFOLDER ); if ($routeRs ['1'] != "login") { header ( 'Content-Type:text/html;charset=utf-8' ); @header ( "Location: /login" ); } } function testSend() { // 测试根据规则发送信息 普通发送 // $pendingApprovalsSid = 41; // Doo::loadModel ( 'staff' ); // $staff = new staff (); // $username2 = $staff->getOne ( array ( 'select' => 'wxid', 'where' => 'sid=' . $pendingApprovalsSid, 'asArray' => TRUE ) ); // // 发送微信审批通知 // $title2 = '[通知]用户提交了一条开票申请,快到“我的发票”中查看,给用户确认审批。'; // $this->msgSend ( '', $title2, '', $username2 ['wxid'], $pendingApprovalsSid, 'approval' ); // Doo::loadModel ( 'staff' ); // $staff = new staff (); // $toparty = $this->getToparty ( '广东办' ); // $wxList = array (); // if (! empty ( $toparty )) { // $userList = $this->getUserByToparty ( $toparty ); // $userCon = implode ( ',', $userList ); // // echo $userCon; // $sidList = $staff->getStaffByWxid ( $userCon ); // foreach ( $sidList as $key => $value ) { // $falg = $this->isSendNotification ( $value ['sid'], 'receivables' ); // if ($falg) { // array_push ( $wxList, $value ['wxid'] ); // } // } // $wxString = implode ( '|', $wxList ); // print_r ( $wxList ); // echo $wxString; // } // 测试发送 /* * //$toparty = $this->getWxidByCategory( $receivablesCategory [1] ); $toparty = $this->getToparty ( $receivablesCategory [1] ); $msg = '[通知]财务录入了一笔待认领款项,快到“我的收款”中查看,确认是否是您的客户给您打款了。'; if ($toparty != 0) $this->msgSendToparty ( $msg, '', '', $toparty, 'text' ); */ // print_r ( $userList ); // $msTouser='caipin|outaozhen'; // $toparty = $this->getToparty ( $receivablesCategory [1] ); // $title2 = '[通知]财务录入了一笔待认领款项,快到“我的收款”中查看,确认是否是您的客户给您打款了。'; // $hfreult = $this->msgSend ( '', $title2, '', 'outaozhen' ); // $toparty= $this->getToparty('广东办'); // $msg = '[通知]财务录入了一笔待认领款项,快到“我的收款”中查看,确认是否是您的客户给您打款了。'; // $toparty = 26; // $msg = ''; // $url = 'http://m.cld.smartcost.com.cn/invoicePrintDetail/1.html'; // $hfreult = $this->msgSendToparty ( $msg, '', '', $toparty,'text' ); } function invoice() { Doo::loadModel ( 'invoice' ); $invoice = new invoice (); Doo::loadModel ( 'express' ); $express = new express (); $expressList = $express->getExpressByAll (); $this->data ['expressList'] = $expressList; // Doo::loadModel ( 'invoiceReceivables' ); // $invoiceReceivables = new invoiceReceivables (); // $list = $invoiceReceivables->getInvoiceReceivablesByClaim ( $this->staff [0] ['cid'], $this->staff [0] ['sid'] ); Doo::loadClass ( 'XDeode' ); $XDeode = new XDeode ( 5 ); $sid = $XDeode->decode ( $_COOKIE ["staff"] ); Doo::loadModel ( 'invoiceStatistics' ); $invoiceStatistics = new invoiceStatistics (); $isMonth = $invoiceStatistics->getStatisticsByMonth ( $sid ); // 缓存统计结果 $year = date ( "Y" ); $tmp_date = date ( "Ym" ); $tmp_year = substr ( $tmp_date, 0, 4 ); $tmp_mon = substr ( $tmp_date, 4, 2 ); $tmp_forwardmonth = mktime ( 0, 0, 0, $tmp_mon - 1, 1, $tmp_year ); $fm_forward_month = date ( "m", $tmp_forwardmonth ); $path = SITE_PATH . $this->INVOICECOLLECTPATH . "invoiceCollect_" . $year . "_" . $fm_forward_month . "_" . $sid . ".htm"; if (is_file ( $path )) $htm = file_get_contents ( $path ); else $htm = $this->showCache ( $path, $sid ); $invoiceList = $invoice->getMyInvoice ( $sid ); $sql = 'status=2 and printStatus=1 and irid!="" and sid=' . $sid; $list = $invoice->getInvoiceByUntreadStatusPage ( 4, $sql ); // 我的待入账发票 and irid='' and ( (doPost=1 and postStatus=1) or doPost=0 ) $sql = "status=2 and printStatus=1 and untreadStatus=0 and isDelete=0 and sid=" . $sid; $myInvoiceUnAccount = $invoice->getInvoiceByUntreadStatusPage ( 4, $sql ); // 获得已退票功能 $untreadStatusList = $invoice->getMyInvoiceByUntreadStatus ( 2, 0, 5, $sid ); $this->data ['untreadStatusList'] = $untreadStatusList; // print_r($untreadStatusList); $this->data ['isMonth'] = $isMonth; $this->data ['htm'] = $htm; $this->data ['invoiceList'] = $invoiceList; $this->data ['receivablesList'] = $list; $this->data ['myInvoiceUnAccount'] = $myInvoiceUnAccount; $this->data ['memu'] = "invoice"; $this->data ['staff'] = $this->staff; $this->data ['receiptMemu'] = 'invoice'; $this->render ( "/admin/invoice", $this->data ); } function invoiceExpress() { $expressCom = isset ( $this->params ['expressCom'] ) ? $this->params ['expressCom'] : ""; $expressNumber = isset ( $this->params ['expressNumber'] ) ? $this->params ['expressNumber'] : ""; $this->data ['expressCom'] = $expressCom; $this->data ['expressNumber'] = $expressNumber; $this->render ( "/admin/invoiceExpress", $this->data ); } function invoiceAdd() { session_start (); /*Doo::loadModel ( 'invoice' ); $invoice = new invoice (); $detail = $invoice->getInvoiceByNew ( $this->staff [0] ['sid'] );*/ Doo::loadModel ( 'L_category' ); $lCategory = new L_category (); $category = $lCategory->find ( array ( 'asArray' => true ) ); $this->data ['category'] = $category; Doo::loadModel ( 'invoiceTraining' ); $invoiceTraining = new invoiceTraining (); $itList = $invoiceTraining->findAll( array ( 'where' => " cid=" . $this->staff [0] ['cid'].' or creator ='.$this->staff [0]['sid'], 'desc'=>'itid', 'asArray' => TRUE ) ); //$itList = $invoiceTraining->getInvoiceTrainingByCid ( $this->staff [0] ['cid'] ); Doo::loadModel ( 'receipt' ); $receipt = new receipt (); foreach ( $itList as $key => $value ) { // 不展示已结算完结的培训班 $receiptDetail = $receipt->getReceiptByinvoiceTrainId ( $value ['itid'] ); if (! empty ( $receiptDetail )) { if ($receiptDetail ['status'] == 8 || $receiptDetail ['status'] == 9) { unset ( $itList [$key] ); } } } $this->data ['itList'] = $itList; $token = $this->set_token (); $tokenTime=time().rand(5, 15); $_SESSION ['token_' . $this->staff [0] ['sidKey'].'_'.$tokenTime] = $token; $this->data ['token'] = $token; $this->data['tokenTime']=$tokenTime; $this->data ['memu'] = "invoice"; $this->data ['staff'] = $this->staff; $this->data ['receiptMemu'] = 'invoice'; $this->render ( "/admin/invoiceAdd", $this->data ); } /** * 自更新发票信息库 * @param unknown $invoicePrintDetail */ function autoUpdateInvoiceInfoBase($invoicePrintDetail) { // 发票信息库 Doo::loadModel ( 'invoiceInfoBase' ); $invoiceInfoBase = new invoiceInfoBase (); $updateDate = strtotime ( $invoicePrintDetail ['date'] ); $TIN = $invoicePrintDetail ['TIN']; $invoiceTitle = $invoicePrintDetail ['invoiceTitle']; if (empty ( $invoiceTitle )) $invoiceTitle = $invoicePrintDetail ['invoiceCompany']; $IIBList = $invoiceInfoBase->getInvoiceInfoByTT ( $TIN, $invoiceTitle ); // 确认有该条发票信息 $invoiceInfoBase = new invoiceInfoBase (); if (! empty ( $IIBList )) { // 发票库里的信息数量 $IIBListCount = count ( $IIBList ); if ($IIBListCount == 1) { // 更新发票--提交是最新的时间 $item = array ( 'iibID' => $IIBList [0] ['iibID'], 'invoiceTitle' => $invoiceTitle, 'TIN' => $TIN ); if (! empty ( $invoicePrintDetail ['address'] )) { $item += array ( 'address' => $invoicePrintDetail ['address'] ); } if (! empty ( $invoicePrintDetail ['phone'] )) { $item += array ( 'phone' => $invoicePrintDetail ['phone'] ); } if (! empty ( $invoicePrintDetail ['bank'] )) { $item += array ( 'bank' => $invoicePrintDetail ['bank'] ); } if (! empty ( $invoicePrintDetail ['bankAccount'] )) { $item += array ( 'bankAccount' => $invoicePrintDetail ['bankAccount'] ); } if ($updateDate >= strtotime ($IIBList [0] ['updateDate'])) { $item += array ( 'updateDate' => $invoicePrintDetail ['date'] ); $invoiceInfoBase->setInvoiceInfoBaseByCondition ( $item ); } } else { // 删除多张发票,重新添加发票 $iibIDStr = ''; $iibID = array (); foreach ( $IIBList as $key => $value ) { array_push ( $iibID, $value ['iibID'] ); } $iibIDStr = implode ( ",", $iibID ); // 删除 $invoiceInfoBase->delInvoiceInfoBaseByIibStr ( $iibIDStr ); $item = array ( 'invoiceTitle' => $invoiceTitle, 'TIN' => $TIN, 'address' => $invoicePrintDetail ['address'], 'phone' => $invoicePrintDetail ['phone'], 'bank' => $invoicePrintDetail ['bank'], 'bankAccount' => $invoicePrintDetail ['bankAccount'], 'updateDate' => $invoicePrintDetail ['date'] ); $invoiceInfoBase->addInvoiceInfoBase ( $item ); } } else { // 没有新增发票信息 $item = array ( 'invoiceTitle' => $invoiceTitle, 'TIN' => $TIN, 'address' => $invoicePrintDetail ['address'], 'phone' => $invoicePrintDetail ['phone'], 'bank' => $invoicePrintDetail ['bank'], 'bankAccount' => $invoicePrintDetail ['bankAccount'], 'updateDate' => $invoicePrintDetail ['date'] ); $invoiceInfoBase->addInvoiceInfoBase ( $item ); } } function invoiceAddFill() { session_start (); Doo::loadModel ( 'L_category' ); $lCategory = new L_category (); $category = $lCategory->find ( array ( 'asArray' => true ) ); $this->data ['category'] = $category; Doo::loadModel ( 'invoiceTraining' ); $invoiceTraining = new invoiceTraining (); $itList = $invoiceTraining->getInvoiceTrainingByCid ( $this->staff [0] ['cid'] ); $this->data ['itList'] = $itList; Doo::loadModel ( 'invoice' ); $invoice = new invoice (); $detail = $invoice->getInvoiceByNew ( $this->staff [0] ['sid'] ); $detail ['mailItemsArray'] = json_decode ( $detail ['mailItemsJson'], true ); $token = $this->set_token (); $tokenTime=time().rand(5, 15); $_SESSION ['token_' . $this->staff [0] ['sidKey'].'_'.$tokenTime] = $token; $this->data ['token'] = $token; $this->data['tokenTime']=$tokenTime; $this->data ['invoiceDetail'] = $detail; $this->data ['memu'] = "invoice"; $this->data ['staff'] = $this->staff; $this->data ['receiptMemu'] = 'invoice'; $this->render ( "/admin/invoiceAddFill", $this->data ); } /** * 提交一份开票申请,并记录下操作日志 * * @since 1.0.0 * @var integer cid 办事处ID * @var integer invoiceType 发票类型 * @var integer doPost 是否邮寄 * @var integer invoicePrice 开票金额 * @var string invoiceElement 开票内容 * @var string invoiceTitle 发票抬头 * @var string invoiceCompany 单位名称 * @var string TIN 纳税人识别码 * @var string address 注册地址 * @var string phone 注册电话 * @var string bank 开户银行 * @var string bankAccount 银行账户 * @var string recipients 收件人 * @var string recipientsPhone 收件人手机/电话 * @var string recipientsAddress 收件地址 * @var string mailItems 邮寄物品 * @var string remark 备注 * @return string 返回跳转开票主页路径 */ function invoiceAddDo() { // include Doo::conf ()->BASE_PATH . 'diagnostic/debug.php'; $cid = $this->get_args ( 'cid' ) && is_numeric ( $this->get_args ( 'cid' ) ) ? $this->get_args ( 'cid' ) : 0; $invoiceType = $this->get_args ( 'invoiceType' ) && is_numeric ( $this->get_args ( 'invoiceType' ) ) ? $this->get_args ( 'invoiceType' ) : 0; $doPost = $this->get_args ( 'doPost' ) && is_numeric ( $this->get_args ( 'doPost' ) ) ? $this->get_args ( 'doPost' ) : 0; // $invoicePrice = $this->get_args ( 'invoicePrice' ) ? $this->get_args ( 'invoicePrice' ) : ""; $invoiceQuantity = $this->get_args ( 'invoiceQuantity' ) && is_numeric ( $this->get_args ( 'invoiceQuantity' ) ) ? $this->get_args ( 'invoiceQuantity' ) : 0; $invoiceUnitPrice = $this->get_args ( 'invoiceUnitPrice' ) && is_numeric ( $this->get_args ( 'invoiceUnitPrice' ) ) ? $this->get_args ( 'invoiceUnitPrice' ) : 0; $invoiceForm = $this->get_args ( 'invoiceForm' ) ? $this->get_args ( 'invoiceForm' ) : ""; $invoiceElement = $this->get_args ( 'invoiceElement' ) ? $this->get_args ( 'invoiceElement' ) : ""; $invoiceTitle = $this->get_args ( 'invoiceTitle' ) ? $this->get_args ( 'invoiceTitle' ) : ""; $invoiceCompany = $this->get_args ( 'invoiceCompany' ) ? $this->get_args ( 'invoiceCompany' ) : ""; $TIN = $this->get_args ( 'TIN' ) ? $this->get_args ( 'TIN' ) : ""; $address = $this->get_args ( 'address' ) ? $this->get_args ( 'address' ) : ""; $phone = $this->get_args ( 'phone' ) ? $this->get_args ( 'phone' ) : ""; $bank = $this->get_args ( 'bank' ) ? $this->get_args ( 'bank' ) : ""; $bankAccount = $this->get_args ( 'bankAccount' ) ? $this->get_args ( 'bankAccount' ) : ""; $recipients = $this->get_args ( 'recipients' ) ? $this->get_args ( 'recipients' ) : ""; $recipientsPhone = $this->get_args ( 'recipientsPhone' ) ? $this->get_args ( 'recipientsPhone' ) : ""; $recipientsAddress = $this->get_args ( 'recipientsAddress' ) ? $this->get_args ( 'recipientsAddress' ) : ""; $remark = $this->get_args ( 'remark' ) ? $this->get_args ( 'remark' ) : ""; $TINT = $this->get_args ( 'TINT' ) ? $this->get_args ( 'TINT' ) : ""; $addressT = $this->get_args ( 'addressT' ) ? $this->get_args ( 'addressT' ) : ""; $phoneT = $this->get_args ( 'phoneT' ) ? $this->get_args ( 'phoneT' ) : ""; $bankT = $this->get_args ( 'bankT' ) ? $this->get_args ( 'bankT' ) : ""; $bankAccountT = $this->get_args ( 'bankAccountT' ) ? $this->get_args ( 'bankAccountT' ) : ""; $softLock = $this->get_args ( 'softLock' ) ? $this->get_args ( 'softLock' ) : 0; $softLockNum = $this->get_args ( 'softLockNum' ) ? $this->get_args ( 'softLockNum' ) : 0; $contract = $this->get_args ( 'contract' ) ? $this->get_args ( 'contract' ) : 0; $contractNum = $this->get_args ( 'contractNum' ) ? $this->get_args ( 'contractNum' ) : 0; $instructions = $this->get_args ( 'instructions' ) ? $this->get_args ( 'instructions' ) : 0; $instructionsNum = $this->get_args ( 'instructionsNum' ) ? $this->get_args ( 'instructionsNum' ) : 0; $remittance = $this->get_args ( 'remittance' ) ? $this->get_args ( 'remittance' ) : 0; $mailItems = $this->get_args ( 'mailItems' ) ? $this->get_args ( 'mailItems' ) : ""; $trainId = $this->get_args ( 'trainId' ) ? $this->get_args ( 'trainId' ) : 0; $settlementType = $this->get_args ( 'settlementType' ) ? $this->get_args ( 'settlementType' ) : ""; $electronicPhone= $this->get_args ( 'electronicPhone' ) ? $this->get_args ( 'electronicPhone' ) : ""; $electronicEmail = $this->get_args ( 'electronicEmail' ) ? $this->get_args ( 'electronicEmail' ) : ""; /* * $mailList=array(); array_push($mailList, array('invoice'=>1)); array_push($mailList, array('mailItems'=>$mailItems)); if (!empty($softLock)) array_push($mailList, array('softLock'=>$softLockNum)); if (!empty($contract)) array_push($mailList, array('contract'=>$contractNum)); if (!empty($instructions)) array_push($mailList, array('instructions'=>$instructionsNum)); if (!empty($remittance)) array_push($mailList, array('remittance'=>$remittance)); echo json_encode($mailList) ; print_r($mailList); die; */ $token = $this->get_args ( 'token' ) ? $this->get_args ( 'token' ) : ""; $tokenTime = $this->get_args ( 'tokenTime' ) ? $this->get_args ( 'tokenTime' ) : ""; if (empty ( $token )) { die ( 'illegal request-token' ); } else { session_start (); $sessionKey='token_' . $this->staff [0] ['sidKey'].'_'.$tokenTime; header ( 'Content-Type:text/html;charset=utf-8' ); if (!isset($_SESSION [$sessionKey])||empty($_SESSION [$sessionKey])) { die ( '请重新刷新发票申请页面' ); }elseif($_SESSION [$sessionKey]=='repeat'){ die ( '请勿重复申请发票' ); } else { if ($_SESSION [$sessionKey] != $token){ die ( '请勿重复申请发票' ); }else{ $_SESSION [$sessionKey] = 'repeat'; } } } if($invoiceForm=='electronic'){ if(empty(trim($electronicPhone))&&empty(trim($electronicEmail))){ die ( '请至少填写一种联系方式--电子发票' ); } } if ($invoiceType == 1) { $temporary = $invoiceQuantity * $invoiceUnitPrice; if ($temporary > 100001) { header ( 'Content-Type:text/html;charset=utf-8' ); die ( '专用发票总金额暂时不能超过100000.00(十万)元。' ); } }elseif($invoiceType == 0){ $temporary = $invoiceQuantity * $invoiceUnitPrice; if ($temporary > 100001) { header ( 'Content-Type:text/html;charset=utf-8' ); die ( '专用发票总金额暂时不能超过100000.00(十万)元。' ); } }else{ die ( 'illegal request-invoiceType' ); } if (empty ( $this->staff [0] )) die ( 'illegal request-Please login' ); if (! empty ( $cid ) && ! empty ( $invoiceQuantity ) && ! empty ( $invoiceUnitPrice ) && ! empty ( $invoiceElement ) && ! empty ( $settlementType )&&!empty($invoiceForm)) { Doo::loadModel ( 'invoice' ); $invoice = new invoice (); Doo::loadModel ( 'L_category' ); $lCategory = new L_category (); Doo::loadModel ( 'invoiceManage' ); $invoiceManage = new invoiceManage (); Doo::loadModel ( 'invoiceOperationLog' ); $invoiceOperationLog = new invoiceOperationLog (); Doo::loadClass ( 'XDeode' ); $XDeode = new XDeode ( 5 ); $trainId = $XDeode->decode ( $trainId ); $categoryDetil = $lCategory->getOne ( array ( 'SELECT' => 'title', 'where' => 'cid=' . $cid, 'asArray' => true ) ); $invoicePrice = $invoiceQuantity * $invoiceUnitPrice; $invoiceManageList = $invoiceManage->getInvoiceByAll (); $invoiceManageDetail = $invoiceManage->getInvoiceByMold ( "发票审批" ); // print_r(current($invoiceManageDetail ['staffList'])); // die; $moldManage = array (); foreach ( $invoiceManageList as $key => $value ) { if ($value ['mold'] == '发票打印') $moldManage [$value ['mold']] = $value ['staffList']; elseif ($value ['mold'] == '发票邮寄') $moldManage [$value ['mold']] = $value ['staffList']; elseif ($value ['mold'] == '发票退票') $moldManage [$value ['mold']] = $value ['staffList']; } $pendingApprovalsSid = current ( $invoiceManageDetail ['staffList'] ) [0]; $st = ''; if ($settlementType == 'SOFTWARE') { $st = 0; $trainId = 0; } elseif ($settlementType == 'TRAINING') { $st = 1; if (empty ( $trainId ) && ! is_numeric ( $trainId )) { die ( 'illegal request-trainingIdError' ); } } else { die ( 'illegal request-settlementError' ); } if($invoiceForm=='electronic'){ $invoiceSerial="#FE" . date('Ymd') . str_pad(mt_rand(1, 99999), 5, '0', STR_PAD_LEFT); $invoiceForm=1; $invoiceType=0; if(!empty($electronicPhone)||!empty($electronicEmail)){ }else{ die ( 'illegal request-electronicContact' ); } $mailList = array (); $mailString = '备注:' . $mailItems; }elseif($invoiceForm=='paper'){ $invoiceSerial="#F" . date('Ymd') . str_pad(mt_rand(1, 99999), 5, '0', STR_PAD_LEFT); $invoiceForm=0; $mailList = array ( 'invoice' => 1, 'mailItems' => $mailItems ); $mailString = '发票x1张,备注:' . $mailItems; }else{ die ( 'illegal request-invoiceForm' ); } $item = array ( 'cid' => $cid, 'categoryName' => $categoryDetil ['title'], 'invoiceElement' => $invoiceElement, 'invoiceForm'=>$invoiceForm, 'electronicPhone'=>$electronicPhone, 'electronicEmail'=>$electronicEmail, 'invoiceQuantity' => $invoiceQuantity, 'invoiceUnitPrice' => $invoiceUnitPrice, 'invoicePrice' => $invoicePrice, 'invoiceType' => $invoiceType, 'settlementType' => $st, 'doPost' => $doPost, 'status' => 1, 'invoiceSerial' => $invoiceSerial, 'date' => date ( "Y-m-d H:i:s" ), 'updateTime' => date ( "Y-m-d H:i:s" ), 'sid' => $this->staff [0] ['sid'], 'userName' => $this->staff [0] ['username'], 'invoiceManage' => $invoiceManageDetail ['staff'], 'pendingApprovals' => $pendingApprovalsSid, 'moldManage' => json_encode ( $moldManage ), 'remark' => $remark, 'trainId' => $trainId ); if ($invoiceType == 0) $item += array ( 'invoiceTitle' => $invoiceTitle, 'TIN' => $TINT, 'address' => $addressT, 'phone' => $phoneT, 'bank' => $bankT, 'bankAccount' => $bankAccountT ); else { $item += array ( 'invoiceCompany' => $invoiceCompany, 'TIN' => $TIN, 'address' => $address, 'phone' => $phone, 'bank' => $bank, 'bankAccount' => $bankAccount ); } if ($doPost == 1) { if (! empty ( $softLock )) $mailList += array ( 'softLock' => $softLockNum ); else $mailList += array ( 'softLock' => 0 ); if (! empty ( $contract )) $mailList += array ( 'contract' => $contractNum ); else $mailList += array ( 'contract' => 0 ); if (! empty ( $instructions )) $mailList += array ( 'instructions' => $instructionsNum ); else $mailList += array ( 'instructions' => 0 ); if (! empty ( $remittance )) $mailList += array ( 'remittance' => $remittance ); else $mailList += array ( 'remittance' => '' ); if (! empty ( $softLock )) $mailString .= ',软件锁x' . $softLockNum . '个'; if (! empty ( $contract )) $mailString .= ',合同x' . $contractNum . '份'; if (! empty ( $instructions )) $mailString .= ',说明书x' . $instructionsNum . '本'; if (! empty ( $remittance )) $mailString .= ',汇款账号单(张)'; $item += array ( 'recipients' => $recipients, 'recipientsPhone' => $recipientsPhone, 'recipientsAddress' => $recipientsAddress, 'mailItems' => $mailString, 'mailItemsJson' => json_encode ( $mailList ) ); } $iid = $invoice->addInvoice ( $item ); // 如果是培训班结算 创建培训班发票到培训班备份中 if (! empty ( $st ) && $st == 1) { Doo::loadModel ( 'invoiceStore' ); $invoiceStore = new invoiceStore (); Doo::loadModel ( 'invoiceTraining' ); $invoiceTraining = new invoiceTraining (); $isid = $invoiceStore->setInvoiceToInvoiceStore ( $iid ); $itemIS = array ( 'isid' => $isid, 'ipSource' => 1, 'apStatus' => 1, 'iid' => $iid ); $invoiceStore->setInvoiceStoreByCondition ( $itemIS ); // 更新培训班总数量 $detailIT = $invoiceTraining->getInvoiceTrainingByItid ( $trainId ); $item = array ( 'itid' => $trainId, 'invoiceTotal' => $detailIT ['invoiceTotal'] + 1, 'submitStatus' => 1 ); $itid = $invoiceTraining->setInvoiceTrainByCondition ( $item ); } // 操作日志 $item = array ( 'date' => date ( "Y-m-d H:i:s" ), 'operation' => "创建", 'status' => 1, 'img' => $this->staff [0] ['avatar'], 'username' => $this->staff [0] ['username'], 'uid' => $this->staff [0] ['sid'], 'category' => $this->staff [0] ['category'], 'iid' => $iid ); $invoiceOperationLog->setInvoiceOperationLog ( $item ); $item = array ( 'date' => date ( "Y-m-d H:i:s" ), 'operation' => "提交审批", 'status' => 1, 'img' => $this->staff [0] ['avatar'], 'username' => $this->staff [0] ['username'], 'uid' => $this->staff [0] ['sid'], 'category' => $this->staff [0] ['category'], 'iid' => $iid ); $invoiceOperationLog->setInvoiceOperationLog ( $item ); Doo::loadModel ( 'staff' ); $staff = new staff (); $username2 = $staff->getOne ( array ( 'select' => 'wxid', 'where' => 'sid=' . $pendingApprovalsSid, 'asArray' => TRUE ) ); // 发送微信审批通知 $title2 = '[通知]用户提交了一条开票申请,快到“我的发票”中查看,给用户确认审批。'; $this->msgSend ( '', $title2, '', $username2 ['wxid'], $pendingApprovalsSid, 'approval' ); } return "/invoice"; } function invoiceEdit() { Doo::loadClass ( 'XDeode' ); $XDeode = new XDeode ( 5 ); $iid = isset ( $this->params ['iid'] ) ? $this->params ['iid'] : ""; $iid = $XDeode->decode ( $iid ); if (! is_numeric ( $iid )) die ( 'illegal request' ); Doo::loadModel ( 'invoice' ); $invoice = new invoice (); Doo::loadModel ( 'invoiceOperationLog' ); $invoiceOperationLog = new invoiceOperationLog (); $invoiceDetail = $invoice->getInvoiceByIid ( $iid ); $operation = $invoiceOperationLog->getInvoiceOperationByDropped ( $iid ); $invoiceDetail ['mailItemsJson'] =''; if(isset($invoiceDetail ['mailItemsJson'])){ $invoiceDetail ['mailItemsJson'] = json_decode ( $invoiceDetail ['mailItemsJson'], true ); } $this->data ['operation'] = $operation; $this->data ['invoiceDetail'] = $invoiceDetail; $this->data ['memu'] = "invoice"; $this->data ['staff'] = $this->staff; $this->data ['receiptMemu'] = 'invoice'; $this->render ( "/admin/invoiceEdit", $this->data ); } /** * 重新编辑退回的发票 * @return string */ function invoiceEditDo() { $iidKey = $this->get_args ( 'iidKey' ) ? $this->get_args ( 'iidKey' ) : ''; Doo::loadModel ( 'invoice' ); $invoice = new invoice (); $iid = $invoice->authcode ( $iidKey ); if (! empty ( $iid ) && ! is_numeric ( $iid )) die ( 'illegal request' ); $cid = $this->get_args ( 'cid' ) ? $this->get_args ( 'cid' ) : 0; $invoiceType = $this->get_args ( 'invoiceType' ) && is_numeric ( $this->get_args ( 'invoiceType' ) ) ? $this->get_args ( 'invoiceType' ) : 0; $doPost = $this->get_args ( 'doPost' ) && is_numeric ( $this->get_args ( 'doPost' ) ) ? $this->get_args ( 'doPost' ) : 0; $invoicePrice = $this->get_args ( 'invoicePrice' ) ? $this->get_args ( 'invoicePrice' ) : ""; $invoiceQuantity = $this->get_args ( 'invoiceQuantity' ) && is_numeric ( $this->get_args ( 'invoiceQuantity' ) ) ? $this->get_args ( 'invoiceQuantity' ) : 0; $invoiceUnitPrice = $this->get_args ( 'invoiceUnitPrice' ) && is_numeric ( $this->get_args ( 'invoiceUnitPrice' ) ) ? $this->get_args ( 'invoiceUnitPrice' ) : 0; $invoiceElement = $this->get_args ( 'invoiceElement' ) ? $this->get_args ( 'invoiceElement' ) : ""; $invoiceTitle = $this->get_args ( 'invoiceTitle' ) ? $this->get_args ( 'invoiceTitle' ) : ""; $invoiceCompany = $this->get_args ( 'invoiceCompany' ) ? $this->get_args ( 'invoiceCompany' ) : ""; $TIN = $this->get_args ( 'TIN' ) ? $this->get_args ( 'TIN' ) : ""; $address = $this->get_args ( 'address' ) ? $this->get_args ( 'address' ) : ""; $phone = $this->get_args ( 'phone' ) ? $this->get_args ( 'phone' ) : ""; $bank = $this->get_args ( 'bank' ) ? $this->get_args ( 'bank' ) : ""; $bankAccount = $this->get_args ( 'bankAccount' ) ? $this->get_args ( 'bankAccount' ) : ""; $recipients = $this->get_args ( 'recipients' ) ? $this->get_args ( 'recipients' ) : ""; $recipientsPhone = $this->get_args ( 'recipientsPhone' ) ? $this->get_args ( 'recipientsPhone' ) : ""; $recipientsAddress = $this->get_args ( 'recipientsAddress' ) ? $this->get_args ( 'recipientsAddress' ) : ""; $mailItems = $this->get_args ( 'mailItems' ) ? $this->get_args ( 'mailItems' ) : ""; $remark = $this->get_args ( 'remark' ) ? $this->get_args ( 'remark' ) : ""; $TINT = $this->get_args ( 'TINT' ) ? $this->get_args ( 'TINT' ) : ""; $addressT = $this->get_args ( 'addressT' ) ? $this->get_args ( 'addressT' ) : ""; $phoneT = $this->get_args ( 'phoneT' ) ? $this->get_args ( 'phoneT' ) : ""; $bankT = $this->get_args ( 'bankT' ) ? $this->get_args ( 'bankT' ) : ""; $bankAccountT = $this->get_args ( 'bankAccountT' ) ? $this->get_args ( 'bankAccountT' ) : ""; $softLock = $this->get_args ( 'softLock' ) ? $this->get_args ( 'softLock' ) : 0; $softLockNum = $this->get_args ( 'softLockNum' ) ? $this->get_args ( 'softLockNum' ) : 0; $contract = $this->get_args ( 'contract' ) ? $this->get_args ( 'contract' ) : 0; $contractNum = $this->get_args ( 'contractNum' ) ? $this->get_args ( 'contractNum' ) : 0; $instructions = $this->get_args ( 'instructions' ) ? $this->get_args ( 'instructions' ) : 0; $instructionsNum = $this->get_args ( 'instructionsNum' ) ? $this->get_args ( 'instructionsNum' ) : 0; $remittance = $this->get_args ( 'remittance' ) ? $this->get_args ( 'remittance' ) : 0; $electronicPhone = $this->get_args ( 'electronicPhone' ) ? $this->get_args ( 'electronicPhone' ) : ""; $electronicEmail = $this->get_args ( 'electronicEmail' ) ? $this->get_args ( 'electronicEmail' ) : ""; $invoiceForm = $this->get_args ( 'invoiceForm' ) ? $this->get_args ( 'invoiceForm' ) : ""; if ($invoiceType == 1) { $temporary = $invoiceQuantity * $invoiceUnitPrice; if ($temporary > 100001) die ( 'illegal request-Please priceError' ); } if($invoiceForm=='electronic'){ if(empty(trim($electronicPhone))&&empty(trim($electronicEmail))){ die ( '请至少填写一种联系方式--电子发票' ); } } if (! empty ( $cid ) && ! empty ( $invoiceQuantity ) && ! empty ( $invoiceUnitPrice ) && ! empty ( $invoiceElement ) && ! empty ( $iid )) { Doo::loadModel ( 'invoiceManage' ); $invoiceManage = new invoiceManage (); Doo::loadModel ( 'invoiceOperationLog' ); $invoiceOperationLog = new invoiceOperationLog (); Doo::loadModel ( 'invoiceStore' ); $invoiceStore = new invoiceStore (); $cid = explode ( ':', $cid ); $invoiceManageList = $invoiceManage->getInvoiceByAll (); $invoiceManageDetail = $invoiceManage->getInvoiceByMold ( "发票审批" ); $moldManage = array (); foreach ( $invoiceManageList as $key => $value ) { if ($value ['mold'] == '发票打印') $moldManage [$value ['mold']] = $value ['staffList']; elseif ($value ['mold'] == '发票邮寄') $moldManage [$value ['mold']] = $value ['staffList']; elseif ($value ['mold'] == '发票打印') $moldManage [$value ['mold']] = $value ['staffList']; } $invoicePrice = $invoiceQuantity * $invoiceUnitPrice; if($invoiceForm=='electronic'){ $invoiceForm=1; $invoiceType=0; if(!empty($electronicPhone)||!empty($electronicEmail)){ }else{ die ( 'illegal request-electronicContact' ); } $mailList = array (); $mailString = '备注:' . $mailItems; }elseif($invoiceForm=='paper'){ $invoiceForm=0; $mailList = array ( 'invoice' => 1, 'mailItems' => $mailItems ); $mailString = '发票x1张,备注:' . $mailItems; }else{ die ( 'illegal request-invoiceForm' ); } $item = array ( 'iid' => $iid, 'cid' => $cid [0], 'categoryName' => $cid [1], 'invoiceElement' => $invoiceElement, 'invoiceForm'=>$invoiceForm, 'electronicPhone'=>$electronicPhone, 'electronicEmail'=>$electronicEmail, 'invoiceQuantity' => $invoiceQuantity, 'invoiceUnitPrice' => $invoiceUnitPrice, 'invoicePrice' => $invoicePrice, 'invoiceType' => $invoiceType, 'doPost' => $doPost, 'status' => 1, 'updateTime' => date ( "Y-m-d H:i:s" ), 'remark' => $remark ); if ($invoiceType == 0) $item += array ( 'invoiceTitle' => $invoiceTitle, 'TIN' => $TINT, 'address' => $addressT, 'phone' => $phoneT, 'bank' => $bankT, 'bankAccount' => $bankAccountT ); else { $item += array ( 'invoiceCompany' => $invoiceCompany, 'TIN' => $TIN, 'address' => $address, 'phone' => $phone, 'bank' => $bank, 'bankAccount' => $bankAccount ); } if ($doPost == 1) { if (! empty ( $softLock )) $mailList += array ( 'softLock' => $softLockNum ); else $mailList += array ( 'softLock' => '0' ); if (! empty ( $contract )) $mailList += array ( 'contract' => $contractNum ); else $mailList += array ( 'contract' => '0' ); if (! empty ( $instructions )) $mailList += array ( 'instructions' => $instructionsNum ); else $mailList += array ( 'instructions' => '0' ); if (! empty ( $remittance )) $mailList += array ( 'remittance' => $remittance ); else $mailList += array ( 'remittance' => '' ); if (! empty ( $softLock )) $mailString .= ',软件锁x' . $softLockNum; if (! empty ( $contract )) $mailString .= ',合同x' . $contractNum; if (! empty ( $instructions )) $mailString .= ',说明书x' . $instructionsNum; if (! empty ( $remittance )) $mailString .= ',汇款账号单'; $item += array ( 'recipients' => $recipients, 'recipientsPhone' => $recipientsPhone, 'recipientsAddress' => $recipientsAddress, 'mailItems' => $mailString, 'mailItemsJson' => json_encode ( $mailList ) ); } $invoice->setInvoiceByCondition ( $item ); // 更新培训班仓库里的发票 $detail = $invoice->getInvoiceByIid ( $iid ); if (! empty ( $detail ['isid'] )) { $invoiceStore->isid = $detail ['isid']; $invoiceStore->invoiceQuantity = $invoiceQuantity; $invoiceStore->invoiceUnitPrice = $invoiceUnitPrice; $invoiceStore->invoicePrice = $invoicePrice; $invoiceStore->update (); } $item = array ( 'date' => date ( "Y-m-d H:i:s" ), 'operation' => "重新提交审批", 'status' => 1, 'img' => $this->staff [0] ['avatar'], 'username' => $this->staff [0] ['username'], 'uid' => $this->staff [0] ['sid'], 'category' => $this->staff [0] ['category'], 'iid' => $iid ); $invoiceOperationLog->setInvoiceOperationLog ( $item ); } return "/invoice"; } /** * 培训班 */ function invoiceTraining() { Doo::loadModel ( 'L_category' ); $lCategory = new L_category (); Doo::loadModel ( 'invoiceTraining' ); $invoiceTraining = new invoiceTraining (); Doo::loadModel ( 'invoiceTrainManage' ); $invoiceTrainManage = new invoiceTrainManage (); $imcStaff = $invoiceTrainManage->getInvoiceCMByStaff ( $this->staff [0] ['sid'] ); $cidList = array (); foreach ( $imcStaff as $key => $value ) { array_push ( $cidList, $value ['cid'] ); } if (empty ( $cidList )) { $cidString = $this->staff [0] ['cid']; } else { $cidString = implode ( ',', $cidList ); $cidString .= $cidString . ',' . $this->staff [0] ['cid']; } // include Doo::conf ()->BASE_PATH . 'diagnostic/debug.php'; // $itTodoList = $invoiceTraining->getInvoiceTrainingByTodo ( '', $cidString, $this->staff [0] ['sid'] ); //TODO 待完成入账培训班 $itTodoList=$this->invoiceService->getTrainByCategoryStaff(0,$cidString,$this->staff [0] ['sid']); // if($this->staff [0] ['sid']==94){ // $itTodoList=$this->invoiceService->getTrainByCategoryStaff(0,$cidString,$this->staff [0] ['sid']); // }else{ // $itTodoList = $invoiceTraining->getInvoiceTrainingByTodo ( '', $cidString, $this->staff [0] ['sid'] ); // } // $itTodoList=$this->invoiceService->getTrainByCategoryStaff(0,$cidString,$this->staff [0] ['sid']); $itedList = $invoiceTraining->getInvoiceTrainingByStatus ( 2, '', $cidString, $this->staff [0] ['sid'] ); $category = $lCategory->getCategory (); $itid = array (); foreach ( $itTodoList as $key => $value ) { array_push ( $itid, $value ['itid'] ); // 如果入账100%更新为已完成 if ($itTodoList [$key] ['arriveSchedule'] >= 100) { $invoiceTraining = new invoiceTraining (); $invoiceTraining->itid = $value ['itid']; $invoiceTraining->status = 2; $invoiceTraining->update (); } } foreach ( $itedList as $value ) { array_push ( $itid, $value ['itid'] ); } $itid = implode ( ',', $itid ); $this->data ['itStatist'] = $invoiceTraining->getInvoiceTrainStatistics ( $itid ); // print_r($itTodoList); $this->data ['trainCount'] = count ( $itTodoList ) + count ( $itedList ); $this->data ['itTodoList'] = $itTodoList; $this->data ['itedList'] = $itedList; $this->data ['category'] = $category; $this->data ['memu'] = "invoice"; $this->data ['staff'] = $this->staff; $this->data ['receiptMemu'] = 'invoiceTraining'; $this->render ( "/admin/invoiceTraining", $this->data ); } /** * 创建培训班 */ function invoiceTrainingAdd() { $cid = $this->get_args ( 'cid' ) && is_numeric ( $this->get_args ( 'cid' ) ) ? $this->get_args ( 'cid' ) : 0; $trainName = $this->get_args ( 'trainName' ) ? $this->get_args ( 'trainName' ) : ""; $trainDate = $this->get_args ( 'trainDate' ) ? $this->get_args ( 'trainDate' ) : ""; if (empty ( $this->staff [0] )) die ( 'illegal request' ); if (! empty ( $cid ) && ! empty ( $trainName ) && ! empty ( $trainDate )) { Doo::loadModel ( 'invoiceTraining' ); $invoiceTraining = new invoiceTraining (); Doo::loadModel ( 'invoice' ); $invoice = new invoice (); Doo::loadModel ( 'L_category' ); $lCategory = new L_category (); Doo::loadModel ( 'invoiceManage' ); $invoiceManage = new invoiceManage (); Doo::loadModel ( 'invoiceOperationLog' ); $invoiceOperationLog = new invoiceOperationLog (); $item = array ( 'cid' => $cid, 'trainName' => $trainName, 'trainDate' => $trainDate, 'creator' => $this->staff [0] ['sid'], 'creatorDate' => date ( "Y-m-d H:i:s" ) ); $itid = $invoiceTraining->addInvoiceTraining ( $item ); } return "/invoiceTraining"; } /** * 删除培训班 */ function invoiceTrainingDelDo() { $itid = $this->get_args ( 'trainingKey' ) ? $this->get_args ( 'trainingKey' ) : ""; if (! empty ( $itid )) { Doo::loadModel ( 'invoiceTraining' ); $invoiceTraining = new invoiceTraining (); $invoiceTraining->delInvoiceTrainingByItid ( $itid ); } return "/invoiceTraining"; } /** * 培训班详情 */ function invoiceTrainingDetail() { // include Doo::conf ()->BASE_PATH . 'diagnostic/debug.php'; $trainStatus = $this->get_args ( 'trainStatus' ) ? $this->get_args ( 'trainStatus' ) : "ALL"; $itid = isset ( $this->params ['trainingKey'] ) ? $this->params ['trainingKey'] : ""; Doo::loadModel ( 'invoiceTraining' ); $invoiceTraining = new invoiceTraining (); Doo::loadModel ( 'invoiceStore' ); $invoiceStore = new invoiceStore (); if (empty ( $itid )) die ( 'illegal request' ); $con = '(b.untreadStatus is null or b.untreadStatus!=2) and '; if ($trainStatus == "SUBED") $con = ' (b.untreadStatus is null ) and '; elseif ($trainStatus == "APPROVAL") $con = ' ( b.status=1 and b.untreadStatus!=2 ) and '; elseif ($trainStatus == "TICKET") $con = ' (b.printStatus=1 and b.status=2 and b.untreadStatus!=2) and '; elseif ($trainStatus == "TICKETING") { $con = ' (b.status=2 and b.untreadStatus=1) and '; } $con.=' a.invoiceForm=0 and '; $detail = $invoiceTraining->getInvoiceTrainingByItid ( $itid ); $isList = $invoiceStore->getinvoiceStoreByItid ( $itid, $con,0 ); //print_r($isList); $trainlistJson=$this->_trainList($isList); if (empty ( $detail )) die ( 'illegal request' ); // 培训班结算是否有和是否已经结算完成 Doo::loadModel ( 'receipt' ); $receipt = new receipt (); $receiptDetail = $receipt->getReceiptByinvoiceTrainId ( $itid ); $this->data ['receiptDetail'] = $receiptDetail; $this->data ['trainStatus'] = $trainStatus; $this->data ['itid'] = $itid; $this->data ['trainlistJson'] = $trainlistJson; $this->data ['iTrainDetail'] = $detail; $this->data ['memu'] = "invoice"; $this->data ['staff'] = $this->staff; $this->data ['receiptMemu'] = 'invoiceTraining'; $this->render ( "/admin/invoiceTrainingDetail", $this->data ); } function invoiceTrainingElectronicDetail(){ $trainStatus = $this->get_args ( 'trainStatus' ) ? $this->get_args ( 'trainStatus' ) : "ALL"; $itid = isset ( $this->params ['trainingKey'] ) ? $this->params ['trainingKey'] : ""; Doo::loadModel ( 'invoiceTraining' ); $invoiceTraining = new invoiceTraining (); Doo::loadModel ( 'invoiceStore' ); $invoiceStore = new invoiceStore (); if (empty ( $itid )) die ( 'illegal request' ); $con = ' (b.untreadStatus is null or b.untreadStatus!=2) and '; if ($trainStatus == "SUBED") $con = ' (b.untreadStatus is null ) and '; elseif ($trainStatus == "APPROVAL") $con = ' ( b.status=1 and b.untreadStatus!=2 ) and '; elseif ($trainStatus == "TICKET") $con = ' (b.printStatus=1 and b.status=2 and b.untreadStatus!=2) and '; elseif ($trainStatus == "TICKETING") { $con = ' (b.status=2 and b.untreadStatus=1) and '; } $con.=' a.invoiceForm=1 and '; $detail = $invoiceTraining->getInvoiceTrainingByItid ( $itid ); // TODO 获得电子票 $isList = $invoiceStore->getinvoiceStoreByItid ( $itid, $con,1 ); //print_r($isList); if (empty ( $detail )){ die ( 'illegal request' ); } $trainlistJson=$this->_trainList($isList,1); // 培训班结算是否有和是否已经结算完成 Doo::loadModel ( 'receipt' ); $receipt = new receipt (); $receiptDetail = $receipt->getReceiptByinvoiceTrainId ( $itid ); $this->data ['receiptDetail'] = $receiptDetail; $this->data ['trainStatus'] = $trainStatus; $this->data ['itid'] = $itid; $this->data ['trainlistJson'] = $trainlistJson; $this->data ['iTrainDetail'] = $detail; $this->data ['memu'] = "invoice"; $this->data ['staff'] = $this->staff; $this->data ['receiptMemu'] = 'invoiceTraining'; $this->render ( "/invoice/invoiceTrainingElectronicDetail", $this->data ); } function _trainList($isList,$type=0){ $trainlist = array (); foreach ( $isList as $key => $value ) { $irDetail = array (); if ($value ['apStatus'] == 1) { // array_push ( $irDetail, '' ); array_push ( $irDetail, '' ); } else { array_push ( $irDetail, ' 编辑 提交审批 移除' ); } array_push ( $irDetail, $value ['invoiceSerial'] ); if ($value ['invoiceType'] == 1) array_push ( $irDetail, $value ['invoiceCompany'] ); else array_push ( $irDetail, $value ['invoiceTitle'] ); array_push ( $irDetail, $value ['TIN'] ); array_push ( $irDetail, $value ['userName'] ); if (empty ( $value ['mailItems'] ) && $value ['apStatus'] != 1) { array_push ( $irDetail, '设置邮寄物品' ); } else array_push ( $irDetail, $value ['mailItems'] ); array_push ( $irDetail, $value ['recipientsAddress'] . $value ['recipients'] . $value ['recipientsPhone'] ); if($type==1){ array_push ( $irDetail, $value ['electronicPhone'] ); array_push ( $irDetail, $value ['electronicEmail'] ); } array_push ( $irDetail, $value ['address'] . $value ['phone'] ); array_push ( $irDetail, $value ['bank'] . $value ['bankAccount'] ); array_push ( $irDetail, $value ['invoiceElement'] ); array_push ( $irDetail, $value ['invoiceQuantity'] ); array_push ( $irDetail, $value ['invoiceUnitPrice'] ); if ($value ['invoiceType'] == 1) array_push ( $irDetail, '¥' . $value ['invoicePrice'] . '' ); else array_push ( $irDetail, '¥' . $value ['invoicePrice'] ); array_push ( $irDetail, $value ['remark'] ); if ($value ['status'] == 1) array_push ( $irDetail, '审批中' ); elseif ($value ['status'] == 2 && $value ['printStatus'] == 1) array_push ( $irDetail, '已出票' ); elseif ($value ['status'] == 2 && $value ['printStatus'] == 1 && $value ['printStatus'] != 'irid' && ($value ['untreadStatus'] == 3 || $value ['untreadStatus'] == 0)) array_push ( $irDetail, '已入账' ); else array_push ( $irDetail, '' ); array_push ( $irDetail, $value ['invoiceNo'] ); array_push ( $irDetail, $value ['printTime'] ); $html = ''; foreach ( $value ['invoiceReceivables'] as $v ) { $html .= ' ' . $v [1] . ''; } array_push ( $irDetail, $html ); array_push ( $trainlist, $irDetail ); } $trainlistJson = json_encode ( $trainlist ); return $trainlistJson; } /** * 上传培训班发票 * @return string */ function invoiceTrainingUpload() { $POST_MAX_SIZE = ini_get ( 'post_max_size' ); $unit = strtoupper ( substr ( $POST_MAX_SIZE, - 1 ) ); $multiplier = ($unit == 'M' ? 1048576 : ($unit == 'K' ? 1024 : ($unit == 'G' ? 1073741824 : 1))); if (( int ) $_SERVER ['CONTENT_LENGTH'] > $multiplier * ( int ) $POST_MAX_SIZE && $POST_MAX_SIZE) { header ( "HTTP/1.1 500 Internal Server Error" ); echo "POST exceeded maximum allowed size."; exit ( 0 ); } // Settings $save_path = DOO::conf ()->SITE_PATH . "upload/invoiceTraining/"; // The path were we will save the file (getcwd() may not be reliable and should be tested in your environment) $upload_name = "Filedata"; $max_file_size_in_bytes = 2147483647; // 2GB in bytes $extension_whitelist = array ( "doc", "txt", "jpg", "gif", "png" ); // Allowed file extensions $valid_chars_regex = '.A-Z0-9_ !@#$%^&()+={}\[\]\',~`-'; // Characters allowed in the file name (in a Regular Expression format) // Other variables $MAX_FILENAME_LENGTH = 260; $file_name = ""; $file_extension = ""; $uploadErrors = array ( 0 => "文件上传成功", 1 => "上传的文件超过了 php.ini 文件中的 upload_max_filesize directive 里的设置", 2 => "上传的文件超过了 HTML form 文件中的 MAX_FILE_SIZE directive 里的设置", 3 => "上传的文件仅为部分文件", 4 => "没有文件上传", 6 => "缺少临时文件夹" ); $nk = time (); $file_name = $nk . '.' . $this->_GetFileEXT ( $_FILES [$upload_name] ['name'] ); // preg_replace('/[^'.$valid_chars_regex.']|\.+$/i', "", basename($_FILES[$upload_name]['name'])); if (! @move_uploaded_file ( $_FILES [$upload_name] ["tmp_name"], $save_path . $file_name )) { echo "文件无法保存."; exit ( 0 ); } // Return output to the browser (only supported by SWFUpload for Flash Player 9) echo json_encode ( array ( 'filename' => $file_name, 'id' => $nk ) ); exit ( 0 ); } /** * 导入发票临时仓库 */ function invoiceStoreImport() { // include Doo::conf ()->BASE_PATH . 'diagnostic/debug.php'; $trainingKey = $this->get_args ( 'trainingKey' ) ? $this->get_args ( 'trainingKey' ) : ""; $path = $this->get_args ( 'trainName' ) ? $this->get_args ( 'trainName' ) : ""; if ($path != "" && ! empty ( $trainingKey )) { Doo::loadModel ( 'invoiceStore' ); Doo::loadModel ( 'staff' ); $staff = new staff (); Doo::loadModel ( 'invoiceTraining' ); $invoiceTraining = new invoiceTraining (); Doo::loadClass ( 'XDeode' ); $XDeode = new XDeode ( 5 ); $itid = $XDeode->decode ( $trainingKey ); // 培训班结算是否有和是否已经结算完成 Doo::loadModel ( 'receipt' ); $receipt = new receipt (); $receiptDetail = $receipt->getReceiptByinvoiceTrainId ( $itid ); if (! empty ( $receiptDetail )) { if ($receiptDetail ['status'] == 8 || $receiptDetail ['status'] == 9) die ( 'illegal request--status' ); } $exlArray = $this->formatExcelToArrayTrain ( DOO::conf ()->SITE_PATH . "upload/invoiceTraining/" . $path ); $userName = $this->staff [0] ['username']; $sDetail = $staff->getStaffByName ( $userName ); //print_r($exlArray);die; // die('sdd'); // 可以优化 foreach ( $exlArray as $key => $value ) { // 开票 $invoice = new invoiceStore (); $invoice->trainId = $itid; $invoice->invoiceType = 0; if ($value ['invoiceType'] == '专' || $value ['invoiceType'] == '专票') $invoice->invoiceType = 1; elseif($value ['invoiceType'] == '电子'){ $invoice->invoiceType = 0; $invoice->invoiceForm=1; } $invoice->invoiceQuantity = $value ['invoiceQuantity']; $invoice->invoiceUnitPrice = $value ['invoiceUnitPrice']; $invoice->invoicePrice = $value ['invoiceQuantity'] * $value ['invoiceUnitPrice']; $invoice->invoiceTitle = $value ['invoiceTitle']; if ($value ['invoiceType'] == '专' || $value ['invoiceType'] == '专票') $invoice->invoiceCompany = $value ['invoiceTitle']; $invoice->userName = $userName; $invoice->sid = $sDetail ['sid']; $invoice->cid = $sDetail ['cid']; $invoice->categoryName = $sDetail ['category']; $invoice->invoiceElement = $value ['invoiceElement']; $invoice->remark = $value ['remark']; // $invoice->date = $value ['date']; // $invoice->printTime = $value ['date']; $invoice->ipSource = 1; $invoice->printStatus = 0; $invoice->status = 0; $invoice->postStatus = 1; $invoice->untreadStatus = 0; // $invoice->invoiceSerial = "#F" . date ( "Ymd" ) . mt_rand ( 1000, 9999 ); $invoice->TIN = $value ['TIN']; $invoice->address = $value ['address']; $invoice->phone = $value ['phone']; $invoice->bank = $value ['bank']; $invoice->bankAccount = $value ['bankAccount']; $invoice->recipientsAddress = $value ['recipientsAddress']; $invoice->recipients = $value ['recipients']; $invoice->recipientsPhone = $value ['recipientsPhone']; $invoice->electronicPhone = $value ['electronicPhone']; $invoice->electronicEmail = $value ['electronicEmail']; $iid = $invoice->insert (); } // 加入发票总数量 $item = array ( 'itid' => $itid, 'invoiceTotal' => count ( $exlArray ) ); $invoiceTraining->setInvoiceTrainByCondition ( $item ); return '/invoiceTrainingDetail/' . $trainingKey . ".html"; } echo 'no file'; } /** * 编辑仓库里的发票 */ function invoiceStoreEdit() { Doo::loadClass ( 'XDeode' ); $XDeode = new XDeode ( 5 ); $iid = isset ( $this->params ['storeKey'] ) ? $this->params ['storeKey'] : ""; $iid = $XDeode->decode ( $iid ); if (! is_numeric ( $iid )) die ( 'illegal request' ); Doo::loadModel ( 'invoiceStore' ); $invoiceStore = new invoiceStore (); $invoiceDetail = $invoiceStore->getInvoiceStoreByIsid ( $iid ); // print_r($invoiceDetail); $invoiceDetail ['mailItemsJson'] = json_decode ( $invoiceDetail ['mailItemsJson'], true ); $this->data ['invoiceDetail'] = $invoiceDetail; $this->data ['memu'] = "invoice"; $this->data ['staff'] = $this->staff; $this->data ['receiptMemu'] = 'invoiceTraining'; $this->render ( "/admin/invoiceStoreEdit", $this->data ); } function invoiceStoreEditDo() { $storeKey = $this->get_args ( 'storeKey' ) ? $this->get_args ( 'storeKey' ) : ''; $trainKey = $this->get_args ( 'trainKey' ) ? $this->get_args ( 'trainKey' ) : ''; Doo::loadModel ( 'invoiceStore' ); $invoice = new invoiceStore (); Doo::loadClass ( 'XDeode' ); $XDeode = new XDeode ( 5 ); $iid = $XDeode->decode ( $storeKey ); if (! empty ( $iid ) && ! is_numeric ( $iid )) die ( 'illegal request' ); $cid = $this->get_args ( 'cid' ) ? $this->get_args ( 'cid' ) : 0; $invoiceType = $this->get_args ( 'invoiceType' ) && is_numeric ( $this->get_args ( 'invoiceType' ) ) ? $this->get_args ( 'invoiceType' ) : 0; $doPost = $this->get_args ( 'doPost' ) && is_numeric ( $this->get_args ( 'doPost' ) ) ? $this->get_args ( 'doPost' ) : 0; $invoicePrice = $this->get_args ( 'invoicePrice' ) ? $this->get_args ( 'invoicePrice' ) : ""; $invoiceQuantity = $this->get_args ( 'invoiceQuantity' ) && is_numeric ( $this->get_args ( 'invoiceQuantity' ) ) ? $this->get_args ( 'invoiceQuantity' ) : 0; $invoiceUnitPrice = $this->get_args ( 'invoiceUnitPrice' ) && is_numeric ( $this->get_args ( 'invoiceUnitPrice' ) ) ? $this->get_args ( 'invoiceUnitPrice' ) : 0; $invoiceElement = $this->get_args ( 'invoiceElement' ) ? $this->get_args ( 'invoiceElement' ) : ""; $invoiceTitle = $this->get_args ( 'invoiceTitle' ) ? $this->get_args ( 'invoiceTitle' ) : ""; $invoiceCompany = $this->get_args ( 'invoiceCompany' ) ? $this->get_args ( 'invoiceCompany' ) : ""; $TIN = $this->get_args ( 'TIN' ) ? $this->get_args ( 'TIN' ) : ""; $address = $this->get_args ( 'address' ) ? $this->get_args ( 'address' ) : ""; $phone = $this->get_args ( 'phone' ) ? $this->get_args ( 'phone' ) : ""; $bank = $this->get_args ( 'bank' ) ? $this->get_args ( 'bank' ) : ""; $bankAccount = $this->get_args ( 'bankAccount' ) ? $this->get_args ( 'bankAccount' ) : ""; $recipients = $this->get_args ( 'recipients' ) ? $this->get_args ( 'recipients' ) : ""; $recipientsPhone = $this->get_args ( 'recipientsPhone' ) ? $this->get_args ( 'recipientsPhone' ) : ""; $recipientsAddress = $this->get_args ( 'recipientsAddress' ) ? $this->get_args ( 'recipientsAddress' ) : ""; $mailItems = $this->get_args ( 'mailItems' ) ? $this->get_args ( 'mailItems' ) : ""; $remark = $this->get_args ( 'remark' ) ? $this->get_args ( 'remark' ) : ""; $TINT = $this->get_args ( 'TINT' ) ? $this->get_args ( 'TINT' ) : ""; $addressT = $this->get_args ( 'addressT' ) ? $this->get_args ( 'addressT' ) : ""; $phoneT = $this->get_args ( 'phoneT' ) ? $this->get_args ( 'phoneT' ) : ""; $bankT = $this->get_args ( 'bankT' ) ? $this->get_args ( 'bankT' ) : ""; $bankAccountT = $this->get_args ( 'bankAccountT' ) ? $this->get_args ( 'bankAccountT' ) : ""; $softLock = $this->get_args ( 'softLock' ) ? $this->get_args ( 'softLock' ) : 0; $softLockNum = $this->get_args ( 'softLockNum' ) ? $this->get_args ( 'softLockNum' ) : 0; $contract = $this->get_args ( 'contract' ) ? $this->get_args ( 'contract' ) : 0; $contractNum = $this->get_args ( 'contractNum' ) ? $this->get_args ( 'contractNum' ) : 0; $instructions = $this->get_args ( 'instructions' ) ? $this->get_args ( 'instructions' ) : 0; $instructionsNum = $this->get_args ( 'instructionsNum' ) ? $this->get_args ( 'instructionsNum' ) : 0; $remittance = $this->get_args ( 'remittance' ) ? $this->get_args ( 'remittance' ) : 0; $electronicPhone = $this->get_args ( 'electronicPhone' ) ? $this->get_args ( 'electronicPhone' ) : ""; $electronicEmail = $this->get_args ( 'electronicEmail' ) ? $this->get_args ( 'electronicEmail' ) : ""; $invoiceForm = $this->get_args ( 'invoiceForm' ) ? $this->get_args ( 'invoiceForm' ) : ""; if (! empty ( $cid ) && ! empty ( $invoiceQuantity ) && ! empty ( $invoiceUnitPrice ) && ! empty ( $invoiceElement ) && ! empty ( $iid )) { $cid = explode ( ':', $cid ); $invoicePrice = $invoiceQuantity * $invoiceUnitPrice; $item = array ( 'isid' => $iid, 'cid' => $cid [0], 'categoryName' => $cid [1], 'invoiceElement' => $invoiceElement, 'invoiceQuantity' => $invoiceQuantity, 'invoiceUnitPrice' => $invoiceUnitPrice, 'invoicePrice' => $invoicePrice, 'invoiceType' => $invoiceType, 'doPost' => $doPost, 'status' => 1, 'updateTime' => date ( "Y-m-d H:i:s" ), 'remark' => $remark ); if ($invoiceType == 0) $item += array ( 'invoiceTitle' => $invoiceTitle, 'TIN' => $TINT, 'address' => $addressT, 'phone' => $phoneT, 'bank' => $bankT, 'bankAccount' => $bankAccountT ); else { $item += array ( 'invoiceCompany' => $invoiceCompany, 'TIN' => $TIN, 'address' => $address, 'phone' => $phone, 'bank' => $bank, 'bankAccount' => $bankAccount ); } if($invoiceForm=='paper'){ $item += array ( 'invoiceForm' => 0 ); }elseif($invoiceForm=='electronic'){ $item += array ( 'invoiceForm' => 1, 'electronicPhone' => $electronicPhone, 'electronicEmail' => $electronicEmail, ); } if ($doPost == 1) { $mailList = array ( 'invoice' => 1, 'mailItems' => $mailItems ); if (! empty ( $softLock )) $mailList += array ( 'softLock' => $softLockNum ); else $mailList += array ( 'softLock' => '0' ); if (! empty ( $contract )) $mailList += array ( 'contract' => $contractNum ); else $mailList += array ( 'contract' => '0' ); if (! empty ( $instructions )) $mailList += array ( 'instructions' => $instructionsNum ); else $mailList += array ( 'instructions' => '0' ); if (! empty ( $remittance )) $mailList += array ( 'remittance' => $remittance ); else $mailList += array ( 'remittance' => '' ); $mailString = '发票x1,备注:' . $mailItems; if (! empty ( $softLock )) $mailString .= ',软件锁x' . $softLockNum; if (! empty ( $contract )) $mailString .= ',合同x' . $contractNum; if (! empty ( $instructions )) $mailString .= ',说明书x' . $instructionsNum; if (! empty ( $remittance )) $mailString .= ',汇款账号单'; $item += array ( 'recipients' => $recipients, 'recipientsPhone' => $recipientsPhone, 'recipientsAddress' => $recipientsAddress, 'mailItems' => $mailString, 'mailItemsJson' => json_encode ( $mailList ) ); } $invoice->setInvoiceStoreByCondition ( $item ); } if(!empty($invoiceForm)&&$invoiceForm=='electronic'){ return "/invoiceTrainingElectronicDetail/" . $trainKey . ".html"; }else{ return "/invoiceTrainingDetail/" . $trainKey . ".html"; } } /** * * @return string */ function invoiceStoreDelete() { Doo::loadClass ( 'XDeode' ); $XDeode = new XDeode ( 5 ); $trainKey = $this->get_args ( 'trainKey' ) ? $this->get_args ( 'trainKey' ) : ''; $iStoreKey = $this->get_args ( 'iStoreKey' ) ? $this->get_args ( 'iStoreKey' ) : 0; $invoiceFrom = $this->get_args ( 'invoiceFrom' ) ? $this->get_args ( 'invoiceFrom' ) : ""; $isid = $XDeode->decode ( $iStoreKey ); $itid = $XDeode->decode ( $trainKey ); if (! is_numeric ( $isid )) die ( 'illegal request' ); Doo::loadModel ( 'invoiceStore' ); $invoiceStore = new invoiceStore (); $invoiceStore->delete ( array ( 'where' => 'isid=' . $isid, 'limit' => 1 ) ); Doo::loadModel ( 'invoiceTraining' ); $invoiceTraining = new invoiceTraining (); $itDetail = $invoiceTraining->getInvoiceTrainingByItid ( $trainKey ); $item = array ( 'itid' => $itid, 'invoiceTotal' => $itDetail ['invoiceTotal'] - 1 ); $invoiceTraining->setInvoiceTrainByCondition ( $item ); if(!empty($invoiceFrom)&&$invoiceFrom=='electronic'){ return "/invoiceTrainingElectronicDetail/" . $trainKey . ".html"; }else{ return "/invoiceTrainingDetail/" . $trainKey . ".html"; } } /** * 批量删除库里发票 */ function invoiceStoreBatchDelete() { Doo::loadClass ( 'XDeode' ); $XDeode = new XDeode ( 5 ); $trainKey = $this->get_args ( 'trainKey' ) ? $this->get_args ( 'trainKey' ) : ''; $storeKey = $this->get_args ( 'storeKey' ) ? $this->get_args ( 'storeKey' ) : ''; $invoiceFrom = $this->get_args ( 'invoiceFrom' ) ? $this->get_args ( 'invoiceFrom' ) : ""; if (empty ( $trainKey ) || empty ( $storeKey )) die ( 'illegal request-IdKey' ); $tid = $XDeode->decode ( $trainKey ); if (! is_numeric ( $tid ) && ! empty ( $storeKey )) die ( 'illegal request' ); Doo::loadModel ( 'invoiceStore' ); $isidKeyList = explode ( ',', $storeKey ); $isidList = array (); foreach ( $isidKeyList as $value ) { $isid = $XDeode->decode ( $value ); if (! empty ( $isid ) && is_numeric ( $isid )) array_push ( $isidList, $isid ); } $isidString = implode ( ',', $isidList ); $invoiceStore = new invoiceStore (); $isList = $invoiceStore->getInvoiceStoreInIsid ( $isidString, 'isid,apStatus' ); $isidList = array (); foreach ( $isList as $key => $value ) { if ($value ['apStatus'] == 0) array_push ( $isidList, $value ['isid'] ); } $isidString = implode ( ',', $isidList ); // print_r($isList); // echo $isidString; $invoiceStore = new invoiceStore (); $invoiceStore->delete ( array ( 'where' => "isid in ( " . $isidString . ")", 'asArray' => TRUE ) ); Doo::loadModel ( 'invoiceTraining' ); $invoiceTraining = new invoiceTraining (); $itDetail = $invoiceTraining->getInvoiceTrainingByItid ( $trainKey ); $item = array ( 'itid' => $tid, 'invoiceTotal' => $itDetail ['invoiceTotal'] - count ( $isidList ) ); $invoiceTraining->setInvoiceTrainByCondition ( $item ); // echo $tid; // echo $storeKey; if(!empty($invoiceFrom)&&$invoiceFrom=='electronic'){ return "/invoiceTrainingElectronicDetail/" . $trainKey . ".html"; }else{ return "/invoiceTrainingDetail/" . $trainKey . ".html"; } } function invoiceStoreBatchElectronicPhone(){ $electronicPhone = $this->get_args ( 'electronicPhone' ) ? $this->get_args ( 'electronicPhone' ) : ''; $invoiceFrom = $this->get_args ( 'invoiceFrom' ) ? $this->get_args ( 'invoiceFrom' ) : ""; Doo::loadClass ( 'XDeode' ); $XDeode = new XDeode ( 5 ); $trainKey = $this->get_args ( 'trainKey' ) ? $this->get_args ( 'trainKey' ) : ''; $storeKey = $this->get_args ( 'storeKey' ) ? $this->get_args ( 'storeKey' ) : ''; if (empty ( $trainKey ) || empty ( $storeKey )) die ( 'illegal request-IdKey' ); $isidKeyList = explode ( ',', $storeKey ); $isidList = array (); foreach ( $isidKeyList as $value ) { $isid = $XDeode->decode ( $value ); if (! empty ( $isid ) && is_numeric ( $isid )) array_push ( $isidList, $isid ); } $isidString = implode ( ',', $isidList ); $trainId = $XDeode->decode ( $trainKey ); if (! is_numeric ( $isid )) die ( 'illegal request--isid' ); Doo::loadModel ( 'invoiceStore' ); $invoiceStore = new invoiceStore (); $item = array ( 'electronicPhone' => $electronicPhone ); $invoiceStore->setInvoiceStoreByCondition ( $item, $isidString ); return "/invoiceTrainingElectronicDetail/" . $trainKey . ".html"; } function invoiceStoreBatchElectronicEmail(){ $electronicEmail = $this->get_args ( 'electronicEmail' ) ? $this->get_args ( 'electronicEmail' ) : ''; $invoiceFrom = $this->get_args ( 'invoiceFrom' ) ? $this->get_args ( 'invoiceFrom' ) : ""; Doo::loadClass ( 'XDeode' ); $XDeode = new XDeode ( 5 ); $trainKey = $this->get_args ( 'trainKey' ) ? $this->get_args ( 'trainKey' ) : ''; $storeKey = $this->get_args ( 'storeKey' ) ? $this->get_args ( 'storeKey' ) : ''; if (empty ( $trainKey ) || empty ( $storeKey )) die ( 'illegal request-IdKey' ); $isidKeyList = explode ( ',', $storeKey ); $isidList = array (); foreach ( $isidKeyList as $value ) { $isid = $XDeode->decode ( $value ); if (! empty ( $isid ) && is_numeric ( $isid )) array_push ( $isidList, $isid ); } $isidString = implode ( ',', $isidList ); $trainId = $XDeode->decode ( $trainKey ); if (! is_numeric ( $isid )) die ( 'illegal request' ); Doo::loadModel ( 'invoiceStore' ); $invoiceStore = new invoiceStore (); $item = array ( 'electronicEmail' => $electronicEmail ); $invoiceStore->setInvoiceStoreByCondition ( $item, $isidString ); return "/invoiceTrainingElectronicDetail/" . $trainKey . ".html"; } /** * 仓库发票提交审批 * @return string */ function invoiceStoreApproval() { Doo::loadClass ( 'XDeode' ); $XDeode = new XDeode ( 5 ); $trainKey = $this->get_args ( 'trainKey' ) ? $this->get_args ( 'trainKey' ) : ''; $iStoreKey = $this->get_args ( 'storeKey' ) ? $this->get_args ( 'storeKey' ) : 0; $invoiceFrom = $this->get_args ( 'invoiceFrom' ) ? $this->get_args ( 'invoiceFrom' ) : ""; $isid = $XDeode->decode ( $iStoreKey ); $trainId = $XDeode->decode ( $trainKey ); if (! is_numeric ( $isid )) die ( 'illegal request' ); Doo::loadModel ( 'invoiceStore' ); Doo::loadModel ( 'invoice' ); $invoice = new invoice (); // 加入限制必须填写入开票内容和邮寄物品 $invoiceStore = new invoiceStore (); $isDetail = $invoiceStore->getInvoiceStoreByIsid ( $isid, 'isid,trainId ,invoiceElement,mailItemsJson,electronicPhone,electronicEmail' ); if (empty ( $isDetail ['invoiceElement'] ) || empty ( $isDetail ['mailItemsJson'] )) { header ( 'Content-Type:text/html;charset=utf-8' ); die ( 'illegal request! 请设置开票内容或邮寄物品' ); } if(!empty($invoiceFrom)&&$invoiceFrom=='electronic'){ if (empty ( $isDetail ['electronicPhone'] ) && empty ( $isDetail ['electronicEmail'] )) { header ( 'Content-Type:text/html;charset=utf-8' ); die ( 'illegal request! 请设置电子开票的收件人手机或者邮箱' ); } } // 拷贝插入一条发票数据 $invoiceStore = new invoiceStore (); $iid = $invoiceStore->setInvoiceStoreToApproval ( $isid ); $invoiceStore = new invoiceStore (); $item = array ( 'isid' => $isid, 'iid' => $iid, 'apStatus' => 1 ); $invoiceStore->setInvoiceStoreByCondition ( $item ); Doo::loadModel ( 'invoiceManage' ); $invoiceManage = new invoiceManage (); Doo::loadModel ( 'invoiceOperationLog' ); $invoiceOperationLog = new invoiceOperationLog (); $invoiceManageList = $invoiceManage->getInvoiceByAll (); $invoiceManageDetail = $invoiceManage->getInvoiceByMold ( "发票审批" ); $moldManage = array (); foreach ( $invoiceManageList as $key => $value ) { if ($value ['mold'] == '发票打印') $moldManage [$value ['mold']] = $value ['staffList']; elseif ($value ['mold'] == '发票邮寄') $moldManage [$value ['mold']] = $value ['staffList']; elseif ($value ['mold'] == '发票退票') $moldManage [$value ['mold']] = $value ['staffList']; } $pendingApprovalsSid = current ( $invoiceManageDetail ['staffList'] ) [0]; if(!empty($invoiceFrom)&&$invoiceFrom=='electronic'){ $invoiceSerial="#FE" . date ( "Ymd" ) . mt_rand ( 1000, 9999 ); }else{ $invoiceSerial="#F" . date ( "Ymd" ) . mt_rand ( 1000, 9999 ); } $item = array ( 'iid' => $iid, 'isid' => $isid, 'invoiceSerial' => $invoiceSerial, 'date' => date ( "Y-m-d H:i:s" ), 'status' => 1, 'updateTime' => date ( "Y-m-d H:i:s" ), 'trainId' => $trainId, 'invoiceManage' => $invoiceManageDetail ['staff'], 'moldManage' => json_encode ( $moldManage ), 'settlementType' => 1, 'pendingApprovals' => $pendingApprovalsSid ); $invoice->setInvoiceByCondition ( $item ); Doo::loadModel ( 'invoiceTraining' ); $invoiceTraining = new invoiceTraining (); $item = array ( 'itid' => $trainId, 'submitStatus' => 1 ); $invoiceTraining->setInvoiceTrainByCondition ( $item ); $item = array ( 'date' => date ( "Y-m-d H:i:s" ), 'operation' => "创建", 'status' => 1, 'img' => $this->staff [0] ['avatar'], 'username' => $this->staff [0] ['username'], 'uid' => $this->staff [0] ['sid'], 'category' => $this->staff [0] ['category'], 'iid' => $iid ); $invoiceOperationLog->setInvoiceOperationLog ( $item ); $item = array ( 'date' => date ( "Y-m-d H:i:s" ), 'operation' => "提交审批", 'status' => 1, 'img' => $this->staff [0] ['avatar'], 'username' => $this->staff [0] ['username'], 'uid' => $this->staff [0] ['sid'], 'category' => $this->staff [0] ['category'], 'iid' => $iid ); $invoiceOperationLog->setInvoiceOperationLog ( $item ); Doo::loadModel ( 'staff' ); $staff = new staff (); $username2 = $staff->getOne ( array ( 'select' => 'wxid', 'where' => 'sid=' . $pendingApprovalsSid, 'asArray' => TRUE ) ); // 发送微信审批通知 $title2 = '[通知]用户提交了一条开票申请,快到“我的发票”中查看,给用户确认审批。'; $this->msgSend ( '', $title2, '', $username2 ['wxid'], $pendingApprovalsSid, 'approval' ); if(!empty($invoiceFrom)&&$invoiceFrom=='electronic'){ return "/invoiceTrainingElectronicDetail/" . $trainKey . ".html"; }else{ return "/invoiceTrainingDetail/" . $trainKey . ".html"; } } /** * 批量提交发票 * @return string */ function invoiceStoreBatchApproval() { Doo::loadClass ( 'XDeode' ); $XDeode = new XDeode ( 5 ); $trainKey = $this->get_args ( 'trainKey' ) ? $this->get_args ( 'trainKey' ) : ''; $storeKey = $this->get_args ( 'storeKey' ) ? $this->get_args ( 'storeKey' ) : 0; $invoiceFrom = $this->get_args ( 'invoiceFrom' ) ? $this->get_args ( 'invoiceFrom' ) : ''; if (empty ( $trainKey ) || empty ( $storeKey )) die ( 'illegal request-IdKey' ); $trainId = $XDeode->decode ( $trainKey ); $isidKeyList = explode ( ',', $storeKey ); $isidList = array (); foreach ( $isidKeyList as $value ) { $isid = $XDeode->decode ( $value ); if (! empty ( $isid ) && is_numeric ( $isid )) array_push ( $isidList, $isid ); } $isidString = implode ( ',', $isidList ); if (! is_numeric ( $trainId )) die ( 'illegal request' ); Doo::loadModel ( 'invoiceStore' ); Doo::loadModel ( 'invoice' ); // 判断哪些已经加入审批过 // 加入限制必须填写入开票内容和邮寄物品 $invoiceStore = new invoiceStore (); $isList = $invoiceStore->getInvoiceStoreInIsid ( $isidString, 'isid,trainId ,invoiceElement,mailItemsJson,electronicPhone,electronicEmail,invoiceForm' ); foreach ( $isList as $key => $value ) { if (empty ( $value ['invoiceElement'] ) || empty ( $value ['mailItemsJson'] )) { header ( 'Content-Type:text/html;charset=utf-8' ); die ( 'illegal request! 请设置开票内容或邮寄物品' ); } if(!empty($invoiceFrom)&&$invoiceFrom=='electronic' ){ $value ['electronicPhone']=trim($value ['electronicPhone']); $value ['electronicEmail']=trim($value ['electronicEmail']); if(empty ( $value ['electronicPhone'] )&&empty ( $value ['electronicEmail'] )){ header ( 'Content-Type:text/html;charset=utf-8' ); die ( 'illegal request! 请设置电子开票的收件人手机或者邮箱' ); } } } // 拷贝插入一条发票数据 $invoiceStore = new invoiceStore (); $invoiceStore->setInvoiceStoreBatchToApproval ( $isidString ); $invoiceStore = new invoiceStore (); $item = array ( 'apStatus' => 1 ); $invoiceStore->setInvoiceStoreByCondition ( $item, $isidString ); // 获得正式发票ID $invoice = new invoice (); $iidList = $invoice->getInvoiceByIstoreid ( $isidString, 'iid,isid' ); $sqlList = array (); $iidString = ''; $iida = array (); foreach ( $iidList as $key => $value ) { $sqlList [$value ['isid']] = $value ['iid']; array_push ( $iida, $value ['iid'] ); } $iidString = implode ( ',', $iida ); $ids = implode ( ',', array_keys ( $sqlList ) ); $sql = "UPDATE CLD_invoiceStore SET iid = CASE isid "; foreach ( $sqlList as $id => $ordinal ) { $sql .= sprintf ( "WHEN %d THEN %d ", $id, $ordinal ); } $sql .= "END WHERE isid IN ($ids)"; $invoiceStore = new invoiceStore (); $invoiceStore->UpdateBatchInvoiceStore ( $sql ); Doo::loadModel ( 'invoiceManage' ); $invoiceManage = new invoiceManage (); $invoiceManageList = $invoiceManage->getInvoiceByAll (); $invoiceManageDetail = $invoiceManage->getInvoiceByMold ( "发票审批" ); $moldManage = array (); foreach ( $invoiceManageList as $key => $value ) { if ($value ['mold'] == '发票打印') $moldManage [$value ['mold']] = $value ['staffList']; elseif ($value ['mold'] == '发票邮寄') $moldManage [$value ['mold']] = $value ['staffList']; elseif ($value ['mold'] == '发票退票') $moldManage [$value ['mold']] = $value ['staffList']; } $pendingApprovalsSid = current ( $invoiceManageDetail ['staffList'] ) [0]; // 批量更新发票信息 $item = array ( 'date' => date ( "Y-m-d H:i:s" ), 'status' => 1, 'updateTime' => date ( "Y-m-d H:i:s" ), 'trainId' => $trainId, 'invoiceManage' => $invoiceManageDetail ['staff'], 'moldManage' => json_encode ( $moldManage ), 'settlementType' => 1, 'pendingApprovals' => $pendingApprovalsSid ); $invoice = new invoice (); $invoice->BatchInvoiceByCondition ( $item, $iidString ); // 批量更新发票中仓库isid $sql = "UPDATE CLD_invoiceStore SET isid = CASE iid "; foreach ( $sqlList as $isid => $iid ) { $sql .= sprintf ( "WHEN %d THEN %d ", $iid, $isid ); } $sql .= "END WHERE iid IN ($iidString)"; $invoice = new invoice (); $invoice->UpdateBatchInvoice ( $sql ); // 批量更新发票序列号 $sqlList = array (); foreach ( $iida as $value ) { if(!empty($invoiceFrom)&&$invoiceFrom=='electronic'){ $sqlList [$value] = "#FE" . date ( "Ymd" ) . mt_rand ( 1000, 9999 ); }else{ $sqlList [$value] = "#F" . date ( "Ymd" ) . mt_rand ( 1000, 9999 ); } } $ids = implode ( ',', array_keys ( $sqlList ) ); $sql = "UPDATE CLD_invoice SET invoiceSerial = CASE iid "; foreach ( $sqlList as $id => $ordinal ) { $sql .= sprintf ( "WHEN %d THEN '%s' ", $id, $ordinal ); } $sql .= "END WHERE iid IN ($ids)"; $invoiceStore = new invoiceStore (); $invoiceStore->UpdateBatchInvoiceStore ( $sql ); // 批量生产操作日志 Doo::loadModel ( 'invoiceOperationLog' ); $sqlList = array (); foreach ( $iida as $key => $value ) { $sql = '("' . date ( "Y-m-d H:i:s" ) . '","创建","1","' . $this->staff [0] ['avatar'] . '","' . $this->staff [0] ['username'] . '","' . $this->staff [0] ['sid'] . '","' . $this->staff [0] ['category'] . '","' . $value . '"), ("' . date ( "Y-m-d H:i:s" ) . '","提交审批","1","' . $this->staff [0] ['avatar'] . '","' . $this->staff [0] ['username'] . '","' . $this->staff [0] ['sid'] . '","' . $this->staff [0] ['category'] . '","' . $value . '") '; array_push ( $sqlList, $sql ); } $iolSql = implode ( ',', $sqlList ); $sql = "INSERT INTO `CLD_invoiceOperationLog` (`date`, `operation`, `status`, `img`, `username`, `uid`, `category`, `iid`) VALUES " . $iolSql; $invoiceOperationLog = new invoiceOperationLog (); $invoiceOperationLog->setInvoiceOperationLogBySql ( $sql ); Doo::loadModel ( 'invoiceTraining' ); $invoiceTraining = new invoiceTraining (); $item = array ( 'itid' => $trainId, 'submitStatus' => 1 ); $invoiceTraining->setInvoiceTrainByCondition ( $item ); Doo::loadModel ( 'staff' ); $staff = new staff (); $username2 = $staff->getOne ( array ( 'select' => 'wxid', 'where' => 'sid=' . $pendingApprovalsSid, 'asArray' => TRUE ) ); // 发送微信审批通知 $title2 = '[通知]用户提交了一条开票申请,快到“我的发票”中查看,给用户确认审批。'; $this->msgSend ( '', $title2, '', $username2 ['wxid'], $pendingApprovalsSid, 'approval' ); if(!empty($invoiceFrom)&&$invoiceFrom=='electronic'){ return "/invoiceTrainingElectronicDetail/" . $trainKey . ".html"; }else{ return "/invoiceTrainingDetail/" . $trainKey . ".html"; } } /** */ function invoiceStoreMailItemSet() { $softLock = $this->get_args ( 'softLock' ) ? $this->get_args ( 'softLock' ) : 0; $softLockNum = $this->get_args ( 'softLockNum' ) ? $this->get_args ( 'softLockNum' ) : 0; $contract = $this->get_args ( 'contract' ) ? $this->get_args ( 'contract' ) : 0; $contractNum = $this->get_args ( 'contractNum' ) ? $this->get_args ( 'contractNum' ) : 0; $instructions = $this->get_args ( 'instructions' ) ? $this->get_args ( 'instructions' ) : 0; $instructionsNum = $this->get_args ( 'instructionsNum' ) ? $this->get_args ( 'instructionsNum' ) : 0; $remittance = $this->get_args ( 'remittance' ) ? $this->get_args ( 'remittance' ) : 0; $mailItems = $this->get_args ( 'mailItems' ) ? $this->get_args ( 'mailItems' ) : ""; $recipients = $this->get_args ( 'recipients' ) ? $this->get_args ( 'recipients' ) : ""; $recipientsPhone = $this->get_args ( 'recipientsPhone' ) ? $this->get_args ( 'recipientsPhone' ) : ""; $recipientsAddress = $this->get_args ( 'recipientsAddress' ) ? $this->get_args ( 'recipientsAddress' ) : ""; $invoiceFrom = $this->get_args ( 'invoiceFrom' ) ? $this->get_args ( 'invoiceFrom' ) : ""; Doo::loadClass ( 'XDeode' ); $XDeode = new XDeode ( 5 ); $trainKey = $this->get_args ( 'trainKey' ) ? $this->get_args ( 'trainKey' ) : ''; $storeKey = $this->get_args ( 'storeKey' ) ? $this->get_args ( 'storeKey' ) : ''; $isid = $XDeode->decode ( $storeKey ); $trainId = $XDeode->decode ( $trainKey ); if (! is_numeric ( $isid )) die ( 'illegal request' ); Doo::loadModel ( 'invoiceStore' ); $invoiceStore = new invoiceStore (); $mailList = array ( 'mailItems' => $mailItems ); $mailString = '发票x1,备注:' . $mailItems; if(!empty($invoiceFrom)&&$invoiceFrom=='electronic'){ $mailString = '备注:' . $mailItems; }else{ $mailList += array ( 'invoice' => 1, ); } if (! empty ( $softLock )) $mailList += array ( 'softLock' => $softLockNum ); else $mailList += array ( 'softLock' => 0 ); if (! empty ( $contract )) $mailList += array ( 'contract' => $contractNum ); else $mailList += array ( 'contract' => 0 ); if (! empty ( $instructions )) $mailList += array ( 'instructions' => $instructionsNum ); else $mailList += array ( 'instructions' => 0 ); if (! empty ( $remittance )) $mailList += array ( 'remittance' => $remittance ); else $mailList += array ( 'remittance' => '' ); if (! empty ( $softLock )) $mailString .= ',软件锁x' . $softLockNum; if (! empty ( $contract )) $mailString .= ',合同x' . $contractNum; if (! empty ( $instructions )) $mailString .= ',说明书x' . $instructionsNum; if (! empty ( $remittance )) $mailString .= ',汇款账号单'; $item = array ( 'isid' => $isid, 'doPost' => 1, 'mailItems' => $mailString, 'mailItemsJson' => json_encode ( $mailList ) ); $invoiceStore->setInvoiceStoreByCondition ( $item ); if(!empty($invoiceFrom)&&$invoiceFrom=='electronic'){ return "/invoiceTrainingElectronicDetail/" . $trainKey . ".html"; }else{ return "/invoiceTrainingDetail/" . $trainKey . ".html"; } } /** * 批量设置邮寄物品 */ function invoiceStoreBatchMailItemSet() { $softLock = $this->get_args ( 'softLock' ) ? $this->get_args ( 'softLock' ) : 0; $softLockNum = $this->get_args ( 'softLockNum' ) ? $this->get_args ( 'softLockNum' ) : 0; $contract = $this->get_args ( 'contract' ) ? $this->get_args ( 'contract' ) : 0; $contractNum = $this->get_args ( 'contractNum' ) ? $this->get_args ( 'contractNum' ) : 0; $instructions = $this->get_args ( 'instructions' ) ? $this->get_args ( 'instructions' ) : 0; $instructionsNum = $this->get_args ( 'instructionsNum' ) ? $this->get_args ( 'instructionsNum' ) : 0; $remittance = $this->get_args ( 'remittance' ) ? $this->get_args ( 'remittance' ) : 0; $mailItems = $this->get_args ( 'mailItems' ) ? $this->get_args ( 'mailItems' ) : ""; $recipients = $this->get_args ( 'recipients' ) ? $this->get_args ( 'recipients' ) : ""; $recipientsPhone = $this->get_args ( 'recipientsPhone' ) ? $this->get_args ( 'recipientsPhone' ) : ""; $recipientsAddress = $this->get_args ( 'recipientsAddress' ) ? $this->get_args ( 'recipientsAddress' ) : ""; $invoiceFrom = $this->get_args ( 'invoiceFrom' ) ? $this->get_args ( 'invoiceFrom' ) : ""; Doo::loadClass ( 'XDeode' ); $XDeode = new XDeode ( 5 ); $trainKey = $this->get_args ( 'trainKey' ) ? $this->get_args ( 'trainKey' ) : ''; $storeKey = $this->get_args ( 'storeKey' ) ? $this->get_args ( 'storeKey' ) : ''; if (empty ( $trainKey ) || empty ( $storeKey )) die ( 'illegal request-IdKey' ); $isidKeyList = explode ( ',', $storeKey ); $isidList = array (); foreach ( $isidKeyList as $value ) { $isid = $XDeode->decode ( $value ); if (! empty ( $isid ) && is_numeric ( $isid )) array_push ( $isidList, $isid ); } $isidString = implode ( ',', $isidList ); $trainId = $XDeode->decode ( $trainKey ); if (! is_numeric ( $isid )) die ( 'illegal request' ); Doo::loadModel ( 'invoiceStore' ); $invoiceStore = new invoiceStore (); $mailList = array ( 'mailItems' => $mailItems ); $mailString = '发票x1,备注:' . $mailItems; if(!empty($invoiceFrom)&&$invoiceFrom=='electronic'){ $mailString = '备注:' . $mailItems; }else{ $mailList += array ( 'invoice' => 1, ); } if (! empty ( $softLock )) $mailList += array ( 'softLock' => $softLockNum ); else $mailList += array ( 'softLock' => 0 ); if (! empty ( $contract )) $mailList += array ( 'contract' => $contractNum ); else $mailList += array ( 'contract' => 0 ); if (! empty ( $instructions )) $mailList += array ( 'instructions' => $instructionsNum ); else $mailList += array ( 'instructions' => 0 ); if (! empty ( $remittance )) $mailList += array ( 'remittance' => $remittance ); else $mailList += array ( 'remittance' => '' ); if (! empty ( $softLock )) $mailString .= ',软件锁x' . $softLockNum; if (! empty ( $contract )) $mailString .= ',合同x' . $contractNum; if (! empty ( $instructions )) $mailString .= ',说明书x' . $instructionsNum; if (! empty ( $remittance )) $mailString .= ',汇款账号单'; $item = array ( 'doPost' => 1, 'mailItems' => $mailString, 'mailItemsJson' => json_encode ( $mailList ) ); $invoiceStore->setInvoiceStoreByCondition ( $item, $isidString ); if(!empty($invoiceFrom)&&$invoiceFrom=='electronic'){ return "/invoiceTrainingElectronicDetail/" . $trainKey . ".html"; }else{ return "/invoiceTrainingDetail/" . $trainKey . ".html"; } } /** * 废弃 */ function ajaxGetMailItemByIstore() { Doo::loadClass ( 'XDeode' ); $XDeode = new XDeode ( 5 ); $storeKey = $this->get_args ( 'storeKey' ) ? $this->get_args ( 'storeKey' ) : ''; $isid = $XDeode->decode ( $storeKey ); if (! is_numeric ( $isid )) die ( 'illegal request' ); Doo::loadModel ( 'invoiceStore' ); $invoiceStore = new invoiceStore (); $isDetail = $invoiceStore->getInvoiceStoreByIsid ( $isid ); $isDetail ['mailItemsJson'] = json_decode ( $isDetail ['mailItemsJson'], true ); echo json_encode ( $isDetail ['mailItemsJson'] ); exit (); } /** * 终止开票 */ function invoiceDroppedDo() { $droppedIidKey = $this->get_args ( 'droppedIidKey' ) ? $this->get_args ( 'droppedIidKey' ) : ''; Doo::loadModel ( 'invoice' ); $invoice = new invoice (); Doo::loadModel ( 'invoiceOperationLog' ); $invoiceOperationLog = new invoiceOperationLog (); $iid = $invoice->authcode ( $droppedIidKey ); if (! empty ( $iid ) && ! is_numeric ( $iid )) die ( 'illegal request' ); $item = array ( 'iid' => $iid, 'status' => 4, 'updateTime' => date ( "Y-m-d H:i:s" ) ); $invoice->setInvoiceByCondition ( $item ); $item = array ( 'date' => date ( "Y-m-d H:i:s" ), 'operation' => '终止了开票', 'status' => 4, 'img' => $this->staff [0] ['avatar'], 'username' => $this->staff [0] ['username'], 'uid' => $this->staff [0] ['sid'], 'category' => $this->staff [0] ['category'], 'iid' => $iid ); $invoiceOperationLog->setInvoiceOperationLog ( $item ); return "/invoice"; } /** * 更新退票的邮寄信息 */ function invoiceUntreadMailDo() { $untreadIidKey = $this->get_args ( 'untreadIidKey' ) ? $this->get_args ( 'untreadIidKey' ) : ''; $untreadCompany = $this->get_args ( 'untreadCompany' ) ? $this->get_args ( 'untreadCompany' ) : ""; $untreadNumber = $this->get_args ( 'untreadNumber' ) ? $this->get_args ( 'untreadNumber' ) : ""; $untreadItems = $this->get_args ( 'untreadItems' ) ? $this->get_args ( 'untreadItems' ) : ""; Doo::loadModel ( 'invoice' ); $invoice = new invoice (); $iid = $invoice->authcode ( $untreadIidKey ); if (! empty ( $iid ) && ! is_numeric ( $iid )) die ( 'illegal request' ); $item = array ( 'iid' => $iid, 'untreadCompany' => $untreadCompany, 'untreadNumber' => $untreadNumber, 'untreadItems' => $untreadItems ); $invoice->setInvoiceByCondition ( $item ); return "/invoice"; } /** * 申请退票 -- */ function invoiceUntreadDo() { $untreadIidKey = $this->get_args ( 'untreadIidKey' ) ? $this->get_args ( 'untreadIidKey' ) : ''; $untreadReason = $this->get_args ( 'untreadReason' ) ? $this->get_args ( 'untreadReason' ) : ""; $untreadPost = $this->get_args ( 'untreadPost' ) ? $this->get_args ( 'untreadPost' ) : 0; Doo::loadModel ( 'invoice' ); $invoice = new invoice (); Doo::loadModel ( 'invoiceOperationLog' ); $invoiceOperationLog = new invoiceOperationLog (); Doo::loadModel ( 'invoiceReceivables' ); $invoiceReceivables = new invoiceReceivables (); $iid = $invoice->authcode ( $untreadIidKey ); if (! empty ( $iid ) && ! is_numeric ( $iid )) die ( 'illegal request' ); /* * 需求变革 有绑定收款也可以退票 $lt = $invoiceReceivables->getInvoiceReceivablesByIid ( $untreadIidKey ); if (! empty ( $lt )) { header ( 'Content-Type:text/html;charset=utf-8' ); die ( '该发票有收款绑定,请先移除!' ); } */ $item = array ( 'iid' => $iid, 'untreadStatus' => 1, 'untreadReason' => $untreadReason, 'untreadPost' => $untreadPost, 'updateTime' => date ( "Y-m-d H:i:s" ) ); $invoice->setInvoiceByCondition ( $item ); $item = array ( 'date' => date ( "Y-m-d H:i:s" ), 'operation' => '申请退票', 'status' => 7, 'img' => $this->staff [0] ['avatar'], 'username' => $this->staff [0] ['username'], 'uid' => $this->staff [0] ['sid'], 'category' => $this->staff [0] ['category'], 'iid' => $iid ); $invoiceOperationLog->setInvoiceOperationLog ( $item ); return "/invoice"; } /** * 删除已终止的开票 */ function invoiceDelDo() { Doo::loadModel ( 'invoice' ); $invoice = new invoice (); Doo::loadModel ( 'invoiceOperationLog' ); $invoiceOperationLog = new invoiceOperationLog (); Doo::loadClass ( 'XDeode' ); $XDeode = new XDeode ( 5 ); $sid = $XDeode->decode ( $_COOKIE ["staff"] ); $iid = isset ( $this->params ['iid'] ) ? $this->params ['iid'] : ""; $iid = $XDeode->decode ( $iid ); Doo::loadModel ( 'invoiceStore' ); $invoiceStore = new invoiceStore (); if (! is_numeric ( $iid )) die ( 'illegal request' ); $invoiceDetail = $invoice->getMyInvoice ( $sid, $iid ); if (empty ( $invoiceDetail )) die ( 'illegal request' ); $item = array ( 'iid' => $iid, 'isDelete' => 1, 'updateTime' => date ( "Y-m-d H:i:s" ) ); $invoice->setInvoiceByCondition ( $item ); $item = array ( 'date' => date ( "Y-m-d H:i:s" ), 'operation' => '删除了已终止的发票', 'status' => 4, 'img' => $this->staff [0] ['avatar'], 'username' => $this->staff [0] ['username'], 'uid' => $this->staff [0] ['sid'], 'category' => $this->staff [0] ['category'], 'iid' => $iid ); $invoiceOperationLog->setInvoiceOperationLog ( $item ); // 删除培训班发票仓库里的发票 $invoiceStore->delInvoiceStoreByIsid ( $invoiceDetail ['isid'] ); return "/invoice"; } /** */ function invoiceApproval() { Doo::loadModel ( 'invoice' ); $invoice = new invoice (); Doo::loadClass ( 'XDeode' ); $XDeode = new XDeode ( 5 ); Doo::loadModel ( 'staff' ); $staff = new staff (); $invoiceList = $invoice->find ( array ( 'where' => 'status=1 and pendingApprovals=' . $this->staff [0] ['sid'], 'desc' => 'iid', 'limit' => 10, 'asArray' => true ) ); foreach ( $invoiceList as $key => $value ) { $invoiceList [$key] ['iidKey'] = $XDeode->encode ( $value ['iid'] ); $lastApprover = json_decode ( $value ['processApprovals'], true ); if (! empty ( $lastApprover )) { $lastApproverKey = array_keys ( $lastApprover ); $lastApprover = end ( $lastApprover ); $staffDetail = $staff->getOne ( array ( 'where' => 'sid=' . end ( $lastApproverKey ), 'asArray' => true ) ); $lastApprover ['username'] = $staffDetail ['username']; } $invoiceList [$key] ['lastApprover'] = $lastApprover; } $ilist = $invoice->getInvoiceByProcessStatus (); foreach ( $ilist as $key => $value ) { $ilist [$key] ['iidKey'] = $XDeode->encode ( $value ['iid'] ); $lastApprover = json_decode ( $value ['processApprovals'], true ); if (! empty ( $lastApprover )) { $lastApproverKey = array_keys ( $lastApprover ); $lastApprover = end ( $lastApprover ); $staffDetail = $staff->getOne ( array ( 'where' => 'sid=' . end ( $lastApproverKey ), 'asArray' => true ) ); $lastApprover ['username'] = $staffDetail ['username']; } $ilist [$key] ['lastApprover'] = $lastApprover; } // print_r($ilist); $this->data ['invoiceList'] = $invoiceList; $this->data ['ilist'] = $ilist; $this->data ['memu'] = "invoice"; $this->data ['staff'] = $this->staff; $this->data ['receiptMemu'] = 'invoiceApproval'; $this->render ( "/admin/invoiceApproval", $this->data ); } function invoiceDetail() { Doo::loadClass ( 'XDeode' ); $XDeode = new XDeode ( 5 ); $iid = isset ( $this->params ['iid'] ) ? $this->params ['iid'] : ""; $iid = $XDeode->decode ( $iid ); if (! is_numeric ( $iid )) die ( 'illegal request' ); Doo::loadModel ( 'invoice' ); $invoice = new invoice (); Doo::loadModel ( 'invoiceOperationLog' ); $invoiceOperationLog = new invoiceOperationLog (); $invoiceDetail = $invoice->getOne ( array ( 'where' => 'status=1 and pendingApprovals=' . $this->staff [0] ['sid'] . ' and iid=' . $iid, 'asArray' => true ) ); if (empty ( $invoiceDetail )) die ( 'illegal request' ); if ($invoiceDetail ['settlementType'] == 1) { Doo::loadModel ( 'invoiceTraining' ); $invoiceTraining = new invoiceTraining (); $invoiceDetail ['invoiceTraining'] = $invoiceTraining->getInvoiceTrainingByItid ( $invoiceDetail ['trainId'] ); } $invoiceOperationLogList = $invoiceOperationLog->getInvoiceOperationLogByIid ( $iid ); $this->data ['invoiceDetail'] = $invoiceDetail; $this->data ['invoiceOperationLogList'] = $invoiceOperationLogList; $this->data ['INVOICEKEY'] = $invoice->authcode ( $invoiceDetail ['iid'], '' ); $this->data ['memu'] = "invoice"; $this->data ['staff'] = $this->staff; $this->data ['receiptMemu'] = 'invoiceApproval'; $this->render ( "/admin/invoiceApprovalDetail", $this->data ); } /** * 对发票进行审批,其中操作有终止,退回,同意动作。操作成功并记录下操作日志 * * @since 1.0.0 * @var integer iid 开票ID 已加密 * @var integer status 发票审批状态 * @var integer opintion 审批发票的意见 * @return string 如操作成功返回审批首页 */ function invoiceApprovalDo() { Doo::loadModel ( 'invoice' ); $invoice = new invoice (); $iid = $this->get_args ( 'invoiceKey' ) ? $this->get_args ( 'invoiceKey' ) : ""; $status = $this->get_args ( 'status' ) && is_numeric ( $this->get_args ( 'status' ) ) ? $this->get_args ( 'status' ) : 0; $opinion = $this->get_args ( 'opinion' ) ? $this->get_args ( 'opinion' ) : ""; $divApproval = $this->get_args ( 'divApproval' ) ? $this->get_args ( 'divApproval' ) : ""; $iid = $invoice->authcode ( $iid ); if (! is_numeric ( $iid )) die ( 'illegal request' ); // && ! empty ( $opinion ) if (! empty ( $iid ) && ! empty ( $status )) { if (! ($status == 2 || $status == 3 || $status == 4)) die ( 'illegal request' ); Doo::loadModel ( 'invoiceOperationLog' ); $invoiceOperationLog = new invoiceOperationLog (); $invoiceDetail = $invoice->getOne ( array ( 'where' => 'status=1 and iid=' . $iid . ' and pendingApprovals=' . $this->staff [0] ['sid'], 'asArray' => true ) ); if (empty ( $invoiceDetail )) die ( 'illegal request' ); $processApprovals = json_decode ( $invoiceDetail ['processApprovals'], true ); $invoiceManage = json_decode ( $invoiceDetail ['invoiceManage'], true ); if ($status == 3) { $invoice->status = $status; $item = array ( 'operation' => $opinion ); } else { if (empty ( $processApprovals )) { $processApprovals = array ( $this->staff [0] ['sid'] => array ( 'date' => date ( "Y-m-d H:i:s" ), 'opinion' => $opinion, 'status' => $status ) ); // var_dump(next($invoiceManage)); $nextInvoiceManage = next ( $invoiceManage ); // print_r($nextInvoiceManage); if ($status != 4 && $nextInvoiceManage !== false) $invoice->pendingApprovals = $nextInvoiceManage [0]; $invoice->processApprovals = json_encode ( $processApprovals ); // var_dump($invoice); // print_r($invoiceManage); } else { $processApprovals [$this->staff [0] ['sid']] = array ( 'date' => date ( "Y-m-d H:i:s" ), 'opinion' => $opinion, 'status' => $status ); $pendingApprovals = 0; foreach ( $invoiceManage as $key => $value ) { if ($value [0] == $this->staff [0] ['sid']) { if (isset ( $invoiceManage [$key + 1] )) $pendingApprovals = $invoiceManage [$key + 1] [0]; break; } } if ($status != 4 && ! empty ( $pendingApprovals )) $invoice->pendingApprovals = $pendingApprovals; $invoice->processApprovals = json_encode ( $processApprovals ); } $item = array ( 'operation' => $opinion ); if (count ( $processApprovals ) == count ( $invoiceManage ) && $status != 4) { $invoice->status = $status; $invoice->pendingApprovals = 0; $invoice->approvalTime = date ( "Y-m-d H:i:s" ); } elseif ($status == 4) { $invoice->status = $status; $item = array ( 'operation' => $opinion ); } } $invoice->updateTime = date ( "Y-m-d H:i:s" ); $invoice->update ( array ( 'where' => 'iid=' . $iid ) ); $item += array ( 'date' => date ( "Y-m-d H:i:s" ), 'img' => $this->staff [0] ['avatar'], 'username' => $this->staff [0] ['username'], 'uid' => $this->staff [0] ['sid'], 'category' => $this->staff [0] ['category'], 'status' => $status, 'iid' => $iid ); $invoiceOperationLog->setInvoiceOperationLog ( $item ); if (empty ( $divApproval )) return '/invoiceApproval'; else return '/invoiceApprovalAchieve/PEND'; } die ( 'illegal request' ); } /** * 展示需要打印的发票数据 * * @since 1.0.0 */ function invoicePrint() { Doo::loadModel ( 'invoice' ); $invoice = new invoice (); Doo::loadClass ( 'XDeode' ); $XDeode = new XDeode ( 5 ); Doo::loadModel ( 'staff' ); $staff = new staff (); $toPrint = $invoice->getPrintInvoiceByManage ( $this->staff [0] ['sid'], 0 ); $printed = $invoice->getPrintInvoiceByManage ( $this->staff [0] ['sid'], 1 ); foreach ( $toPrint as $key => $value ) { $toPrint [$key] ['iidKey'] = $XDeode->encode ( $value ['iid'] ); $lastApprover = json_decode ( $value ['processApprovals'], true ); if (! empty ( $lastApprover )) { $lastApproverKey = array_keys ( $lastApprover ); $lastApprover = end ( $lastApprover ); $staffDetail = $staff->getOne ( array ( 'where' => 'sid=' . end ( $lastApproverKey ), 'asArray' => true ) ); $lastApprover ['username'] = $staffDetail ['username']; } $toPrint [$key] ['lastApprover'] = $lastApprover; } foreach ( $printed as $key => $value ) { $printed [$key] ['iidKey'] = $XDeode->encode ( $value ['iid'] ); $lastApprover = json_decode ( $value ['processApprovals'], true ); if (! empty ( $lastApprover )) { $lastApproverKey = array_keys ( $lastApprover ); $lastApprover = end ( $lastApprover ); $staffDetail = $staff->getOne ( array ( 'where' => 'sid=' . end ( $lastApproverKey ), 'asArray' => true ) ); $lastApprover ['username'] = $staffDetail ['username']; } $printed [$key] ['lastApprover'] = $lastApprover; } $this->data ['printed'] = $printed; $this->data ['toPrint'] = $toPrint; $this->data ['memu'] = "invoice"; $this->data ['staff'] = $this->staff; $this->data ['receiptMemu'] = 'invoicePrint'; $this->render ( "/admin/invoicePrint", $this->data ); } /** * 展示发票打印的详情页面 * * @since 1.0.0 */ function invoicePrintDetail() { Doo::loadClass ( 'XDeode' ); $XDeode = new XDeode ( 5 ); $iid = isset ( $this->params ['iid'] ) ? $this->params ['iid'] : ""; $iid = $XDeode->decode ( $iid ); if (! is_numeric ( $iid )) die ( 'illegal request' ); Doo::loadModel ( 'invoice' ); $invoice = new invoice (); Doo::loadModel ( 'invoiceOperationLog' ); $invoiceOperationLog = new invoiceOperationLog (); Doo::loadModel ( 'invoicePaper' ); $invoicePaper = new invoicePaper (); $invoiceDetail = $invoice->getPrintInvoiceByManage ( $this->staff [0] ['sid'], 0, $iid ); if (empty ( $invoiceDetail )) die ( 'illegal request' ); $invoicePaperList = $invoicePaper->getInvoicePaperByInvoiceType ( $invoiceDetail ['invoiceType'],$invoiceDetail['invoiceForm'] ); $invoiceOperationLogList = $invoiceOperationLog->getInvoiceOperationLogByIid ( $iid ); if ($invoiceDetail ['settlementType'] == 1) { Doo::loadModel ( 'invoiceTraining' ); $invoiceTraining = new invoiceTraining (); $invoiceDetail ['invoiceTraining'] = $invoiceTraining->getInvoiceTrainingByItid ( $invoiceDetail ['trainId'] ); } $this->data ['invoicePaperList'] = $invoicePaperList; $this->data ['invoiceDetail'] = $invoiceDetail; $this->data ['invoiceOperationLogList'] = $invoiceOperationLogList; $this->data ['INVOICEKEY'] = $invoice->authcode ( $invoiceDetail ['iid'], '' ); $this->data ['memu'] = "invoice"; $this->data ['staff'] = $this->staff; $this->data ['receiptMemu'] = 'invoicePrint'; $this->render ( "/admin/invoicePrintDetail", $this->data ); } /** * 所有待打印 发票 */ function invoicePrintStayAchieve() { Doo::loadModel ( 'invoice' ); $invoice = new invoice (); Doo::loadClass ( 'XDeode' ); $XDeode = new XDeode ( 5 ); Doo::loadModel ( 'staff' ); $staff = new staff (); $MebSea = $this->get_args ( 'MebSea' ) ? urldecode ( $this->get_args ( 'MebSea' ) ) : ""; $invoiceType = $this->get_args ( 'invoiceType' ) ? $this->get_args ( 'invoiceType' ) : "ALL"; $invoiceTrain = $this->get_args ( 'invoiceTrain' ) ? $this->get_args ( 'invoiceTrain' ) : "ALL"; $invoiceTrainName = $this->get_args ( 'invoiceTrainName' ) ? $this->get_args ( 'invoiceTrainName' ) : "ALL"; Doo::loadModel ( 'invoiceTraining' ); $invoiceTraining = new invoiceTraining (); $trainList = $invoiceTraining->getInvoiceTrainingBySubmitStatus (); $page_size = 12; $page = isset ( $this->params ['page'] ) && is_numeric ( $this->params ['page'] ) ? $this->params ['page'] : 1; $status = isset ( $this->params ['status'] ) ? $this->params ['status'] : "ALL"; // $status = $this->get_args ( 'status' ) ? $this->get_args ( 'status' ) : "ALL"; $get = "/" . $status; $con = ' and status=2 '; if ($status == 'TOPRINT') $con = ' and status=2 and printStatus=0 '; elseif ($status == 'PRINTED') $con = ' and status=2 and printStatus=1'; if ($invoiceType == 'ORDINARY') $con .= ' and invoiceType=0 and invoiceForm=0 '; elseif ($invoiceType == 'SPECIAL'){ $con .= ' and invoiceType=1 '; }elseif($invoiceType == 'ELECTRON'){ $con .= ' and invoiceType=0 and invoiceForm=1 '; } if ($invoiceTrain == 'ORDINARY') $con .= ' and trainId=0 '; elseif ($invoiceTrain == 'TRAIN') $con .= ' and trainId!=0 '; if ($invoiceTrainName != 'ALL') { $trainId = $XDeode->decode ( $invoiceTrainName ); if (is_numeric ( $trainId )) $con .= ' and trainId =' . $trainId; } $date = $this->get_args ( 'date' ) ? $this->get_args ( 'date' ) : ""; $dateArr = explode ( ':', $date ); $D1 = ''; $D2 = ''; if (! empty ( $date )) { $D1 = $dateArr [0]; $D2 = $dateArr [1]; } if (! empty ( $D1 ) && ! empty ( $D2 ) && ! empty ( $date )){ $D1= $D1.":00.00.00"; $D2= $D2.":23.59.59"; $con .= ' and printTime BETWEEN "' . $D1 . '" AND "' . $D2 . '" '; } if (! empty ( $MebSea )) { $con .= ' and ( invoiceNo like "%' . $MebSea . '%" or invoiceTitle like "%' . $MebSea . '%" or invoiceCompany like "%' . $MebSea . '%" or invoicePrice like "%' . $MebSea . '%" or invoiceNo like "%' . $MebSea . '%" )'; } $pageinfo ['page'] = array ( 'previous' => '' ); $get .= "?date=" . urlencode ( $date ) . "&MebSea=" . urlencode ( $MebSea ) . "&invoiceType=" . urlencode ( $invoiceType ) . "&invoiceTrain=" . urlencode ( $invoiceTrain ) . ""; $sql = " (untreadStatus=0 or untreadStatus=3 or untreadStatus=4) and moldManage like '%[\"" . $this->staff [0] ['sid'] . "\",%'" . $con; $action = "invoicePrintStayAchieve"; //echo $sql; $pageinfo = $this->get_page ( "CLD_invoice", $sql, $page, $page_size, $action, $get, "" ); $limit = $pageinfo ['lower'] . ',' . $page_size; $list = $invoice->getInvoiceByUntreadStatusPage ( $limit, $sql, 'desc', 5 ); $this->data ['trainList'] = $trainList; $this->data ['invoiceType'] = $invoiceType; $this->data ['invoiceTrain'] = $invoiceTrain; $this->data ['invoiceTrainName'] = $invoiceTrainName; $this->data ['MebSeaEn'] = $MebSea; $this->data ['MebSea'] = urlencode ( $MebSea ); $this->data ['get'] = $get; $this->data ['page'] = $pageinfo; $this->data ['date'] = $date; $this->data ['status'] = $status; $this->data ['invoiceType'] = $invoiceType; $this->data ['memu'] = "invoice"; $this->data ['staff'] = $this->staff; foreach ( $list as $key => $value ) { $list [$key] ['iidKey'] = $XDeode->encode ( $value ['iid'] ); $lastApprover = json_decode ( $value ['processApprovals'], true ); if (! empty ( $lastApprover )) { $lastApproverKey = array_keys ( $lastApprover ); $lastApprover = end ( $lastApprover ); $staffDetail = $staff->getOne ( array ( 'where' => 'sid=' . end ( $lastApproverKey ), 'asArray' => true ) ); $lastApprover ['username'] = $staffDetail ['username']; } $list [$key] ['lastApprover'] = $lastApprover; } $this->data ['receiptMemu'] = 'invoicePrint'; $this->data ['list'] = $list; $this->render ( "/admin/invoicePrintStayAchieve", $this->data ); } /** * 填写票号并完成打印 * @since 1.0.0 */ function invoicePrintDo() { Doo::loadModel ( 'invoice' ); $invoice = new invoice (); $iid = $this->get_args ( 'invoiceKey' ) ? $this->get_args ( 'invoiceKey' ) : ""; $invoiceNo = $this->get_args ( 'invoiceNo' ) ? $this->get_args ( 'invoiceNo' ) : ""; $invoicePrintType = $this->get_args ( 'invoicePrintType' ) ? $this->get_args ( 'invoicePrintType' ) : ""; $iid = $invoice->authcode ( $iid ); if (! is_numeric ( $iid )) die ( 'illegal request-iid' ); if (! empty ( $iid ) && ! empty ( $invoiceNo )) { Doo::loadModel ( 'invoiceOperationLog' ); $invoiceOperationLog = new invoiceOperationLog (); Doo::loadModel ( 'invoiceStatistics' ); $invoiceStatistics = new invoiceStatistics (); $XDeode = new XDeode ( 5 ); Doo::loadModel ( 'invoicePaper' ); $invoicePaper = new invoicePaper (); $invoicePrintDetail = $invoice->getInvoiceByPrint ( $iid ); if (empty ( $invoicePrintDetail )) die ( 'illegal request-data_empty' ); // $ipid = $XDeode->decode ( $invoiceNo ); $paperDetail = $invoicePaper->getInvoicePaperByIpid ( $ipid ); if (empty ( $paperDetail )) die ( 'illegal request-paper_empty' ); $invoicePaper = new invoicePaper (); $item = array ( 'iid' => $iid, 'ipid' => $ipid ); $invoicePaper->setInvoicePaperByCondition ( $item ); $item = array ( 'iid' => $iid, 'printStatus' => 1, 'updateTime' => date ( "Y-m-d H:i:s" ), 'printer' => $this->staff [0] ['username'], 'printTime' => date ( "Y-m-d H:i:s" ), 'invoiceNo' => $paperDetail ['invoiceNo'] ); $invoice->setInvoiceByCondition ( $item ); $item = array ( 'date' => date ( "Y-m-d H:i:s" ), 'operation' => '打印发票号:' . $paperDetail ['invoiceNo'], 'status' => 5, 'img' => $this->staff [0] ['avatar'], 'username' => $this->staff [0] ['username'], 'uid' => $this->staff [0] ['sid'], 'category' => $this->staff [0] ['category'], 'iid' => $iid ); $invoiceOperationLog->setInvoiceOperationLog ( $item ); // 去统计--负票不汇总 if ($invoicePrintDetail ['untreadStatus'] != 4) { $item = array ( 'date' => date ( "Y-m-d H:i:s" ), 'priceClass' => 1, 'cid' => $invoicePrintDetail ['cid'], 'staff' => $invoicePrintDetail ['sid'], 'invoicePrice' => $invoicePrintDetail ['invoicePrice'] ); $invoiceStatistics->setInvoiceStatisticsByCondition ( $item ); } // 发送通知信息到微信-去除 // $this->setWXMsg($iid,'PRINT'); // 发票信息库 $this->autoUpdateInvoiceInfoBase ( $invoicePrintDetail ); // 申请人获取微信通知 Doo::loadModel ( 'staff' ); $staff = new staff (); Doo::loadClass ( 'XDeode' ); $XDeode = new XDeode ( 5 ); $username2 = $staff->getOne ( array ( 'select' => 'wxid', 'where' => 'sid=' . $invoicePrintDetail ['sid'], 'asArray' => TRUE ) ); $title2 = '[结果]您的发票' . $invoicePrintDetail ['invoiceSerial'] . '完成打印'; $msg = ''; $url = 'http://m.cld.smartcost.com.cn/invoicePrintDetail/' . $XDeode->encode ( $invoicePrintDetail ['iid'] ) . '.html'; $hfreult = $this->msgSend ( $msg, $title2, $url, $username2 ['wxid'], $invoicePrintDetail ['sid'], 'print' ); if (empty ( $invoicePrintType )) return "/invoicePrint"; else return "/invoicePrintStayAchieve"; } } /** * 需要邮寄的发票 * @since 1.0.0 */ function invoicePost() { Doo::loadModel ( 'invoice' ); $invoice = new invoice (); Doo::loadModel ( 'express' ); $express = new express (); $invoicePost = $invoice->getPostByInvoice (); $invoicePosted = $invoice->getPostByInvoice ( 1 ); $expressList = $express->getExpressByAll (); $invoicePostExpress = ""; if (isset ( $_COOKIE ["invoicePostExpress"] )) $invoicePostExpress = $_COOKIE ["invoicePostExpress"]; $this->data ['invoicePostExpress'] = $invoicePostExpress; $this->data ['expressList'] = $expressList; $this->data ['invoicePost'] = $invoicePost; $this->data ['invoicePosted'] = $invoicePosted; $this->data ['memu'] = "invoice"; $this->data ['staff'] = $this->staff; $this->data ['receiptMemu'] = 'invoicePost'; $this->render ( "/admin/invoicePost", $this->data ); } /** * 添加发票邮寄信息 */ function invoiceExpressAddDo() { Doo::loadModel ( 'invoice' ); $invoice = new invoice (); $iid = $this->get_args ( 'iidKey' ) ? $this->get_args ( 'iidKey' ) : ""; $expressCompany = $this->get_args ( 'express' ) ? $this->get_args ( 'express' ) : ""; $expressNumber = $this->get_args ( 'nu' ) ? $this->get_args ( 'nu' ) : ""; $actualItems = $this->get_args ( 'actualItems' ) ? $this->get_args ( 'actualItems' ) : ""; $iid = $iid = $invoice->authcode ( $iid ); if (! is_numeric ( $iid ) && empty ( $expressCompany ) && empty ( $expressNumber ) && empty ( $actualItems )) die ( 'illegal request' ); $invoicePrintDetail = $invoice->getInvoiceByIid ( $iid ); setcookie ( 'invoicePostExpress', $expressNumber ); $item = array ( 'iid' => $iid, 'postStatus' => 1, 'updateTime' => date ( "Y-m-d H:i:s" ), 'postTime' => date ( "Y-m-d H:i:s" ), 'expressCompany' => $expressCompany, 'expressNumber' => $expressNumber, 'actualItems' => $actualItems, 'poster' => $this->staff [0] ['username'] ); $invoice->setInvoiceByCondition ( $item ); // 微信通知-去掉 // $this->setWXMsg ( $iid ); Doo::loadModel ( 'staff' ); $staff = new staff (); Doo::loadClass ( 'XDeode' ); $XDeode = new XDeode ( 5 ); $username2 = $staff->getOne ( array ( 'select' => 'wxid', 'where' => 'sid=' . $invoicePrintDetail ['sid'], 'asArray' => TRUE ) ); $title2 = '[结果]您的发票' . $invoicePrintDetail ['invoiceSerial'] . '已邮寄'; $expCom = explode ( ":", $invoicePrintDetail ['expressCompany'] ); if (empty ( $expCom )) $expCom [0] = ''; $msg = $expCom [0] . ':' . $invoicePrintDetail ['expressNumber'] . ''; $url = 'https://m.kuaidi100.com/result.jsp?nu=' . $invoicePrintDetail ['expressNumber']; $hfreult = $this->msgSend ( $msg, $title2, $url, $username2 ['wxid'], $invoicePrintDetail ['sid'], 'print' ); return '/invoicePost'; } function invoiceExpressUpdateDo() { Doo::loadModel ( 'invoice' ); $invoice = new invoice (); $action = $this->get_args ( 'action' ) ? $this->get_args ( 'action' ) : ""; $iid = $this->get_args ( 'iidKey' ) ? $this->get_args ( 'iidKey' ) : ""; $expressCompany = $this->get_args ( 'express' ) ? $this->get_args ( 'express' ) : ""; $expressNumber = $this->get_args ( 'nu' ) ? $this->get_args ( 'nu' ) : ""; $actualItems = $this->get_args ( 'actualItems' ) ? $this->get_args ( 'actualItems' ) : ""; $iid = $invoice->authcode ( $iid ); if (! is_numeric ( $iid ) && empty ( $expressCompany ) && empty ( $expressNumber ) && empty ( $actualItems )) die ( 'illegal request' ); $item = array ( 'iid' => $iid, 'updateTime' => date ( "Y-m-d H:i:s" ), 'expressCompany' => $expressCompany, 'expressNumber' => $expressNumber, 'actualItems' => $actualItems, 'poster' => $this->staff [0] ['username'] ); $invoice->setInvoiceByCondition ( $item ); return $action; } /** * 可退票管理 */ function invoiceUntreadIsAchieve() { Doo::loadModel ( 'invoice' ); $invoice = new invoice (); $MebSea = $this->get_args ( 'MebSea' ) ? $this->get_args ( 'MebSea' ) : ""; /* * Doo::loadClass ( 'XDeode' ); $XDeode = new XDeode ( 5 ); $page_size = 18; $page = isset ( $this->params ['page'] ) && is_numeric ( $this->params ['page'] ) ? $this->params ['page'] : 1; $date = $this->get_args ( 'date' ) ? $this->get_args ( 'date' ) : ""; $get = "?date=" . urlencode ( $date ) . "&MebSea=" . urlencode ( $MebSea ); $dateArr = explode ( ':', $date ); $D1 = ''; $D2 = ''; if (! empty ( $date )) { $D1 = $dateArr [0]; $D2 = $dateArr [1]; } $con = ''; if (! empty ( $D1 ) && ! empty ( $D2 )) $con = ' and bindTime BETWEEN "' . $D1 . '" AND "' . $D2 . '" '; // if ($date == 'MONTHO') // $con = ' and updateTime>DATE_SUB(CURDATE(), INTERVAL 1 MONTH)'; // elseif ($date == 'MONTHT') // $con = ' and updateTime>DATE_SUB(CURDATE(), INTERVAL 3 MONTH)'; // elseif ($date == 'MONTHY') // $con = ' and updateTime>DATE_SUB(CURDATE(), INTERVAL 1 YEAR)'; if (! empty ( $MebSea )) { $con .= ' and ( invoiceTitle like "%' . $MebSea . '%" or invoiceCompany like "%' . $MebSea . '%" or invoicePrice like "%' . $MebSea . '%" )'; } $pageinfo ['page'] = array ( 'previous' => '' ); */ if (empty ( $MebSea )) {// $con = ' and invoiceNo like "NULL" '; } else { $con = ' and (invoiceNo like "%' . $MebSea . '%" or invoiceTitle like "%' . $MebSea . '%" or invoiceCompany like "%' . $MebSea . '%" )'; } // printStatus=1 and $sql = " (untreadStatus=0 or untreadStatus=3) and status=2 and sid=" . $this->staff [0] ['sid'] . $con; /* * $action = "invoiceUntreadIsAchieve"; $pageinfo = $this->get_page ( "CLD_invoice", $sql, $page, $page_size, $action, $get, "" ); $limit = $pageinfo ['lower'] . ',' . $page_size; */ $limit = '0,50'; $list = $invoice->getInvoiceByUntreadStatusPage ( $limit, $sql ); //print_r($list); $this->data ['MebSeaEn'] = $MebSea; /* * $this->data ['get'] = $get; $this->data ['page'] = $pageinfo; $this->data ['date'] = $date; */ $this->data ['list'] = $list; $this->data ['memu'] = "invoice"; $this->data ['staff'] = $this->staff; $this->data ['receiptMemu'] = 'invoice'; $this->render ( "/admin/invoiceUntreadIsAchieve", $this->data ); } // 已经退票的发票 function invoiceUntreadED() { Doo::loadModel ( 'invoice' ); $invoice = new invoice (); $MebSea = $this->get_args ( 'MebSea' ) ? $this->get_args ( 'MebSea' ) : ""; $invoiceType = $this->get_args ( 'invoiceType' ) ? $this->get_args ( 'invoiceType' ) : ""; Doo::loadClass ( 'XDeode' ); $XDeode = new XDeode ( 5 ); $page_size = 18; $page = isset ( $this->params ['page'] ) && is_numeric ( $this->params ['page'] ) ? $this->params ['page'] : 1; $date = $this->get_args ( 'date' ) ? $this->get_args ( 'date' ) : ""; $get = "?date=" . urlencode ( $date ) . "&MebSea=" . urlencode ( $MebSea ); $dateArr = explode ( ':', $date ); $D1 = ''; $D2 = ''; if (! empty ( $date )) { $D1 = $dateArr [0]; $D2 = $dateArr [1]; } $con = ''; if (! empty ( $D1 ) && ! empty ( $D2 )) { $con = ' and bindTime BETWEEN "' . $D1 . '" AND "' . $D2 . '" '; } // if ($date == 'MONTHO') // $con = ' and updateTime>DATE_SUB(CURDATE(), INTERVAL 1 MONTH)'; // elseif ($date == 'MONTHT') // $con = ' and updateTime>DATE_SUB(CURDATE(), INTERVAL 3 MONTH)'; // elseif ($date == 'MONTHY') // $con = ' and updateTime>DATE_SUB(CURDATE(), INTERVAL 1 YEAR)'; if (! empty ( $MebSea )) { $con .= ' and ( invoiceTitle like "%' . $MebSea . '%" or invoiceCompany like "%' . $MebSea . '%" or invoicePrice like "%' . $MebSea . '%" or invoiceNo like "%' . $MebSea . '%" )'; } if ($invoiceType == 'ORDINARY') { $con .= ' and invoiceType=0 '; } elseif ($invoiceType == 'SPECIAL') { $con .= ' and invoiceType=1 '; } $pageinfo ['page'] = array ( 'previous' => '' ); // printStatus=1 and $sql = " (untreadStatus=2 ) and status=2 and sid=" . $this->staff [0] ['sid'] . $con; $action = "invoiceUntreadED"; $pageinfo = $this->get_page ( "CLD_invoice", $sql, $page, $page_size, $action, $get, "" ); $limit = $pageinfo ['lower'] . ',' . $page_size; $list = $invoice->getInvoiceByUntreadStatusPage ( $limit, $sql ); // print_r($list); $this->data ['MebSeaEn'] = $MebSea; $this->data ['get'] = $get; $this->data ['page'] = $pageinfo; $this->data ['date'] = $date; $this->data ['invoiceType'] = $invoiceType; $this->data ['list'] = $list; $this->data ['memu'] = "invoice"; $this->data ['staff'] = $this->staff; $this->data ['receiptMemu'] = 'invoice'; $this->render ( "/admin/invoiceUntreadED", $this->data ); } /** * 退票处理页面 */ function invoiceUntread() { Doo::loadModel ( 'invoice' ); $invoice = new invoice (); $untreadInvoice = $invoice->getInvoiceByUntreadStatus ( 1, 0, 50 ); $establishedInvoice = $invoice->getInvoiceByUntreadStatus ( 2 ); //print_r($establishedInvoice); // foreach ( $establishedInvoice as $key => $value ) { // // months // $lossDate = strtotime ( "+1 month", strtotime ( $value ['OperationLog'] ['date'] ) ); // $nowDate = strtotime ( 'now' ); // $establishedInvoice [$key] ['lossShow'] = false; // if ($lossDate < $nowDate) // $establishedInvoice [$key] ['lossShow'] = true; // } $this->data ['untreadInvoice'] = $untreadInvoice; $this->data ['establishedInvoice'] = $establishedInvoice; $this->data ['memu'] = "invoice"; $this->data ['staff'] = $this->staff; $this->data ['receiptMemu'] = 'invoiceUntread'; $this->render ( "/admin/invoiceUntread", $this->data ); } /** * 确认收到退回的发票,开票状态为退回 //收款状态解绑,公司统计扣除入账额度 */ function invoiceUntreadEstablishedDo() { $untreadIidKey = $this->get_args ( 'untreadIidKey' ) ? $this->get_args ( 'untreadIidKey' ) : ''; Doo::loadModel ( 'invoice' ); $invoice = new invoice (); Doo::loadModel ( 'invoiceOperationLog' ); $invoiceOperationLog = new invoiceOperationLog (); Doo::loadModel ( 'invoiceReceivables' ); Doo::loadModel ( 'invoiceStatistics' ); $iid = $invoice->authcode ( $untreadIidKey ); if (! empty ( $iid ) && ! is_numeric ( $iid )) die ( 'illegal request' ); $invoiceDetails = $invoice->getInvoiceByIid ( $iid ); if ($invoiceDetails ['untreadStatus'] != 1) die ( 'illegal request untreadStatus error !=1' ); $item = array ( 'iid' => $iid, // 'irid'=>'', 'untreadStatus' => 2, 'untreadTime'=>date ( "Y-m-d H:i:s" ) , 'updateTime' => date ( "Y-m-d H:i:s" ) ); $invoice->setInvoiceByCondition ( $item ); $item = array ( 'date' => date ( "Y-m-d H:i:s" ), 'operation' => '已确认退票', 'status' => 6, 'img' => $this->staff [0] ['avatar'], 'username' => $this->staff [0] ['username'], 'uid' => $this->staff [0] ['sid'], 'category' => $this->staff [0] ['category'], 'iid' => $iid ); $invoiceOperationLog->setInvoiceOperationLog ( $item ); // 收款解绑以及入账扣除 收款扣除 if (! empty ( $invoiceDetails ['irid'] )) { $iridList = explode ( ',', $invoiceDetails ['irid'] ); foreach ( $iridList as $value ) { $invoiceReceivables = new invoiceReceivables (); $irDetails = $invoiceReceivables->getOne ( array ( 'where' => " irid=" . $value . ' ', 'asArray' => TRUE ) ); $bindPrice=$irDetails['bindPrice']-$invoiceDetails['invoicePrice']; if($bindPrice<0){ $bindPrice=0; } $iidExtend = explode ( ',', $irDetails ['iidExtend'] ); $item = array ( 'irid' => $value, 'bindStatus' => 0, 'untreadStatus' => 1, 'bindPrice'=>$bindPrice, 'untreadStaff' => $invoiceDetails ['userName'], 'unbundlingTime' => date ( "Y-m-d H:i:s" ), ); if($irDetails['iid']==$iid){ $item+=array( 'iid' => 0 ); }else{ foreach ($iidExtend as $iek=>$iev){ if($iev==$iid){ unset($iidExtend[$iek]); break; } } if(empty($iidExtend)){ $item+=array( 'iidExtend' => '' ); }else{ $iidExtend=implode(",", $iidExtend); $item+=array( 'iidExtend' => $iidExtend ); } } $invoiceReceivables->setInvoiceReceivablesByCondition ( $item ); if (! empty ( $irDetails )) { // 扣除入账 $invoiceStatistics = new invoiceStatistics (); $item = array ( 'date' => date ( 'Y-m-d', strtotime ( $irDetails ['receivablesDate'] ) ), 'priceClass' => 3, 'cid' => $invoiceDetails ['cid'], 'staff' => $invoiceDetails ['sid'], 'accountPrice' => - $irDetails ['receivablesPrice'] ); $invoiceStatistics->setInvoiceStatisticsByCondition ( $item ); // 扣除收款 $invoiceStatistics = new invoiceStatistics (); $item = array ( 'date' => date ( 'Y-m-d', strtotime ( $irDetails ['receivablesDate'] ) ), 'priceClass' => 2, 'cid' => $invoiceDetails ['cid'], 'staff' => $invoiceDetails ['sid'], 'irid' => $irDetails ['irid'], 'receivablesPrice' => - $irDetails ['receivablesPrice'] ); $invoiceStatistics->setInvoiceStatisticsByCondition ( $item ); } // 解绑时删除收入流水--退票不删除流水 // Doo::loadModel ( 'wasteBook' ); // $wasteBook = new wasteBook (); // $wasteBook->delete ( array ( // 'where' => 'dataID=' . $value . ' and accountType=7', // 'limit' => 1 // ) ); } } return "/invoiceUntread"; } function invoiceUntreadRecallDo() { $iidKey = isset ( $this->params ['iidKey'] ) ? $this->params ['iidKey'] : ""; Doo::loadModel ( 'invoice' ); $invoice = new invoice (); Doo::loadClass ( 'XDeode' ); $XDeode = new XDeode ( 5 ); Doo::loadModel ( 'invoiceOperationLog' ); $invoiceOperationLog = new invoiceOperationLog (); $iid = $XDeode->decode ( $iidKey ); $invoiceDetail = $invoice->getInvoiceByIid ( $iid ); if (empty ( $invoiceDetail )) { die ( 'illegal request-DATANULL' ); } $item = array ( 'iid' => $iid, 'untreadStatus' => 0 ); $invoice->setInvoiceByCondition ( $item ); $item = array ( 'date' => date ( "Y-m-d H:i:s" ), 'operation' => '撤回申请退票', 'status' => 13, 'img' => $this->staff [0] ['avatar'], 'username' => $this->staff [0] ['username'], 'uid' => $this->staff [0] ['sid'], 'category' => $this->staff [0] ['category'], 'iid' => $iid ); $invoiceOperationLog->setInvoiceOperationLog ( $item ); return "/invoiceUntread"; } /** * 建立负票,关联原来发票 */ function invoiceLossDo() { $iidKey = $this->get_args ( 'iidKey' ) ? $this->get_args ( 'iidKey' ) : ""; if (! empty ( $iidKey )) { Doo::loadClass ( 'XDeode' ); $XDeode = new XDeode ( 5 ); Doo::loadModel ( 'invoice' ); $invoice = new invoice (); Doo::loadModel ( 'invoiceOperationLog' ); $invoiceOperationLog = new invoiceOperationLog (); $iidKey = $XDeode->decode ( $iidKey ); $invoiceDetail = $invoice->getInvoiceByIid ( $iidKey ); // 拷贝插入一条发票数据 $iid = $invoice->setInvoiceLoss ( $iidKey ); // 更新负票 if($invoiceDetail['invoiceForm']==1){ $invoiceSerial = "#FE" . date ( "Ymd" ) . mt_rand ( 1000, 9999 ); }else{ $invoiceSerial = "#F" . date ( "Ymd" ) . mt_rand ( 1000, 9999 ); } $invoice = new invoice (); $item = array ( 'iid' => $iid, 'sid' => $this->staff [0] ['sid'], 'userName' => $this->staff [0] ['username'], 'cid' => $this->staff [0] ['cid'], 'categoryName' => $this->staff [0] ['category'], 'invoiceQuantity' => - $invoiceDetail ['invoiceQuantity'], 'invoicePrice' => - $invoiceDetail ['invoicePrice'], 'invoiceSerial' => $invoiceSerial, 'invoiceNo' => '', 'printStatus' => 0, 'untreadStatus' => 4, // 关联发票号 'lossIid' => $invoiceDetail ['iid'] ); $invoice->setInvoiceByCondition ( $item ); // 更新原发票 $invoice = new invoice (); $item = array ( 'iid' => $invoiceDetail ['iid'], 'lossIid' => $iid ); $invoice->setInvoiceByCondition ( $item ); // 操作日志 $item = array ( 'date' => date ( "Y-m-d H:i:s" ), 'operation' => "创建负票" . $invoiceSerial, 'status' => 12, 'img' => $this->staff [0] ['avatar'], 'username' => $this->staff [0] ['username'], 'uid' => $this->staff [0] ['sid'], 'category' => $this->staff [0] ['category'], 'iid' => $iid ); $invoiceOperationLog->setInvoiceOperationLog ( $item ); // print_r($invoiceDetail); // echo $iid;die; } return '/invoiceUntread'; } /** * 上传银行到账 收款文件 */ function invoiceReceivablesBankUpload() { $POST_MAX_SIZE = ini_get ( 'post_max_size' ); $unit = strtoupper ( substr ( $POST_MAX_SIZE, - 1 ) ); $multiplier = ($unit == 'M' ? 1048576 : ($unit == 'K' ? 1024 : ($unit == 'G' ? 1073741824 : 1))); if (( int ) $_SERVER ['CONTENT_LENGTH'] > $multiplier * ( int ) $POST_MAX_SIZE && $POST_MAX_SIZE) { header ( "HTTP/1.1 500 Internal Server Error" ); echo "POST exceeded maximum allowed size."; exit ( 0 ); } // Settings $save_path = DOO::conf ()->SITE_PATH . "upload/invoiceReceivablesBank/"; // The path were we will save the file (getcwd() may not be reliable and should be tested in your environment) $upload_name = "Filedata"; $file_name = ""; $nk = time (); $file_name = $nk . '.' . $this->_GetFileEXT ( $_FILES [$upload_name] ['name'] ); // preg_replace('/[^'.$valid_chars_regex.']|\.+$/i', "", basename($_FILES[$upload_name]['name'])); if (! @move_uploaded_file ( $_FILES [$upload_name] ["tmp_name"], $save_path . $file_name )) { echo "文件无法保存."; exit ( 0 ); } echo json_encode ( array ( 'filename' => $file_name, 'id' => $nk ) ); exit ( 0 ); } /** * 解析银行到账收款execl并导入库中 */ function invoiceReceivablesImport() { $path = $this->get_args ( 'bankName' ) ? $this->get_args ( 'bankName' ) : ""; if ($path != "") { Doo::loadModel ( 'invoiceReceivables' ); $invoiceReceivables = new invoiceReceivables (); Doo::loadClass ( 'invoice.func' ); Doo::loadModel ( 'invoiceROLog' ); $invoiceROLog = new invoiceROLog (); Doo::loadModel ( 'invoiceStatistics' ); $invoiceStatistics = new invoiceStatistics (); $exlArray = formatExcelToArrayBank ( DOO::conf ()->SITE_PATH . "upload/invoiceReceivablesBank/" . $path ); $bankBatchNumber = 'BBN_' . time (); Doo::db ()->beginTransaction (); // 批量存储收款--由于必须获得收款ID, $sql = 'INSERT INTO CLD_invoiceReceivables (OriginalPrice,receivablesPrice, receivablesMessage,receivablesSerial,receivablesBank,receivablesDate,inputStaff,date,receivablesCategory,receivablesStaff,bankBatchNumber,recepitTitleMark) VALUES '; $date = date ( "Y-m-d" ); $receivablesList = array (); foreach ( $exlArray as $key => $value ) { $receivablesSql = '(' . $value ["receivablesPrice"] . ',' . $value ["receivablesPrice"] . ',"' . $value ["receivablesMessage"] . '",' . '"#SK' . date ( "Ymd" ) . mt_rand ( 1000, 9999 ) . '","' . $value ["receivablesBank"] . '","' . $value ["receivablesDate"] . '","' . $this->staff [0] ['username'] . '","' . $date . '","PUBLIC","PUBLIC","' . $bankBatchNumber . '","' . $value ["receivablesMessage"] . '")'; array_push ( $receivablesList, $receivablesSql ); } $sql = $sql . implode ( ',', $receivablesList ); // echo $sql; Doo::db ()->query ( $sql ); // 批量存储收款统计 // 获得刚刚导入数据的irid组-缺少办事处和人员 $iridList = $invoiceReceivables->getInvoiceReceivablesByBBN ( $bankBatchNumber ); // 没有irid 回滚所有操作 if (empty ( $iridList )) { Doo::db ()->rollBack (); header ( 'Content-Type:text/html;charset=utf-8' ); die ( '文档或数据不正确,请重新上传.' ); } $sql = 'INSERT INTO CLD_invoiceStatistics (date, priceClass,irid,receivablesPrice) VALUES '; $statisticsList = array (); foreach ( $iridList as $value ) { $statisticsSql = '("' . $date . '",2,' . $value ['irid'] . ',' . $value ["receivablesPrice"] . ')'; array_push ( $statisticsList, $statisticsSql ); } $sql = $sql . implode ( ',', $statisticsList ); Doo::db ()->query ( $sql ); // 批量存储操作日志 $sql = 'INSERT INTO CLD_invoiceROLog (operation, date,status,img, username,uid,category,irid) VALUES '; $ROLogList = array (); foreach ( $iridList as $value ) { $ROLogSql = '("' . $this->staff [0] ['username'] . ' 转入 公共待认领款项","' . $date . '",1,"' . $this->staff [0] ['avatar'] . '","' . $this->staff [0] ['username'] . '","' . $this->staff [0] ['sid'] . '","' . $this->staff [0] ['category'] . '","' . $value ['irid'] . '")'; array_push ( $ROLogList, $ROLogSql ); } $sql = $sql . implode ( ',', $ROLogList ); Doo::db ()->query ( $sql ); // 批量写入流水 $sql = 'INSERT INTO CLD_wasteBook (dataID, expensesType,accountType,accountPriceShow, accountPrice,accountBank,category,cid,name,sid,inputDate) VALUES '; $wasteBookList = array (); foreach ( $iridList as $value ) { $accountBank = ''; if ($value ['receivablesBank'] == '纵横广发') { $accountBank = 'CGBDeposit'; } elseif ($value ['receivablesBank'] == '纵横工行') { $accountBank = 'ICBCDeposit'; } elseif ($value ['receivablesBank'] == '华润银行') { $accountBank = 'HUADeposit'; } elseif ($value ['receivablesBank'] == '个人广发') { $accountBank = 'PersonalDeposit'; } $wasteBookSql = '("' . $value ['irid'] . ' ",1,7,"' . $value ['receivablesPrice'] . '","' . $value ['receivablesPrice'] . '","' . $accountBank . '", "' . $this->staff [0] ['category'] . '","' . $this->staff [0] ['cid'] . '","' . $this->staff [0] ['username'] . '","' . $this->staff [0] ['sid'] . '","' . date ( "Y-m-d H:i:s" ) . '")'; array_push ( $wasteBookList, $wasteBookSql ); } $sql = $sql . implode ( ',', $wasteBookList ); Doo::db ()->query ( $sql ); Doo::db ()->commit (); return "/invoiceReceivables"; } echo 'no file'; } function invoiceReceivables() { $invoiceTC = $this->get_args ( 'invoiceTC' ) ? $this->get_args ( 'invoiceTC' ) : ''; Doo::loadModel ( 'L_category' ); $lCategory = new L_category (); Doo::loadModel ( 'staff' ); $staff = new staff (); Doo::loadModel ( 'invoiceReceivables' ); $invoiceReceivables = new invoiceReceivables (); Doo::loadModel ( 'invoice' ); $invoice = new invoice (); Doo::loadClass ( 'XDeode' ); $XDeode = new XDeode ( 5 ); $category = $lCategory->getCategory (); $staffList = $staff->getStaffByCid ( $this->staff [0] ['cid'] ); $sql = 'bindStatus=1 and iid!=0'; $receivablesList = $invoiceReceivables->getInvoiceReceivablesByNew ( 4, $sql ); // 获取未入账发票 $invoiceUnAccount = $invoice->getInvoiceByUnAccount ( $invoiceTC ); $invoiceExistAccount = $invoice->getInvoiceByUnAccount ( '', true ); foreach ( $invoiceUnAccount as $key => $value ) { $invoiceUnAccount [$key] ['iidKey'] = $XDeode->encode ( $value ['iid'] ); $lastApprover = json_decode ( $value ['processApprovals'], true ); if (! empty ( $lastApprover )) { $lastApproverKey = array_keys ( $lastApprover ); $lastApprover = end ( $lastApprover ); $staffDetail = $staff->getOne ( array ( 'where' => 'sid=' . end ( $lastApproverKey ), 'asArray' => true ) ); $lastApprover ['username'] = $staffDetail ['username']; } $invoiceUnAccount [$key] ['lastApprover'] = $lastApprover; } foreach ( $invoiceExistAccount as $key => $value ) { // $irList = $invoiceReceivables->getInvoiceReceivablesInIridString ( $value ['irid'] ); // if (empty ( $irList )) // $irList [0] ['sumPrice'] = 0; //$balance = $value ['invoicePrice'] - $irList [0] ['sumPrice']; $invoiceExistAccount [$key] ['existAccount'] = $value ['invoicePrice']-$value ['invoiceBalance']; //$invoiceExistAccount [$key] ['balance'] = $balance; } $receivablesInput = $invoiceReceivables->getInvoiceReceivablesByInput (); $halfList = $invoiceReceivables->getInvoiceReceivablesByHalf (); $this->data ['halfList'] = $halfList; $this->data ['halfCount'] = count ( $halfList ); // print_r($receivablesList); $this->data ['receivablesDate'] = date ( "Y-m-d" ); $this->data ['ieaCount'] = count ( $invoiceExistAccount ); $this->data ['invoiceExistAccount'] = $invoiceExistAccount; $this->data ['receivablesInput'] = $receivablesInput; $this->data ['year'] = date ( 'Y' ); $this->data ['invoiceUnAccount'] = $invoiceUnAccount; $this->data ['receivablesList'] = $receivablesList; $this->data ['staffList'] = $staffList; $this->data ['category'] = $category; $this->data ['memu'] = "invoice"; $this->data ['staff'] = $this->staff; $this->data ['receiptMemu'] = 'invoiceReceivables'; $this->render ( "/admin/invoiceReceivables", $this->data ); } /** * 设置收款认领地区 */ function setInvoiceReceivablesClaim() { $iridKey = $this->get_args ( 'iridKey' ) ? $this->get_args ( 'iridKey' ) : ""; $receivablesCategory = $this->get_args ( 'receivablesCategory' ) ? $this->get_args ( 'receivablesCategory' ) : ""; $action = $this->get_args ( 'action' ) ? $this->get_args ( 'action' ) : ""; if (! empty ( $iridKey ) && ! empty ( $receivablesCategory )) { Doo::loadModel ( 'invoiceReceivables' ); $invoiceReceivables = new invoiceReceivables (); Doo::loadClass ( 'XDeode' ); $XDeode = new XDeode ( 5 ); Doo::loadModel ( 'invoiceROLog' ); $invoiceROLog = new invoiceROLog (); $irid = $XDeode->decode ( $iridKey ); $irDetail = $invoiceReceivables->getInvoiceReceivablesByIrid ( $irid ); if (empty ( $irDetail )) die ( 'illegal request' ); $item = array ( 'irid' => $irid, 'receivablesCategory' => $receivablesCategory ); if ($receivablesCategory != 'PUBLIC') { $item += array ( 'confirmTime' => date ( "Y-m-d H:i:s" ), 'inputType' => 1 ); } $invoiceReceivables = new invoiceReceivables (); $invoiceReceivables->setInvoiceReceivablesByCondition ( $item ); // 收款操作日志 $item = array ( 'operation' => $this->staff [0] ['username'] . " 转入 公共待认领款项 ", 'date' => date ( "Y-m-d" ), 'status' => 1, 'img' => $this->staff [0] ['avatar'], 'username' => $this->staff [0] ['username'], 'uid' => $this->staff [0] ['sid'], 'category' => $this->staff [0] ['category'], 'irid' => $irid ); $invoiceROLog->setInvoiceROLog ( $item ); if (empty ( $action )) return '/invoiceReceivables'; else return "/invoiceReceivablesAS"; } die ( 'illegal request' ); } /** * 新添加收款直接入账发票 */ function invoiceCompareClaimPrice() { // 收款录入 $iidKey = $this->get_args ( 'iidKey' ) ? $this->get_args ( 'iidKey' ) : ""; $receivablesPrice = $this->get_args ( 'receivablesPrice' ) ? $this->get_args ( 'receivablesPrice' ) : ""; $receivablesMessage = $this->get_args ( 'receivablesMessage' ) ? $this->get_args ( 'receivablesMessage' ) : ""; $receivablesBank = $this->get_args ( 'receivablesBank' ) ? $this->get_args ( 'receivablesBank' ) : ""; $receivablesDate = $this->get_args ( 'receivablesDate' ) ? $this->get_args ( 'receivablesDate' ) : ""; if (! empty ( $receivablesPrice ) && ! empty ( $receivablesMessage ) && ! empty ( $receivablesBank ) && ! empty ( $receivablesDate ) && ! empty ( $iidKey )) { Doo::loadModel ( 'invoiceReceivables' ); $invoiceReceivables = new invoiceReceivables (); Doo::loadModel ( 'invoiceROLog' ); $invoiceROLog = new invoiceROLog (); Doo::loadModel ( 'invoiceStatistics' ); Doo::loadModel ( 'invoice' ); $invoice = new invoice (); Doo::loadModel ( 'bill' ); $bill = new bill (); Doo::loadClass ( 'XDeode' ); $XDeode = new XDeode ( 5 ); Doo::loadModel ( 'invoiceOperationLog' ); $invoiceOperationLog = new invoiceOperationLog (); $iidKey = $XDeode->decode ( $iidKey ); $invoiceDetail = $invoice->getInvoiceByIid ( $iidKey ); if (! ($invoiceDetail ['status'] == 2 && $invoiceDetail ['printStatus'] == 1 && $invoiceDetail ['untreadStatus'] == 0)) die ( 'illegal request' ); $receivablesSerial = "#SK" . date ( "Ymd" ) . mt_rand ( 1000, 9999 ); // 收款录入 并绑定发票 Doo::db ()->beginTransaction (); //获得发票入账余额 //$bindInvicePrice=$invoiceReceivables->getSumOfReceivablesPrice ( $invoiceDetail['irid'] ); //$bindPrice=$invoiceDetail ['invoiceBalance']-$bindInvicePrice; $bindStatus = 0; $invoiceBalance=$invoiceDetail ['invoicePrice']; if($invoiceDetail ['invoiceBalance']!=0){ $invoiceBalance=$invoiceDetail ['invoiceBalance']; } if ($receivablesPrice <= $invoiceBalance){ $bindStatus = 1; //$bindPrice=$receivablesPrice; } $titleMark = $invoiceDetail ['invoiceTitle']; if (! empty ( $invoiceDetail ['invoiceCompany'] )) $titleMark = $invoiceDetail ['invoiceCompany']; $item = array ( 'recepitTitleMark' => $titleMark, 'bindStatus' => $bindStatus, 'iid' => $invoiceDetail ['iid'], 'bindPrice' => $receivablesPrice, 'bindDate' => date ( "Y-m-d H:i:s" ), 'receivablesPrice' => $receivablesPrice, 'OriginalPrice' => $receivablesPrice, 'receivablesMessage' => $receivablesMessage, 'receivablesSerial' => $receivablesSerial, 'receivablesBank' => $receivablesBank, 'receivablesDate' => $receivablesDate, 'inputStaff' => $this->staff [0] ['username'], 'accountClerk' => $this->staff [0] ['username'], 'date' => date ( "Y-m-d" ), 'receivablesCategory' => $invoiceDetail ['cid'] . ':' . $invoiceDetail ['categoryName'], 'receivablesStaff' => $invoiceDetail ['sid'] . '-' . $invoiceDetail ['userName'], 'confirmTime' => date ( "Y-m-d H:i:s" ) ); $irid = $invoiceReceivables->addInvoiceReceivables ( $item ); $item = array (); // 收款操作日志 $item = array ( 'operation' => $this->staff [0] ['username'] . " 转入 " . $invoiceDetail ['userName'] ); $item += array ( 'date' => date ( "Y-m-d" ), 'status' => 1, 'img' => $this->staff [0] ['avatar'], 'username' => $this->staff [0] ['username'], 'uid' => $this->staff [0] ['sid'], 'category' => $this->staff [0] ['category'], 'irid' => $irid ); $invoiceROLog->setInvoiceROLog ( $item ); // 收款统计 $invoiceStatistics = new invoiceStatistics (); $item = array ( 'date' => $receivablesDate, 'priceClass' => 2, 'irid' => $irid, 'cid' => $invoiceDetail ['cid'], 'staff' => $invoiceDetail ['sid'], 'receivablesPrice' => $receivablesPrice ); $invoiceStatistics->setInvoiceStatisticsByCondition ( $item ); // 收款 入 发票 $detail = $invoiceDetail; $iridString = ""; if (empty ( $detail ['irid'] )) $iridString = $irid; else $iridString = $detail ['irid'] . ',' . $irid; $item = array ( 'irid' => $iridString, 'bindTime' => date ( "Y-m-d H:i:s" ), 'updateTime' => date ( "Y-m-d H:i:s" ), 'iid' => $detail ['iid'] ); // $invoiceReceivables = new invoiceReceivables (); // $sum = $invoiceReceivables->getSumOfReceivablesPrice ( $iridString ); // $sumBind = $bindInvicePrice; // $sumBalance=$invoiceReceivables->balanceOfReceivablesPrice($irid); // $sum=$sumBind+$sumBalance; // ; if ($receivablesPrice>=$invoiceBalance){ $item += array ( 'invoiceBalance'=>0, 'untreadStatus' => 3 ); }else{ $item += array ( 'invoiceBalance'=>$invoiceBalance-$receivablesPrice ); } $invoice->setInvoiceByCondition ( $item ); // 操作日志 $item = array ( 'date' => date ( "Y-m-d H:i:s" ), 'operation' => "收款入账" . $receivablesSerial . "到发票" . $detail ['invoiceSerial'], 'status' => 8, 'img' => $this->staff [0] ['avatar'], 'username' => $this->staff [0] ['username'], 'uid' => $this->staff [0] ['sid'], 'category' => $this->staff [0] ['category'], 'iid' => $detail ['iid'] ); $invoiceOperationLog->setInvoiceOperationLog ( $item ); // 入账汇总 $invoiceStatistics = new invoiceStatistics (); // $list = $invoiceReceivables->getInvoiceReceivablesInIridString ( $iridString ); // $accountPrice = 0; // foreach ( $list as $key => $value ) { // $accountPrice += $value ['receivablesPrice']; // } $item = array ( 'date' => $receivablesDate, 'priceClass' => 3, 'cid' => $invoiceDetail ['cid'], 'staff' => $invoiceDetail ['sid'], 'accountPrice' => $receivablesPrice ); $invoiceStatistics->setInvoiceStatisticsByCondition ( $item ); //发票入账记录 $bill->iid=$invoiceDetail['iid']; $bill->trainId=$invoiceDetail['trainId']; $bill->irid=$irid; $bill->create_time=date ( "Y-m-d H:i:s" ); $bill->price=$invoiceBalance; $bill->insert (); // 公司流水记录 Doo::loadModel ( 'wasteBook' ); $wasteBook = new wasteBook (); $abDetail = $wasteBook->getAccountBookByAid ( 1, 7, $irid ); $accountBank=$wasteBook->_getAccountBankEN($receivablesBank); if (empty ( $abDetail )) { $item = array ( 'dataID' => $irid, 'expensesType' => 1, 'accountType' => 7, 'accountPrice' => $receivablesPrice, 'accountPriceShow' => $receivablesPrice, 'accountBank' => $accountBank, 'cid'=>$invoiceDetail['cid'], 'category' => $invoiceDetail ['categoryName'], 'name' => $this->staff [0] ['username'], 'sid' => $this->staff [0] ['sid'], 'inputDate' => $receivablesDate//date ( "Y-m-d H:i:s" ) ); $wasteBook->setAccountBookStatistics ( $item ); } Doo::db ()->commit (); } return '/invoiceReceivables'; } /** * 录入收款数据 * @return string */ function invoiceReceivablesDo() { $receivablesPrice = $this->get_args ( 'receivablesPrice' ) ? $this->get_args ( 'receivablesPrice' ) : ""; $receivablesMessage = $this->get_args ( 'receivablesMessage' ) ? $this->get_args ( 'receivablesMessage' ) : ""; $receivablesBank = $this->get_args ( 'receivablesBank' ) ? $this->get_args ( 'receivablesBank' ) : ""; $receivablesDate = $this->get_args ( 'receivablesDate' ) ? $this->get_args ( 'receivablesDate' ) : ""; $receivablesCategory = $this->get_args ( 'receivablesCategory' ) ? $this->get_args ( 'receivablesCategory' ) : ""; $receivablesStaff = $receivablesStaff2 = $this->get_args ( 'receivablesStaff' ) ? $this->get_args ( 'receivablesStaff' ) : ""; Doo::loadModel ( 'invoiceReceivables' ); $invoiceReceivables = new invoiceReceivables (); Doo::loadModel ( 'invoiceROLog' ); $invoiceROLog = new invoiceROLog (); Doo::loadModel ( 'invoiceStatistics' ); $invoiceStatistics = new invoiceStatistics (); if (! empty ( $receivablesPrice ) && ! empty ( $receivablesMessage ) && ! empty ( $receivablesBank ) && ! empty ( $receivablesDate ) && ! empty ( $receivablesCategory ) && ! empty ( $receivablesStaff )) { $item = array ( 'receivablesPrice' => $receivablesPrice, 'OriginalPrice' => $receivablesPrice, 'receivablesMessage' => $receivablesMessage, 'receivablesSerial' => "#SK" . date ( "Ymd" ) . mt_rand ( 1000, 9999 ), 'receivablesBank' => $receivablesBank, 'receivablesDate' => $receivablesDate, 'inputStaff' => $this->staff [0] ['username'], 'date' => date ( "Y-m-d" ), 'receivablesCategory' => $receivablesCategory, 'receivablesStaff' => $receivablesStaff ); if ($receivablesCategory != 'PUBLIC') { $item += array ( 'confirmTime' => date ( "Y-m-d H:i:s" ), 'inputType' => 1 ); } $irid = $invoiceReceivables->addInvoiceReceivables ( $item ); $item = array (); // 收款操作日志 if ($receivablesCategory == 'PUBLIC' && $receivablesStaff == 'PUBLIC') $item = array ( 'operation' => $this->staff [0] ['username'] . " 转入 公共待认领款项 " ); elseif ($receivablesCategory != 'PUBLIC' && $receivablesStaff == 'PUBLIC') $item = array ( 'operation' => $this->staff [0] ['username'] . "转入 办事处待认领款项" ); elseif ($receivablesCategory != 'PUBLIC' && $receivablesStaff != 'PUBLIC') { $receivablesStaff = explode ( '-', $receivablesStaff ); $item = array ( 'operation' => $this->staff [0] ['username'] . " 转入 " . $receivablesStaff [1] ); } $item += array ( 'date' => date ( "Y-m-d" ), 'status' => 1, 'img' => $this->staff [0] ['avatar'], 'username' => $this->staff [0] ['username'], 'uid' => $this->staff [0] ['sid'], 'category' => $this->staff [0] ['category'], 'irid' => $irid ); $invoiceROLog->setInvoiceROLog ( $item ); $item = array ( 'date' => $receivablesDate, 'priceClass' => 2, 'irid' => $irid, 'receivablesPrice' => $receivablesPrice ); if ($receivablesCategory != 'PUBLIC') { $receivablesCategory = explode ( ":", $receivablesCategory ); $item += array ( 'cid' => $receivablesCategory [0] ); } if ($receivablesStaff2 != 'PUBLIC') { $receivablesStaff = explode ( "-", $receivablesStaff2 ); $item += array ( 'staff' => $receivablesStaff [0] ); } $invoiceStatistics->setInvoiceStatisticsByCondition ( $item ); $toparty = $this->getWxidByCategory ( $receivablesCategory [1] ); // $toparty = $this->getToparty ( $receivablesCategory [1] ); $msg = '[通知]财务录入了一笔待认领款项,快到“我的收款”中查看,确认是否是您的客户给您打款了。'; if ($toparty != 0) $this->msgSendToparty ( $msg, '', '', $toparty, 'text' ); // 公司流水记录 Doo::loadModel ( 'wasteBook' ); $wasteBook = new wasteBook (); $abDetail = $wasteBook->getAccountBookByAid ( 1, 7, $irid ); $accountBank=$wasteBook->_getAccountBankEN($receivablesBank); $item = array ( 'dataID' => $irid, 'expensesType' => 1, 'accountType' => 7, 'accountPriceShow' => $receivablesPrice, 'accountPrice' => $receivablesPrice, 'accountBank' => $accountBank, 'category' => $this->staff [0] ['category'], 'cid' => $this->staff [0] ['cid'], 'name' => $this->staff [0] ['username'], 'sid' => $this->staff [0] ['sid'], 'inputDate' => $receivablesDate , //'createAt'=>date ( "Y-m-d H:i:s" ) , 'synPaymentDate'=>1 ); $wasteBook->setAccountBookStatistics ( $item ); } return "/invoiceReceivables"; } /** * 收款认领页面-包括公共认领 办事处认领 最近已认领数据 */ function invoiceReceivablesClaim() { Doo::loadModel ( 'invoiceReceivables' ); $invoiceReceivables = new invoiceReceivables (); $receivablesList = $invoiceReceivables->getInvoiceReceivablesByClaim ( $this->staff [0] ['cid'], $this->staff [0] ['sid'] ); $this->data ['receivablesList'] = $receivablesList; $this->data ['memu'] = "invoice"; $this->data ['staff'] = $this->staff; $this->data ['receiptMemu'] = 'invoiceReceivablesClaim'; $this->render ( "/admin/invoiceReceivablesClaim", $this->data ); } function invoiceReceivablesTitleMarkSet() { $iridKey = $this->get_args ( 'iridKey' ) ? $this->get_args ( 'iridKey' ) : ""; $recepitTitleMark = $this->get_args ( 'recepitTitleMark' ) ? $this->get_args ( 'recepitTitleMark' ) : ""; if (empty ( $iridKey ) || empty ( $recepitTitleMark )) die ( 'illegal request' ); Doo::loadModel ( 'invoiceReceivables' ); $invoiceReceivables = new invoiceReceivables (); Doo::loadClass ( 'XDeode' ); $XDeode = new XDeode ( 5 ); $irid = $XDeode->decode ( $iridKey ); if (! is_numeric ( $irid )) die ( 'illegal request' ); $invoiceReceivables->recepitTitleMark = $recepitTitleMark; $invoiceReceivables->update ( array ( 'where' => 'irid = ' . $irid ) ); return '/invoiceReceivablesClaim'; } /** * 更新收款相关数据 */ function invoiceReceivablesUpdateClaim() { $receivablesPrice = $this->get_args ( 'receivablesPrice' ) ? $this->get_args ( 'receivablesPrice' ) : ""; $receivablesMessage = $this->get_args ( 'receivablesMessage' ) ? $this->get_args ( 'receivablesMessage' ) : ""; $receivablesBank = $this->get_args ( 'receivablesBank' ) ? $this->get_args ( 'receivablesBank' ) : ""; $receivablesDate = $this->get_args ( 'receivablesDate' ) ? $this->get_args ( 'receivablesDate' ) : ""; $receivablesCategory = $this->get_args ( 'receivablesCategory' ) ? $this->get_args ( 'receivablesCategory' ) : ""; $receivablesStaff = $receivablesStaff2 = $this->get_args ( 'receivablesStaff' ) ? $this->get_args ( 'receivablesStaff' ) : ""; $claimKey = $this->get_args ( 'claimKey' ) ? $this->get_args ( 'claimKey' ) : ""; if (empty ( $claimKey )) die ( 'illegal request' ); Doo::loadModel ( 'invoiceReceivables' ); $invoiceReceivables = new invoiceReceivables (); Doo::loadModel ( 'invoiceROLog' ); $invoiceROLog = new invoiceROLog (); $con = ' and iid=0 and bindStatus=0'; // and receivablesCategory!="PUBLIC" and receivablesStaff!="PUBLIC" $detail = $invoiceReceivables->getInvoiceReceivablesByIrid ( $claimKey, $con ); if (empty ( $detail )) die ( 'illegal request' ); $invoiceReceivables = new invoiceReceivables (); $item = array ( 'irid' => $detail ['irid'] ); if ($receivablesCategory != 'PUBLIC' && $receivablesStaff != 'PUBLIC') { $item += array ( 'confirmTime' => date ( "Y-m-d H:i:s" ) ); } if (! empty ( $receivablesCategory )) $item += array ( 'receivablesCategory' => $receivablesCategory ); if (! empty ( $receivablesStaff )) $item += array ( 'receivablesStaff' => $receivablesStaff ); if (! empty ( $receivablesPrice )) $item += array ( 'receivablesPrice' => $receivablesPrice ); if (! empty ( $receivablesMessage )) $item += array ( 'receivablesMessage' => $receivablesMessage ); if (! empty ( $receivablesBank )) $item += array ( 'receivablesBank' => $receivablesBank ); if (! empty ( $receivablesDate )) $item += array ( 'receivablesDate' => $receivablesDate ); $invoiceReceivables->setInvoiceReceivablesByCondition ( $item ); // 收款操作日志 $item = array (); if ($receivablesCategory == 'PUBLIC' && $receivablesStaff == 'PUBLIC') $item = array ( 'operation' => $this->staff [0] ['username'] . " 转入 公共待认领款项 " ); elseif ($receivablesCategory != 'PUBLIC' && $receivablesStaff == 'PUBLIC') $item = array ( 'operation' => $this->staff [0] ['username'] . "转入 办事处待认领款项" ); elseif ($receivablesCategory != 'PUBLIC' && $receivablesStaff != 'PUBLIC') { $receivablesStaff = explode ( '-', $receivablesStaff ); $item = array ( 'operation' => $this->staff [0] ['username'] . " 转入 " . $receivablesStaff [1] ); } $item += array ( 'date' => date ( "Y-m-d" ), 'status' => 1, 'img' => $this->staff [0] ['avatar'], 'username' => $this->staff [0] ['username'], 'uid' => $this->staff [0] ['sid'], 'category' => $this->staff [0] ['category'], 'irid' => $detail ['irid'] ); $invoiceROLog->setInvoiceROLog ( $item ); return '/invoiceReceivablesAS'; } function invoiceReceivablesDelete() { $claimKey = $this->get_args ( 'claimKey' ) ? $this->get_args ( 'claimKey' ) : ""; $skll = $this->get_args ( 'skll' ) ? $this->get_args ( 'skll' ) : ""; if ($skll != '删除到款') die ( 'illegal request-未填写 删除到款' ); if (empty ( $claimKey )) die ( 'illegal request-收款key不正确' ); Doo::loadModel ( 'invoiceReceivables' ); $invoiceReceivables = new invoiceReceivables (); $con = ' and bindStatus=0 '; $detail = $invoiceReceivables->getInvoiceReceivablesByIrid ( $claimKey, $con ); if (empty ( $detail )) die ( 'illegal request-未找到该收款或者未解绑' ); $invoiceReceivables->delInvoiceReceivablesByIrid ( $detail ['irid'] ); // 扣除收款汇总信息 汇总 Doo::loadModel ( 'invoiceStatistics' ); $invoiceStatistics = new invoiceStatistics (); $item = array ( 'date' => $detail ['receivablesDate'], 'priceClass' => 2, 'irid' => $detail ['irid'], 'receivablesPrice' => - $detail ['receivablesPrice'] ); if ($detail ['receivablesCategory'] != 'PUBLIC') { $receivablesCategory = explode ( ":", $detail ['receivablesCategory'] ); $item += array ( 'cid' => $receivablesCategory [0] ); } if ($detail ['receivablesStaff'] != 'PUBLIC') { $receivablesStaff = explode ( "-", $detail ['receivablesStaff'] ); $item += array ( 'staff' => $receivablesStaff [0] ); } $invoiceStatistics->setInvoiceStatisticsByCondition ( $item ); // 公司流水-删除时删除流水 Doo::loadModel ( 'wasteBook' ); $wasteBook = new wasteBook (); $wasteBook->delete ( array ( 'where' => 'dataID=' . $detail ['irid'] . ' and accountType=7', 'limit' => 1 ) ); return '/invoiceReceivablesAS'; } /** * 管理员录入的收款 ,确认认领到谁的名下.统计收款金额 */ function invoiceReceivablesAscription() { $irid = $this->get_args ( 'key' ) ? $this->get_args ( 'key' ) : ""; $recepitTitleMark = $this->get_args ( 'recepitTitleMark' ) ? $this->get_args ( 'recepitTitleMark' ) : ""; Doo::loadModel ( 'invoiceReceivables' ); $invoiceReceivables = new invoiceReceivables (); Doo::loadModel ( 'invoiceROLog' ); $invoiceROLog = new invoiceROLog (); Doo::loadModel ( 'invoiceStatistics' ); $invoiceStatistics = new invoiceStatistics (); $detail = $invoiceReceivables->getInvoiceReceivablesByIrid ( $irid ); $irid = $invoiceReceivables->authcode ( $irid ); if (! empty ( $detail ) && $detail ['receivablesStaff'] == 'PUBLIC' && ! empty ( $recepitTitleMark )) { $item = array ( 'irid' => $detail ['irid'], 'receivablesCategory' => $this->staff [0] ['cid'] . ":" . $this->staff [0] ['category'], 'receivablesStaff' => $this->staff [0] ['sid'] . "-" . $this->staff [0] ['username'], 'confirmTime' => date ( "Y-m-d H:i:s" ), 'recepitTitleMark' => $recepitTitleMark, 'source' => 1 ); $invoiceReceivables->setInvoiceReceivablesByCondition ( $item ); $item = array ( 'date' => date ( "Y-m-d" ), 'operation' => $this->staff [0] ['username'] . " 认领 ", 'status' => 2, 'img' => $this->staff [0] ['avatar'], 'username' => $this->staff [0] ['username'], 'uid' => $this->staff [0] ['sid'], 'category' => $this->staff [0] ['category'], 'irid' => $irid ); $invoiceROLog->setInvoiceROLog ( $item ); $item = array ( 'cid' => $this->staff [0] ['cid'], 'staff' => $this->staff [0] ['sid'] ); $invoiceStatistics->updateInvoiceStatisticsByIrid ( $item, $detail ['irid'], 2 ); //更新流水的办事处 Doo::loadModel ( 'wasteBook' ); $wasteBook = new wasteBook (); $abDetail = $wasteBook->getAccountBookByAid ( 1, 7, $detail ['irid'] ); $wasteBook->wid = $abDetail ['wid']; $wasteBook->category = $this->staff [0] ['category']; $wasteBook->cid = $this->staff [0] ['cid']; $wasteBook->update (); } return "/invoiceReceivablesClaim"; } /** */ function invoiceMyReceivables() { Doo::loadModel ( 'invoiceReceivables' ); $invoiceReceivables = new invoiceReceivables (); Doo::loadModel ( 'invoiceStatistics' ); $invoiceStatistics = new invoiceStatistics (); $isMonth = $invoiceStatistics->getStatisticsByMonth ( $this->staff [0] ['sid'] ); $year = date ( "Y" ); $tmp_date = date ( "Ym" ); $tmp_year = substr ( $tmp_date, 0, 4 ); $tmp_mon = substr ( $tmp_date, 4, 2 ); $tmp_forwardmonth = mktime ( 0, 0, 0, $tmp_mon - 1, 1, $tmp_year ); $fm_forward_month = date ( "m", $tmp_forwardmonth ); $path = SITE_PATH . $this->INVOICECOLLECTPATH . "invoiceCollect_" . $year . "_" . $fm_forward_month . ".htm"; $htm = $this->showCache ( $path ); $list = $invoiceReceivables->getInvoiceReceivablesByClaim ( $this->staff [0] ['cid'], $this->staff [0] ['sid'] ); $this->data ['isMonth'] = $isMonth; $this->data ['htm'] = $htm; $this->data ['list'] = $list; $this->data ['memu'] = "invoice"; $this->data ['staff'] = $this->staff; $this->data ['receiptMemu'] = 'invoiceMyReceivables'; $this->render ( "/admin/invoiceMyReceivables", $this->data ); } /** * 纸票管理 */ function invoicePaper() { $status = $this->get_args ( 'status' ) ? $this->get_args ( 'status' ) : 'ALL'; $invoiceType = $this->get_args ( 'invoiceType' ) ? $this->get_args ( 'invoiceType' ) : "ALL"; $date = $this->get_args ( 'date' ) ? $this->get_args ( 'date' ) : ""; $this->data ['dateString'] = $date; $this->data ['status'] = $status; $this->data ['invoiceType'] = $invoiceType; $this->data ['memu'] = "invoice"; $this->data ['staff'] = $this->staff; $this->data ['receiptMemu'] = 'invoicePaper'; $this->render ( "/admin/invoicePaper", $this->data ); } /** * 电子发票管理 */ function invoiceElectronic() { $status = $this->get_args ( 'status' ) ? $this->get_args ( 'status' ) : 'ALL'; $invoiceType = $this->get_args ( 'invoiceType' ) ? $this->get_args ( 'invoiceType' ) : "ALL"; $date = $this->get_args ( 'date' ) ? $this->get_args ( 'date' ) : ""; $this->data ['dateString'] = $date; $this->data ['status'] = $status; $this->data ['invoiceType'] = $invoiceType; $this->data ['memu'] = "invoice"; $this->data ['staff'] = $this->staff; $this->data ['receiptMemu'] = 'invoicePaper'; $this->render ( "/invoice/invoiceElectronic", $this->data ); } /** * 获得纸票分页数据 */ function ajaxGetinvoicePaperAchieve() { //include Doo::conf ()->BASE_PATH . 'diagnostic/debug.php'; Doo::loadModel ( 'invoicePaper' ); $invoicePaper = new invoicePaper (); $status = $this->get_args ( 'status' ) ? $this->get_args ( 'status' ) : 'ALL'; $invoiceType = $this->get_args ( 'invoiceType' ) ? $this->get_args ( 'invoiceType' ) : "ALL"; $invoiceForm = $this->get_args ( 'invoiceForm' )&&is_numeric($this->get_args ( 'invoiceForm' )) ? $this->get_args ( 'invoiceForm' ) : "0"; $invoiceTrain = $this->get_args ( 'invoiceTrain' ) ? $this->get_args ( 'invoiceTrain' ) : "ORDINARY"; $date = $this->get_args ( 'date' ) ? $this->get_args ( 'date' ) : ""; $page = $this->get_args ( 'start' ) && is_numeric ( $this->get_args ( 'start' ) ) ? $this->get_args ( 'start' ) : 0; $draw = $this->get_args ( 'draw' ) && is_numeric ( $this->get_args ( 'draw' ) ) ? $this->get_args ( 'draw' ) : 1; $length = $this->get_args ( 'length' ) && is_numeric ( $this->get_args ( 'length' ) ) ? $this->get_args ( 'length' ) : 10; $MebSea = $this->get_args ( 'search' ); $MebSea = $MebSea ['value']; $page_size = $length; $con = ''; if ($status == 'ALL') $con = ' where 1 '; elseif ($status == 'PRINTED') $con = ' where a.iid!=0 '; // $con = ' where b.isDelete=0 and a.iid!=0 and b.status=2 and b.untreadStatus=0 '; elseif ($status == 'UNPRINT') $con = ' where a.iid=0 '; // $con = ' where b.isDelete=0 and a.iid=0 and b.status=2 and b.untreadStatus=0 '; elseif ($status == 'TICKET') $con = ' where b.isDelete=0 and b.untreadStatus=2'; if ($invoiceType == 'ORDINARY') $con .= ' and a.invoiceType=0 '; elseif ($invoiceType == 'SPECIAL') $con .= ' and a.invoiceType=1 '; if($invoiceForm==0){ $con .= ' and a.invoiceForm=0 '; }else{ $con .= ' and a.invoiceForm=1 '; } $dateArr = explode ( ':', $date ); $D1 = $dateString = ''; $D2 = ''; if (! empty ( $date )) { $D1 = $dateArr [0]; if (isset ( $dateArr [1] )) $D2 = $dateArr [1]; else $D2 = ''; $dateString = $D1 . " : " . $D2; } if (! empty ( $D1 ) && ! empty ( $D2 )) $con .= ' and b.printTime BETWEEN "' . $D1 . '" AND "' . $D2 . '" '; elseif (! empty ( $D1 ) && empty ( $D2 )) $con .= ' and b.printTime like "%' . $D1 . '%" '; if (! empty ( $MebSea )) $con .= ' and ( b.invoiceTitle like "%' . $MebSea . '%" or b.invoiceCompany like "%' . $MebSea . '%" or a.invoiceNo like "%' . $MebSea . '%" )'; $invoiceTotal = $invoicePaper->getInvoicePaperCount ($invoiceForm); $sql = ' ' . $con; $limit = $page . ',' . $page_size; $list = $invoicePaper->getInvoicePaper ( $limit, $sql, 'desc' ); $paperList = array (); foreach ( $list as $key => $value ) { $irDetail = array (); if ($value ['iid'] == 0) array_push ( $irDetail, '删除' ); else array_push ( $irDetail, '' ); array_push ( $irDetail, $value ['invoiceCode'] ); array_push ( $irDetail, $value ['invoiceNo'] ); array_push ( $irDetail, '' . $value ['invoiceSerial'] . '' ); if ($value ['invoiceType'] == 1) array_push ( $irDetail, $value ['invoiceCompany'] ); else array_push ( $irDetail, $value ['invoiceTitle'] ); if ($value ['invoiceType'] == 1) array_push ( $irDetail, '¥' . $value ['invoicePrice'] . '' ); else array_push ( $irDetail, '¥' . $value ['invoicePrice'] ); array_push ( $irDetail, $value ['invoiceElement'] ); array_push ( $irDetail, $value ['categoryName'] . '-' . $value ['userName'] ); array_push ( $irDetail, $value ['printTime'] ); array_push ( $paperList, $irDetail ); } // $approvalListJson = json_encode ( $approvalList ); $recordsFiltered = $invoiceTotal; echo json_encode ( array ( "draw" => intval ( $draw ), "recordsTotal" => intval ( $invoiceTotal ), "recordsFiltered" => intval ( $recordsFiltered ), "data" => $paperList ), JSON_UNESCAPED_UNICODE ); } function invoicePaperDel() { $ipidKey = isset ( $this->params ['ipidKey'] ) ? $this->params ['ipidKey'] : ""; $XDeode = new XDeode ( 5 ); $ipid = $XDeode->decode ( $ipidKey ); if (empty ( $ipid )) die ( 'illegal request' ); Doo::loadModel ( 'invoicePaper' ); $invoicePaper = new invoicePaper (); $ipdetail=$invoicePaper->getInvoicePaperByIpid($ipid); $invoicePaper->delete ( array ( 'where' => 'ipid=' . $ipid . ' and iid=0', 'limit' => 1 ) ); if($ipdetail['invoiceForm']==1){ return '/invoiceElectronic'; }else{ return '/invoicePaper'; } } /** * 添加纸质发票号 */ function invoicePaperAdd() { $invoiceType = $this->get_args ( 'invoiceType' ) && is_numeric ( $this->get_args ( 'invoiceType' ) ) ? $this->get_args ( 'invoiceType' ) : '0'; $invoiceCode = $this->get_args ( 'invoiceCode' ) ? $this->get_args ( 'invoiceCode' ) : ""; $invoiceNoStart = $this->get_args ( 'invoiceNoStart' ) && is_numeric ( $this->get_args ( 'invoiceNoStart' ) ) ? $this->get_args ( 'invoiceNoStart' ) : 0; $invoiceNoTotal = $this->get_args ( 'invoiceNoTotal' ) && is_numeric ( $this->get_args ( 'invoiceNoTotal' ) ) ? $this->get_args ( 'invoiceNoTotal' ) : 0; $invoiceForm = $this->get_args ( 'invoiceForm' ) && is_numeric ( $this->get_args ( 'invoiceForm' ) ) ? $this->get_args ( 'invoiceForm' ) : 0; if ($invoiceType != '' && ! empty ( $invoiceCode ) && ! empty ( $invoiceNoStart ) && ! empty ( $invoiceNoTotal )) { $sum = $invoiceNoStart + $invoiceNoTotal; if (empty ( $sum )) die ( 'illegal request' ); // echo $invoiceNoStart; // echo $sum; // echo strlen((int)$invoiceNoStart); $sumLenght = strlen ( $invoiceNoStart ) - strlen ( ( int ) $invoiceNoStart ); if($invoiceType==0||$invoiceType==1){ }else{ die ( 'illegal request invoiceType' ); } if($invoiceForm==1){ $invoiceType=0; } Doo::db ()->beginTransaction (); // 批量存储纸质发票 $date = date ( "Y-m-d H:i:s" ); $sql = 'INSERT INTO CLD_invoicePaper (invoiceType, invoiceCode,invoiceNo,date,invoiceForm) VALUES '; $paperList = array (); for($invoiceNoStart; $invoiceNoStart <= $sum - 1; $invoiceNoStart ++) { // 数字前面自加0 $INLENGHT = strlen ( ( int ) $invoiceNoStart ) + $sumLenght; $var = sprintf ( "%0" . $INLENGHT . "d", $invoiceNoStart ); $paperSql = '(' . $invoiceType . ',"' . $invoiceCode . '","' . $var . '","' . $date . '","'.$invoiceForm.'")'; array_push ( $paperList, $paperSql ); } if (empty ( $paperList )) die ( 'illegal request' ); $sql = $sql . implode ( ',', $paperList ); Doo::db ()->query ( $sql ); Doo::db ()->commit (); if($invoiceForm==1){ return 'invoiceElectronic'; }else{ return 'invoicePaper'; } } die ( 'illegal request' ); } /** * 收款绑定发票 ,//一个收款只能绑定一个发票 */ function invoiceBindReceivables() { $claimKey = $this->get_args ( 'key' ) ? $this->get_args ( 'key' ) : ""; $invoiceKey = $this->get_args ( 'invoiceKey' ) ? $this->get_args ( 'invoiceKey' ) : ""; Doo::loadModel ( 'invoice' ); $invoice = new invoice (); Doo::loadModel ( 'invoiceReceivables' ); $invoiceReceivables = new invoiceReceivables (); Doo::loadModel ( 'invoiceOperationLog' ); $invoiceOperationLog = new invoiceOperationLog (); if (empty ( $invoiceKey ) || empty ( $claimKey )) die ( 'illegal request' ); $detail = $invoice->getInvoiceByIid ( $invoiceKey ); $detailM = $invoiceReceivables->getInvoiceReceivablesByIrid ( $claimKey ); if (empty ( $detail ) && empty ( $detailM )) die ( 'illegal request' ); if ($detail ['untreadStatus'] == 3) die ( 'illegal request' ); // 修改 绑定状态改为 金额 $invoiceReceivables = new invoiceReceivables (); $invoicePrice = $detail ['invoicePrice'] + $detailM ['bindPrice']; $billPrice=0; if ($detailM ['receivablesPrice'] > $invoicePrice) { $item = array ( 'bindPrice' => $invoicePrice ); $billPrice=$invoicePrice; } elseif ($detailM ['receivablesPrice'] <= $invoicePrice) { //发票金额大于收款金额,绑定金额为收款金额 $item = array ( 'bindPrice' => $detailM ['receivablesPrice'], 'bindStatus' => 1, 'bindDate' => date ( "Y-m-d H:i:s" ) ); $billPrice=$detailM ['receivablesPrice']; } else { die ( 'illegal request' ); } if ($detailM ['iid'] == 0) { $item += array ( 'iid' => $detail ['iid'] ); } else { $iidExtend = explode ( ',', $detailM ['iidExtend'] ); array_push ( $iidExtend, $detail ['iid'] ); $item += array ( 'iidExtend' => implode ( ',', $iidExtend ) ); } $titleMark = $detail ['invoiceTitle']; if (! empty ( $detail ['invoiceCompany'] )) $titleMark = $detail ['invoiceCompany']; $item += array ( 'irid' => $detailM ['irid'], 'recepitTitleMark' => $titleMark, 'accountClerk' => $this->staff [0] ['username'] ); // 如何没有人收款 则自动绑定收款 if ($detailM ['receivablesCategory'] == 'PUBLIC' || $detailM ['receivablesStaff'] == 'PUBLIC') { $item += array ( 'receivablesCategory' => $detail ['cid'] . ':' . $detail ['categoryName'], 'receivablesStaff' => $detail ['sid'] . '-' . $detail ['userName'] ); } $invoiceReceivables->setInvoiceReceivablesByCondition ( $item ); $iridString = ""; if (empty ( $detail ['irid'] )) $iridString = $detailM ['irid']; else $iridString = $detail ['irid'] . ',' . $detailM ['irid']; // $invoiceReceivables = new invoiceReceivables (); // $sumBind = $invoiceReceivables->getSumOfReceivablesPrice ( $detail ['irid'] ); // //这个收款余额 // $sumBalance=$invoiceReceivables->balanceOfReceivablesPrice($detailM ['irid']); // $sum=$sumBind+$sumBalance; //这个收款余额 $sumBalance=$detailM ['receivablesPrice']-$detailM ['bindPrice']; // echo $detailM ['irid'].'/'.$sumBalance.'/'.$detail ['invoicePrice']; // die; $invoice = new invoice (); $item = array ( 'iid' => $detail ['iid'], 'irid' => $iridString ); if ($detail ['invoicePrice'] <= $sumBalance){ $item += array ( 'invoiceBalance'=>0, 'untreadStatus' => 3, 'bindTime' => date ( "Y-m-d H:i:s" ) ); }else{ $item += array ( 'invoiceBalance'=>$detail ['invoicePrice']-$sumBalance, ); } // print_r($item); // echo $sum;die; $invoice->setInvoiceByCondition ( $item ); //发票入账记录 Doo::loadModel ( 'bill' ); $bill = new bill (); $bill->iid=$detail ['iid']; $bill->trainId=$detail['trainId']; $bill->irid=$detailM ['irid']; $bill->create_time=date ( "Y-m-d H:i:s" ); $bill->price=$billPrice; $bill->insert (); // 操作日志 $item = array ( 'date' => date ( "Y-m-d H:i:s" ), 'operation' => "收款" . $detailM ['receivablesSerial'] . "入账到发票" . $detail ['invoiceSerial'], 'status' => 8, 'img' => $this->staff [0] ['avatar'], 'username' => $this->staff [0] ['username'], 'uid' => $this->staff [0] ['sid'], 'category' => $this->staff [0] ['category'], 'iid' => $detail ['iid'] ); $invoiceOperationLog->setInvoiceOperationLog ( $item ); Doo::loadModel ( 'invoiceStatistics' ); $invoiceStatistics = new invoiceStatistics (); $item = array ( 'date' => $detailM ['receivablesDate'], 'priceClass' => 3, 'cid' => $detail ['cid'], 'staff' => $detail ['sid'], 'accountPrice' => $detailM ['receivablesPrice'] ); $invoiceStatistics->setInvoiceStatisticsByCondition ( $item ); //TODO // 公司流水记录 // Doo::loadModel ( 'wasteBook' ); // $wasteBook = new wasteBook (); // $abDetail = $wasteBook->getAccountBookByAid (1,8,$detail ['iid'] ); // $accountBank=''; // if ($detailM ['receivablesBank']=='纵横广发'){ // $accountBank='CGBDeposit'; // }elseif($detailM ['receivablesBank']=='纵横工行'){ // $accountBank='ICBCDeposit'; // }elseif($detailM ['receivablesBank']=='华润银行'){ // $accountBank='HUADeposit'; // }elseif($detailM ['receivablesBank']=='个人广发'){ // $accountBank='PersonalDeposit'; // } // if (empty($abDetail)){ // $item = array ( // 'dataID' => $detail ['iid'], // 'expensesType' => 1, // 'accountType' => 8, // 'accountPriceShow'=>$detail ['invoicePrice'], // 'accountPrice'=>$detail ['invoicePrice'], // 'accountBank'=>$accountBank, // 'category'=>$this->staff[0]['category'], // 'cid'=>$this->staff[0]['cid'], // 'name'=>$this->staff[0]['username'], // 'sid'=>$this->staff[0]['sid'], // 'inputDate'=>date ( "Y-m-d H:i:s" ) // ); // $wasteBook->setAccountBookStatistics($item); // } return "/invoiceReceivables"; } /** * 核销 动作,确认入账统计 发票收款完成--需求更变 废弃 function invoiceEnterReceivables() { $invoiceKey = $this->get_args ( 'key' ) ? $this->get_args ( 'key' ) : ""; // $invoiceClaim = $this->get_args ( 'invoiceClaim' ) ? $this->get_args ( 'invoiceClaim' ) : ""; Doo::loadModel ( 'invoice' ); $invoice = new invoice (); Doo::loadModel ( 'invoiceOperationLog' ); $invoiceOperationLog = new invoiceOperationLog (); Doo::loadModel ( 'invoiceStatistics' ); $invoiceStatistics = new invoiceStatistics (); Doo::loadModel ( 'invoiceReceivables' ); $invoiceReceivables = new invoiceReceivables (); $detail = $invoice->getInvoiceByIid ( $invoiceKey ); if (empty ( $detail )) die ( 'illegal request' ); if (empty ( $detail ['irid'] )) die ( 'illegal request' ); $item = array ( 'untreadStatus' => 3, 'updateTime' => date ( "Y-m-d H:i:s" ), 'iid' => $detail ['iid'] ); $invoice->setInvoiceByCondition ( $item ); // 操作日志 $item = array ( 'date' => date ( "Y-m-d H:i:s" ), 'operation' => "发票" . $detail ['invoiceSerial'] . "收款完成", 'status' => 9, 'img' => $this->staff [0] ['avatar'], 'username' => $this->staff [0] ['username'], 'uid' => $this->staff [0] ['sid'], 'category' => $this->staff [0] ['category'], 'iid' => $detail ['iid'] ); $invoiceOperationLog->setInvoiceOperationLog ( $item ); $list = $invoiceReceivables->getInvoiceReceivablesInIridString ( $detail ['irid'] ); $accountPrice = 0; foreach ( $list as $key => $value ) { $accountPrice += $value ['receivablesPrice']; } $item = array ( 'date' => date ( "Y-m-d H:i:s" ), 'priceClass' => 3, 'cid' => $this->staff [0] ['cid'], 'staff' => $this->staff [0] ['sid'], 'accountPrice' => $accountPrice ); $invoiceStatistics->setInvoiceStatisticsByCondition ( $item ); return "/invoice"; } */ function invoiceAggregate() { $year = $this->get_args ( 'year' ) ? $this->get_args ( 'year' ) : date ( "Y" ); Doo::loadModel ( 'invoiceStatistics' ); $invoiceStatistics = new invoiceStatistics (); Doo::loadModel ( 'L_category' ); $Lcategory = new L_category (); $isList = $invoiceStatistics->getInvoiceStatisticsByYear ( $year ); $LcategoryList = $Lcategory->getCategory (); // print_r($isList); $html = ""; // $invoicePriceCategory=0;$receivablesPriceCategory=0;$accountPriceCategory=0; foreach ( $LcategoryList as $key => $value ) { $html .= '' . $value ['title'] . ''; $month = 1; $invoicePriceYear = 0; $receivablesPriceYear = 0; $accountPriceYear = 0; for(; $month <= 12; $month ++) { $flag = true; foreach ( $isList ['statisticsMonthCid'] as $k => $v ) { if ($value ['cid'] == $v ['cid'] && $month == $v ['month']) { $html .= '¥' . $v ['invoicePrice'] . ' ¥' . $v ['receivablesPrice'] . ' ¥' . $v ['accountPrice'] . ' '; $invoicePriceYear += $v ['invoicePrice']; $receivablesPriceYear += $v ['receivablesPrice']; $accountPriceYear += $v ['accountPrice']; $flag = false; break; } } if ($flag) $html .= ' '; } $html .= '' . $invoicePriceYear . ' ' . $receivablesPriceYear . ' ' . $accountPriceYear . ' '; $html .= ''; } $html .= '月合计'; $invoicePriceYear = 0; $receivablesPriceYear = 0; $accountPriceYear = 0; for($month = 1; $month <= 12; $month ++) { $flag = true; foreach ( $isList ['statisticsMonth'] as $k => $v ) { if ($month == $v ['month']) { $html .= '¥' . $v ['invoicePrice'] . ' ¥' . $v ['receivablesPrice'] . ' ¥' . $v ['accountPrice'] . ' '; $invoicePriceYear += $v ['invoicePrice']; $receivablesPriceYear += $v ['receivablesPrice']; $accountPriceYear += $v ['accountPrice']; $flag = false; break; } } if ($flag) { $html .= ' '; } } $html .= '' . $invoicePriceYear . ' ' . $receivablesPriceYear . ' ' . $accountPriceYear . ' '; $html .= ''; // print_r($isList); $this->data ['html'] = $html; $this->data ['LcategoryList'] = $LcategoryList; $this->data ['isList'] = $isList; $this->data ['year'] = $year; $this->data ['memu'] = "invoice"; $this->data ['staff'] = $this->staff; $this->data ['receiptMemu'] = 'invoiceAggregate'; $this->render ( "/admin/invoiceAggregate", $this->data ); } function invoiceAggregateStaff() { $year = $this->get_args ( 'year' ) ? $this->get_args ( 'year' ) : date ( "Y" ); Doo::loadModel ( 'invoiceStatistics' ); $invoiceStatistics = new invoiceStatistics (); Doo::loadModel ( 'L_category' ); $Lcategory = new L_category (); $toteList = $invoiceStatistics->getInvoiceStatisticsByTote ( $year ); $staffList = $invoiceStatistics->getInvoiceStatisticsByStaff ( $year ); $cStaff = $Lcategory->getCategoryStaff (); $html = ''; foreach ( $cStaff as $key => $value ) { $categoryFir = true; foreach ( $value ['staff'] as $k => $v ) { if ($categoryFir) { $width = count ( $value ['staff'] ) + 1; $html .= '' . $value ['title'] . ' '; $categoryFir = false; } else $html .= ''; $html .= '' . $v ['username'] . ''; $invoicePriceStaffYear = 0; $receivablesPriceStaffYear = 0; $accountPriceStaffYear = 0; for($month = 1; $month <= 12; $month ++) { $flag = true; foreach ( $staffList ['statisticsMonthStaff'] as $sl => $slv ) { if ($v ['sid'] == $slv ['staff'] && $month == $slv ['month']) { $html .= '¥' . $slv ['invoicePrice'] . ' ¥' . $slv ['receivablesPrice'] . ' ¥' . $slv ['accountPrice'] . ' '; $invoicePriceStaffYear += $slv ['invoicePrice']; $receivablesPriceStaffYear += $slv ['receivablesPrice']; $accountPriceStaffYear += $slv ['accountPrice']; $flag = false; break; } } if ($flag) $html .= ' '; } $html .= '' . $invoicePriceStaffYear . ' ' . $receivablesPriceStaffYear . ' ' . $accountPriceStaffYear . ' '; } $html .= ''; // 小计 if (! empty ( $value ['staff'] )) { $html .= '小计'; $invoicePriceStaffYear = 0; $receivablesPriceStaffYear = 0; $accountPriceStaffYear = 0; for($month = 1; $month <= 12; $month ++) { $flag = true; foreach ( $staffList ['statisticsMonthCid'] as $smc => $smcv ) { if ($value ['cid'] == $smcv ['cid'] && $month == $slv ['month']) { $html .= '¥' . $smcv ['invoicePrice'] . ' ¥' . $smcv ['receivablesPrice'] . ' ¥' . $smcv ['accountPrice'] . ' '; $invoicePriceStaffYear += $slv ['invoicePrice']; $receivablesPriceStaffYear += $slv ['receivablesPrice']; $accountPriceStaffYear += $slv ['accountPrice']; $flag = false; break; } } if ($flag) $html .= ' '; } $html .= '' . $invoicePriceStaffYear . ' ' . $receivablesPriceStaffYear . ' ' . $accountPriceStaffYear . ' '; $html .= ''; } } $html .= '月合计'; $invoicePriceYear = 0; $receivablesPriceYear = 0; $accountPriceYear = 0; for($month = 1; $month <= 12; $month ++) { $flag = true; foreach ( $staffList ['statisticsMonth'] as $k => $v ) { if ($month == $v ['month']) { $html .= '¥' . $v ['invoicePrice'] . ' ¥' . $v ['receivablesPrice'] . ' ¥' . $v ['accountPrice'] . ' '; $invoicePriceYear += $v ['invoicePrice']; $receivablesPriceYear += $v ['receivablesPrice']; $accountPriceYear += $v ['accountPrice']; $flag = false; break; } } if ($flag) $html .= ' '; } $html .= '' . $invoicePriceYear . ' ' . $receivablesPriceYear . ' ' . $accountPriceYear . ' '; $html .= ''; $this->data ['html'] = $html; $this->data ['isList'] = $toteList; $this->data ['year'] = $year; $this->data ['memu'] = "invoice"; $this->data ['staff'] = $this->staff; $this->data ['receiptMemu'] = 'invoiceAggregate'; $this->render ( "/admin/invoiceAggregateStaff", $this->data ); } function invoiceAggregateCategory() { Doo::loadClass ( 'XDeode' ); $XDeode = new XDeode ( 5 ); $cid = $cidKey = isset ( $this->params ['cid'] ) ? $this->params ['cid'] : ""; $cid = $XDeode->decode ( $cid ); if (! is_numeric ( $cid )) die ( 'illegal request' ); $year = $this->get_args ( 'year' ) ? $this->get_args ( 'year' ) : date ( "Y" ); Doo::loadModel ( 'invoiceStatistics' ); $invoiceStatistics = new invoiceStatistics (); Doo::loadModel ( 'staff' ); $staff = new staff (); $list = $staff->getStaffByCid ( $cid ); $isCategory = $invoiceStatistics->getInvoiceStatisticsByStaff ( $year, $cid ); $toteList = $invoiceStatistics->getInvoiceStatisticsByTote ( $year, $cid ); if (empty ( $list )) die ( '该办事处没有成员' ); $htmlA = $htmlB = $htmlC = $html = ''; foreach ( $list as $key => $value ) { $htmlA = '' . $value ['username'] . '开票'; $htmlB = '收款'; $htmlC = '入账'; $invoicePriceStaffYear = 0; $receivablesPriceStaffYear = 0; $accountPriceStaffYear = 0; for($month = 1; $month <= 12; $month ++) { $flag = true; foreach ( $isCategory ['statisticsMonthStaff'] as $k => $v ) { if ($value ['sid'] == $v ['staff'] && $month == $v ['month']) { $htmlA .= '¥' . $v ['invoicePrice'] . ''; $htmlB .= '¥' . $v ['receivablesPrice'] . ''; $htmlC .= '¥' . $v ['accountPrice'] . ''; $invoicePriceStaffYear += $v ['invoicePrice']; $receivablesPriceStaffYear += $v ['receivablesPrice']; $accountPriceStaffYear += $v ['accountPrice']; $flag = false; break; } } if ($flag) { $htmlA .= '-'; $htmlB .= '-'; $htmlC .= '-'; } } $htmlA .= '' . $invoicePriceStaffYear . ''; $htmlB .= '' . $receivablesPriceStaffYear . ''; $htmlC .= '' . $accountPriceStaffYear . ''; $htmlA .= ''; $htmlB .= ''; $htmlC .= ''; $html .= $htmlA . $htmlB . $htmlC; } $htmlA = $htmlB = $htmlC = ""; $htmlA = '月合计开票'; $htmlB = '收款'; $htmlC = '入账'; $invoicePriceStaffYear = 0; $receivablesPriceStaffYear = 0; $accountPriceStaffYear = 0; for($month = 1; $month <= 12; $month ++) { $flag = true; foreach ( $isCategory ['statisticsMonth'] as $k => $v ) { if ($month == $v ['month']) { $htmlA .= '¥' . $v ['invoicePrice'] . ''; $htmlB .= '¥' . $v ['receivablesPrice'] . ''; $htmlC .= '¥' . $v ['accountPrice'] . ''; $invoicePriceStaffYear += $v ['invoicePrice']; $receivablesPriceStaffYear += $v ['receivablesPrice']; $accountPriceStaffYear += $v ['accountPrice']; $flag = false; break; } } if ($flag) { $htmlA .= '-'; $htmlB .= '-'; $htmlC .= '-'; } } $htmlA .= '' . $invoicePriceStaffYear . ''; $htmlB .= '' . $receivablesPriceStaffYear . ''; $htmlC .= '' . $accountPriceStaffYear . ''; $htmlA .= ''; $htmlB .= ''; $htmlC .= ''; $html .= $htmlA . $htmlB . $htmlC; $this->data ['html'] = $html; $this->data ['cidKey'] = $cidKey; $this->data ['slist'] = $list; $this->data ['isList'] = $toteList; $this->data ['year'] = $year; $this->data ['memu'] = "invoice"; $this->data ['staff'] = $this->staff; $this->data ['receiptMemu'] = 'invoiceAggregate'; $this->render ( "/admin/invoiceAggregateCategory", $this->data ); } /** * 办事处汇总信息 */ function invoiceAggregateCategoryDetail() { $cidKey = $this->get_args ( 'cidKey' ) ? $this->get_args ( 'cidKey' ) : ''; Doo::loadClass ( 'XDeode' ); $XDeode = new XDeode ( 5 ); Doo::loadModel ( 'invoiceStatistics' ); $invoiceStatistics = new invoiceStatistics (); Doo::loadModel ( 'L_category' ); $category = new L_category (); Doo::loadModel ( 'invoice' ); $invoice = new invoice (); Doo::loadModel ( 'staff' ); $staff = new staff (); Doo::loadModel ( "invoiceCategoryManage" ); $invoiceCategoryManage = new invoiceCategoryManage (); $imcStaff = $invoiceCategoryManage->getInvoiceCMByStaff ( $this->staff [0] ['sid'] ); $cidList = array (); foreach ( $imcStaff as $key => $value ) { array_push ( $cidList, $value ['cid'] ); if (empty ( $cidKey )) $cidKey = $XDeode->encode ( $value ['cid'] ); } $categoryList = $category->getCategoryInCid ( implode ( ',', $cidList ) ); $cid = $XDeode->decode ( $cidKey ); $month = date ( "m", strtotime ( "-1 month" ) ); $YearMonth = date ( "Y-m", strtotime ( "-1 month" ) ); $redis = new Redis (); $redis->connect ( '127.0.0.1', '6379' ); $redisKey = ''; // date('Y-m-d').'_iacd_'.$cid; $redisValue = ''; // $redis->lrange($redisKey, 0, -1); if (empty ( $redisValue )) { $isMC = $invoiceStatistics->getInvoiceStatistiscsMothByCategory ( $cid ); $schedule = $invoice->getInvoiceScheduleByCid ( $cid ); // 获得办事处人员下的汇总 $slist = $staff->getStaffByCid ( $cid ); $ismsbMonth = $invoiceStatistics->getISMSByCategoryByMonth ( $cid, $YearMonth ); // 上一个月的汇总 $ismsb = $invoiceStatistics->getISMSByCategory ( $cid ); // 当月汇总 $ISAS = $invoiceStatistics->getISASByCategory ( $cid ); // 全部汇总 $scheduleStaff = $invoice->getInvoiceScheduleByCidGroupSid ( $cid ); // 完成度 foreach ( $slist as $key => $value ) { $slist [$key] ['invoicePrice'] = 0; $slist [$key] ['receivablesPrice'] = 0; $slist [$key] ['accountPrice'] = 0; $slist [$key] ['invoiceAllPrice'] = 0; $slist [$key] ['receivablesAllPrice'] = 0; $slist [$key] ['accountAllPrice'] = 0; $slist [$key] ['schedule'] = 0; $slist [$key] ['invoiceMonthPrice'] = 0; $slist [$key] ['receivablesMonthPrice'] = 0; $slist [$key] ['accountMonthPrice'] = 0; foreach ( $ismsbMonth as $y => $l ) { if ($value ['sid'] == $l ['staff']) { $slist [$key] ['invoiceMonthPrice'] = $l ['invoicePrice']; $slist [$key] ['receivablesMonthPrice'] = $l ['receivablesPrice']; $slist [$key] ['accountMonthPrice'] = $l ['accountPrice']; } } foreach ( $ismsb as $k => $v ) { if ($value ['sid'] == $v ['staff']) { $slist [$key] ['invoicePrice'] = $v ['invoicePrice']; $slist [$key] ['receivablesPrice'] = $v ['receivablesPrice']; $slist [$key] ['accountPrice'] = $v ['accountPrice']; } } foreach ( $ISAS as $e => $a ) { if ($value ['sid'] == $a ['staff']) { $slist [$key] ['invoiceAllPrice'] = $a ['invoicePrice']; $slist [$key] ['receivablesAllPrice'] = $a ['receivablesPrice']; $slist [$key] ['accountAllPrice'] = $a ['accountPrice']; } } if (isset ( $scheduleStaff [$value ['sid']] )) $slist [$key] ['schedule'] = $scheduleStaff [$value ['sid']]; } $this->data ['cidKey'] = $cidKey; $schedule = ( int ) ($schedule * 100); $this->data ['slist'] = $slist; $this->data ['isMC'] = $isMC; $this->data ['schedule'] = $schedule; $slist = json_encode ( $slist ); $isMC = json_encode ( $isMC ); $schedule = json_encode ( $schedule ); $redis->lpush ( $redisKey, $slist ); $redis->lpush ( $redisKey, $isMC ); $redis->lpush ( $redisKey, $schedule ); } else { $this->data ['cidKey'] = $cidKey; $this->data ['slist'] = json_decode ( $redisValue [2], true ); $this->data ['isMC'] = json_decode ( $redisValue [1], true ); $this->data ['schedule'] = json_decode ( $redisValue [0], true ); } $this->data ['month'] = $month; $this->data ['categoryList'] = $categoryList; $this->data ['memu'] = "invoice"; $this->data ['staff'] = $this->staff; $this->data ['receiptMemu'] = 'invoiceAggregateCategoryDetail'; $this->render ( "/admin/invoiceAggregateCategoryDetail", $this->data ); } /** * 办事处人员汇总详情 */ function invoiceAggregateStaffDetail() { $sidKey = $this->get_args ( 'sidKey' ) ? $this->get_args ( 'sidKey' ) : ''; // $sidKey = isset ( $this->params ['sidKey'] ) ? $this->params ['sidKey'] : ''; Doo::loadClass ( 'XDeode' ); $XDeode = new XDeode ( 5 ); Doo::loadModel ( 'invoice' ); $invoice = new invoice (); Doo::loadModel ( 'staff' ); $staff = new staff (); Doo::loadModel ( "invoiceCategoryManage" ); $invoiceCategoryManage = new invoiceCategoryManage (); $sid = $XDeode->decode ( $sidKey ); $imcStaff = $invoiceCategoryManage->getInvoiceCMByStaff ( $this->staff [0] ['sid'] ); $cidList = array (); foreach ( $imcStaff as $key => $value ) { array_push ( $cidList, $value ['cid'] ); if (empty ( $cidKey )) $cidKey = $XDeode->encode ( $value ['cid'] ); } $cidString = implode ( ',', $cidList ); $staffList = $staff->getStaffInCid ( $cidString ); $staffDetail = $staff->getStaffBySid ( $sid ); $MebSea = $this->get_args ( 'MebSea' ) ? $this->get_args ( 'MebSea' ) : ""; $page_size = 18; $page = isset ( $this->params ['page'] ) && is_numeric ( $this->params ['page'] ) ? $this->params ['page'] : 1; $status = isset ( $this->params ['status'] ) ? $this->params ['status'] : 'All'; $BeginDate = date ( 'Y-m-01', strtotime ( date ( "Y-m-d" ) ) ); $endDate = date ( 'Y-m-d', strtotime ( "$BeginDate +1 month -1 day" ) ); $date = $this->get_args ( 'date' ) ? $this->get_args ( 'date' ) : $BeginDate . " : " . $endDate; $dateArr = explode ( ':', $date ); $D1 = ''; $D2 = ''; if (! empty ( $date )) { $D1 = $dateArr [0] . " 00:00:00 "; if (isset ( $dateArr [1] )) $D2 = $dateArr [1] . " 23:59:59 "; else $D2 = $dateArr [0] . " 23:59:59 "; // date ( "Y-m-d" ); // $D2 = $dateArr [1]; } $con = ' status=2 '; if (! empty ( $D1 ) && ! empty ( $D2 )) $con .= ' and printTime BETWEEN "' . $D1 . '" AND "' . $D2 . '" '; if ($status == 'UNRECORD') $con .= ' and printStatus=1 and untreadStatus=0'; elseif ($status == 'RECORD') $con .= ' and printStatus=1 and untreadStatus=3'; elseif ($status == 'BOUNCED') $con .= ' and untreadStatus=2'; elseif ($status == 'PARTRECORD') $con .= ' and untreadStatus=0 and printStatus=1 and irid!=""'; elseif ($status == 'All') { $con .= ' and ( untreadStatus=2 or untreadStatus=0 or untreadStatus=3 )'; } $con .= ' and sid=' . $sid; $get = "/" . $status . "?date=" . urlencode ( $date ) . "&MebSea=" . urlencode ( $MebSea ) . "&sidKey=" . urlencode ( $sidKey ); if (! empty ( $MebSea )) { $con .= ' and ( invoiceTitle like "%' . $MebSea . '%" or invoiceCompany like "%' . $MebSea . '%" )'; } $pageinfo ['page'] = array ( 'previous' => '' ); $pageinfo = $this->get_page ( "CLD_invoice", $con, $page, $page_size, "invoiceAggregateStaffDetail", $get, "" ); $limit = $pageinfo ['lower'] . ',' . $page_size; $list = $invoice->getInvoiceByUntreadStatusPage ( $limit, $con ); $this->data ['staffDetail'] = $staffDetail; $this->data ['staffList'] = $staffList; $this->data ['MebSeaEn'] = $MebSea; $this->data ['MebSea'] = urlencode ( $MebSea ); $this->data ['date'] = $date; $this->data ['page'] = $pageinfo; $this->data ['get'] = $get; $this->data ['list'] = $list; $this->data ['status'] = $status; $this->data ['sidKey'] = $sidKey; $this->data ['memu'] = "invoice"; $this->data ['staff'] = $this->staff; $this->data ['receiptMemu'] = 'invoiceAggregateCategoryDetail'; $this->render ( "/admin/invoiceAggregateStaffDetail", $this->data ); } /** * 办事处人员汇总收款情 */ function invoiceAggregateStaffReceivablesDetail() { $sidKey = $this->get_args ( 'sidKey' ) ? $this->get_args ( 'sidKey' ) : ''; // include Doo::conf ()->BASE_PATH . 'diagnostic/debug.php'; Doo::loadModel ( 'invoiceReceivables' ); $invoiceReceivables = new invoiceReceivables (); Doo::loadModel ( 'staff' ); $staff = new staff (); Doo::loadModel ( "invoiceCategoryManage" ); $invoiceCategoryManage = new invoiceCategoryManage (); Doo::loadClass ( 'XDeode' ); $XDeode = new XDeode ( 5 ); $sid = $XDeode->decode ( $sidKey ); $staffDetail = $staff->getStaffBySid ( $sid ); $imcStaff = $invoiceCategoryManage->getInvoiceCMByStaff ( $this->staff [0] ['sid'] ); $cidList = array (); foreach ( $imcStaff as $key => $value ) { array_push ( $cidList, $value ['cid'] ); if (empty ( $cidKey )) $cidKey = $XDeode->encode ( $value ['cid'] ); } $cidString = implode ( ',', $cidList ); $staffList = $staff->getStaffInCid ( $cidString ); $MebSea = $this->get_args ( 'MebSea' ) ? $this->get_args ( 'MebSea' ) : ""; $timeType = $this->get_args ( 'timeType' ) ? $this->get_args ( 'timeType' ) : "CREATE"; $page_size = 10; $page = isset ( $this->params ['page'] ) && is_numeric ( $this->params ['page'] ) ? $this->params ['page'] : 1; $status = isset ( $this->params ['status'] ) ? $this->params ['status'] : 'All'; if ($timeType == "BINDOTP") { $status = 'Credited'; } $BeginDate = date ( 'Y-m-01', strtotime ( date ( "Y-m-d" ) ) ); $endDate = date ( 'Y-m-d', strtotime ( "$BeginDate +1 month -1 day" ) ); $date = $this->get_args ( 'date' ) ? $this->get_args ( 'date' ) : $BeginDate . " : " . $endDate; $dateArr = explode ( ':', $date ); $D1 = ''; $D2 = ''; if (! empty ( $date )) { $D1 = $dateArr [0] . " 00:00:00 "; if (isset ( $dateArr [1] )) $D2 = $dateArr [1] . " 23:59:59 "; else $D2 = $dateArr [0] . " 23:59:59 "; // date ( "Y-m-d" ); } $con = ' a.receivablesStaff like "%' . $staffDetail ['username'] . '%" '; $descField = 'a.bindDate'; if ($timeType == 'CREATE') $descField = 'a.date'; if (! empty ( $D1 ) && ! empty ( $D2 )) $con .= ' and ' . $descField . ' BETWEEN "' . $D1 . '" AND "' . $D2 . '" '; elseif (! empty ( $D1 ) && empty ( $D2 )) $con .= ' and ' . $descField . ' like "%' . $D1 . '%" '; if ($status == 'Unclaimed') $con .= ' and a.bindStatus=0'; elseif ($status == 'Credited') $con .= ' and a.bindStatus=1'; elseif ($status == 'Claim') $con .= ' and a.bindStatus=0 and a.receivablesStaff="PUBLIC"'; elseif ($status == 'BBN') $con .= ' and a.bindPrice>a.receivablesPrice'; $get = "/" . $status . "?date=" . urlencode ( $date ) . "&MebSea=" . urlencode ( $MebSea ) . "&sidKey=" . urlencode ( $sidKey ); if (! empty ( $MebSea )) { $con .= ' and ( a.receivablesMessage like "%' . $MebSea . '%" or a.receivablesPrice like "%' . $MebSea . '%" )'; } $pageinfo ['page'] = array ( 'previous' => '' ); // $sql = 'select group_concat(b.invoiceSerial) as invoiceSerial ,group_concat(b.iid) as invoiceId // from CLD_invoiceReceivables as a left join CLD_invoice as b on // find_in_set(b.iid,a.iidExtend) or a.iid=b.iid // where ' . $con . ' group by a.irid '; $pageinfo =$this->get_page ( "CLD_invoiceReceivables as a", $con, $page, $page_size, "invoiceAggregateStaffReceivablesDetail", $get, "" ); //$pageinfo = $this->getPageBySql ( $sql, $page, $page_size, "invoiceAggregateStaffReceivablesDetail", $get, "" ); $limit = $pageinfo ['lower'] . ',' . $page_size; $list = $invoiceReceivables->getInvoiceReceivablesByConditionPage ( $limit, $con, 'desc', $descField); foreach ( $list as $key => $value ) { $list [$key] ['category'] = ''; if ($value ['receivablesCategory'] != 'PUBLIC') { $receivablesCategory = explode ( ":", $value ['receivablesCategory'] ); $list [$key] ['category'] = $receivablesCategory [1]; } } // print_r($list); $this->data ['staffDetail'] = $staffDetail; $this->data ['sidKey'] = $sidKey; $this->data ['staffList'] = $staffList; $this->data ['timeType'] = $timeType; $this->data ['MebSeaEn'] = $MebSea; $this->data ['MebSea'] = urlencode ( $MebSea ); $this->data ['date'] = $date; $this->data ['page'] = $pageinfo; $this->data ['get'] = $get; $this->data ['list'] = $list; $this->data ['status'] = $status; $this->data ['memu'] = "invoice"; $this->data ['staff'] = $this->staff; $this->data ['receiptMemu'] = 'invoiceAggregateCategoryDetail'; $this->render ( "/admin/invoiceAggregateStaffReceivablesDetail", $this->data ); } function invoiceAchieve() { Doo::loadModel ( 'invoice' ); $invoice = new invoice (); Doo::loadClass ( 'XDeode' ); $XDeode = new XDeode ( 5 ); $sid = $XDeode->decode ( $_COOKIE ["staff"] ); $MebSea = $this->get_args ( 'MebSea' ) ? $this->get_args ( 'MebSea' ) : ""; $page_size = 18; $page = isset ( $this->params ['page'] ) && is_numeric ( $this->params ['page'] ) ? $this->params ['page'] : 1; $date = isset ( $this->params ['date'] ) ? $this->params ['date'] : 'MONTHO'; $get = "/" . $date; $con = ''; if ($date == 'MONTHO') $con = ' and updateTime>DATE_SUB(CURDATE(), INTERVAL 1 MONTH)'; elseif ($date == 'MONTHT') $con = ' and updateTime>DATE_SUB(CURDATE(), INTERVAL 3 MONTH)'; elseif ($date == 'MONTHY') $con = ' and updateTime>DATE_SUB(CURDATE(), INTERVAL 1 YEAR)'; if (! empty ( $MebSea )) { $con .= ' and ( invoiceTitle like "%' . $MebSea . '%" or invoiceCompany like "%' . $MebSea . '%" or invoicePrice like "%' . $MebSea . '%" )'; $get .= "/" . $MebSea; } $pageinfo ['page'] = array ( 'previous' => '' ); $sql = 'status=2 and printStatus=1 and irid!="" and ( untreadStatus=3 or untreadStatus=0 ) and sid=' . $sid . $con; $pageinfo = $this->get_page ( "CLD_invoice", $sql, $page, $page_size, "invoiceAchieve", $get, "" ); $limit = $pageinfo ['lower'] . ',' . $page_size; $list = $invoice->getInvoiceByUntreadStatusPage ( $limit, $sql ); // print_r($pageinfo); $this->data ['MebSeaEn'] = $MebSea; $this->data ['MebSea'] = urlencode ( $MebSea ); $this->data ['get'] = $get; $this->data ['page'] = $pageinfo; $this->data ['list'] = $list; $this->data ['date'] = $date; $this->data ['memu'] = "invoice"; $this->data ['staff'] = $this->staff; $this->data ['receiptMemu'] = 'invoice'; $this->render ( "/admin/invoiceAchieve", $this->data ); } /** */ function invoiceMyUnAccountAchieve() { Doo::loadModel ( 'invoice' ); $invoice = new invoice (); Doo::loadClass ( 'XDeode' ); $XDeode = new XDeode ( 5 ); $sid = $XDeode->decode ( $_COOKIE ["staff"] ); $MebSea = $this->get_args ( 'MebSea' ) ? $this->get_args ( 'MebSea' ) : ""; $page_size = 18; $page = isset ( $this->params ['page'] ) && is_numeric ( $this->params ['page'] ) ? $this->params ['page'] : 1; $date = $this->get_args ( 'date' ) ? $this->get_args ( 'date' ) : ""; $get = "?date=" . urlencode ( $date ) . "&MebSea=" . urlencode ( $MebSea ); $dateArr = explode ( ':', $date ); $D1 = ''; $D2 = ''; if (! empty ( $date )) { $D1 = $dateArr [0]; $D2 = $dateArr [1]; } $con = ''; if (! empty ( $D1 ) && ! empty ( $D2 )) $con = ' and printTime BETWEEN "' . $D1 . '" AND "' . $D2 . '" '; if (! empty ( $MebSea )) { $con .= ' and ( invoiceTitle like "%' . $MebSea . '%" or invoiceCompany like "%' . $MebSea . '%" or invoicePrice like "%' . $MebSea . '%" )'; } $pageinfo ['page'] = array ( 'previous' => '' ); // and irid='' and ( (doPost=1 and postStatus=1) or doPost=0 ) $sql = " status=2 and printStatus=1 and untreadStatus=0 and isDelete=0 and sid= " . $sid . $con; $action = "invoiceMyUnAccountAchieve"; $pageinfo = $this->get_page ( "CLD_invoice", $sql, $page, $page_size, $action, $get, "" ); $limit = $pageinfo ['lower'] . ',' . $page_size; $list = $invoice->getInvoiceByUntreadStatusPage ( $limit, $sql, 'desc', 'desc', 'printTime' ); Doo::loadModel ( 'express' ); $express = new express (); $expressList = $express->getExpressByAll (); $this->data ['expressList'] = $expressList; // print_r($list); $this->data ['MebSeaEn'] = $MebSea; $this->data ['get'] = $get; $this->data ['page'] = $pageinfo; $this->data ['date'] = $date; $this->data ['list'] = $list; $this->data ['memu'] = "invoice"; $this->data ['staff'] = $this->staff; $this->data ['receiptMemu'] = 'invoice'; $this->render ( "/admin/invoiceMyUnAccountAchieve", $this->data ); } function invoiceReceivablesAchieve() { Doo::loadModel ( 'invoiceReceivables' ); $invoiceReceivables = new invoiceReceivables (); Doo::loadClass ( 'XDeode' ); $XDeode = new XDeode ( 5 ); $sid = $XDeode->decode ( $_COOKIE ["staff"] ); $MebSea = isset ( $this->params ['MebSea'] ) ? urldecode ( $this->params ['MebSea'] ) : ''; $page_size = 12; $page = isset ( $this->params ['page'] ) && is_numeric ( $this->params ['page'] ) ? $this->params ['page'] : 1; $date = isset ( $this->params ['date'] ) ? $this->params ['date'] : 'MONTHO'; $get = "/" . $date; $con = ''; if ($date == 'MONTHO') $con = ' and bindDate>DATE_SUB(CURDATE(), INTERVAL 1 MONTH)'; elseif ($date == 'MONTHT') $con = ' and bindDate>DATE_SUB(CURDATE(), INTERVAL 3 MONTH)'; elseif ($date == 'MONTHY') $con = ' and bindDate>DATE_SUB(CURDATE(), INTERVAL 1 YEAR)'; if (! empty ( $MebSea )) { $con .= ' and ( receivablesMessage like "%' . $MebSea . '%" or receivablesPrice like "%' . $MebSea . '%" )'; $get .= "/" . $MebSea; } $pageinfo ['page'] = array ( 'previous' => '' ); $sql = " bindStatus=1 and receivablesStaff like '" . $sid . "-%' " . $con; $pageinfo = $this->get_page ( "CLD_invoiceReceivables", $sql, $page, $page_size, "invoiceReceivablesAchieve", $get, "" ); $limit = $pageinfo ['lower'] . ',' . $page_size; $list = $invoiceReceivables->getReceivablesByUntreadStatusPage ( $limit, $sql ); // print_r($pageinfo); $this->data ['MebSeaEn'] = $MebSea; $this->data ['MebSea'] = urlencode ( $MebSea ); $this->data ['get'] = $get; $this->data ['page'] = $pageinfo; $this->data ['list'] = $list; $this->data ['date'] = $date; $this->data ['memu'] = "invoice"; $this->data ['staff'] = $this->staff; $this->data ['receiptMemu'] = 'invoiceMyReceivables'; $this->render ( "/admin/invoiceReceivablesAchieve", $this->data ); } /** * 收款解绑 */ function invoiceUnBundLing() { $unBundKey = $this->get_args ( 'unBundKey' ) ? $this->get_args ( 'unBundKey' ) : ''; $iidKey = $this->get_args ( 'iidKey' ) ? $this->get_args ( 'iidKey' ) : ''; Doo::loadModel ( 'invoice' ); $invoice = new invoice (); Doo::loadModel ( 'invoiceReceivables' ); $invoiceReceivables = new invoiceReceivables (); Doo::loadModel ( 'invoiceOperationLog' ); $invoiceOperationLog = new invoiceOperationLog (); Doo::loadModel ( 'invoiceROLog' ); $invoiceROLog = new invoiceROLog (); Doo::loadModel ( 'invoiceStatistics' ); Doo::loadClass ( 'XDeode' ); $XDeode = new XDeode ( 5 ); if (empty ( $iidKey ) || empty ( $unBundKey )) die ( 'illegal request' ); $iid = $XDeode->decode ( $iidKey ); $irid = $invoice->authcode ( $unBundKey ); if ((! empty ( $irid ) && ! is_numeric ( $irid )) || (! empty ( $iid ) && ! is_numeric ( $iid ))) die ( 'illegal request' ); $irDetails = $invoiceReceivables->getInvoiceReceivablesByIrid ( $irid ); $invoiceDetails = $invoice->getInvoiceByIid ( $iid ); if (empty ( $irDetails ) || empty ( $invoiceDetails ) || (empty ( $irDetails ['iid'] ) && empty ( $irDetails ['iidExtend'] )) || $invoiceDetails ['untreadStatus'] == 2) die ( 'illegal request' ); // 收款 $item = array ( 'irid' => $irDetails ['irid'], 'bindPrice' => $irDetails ['bindPrice'] - $invoiceDetails ['invoicePrice'], 'bindStatus' => 0 ); if ($irDetails ['iid'] == $iid) $item += array ( 'iid' => 0 ); else { $iidExtend = explode ( ',', $irDetails ['iidExtend'] ); foreach ( $iidExtend as $key => $value ) { if ($value == $iid) unset ( $iidExtend [$key] ); } $iidExtend = implode ( ',', $iidExtend ); $item += array ( 'iidExtend' => $iidExtend ); } $invoiceReceivables->setInvoiceReceivablesByCondition ( $item ); // 收款操作日志 $item = array ( 'operation' => $this->staff [0] ['username'] . " 解绑 " . $irDetails ['receivablesSerial'], 'date' => date ( "Y-m-d" ), 'status' => 3, 'img' => $this->staff [0] ['avatar'], 'username' => $this->staff [0] ['username'], 'uid' => $this->staff [0] ['sid'], 'category' => $this->staff [0] ['category'], 'irid' => $irid ); $invoiceROLog->setInvoiceROLog ( $item ); // 扣除入账统计金额 $invoiceStatistics = new invoiceStatistics (); $item = array ( 'date' => date ( 'Y-m-d', strtotime ( $irDetails ['receivablesDate'] ) ), 'priceClass' => 3, 'cid' => $invoiceDetails ['cid'], 'staff' => $invoiceDetails ['sid'], 'accountPrice' => - $invoiceDetails ['invoicePrice'] ); $invoiceStatistics->setInvoiceStatisticsByCondition ( $item ); // 扣除收款统计金额 $invoiceStatistics = new invoiceStatistics (); $item = array ( 'date' => date ( 'Y-m-d', strtotime ( $irDetails ['receivablesDate'] ) ), 'priceClass' => 2, 'cid' => $invoiceDetails ['cid'], 'staff' => $invoiceDetails ['sid'], 'irid' => $irDetails ['irid'], 'receivablesPrice' => - $invoiceDetails ['invoicePrice'] ); $invoiceStatistics->setInvoiceStatisticsByCondition ( $item ); // 发票解绑去收款ID $iridString = $invoiceDetails ['irid']; if (! empty ( $invoiceDetails ['irid'] )) { $list = explode ( ',', $invoiceDetails ['irid'] ); foreach ( $list as $key => $value ) { if ($value == $irDetails ['irid']) { unset ( $list [$key] ); break; } } $iridString = implode ( ",", $list ); } //解绑后余额 加回去 $invoiceBalance=$invoiceDetails['invoiceBalance']+$irDetails['receivablesPrice']; if ($invoiceBalance<0){ $invoiceBalance=0; } if($invoiceBalance>$invoiceDetails['invoicePrice']){ $invoiceBalance=$invoiceDetails['invoicePrice']; } $item = array ( 'iid' => $invoiceDetails ['iid'], 'irid' => $iridString, 'invoiceBalance'=>$invoiceBalance, 'updateTime' => date ( "Y-m-d H:i:s" ) ); if ($invoiceDetails ['untreadStatus'] == 3) $item += array ( 'untreadStatus' => 0 ); $invoice->setInvoiceByCondition ( $item ); Doo::loadModel ( 'bill' ); $bill = new bill (); $bill->iid=$invoiceDetails ['iid']; $bill->trainId=$invoiceDetails['trainId']; $bill->irid=$irDetails ['irid']; $bill->create_time=date ( "Y-m-d H:i:s" ); $bill->price=-$invoiceDetails ['invoicePrice']; $bill->remark='解绑-扣除入账'; $bill->insert (); $item = array ( 'date' => date ( "Y-m-d H:i:s" ), 'operation' => '解绑 收款 ' . $irDetails ['receivablesSerial'], 'status' => 11, 'img' => $this->staff [0] ['avatar'], 'username' => $this->staff [0] ['username'], 'uid' => $this->staff [0] ['sid'], 'category' => $this->staff [0] ['category'], 'iid' => $invoiceDetails ['iid'] ); $invoiceOperationLog->setInvoiceOperationLog ( $item ); // 公司流水-解绑时删除流水 // Doo::loadModel ( 'wasteBook' ); // $wasteBook = new wasteBook (); // $wasteBook->delete ( array ( // 'where' => 'dataID=' . $irDetails ['irid'] . ' and accountType=7', // 'limit' => 1 // ) ); // 银行 /* * $abDetail = $wasteBook->getAccountBookByAid (2,7,$irDetails ['irid'] ); $accountBank=''; if ($irDetails ['receivablesBank']=='纵横广发'){ $accountBank='CGBDeposit'; }elseif($irDetails ['receivablesBank']=='纵横工行'){ $accountBank='ICBCDeposit'; }elseif($irDetails ['receivablesBank']=='华润银行'){ $accountBank='HUADeposit'; }elseif($irDetails ['receivablesBank']=='个人广发'){ $accountBank='PersonalDeposit'; } if (empty($abDetail)){ $item = array ( 'dataID' => $irDetails ['irid'], 'expensesType' => 2, 'accountType' => 7, 'accountPriceShow'=>$irDetails ['receivablesPrice'], 'accountPrice' => -$irDetails ['receivablesPrice'], 'accountBank'=>$accountBank, 'cid'=>$this->staff[0]['cid'], 'name'=>$this->staff[0]['username'], 'sid'=>$this->staff[0]['sid'], 'inputDate'=>date ( "Y-m-d H:i:s" ) ); $wasteBook->setAccountBookStatistics($item); } */ return "/invoiceReceivablesAS"; } /** * 或者该收款下的所以发票 */ function ajaxGetInvoiceReceivablesByInvoice() { $irid = $this->get_args ( 'postData' ) ? $this->get_args ( 'postData' ) : ''; Doo::loadModel ( 'invoice' ); $invoice = new invoice (); Doo::loadModel ( 'invoiceReceivables' ); $invoiceReceivables = new invoiceReceivables (); $irid = $invoice->authcode ( $irid ); if (! empty ( $irid ) && ! is_numeric ( $irid )) die ( 'illegal request' ); $irDetails = $invoiceReceivables->getInvoiceReceivablesByIrid ( $irid ); $iidString = $irDetails ['iid']; $iidExtend = array_filter ( explode ( ',', $irDetails ['iidExtend'] ) ); if (! empty ( $irDetails ['iidExtend'] )) $iidString .= ',' . implode ( ',', $iidExtend ); $invoiceList = $invoice->getInvoiceInIid ( $iidString, 'iid,invoiceSerial,invoicePrice,invoiceTitle,invoiceCompany,invoiceElement' ); $html = ""; foreach ( $invoiceList as $key => $value ) { $title = $value ['invoiceTitle']; if (! empty ( $value ['invoiceCompany'] )) $title = $value ['invoiceCompany']; $html .= '' . $value ['invoiceSerial'] . '¥' . $value ['invoicePrice'] . '' . $title . '' . $value ['invoiceElement'] . ''; } echo json_encode ( array ( 'status' => 1, 'html' => $html ) ); } /** * 发票管理 */ function invoiceAS() { Doo::loadModel ( 'invoice' ); $invoice = new invoice (); Doo::loadModel ( 'invoiceReceivables' ); $invoiceReceivables = new invoiceReceivables (); $MebSea = $this->get_args ( 'MebSea' ) ? $this->get_args ( 'MebSea' ) : ""; $page_size = 18; $page = isset ( $this->params ['page'] ) && is_numeric ( $this->params ['page'] ) ? $this->params ['page'] : 1; $status = isset ( $this->params ['status'] ) ? $this->params ['status'] : 'All'; $date = $this->get_args ( 'date' ) ? $this->get_args ( 'date' ) : ""; $dateArr = explode ( ':', $date ); $D1 = ''; $D2 = ''; if (! empty ( $date )) { $D1 = $dateArr [0] . " 00:00:00 "; if (isset ( $dateArr [1] )) $D2 = $dateArr [1] . " 23:59:59 "; else $D2 = $dateArr [0] . " 23:59:59 "; // date ( "Y-m-d" ); // $D2 = $dateArr [1]; } $con = ' status=2 '; if (! empty ( $D1 ) && ! empty ( $D2 )) $con .= ' and printTime BETWEEN "' . $D1 . '" AND "' . $D2 . '" '; if ($status == 'UNRECORD') $con .= ' and printStatus=1 and untreadStatus=0'; elseif ($status == 'RECORD') $con .= ' and printStatus=1 and untreadStatus=3'; elseif ($status == 'BOUNCED') $con .= ' and untreadStatus=2'; elseif ($status == 'PARTRECORD') $con .= ' and untreadStatus=0 and printStatus=1 and irid!=""'; elseif ($status == 'All') { $con .= ' and ( untreadStatus=2 or untreadStatus=1 or untreadStatus=0 or untreadStatus=3 )'; } $get = "/" . $status . "?date=" . urlencode ( $date ) . "&MebSea=" . urlencode ( $MebSea ); if (! empty ( $MebSea )) { $con .= ' and ( invoiceSerial like "%' . $MebSea . '%" or invoiceTitle like "%' . $MebSea . '%" or invoiceCompany like "%' . $MebSea . '%" or invoiceNo like "%' . $MebSea . '%" )'; } $pageinfo ['page'] = array ( 'previous' => '' ); $pageinfo = $this->get_page ( "CLD_invoice", $con, $page, $page_size, "invoiceAS", $get, "" ); $limit = $pageinfo ['lower'] . ',' . $page_size; $list = $invoice->getInvoiceByUntreadStatusPage ( $limit, $con ); $this->data ['MebSeaEn'] = $MebSea; $this->data ['MebSea'] = urlencode ( $MebSea ); $this->data ['date'] = $date; $this->data ['page'] = $pageinfo; $this->data ['get'] = $get; $this->data ['list'] = $list; $this->data ['status'] = $status; $this->data ['memu'] = "invoice"; $this->data ['staff'] = $this->staff; $this->data ['receiptMemu'] = 'invoiceReceivables'; $this->render ( "/admin/invoiceAS", $this->data ); } /** * 收款管理 */ function invoiceReceivablesAS() { Doo::loadModel ( 'invoiceReceivables' ); $invoiceReceivables = new invoiceReceivables (); Doo::loadModel ( 'L_category' ); $lCategory = new L_category (); $category = $lCategory->getCategory (); $MebSea = $this->get_args ( 'MebSea' ) ? $this->get_args ( 'MebSea' ) : ""; $timeType = $this->get_args ( 'timeType' ) ? $this->get_args ( 'timeType' ) : "CREATE"; $page_size = 10; $page = isset ( $this->params ['page'] ) && is_numeric ( $this->params ['page'] ) ? $this->params ['page'] : 1; $status = isset ( $this->params ['status'] ) ? $this->params ['status'] : 'All'; $date = $this->get_args ( 'date' ) ? $this->get_args ( 'date' ) : ""; $dateArr = explode ( ':', $date ); $D1 = ''; $D2 = ''; if (! empty ( $date )) { $D1 = $dateArr [0]; // ." 00:00:00 "; if (isset ( $dateArr [1] )) $D2 = $dateArr [1]; // ." 23:59:59 "; else $D2 = $dateArr [0]; // ." 23:59:59 ";//date ( "Y-m-d" ); } $descField = 'a.receivablesDate'; if ($timeType == 'CREATE') $descField = 'a.date'; $con = ' 1 '; if (! empty ( $D1 ) && ! empty ( $D2 )) $con .= ' and ' . $descField . ' BETWEEN "' . $D1 . '" AND "' . $D2 . '" '; elseif (! empty ( $D1 ) && empty ( $D2 )) $con .= ' and ' . $descField . ' like "%' . $D1 . '%" '; if ($status == 'Unclaimed') $con .= ' and a.bindStatus=0'; elseif ($status == 'Credited') $con .= ' and a.bindStatus=1'; elseif ($status == 'Claim') $con .= ' and a.bindStatus=0 and a.receivablesStaff="PUBLIC"'; elseif ($status == 'BBN') $con .= ' and a.bankBatchNumber!=""'; elseif ($status == 'REFUND') $con .= ' and ( (a.bindStatus=0 and a.refundLog!="" ) or a.bindStatus=2)'; $get = "/" . $status . "?date=" . urlencode ( $date ) . "&MebSea=" . urlencode ( $MebSea ); if (! empty ( $MebSea )) { $con .= ' and ( a.receivablesMessage like "%' . $MebSea . '%" or a.receivablesPrice like "%' . $MebSea . '%" or a.receivablesSerial like "%' . $MebSea . '%" )'; } $pageinfo ['page'] = array ( 'previous' => '' ); // if(!empty($con)){ // $con=' where 1 '.$con; // } // $sql = 'select a.iid from CLD_invoiceReceivables as a // ' . $con ; $pageinfo =$this->get_page ( "CLD_invoiceReceivables as a", $con, $page, $page_size, "invoiceReceivablesAS", $get, "" ); //echo $sql; //$pageinfo = $this->getPageBySql ( $sql, $page, $page_size, "invoiceReceivablesAS", $get, "" ); $limit = $pageinfo ['lower'] . ',' . $page_size; $list = $invoiceReceivables->getInvoiceReceivablesByConditionPage ( $limit, $con, 'desc', $descField ); foreach ( $list as $key => $value ) { $list [$key] ['category'] = ''; if ($value ['receivablesCategory'] != 'PUBLIC') { $receivablesCategory = explode ( ":", $value ['receivablesCategory'] ); $list [$key] ['category'] = $receivablesCategory [1]; } } // print_r($list); $this->data ['category'] = $category; $this->data ['timeType'] = $timeType; $this->data ['MebSeaEn'] = $MebSea; $this->data ['MebSea'] = urlencode ( $MebSea ); $this->data ['date'] = $date; $this->data ['page'] = $pageinfo; $this->data ['get'] = $get; $this->data ['list'] = $list; $this->data ['status'] = $status; $this->data ['memu'] = "invoice"; $this->data ['staff'] = $this->staff; $this->data ['receiptMemu'] = 'invoiceReceivables'; $this->render ( "/admin/invoiceReceivablesAS", $this->data ); } /** * 删除一条收款 */ function delInvoiceReceivables() { $iridKey = $this->get_args ( 'iridKey' ) ? $this->get_args ( 'iridKey' ) : ""; if (empty ( $iridKey )) die ( 'illegal request' ); Doo::loadClass ( 'XDeode' ); $XDeode = new XDeode ( 5 ); $irid = $XDeode->decode ( $iridKey ); Doo::loadModel ( 'invoiceReceivables' ); $invoiceReceivables = new invoiceReceivables (); $detail = $invoiceReceivables->getInvoiceReceivablesByIrid ( $irid ); if (empty ( $detail )) die ( 'illegal request' ); $invoiceReceivables->delInvoiceReceivablesByIrid ( $detail ['irid'] ); // 扣除收款汇总信息 汇总 Doo::loadModel ( 'invoiceStatistics' ); $invoiceStatistics = new invoiceStatistics (); $item = array ( 'date' => $detail ['receivablesDate'], 'priceClass' => 2, 'irid' => $detail ['irid'], 'receivablesPrice' => - $detail ['receivablesPrice'] ); if ($detail ['receivablesCategory'] != 'PUBLIC') { $receivablesCategory = explode ( ":", $detail ['receivablesCategory'] ); $item += array ( 'cid' => $receivablesCategory [0] ); } if ($detail ['receivablesStaff'] != 'PUBLIC') { $receivablesStaff = explode ( "-", $detail ['receivablesStaff'] ); $item += array ( 'staff' => $receivablesStaff [0] ); } $invoiceStatistics->setInvoiceStatisticsByCondition ( $item ); return '/invoiceReceivablesAS'; } /** * 添加退款信息 */ function setInvoiceReceivablesRefund() { $iridKey = $this->get_args ( 'iridKey' ) ? $this->get_args ( 'iridKey' ) : ''; $refundType = $this->get_args ( 'refundType' ) && is_numeric ( $this->get_args ( 'refundType' ) ) ? $this->get_args ( 'refundType' ) : '0'; $refundCompany = $this->get_args ( 'refundCompany' ) ? $this->get_args ( 'refundCompany' ) : ""; $refundNumber = $this->get_args ( 'refundNumber' ) ? $this->get_args ( 'refundNumber' ) : ""; $refundPrice = $this->get_args ( 'refundPrice' ) ? $this->get_args ( 'refundPrice' ) : ""; $refundRemarks = $this->get_args ( 'refundRemarks' ) ? $this->get_args ( 'refundRemarks' ) : ""; if ($refundPrice < 0) die ( 'illegal request' ); if (! empty ( $iridKey ) && ! empty ( $refundCompany ) && ! empty ( $refundNumber ) && ! empty ( $refundPrice )) { Doo::loadModel ( 'invoiceReceivables' ); $invoiceReceivables = new invoiceReceivables (); Doo::loadModel ( 'invoiceRefund' ); $invoiceRefund = new invoiceRefund (); $irid = $invoiceReceivables->authcode ( $iridKey ); $irDetail = $invoiceReceivables->getInvoiceReceivablesByIrid ( $irid ); if ($irDetail ['receivablesPrice'] < $refundPrice) die ( 'illegal request' ); $invoiceReceivables = new invoiceReceivables (); $refundLog = $this->staff [0] ['username'] . ' 退款 ¥' . $refundPrice . '
退款信息
' . date ( "Y-m-d H:i:s" ) . ' '; $item = array ( 'irid' => $irid, 'refundCompany' => $refundCompany, 'refundNumber' => $refundNumber, 'refundPrice' => $refundPrice, 'refundRemarks' => $refundRemarks, 'refundLog' => $refundLog ); if ($refundType == 1) { $item += array ( 'refundType' => $refundType, 'receivablesPrice' => $irDetail ['receivablesPrice'] - $refundPrice, 'bindStatus' => 2 ); } elseif ($refundType == 0 && $irDetail ['receivablesPrice'] <= $refundPrice) { $item += array ( 'refundType' => 1, 'receivablesPrice' => $irDetail ['receivablesPrice'] - $refundPrice, 'bindStatus' => 2 ); } else { $item += array ( 'refundType' => $refundType, 'receivablesPrice' => $irDetail ['receivablesPrice'] - $refundPrice ); } $invoiceReceivables->setInvoiceReceivablesByCondition ( $item ); // 添加退款记录 $item = array ( 'irid' => $irid, 'refundType' => $refundType, 'refundCompany' => $refundCompany, 'refundNumber' => $refundNumber, 'refundPrice' => $refundPrice, 'refundLog' => $refundLog, 'refundRemarks' => $refundRemarks, 'date' => date ( "Y-m-d H:i:s" ) ); $invoiceRefund->addInvoiceRefund ( $item ); // 扣除收款汇总信息 汇总 Doo::loadModel ( 'invoiceStatistics' ); $invoiceStatistics = new invoiceStatistics (); $item = array ( 'date' => $irDetail ['receivablesDate'], 'priceClass' => 2, 'irid' => $irDetail ['irid'], 'receivablesPrice' => - $refundPrice ); $receivablesCategory=array(0=>'',1=>''); if ($irDetail ['receivablesCategory'] != 'PUBLIC') { $receivablesCategory = explode ( ":", $irDetail ['receivablesCategory'] ); $item += array ( 'cid' => $receivablesCategory [0] ); } if ($irDetail ['receivablesStaff'] != 'PUBLIC') { $receivablesStaff = explode ( "-", $irDetail ['receivablesStaff'] ); $item += array ( 'staff' => $receivablesStaff [0] ); } $invoiceStatistics->setInvoiceStatisticsByCondition ( $item ); // 公司日常支出流水 Doo::loadModel ( 'wasteBook' ); $wasteBook = new wasteBook (); $accountBank=$wasteBook->_getAccountBankEN($irDetail ['receivablesBank']); $itemWaste = array ( 'accountPrice' => - $refundPrice, 'expensesType' => 2, 'accountType' => 11, 'accountPriceShow' => $refundPrice, 'dataID' => $irid, 'accountBank' => $accountBank, 'category' => $receivablesCategory[1], 'cid' => $receivablesCategory[0], 'name' => $this->staff [0] ['username'], 'sid' => $this->staff [0] ['sid'], 'inputDate' => date ( "Y-m-d H:i:s" ) ); $wasteBook->setAccountBookStatistics ( $itemWaste ); return '/invoiceReceivablesAS'; } die ( 'illegal request' ); } function ajaxCheckInvoiceReceivablesRefund() { $iridKey = $this->get_args ( 'iridKey' ) ? $this->get_args ( 'iridKey' ) : ''; $refundPrice = $this->get_args ( 'refundPrice' ) ? $this->get_args ( 'refundPrice' ) : ""; if ($refundPrice < 0) { echo json_encode ( array ( 'error' => '金额不能为负' ) ); die (); } if (! empty ( $refundPrice ) && ! empty ( $iridKey )) { Doo::loadModel ( 'invoiceReceivables' ); $invoiceReceivables = new invoiceReceivables (); $irid = $invoiceReceivables->authcode ( $iridKey ); $irDetail = $invoiceReceivables->getInvoiceReceivablesByIrid ( $irid ); if ($irDetail ['receivablesPrice'] < $refundPrice) { echo json_encode ( array ( 'error' => '退款金额不能超过收款金额' ) ); die (); } echo json_encode ( array ( 'ok' => '可以使用!' ) ); die (); } } /** * 获得收款退款信息 */ function getRefundByDetail() { $iridKey = $this->get_args ( 'iridKey' ) ? $this->get_args ( 'iridKey' ) : ''; Doo::loadModel ( 'invoiceReceivables' ); $invoiceReceivables = new invoiceReceivables (); if (! empty ( $iridKey )) { $irid = $invoiceReceivables->authcode ( $iridKey ); $irDetail = $invoiceReceivables->getInvoiceReceivablesByIrid ( $irid ); echo json_encode ( array ( 'status' => 1, 'irDetail' => $irDetail ) ); die (); } echo json_encode ( array ( 'status' => 2 ) ); } /** * 根据收款序列号获得收款退款信息 */ function ajaxGetInvoiceReceivablesBySerial() { $receivablesSerial = $this->get_args ( 'receivablesSerial' ) ? $this->get_args ( 'receivablesSerial' ) : ''; if (! empty ( $receivablesSerial )) { Doo::loadModel ( 'invoiceReceivables' ); $invoiceReceivables = new invoiceReceivables (); // , ' and refundLog=""' $irDetail = $invoiceReceivables->getInvoiceReceivablesBySerial ( $receivablesSerial ); $html = ''; if (! empty ( $irDetail )) $html = '¥' . $irDetail ['receivablesPrice'] . ' ' . $irDetail ['receivablesMessage'] . ' ' . $irDetail ['receivablesBank'] . '
' . $irDetail ['receivablesDate'] . ' ' . $irDetail ['title'] . '-' . $irDetail ['username'] . '
' . $irDetail ['confirmTime'] . ' ' . $irDetail ['recepitTitleMark'] . ' '; echo json_encode ( array ( 'status' => 1, 'html' => $html, 'irDetail' => $irDetail ) ); die (); } echo json_encode ( array ( 'status' => 2 ) ); } /** * 绑定新收款 */ function relationNewInvoiceReceivables() { $iridKeyOld = $this->get_args ( 'iridKeyOld' ) ? $this->get_args ( 'iridKeyOld' ) : ''; $iridKey = $this->get_args ( 'iridKey' ) ? $this->get_args ( 'iridKey' ) : ''; if (! empty ( $iridKeyOld ) && ! empty ( $iridKey )) { Doo::loadModel ( 'invoiceReceivables' ); $invoiceReceivables = new invoiceReceivables (); Doo::loadClass ( 'XDeode' ); $XDeode = new XDeode ( 5 ); $irid = $XDeode->decode ( $iridKey ); $iridOld = $invoiceReceivables->authcode ( $iridKeyOld ); echo $irid . 'bbb' . $iridOld; $oldIrDetail = $invoiceReceivables->getInvoiceReceivablesByIrid ( $iridOld ); $IrDetail = $invoiceReceivables->getInvoiceReceivablesByIrid ( $irid ); if (empty ( $oldIrDetail ) || empty ( $IrDetail )) die ( 'illegal request' ); $relationLog = $this->staff [0] ['username'] . ' 关联新款 ' . $IrDetail ['receivablesSerial'] . '
' . date ( "Y-m-d H:i:s" ) . ' '; $invoiceReceivables = new invoiceReceivables (); $item = array ( 'irid' => $iridOld, 'relationIrid' => $irid, 'relationLog' => $relationLog ); $invoiceReceivables->setInvoiceReceivablesByCondition ( $item ); return '/invoiceReceivablesAS'; } die ( 'illegal request' ); } // function invoiceApprovalAchieve() { // Doo::loadModel ( 'invoice' ); // $invoice = new invoice (); // $MebSea = isset ( $this->params ['MebSea'] ) ? urldecode ( $this->params ['MebSea'] ) : ''; // $page_size = 12; // $page = isset ( $this->params ['page'] ) && is_numeric ( $this->params ['page'] ) ? $this->params ['page'] : 1; // $date = isset ( $this->params ['date'] ) ? $this->params ['date'] : 'MONTHO'; // $get = "/" . $date; // $con = ''; // if ($date == 'MONTHO') // $con = ' and approvalTime>DATE_SUB(CURDATE(), INTERVAL 1 MONTH)'; // elseif ($date == 'MONTHT') // $con = ' and approvalTime>DATE_SUB(CURDATE(), INTERVAL 3 MONTH)'; // elseif ($date == 'MONTHY') // $con = ' and approvalTime>DATE_SUB(CURDATE(), INTERVAL 1 YEAR)'; // if (! empty ( $MebSea )) { // $con .= ' and ( invoiceTitle like "%' . $MebSea . '%" or invoiceCompany like "%' . $MebSea . '%" or invoicePrice like "%' . $MebSea . '%" )'; // $get .= "/" . $MebSea; // } // $pageinfo ['page'] = array ( // 'previous' => '' // ); // $sql = '(status=1 or status=2 or status=3 or status=4) and processApprovals!=""' . $con; // echo $sql; // $pageinfo = $this->get_page ( "CLD_invoice", $sql, $page, $page_size, "invoiceApprovalAchieve", $get, "" ); // $limit = $pageinfo ['lower'] . ',' . $page_size; // $list = $invoice->getInvoiceByUntreadStatusPage ( $limit, $sql, 'desc', 2 ); // // print_r($list); // $this->data ['MebSeaEn'] = $MebSea; // $this->data ['MebSea'] = urlencode ( $MebSea ); // $this->data ['get'] = $get; // $this->data ['page'] = $pageinfo; // $this->data ['list'] = $list; // $this->data ['date'] = $date; // $this->data ['memu'] = "invoice"; // $this->data ['staff'] = $this->staff; // $this->data ['receiptMemu'] = 'invoiceApproval'; // $this->render ( "/admin/invoiceApprovalAchieve", $this->data ); // } /** * 获得审批发票的信息以及审批页面 */ function ajaxGetInvoiceApprovalDetail() { $serial = $this->get_args ( 'serial' ) ? $this->get_args ( 'serial' ) : ""; if (empty ( $serial )) { echo json_encode ( array ( 'status' => 2, 'msg' => 'illegal request' ) ); die (); } Doo::loadModel ( 'invoice' ); $invoice = new invoice (); Doo::loadModel ( 'invoiceOperationLog' ); $invoiceOperationLog = new invoiceOperationLog (); $detail = $invoice->getInvoiceByIsid ( $serial, $this->staff [0] ['sid'] ); $invoiceOperationLogList = $invoiceOperationLog->getInvoiceOperationLogByIid ( $detail ['iid'] ); if (empty ( $detail )) $html = ''; else { $html = '
'; } echo json_encode ( array ( 'status' => 1, 'html' => $html ) ); die (); } /** * 获得审批发票分页数据 */ function ajaxGetinvoiceApprovalAchieve() { Doo::loadModel ( 'invoice' ); $invoice = new invoice (); Doo::loadModel ( 'staff' ); $staff = new staff (); Doo::loadClass ( 'XDeode' ); $XDeode = new XDeode ( 5 ); Doo::loadModel ( 'invoiceTraining' ); $invoiceTraining = new invoiceTraining (); $status = $this->get_args ( 'status' ) ? $this->get_args ( 'status' ) : 'ALL'; $invoiceType = $this->get_args ( 'invoiceType' ) ? $this->get_args ( 'invoiceType' ) : "ALL"; $invoiceTrain = $this->get_args ( 'invoiceTrain' ) ? $this->get_args ( 'invoiceTrain' ) : "ALL"; $invoiceTrainName = $this->get_args ( 'invoiceTrainName' ) ? $this->get_args ( 'invoiceTrainName' ) : "ALL"; $date = $this->get_args ( 'date' ) ? $this->get_args ( 'date' ) : ""; $page = $this->get_args ( 'start' ) && is_numeric ( $this->get_args ( 'start' ) ) ? $this->get_args ( 'start' ) : 0; $draw = $this->get_args ( 'draw' ) && is_numeric ( $this->get_args ( 'draw' ) ) ? $this->get_args ( 'draw' ) : 1; $length = $this->get_args ( 'length' ) && is_numeric ( $this->get_args ( 'length' ) ) ? $this->get_args ( 'length' ) : 10; $MebSea = $this->get_args ( 'search' ); $MebSea = $MebSea ['value']; $page_size = $length; $con = ''; if ($status == 'ALL') $con = ' (status=1 or status=2 or status=3 or status=4) and isDelete=0 '; elseif ($status == 'PEND') $con = ' isDelete=0 and status=1'; elseif ($status == 'APPROVED') $con = ' isDelete=0 and status=2'; if ($invoiceType == 'ORDINARY') $con .= ' and invoiceType=0 '; elseif ($invoiceType == 'SPECIAL') $con .= ' and invoiceType=1 '; if ($invoiceTrain == 'ORDINARY') $con .= ' and trainId=0 '; elseif ($invoiceTrain == 'TRAIN') $con .= ' and trainId!=0 '; if ($invoiceTrainName != 'ALL') { $trainId = $XDeode->decode ( $invoiceTrainName ); if (is_numeric ( $trainId )) $con .= ' and trainId =' . $trainId; } $dateArr = explode ( ':', $date ); $D1 = $dateString = ''; $D2 = ''; if (! empty ( $date )) { $D1 = $dateArr [0]; if (isset ( $dateArr [1] )) $D2 = $dateArr [1]; else $D2 = ''; $dateString = $D1 . " : " . $D2; } if (! empty ( $D1 ) && ! empty ( $D2 )) $con .= ' and approvalTime BETWEEN "' . $D1 . '" AND "' . $D2 . '" '; elseif (! empty ( $D1 ) && empty ( $D2 )) $con .= ' and approvalTime like "%' . $D1 . '%" '; if (! empty ( $MebSea )) $con .= ' and ( invoiceTitle like "%' . $MebSea . '%" or invoiceCompany like "%' . $MebSea . '%" or invoicePrice like "%' . $MebSea . '%" or invoiceSerial like "%' . $MebSea . '%" )'; // / $pageinfo ['page'] = array ( 'previous' => '' ); $sql = ' ' . $con; $pageinfo = $this->get_page ( "CLD_invoice", $sql, $page, $page_size, "invoiceApprovalAchieve", '', "" ); $limit = $page . ',' . $page_size; $list = $invoice->getInvoiceByUntreadStatusPage ( $limit, $sql, 'desc', 2 ); $approvalList = array (); $html = ''; // 结算结束不能修改方式 Doo::loadModel ( 'receipt' ); $receipt = new receipt (); foreach ( $list as $key => $value ) { $irDetail = array (); // 结算方式 $receiptDetail = array (); if ($value ['trainId'] != 0) { $receiptDetail = $receipt->getReceiptByinvoiceTrainId ( $value ['trainId'] ); } if (! empty ( $receiptDetail )) { if ($receiptDetail ['status'] == 8 || $receiptDetail ['status'] == 9) { array_push ( $irDetail, '' ); } else { if ($value ['status'] == 1 && $value ['pendingApprovals'] == $this->staff [0] ['sid']) { array_push ( $irDetail, '审批发票' ); } elseif ($value ['status'] == 2) { array_push ( $irDetail, '结算方式' ); } else array_push ( $irDetail, '' ); } } else { if ($value ['status'] == 2) { array_push ( $irDetail, '结算方式' ); } else{ if ($value ['status'] == 1 && $value ['pendingApprovals'] == $this->staff [0] ['sid']) { array_push ( $irDetail, '审批发票' ); }else{ array_push ( $irDetail, '' ); } } } array_push ( $irDetail, '' . $value ['invoiceSerial'] . '' ); if ($value ['invoiceType'] == 1) array_push ( $irDetail, $value ['invoiceCompany'] ); else array_push ( $irDetail, $value ['invoiceTitle'] ); array_push ( $irDetail, $value ['TIN'] ); array_push ( $irDetail, $value ['address'] . $value ['phone'] ); array_push ( $irDetail, $value ['bank'] . $value ['bankAccount'] ); array_push ( $irDetail, $value ['remark'] ); array_push ( $irDetail, $value ['invoiceElement'] ); array_push ( $irDetail, $value ['invoiceQuantity'] ); array_push ( $irDetail, $value ['invoiceUnitPrice'] ); if ($value ['invoiceType'] == 1) { array_push ( $irDetail, '¥' . $value ['invoicePrice'] . '' ); } else { array_push ( $irDetail, '¥' . $value ['invoicePrice'] ); } if ($value ['settlementType'] == 0) { array_push ( $irDetail, '软件销售' ); } else { $itDetail = $invoiceTraining->getInvoiceTrainingByItid ( $value ['trainId'] ); array_push ( $irDetail, $itDetail ['trainName'] ); } array_push ( $irDetail, $value ['recipients'] . $value ['recipientsPhone'] ); array_push ( $irDetail, $value ['recipientsAddress'] ); array_push ( $irDetail, $value ['mailItems'] ); array_push ( $irDetail, $value ['userName'] . ' ' . $value ['date'] ); $fchtml = $value ['OL'] ['operation']; if (count ( $list ) == $page_size) $fchtml = $value ['OL'] ['operation'] . $html; // 最后的审批意见 array_push ( $irDetail, $fchtml ); if ($value ['status'] == 2) array_push ( $irDetail, '同意' . $value ['OL'] ['username'] . $value ['OL'] ['date'] ); elseif ($value ['status'] == 3) array_push ( $irDetail, '退回' . $value ['OL'] ['username'] . $value ['OL'] ['date'] ); elseif ($value ['status'] == 4) array_push ( $irDetail, '终止' . $value ['OL'] ['username'] . $value ['OL'] ['date'] ); else array_push ( $irDetail, '' ); array_push ( $approvalList, $irDetail ); } // $approvalListJson = json_encode ( $approvalList ); $recordsFiltered = $pageinfo ['total_data']; echo json_encode ( array ( "draw" => intval ( $draw ), "recordsTotal" => intval ( $pageinfo ['total_data'] ), "recordsFiltered" => intval ( $recordsFiltered ), "data" => $approvalList ), JSON_UNESCAPED_UNICODE ); } /** * 审批发票查看更多--重构 */ function invoiceApprovalAchieve() { $status = isset ( $this->params ['status'] ) ? $this->params ['status'] : 'ALL'; $invoiceType = $this->get_args ( 'invoiceType' ) ? $this->get_args ( 'invoiceType' ) : "ALL"; $invoiceTrain = $this->get_args ( 'invoiceTrain' ) ? $this->get_args ( 'invoiceTrain' ) : "ALL"; $invoiceTrainName = $this->get_args ( 'invoiceTrainName' ) ? $this->get_args ( 'invoiceTrainName' ) : "ALL"; $date = $this->get_args ( 'date' ) ? $this->get_args ( 'date' ) : ""; Doo::loadModel ( 'invoiceTraining' ); $invoiceTraining = new invoiceTraining (); $trainList = $invoiceTraining->getInvoiceTrainingBySubmitStatus (); $this->data ['trainList'] = $trainList; $this->data ['dateString'] = $date; $this->data ['status'] = $status; $this->data ['invoiceType'] = $invoiceType; $this->data ['invoiceTrain'] = $invoiceTrain; $this->data ['invoiceTrainName'] = $invoiceTrainName; $this->data ['memu'] = "invoice"; $this->data ['staff'] = $this->staff; $this->data ['receiptMemu'] = 'invoiceApproval'; $this->render ( "/admin/invoiceApprovalAchieve", $this->data ); } function invoiceTAchieve() { Doo::loadModel ( 'invoice' ); $invoice = new invoice (); Doo::loadClass ( 'XDeode' ); $XDeode = new XDeode ( 5 ); Doo::loadModel ( 'staff' ); $staff = new staff (); $MebSea = isset ( $this->params ['MebSea'] ) ? urldecode ( $this->params ['MebSea'] ) : ''; $page_size = 12; $page = isset ( $this->params ['page'] ) && is_numeric ( $this->params ['page'] ) ? $this->params ['page'] : 1; $date = isset ( $this->params ['date'] ) ? $this->params ['date'] : 'MONTHO'; $invoiceType = $this->get_args ( 'invoiceType' ) ? $this->get_args ( 'invoiceType' ) : "ALL"; $invoiceTrain = $this->get_args ( 'invoiceTrain' ) ? $this->get_args ( 'invoiceTrain' ) : "ALL"; $invoiceTrainName = $this->get_args ( 'invoiceTrainName' ) ? $this->get_args ( 'invoiceTrainName' ) : "ALL"; Doo::loadModel ( 'invoiceTraining' ); $invoiceTraining = new invoiceTraining (); $trainList = $invoiceTraining->getInvoiceTrainingBySubmitStatus (); $get = "/" . $date; $con = ''; if ($date == 'MONTHO') $con = ' and updateTime>DATE_SUB(CURDATE(), INTERVAL 1 MONTH)'; elseif ($date == 'MONTHT') $con = ' and updateTime>DATE_SUB(CURDATE(), INTERVAL 3 MONTH)'; elseif ($date == 'MONTHY') $con = ' and YEAR(updateTime) = YEAR(NOW())'; // $con = ' and updateTime>DATE_SUB(CURDATE(), INTERVAL 1 YEAR)'; if ($invoiceType == 'ORDINARY') $con .= ' and invoiceType=0 '; elseif ($invoiceType == 'SPECIAL') $con .= ' and invoiceType=1 '; if ($invoiceTrain == 'ORDINARY') $con .= ' and trainId=0 '; elseif ($invoiceTrain == 'TRAIN') $con .= ' and trainId!=0 '; if ($invoiceTrainName != 'ALL') { $trainId = $XDeode->decode ( $invoiceTrainName ); if (is_numeric ( $trainId )) $con .= ' and trainId =' . $trainId; } if (! empty ( $MebSea )) { $con .= ' and ( invoiceTitle like "%' . $MebSea . '%" or invoiceCompany like "%' . $MebSea . '%" or invoicePrice like "%' . $MebSea . '%" )'; $get .= "/" . $MebSea; } $pageinfo ['page'] = array ( 'previous' => '' ); $sql = ""; $action = ""; if ($this->ACTION == 'invoicePrintAchieve') { $sql = "status=2 and printStatus=1 and moldManage like '%[\"" . $this->staff [0] ['sid'] . "\",%'" . $con; $action = "invoicePrintAchieve"; } elseif ($this->ACTION == 'invoicePostAchieve') { // and untreadStatus=0 $sql = "postStatus=1 and doPost=1 and status=2 and isDelete=0" . $con; $action = "invoicePostAchieve"; } elseif ($this->ACTION == 'invoiceUntreadAchieve') { // printStatus=1 and $sql = " untreadStatus=2 and status=2 " . $con; $action = "invoiceUntreadAchieve"; } $pageinfo = $this->get_page ( "CLD_invoice", $sql, $page, $page_size, $action, $get, "" ); $limit = $pageinfo ['lower'] . ',' . $page_size; $this->data ['MebSeaEn'] = $MebSea; $this->data ['MebSea'] = urlencode ( $MebSea ); $this->data ['get'] = $get; $this->data ['page'] = $pageinfo; $this->data ['trainList'] = $trainList; $this->data ['invoiceType'] = $invoiceType; $this->data ['invoiceTrain'] = $invoiceTrain; $this->data ['invoiceTrainName'] = $invoiceTrainName; $this->data ['date'] = $date; $this->data ['memu'] = "invoice"; $this->data ['staff'] = $this->staff; if ($this->ACTION == 'invoicePrintAchieve') { $list = $invoice->getInvoiceByUntreadStatusPage ( $limit, $sql, 'desc', 5 ); $this->data ['receiptMemu'] = 'invoicePrint'; $this->data ['list'] = $list; $this->render ( "/admin/invoicePrintAchieve", $this->data ); } elseif ($this->ACTION == 'invoicePostAchieve') { $list = $invoice->getInvoiceByUntreadStatusPage ( $limit, $sql ); Doo::loadModel ( 'express' ); $express = new express (); $expressList = $express->getExpressByAll (); $this->data ['expressList'] = $expressList; $this->data ['receiptMemu'] = 'invoicePost'; $this->data ['list'] = $list; $this->render ( "/admin/invoicePostAchieve", $this->data ); } elseif ($this->ACTION == 'invoiceUntreadAchieve') { $list = $invoice->getInvoiceByUntreadStatusPage ( $limit, $sql,'desc','desc','untreadTime' ); $this->data ['receiptMemu'] = 'invoiceUntread'; $this->data ['list'] = $list; $this->render ( "/admin/invoiceUntreadAchieve", $this->data ); } } /** * 公司应收款 */ function invoiceAggregateCompanyDetail() { $sidKey = $this->get_args ( 'sidKey' ) ? $this->get_args ( 'sidKey' ) : ''; $cidKey = $this->get_args ( 'cidKey' ) ? $this->get_args ( 'cidKey' ) : ''; $year = $this->get_args ( 'year' ) ? $this->get_args ( 'year' ) : 'ALL'; $month = $this->get_args ( 'month' ) ? $this->get_args ( 'month' ) : ""; $invoiceElement = $this->get_args ( 'invoiceElement' ) ? $this->get_args ( 'invoiceElement' ) : ""; $titleORno = $this->get_args ( 'titleORno' ) ? $this->get_args ( 'titleORno' ) : ""; Doo::loadClass ( 'XDeode' ); $XDeode = new XDeode ( 5 ); Doo::loadModel ( 'invoice' ); $invoice = new invoice (); Doo::loadModel ( 'staff' ); $staff = new staff (); Doo::loadModel ( "invoiceCompanyManage" ); $invoiceCompanyManage = new invoiceCompanyManage (); Doo::loadModel ( 'L_category' ); $category = new L_category (); $sid = ''; if (! empty ( $sidKey )) { $sid = $XDeode->decode ( $sidKey ); } $staffDetail = $staff->getStaffBySid ( $sid ); $cid = ''; if (! empty ( $cidKey )) { $cid = $XDeode->decode ( $cidKey ); } $imcStaff = $invoiceCompanyManage->getInvoiceCMByStaff ( $this->staff [0] ['sid'] ); $cidList = array (); foreach ( $imcStaff as $key => $value ) { array_push ( $cidList, $value ['cid'] ); } $categoryList = $category->getCategoryInCid ( implode ( ',', $cidList ) ); $cidString = implode ( ',', $cidList ); if (empty ( $cid )) $staffList = $staff->getStaffInCid ( $cidString ); else $staffList = $staff->getStaffByCidAll ( $cid ); // //$MebSea = $this->get_args ( 'MebSea' ) ? $this->get_args ( 'MebSea' ) : ""; $page_size = 25; $page = isset ( $this->params ['page'] ) && is_numeric ( $this->params ['page'] ) ? $this->params ['page'] : 1; $status = isset ( $this->params ['status'] ) ? $this->params ['status'] : 'All'; $con = ' status=2 and untreadStatus!=2 and invalid=0 and isDelete=0 and badDebt=0 '; $statisticsCon = ''; if (! empty ( $year ) && is_numeric ( $year )) $con .= ' and Year(printTime)=' . $year . ''; if (! empty ( $month ) && is_numeric ( $month )) $con .= ' and Month(printTime)="' . $month . '" '; if ($status == 'UNRECORD') $con .= ' and printStatus=1 and untreadStatus=0'; elseif ($status == 'RECORD') $con .= ' and printStatus=1 and untreadStatus=3'; elseif ($status == 'BOUNCED') $con .= ' and untreadStatus=2'; elseif ($status == 'PARTRECORD') $con .= ' and untreadStatus=0 and printStatus=1 and irid!=""'; elseif ($status == 'All') { $con .= ' and printStatus=1 and ( untreadStatus=0 or untreadStatus=3 )'; } if (! empty ( $sid ) && is_numeric ( $sid )) $con .= ' and sid=' . $sid; if (! empty ( $cid ) && is_numeric ( $cid )) $con .= ' and cid=' . $cid; else $con .= ' and cid in (' . $cidString . ')'; // 开票内容筛选 if (! empty ( $invoiceElement ) && $invoiceElement != 'ALL') { $con .= ' and invoiceElement="' . $invoiceElement . '"'; } $get = "/" . $status . "?cidKey=" . $cidKey . "&sidKey=" . $sidKey . "&year=" . $year . "&month=" . $month . "&invoiceElement=" . $invoiceElement."&titleORno=".urlencode ( $titleORno ); if (! empty ( $titleORno )) { $con .= ' and ( invoiceTitle like "%' . $titleORno . '%" or invoiceCompany like "%' . $titleORno . '%" or invoiceNo like "%'.$titleORno.'%" )'; } $pageinfo ['page'] = array ( 'previous' => '' ); $pageinfo = $this->get_page ( "CLD_invoice", $con, $page, $page_size, "invoiceAggregateCompanyDetail", $get, "" ); $limit = $pageinfo ['lower'] . ',' . $page_size; // 应收款合计 $ics = $invoice->getInvoiceCompanyStatistics ( $con ); //,'desc','desc','printTime' $list = $invoice->getInvoiceByUntreadStatusPage ( $limit, $con ); $totalPrice=array('invoicePrice'=>0.00,'receivePrice'=>0.00,'receivablesPrice'=>0.00); foreach ($list as $key=>$value){ $totalPrice['invoicePrice']=bcadd($totalPrice['invoicePrice'], $value['invoicePrice'],2); if($value['sumPrice']!=0){ $totalPrice['receivePrice']=bcadd($totalPrice['receivePrice'], $value['sumPrice'],2); } if($value['diffPrice']!=0){ $totalPrice['receivablesPrice']=bcadd($totalPrice['receivablesPrice'], $value['diffPrice'],2); } } $this->data ['totalPrice'] = $totalPrice; $monthHtml = ""; if ($year != "ALL") { for($i = 1; $i <= 12; $i ++) { if ($i == $month) $monthHtml .= ''; else $monthHtml .= ''; } } $this->data ['monthHtml'] = $monthHtml; $this->data ['year'] = $year; $this->data ['month'] = $month; $this->data ['ics'] = $ics; $this->data ['cidKey'] = $cidKey; $this->data ['sid'] = $sid; $this->data ['staffDetail'] = $staffDetail; $this->data ['staffList'] = $staffList; $this->data ['titleORnoEn'] = $titleORno; $this->data ['titleORno'] = urlencode ( $titleORno ); $this->data ['invoiceDetail'] = array ( 'invoiceElement' => $invoiceElement ); $this->data ['page'] = $pageinfo; $this->data ['get'] = $get; $this->data ['list'] = $list; $this->data ['status'] = $status; $this->data ['categoryList'] = $categoryList; $this->data ['memu'] = "invoice"; $this->data ['staff'] = $this->staff; $this->data ['receiptMemu'] = 'invoiceAggregateCompanyDetail'; $this->render ( "/admin/invoiceAggregateCompanyDetail", $this->data ); } /** * 获取一条收款信息 */ function ajaxGetInvoiceReceivables() { $irid = $this->get_args ( 'key' ) ? $this->get_args ( 'key' ) : ""; Doo::loadModel ( 'invoiceReceivables' ); $invoiceReceivables = new invoiceReceivables (); $detail = $invoiceReceivables->getInvoiceReceivablesByIrid ( $irid ); echo json_encode ( array ( 'status' => 1, 'detail' => $detail ) ); } /** * 异步获取办事处用户 */ function ajaxGetStaffByCategory() { $cid = $this->get_args ( 'cid' ) ? $this->get_args ( 'cid' ) : ""; Doo::loadModel ( 'staff' ); $staff = new staff (); if ($cid == "PUBLIC") { echo json_encode ( array ( 'status' => 1, 'html' => '' ) ); die (); } if (! is_numeric ( $cid )) { echo json_encode ( array ( 'status' => 0, 'msg' => 'illegal request' ) ); die (); } $staffList = $staff->getStaffByCid ( $cid ); $html = ''; foreach ( $staffList as $key => $value ) { $html .= ''; } echo json_encode ( array ( 'status' => 1, 'html' => $html ) ); } /** * 异步获取一条发票的邮寄信息 */ function ajaxGetInvoicePostDetail() { $iid = $this->get_args ( 'iidKey' ) ? $this->get_args ( 'iidKey' ) : ""; Doo::loadModel ( 'invoice' ); $invoice = new invoice (); $iid = $invoice->authcode ( $iid ); Doo::loadModel ( 'express' ); $express = new express (); $expressList = $express->getExpressByAll (); if (! is_numeric ( $iid )) { echo json_encode ( array ( 'status' => 0, 'msg' => 'illegal request' ) ); die (); } $select = "iid,recipients,recipientsPhone,recipientsAddress,mailItems,expressCompany,expressNumber,actualItems"; $invoiceDetail = $invoice->getInvoiceByIid ( $iid, $select ); $html = ""; foreach ( $expressList as $key => $value ) { if ($value ['company'] == $invoiceDetail ['expressCompany']) $html .= ''; else $html .= ''; } $invoiceDetail ['eaHtml'] = $html; echo json_encode ( array ( 'status' => 1, 'invoiceDetail' => $invoiceDetail ) ); } /** * * @deprecated --需求变更 废弃 function ajaxCompareClaimPrice() { $irid = $this->get_args ( 'irid' ) ? $this->get_args ( 'irid' ) : ""; $invoiceKey = $this->get_args ( 'invoiceKey' ) ? $this->get_args ( 'invoiceKey' ) : ""; Doo::loadModel ( 'invoice' ); $invoice = new invoice (); Doo::loadModel ( 'invoiceReceivables' ); $invoiceReceivables = new invoiceReceivables (); Doo::loadModel ( 'invoiceOperationLog' ); $invoiceOperationLog = new invoiceOperationLog (); $detail = $invoice->getInvoiceByIid ( $invoiceKey ); $detailM = $invoiceReceivables->getInvoiceReceivablesByIrid ( $irid ); if (empty ( $detail ) || empty ( $detailM )) { echo json_encode ( array ( 'status' => 2, 'msg' => '非法请求,请重新登录' ) ); die (); } $iridString = ""; if (empty ( $detail ['irid'] )) $iridString = $detailM ['irid']; else $iridString = $detail ['irid'] . ',' . $detailM ['irid']; $item = array ( 'irid' => $iridString, 'bindTime' => date ( "Y-m-d H:i:s" ), 'updateTime' => date ( "Y-m-d H:i:s" ), 'iid' => $detail ['iid'] ); $invoice->setInvoiceByCondition ( $item ); // 操作日志 $item = array ( 'date' => date ( "Y-m-d H:i:s" ), 'operation' => "收款入账" . $detailM ['receivablesSerial'] . "到发票" . $detail ['invoiceSerial'], 'status' => 8, 'img' => $this->staff [0] ['avatar'], 'username' => $this->staff [0] ['username'], 'uid' => $this->staff [0] ['sid'], 'category' => $this->staff [0] ['category'], 'iid' => $detail ['iid'] ); $invoiceOperationLog->setInvoiceOperationLog ( $item ); $item = array ( 'iid' => $detail ['iid'], 'irid' => $detailM ['irid'], 'bindDate' => date ( "Y-m-d H:i:s" ), 'bindStatus' => 1 ); $invoiceReceivables->setInvoiceReceivablesByCondition ( $item ); $price = 0; $priceStatus = 0; $isReceivables = 0; $invoiceReceivables = new invoiceReceivables (); $list = $invoiceReceivables->getInvoiceReceivablesInIridString ( $iridString ); if (! empty ( $list )) $isReceivables = 1; $receivablesPrice = 0; foreach ( $list as $key => $value ) { $receivablesPrice += $value ['receivablesPrice']; } if ($receivablesPrice > $detail ['invoicePrice']) { $price = $receivablesPrice - $detail ['invoicePrice']; $priceStatus = 1; } elseif ($receivablesPrice < $detail ['invoicePrice']) { $price = $detail ['invoicePrice'] - $receivablesPrice; $priceStatus = 2; } echo json_encode ( array ( 'status' => 1, 'html' => '¥' . $detailM ['receivablesPrice'] . '' . $detailM ['receivablesMessage'] . '' . $detailM ['receivablesBank'] . ' ' . $detailM ['receivablesDate'] . '移除 ', 'price' => $price, 'priceStatus' => $priceStatus, 'isReceivables' => $isReceivables ) ); } */ /** * * @deprecated 从发票中移除已经入账的收款 --需求变更 废弃 function ajaxReceivablesRemove() { $iridKey = $this->get_args ( 'key' ) ? $this->get_args ( 'key' ) : ""; $invoiceKey = $this->get_args ( 'invoiceKey' ) ? $this->get_args ( 'invoiceKey' ) : ""; Doo::loadModel ( 'invoice' ); $invoice = new invoice (); Doo::loadModel ( 'invoiceReceivables' ); $invoiceReceivables = new invoiceReceivables (); Doo::loadModel ( 'invoiceOperationLog' ); $invoiceOperationLog = new invoiceOperationLog (); $detail = $invoice->getInvoiceByIid ( $invoiceKey ); $detailM = $invoiceReceivables->getInvoiceReceivablesByIrid ( $iridKey ); // echo $detail['irid']."
"; $invoiceIrid = explode ( ",", $detail ['irid'] ); foreach ( $invoiceIrid as $key => $value ) { if ($value == $detailM ['irid']) unset ( $invoiceIrid [$key] ); } $invoiceIrid = implode ( ",", $invoiceIrid ); // echo $invoiceIrid."ddd"; // print_r($invoiceIrid); $item = array ( 'irid' => $invoiceIrid, 'iid' => $detail ['iid'] ); $invoice->setInvoiceByCondition ( $item ); $item = array ( 'iid' => 0, 'irid' => $detailM ['irid'], 'bindDate' => '', 'bindStatus' => 0 ); $invoiceReceivables->setInvoiceReceivablesByCondition ( $item ); // 操作日志 $item = array ( 'date' => date ( "Y-m-d H:i:s" ), 'operation' => "收款移除" . $detailM ['receivablesSerial'], 'status' => 10, 'img' => $this->staff [0] ['avatar'], 'username' => $this->staff [0] ['username'], 'uid' => $this->staff [0] ['sid'], 'category' => $this->staff [0] ['category'], 'iid' => $detail ['iid'] ); $invoiceOperationLog->setInvoiceOperationLog ( $item ); $price = 0; $priceStatus = 0; $isReceivables = 0; $invoiceReceivables = new invoiceReceivables (); $list = $invoiceReceivables->getInvoiceReceivablesInIridString ( $invoiceIrid ); if (! empty ( $list )) $isReceivables = 1; $receivablesPrice = 0; foreach ( $list as $key => $value ) { $receivablesPrice += $value ['receivablesPrice']; } if ($receivablesPrice > $detail ['invoicePrice']) { $price = $receivablesPrice - $detail ['invoicePrice']; $priceStatus = 1; } elseif ($receivablesPrice < $detail ['invoicePrice']) { $price = $detail ['invoicePrice'] - $receivablesPrice; $priceStatus = 2; } echo json_encode ( array ( 'status' => 1, 'html' => ' ¥' . $detailM ['receivablesPrice'] . ' ' . $detailM ['receivablesMessage'] . ' ' . $detailM ['receivablesBank'] . ' ' . $detailM ['receivablesDate'] . ' 入账 ', 'price' => $price, 'priceStatus' => $priceStatus, 'isReceivables' => $isReceivables ) ); } */ /** * 我的收款中 选择哪个发票入账,进行金额判断 */ function ajaxCompareInvoicePrice() { $claimKey = $this->get_args ( 'claimKey' ) ? $this->get_args ( 'claimKey' ) : ""; $invoiceKey = $this->get_args ( 'invoiceKey' ) ? $this->get_args ( 'invoiceKey' ) : ""; Doo::loadModel ( 'invoice' ); $invoice = new invoice (); Doo::loadModel ( 'invoiceReceivables' ); $invoiceReceivables = new invoiceReceivables (); $detail = $invoice->getInvoiceByIid ( $invoiceKey ); $keyList = explode ( ';', $claimKey ); $receivablesPrice = 0; foreach ( $keyList as $key => $value ) { $detailM = $invoiceReceivables->getInvoiceReceivablesByIrid ( $value ); $receivablesPrice += $detailM ['receivablesPrice']; } if ($receivablesPrice > $detail ['invoicePrice']) { $price = $receivablesPrice - $detail ['invoicePrice']; echo json_encode ( array ( 'status' => 1, 'price' => $price ) ); } else echo json_encode ( array ( 'status' => 2 ) ); } /** * 获得打印发票 */ function ajaxGetInvoiceInfoByPrint() { $serial = $this->get_args ( 'serial' ) ? $this->get_args ( 'serial' ) : ""; if (empty ( $serial )) { echo json_encode ( array ( 'status' => 2, 'msg' => 'illegal request' ) ); die (); } Doo::loadModel ( 'invoice' ); $invoice = new invoice (); Doo::loadModel ( 'invoiceOperationLog' ); $invoiceOperationLog = new invoiceOperationLog (); $detail = $invoice->getInvoiceByIsid ( $serial, $this->staff [0] ['sid'] ); $invoiceOperationLogList = $invoiceOperationLog->getInvoiceOperationLogByIid ( $detail ['iid'] ); Doo::loadModel ( 'invoicePaper' ); $invoicePaper = new invoicePaper (); $invoicePaperList = $invoicePaper->getInvoicePaperByInvoiceType ( $detail ['invoiceType'] ); if (empty ( $detail )) $html = ''; else { $html = '
'; } echo json_encode ( array ( 'status' => 1, 'html' => $html ) ); die (); } /** * @ 获得与我有关收款数据 --需求变更 废弃 function ajaxGetReceivalblesByStaff() { $iid = $this->get_args ( 'key' ) ? $this->get_args ( 'key' ) : ""; Doo::loadModel ( 'invoiceReceivables' ); $invoiceReceivables = new invoiceReceivables (); Doo::loadModel ( 'invoice' ); $invoice = new invoice (); $detail = $invoice->getInvoiceByIid ( $iid ); $list = $invoiceReceivables->getInvoiceReceivablesByClaim ( $this->staff [0] ['cid'], $this->staff [0] ['sid'] ); $html = ""; $i = 1; foreach ( $list ['myClaim'] as $key => $value ) { $html .= ' ¥' . $value ['receivablesPrice'] . ' ' . $value ['receivablesMessage'] . ' ' . $value ['receivablesBank'] . ' ' . $value ['receivablesDate'] . ''; $html .= ' 入账 '; $i ++; } $html2 = ""; $list2 = $invoiceReceivables->getInvoiceReceivablesByIid ( $iid, 1 ); foreach ( $list2 as $key => $value ) { $html2 .= ' ¥' . $value ['receivablesPrice'] . ' ' . $value ['receivablesMessage'] . ' ' . $value ['receivablesBank'] . ' ' . $value ['receivablesDate'] . ''; $html2 .= ' 移除 '; $i ++; } $price = 0; $priceStatus = 0; $isReceivables = 0; $list = $invoiceReceivables->getInvoiceReceivablesInIridString ( $detail ['irid'] ); if (! empty ( $list )) $isReceivables = 1; $receivablesPrice = 0; foreach ( $list as $key => $value ) { $receivablesPrice += $value ['receivablesPrice']; } if ($receivablesPrice > $detail ['invoicePrice']) { $price = $receivablesPrice - $detail ['invoicePrice']; $priceStatus = 1; } elseif ($receivablesPrice < $detail ['invoicePrice']) { $price = $detail ['invoicePrice'] - $receivablesPrice; $priceStatus = 2; } echo json_encode ( array ( 'status' => 1, 'html' => $html, 'html2' => $html2, 'price' => $price, 'priceStatus' => $priceStatus, 'isReceivables' => $isReceivables ) ); } */ function ajaxGetInvoiceInfoByType() { $type = $this->get_args ( 'type' ) ? $this->get_args ( 'type' ) : ""; $serial = $this->get_args ( 'serial' ) ? $this->get_args ( 'serial' ) : ""; $loss = $this->get_args ( 'loss' ) ? $this->get_args ( 'loss' ) : false; // include Doo::conf()->BASE_PATH.'diagnostic/debug.php'; if (empty ( $serial )) { echo json_encode ( array ( 'status' => 2, 'msg' => 'illegal request' ) ); die (); } if ($type == 'INVOICE') { Doo::loadModel ( 'invoice' ); $invoice = new invoice (); Doo::loadModel ( 'invoiceOperationLog' ); $invoiceOperationLog = new invoiceOperationLog (); $detail = $invoice->getInvoiceByIsid ( $serial, $this->staff [0] ['sid'] ); $invoiceOperationLogList = $invoiceOperationLog->getInvoiceOperationLogByIid ( $detail ['iid'] ); if (empty ( $detail )) $html = ''; else { $html = ' '; } echo json_encode ( array ( 'status' => 1, 'html' => $html ) ); die (); } elseif ($type == 'RECEIVABLES') { Doo::loadModel ( 'invoiceReceivables' ); $invoiceReceivables = new invoiceReceivables (); Doo::loadModel ( 'invoiceRefund' ); $invoiceRefund = new invoiceRefund (); $detail = $invoiceReceivables->getInvoiceReceivablesByIrsid ( $serial ); $ireList = $invoiceRefund->getInvoiceRefundIrid ( $detail ['irid'] ); if (empty ( $detail )) $html = ''; else { $html = ''; } echo json_encode ( array ( 'status' => 1, 'html' => $html ) ); die (); } elseif ($type == 'IRTC') { Doo::loadModel ( 'invoice' ); $invoice = new invoice (); Doo::loadModel ( 'invoiceOperationLog' ); $invoiceOperationLog = new invoiceOperationLog (); // Doo::loadModel ( 'invoiceReceivables' ); // $invoiceReceivables = new invoiceReceivables (); $detail = $invoice->getInvoiceByIsid ( $serial, $this->staff [0] ['sid'] ); $invoiceOperationLogList = $invoiceOperationLog->getInvoiceOperationLogByIid ( $detail ['iid'] ); if (empty ( $detail )) $html = ''; else { $receivablesPriceedHtml = ''; $receivablesPrice = $detail ['invoicePrice']; if (! empty ( $detail ['irid'] )) { // $irList = $invoiceReceivables->getInvoiceReceivablesInIridString ( $detail ['irid'] ); // if (empty ( $irList )) // $irList [0] ['sumPrice'] = 0; // $balance = $detail ['invoicePrice'] - $irList [0] ['sumPrice']; $enteredPrice=$detail ['invoicePrice']-$detail ['invoiceBalance']; $receivablesPriceedHtml = '
已入账金额¥' . $enteredPrice . ' 剩余入账金额¥' . $detail ['invoiceBalance'] . '
'; $receivablesPrice = $detail ['invoiceBalance']; } if ($loss) $detail ['invoicePrice'] = - $detail ['invoicePrice']; $html = $receivablesPriceedHtml . '
开票流水号' . $detail ['invoiceSerial'] . ' 提交时间' . $detail ['date'] . '
所在办事处' . $detail ['categoryName'] . '(' . $detail ['userName'] . ') 开票内容' . $detail ['invoiceElement'] . '
发票备注' . $detail ['remark'] . '
数量' . $detail ['invoiceQuantity'] . ' 单价¥' . $detail ['invoiceUnitPrice'] . '
开票金额¥' . $detail ['invoicePrice'] . '
'; if ($detail ['invoiceType'] == 0) { $html .= ''; $receivablesMessage = $detail ['invoiceTitle']; } else { $html .= '
增值税普通发票'; if($detail ['invoiceForm']==1){ $html .= '( 电子发票 )'; } $html.='
发票抬头' . $detail ['invoiceTitle'] . ' 纳税人识别码' . $detail ['TIN'] . '
'; $receivablesMessage = $detail ['invoiceCompany']; } $html .= '
增值税专用发票'; if($detail ['invoiceForm']==1){ $html .= '( 电子发票 )'; } $html .= '
单位名称' . $detail ['invoiceCompany'] . ' 纳税人识别码' . $detail ['TIN'] . '
注册地址' . $detail ['address'] . ' 注册电话' . $detail ['phone'] . '
开户银行' . $detail ['bankAccount'] . ' 银行账号' . $detail ['bank'] . '
'; if ($detail ['doPost'] == 1) $html .= '
邮寄信息
收件人' . $detail ['recipients'] . ' 收件人手机/电话' . $detail ['recipientsPhone'] . '
收件地址' . $detail ['recipientsAddress'] . '
邮寄物品' . $detail ['mailItems'] . '
'; if (! empty ( $invoiceOperationLogList )) { $html .= '
审批流程
'; foreach ( $invoiceOperationLogList as $key => $value ) { if ($value ['status'] == 1 || $value ['status'] == 2 || $value ['status'] == 3 || $value ['status'] == 4) { $html .= '

' . $value ['date'] . '  ' . $value ['category'] . '-' . $value ['username'] . ' '; if ($value ['status'] == 2) { $html .= '同意'; } elseif ($value ['status'] == 3) { $html .= '退回'; } elseif ($value ['status'] == 5) { $html .= '打印'; } $html .= $value ['operation'] . '

'; } } $html .= '
'; } } echo json_encode ( array ( 'status' => 1, 'html' => $html, 'receivablesPrice' => $receivablesPrice, 'receivablesMessage' => $receivablesMessage, 'receivablesDate' => date ( "Y-m-d" ), 'iidKey' => $serial ) ); die (); } } function ajaxGetInvoiceReceivablesByStaff() { $postData = $this->get_args ( 'postData' ) ? $this->get_args ( 'postData' ) : ""; if (empty ( $postData )) { echo json_encode ( array ( 'status' => 2, 'msg' => 'illegal request' ) ); die (); } Doo::loadModel ( 'invoiceReceivables' ); $invoiceReceivables = new invoiceReceivables (); $detail = $invoiceReceivables->getInvoiceReceivablesByIrid ( $postData ); if (empty ( $detail )) { echo json_encode ( array ( 'status' => 2, 'msg' => 'illegal request' ) ); die (); } Doo::loadModel ( 'L_category' ); $lCategory = new L_category (); Doo::loadModel ( 'staff' ); $staff = new staff (); $staffList = $staff->getStaffByCid ( $detail ['cid'] ); $category = $lCategory->getCategory (); $categoryHtml = ''; $staffHtml = ''; foreach ( $category as $key => $value ) { $categoryHtml .= ''; if ($value ['cid'] == $detail ['cid']) $categoryHtml .= ''; } foreach ( $staffList as $key => $value ) { $staffHtml .= ''; if ($value ['sid'] == $detail ['sid']) $staffHtml .= ''; } $rbankHtml = ''; echo json_encode ( array ( 'status' => 1, 'categoryHtml' => $categoryHtml, 'staffHtml' => $staffHtml, 'rbankHtml' => $rbankHtml, 'detail' => $detail ) ); } function ajaxGetInvoiceReceivablesByIrid() { $irid = $this->get_args ( 'irid' ) ? $this->get_args ( 'irid' ) : ""; if (empty ( $irid )) { echo json_encode ( array ( 'status' => 2, 'msg' => 'illegal request' ) ); die (); } Doo::loadModel ( 'invoiceReceivables' ); $invoiceReceivables = new invoiceReceivables (); Doo::loadModel ( 'invoice' ); $invoice = new invoice (); $detail = $invoiceReceivables->getInvoiceReceivablesByIrid ( $irid ); // 入账完成 待定 and postStatus=1 $flag = true; $invoiceDetail = $invoice->getInvoiceByTitle ( $detail ['recepitTitleMark'], 'EXACTLY', " and status=2 and printStatus=1 and untreadStatus=0 ", $flag ); // $bakDetail = array (); if ($flag === false) { array_push ( $bakDetail, $invoiceDetail ); $invoiceDetail = $bakDetail; } $receivablesHtml = '
收款金额银行到账信息银行/到账时间收款认领开票单位
¥' . $detail ['receivablesPrice'] . ' ' . $detail ['receivablesMessage'] . ' ' . $detail ['receivablesBank'] . '
' . $detail ['receivablesDate'] . '
' . $detail ['title'] . '-' . $detail ['username'] . '
' . $detail ['confirmTime'] . '
' . $detail ['recepitTitleMark'] . '
'; $isInvoice = false; $invoiceHtml = ''; if (empty ( $invoiceDetail )) { $isInvoice = true; } else { $invoiceHtml = ''; foreach ( $invoiceDetail as $key => $value ) { $invoiceHtml .= ''; if (! empty ( $value ['invoiceType'] )) { $invoiceHtml .= ''; } else { $invoiceHtml .= ''; } if (! empty ( $value ['invoiceType'] )) { $invoiceHtml .= ''; } else { $invoiceHtml .= ''; } $invoiceHtml .= ' '; $irList = $invoiceReceivables->getInvoiceReceivablesInIridString ( $value ['irid'] ); if (empty ( $irList )) $irList [0] ['sumPrice'] = 0; $balance = $value ['invoicePrice'] - $irList [0] ['sumPrice']; $priceString = ''; if ($balance < $detail ['receivablesPrice']) { $priceString = '收款金额超过开票金额,'; } if ($balance > $detail ['receivablesPrice']) { $priceString = '收款金额低于开票金额,'; } } $invoiceHtml .= ' '; $invoiceHtml .= '
开票单位(抬头)开票金额提交开票出票开票流水号入账
' . $value ['invoiceCompany'] . '' . $value ['invoiceTitle'] . '' . $value ['invoicePrice'] . '专' . $value ['invoicePrice'] . '' . $value ['categoryName'] . $value ['userName'] . ' ' . $value ['date'] . ' ' . $value ['printer'] . ' ' . $value ['printTime'] . ' ' . $value ['invoiceSerial'] . '入账
'; } echo json_encode ( array ( 'status' => 1, 'irkey' => $detail ['iridEn'], 'receivablesHtml' => $receivablesHtml, 'isInvoice' => $isInvoice, 'invoiceHtml' => $invoiceHtml ) ); } function ajaxGetInvoiceReceivablesByTitle() { $title = $this->get_args ( 'title' ) ? $this->get_args ( 'title' ) : ""; if (empty ( $title )) { echo json_encode ( array ( 'status' => 2, 'msg' => 'illegal request' ) ); die (); } Doo::loadModel ( 'invoice' ); $invoice = new invoice (); $invoiceDetail = $invoice->getInvoiceByTitle ( $title, 'FUZZY', " and status=2 and printStatus=1 and untreadStatus=0 and (irid='' or irid is null) ", true ); $invoiceHtml = ''; if (! empty ( $invoiceDetail )) { $invoiceHtml = ''; foreach ( $invoiceDetail as $key => $value ) { if (! empty ( $value ['invoiceType'] )) { $invoiceHtml .= ''; } else { $invoiceHtml .= ''; } if (! empty ( $value ['invoiceType'] )) { $invoiceHtml .= ''; } else { $invoiceHtml .= ''; } $invoiceHtml .= ' '; } $invoiceHtml .= '
开票单位(抬头)开票金额提交开票出票开票流水号入账
' . $value ['invoiceCompany'] . '' . $value ['invoiceTitle'] . '' . $value ['invoicePrice'] . '专' . $value ['invoicePrice'] . '' . $value ['categoryName'] . $value ['userName'] . ' ' . $value ['date'] . ' ' . $value ['printer'] . ' ' . $value ['printTime'] . ' ' . $value ['invoiceSerial'] . '入账
'; } echo json_encode ( array ( 'status' => 1, 'invoiceHtml' => $invoiceHtml ) ); } function ajaxInvoicePushNotice() { Doo::loadModel ( 'invoice' ); $invoice = new invoice (); $approval = $invoice->getOne ( array ( 'where' => 'status=1 and pendingApprovals=' . $this->staff [0] ['sid'], 'desc' => 'iid', 'asArray' => true ) ); $isNotice = false; if (! empty ( $approval )) $isNotice = true; $response = array ( 'error' => 0, 'isNotice' => $isNotice ); echo json_encode ( $response ); exit (); } public function ajaxCheckInvoiceNoUniqueness() { $invoiceNo = $this->get_args ( 'invoiceNo' ) ? $this->get_args ( 'invoiceNo' ) : ""; Doo::loadModel ( 'invoice' ); $invoice = new invoice (); if (! empty ( $invoiceNo )) { Doo::loadModel ( 'invoicePaper' ); $invoicePaper = new invoicePaper (); Doo::loadClass ( 'XDeode' ); $XDeode = new XDeode ( 5 ); $ipid = $XDeode->decode ( $invoiceNo ); $paperDetail = $invoicePaper->getInvoicePaperByIpid ( $ipid ); $info = $invoice->getOne ( array ( 'where' => "invoiceNo = '" . $paperDetail ['invoiceNo'] . "'", 'asArray' => TRUE ) ); if (! empty ( $info )) { echo json_encode ( array ( 'error' => '发票号已存在' ) ); die (); } else echo json_encode ( array ( 'ok' => '可以使用!' ) ); die (); } } function ajaxCheckInvoicePrice() { $receivablesPrice = $this->get_args ( 'receivablesPrice' ) && is_numeric ( $this->get_args ( 'receivablesPrice' ) ) ? $this->get_args ( 'receivablesPrice' ) : ""; $iidKey = $this->get_args ( 'iidKey' ) ? $this->get_args ( 'iidKey' ) : ""; Doo::loadModel ( 'invoice' ); $invoice = new invoice (); Doo::loadModel ( 'invoiceReceivables' ); $invoiceReceivables = new invoiceReceivables (); Doo::loadClass ( 'XDeode' ); $XDeode = new XDeode ( 5 ); if (! empty ( $receivablesPrice ) && ! empty ( $iidKey )) { $iidKey = $XDeode->decode ( $iidKey ); $info = $invoice->getInvoiceByIid ( $iidKey ); $irList = $invoiceReceivables->getInvoiceReceivablesInIridString ( $info ['irid'] ); if (empty ( $irList )) $irList [0] ['sumPrice'] = 0; $balance = $info ['invoicePrice'] - $irList [0] ['sumPrice']; if ($balance < $receivablesPrice) { echo json_encode ( array ( 'error' => '收款金额超过开票金额。' ) ); die (); } if ($balance > $receivablesPrice) { echo json_encode ( array ( 'error' => '收款金额低于开票金额。' ) ); die (); } } } function ajaxGetInvoiceByNew() { Doo::loadModel ( 'invoice' ); $invoice = new invoice (); $detail = $invoice->getInvoiceByNew ( $this->staff [0] ['sid'] ); echo json_encode ( array ( 'status' => 1, 'detail' => $detail ) ); } /** * 旧输入导入 */ function importInvoice() { $emsg = isset ( $this->params ['emsg'] ) ? $this->params ['emsg'] : ""; $data ['emsg'] = ""; if ($emsg != "") $data ['emsg'] = "请填写完整的数据"; $data ['time'] = time (); $this->render ( "/admin/invoiceImport", $data ); } function uploadInvoice() { // move_uploaded_file($_FILES['Filedata']['tmp_name'], "/upload/".$_FILES['Filedata']['name']); if (isset ( $_FILES ['Filedata'] ['name'] )) { $file = $_FILES ['Filedata'] ['tmp_name']; $error = false; if (! is_uploaded_file ( $file )) { $error = '400 Bad Request'; } if ($error) { header ( 'HTTP/1.0 ' . $error ); die ( 'Error ' . $error ); } else { include (DOO::conf ()->SITE_PATH . 'protected/plugin/io.han.php'); $this->IoHandler = new IoHandler (); $pics = explode ( '.', $_FILES ['Filedata'] ['name'] ); // $filedir=$_POST['time']; // 调用定义物理路径 $t = DOO::conf ()->SITE_PATH . "upload/invoice/"; $this->IoHandler->MakeDir ( $t ); $filename = $this->_GetFileEXT ( $_FILES ['Filedata'] ['name'] ); if ($filename != 'xlsx') return ""; // $upload_dir = $t."/".time().rand(10,100).".".$filename; $upload_file = iconv ( "UTF-8", "GB2312", $_FILES ["Filedata"] ["name"] ); $upload_dir = $t . "/" . $upload_file; $k = move_uploaded_file ( $file, $upload_dir ); if ($k) { $m = round ( $_FILES ['Filedata'] ['size'] / 1024 / 1024, 2 ); echo $pics [0] . "." . $filename . "#" . $m . "#" . $_FILES ['Filedata'] ['size']; } } } } function importInvoiceDo() { $path = $this->get_args ( 'path' ) ? $this->get_args ( 'path' ) : ""; if ($path != "") { Doo::loadModel ( 'invoice' ); Doo::loadModel ( 'staff' ); $staff = new staff (); Doo::loadModel ( 'invoiceStatistics' ); Doo::loadModel ( 'invoiceOperationLog' ); echo DOO::conf ()->SITE_PATH . "upload/invoice/" . iconv ( "UTF-8", "GB2312", $path ); $exlArray = $this->_format_excel_to_array ( DOO::conf ()->SITE_PATH . "upload/invoice/" . $path ); // print_r ( $exlArray ); // die (); // echo json_encode($exlArray);die; foreach ( $exlArray as $key => $value ) { // 开票 $invoice = new invoice (); $invoice->invoiceNo = $value ['invoiceNo']; $invoice->invoiceType = 0; if ($value ['invoiceType'] == '专') $invoice->invoiceType = 1; $invoice->invoicePrice = $value ['invoicePrice']; $invoice->invoiceQuantity = 1; $invoice->invoiceUnitPrice = $value ['invoicePrice']; $invoice->invoiceTitle = $value ['invoiceTitle']; if ($value ['invoiceType'] == '专') $invoice->invoiceCompany = $value ['invoiceTitle']; $invoice->userName = $value ['userName']; $sDetail = $staff->getStaffByName ( $value ['userName'] ); $invoice->sid = $sDetail ['sid']; $invoice->cid = $sDetail ['cid']; $invoice->categoryName = $sDetail ['category']; $invoice->invoiceElement = $value ['invoiceElement']; $invoice->remark = $value ['remark']; $invoice->date = $value ['date']; $invoice->printTime = $value ['date']; $invoice->ipSource = 1; $invoice->printStatus = 1; $invoice->status = 2; $invoice->postStatus = 1; $invoice->untreadStatus = 0; $invoice->invoiceSerial = "#F" . date ( "Ymd" ) . mt_rand ( 1000, 9999 ); $iid = $invoice->insert (); // 汇总 $invoiceStatistics = new invoiceStatistics (); // $item = array ( 'date' => $value ['date'], 'priceClass' => 1, 'cid' => $sDetail ['cid'], 'staff' => $sDetail ['sid'], 'invoicePrice' => $value ['invoicePrice'] ); $invoiceStatistics->setInvoiceStatisticsByCondition ( $item ); $invoiceOperationLog = new invoiceOperationLog (); $item = array ( 'date' => date ( "Y-m-d H:i:s" ), 'operation' => date ( "Y-m-d" ) . " 导入", 'status' => 1, 'img' => $sDetail ['avatar'], 'username' => $sDetail ['username'], 'uid' => $sDetail ['sid'], 'category' => $sDetail ['category'], 'iid' => $iid ); $invoiceOperationLog->setInvoiceOperationLog ( $item ); } return '/importInvoice?count=' . count ( $exlArray ); // return "/keyonline"; } echo 'no file'; } function importInvoiceReceivables() { $emsg = isset ( $this->params ['emsg'] ) ? $this->params ['emsg'] : ""; $data ['emsg'] = ""; if ($emsg != "") $data ['emsg'] = "请填写完整的数据"; $data ['time'] = time (); $this->render ( "/admin/invoiceReceivablesImport", $data ); } // 导入入账数据 function importInvoiceReceivablesDo() { $path = $this->get_args ( 'path' ) ? $this->get_args ( 'path' ) : ""; // include Doo::conf ()->BASE_PATH . 'diagnostic/debug.php'; if ($path != "") { Doo::loadModel ( 'invoiceReceivables' ); Doo::loadModel ( 'invoice' ); Doo::loadModel ( 'staff' ); $staff = new staff (); Doo::loadModel ( 'invoiceStatistics' ); // echo DOO::conf ()->SITE_PATH . "upload/invoice/" . iconv ( "UTF-8", "GB2312", $path ); $exlArray = $this->_format_excel_to_array ( DOO::conf ()->SITE_PATH . "upload/invoice/" . iconv ( "UTF-8", "GB2312", $path ), 'invoiceReceivables' ); // print_r ( $exlArray ); // die (); // echo json_encode($exlArray);die; foreach ( $exlArray as $key => $value ) { // 收款 $invoiceReceivables = new invoiceReceivables (); $invoice = new invoice (); $invoiceReceivables->bindStatus = 1; $invoiceReceivables->receivablesPrice = $value ['receivablesPrice']; $invoiceReceivables->receivablesMessage = $value ['receivablesMessage']; $invoiceReceivables->receivablesBank = $value ['receivablesBank']; $invoiceReceivables->receivablesDate = $value ['receivablesDate']; $sDetail = $staff->getStaffByName ( $value ['receivablesStaff'] ); $invoiceReceivables->receivablesCategory = $sDetail ['cid'] . ':' . $sDetail ['category']; $invoiceReceivables->receivablesStaff = $sDetail ['sid'] . '-' . $sDetail ['username']; $invoiceReceivables->receivablesSerial = "#SK" . date ( "Ymd" ) . mt_rand ( 1000, 9999 ); $invoiceReceivables->sourcePrice = $value ['sourcePrice']; $iDetail = $invoice->getInvoiceByInvoiceNo ( $value ['invoiceNo'] ); $invoiceReceivables->iid = $iDetail ['iid']; $irid = $invoiceReceivables->insert (); // 发票绑定收款 $detail = $iDetail; $iridString = ""; if (empty ( $detail ['irid'] )) $iridString = $irid; else $iridString = $detail ['irid'] . ',' . $irid; $item = array ( 'irid' => $iridString, 'iid' => $detail ['iid'] ); $invoice->setInvoiceByCondition ( $item ); // 汇总 $invoiceStatistics = new invoiceStatistics (); // 扣除入账统计金额 $item = array ( 'date' => $value ['receivablesDate'], 'priceClass' => 3, 'cid' => $sDetail ['cid'], 'staff' => $sDetail ['sid'], // 'irid' => $irid, 'accountPrice' => $value ['receivablesPrice'] ); $invoiceStatistics->setInvoiceStatisticsByCondition ( $item ); } return '/importInvoiceReceivables?count=' . count ( $exlArray ); echo 'data count ' . count ( $exlArray ); die (); // return "/keyonline"; } echo 'no file'; } function formatExcelToArrayTrain($file_url = "") { if (! file_exists ( $file_url )) { return array (); } // Doo::loadClass ( 'PHPExcel' ); Doo::loadClass ( 'PHPExcel1.7.9/PHPExcel' ); $PHPExcel = new PHPExcel (); $PHPReader = new PHPExcel_Reader_Excel2007 (); if (! $PHPReader->canRead ( $file_url )) { $PHPReader = new PHPExcel_Reader_Excel5 (); if (! $PHPReader->canRead ( $file_url )) { echo 'no Excel'; return; } } $PHPExcel = $PHPReader->load ( $file_url ); /* * 读取excel文件中的第一个工作表 */ $currentSheet = $PHPExcel->getSheet ( 0 ); /* * 取得最大的列号 */ $allColumn = $currentSheet->getHighestColumn (); /* * 取得一共有多少行 */ $allRow = $currentSheet->getHighestRow (); $excel_array = array (); // die($file_url); $conk = 2; for($currentRow = $conk; $currentRow <= $allRow; $currentRow ++) { $excel_column = array (); // 后期改进 if ($allColumn == 'AM') $allColumn = 'Z'; /* * 从第A列开始输出 */ for($currentColumn = 'A'; $currentColumn <= $allColumn; $currentColumn ++) { $val = $currentSheet->getCellByColumnAndRow ( ord ( $currentColumn ) - 65, $currentRow )->getValue (); if ($val instanceof PHPExcel_RichText) $val = $val->__toString (); /* * ord()将字符转为十进制数 iconv ( 'utf-8', 'gb2312', */ // $val = "'" . addslashes ( $val ) . "'"; if ($currentColumn == 'A') { $excel_column ['invoiceTitle'] = $val; } elseif ($currentColumn == 'B') $excel_column ['invoiceType'] = $val; elseif ($currentColumn == 'C') { $excel_column ['TIN'] = $val; } elseif ($currentColumn == 'D') { $excel_column ['address'] = $val; } elseif ($currentColumn == 'E') { $excel_column ['phone'] = $val; } elseif ($currentColumn == 'F') { $excel_column ['bank'] = $val; } elseif ($currentColumn == 'G') { $excel_column ['bankAccount'] = $val; } elseif ($currentColumn == 'H') { $excel_column ['invoiceElement'] = $val; } elseif ($currentColumn == 'I') { $excel_column ['invoiceQuantity'] = $val; } elseif ($currentColumn == 'J') { $excel_column ['invoiceUnitPrice'] = $val; } elseif ($currentColumn == 'K') { $excel_column ['remark'] = $val; } elseif ($currentColumn == 'L') { $excel_column ['recipientsAddress'] = $val; } elseif ($currentColumn == 'M') { $excel_column ['recipients'] = $val; } elseif ($currentColumn == 'N') { $excel_column ['recipientsPhone'] = $val; }elseif ($currentColumn == 'O') { $excel_column ['electronicPhone'] = $val; } elseif ($currentColumn == 'P') { $excel_column ['electronicEmail'] = $val; } } if (! empty ( $excel_column ['invoiceTitle'] ) && ! empty ( $excel_column ['invoiceQuantity'] ) && ! empty ( $excel_column ['invoiceUnitPrice'] )) array_push ( $excel_array, $excel_column ); } return $excel_array; } /** * 格式化excel文件为数组 * @param unknown_type $file_url * @param unknown_type $mcid */ function _format_excel_to_array($file_url = "", $sType = "") { if (! file_exists ( $file_url )) { return array (); } Doo::loadClass ( 'PHPExcel' ); // Doo::loadClass ( 'PHPExcel1.7.9/PHPExcel' ); $PHPExcel = new PHPExcel (); $PHPReader = new PHPExcel_Reader_Excel2007 (); if (! $PHPReader->canRead ( $file_url )) { $PHPReader = new PHPExcel_Reader_Excel5 (); if (! $PHPReader->canRead ( $file_url )) { echo 'no Excel'; return; } } $PHPExcel = $PHPReader->load ( $file_url ); /* * 读取excel文件中的第一个工作表 */ $currentSheet = $PHPExcel->getSheet ( 0 ); /* * 取得最大的列号 */ $allColumn = $currentSheet->getHighestColumn (); /* * 取得一共有多少行 */ $allRow = $currentSheet->getHighestRow (); $excel_array = array (); // die($file_url); $conk = 2; for($currentRow = $conk; $currentRow <= $allRow; $currentRow ++) { $excel_column = array (); // 后期改进 if ($allColumn == 'AM') $allColumn = 'Z'; /* * 从第A列开始输出 */ for($currentColumn = 'A'; $currentColumn <= $allColumn; $currentColumn ++) { $val = $currentSheet->getCellByColumnAndRow ( ord ( $currentColumn ) - 65, $currentRow )->getValue (); if ($val instanceof PHPExcel_RichText) $val = $val->__toString (); /* * ord()将字符转为十进制数 iconv ( 'utf-8', 'gb2312', */ // $val = "'" . addslashes ( $val ) . "'"; if ($sType == 'invoiceReceivables') { if ($currentColumn == 'A') $excel_column ['invoiceNo'] = $val; elseif ($currentColumn == 'B') $excel_column ['receivablesPrice'] = $val; elseif ($currentColumn == 'C') { $excel_column ['receivablesMessage'] = $val; } elseif ($currentColumn == 'D') { $excel_column ['receivablesBank'] = $val; } elseif ($currentColumn == 'E') { $excel_column ['receivablesDate'] = $this->excelTime ( $val ); } elseif ($currentColumn == 'F') { $excel_column ['receivablesStaff'] = $val; } elseif ($currentColumn == 'G') { $excel_column ['sourcePrice'] = $val; } } elseif ($sType == "invoiceTrain") { if ($currentColumn == 'A') { $excel_column ['invoiceTitle'] = $val; } elseif ($currentColumn == 'B') $excel_column ['invoiceType'] = $val; elseif ($currentColumn == 'C') { $excel_column ['TIN'] = $val; } elseif ($currentColumn == 'D') { $excel_column ['address'] = $val; } elseif ($currentColumn == 'E') { $excel_column ['phone'] = $val; } elseif ($currentColumn == 'F') { $excel_column ['bank'] = $val; } elseif ($currentColumn == 'G') { $excel_column ['bankAccount'] = $val; } elseif ($currentColumn == 'H') { $excel_column ['invoiceElement'] = $val; } elseif ($currentColumn == 'I') { $excel_column ['invoiceQuantity'] = $val; } elseif ($currentColumn == 'J') { $excel_column ['invoiceUnitPrice'] = $val; } elseif ($currentColumn == 'K') { $excel_column ['remark'] = $val; } elseif ($currentColumn == 'L') { $excel_column ['recipientsAddress'] = $val; } elseif ($currentColumn == 'M') { $excel_column ['recipients'] = $val; } elseif ($currentColumn == 'N') { $excel_column ['recipientsPhone'] = $val; } } else { if ($currentColumn == 'A') $excel_column ['invoiceNo'] = $val; elseif ($currentColumn == 'B') $excel_column ['invoiceType'] = $val; elseif ($currentColumn == 'C') { $excel_column ['invoicePrice'] = $val; } elseif ($currentColumn == 'D') { $excel_column ['invoiceTitle'] = $val; } elseif ($currentColumn == 'E') { $excel_column ['userName'] = $val; } elseif ($currentColumn == 'F') { $excel_column ['categoryName'] = $val; } elseif ($currentColumn == 'G') { $excel_column ['invoiceElement'] = $val; } elseif ($currentColumn == 'H') { $excel_column ['remark'] = $val; } elseif ($currentColumn == 'I') { $excel_column ['date'] = $this->excelTime ( $val ); } } } array_push ( $excel_array, $excel_column ); } return $excel_array; } function excelTime($date, $time = false) { if (function_exists ( 'GregorianToJD' )) { if (is_numeric ( $date )) { $jd = GregorianToJD ( 1, 1, 1970 ); $gregorian = JDToGregorian ( $jd + intval ( $date ) - 25569 ); $date = explode ( '/', $gregorian ); $date_str = str_pad ( $date [2], 4, '0', STR_PAD_LEFT ) . "-" . str_pad ( $date [0], 2, '0', STR_PAD_LEFT ) . "-" . str_pad ( $date [1], 2, '0', STR_PAD_LEFT ) . ($time ? " 00:00:00" : ''); return $date_str; } } else { $date = $date > 25568 ? $date + 1 : 25569; /* There was a bug if Converting date before 1-1-1970 (tstamp 0) */ $ofs = (70 * 365 + 17 + 2) * 86400; $date = date ( "Y-m-d", ($date * 86400) - $ofs ) . ($time ? " 00:00:00" : ''); } return $date; } /** * 旧输入导入 */ function _GetFileEXT($filename) { $pics = explode ( '.', $filename ); $num = count ( $pics ); return $pics [$num - 1]; } function showCache($path = "", $sid = 0) { // if (file_exists ( $path )) { // $htm = file_get_contents ( $path ); // } else { Doo::loadModel ( 'invoiceStatistics' ); $invoiceStatistics = new invoiceStatistics (); $isBriefly = $invoiceStatistics->getBrieflyStatistics ( $sid ); $htm = '' . $isBriefly ['statisticsMonth'] [0] ['month'] . '月累计开票 ¥' . $isBriefly ['statisticsMonth'] [0] ['invoicePrice'] . ' ' . $isBriefly ['statisticsMonth'] [0] ['month'] . '月累计入账 ¥' . $isBriefly ['statisticsMonth'] [0] ['accountPrice'] . ''; /* * '今年累计开票¥' . $isBriefly ['statisticsYear'] [0] ['invoicePrice'] . ' 今年累计入账¥' . $isBriefly ['statisticsYear'] [0] ['accountPrice'] . ''; */ file_put_contents ( $path, $htm ); // } return $htm; } /** * 生成token * @return string */ function set_token() { $str = md5 ( uniqid ( md5 ( microtime ( true ) ), true ) ); // 生成一个不会重复的字符串 $str = sha1 ( $str ); // 加密 return $str; } /** * 获取get或者POST值 * * @param string $name 属性名称 * @return fixed 值 */ function get_args($name) { if (isset ( $_GET [$name] )) { if (is_array ( $_GET [$name] )) return $_GET [$name]; else return addslashes ( $_GET [$name] ); } elseif (isset ( $_POST [$name] )) { if (is_array ( $_POST [$name] )) return $_POST [$name]; else return addslashes ( $_POST [$name] ); } else return false; } function SafeFilter(&$arr) { $ra = Array ( '/([\x00-\x08,\x0b-\x0c,\x0e-\x19])/', '/script/', '/javascript/', '/vbscript/', '/expression/', '/applet/', '/meta/', '/xml/', '/blink/', '/link/', '/style/', '/embed/', '/object/', '/frame/', '/layer/', '/title/', '/bgsound/', '/base/', '/onload/', '/onunload/', '/onchange/', '/onsubmit/', '/onreset/', '/onselect/', '/onblur/', '/onfocus/', '/onabort/', '/onkeydown/', '/onkeypress/', '/onkeyup/', '/onclick/', '/ondblclick/', '/onmousedown/', '/onmousemove/', '/onmouseout/', '/onmouseover/', '/onmouseup/', '/onunload/' ); if (is_array ( $arr )) { foreach ( $arr as $key => $value ) { if (! is_array ( $value )) { if (! get_magic_quotes_gpc ()) // 不对magic_quotes_gpc转义过的字符使用addslashes(),避免双重转义。 { $value = addslashes ( $value ); // 给单引号(')、双引号(")、反斜线(\)与 NUL(NULL 字符)加上反斜线转义 } $value = preg_replace ( $ra, '', $value ); // 删除非打印字符,粗暴式过滤xss可疑字符串 $arr [$key] = htmlentities ( strip_tags ( $value ) ); // 去除 HTML 和 PHP 标记并转换为 HTML 实体 } else { SafeFilter ( $arr [$key] ); } } } } /** * Escape String * * @access public * @param string * @param bool whether or not the string will be used in a LIKE condition * @return string */ function escape_str($str, $like = FALSE) { if (is_array ( $str )) { foreach ( $str as $key => $val ) { $str [$key] = $this->escape_str ( $val, $like ); } return $str; } var_dump ( Doo::db ()->getDbObject () ); die (); if (function_exists ( 'mysql_real_escape_string' ) and is_resource ( Doo::db ()->getDbObject () )) { // Doo::db ()->getDbObject() $str = mysql_real_escape_string ( $str, Doo::db ()->getDbObject () ); } elseif (function_exists ( 'mysql_escape_string' )) { $str = mysql_escape_string ( $str ); } else { $str = addslashes ( $str ); } // escape LIKE condition wildcards if ($like === TRUE) { $str = str_replace ( array ( '%', '_' ), array ( '\\%', '\\_' ), $str ); } return $str; } /** * 获得分页数据 * @param unknown_type $table * @param unknown_type $condition * @param unknown_type $on_page * @param unknown_type $page_size */ function get_page($table = "", $condition = "", $on_page = 1, $page_size = 20, $action = "", $get = "", $other = "page") { $page_c = ""; $page ['previous'] = $this->get_previous ( $on_page ); $page ['on_page'] = $on_page; $total_count = $this->get_table_count ( $table, $condition ); $total = intval ( $total_count / $page_size ); $page ['total_page'] = ($total_count % $page_size) == 0 ? $total : $total + 1; $page ['total_data'] = $total_count; $page ['next'] = $on_page == $page ['total_page'] ? $page ['total_page'] : $on_page + 1; $i = 1; $page_max = 1; $page_width = 3; if ($on_page >= $page_width) { $page_max = intval ( $on_page / $page_width ) + 1; $i = intval ( $on_page / $page_width ) * $page_width - 1; } for(; $i <= $page ['total_page']; $i ++) { if ($i == $on_page) $page_c .= '
  • ' . $i . '
  • '; else $page_c .= '
  • ' . $i . '
  • '; if ($i == ($page_width * $page_max)) break; } $page ['page'] = $page_c; $page ['lower'] = (-- $on_page) * $page_size; return $page; } /** * 获取上一页 * @param unknown_type $on_page */ function get_previous($on_page = 1) { return $on_page != 0 ? $on_page - 1 : $on_page; } /** * 获取总页数 * @param unknown_type $table * @param unknown_type $condition */ public function get_table_count($table = "", $condition = "") { // $sql = "select count(*) as count from " . $table . " where 1 " . $condition; $sql = "select count(*) as count from " . $table . " where " . $condition; // echo $sql;die; $query = Doo::db ()->query ( $sql ); $result = $query->fetch (); return $result ['count']; } function isInvoiceNew($type = "GLOBAL") { Doo::loadModel ( 'invoice' ); $invoice = new invoice (); Doo::loadModel ( 'invoiceReceivables' ); $invoiceReceivables = new invoiceReceivables (); Doo::loadModel ( 'staff' ); $staff = new staff (); $st = $staff->getUserByIdList ( $_COOKIE ["staff"] ); // 我的发票待处理 $pendingInvoice = $invoice->getOne ( array ( // or (status=2 and printStatus=1 and untreadStatus=0 ) or (status=2 and printStatus=1 and untreadStatus=2 ) 'where' => "(status=3 or status=4) and isDelete=0 and sid=" . $st [0] ['sid'], 'desc' => 'iid', 'asArray' => TRUE ) ); // 我的收款待入账 /* * $myClaim = $invoiceReceivables->getOne ( array ( 'where' => " receivablesStaff like '" . $st [0] ['sid'] . "-%' and receivablesCategory like '" . $st [0] ['cid'] . ":%' and bindStatus=0", 'desc' => 'irid', 'asArray' => TRUE ) ); */ // 发票审批 $approval = $invoice->getOne ( array ( 'where' => 'status=1 and pendingApprovals=' . $st [0] ['sid'], 'desc' => 'iid', 'asArray' => true ) ); // 发票邮寄 $post = $invoice->getOne ( array ( 'where' => "postStatus=0 and printStatus=1 and isDelete=0 and doPost=1 and status=2", 'asArray' => TRUE ) ); // 发票打印 $print = $invoice->getOne ( array ( 'where' => "status=2 and printStatus=0 and untreadStatus=0 and moldManage like '%[\"" . $st [0] ['sid'] . "\",%'", 'desc' => 'iid', 'asArray' => TRUE ) ); // 发票退票 printStatus=1 and $untread = $invoice->getOne ( array ( 'where' => " untreadStatus=1 and status=2 ", 'asArray' => TRUE ) ); $new = array ( 'GLOBAL' => FALSE, 'pendingInvoice' => FALSE, // 'myClaim' => FALSE, 'approval' => FALSE, 'post' => FALSE, 'print' => FALSE, 'untread' => FALSE ); // || ! empty ( $myClaim ) if (! empty ( $pendingInvoice ) || ! empty ( $approval ) || ! empty ( $post ) || ! empty ( $print ) || ! empty ( $untread )) $new ['GLOBAL'] = TRUE; if (! empty ( $pendingInvoice )) $new ['pendingInvoice'] = TRUE; // if (! empty ( $myClaim )) // $new ['myClaim'] = TRUE; if (! empty ( $approval )) $new ['approval'] = TRUE; if (! empty ( $post )) $new ['post'] = TRUE; if (! empty ( $print )) $new ['print'] = TRUE; if (! empty ( $untread )) $new ['untread'] = TRUE; return $new; } function setWXMsg($rid, $typeMsg = '') { Doo::loadModel ( 'invoice' ); $invoice = new invoice (); $invoiceDetail = $invoice->getOne ( array ( 'where' => 'iid=' . $rid, 'asArray' => true ) ); if (! empty ( $invoiceDetail )) { Doo::loadModel ( 'staff' ); $staff = new staff (); $staffmsg = $staff->getOne ( array ( 'where' => "sid='" . $invoiceDetail ['sid'] . "'", 'asArray' => TRUE ) ); if (! empty ( $staffmsg ['wxid'] )) { require_once (SITE_PATH . '/protected/class/client.php'); $client = new client ( 'http://m.cld.smartcost.com.cn/' ); $user = $staffmsg ['wxid']; $expCom = explode ( ":", $invoiceDetail ['expressCompany'] ); if (empty ( $expCom )) $expCom [0] = ''; $msg = ""; if (empty ( $typeMsg )) $msg = '太好了,您的发票' . $invoiceDetail ['invoiceSerial'] . ' 已邮寄 ' . $expCom [0] . ' ,快递号: ' . $invoiceDetail ['expressNumber'] . ''; elseif ($typeMsg == "PRINT") $msg = '太好了,您的发票已打印完成。'; $result = $client->SendMsg ( $user, $msg, 'text' ); } } } /** * 获取微信部门 * @param string $category * @return number|mixed */ function getToparty($category = '') { $token = $this->getAccessToken (); // $result = json_decode ( $this->httpGet ( "https://qyapi.weixin.qq.com/cgi-bin/department/list?access_token={$token}&id=5" ), true ); $toparty = 0; foreach ( $result ['department'] as $key => $value ) { if ($value ['name'] == $category) $toparty = $value ['id']; } return $toparty; } /** * 获得某部门下的用户 * @param string $toparty */ function getUserByToparty($toparty = '') { $token = $this->getAccessToken (); // $result = json_decode ( $this->httpGet ( "https://qyapi.weixin.qq.com/cgi-bin/user/simplelist?access_token={$token}&department_id={$toparty}" ), true ); $userList = array (); foreach ( $result ['userlist'] as $key => $value ) { array_push ( $userList, "'" . $value ['userid'] . "'" ); } return $userList; } function msgSendToparty($msg, $title, $url, $toparty, $text = '') { $token = $this->getAccessToken (); if ($text == 'text') { $data = '{ "touser": "' . $toparty . '", "toparty": "", "totag": "", "msgtype": "text", "agentid": 1000002, "text": { "content": "' . $msg . '" }, "safe":0 }'; } $result = json_decode ( $this->httpPOST ( "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token={$token}", $data ) ); if ($result->errmsg != 'ok') { return 0; } else { return 1; } } /** * 获得可以发送微信用户列表 * @param string $category * @return string */ function getWxidByCategory($category = "") { if (empty ( $category )) return ""; Doo::loadModel ( 'staff' ); $staff = new staff (); $toparty = $this->getToparty ( $category ); $wxList = array (); $wxString = ""; if (! empty ( $toparty )) { $userList = $this->getUserByToparty ( $toparty ); $userCon = implode ( ',', $userList ); // echo $userCon; $sidList = $staff->getStaffByWxid ( $userCon ); foreach ( $sidList as $key => $value ) { $falg = $this->isSendNotification ( $value ['sid'], 'receivables' ); if ($falg) { array_push ( $wxList, $value ['wxid'] ); } } $wxString = implode ( '|', $wxList ); } return $wxString; } /** * 读取发送信息规则判断是否需要发送 * @param number $sid * @param string $sendType * @return boolean */ function isSendNotification($sid = 0, $sendType = '') { Doo::loadModel ( "notificationConf" ); $notificationConf = new notificationConf (); $detail = $notificationConf->getNotificationConfBySid ( $sid ); $conf = array (); $sendFlag = true; if (! empty ( $detail )) { $conf = json_decode ( $detail ['conf'], true ); if (! empty ( $sendType )) { if (isset ( $conf [$sendType] )) { if ($conf [$sendType] == "CLOSE") $sendFlag = false; elseif ($conf [$sendType] == "Weekend") { $day = date ( "w" ); if (1 <= $day && 5 >= $day) $sendFlag = false; } elseif ($conf [$sendType] == "OneToFriday") { $day = date ( "w" ); if (0 == $day || 6 == $day) $sendFlag = false; } } } else $sendFlag = false; } return $sendFlag; } /** * 根据规则发送信息 * @param unknown $msg * @param unknown $title * @param unknown $url * @param unknown $user * @param string $text * @return number */ private function msgSend($msg, $title, $url, $user, $sid = 0, $sendType = '') { $token = $this->getAccessToken (); $falg = $this->isSendNotification ( $sid, $sendType ); // if ($text == 'text') { // $data = '{ // "touser": "' . $user . '", // "toparty": "", // "totag": "", // "msgtype": "text", // "agentid": 1000002, // "text": { // "content": "' . $msg . '" // }, // "safe":0 // }'; // } else { $data = '{ "touser": "' . $user . '", "toparty": "", "totag": "", "msgtype": "news", "agentid": 1000002, "news": { "articles":[ { "title": "' . $title . '", "description": "' . $msg . '", "url": "' . $url . '", "picurl": "" } ] } }'; // } if ($falg) { $result = json_decode ( $this->httpPOST ( "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token={$token}", $data ) ); if ($result->errmsg != 'ok') { return 0; } else { return 1; } } else return 0; } private function getAccessToken() { // access_token 应该全局存储与更新,以下代码以写入到文件中做示例 // $file = './access_token.txt'; // $data = json_decode ( file_get_contents ( $file ) ); // if ($data->expire_time < time () or ! $data->expire_time) { // 如果是企业号用以下URL获取access_token $url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$this->appId&corpsecret=$this->appSecret"; // $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$this->appId&secret=$this->appSecret"; $res = json_decode ( $this->httpGet ( $url ) ); $access_token = $res->access_token; // echo $access_token; // if ($access_token) { // $data->expire_time = time () + 7000; // $data->access_token = $access_token; // $fp = fopen ( $file, "w" ); // fwrite ( $fp, json_encode ( $data ) ); // fclose ( $fp ); // } // } else { // $access_token = $data->access_token; // } return $access_token; } private function httpGet($url) { $curl = curl_init (); curl_setopt ( $curl, CURLOPT_RETURNTRANSFER, true ); curl_setopt ( $curl, CURLOPT_TIMEOUT, 500 ); // 为保证第三方服务器与微信服务器之间数据传输的安全性,所有微信接口采用https方式调用,必须使用下面2行代码打开ssl安全校验。 // 如果在部署过程中代码在此处验证失败,请到 http://curl.haxx.se/ca/cacert.pem 下载新的证书判别文件。 curl_setopt ( $curl, CURLOPT_SSL_VERIFYPEER, true ); curl_setopt ( $curl, CURLOPT_SSL_VERIFYHOST, false ); curl_setopt ( $curl, CURLOPT_URL, $url ); $res = curl_exec ( $curl ); curl_close ( $curl ); return $res; } private function httpPost($url, $data) { $curl = curl_init (); curl_setopt ( $curl, CURLOPT_RETURNTRANSFER, true ); curl_setopt ( $curl, CURLOPT_TIMEOUT, 500 ); // 为保证第三方服务器与微信服务器之间数据传输的安全性,所有微信接口采用https方式调用,必须使用下面2行代码打开ssl安全校验。 // 如果在部署过程中代码在此处验证失败,请到 http://curl.haxx.se/ca/cacert.pem 下载新的证书判别文件。 curl_setopt ( $curl, CURLOPT_SSL_VERIFYPEER, true ); curl_setopt ( $curl, CURLOPT_SSL_VERIFYHOST, false ); curl_setopt ( $curl, CURLOPT_URL, $url ); curl_setopt ( $curl, CURLOPT_POST, 1 ); curl_setopt ( $curl, CURLOPT_POSTFIELDS, $data ); $res = curl_exec ( $curl ); curl_close ( $curl ); return $res; } } ?>