protected final function checkFactoryCodeAll($rows) { $template = explode(",", DBC("goods.unique.template")); //预检测,判断factory_code_all为空或者元素数量和模板不对等 foreach ($rows as $row) { $fca = explode(DBC("goods.unique.separator"), $row["factory_code_all"]); if (!$row["factory_code_all"] or count($fca) !== count($template)) { return false; } $factoryCode[$fca[0]] = $fca[0]; for ($i = 1; $i < count($template); $i++) { $modelIds[$template[$i]][] = $fca[$i]; } } // print_r($modelIds);exit; //再次检测,factory_code不存在于goods表中 $model = D("Goods"); $map = array("factory_code" => array("IN", $factoryCode)); $count = $model->where($map)->count(); if ($count < count($factoryCode)) { return false; } //或者modelDataId的字段名和模板不能对应起来 // $model = D("DataModelFields"); // $modelFields = $model->getFieldsByAlias("product"); return true; }
public function export() { $params = json_decode(base64_decode($_GET["params"]), true); $model = D("StockProductListView"); $map = array(); if ($_GET["stock"]) { $map["stock_id"] = array("IN", implode(",", $params["stock"])); } if ($params["warningonly"] > 0) { $map["_string"] = '((StockProductList.store_min>0 AND StockProductList.store_min>=num) OR (StockProductList.store_max>0 AND StockProductList.store_max<=num))'; } if ($_GET["category"]) { $map["goods_category_id"] = array("IN", implode(",", $params["category"])); } $data = $model->where($map)->order("stock_id ASC")->select(); $configedFields = DBC("store.stockProductList.exportFields"); if ($configedFields) { $this->exportFields = explode(",", $configedFields); } else { $params = array("fields" => $this->exportFields, "dataModelAlias" => "product", "after" => "goods_name"); tag("bind_dataModel_structure", $params); $this->exportFields = $params["fields"]; } $this->doExport(sprintf("export_kcqd_%s", date("YmdHis", CTS)), $data); }
public function read() { if (!$_GET["includeRows"] or $_GET['workflow']) { return parent::read(); } $formData = parent::read(true); $formData["start_time"] = $formData["start_time"] * 1000; $formData["end_time"] = $formData["end_time"] * 1000; $rowModel = D("ProducePlanDetailView"); $rows = $rowModel->where("ProducePlanDetail.plan_id=" . $formData["id"])->select(); // echo $rowModel->getLastSql();exit; $modelIds = array(); $rowData = array(); foreach ($rows as $v) { $tmp = explode(DBC("goods.unique.separator"), $v["factory_code_all"]); //根据factory_code_all factory_code - standard - version $factory_code = array_shift($tmp); $modelIds = array_merge($modelIds, $tmp); $v["modelIds"] = $tmp; $v["stock"] = $v["stock_id"]; $v["stock_label"] = $v["stock_name"]; $v["goods_id"] = sprintf("%s_%s_%s", $factory_code, $v["goods_id"], $v["goods_category_id"]); // factory_code, id, catid $v["goods_id_label"] = sprintf("%s", $v["goods_name"]); $rowData[$v["id"]] = $v; } // array_flip(array_flip($modelIds)); $params = array($rowData, $modelIds); tag("assign_dataModel_data", $params); $formData["rows"] = reIndex($params[0]); $this->response($formData); }
public function read() { if (!$_GET["includeRows"] or $_GET['workflow']) { return parent::read(); } // $this->readModel = "PurchaseView"; // $formData = parent::read(true); $formData = D("PurchaseView")->find($_GET['id']); $formData["inputTime"] = $formData["dateline"] * 1000; // $formData["total_amount"] = $formData["total_price"]; // $formData["total_amount_real"] = $formData["total_price_real"]; // $formData["total_num"] = $formData["quantity"]; $rowModel = D("PurchaseDetailView"); $rows = $rowModel->where("PurchaseDetail.purchase_id=" . $formData["id"])->select(); // echo $rowModel->getLastSql();exit; $modelIds = array(); $rowData = array(); foreach ($rows as $v) { $tmp = explode(DBC("goods.unique.separator"), $v["factory_code_all"]); //根据factory_code_all factory_code - standard - version $factory_code = array_shift($tmp); $modelIds = array_merge($modelIds, $tmp); $v["modelIds"] = $tmp; $v["goods_id"] = sprintf("%s_%s_%s", $factory_code, $v["goods_id"], $v["goods_category_id"]); // factory_code, id, catid $v["goods_id_label"] = sprintf("%s", $v["goods_name"]); // $v["amount"] = $v["price"]; $rowData[$v["id"]] = $v; } // array_flip(array_flip($modelIds)); $formData["customer_id_label"] = $formData["customer"]; $params = array($rowData, $modelIds); tag("assign_dataModel_data", $params); $formData["rows"] = reIndex($params[0]); /* * 相关单据 * **/ $relateItem = array(); $id = abs(intval($_GET["id"])); if (isAppLoaded("store")) { $tmp = D("Stockin")->toRelatedItem("Purchase", $id); if ($tmp) { $relateItem = array_merge($relateItem, $tmp); } } if (isAppLoaded("finance")) { $tmp = D("FinancePayPlan")->toRelatedItem("Purchase", $id); if ($tmp) { $relateItem = array_merge($relateItem, $tmp); } } if ($formData["source_model"] == "ProducePlan" && $formData["source_id"] && isAppLoaded("produce")) { $tmp = D("ProducePlan")->getRelatedItem($formData["source_id"]); if ($tmp) { $relateItem[] = $tmp; } } $formData["relatedItems"] = $relateItem; $this->response($formData); }
public function convert_to_stock_in($id) { if (!AppService::is_app_active('storage')) { $this->error = sprintf(__('common.Need %s App Active'), 'storage'); return false; } $meta_fields = ['quantity', 'subject', 'bill_no', 'remark']; $meta = []; $raw_main_data = $this->where(['id' => $id])->find(); foreach ($raw_main_data as $field => $value) { if (in_array($field, $meta_fields)) { $meta[$field] = $value; } } $meta['subject'] = __('purchase.Purchase stock in') . ' ' . $meta['subject']; $meta['source_model'] = 'purchase.purchase'; $meta['source_id'] = $id; $meta['workflow_id'] = DBC('purchase_stock_in_workflow'); $row_model = D('Purchase/PurchaseDetail'); $raw_rows_data = $row_model->where(['purchase_id' => $id])->select(); $stock_in_service = D('Storage/StockIn'); $stock_in_id = $stock_in_service->add_bill($meta, $raw_rows_data); if (!$stock_in_id) { $this->error = $stock_in_service->getError(); return false; } return $stock_in_id; }
public function index() { if (!is_file(APP_PATH . "/Data/install.lock")) { // $this->display("install"); return; } $this->assign("isDebug", APP_DEBUG ? 'true' : 'false'); $this->assign("APP_DEBUG", APP_DEBUG); $this->assign("siteTitle", DBC("site.title")); $loadedApps = F("loadedApp"); $loadedApps = array_merge($loadedApps, getPrimaryApps(true)); unset($loadedApps["install"]); $this->assign("loadedAppsStr", json_encode($loadedApps)); //静态资源 import("@.ORG.staticRuntime"); $runtime = new FrontEndRuntime($loadedApps); if (!APP_DEBUG) { $javascripts = array(U('FrontendRuntime/read?compileJS=compile.js')); } else { $javascripts = $runtime->getJavascripts(); } $javascripts[] = U('FrontendRuntime/read?js=common/base/app.js'); $this->assign("javascripts", $javascripts); if ($this->isLogin()) { $this->assign("APP_PATH", str_replace("index.php", "", __APP__)); $this->assign("userInfo", json_encode($this->user)); $this->display("app"); } else { $this->display("login"); } }
public function read() { $pid = abs(intval($_GET["id"])); $model = D("ProductTpl"); $data = $model->find($pid); $rowsModel = D("ProductTplDetailView"); $rows = $rowsModel->where("ProductTplDetail.tpl_id=" . $pid)->select(); $modelIds = array(); foreach ($rows as $k => $v) { $tmp = explode(DBC("goods.unique.separator"), $v["factory_code_all"]); //根据factory_code_all factory_code - standard - version $factory_code = array_shift($tmp); $rows[$k]["stock"] = $v["stock_id"]; // $rows[$k]["goods_id"] = $v["factory_code_all"]; $modelIds = array_merge($modelIds, $tmp); $rows[$k]["modelIds"] = $tmp; } // echo $rowsModel->getLastSql(); // print_r($rows); $params = array($rows, $modelIds); tag("assign_dataModel_data", $params); $data["rows"] = $params[0]; // echo $rowsModel->getLastSql();exit; // print_r($data);exit; $this->response($data); }
public function get_quantity_by_product($row_data) { $quantity_balance = 0; if ($row_data['product_unique_id']) { $product_unique_id = $row_data['product_unique_id']; } else { if (AppService::is_app_active('productAttribute')) { $attribute_fields = D('ProductAttribute/ProductAttribute')->get_attribute_fields(); $product_unique_id = generate_product_unique_id($row_data, $attribute_fields); } else { if ($row_data['product_id']) { $product_unique_id = $row_data['product_id']; } } } if (!$product_unique_id) { return $quantity_balance; } $map = ['product_unique_id' => $product_unique_id]; // 指定仓库 if ($row_data['storage_id']) { $map['storage_id'] = $row_data['storage_id']; } $raw_data = $this->where($map)->select(); foreach ($raw_data as $v) { $quantity_balance += $v['balance']; } return round((string) $quantity_balance, DBC('decimal_scale')); }
public function select($options = array()) { $data = parent::select($options); if (!$data) { return $data; } $goodsIds = array(); foreach ($data as $k => $v) { $goodsIds[$v["goods_id"]] = $v["goods_id"]; $goodsIds[$v["detail_goods_id"]] = $v["detail_goods_id"]; } $model = D("Goods"); $tmp = $model->where(array("id" => array("IN", implode(",", $goodsIds))))->select(); foreach ($tmp as $g) { $goods[$g["id"]] = $g; } foreach ($data as $k => $v) { $data[$k]["goods_id_label"] = $goods[$v["goods_id"]]["name"]; list($factory_code, ) = explode(DBC("goods.unique.separator"), $v["factory_code_all"]); $data[$k]["goods_id"] = sprintf("%s_%s_%s", $factory_code, $v["goods_id"], $goods[$v["goods_id"]]["goods_category_id"]); // $data[$k]["goods"] = $goods[$v["detail_goods_id"]]; } return $data; // print_r($codes); print_r($data); }
public function read() { if (!$_GET["includeRows"] or $_GET['workflow']) { return parent::read(); } $formData = parent::read(true); $formData["inputTime"] = $formData["dateline"] * 1000; $rowModel = D("ReturnsDetailView"); $rows = $rowModel->where("ReturnsDetail.returns_id=" . $formData["id"])->select(); // echo $rowModel->getLastSql();exit; $modelIds = array(); $rowData = array(); foreach ($rows as $v) { $tmp = explode(DBC("goods.unique.separator"), $v["factory_code_all"]); //根据factory_code_all factory_code - standard - version $factory_code = array_shift($tmp); $modelIds = array_merge($modelIds, $tmp); $v["modelIds"] = $tmp; $v["goods_id"] = sprintf("%s_%s_%s", $factory_code, $v["goods_id"], $v["goods_category_id"]); // factory_code, id, catid $v["goods_id_label"] = sprintf("%s", $v["goods_name"]); $v["unit_price"] = $v["price"]; $v["amount"] = $v["num"]; $rowData[$v["id"]] = $v; } // array_flip(array_flip($modelIds)); $formData["customer_id_label"] = $formData["customer"]; $dataModel = D("DataModelDataView"); $rowData = $dataModel->assignModelData($rowData, $modelIds); $formData["rows"] = reIndex($rowData); $this->response($formData); }
public function getStockoutBill($id) { $data = $this->find($id); if (!$data) { return false; } if ($data["source_model"]) { $sourceModel = D($data["source_model"] . "View"); $data["source"] = $sourceModel->find($data["source_id"]); if ($_GET["includeRelated"]) { try { $model = D($data["source_model"]); $related = $model->getRelatedItem($data["source_id"]); $data["relatedItems"][] = $related; } catch (Exception $e) { } } if ($_GET["includeSourceRows"]) { $sourceDetailModel = D($data["source_model"] . "Detail"); $foreignKey = $sourceDetailModel->foreignKey ? $sourceDetailModel->foreignKey : lcfirst($data["source_model"]) . "_id"; $map[$foreignKey] = $data["source_id"]; $tmp = $sourceDetailModel->where($map)->select(); foreach ($tmp as $t) { $data["source_detail"][$t["factory_code_all"]] = $t; } } } $detailModel = D("StockoutDetailView"); $data["rows"] = $detailModel->where("stockout_id=" . $data["id"])->select(); /** * 每列信息处理 */ $modelIds = array(); foreach ($data["rows"] as $k => $v) { $tmp = explode(DBC("goods.unique.separator"), $v["factory_code_all"]); //根据factory_code_all factory_code - standard - version $factory_code = array_shift($tmp); $modelIds = array_merge($modelIds, $tmp); $v["modelIds"] = $tmp; $v["stock"] = $v["stock_id"]; $v["stock_label"] = $v["stock_name"]; $v["goods_id"] = sprintf("%s_%s_%s", $factory_code, $v["goods_id"], $v["goods_category_id"]); // factory_code, id, catid $v["goods_id_label"] = sprintf("%s", $v["goods_name"]); $v["total_num"] = $v["num"]; $v["num"] = $v["num"] - $v["outed"]; $data["rows"][$k] = $v; $fca[] = $v["factory_code_all"]; } $params = array($data["rows"], $modelIds); tag("assign_dataModel_data", $params); $data["rows"] = reIndex($params[0]); // // $dataModel = D("DataModelDataView"); // $data["rows"] = $dataModel->assignModelData($data["rows"], $modelIds); return $data; }
/** * @override * */ public function select($options = array()) { $data = parent::select($options); // echo $this->getLastSql();exit; // print_r($data);exit; $theDataModel = D("DataModel")->getByAlias("product"); foreach ($data as $k => $v) { $data[$k]["modelIndex"] = sprintf("%d-%d", $v["goods_category_id"], $theDataModel["id"]); $data[$k]["goodsCode"] = explode(DBC("goods.unique.separator"), $v["factory_code_all"]); } $params = array($data, null, false, true); tag("assign_dataModel_data", $params); $data = $params[0]; return $data; }
public function read() { $version = $this->getVersion($_GET["id"]); //检测是不是相邻版本 if (!$this->isAdjoiningVersion(DBC("system.version"), $version["version"])) { $this->error("you only can upgrade current version to the adjoining version."); return; } //文件路径为HTTP绝对地址 if (strStartWith($version["file"], "http://") or strStartWith($version["file"], "https://")) { $remoteUri = $version["file"]; } else { $remoteUri = file_get_contents($this->server . "getDownload/id/" . $version["id"]); } $localPathFull = $this->getLocalPath($version["file"]); $tmp = explode("/", $localPathFull); $localName = array_pop($tmp); $localPath = implode("/", $tmp); import("@.ORG.CurlAxel"); $axel = new CurlAxel(); $axel->setUrl($remoteUri); $size = $axel->getFileSize($remoteUri); $axel->setProgressCallback(false); $axel->setTempDir(ENTRY_PATH . "/Runtime/Temp"); $axel->setDownloadDir($localPath); $axel->setFilename($localName); $axel->setBufferSize(32 * 1024); $axel->activeLog(true); $axel->download(); $maxTry = 30; $sleep = 1; $try = 0; $downloaded = false; do { $try++; sleep($sleep); clearstatcache(); //下载成功 if (is_file($localPath . $localName) and filesize($localPath . $localName) == $size) { $downloaded = true; break; } } while ($try <= $maxTry); if (!$downloaded) { $this->error("download_failed"); return; } }
public function read() { if (!$_GET["includeRows"] or $_GET['workflow']) { return parent::read(); } $this->readModel = "OrdersView"; $formData = parent::read(true); $formData["inputTime"] = $formData["dateline"] * 1000; $rowModel = D("OrdersDetailView"); $rows = $rowModel->where("OrdersDetail.order_id=" . $formData["id"])->select(); $modelIds = array(); $rowData = array(); foreach ($rows as $v) { $tmp = explode(DBC("goods.unique.separator"), $v["factory_code_all"]); //根据factory_code_all factory_code - standard - version $factory_code = array_shift($tmp); $modelIds = array_merge($modelIds, $tmp); $v["modelIds"] = $tmp; $v["goods_id"] = sprintf("%s_%s_%s", $factory_code, $v["goods_id"], $v["goods_category_id"]); // factory_code, id, catid $v["goods_id_label"] = sprintf("%s", $v["goods_name"]); $rowData[$v["id"]] = $v; } $formData["customer_id_label"] = $formData["customer"]; $dataModel = D("DataModelDataView"); $rowData = $dataModel->assignModelData($rowData, $modelIds); $formData["rows"] = reIndex($rowData); if ($formData["tax_amount"]) { $formData["includeTax"] = true; } /* * 相关单据 * **/ $relateItem = array(); $id = abs(intval($_GET["id"])); if (isAppLoaded("purchase")) { $relateItem = array_merge($relateItem, (array) D("Purchase")->toRelatedItem("Orders", $id)); } if (isAppLoaded("finance")) { $relateItem = array_merge($relateItem, (array) D("FinanceReceivePlan")->toRelatedItem("Orders", $id)); } if (isAppLoaded("produce")) { $relateItem = array_merge($relateItem, (array) D("ProducePlan")->toRelatedItem("Orders", $id)); } $formData["relatedItems"] = $relateItem; $this->response($formData); }
public function read() { if ($_GET["checkIsMaked"]) { return $this->checkIsMaked(); } $model = D("ProduceBomsView"); $rows = $model->where("ProduceBoms.plan_id=" . $_GET["id"])->select(); $modelIds = array(); foreach ($rows as $k => $v) { $tmp = explode(DBC("goods.unique.separator"), $v["factory_code_all"]); $factory_code = array_shift($tmp); $modelIds = array_merge($modelIds, $tmp); $rows[$k]["modelIds"] = $tmp; } $params = array($rows, $modelIds); tag("assign_dataModel_data", $params); $data = array("rows" => $params[0]); $this->response($data); }
protected function _filter(&$map) { if ($_GET["modelId"]) { $map["DataModelData.model_id"] = abs(intval($_GET["modelId"])); } if ($_GET['fieldAlias']) { $map["DataModelFields.field_name"] = $_GET['fieldAlias']; } if ($_GET["typeahead"]) { $map["DataModelData.data|DataModelData.pinyin"] = array("LIKE", "%{$_GET["typeahead"]}%"); } if ($_GET["source_id"]) { $map["DataModelData.source_id"] = abs(intval($_GET["source_id"])); } //根据分类查询对应的模型 if ($_GET["goods_id"]) { if (strpos($_GET["goods_id"], "_") !== false) { list($factory_code, $id, $catid) = explode("_", $_GET["goods_id"]); $model = D("GoodsCategory"); $category = $model->find($catid); if ($category) { $map["DataModel.alias"] = "product"; if (DBC("dataModel.showOnlyBind")) { $map["DataModelData.source_id"] = $catid; } } } else { $model = D("GoodsCatView"); $category = $model->find($_GET["goods_id"]); if ($category) { $map["DataModel.alias"] = "product"; if (DBC("dataModel.showOnlyBind")) { $map["DataModelData.source_id"] = $category["goods_category_id"]; } } } } if ($_GET["cat_id"]) { $map["DataModel.alias"] = "product"; } $map["DataModelData.deleted"] = 0; }
function checkAppRequirements($requirements) { $loadedApps = F("loadedApp"); $lost = array(); if (!$requirements) { return true; } foreach ($requirements as $app => $cond) { list($compare, $version) = explode(" ", $cond); if (!array_key_exists($app, $loadedApps) && $app !== "ones") { $lost[] = $app; continue; } $currentVersion = $loadedApps[$app]; if ($app == "ones") { $currentVersion = DBC("system.version"); } //当前为判断系统版本 if ($app === "ones") { if (!version_compare($currentVersion, $version, $compare)) { if ($app === "ones") { return array("ones" => $compare . $version); } else { $lost[] = sprintf("%s %s v%s needed.", $app, $compare, $version); } } } } return $lost ? $lost : true; }
public function __construct() { parent::__construct(); $this->serviceUri = DBC("remote.service.uri"); $this->lang = strtolower(C("LANG")); }
/** * 包含模型数据 * @param $sourceData 源多条数据 * @param $modelDataIds 所有包含的模型ID * @param $modelAlias */ public function assignModelData($sourceData, $modelDataIds = false) { $modelData = array(); //无model data id时 if (!$modelDataIds or $modelDataIds === "product") { $modelDataIds = array(); foreach ($sourceData as $k => $v) { if ($v["factory_code_all"]) { $tmp = explode(DBC("goods.unique.separator"), $v["factory_code_all"]); //根据factory_code_all factory_code - standard - version $factory_code = array_shift($tmp); $modelDataIds = array_merge($modelDataIds, $tmp); $sourceData[$k]["modelIds"] = $tmp; } } //model data id为product modelAlias时 } else { if (!is_array($modelDataIds)) { // $modelDataIds为模型alias $dataModelObject = D("DataModel"); $theDataModel = $dataModelObject->getByAlias($modelDataIds); foreach ($sourceData as $v) { $sourceIds[$v["id"]] = $v["id"]; } $tmp = $this->where(array("model_id" => $theDataModel["id"], "source_id" => array("IN", implode(",", $sourceIds))))->select(); $modelDataIdsQueryd = array(); foreach ($tmp as $v) { $modelDataIdsQueryd[$v["source_id"]][] = $v["id"]; $modelData[$v["id"]] = $v; } foreach ($sourceData as $k => $v) { $sourceData[$k]["modelIds"] = $modelDataIdsQueryd[$v["id"]]; } $modelDataIds = $modelDataIdsQueryd; } } if (empty($modelDataIds)) { return $sourceData; } if (!$modelData) { $tmp = $this->where(array("id" => array("IN", implode(",", $modelDataIds))))->select(); foreach ($tmp as $v) { $modelData[$v["id"]] = $v; } } foreach ($sourceData as $k => $v) { if (!$v["modelIds"]) { continue; } foreach ($v["modelIds"] as $mid) { $fieldConf = explode("\n", $modelData[$mid]["extra_data"]); if (in_array("bindToLabel::true", $fieldConf)) { $sourceData[$k][$modelData[$mid]["field_name"]] = $mid; $sourceData[$k][$modelData[$mid]["field_name"] . "_label"] = $modelData[$mid]["data"]; } else { $sourceData[$k][$modelData[$mid]["field_name"]] = $modelData[$mid]["data"]; } } } return $sourceData; }
public function read() { if (!$_GET["includeRows"] or $_GET['workflow']) { return parent::read(); } $formDatas = parent::read(true); $rowModel = D("StockinDetailView"); if ($formDatas["id"]) { $isSingle = true; $formDatas = array($formDatas); } foreach ($formDatas as $id => $formData) { $formData["dateline"] *= 1000; $formData["stock_manager"] = toTruename($formData["stock_manager"]); $rows = $rowModel->where("StockinDetail.stockin_id=" . $formData["id"])->select(); $modelIds = array(); $rowData = array(); foreach ($rows as $v) { $tmp = explode(DBC("goods.unique.separator"), $v["factory_code_all"]); //根据factory_code_all factory_code - standard - version $factory_code = array_shift($tmp); $modelIds = array_merge($modelIds, $tmp); $v["modelIds"] = $tmp; $v["stock"] = $v["stock_id"]; $v["stock_label"] = $v["stock_name"]; $v["goods_id"] = sprintf("%s_%s_%s", $factory_code, $v["goods_id"], $v["goods_category_id"]); // factory_code, id, catid $v["goods_id_label"] = sprintf("%s", $v["goods_name"]); $v["total_num"] = $v["num"]; $v["num"] = $v["num"] - $v["ined"]; $rowData[$v["id"]] = $v; } $params = array($rowData, $modelIds); tag("assign_dataModel_data", $params); $formData["rows"] = reIndex($params[0]); if ($formData["source_model"] && $formData["source_id"]) { $sourceModel = D($formData["source_model"] . "View"); $formData["source"] = $sourceModel->find($formData["source_id"]); if ($_GET["includeRelated"]) { try { $model = D($formData["source_model"]); $related = $model->getRelatedItem($formData["source_id"]); $formData["relatedItems"][] = $related; } catch (Exception $e) { } if ($_GET["includeSourceRows"]) { $model = D($formData["source_model"] . "DetailView"); $foreignKey = $model->foreignKey ? $model->foreignKey : lcfirst($formData["source_model"]) . "_id"; $map[$foreignKey] = $formData["source_id"]; $formData["source_detail"] = $model->where($map)->select(); } } } $results[] = $formData; } if ($isSingle) { $this->response($formData); return; } $response = array("count" => count($results), "datas" => $results); $this->response($response); }
public static function data_field_format($value, $type) { switch ($type) { case "integer": $value = (string) $value; $value = (int) $value; break; case "foreign": $value && ($value = (int) $value); break; case "float": case "decimal": $value = (string) $value; $value = round($value, DBC('decimal_scale')); break; case "boolean": $value = (bool) $value ? 1 : -1; break; case "enum": $value = (string) $value; if (is_numeric($value)) { $value = (int) $value; } break; } return $value; }
/** * 1、修改库存数量 判断库存数量 * 2、修改出库单状态 * 3、判断是否已完全出库 * * 在显示确认出库页面时获取的数据已经减去了已出库的数量 * 所以仅需按照提交的表单进行处理即可。 * * 三种情况:足额出库 * 超额出库 * 未完全出库 */ public function run() { //判定是否已完全出库 $stockout = D("Stockout"); $theStockout = $stockout->find($this->mainrowId); if (!$_REQUEST["donext"]) { if ($theStockout["outed_num"] >= $theStockout["total_num"]) { $data = array("type" => "message", "error" => "true", "msg" => "all_have_outed_stock"); } else { $data = array("type" => "redirect", "location" => sprintf("/doWorkflow/Stockout/confirm/%d/%d", $this->currentNode["id"], $this->mainrowId)); } $this->response($data); } $data = $_POST["data"]; $dm = D("StockoutDetail"); $stockout->startTrans(); $totalOuted = 0; $storeProduct = D("StockProductList"); $dataModel = D("DataModel")->getByAlias("product"); $tmp = D("DataModelFields")->where("model_id=" . $dataModel["id"])->select(); $dataModelFields = array(); foreach ($tmp as $field) { $dataModelFields[] = $field["field_name"]; } $stockLog = D("StockLog"); $logs = array(); foreach ($data["rows"] as $k => $v) { if (!$v or !$v["id"]) { continue; } //未选择出库仓库 if (!$v["stock"]) { $stockout->rollback(); $this->error("select_stock"); return "error"; } if (strpos($v["goods_id"], "_") !== false) { list($fc, $v["goods_id"], $catid) = explode("_", $v["goods_id"]); } //本次出库总数量 $totalOuted += $v["num"]; //更新本行出库数量 $dm->where("id=" . $v["id"])->setInc("outed", $v["num"]); //出库日志(工作流MEMO) //dataModel $modelData = ""; foreach ($dataModelFields as $f) { $modelData .= "/" . $v[$f . "_label"]; } $tmp = sprintf("%s%s: %s (%s)", $v["goods_name"], $modelData, $v["num"], $v["stock_label"]); array_push($logs, $tmp); //减少库存 $storeProduct->where(array("factory_code_all" => $v["factory_code_all"], "stock_id" => $v["stock"]))->setDec("num", $v["num"]); //记录库存操作日志 $stockLog->record(array("factory_code_all" => $v["factory_code_all"], "repository_id" => $v["stock"], "num" => $v["num"], "source_id" => $this->mainrowId, "source_row_id" => $v["id"], "dateline" => CTS, "type" => 2, "memo" => $v["memo"], "goods_id" => $v["goods_id"])); } //不允许负数库存存在, 库存自动清零 //@todo 判断库存数量 if (!DBC("allow_negative_store")) { $storeProduct->where("num<0")->save(array("num" => 0)); } //更新出库单信息 $theStockout = $stockout->find($this->mainrowId); if ($theStockout["status"] == 1) { $stockout->where("id=" . $this->mainrowId)->setInc("outed_num", $totalOuted); } else { //第一次出库 $stockout->where("id=" . $this->mainrowId)->save(array("memo" => $data["memo"], "status" => 1, "outtime" => CTS, "outed_num" => $totalOuted, "stock_manager" => getCurrentUid())); } //本次出库日志 $this->context['memo'] = implode("\n", $logs); $stockout->commit(); }
public function get_full_data($id) { if (!$this->check_params()) { $this->error = __('common.System Error'); return false; } $meta = D($this->main_model, 'Model')->where(['id' => $id])->find(); if (!$meta) { // @todo error_message return false; } if ($this->is_locked($meta['status'])) { $meta['locked'] = true; } $meta = Schema::data_format($meta, $this->main_table, true); $detail_model = D($this->detail_model, 'Model'); $rows = $detail_model->where([$this->detail_main_foreign => $id])->select(); // 本次出入库数量 if ($this->include_this_time_quantity && $this->balance_direction) { foreach ($rows as $k => $v) { $this_time_quantity_field = sprintf('this_time_%s_quantity', $this->balance_direction); $rows[$k][$this_time_quantity_field] = round($v['quantity'] - $v['already_' . $this->balance_direction], DBC('decimal_scale')); } } $rows = Schema::data_format($rows, $this->detail_table, true); // 工作流进程 $progress_service = D('Bpm/WorkflowProgress'); $meta['workflow_progress'] = $progress_service->get_progress($meta['workflow_id'], $meta['id']); // 产品属性 if (AppService::is_app_active('productAttribute')) { $rows = D('ProductAttribute/ProductAttribute')->assign_to_by_product_unique($rows, $this->detail_model_alias); } return ['meta' => $meta, 'rows' => $rows]; }
function decimal_scale($value) { $scale = DBC('decimal_scale'); $scale = $scale ? $scale : 2; return sprintf('%.' . $scale . 'f', $value); }
}, basePath: '<?php echo $APP_PATH; ?> ', userInfo: <?php echo $userInfo; ?> , asyncScript: [], }; <?php if (DBC('site.html5.mode')) { ?> ones.useHTML5 = <?php echo DBC('site.html5.mode'); ?> ;<?php } ?> </script> <?php if (is_array($javascripts)) { foreach ($javascripts as $key => $js) { ?> <script src="<?php echo $js; ?> "></script><?php } }
public function get_full_info($id) { $current_node = $last_node = $this->where(['id' => $id])->find(); $this_line_nodes = []; for ($i = $last_node['type'] - 1; $i >= 0; $i--) { $current_node = $this_line_nodes['type_' + $i] = $this->where(['id' => $current_node['parent_id']])->find(); } array_unshift($this_line_nodes, $last_node); $this_line_nodes = array_reverse($this_line_nodes); $response = ['full_name' => '', 'selected_region_item_ids' => [], 'selected_region_item' => []]; foreach ($this_line_nodes as $p) { if (DBC('region_ignore_country') > 0 && $p['type'] == 0) { } else { array_push($response['selected_region_item_ids'], (int) $p['id']); array_push($response['selected_region_item'], ['id' => (int) $p['id'], 'type' => (int) $p['type'], 'name' => $p['name']]); $response['full_name'] .= $p['name']; } } return $response; }