public function insert()
 {
     $pid = abs(intval($_GET["pid"]));
     $model = D("ProductTplDetail");
     foreach ($_POST["rows"] as $row) {
         if (!$row) {
             continue;
         }
         if (strpos($row["goods_id"], "_") === false) {
             //编辑模式
             $goods_id = $row["goods_id"];
             $factory_code_all = $row["factory_code_all"];
             $stock_id = $row["stock_id"];
         } else {
             list($fc, $goods_id, $catid) = explode("_", $row["goods_id"]);
             $factory_code_all = makeFactoryCode($row, $fc);
             $stock_id = $row["stock"];
         }
         $data = array("tpl_id" => $pid, "goods_id" => $goods_id, "factory_code_all" => $factory_code_all, "num" => $row["num"], "stock_id" => $stock_id, "memo" => $row["memo"]);
         if ($row["id"]) {
             $data["id"] = $row["id"];
             $model->save($data);
             //                echo $model->getLastSql();
         } else {
             $model->add($data);
         }
     }
     //        print_r($_POST);exit;
 }
 /**
  * 
  */
 public function insert()
 {
     $data = $_POST;
     foreach ($data["rows"] as $k => $row) {
         if (!$row or !$row["goods_id"]) {
             unset($data["rows"][$k]);
             continue;
         }
         list($fcCode, $goods_id, $catid) = explode("_", $row["goods_id"]);
         $data["rows"][$k]["goods_id"] = $goods_id;
         $data["rows"][$k]["factory_code_all"] = makeFactoryCode($row, $fcCode);
         unset($data["rows"][$k]["standard"]);
         unset($data["rows"][$k]["version"]);
     }
     $data["bill_id"] = makeBillCode("ST");
     $data["dateline"] = strtotime($data["inputTime"]);
     $data["saler_id"] = $this->user["id"];
     unset($data["customerInfo"]);
     unset($data["discount"]);
     unset($data["inputTime"]);
     $model = D("Returns");
     $returnsId = $model->newReturns($data);
     //        var_dump($returnsId);exit;
     if (!$returnsId) {
         $this->error($model->getError());
         return;
     }
     import("@.Workflow.Workflow");
     $workflow = new Workflow($this->workflowAlias);
     $node = $workflow->doNext($returnsId, "", true);
     //        $this->redirect("/JXC/Orders/editDetail/id/".$id);
     //        $this->success(L("operate_success"));
 }
 /**
  * @override
  */
 public function select($options = array())
 {
     $data = parent::select($options);
     if (!$data) {
         return $data;
     }
     foreach ($data as $k => $v) {
         $data[$k]["factory_code_all"] = makeFactoryCode($v, $v["factory_code"]);
     }
     return $data;
 }
 protected function pretreatment()
 {
     switch ($this->_method) {
         case "put":
         case "post":
             $goods = D("Goods")->find($_POST["goods_id"]);
             $_POST["factory_code_all"] = makeFactoryCode($_POST, $goods["factory_code"]);
             //sprintf("%s-%d-%d", $goods["factory_code"], $_POST["standard"], $_POST["version"]);
     }
     //        print_r($_POST);exit;
 }
 public function formatData($data)
 {
     $rowsFields = array("goods_id", "factory_code_all", "num", "unit_price", "amount", "discount", "order_id", "memo");
     $data["tax_amount"] = $data["tax_amount"];
     $data["total_num"] = 0;
     foreach ($data["rows"] as $k => $row) {
         if (!$row or !$row["goods_id"]) {
             unset($data["rows"][$k]);
             continue;
         }
         list($fcCode, $goods_id, $catid) = explode("_", $row["goods_id"]);
         $data["rows"][$k]["goods_id"] = $goods_id;
         $data["rows"][$k]["factory_code_all"] = makeFactoryCode($row, $fcCode);
         $data["total_num"] += $row["num"];
     }
     foreach ($data["rows"] as $k => $row) {
         foreach ($row as $i => $j) {
             if (!in_array($i, $rowsFields)) {
                 unset($data["rows"][$k][$i]);
             }
         }
     }
     $id = abs(intval($_GET["id"]));
     if ($id) {
         $data["id"] = $id;
     } else {
         $data["bill_id"] = makeBillCode("XS");
     }
     if ($data["inputTime"] && !$id) {
         $data["dateline"] = strtotime($data["inputTime"]);
     } else {
         unset($data["dateline"]);
     }
     $data["saler_id"] = getCurrentUid();
     $data["tax_amount"] = $data["tax_amount"] ? $data["tax_amount"] : 0;
     unset($data["customerInfo"]);
     unset($data["discount"]);
     unset($data["inputTime"]);
     return $data;
 }
 /**
  * 格式化POST或者PUT的数据
  * @params $postData 提交的数据
  * @params $forceInsert 强制定义为插入,而非修改(billItem是否包含ID)
  */
 public function formatData($postData, $forceInsert = false)
 {
     $stockinModel = $this;
     $billData = array("bill_id" => makeBillCode(C("BILL_PREFIX.Stockin")), "subject" => $postData["subject"], "dateline" => $postData["dateline"] ? strtotime($postData["dateline"]) : CTS, "status" => 0, "user_id" => getCurrentUid(), "stock_manager" => 0, "total_num" => 0, "memo" => $postData["memo"], "type_id" => $postData["type_id"]);
     if ($postData["source_model"]) {
         $billData["source_model"] = $postData["source_model"];
         $billData["source_id"] = $postData["source_id"];
     }
     $id = abs(intval($_GET["id"]));
     if ($id) {
         $billData["id"] = $id;
     }
     $data = $postData["rows"];
     $billItems = array();
     $needed = array("goods_id", "num");
     foreach ($data as $k => $billItem) {
         if (!$billItem || !$billItem["num"] || !checkParamsFull($billItem, $needed)) {
             continue;
         }
         list($factory_code, $goodsId, $catid) = explode("_", $billItem["goods_id"]);
         $billItems[$k] = array("goods_id" => $goodsId, "num" => $billItem["num"], "factory_code_all" => makeFactoryCode($billItem, $factory_code), "memo" => $billItem["memo"], "stock_id" => $billItem["stock"]);
         $billData["total_num"] += $billItem["num"];
         if (!$forceInsert and $billItem["id"]) {
             $billItems[$k]["id"] = $billItem["id"];
         }
     }
     return array($billData, reIndex($billItems));
 }
 public function formatData($postData)
 {
     if (!$postData["id"]) {
         $data["bill_id"] = makeBillCode("CK");
         $data["source_id"] = $postData["source_id"] ? $postData["source_id"] : "";
         $data["source_model"] = $postData["source_model"] ? $postData["source_model"] : "";
         $data["stock_manager"] = getCurrentUid();
         $data["status"] = 0;
     } else {
         $data["id"] = $postData["id"];
     }
     if ($postData["dateline"]) {
         if (strtotime($postData['dateline'])) {
             $data["dateline"] = strtotime($postData['dateline']);
         } else {
             $data["dateline"] = strtotime($postData['dateline']);
         }
     } else {
         $data["dateline"] = CTS;
     }
     $data["total_num"] = $postData["total_num"];
     $data["memo"] = $postData["memo"];
     $rows = array();
     $needed = array("goods_id", "num");
     foreach ($postData["rows"] as $row) {
         list($fc, $goods_id) = explode("_", $row["goods_id"]);
         if (!checkParamsFull($row, $needed) || !$row["num"]) {
             continue;
         }
         $rows[] = array("id" => $row["id"] ? $row["id"] : 0, "stockout_id" => $row["stockout_id"], "factory_code_all" => makeFactoryCode($row, $fc), "goods_id" => $goods_id, "goods_id_label" => $row["goods_id_label"], "stock_id" => $row["stock"], "num" => $row["num"], "store_num" => $row["store_num"], "outed" => $row["outed"] ? $row["outed"] : 0, "memo" => $row["memo"]);
     }
     $data["rows"] = $rows;
     return $data;
 }
