public function getnewAction($id)
 {
     $model = D("Card");
     $card = M("Card")->find($id);
     if (empty($card)) {
         $this->error("card does not exist!");
     }
     if ($card['status'] != 0 && $card['status'] != 2) {
         $this->error("非正常状态不能补卡!");
     }
     if ($card['buka'] < 1) {
         $this->error("请先购买补卡费!");
     }
     unset($card['id']);
     $card_number = I('card_number');
     if (!empty($card_number) && $model->isExist($card_number, get_brand_id())) {
         $this->error("卡号已存在!");
     }
     if (empty($card_number)) {
         $card_number = getautocardnumber();
     }
     if (!empty($card_number)) {
         M("Card")->where(array("id" => $id))->setField("card_number", $card_number);
     }
     $club_id = get_club_id();
     //记录此人今天有补卡,每天脚本检查哪些人没收钱的,没收钱的也要入进系统!
     M("BukaTemp")->data(array("member_id" => $card['member_id'], "ext" => "补卡,卡号从" . $card['card_number'] . "修改为" . $card_number))->add();
     $buka = M()->query("select a.* from yoga_goods a,yoga_goods_club b where b.club_id={$club_id} and b.goods_id=a.id and a.is_system=1 and a.sys_type=0");
     M("Card")->where("id={$id}")->setDec('buka', 1);
     // D("CardOpHistory")->updateStatus($id,2,0,$new_id);
     $this->ajaxReturn(array("new_card_number" => $card_number, "status" => 1, "info" => "补卡成功!新的卡号为 {$card_number}!"));
 }
 public function doTransformAction($owner_id, $contract_id, $new_id, $new_card_number)
 {
     $memberModel = M("MemberBasic");
     $memberModel->startTrans();
     $cardModel = M("Card");
     $contractModel = M("Contract");
     $originalcontract = $contract = $contractModel->find($contract_id);
     $is_active = 1;
     $new_member = $memberModel->find($new_id);
     if (empty($new_member)) {
         $memberModel->rollback();
         $this->error("Can't find this member in your brand's database!");
     }
     if ($contract['member_id'] != $owner_id) {
         $memberModel->rollback();
         $this->error("This contract  not belongs to the owner!");
     }
     if ($contract['invalid'] != 1) {
         $memberModel->rollback();
         $this->error("合同无效,不能转让!");
     }
     if (!empty($new_card_number)) {
         $newCard = $cardModel->where(array("card_number" => $new_card_number, "brand_id" => get_brand_id()))->find();
         if (!empty($newCard)) {
             if ($newCard['member_id'] != $new_id) {
                 $memberModel->rollback();
                 $this->error("此卡号已存在,请重新输入");
             } else {
                 $new_card_id = $newCard['id'];
             }
         } else {
             //create a card with card_number
             $card = array("sale_club" => get_club_id(), "is_active" => $is_active, "brand_id" => get_brand_id(), "card_number" => $new_card_number, "member_id" => $new_id, "update_time" => getDbTime());
             $new_card_id = $cardModel->data($card)->add();
         }
     } else {
         $card_id = $originalcontract['card_id'];
         if (M("Contract")->where(array("card_id" => $card_id, "invalid" => 1))->count() == 1) {
             $new_card_id = $card_id;
             M("Card")->where("id={$card_id}")->setField("member_id", $new_id);
             M("Contract")->where(array("card_id" => $card_id, "invalid" => 1))->setField("card_id", 0);
         } else {
             $card = array("sale_club" => get_club_id(), "is_auto_create" => 1, "is_active" => $is_active, "brand_id" => get_brand_id(), "card_number" => getautocardnumber(), "member_id" => $new_id, "update_time" => getDbTime());
             $new_card_id = $cardModel->data($card)->add();
         }
     }
     $contractModel->where("id={$contract_id}")->setField(array("status" => 6, "invalid" => 0));
     //create new contract
     $member = M("MemberBasic")->find($owner_id);
     $service = \Service\CService::factory("Financial");
     $fee = D("Goods")->getZhuanrangFee();
     $free_trans = $contract['free_trans'];
     $price = I("should_pay");
     $cn = I("contract_number");
     if (!empty($cn)) {
         $contract['contract_number'] = $cn;
     } else {
         $contract['contract_number'] = date("YmdHis") . rand(0, 10000);
     }
     $contract['price'] = $price;
     $contract['member_id'] = $new_id;
     $contract_number = date("YmdHis") . rand(0, 10000);
     $contract['contract_number'] = $contract_number;
     $contract['free_trans'] = $contract['free_trans'] > 1 ? $contract['free_trans'] - 1 : 0;
     unset($contract['id']);
     $contract['status'] = 4;
     $contract['card_id'] = $new_card_id;
     $contract['create_time'] = getDbTime();
     $contract['update_time'] = getDbTime();
     $contract['description'] = "从 " . $member['name'] . " 转入" . I("description");
     $contract_id = M("Contract")->data($contract)->add();
     if ($free_trans == 0) {
         $bill_id = $service->addBillProject(3, 0, $contract_id, $contract['member_id'], I("should_pay"), 0, get_brand_id(), is_user_login(), get_club_id(), $contract['mc_id'], I("description"));
         if (!$bill_id) {
             $memberModel->rollback();
             $this->error($service->getError());
         }
         $ret = $service->pay($bill_id, 0, is_user_login(), get_brand_id(), I("description"), I("cash"), I("pos"), I("check"), I('check_num'), get_club_id(), 0, I("network"), I("netbank"));
         if (!$ret) {
             $memberModel->rollback();
             $this->error($service->getError());
         }
     } else {
         $bill_id = $service->addBillProject(3, 0, $contract_id, $contract['member_id'], 0, 0, get_brand_id(), is_user_login(), get_club_id(), $contract['mc_id'], I("description"));
         if (!$bill_id) {
             $memberModel->rollback();
             $this->error($service->getError());
         }
     }
     M("ContractHistory")->data(array("contract_id" => $contract_id, "extension" => json_encode(I("post."))))->add();
     $reason = "合同转让";
     if (!empty($reason)) {
         $data = array("original_extension" => json_encode($originalcontract), "extension" => json_encode($contract), "reason" => $reason, "record_id" => is_user_login(), "club_id" => get_club_id(), "brand_id" => get_brand_id(), "type" => 0, "status" => 0);
         M("Review")->data($data)->add();
     }
     M("MemberBasic")->where("id={$new_id}")->setField(array("is_member" => 1, "join_time" => getDbTime()));
     $memberModel->commit();
     $this->success("转卡成功!", U("Cashier/Contract/index"));
 }