Exemple #8
0
 public function run()
 {
     $planModel = D("ProducePlan");
     $detailModel = D("ProducePlanDetail");
     $tplModel = D("ProductTpl");
     $tplDetailModel = D("ProductTplDetail");
     $bomModel = D("ProduceBoms");
     //执行下一步
     if ($_REQUEST["donext"]) {
         //@todo 数据完整性检查
         //清除当前的数据
         $bomModel->startTrans();
         $bomModel->where(array("plan_id" => $_POST["id"]))->delete();
         //重新写入
         foreach ($_POST["data"]["rows"] as $row) {
             list($factoryCode, $goodsId, $catId) = explode("_", $row["goods_id"]);
             if (!$goodsId) {
                 continue;
             }
             $row["goods_id"] = $goodsId;
             $data = array("plan_id" => $_POST["id"], "plan_detail_id" => $row["plan_detail_id"] ? $row["plan_detail_id"] : 0, "factory_code_all" => $row["factory_code_all"] ? $row["factory_code_all"] : makeFactoryCode($row, $factoryCode), "num" => intval($row["num"]), "goods_id" => $goodsId);
             if (!$bomModel->add($data)) {
                 Log::write($bomModel->getLastSql(), Log::SQL);
                 $bomModel->rollback();
                 $this->error("params_error");
                 return;
             }
         }
         //status 标识BOM单已保存
         $planModel->where("id=" . $this->mainrowId)->save(array("status" => 2));
         $bomModel->commit();
         return true;
     }
     $this->returnData = array("type" => "redirect", "location" => sprintf("/doWorkflow/Produce/makeBoms/%d/%d", $this->currentNode["id"], $this->mainrowId));
     $thePlan = $planModel->find($this->mainrowId);
     if ($thePlan["status"] == 1) {
         $this->response($this->returnData);
         return;
     }
     $details = $detailModel->where("plan_id=" . $this->mainrowId)->select();
     if (!$details) {
         return false;
     }
     /**
      * 生产计划详情
      */
     foreach ($details as $row) {
         $fcas[$row["factory_code_all"]] = $row["factory_code_all"];
         $products[$row["factory_code_all"]] = $row;
     }
     $tpls = $tplModel->where(array("factory_code_all" => array("IN", sprintf("%s", implode(",", $fcas)))))->select();
     if (!$tpls) {
         $this->response($this->returnData);
     }
     foreach ($tpls as $tp) {
         $tplids[] = $tp["id"];
         $theTpls[$tp["id"]] = $tp;
     }
     $boms = $tplDetailModel->where(array("tpl_id" => array("IN", implode(",", $tplids))))->select();
     //        echo $tplDetailModel->getLastSql();exit;
     /**
      * 清单所有需用物料
      * 数组索引为成品原厂编码
      */
     foreach ($boms as $k => $bom) {
         $theBoms[$theTpls[$bom["tpl_id"]]["factory_code_all"]][] = $bom;
     }
     /**
      * @ $k => 原厂编码
      * 所需物料数量 = 预定义物料数量 * 所需成品数量
      */
     $resultBoms = array();
     foreach ($products as $k => $v) {
         foreach ($theBoms[$k] as $bom) {
             $bom["num"] *= $v["num"];
             if (array_key_exists($bom["factory_code_all"], $resultBoms)) {
                 $resultBoms[$bom["factory_code_all"]]["num"] += $bom["num"];
             } else {
                 $resultBoms[$bom["factory_code_all"]] = array("plan_id" => $this->mainrowId, "plan_detail_id" => $v["id"], "goods_id" => $bom["goods_id"], "num" => $bom["num"], "factory_code_all" => $bom["factory_code_all"]);
             }
             $products[$k]["boms"][] = $bom;
         }
     }
     $bomModel->startTrans();
     foreach ($resultBoms as $bom) {
         if (!$bomModel->add($bom)) {
             Log::write($bomModel->getLastSql(), Log::SQL);
             $bomModel->rollback();
         }
     }
     //status 标识已生成BOM单
     $planModel->where("id=" . $this->mainrowId)->save(array("status" => 1));
     $bomModel->commit();
     $this->response($this->returnData);
     // 生产计划完成后,清除BOM表
 }
 public function ACT_getUnitPrice()
 {
     $row = $_POST["row"];
     list($factory_code, $goods_id, $catid) = explode("_", $row["goods_id"]);
     $row["factory_code"] = $factory_code;
     $factory_code_all = makeFactoryCode($row);
     $data = D("StockProductList")->where(array("factory_code_all" => $factory_code_all))->find();
     if (!$data) {
         $data = D("Goods")->find($goods_id);
         $data["unit_price"] = $data["price"];
     }
     $this->response(array("price" => $data["unit_price"], "cost" => $data["cost"]));
 }
 public function formatData($postData)
 {
     $data = array("start_time" => strtotime($postData["start_time"]), "end_time" => strtotime($postData["end_time"]), "type" => $postData["type"], "memo" => $postData["memo"], "total_num" => $postData["total_num"], "create_time" => CTS, "source_model" => $postData["source_model"], "source_id" => $postData["source_id"]);
     if ($_POST["id"]) {
         $data["id"] = $_POST["id"];
     }
     $rows = array();
     $needed = array("goods_id", "num");
     foreach ($postData["rows"] as $row) {
         $tmp = array();
         if (!checkParamsFull($row, $needed)) {
             continue;
         }
         list($factoryCode, $goods_id, $catid) = explode("_", $row["goods_id"]);
         $tmp["goods_id"] = $row["goods_id"] = $goods_id;
         $tmp["factory_code_all"] = makeFactoryCode($row, $factoryCode);
         $tmp["num"] = $row["num"];
         $tmp["start_time"] = $data["start_time"];
         $tmp["status"] = 0;
         $tmp["memo"] = $row["memo"];
         $tmp["create_time"] = CTS;
         $rows[] = $tmp;
     }
     if (!$rows) {
         $this->error = "fillTheForm";
         return false;
     }
     $data["rows"] = $rows;
     return $data;
 }
 public function formatData($data)
 {
     foreach ($data["rows"] as $k => $row) {
         if (!$row or !$row["goods_id"]) {
             unset($data["rows"][$k]);
             continue;
         }
         list($fcCode, $goods_id, $catid) = explode("_", $row["goods_id"]);
         $data["rows"][$k]["goods_id"] = $goods_id;
         //$data["rows"][$k]["price"] = $row["amount"] ? $row["amount"] : $row["price"];
         $data["rows"][$k]["factory_code_all"] = makeFactoryCode($row, $fcCode);
     }
     //        $data["total_price_real"] = $data["total_amount_real"];
     //        $data["total_price"] = $data["total_amount"];
     //        $data["quantity"] = $data["total_num"];
     $data["purchase_type"] = $data["purchase_type"] ? $data["purchase_type"] : 0;
     $data["supplier_id"] = $data["supplier_id"] ? $data["supplier_id"] : 0;
     if (!$data["bill_id"]) {
         $data["bill_id"] = makeBillCode("CG");
     }
     $data["dateline"] = $data["inputTime"] ? strtotime($data["inputTime"]) : CTS;
     $data["user_id"] = getCurrentUid();
     return $data;
 }