function export_order($id) { global $FANNIE_OP_DB, $FANNIE_ROOT; $dbc = FannieDB::get($FANNIE_OP_DB); $order = new PurchaseOrderModel($dbc); $order->orderID($id); $order->load(); $items = new PurchaseOrderItemsModel($dbc); $items->orderID($id); $vendor = new VendorsModel($dbc); $vendor->vendorID($order->vendorID()); $vendor->load(); $contact = new VendorContactModel($dbc); $contact->vendorID($order->vendorID()); $contact->load(); if (!class_exists('FPDF')) { include_once $FANNIE_ROOT . 'src/fpdf/fpdf.php'; } $pdf = new FPDF('P', 'mm', 'Letter'); $pdf->AddPage(); $pdf->SetFont('Arial', '', '12'); $pdf->Cell(100, 5, 'Vendor: ' . $vendor->vendorName(), 0, 0); $pdf->Cell(100, 5, 'Date: ' . date('Y-m-d'), 0, 0); $pdf->Ln(); $pdf->Cell(100, 5, 'Phone: ' . $contact->phone(), 0, 0); $pdf->Cell(100, 5, 'Fax: ' . $contact->fax(), 0, 0); $pdf->Ln(); $pdf->Cell(100, 5, 'Email: ' . $contact->email(), 0, 0); $pdf->Cell(100, 5, 'Website: ' . $contact->website(), 0, 0); $pdf->Ln(); $pdf->MultiCell(0, 5, "Ordering Info:\n" . $contact->notes(), 'B'); $pdf->Ln(); $cur_page = 0; $pdf->SetFontSize(10); foreach ($items->find() as $obj) { if ($cur_page != $pdf->PageNo()) { $cur_page = $pdf->PageNo(); $pdf->Cell(25, 5, 'SKU', 0, 0); $pdf->Cell(20, 5, 'Order Qty', 0, 0); $pdf->Cell(30, 5, 'Brand', 0, 0); $pdf->Cell(65, 5, 'Description', 0, 0); $pdf->Cell(20, 5, 'Case Size', 0, 0); $pdf->Cell(20, 5, 'Est. Cost', 0, 0); $pdf->Ln(); } $pdf->Cell(25, 5, $obj->sku(), 0, 0); $pdf->Cell(20, 5, $obj->quantity(), 0, 0, 'C'); $pdf->Cell(30, 5, $obj->brand(), 0, 0); $pdf->Cell(65, 5, $obj->description(), 0, 0); $pdf->Cell(20, 5, $obj->caseSize(), 0, 0, 'C'); $pdf->Cell(20, 5, sprintf('%.2f', $obj->caseSize() * $obj->unitCost() * $obj->quantity()), 0, 0); $pdf->Ln(); } $pdf->Output('order_export.pdf', 'D'); }
public function export_order($id) { global $FANNIE_OP_DB; $dbc = FannieDB::get($FANNIE_OP_DB); $order = new PurchaseOrderModel($dbc); $order->orderID($id); $order->load(); $items = new PurchaseOrderItemsModel($dbc); $items->orderID($id); $columns = array('Product Code', 'Inventory Item', 'Invoice Number', 'Date', 'Unit', 'Quantity', 'Cost', 'Description', 'Alt. Unit Indicator', 'Alternate Unit'); foreach ($items->find() as $obj) { list($units, $unit_of_measure) = $this->getUnits($obj); echo $obj->sku() . ','; echo '"' . $obj->description() . '",'; echo $order->vendorInvoiceID() . ','; echo date('Ymd', strtotime($obj->receivedDate())) . ','; printf('%f,', $units * $obj->caseSize() * $obj->quantity()); echo $unit_of_measure . ','; printf('%.2f,', $obj->unitCost() * $obj->caseSize() * $obj->quantity()); echo '"' . $obj->description() . '",'; echo '"",'; // alt. indicator echo '"",'; // alt. unit echo "\r\n"; } }
function export_order($id) { global $FANNIE_OP_DB; $dbc = FannieDB::get($FANNIE_OP_DB); $order = new PurchaseOrderModel($dbc); $order->orderID($id); $order->load(); $items = new PurchaseOrderItemsModel($dbc); $items->orderID($id); $vendor = new VendorsModel($dbc); $vendor->vendorID($order->vendorID()); $vendor->load(); echo 'Vendor,"' . $vendor->vendorName() . '",Order Date,' . date('Y-m-d') . "\r\n"; echo "\r\n"; echo "SKU,\"Order Qty\",Brand,Description,\"Case Size\",\"Est. Cost\"\r\n"; foreach ($items->find() as $obj) { echo $obj->sku() . ','; echo $obj->quantity() . ','; echo '"' . $obj->brand() . '",'; echo '"' . $obj->description() . '",'; echo '"' . $obj->caseSize() . '",'; printf('%.2f', $obj->unitCost() * $obj->caseSize() * $obj->quantity()); echo "\r\n"; } }
public function guessCode() { $dbc = $this->connection; // case 1: item exists in products $deptP = $dbc->prepare(' SELECT d.salesCode FROM products AS p INNER JOIN departments AS d ON p.department=d.dept_no WHERE p.upc=?'); $deptR = $dbc->execute($deptP, array($this->internalUPC())); if ($dbc->numRows($deptR)) { $w = $dbc->fetchRow($deptR); return $w['salesCode']; } $order = new PurchaseOrderModel($dbc); $order->orderID($this->orderID()); $order->load(); // case 2: item is SKU-mapped but the order record // does not reflect the internal PLU $deptP = $dbc->prepare(' SELECT d.salesCode FROM vendorSKUtoPLU AS v ' . DTrans::joinProducts('v', 'p', 'INNER') . ' INNER JOIN departments AS d ON p.department=d.dept_no WHERE v.sku=? AND v.vendorID=?'); $deptR = $dbc->execute($deptP, array($this->sku(), $order->vendorID())); if ($dbc->numRows($deptR)) { $w = $dbc->fetchRow($deptR); return $w['salesCode']; } // case 3: item is not normally carried but is in a vendor catalog // that has vendor => POS department mapping $deptP = $dbc->prepare(' SELECT d.salesCode FROM vendorItems AS v INNER JOIN vendorDepartments AS z ON v.vendorDept=z.deptID AND v.vendorID=z.vendorID INNER JOIN departments AS d ON z.posDeptID=d.dept_no WHERE v.sku=? AND v.vendorID=?'); $deptR = $dbc->execute($deptP, array($this->sku(), $order->vendorID())); if ($dbc->numRows($deptR)) { $w = $dbc->fetchRow($deptR); return $w['salesCode']; } return false; }
/** * WarningModel::addStock() * 生成海外备货清单 * @param string $ids * @param string $purchase * @return bool */ public static function addStock($ids, $purchase) { self::initDB(); require_once WEB_PATH . "model/purchaseOrder.model.php"; $sql = "SELECT sku,goodsCost FROM " . self::$prefix . self::$showtab . " WHERE id IN ({$ids})"; $query = self::$dbConn->query($sql); if ($query) { $ret = self::$dbConn->fetch_array_all($query); $nowtime = time(); $stocksn = PurchaseOrderModel::autoCreateOrderSn(66, 3); $sqlstock = "INSERT INTO " . self::$prefix . self::$owtab . "(ordersn,adduser,addtime,status) VALUES('{$stocksn}','{$purchase}','{$nowtime}','1')"; $query = self::$dbConn->query($sqlstock); foreach ($ret as $v) { $skusql = "INSERT INTO " . self::$prefix . self::$owdetailtab . "(ordersn,sku,cost) VALUES('{$stocksn}', '{$v['sku']}', '{$v['goodsCost']}')"; $query = self::$dbConn->query($skusql); } return true; } else { self::$errCode = "1060"; self::$errMsg = "获取数据失败"; return false; } }
/** *功能:处理异常采购订单,例:采购补单、二次录入 *@param $type 处理类型 *@param $dataarray 料号 数量 *@param $purid 采购员编号 *日期:2013/08/05 *作者:王民伟 */ public static function handleUnusualOrder() { $checkPur = UnusualOrderAct::checkPower(); if ($checkPur !== true) { self::$errMsg = '无权限操作'; return false; } $type = $_GET['type']; $dataarray = $_GET['datalist']; $purid = $_GET['purid']; global $dbConn; $errArr = array(); if ($type == 'patchOrder') { //不能重复补单 if (!empty($dataarray)) { $dbConn->begin(); //开启事物 $datalist = explode('@', $dataarray); $datanum = count($datalist); for ($i = 0; $i < $datanum; $i++) { $infolist = explode('*', $datalist[$i]); if (count($infolist) == 3) { $oid = $infolist[0]; $oidlist = "('" . $oid . "')"; $sku = $infolist[1]; $amount = $infolist[2]; $skulist[] = $sku; $rtn_infolist = PurchaseOrderModel::getPurSkuInfo($skulist, $purid); //过滤不是自己负责的SKU,并返回所需数据 unset($skulist); if (empty($rtn_infolist)) { $errArr[] = $sku . '不属于你负责的sku'; } else { //符合条件开始补单 $info_list_num = count($rtn_infolist); for ($i = 0; $i < $info_list_num; $i++) { $detailinfo = array(); $rtn_sku = $rtn_infolist[$i]['sku']; //返回SKU $rtn_partner_id = $rtn_infolist[$i]['partnerid']; //返回供应商编号 $rtn_price = $rtn_infolist[$i]['goodsCost']; //返回采购单价 $isExistPatchOrdersn = PurchaseOrderModel::isExistPatchOrdersn($rtn_partner_id, $purid); //查找条件符合的补单号??? if (empty($isExistPatchOrdersn)) { //不存在符合的补单号 //此次需判断生成订单跟踪号前缀---0:SWB;1:FZ;2:ZG $recordnumber = PurchaseOrderModel::autoCreateOrderSn($purid, 0); //生成采购补单号 $maininfo['recordnumber'] = $recordnumber; //订单号 $maininfo['purchaseuser_id'] = $purid; //采购员编号 $maininfo['partner_id'] = $rtn_partner_id; //供应商编号 $maininfo['company_id'] = 1; //公司编号 $rtn_mainorder = PurchaseOrderModel::insertPatchMainOrder($maininfo); //添加补单主体信息 if ($rtn_mainorder) { //主体添加成功 $detailinfo['sku_id'] = PurchaseOrderModel::getSkuIdBySku($rtn_sku); //根据sku获SKU编号 $detailinfo['price'] = $rtn_price; //采购单价 $detailinfo['count'] = $amount; //补单数量 $detailinfo['sku'] = $sku; //sku $poid = PurchaseOrderModel::getOrderIdByNum($recordnumber); $rtn_detailorder = PurchaseOrderModel::insertPatchDetailOrder($poid, $detailinfo); if ($rtn_detailorder) { $rtn_api = ApiAct::update_unusualOrderSataus($purid, $oidlist, 'patchorder', $recordnumber); //通过API更新状态 if ($rtn_api) { $dbConn->commit(); } else { $dbConn->rollback(); $errArr[] = $sku . '仓库数据修改失败'; } } else { $dbConn->rollback(); $errArr[] = $sku . '详情增加失败'; } } else { $dbConn->rollback(); $errArr[] = $sku . '主订单增加失败'; } //self::$errMsg = 'success'; } else { //存在符合条件的补单号 $detailinfo['sku_id'] = PurchaseOrderModel::getSkuIdBySku($rtn_sku); //根据sku获SKU编号 $detailinfo['price'] = $rtn_price; //采购单价 $detailinfo['count'] = $amount; //补单数量 $detailinfo['sku'] = $sku; //sku $poid = PurchaseOrderModel::getOrderIdByNum($isExistPatchOrdersn); //根据跟踪号取编号 $rtn_detailorder = PurchaseOrderModel::insertPatchDetailOrder($poid, $detailinfo); //添加采购订单明细 if ($rtn_detailorder) { $rtn_api = ApiAct::update_unusualOrderSataus($purid, $oidlist, 'patchorder', $isExistPatchOrdersn); //通过API更新状态 if ($rtn_api) { $dbConn->commit(); } else { $dbConn->rollback(); $errArr[] = $sku . '仓库数据修改失败'; } } else { $dbConn->rollback(); $errArr[] = $sku . '详情增加失败'; } } } } } } } else { $errArr[] = '未传入sku数据'; } if (count($errArr) > 0) { $errStr = implode("<br/>", $errArr); self::$errMsg = $errStr; } else { self::$errCode = "111"; } } else { if ($type == 'secondStockIn') { //二次补录 if (!empty($dataarray)) { $datalist = explode('@', $dataarray); $datanum = count($datalist); for ($i = 0; $i < $datanum; $i++) { $infolist = explode('*', $datalist[$i]); if (count($infolist) == 3) { $oid = $infolist[0]; $oidlist = "('" . $oid . "')"; $sku = $infolist[1]; $amount = $infolist[2]; $skuid = PurchaseOrderModel::getSkuIdBySku($sku); if (empty($skuid)) { $errArr[] = $sku . "不存在库存中"; continue; } $rtnlist = PurchaseOrderModel::checkStockInOrder($skuid); if (!empty($rtnlist)) { //过滤找不到的,不再参与入库操作,否则会继续生成未订单 $rtn = PurchaseOrderAct::act_stockIn($sku, $amount); $rtn_api = ApiAct::update_unusualOrderSataus($purid, $oidlist, 'secondstockin', 'no'); if (!$rtn_api) { $errArr[] = $sku . "数据提交仓库系统失败"; break; } } else { $errArr[] = $sku . "未找到二次录入符合条件"; } } } } else { $errArr[] = "传参有误"; } if (count($errArr) > 0) { self::$errMsg = implode("<br/>", $errArr); return false; } self::$errCode = "111"; return true; } else { if ($type == 'setZero') { if (!empty($dataarray)) { $dataarray_num = count($dataarray); for ($i = 0; $i < $dataarray_num; $i++) { $oidlist .= "'" . $dataarray[$i] . "',"; } $oidlist = "(" . substr($oidlist, 0, strlen($oidlist) - 1) . ")"; $rtn_api = ApiAct::update_unusualOrderSataus($purid, $oidlist, 'setzero', 'no'); $rtn['msg'] = $rtn_api; } else { $rtn['msg'] = 'null'; } return $rtn; exit; } else { if ($type == 'comfirmOrder') { if (!empty($dataarray)) { $dataarray_num = count($dataarray); for ($i = 0; $i < $dataarray_num; $i++) { $oidlist .= "'" . $dataarray[$i] . "',"; } $oidlist = "(" . substr($oidlist, 0, strlen($oidlist) - 1) . ")"; $rtn_api = ApiAct::update_unusualOrderSataus($purid, $oidlist, 'comfirmorder', 'no'); $rtn['msg'] = $rtn_api; } else { $rtn['msg'] = 'null'; } return $rtn; } else { if ($type == 'backOrder') { //订单退货 $dataStr = trim($_GET['dataStr']); $order_type = trim($_GET['order_type']); $dbConn->begin(); if (!empty($dataarray) && !empty($dataStr) && !empty($order_type)) { $dataarray_num = count($dataarray); for ($i = 0; $i < $dataarray_num; $i++) { $oidlist .= "'" . $dataarray[$i] . "',"; } $oidlist = "(" . substr($oidlist, 0, strlen($oidlist) - 1) . ")"; //生成退货订单 $datalist = explode('@', $dataStr); $datanum = count($datalist); for ($i = 0; $i < $datanum; $i++) { $infolist = explode('*', $datalist[$i]); if (count($infolist) == 3) { $oid = $infolist[0]; $oidlist = "('" . $oid . "')"; $sku = $infolist[1]; $amount = $infolist[2]; $skulist[] = $sku; $rtn_infolist = PurchaseOrderModel::getPurSkuInfo($skulist, $purid); //过滤不是自己负责的SKU,并返回所需数据 unset($skulist); if (empty($rtn_infolist)) { $errArr[] = $sku . '不属于你负责的sku'; } else { //符合条件开始补单 $info_list_num = count($rtn_infolist); for ($i = 0; $i < $info_list_num; $i++) { $detailinfo = array(); $rtn_sku = $rtn_infolist[$i]['sku']; //返回SKU $rtn_partner_id = $rtn_infolist[$i]['partnerid']; //返回供应商编号 $rtn_price = $rtn_infolist[$i]['goodsCost']; //返回采购单价 $status_type = " status = 5 AND order_type = {$order_type}"; $isExistPatchOrdersn = PurchaseOrderModel::isExistPatchOrdersn($rtn_partner_id, $purid, $status_type); //查找条件符合的退货单??? if (empty($isExistPatchOrdersn)) { //不存在符合的单号 //此次需判断生成订单跟踪号前缀---0:SWB;1:FZ;2:ZG $recordnumber = PurchaseOrderModel::autoCreateOrderSn($purid, 0); //生成采购补单号 $maininfo['recordnumber'] = $recordnumber; //订单号 $maininfo['purchaseuser_id'] = $purid; //采购员编号 $maininfo['partner_id'] = $rtn_partner_id; //供应商编号 $maininfo['company_id'] = 1; //公司编号 $status = 5; $rtn_mainorder = PurchaseOrderModel::insertPatchMainOrder($maininfo, $status, $order_type); //添加主体信息 if ($rtn_mainorder) { //主体添加成功 $detailinfo['sku_id'] = PurchaseOrderModel::getSkuIdBySku($rtn_sku); //根据sku获SKU编号 $detailinfo['price'] = $rtn_price; //采购单价 $detailinfo['count'] = $amount; //数量 $detailinfo['sku'] = $sku; $poid = PurchaseOrderModel::getOrderIdByNum($recordnumber); $rtn_detailorder = PurchaseOrderModel::insertPatchDetailOrder($poid, $detailinfo); if ($rtn_detailorder) { $rtn_api = ApiAct::update_unusualOrderSataus($purid, $oidlist, 'backorder', 'no'); if ($rtn_api) { $dbConn->commit(); } else { $dbConn->rollback(); $errArr[] = $sku . '仓库数据修改失败'; } } else { $dbConn->rollback(); $errArr[] = $sku . '详情增加失败'; } } else { $dbConn->rollback(); $errArr[] = $sku . '主订单增加失败'; } //self::$errMsg = 'success'; } else { //存在符合条件的补单号 $detailinfo['sku_id'] = PurchaseOrderModel::getSkuIdBySku($rtn_sku); //根据sku获SKU编号 $detailinfo['price'] = $rtn_price; //采购单价 $detailinfo['count'] = $amount; //补单数量 $detailinfo['sku'] = $sku; $poid = PurchaseOrderModel::getOrderIdByNum($isExistPatchOrdersn); //根据跟踪号取编号 $rtn_detailorder = PurchaseOrderModel::insertPatchDetailOrder($poid, $detailinfo); //添加采购订单明细 if ($rtn_detailorder) { $rtn_api = ApiAct::update_unusualOrderSataus($purid, $oidlist, 'backorder', 'no'); if ($rtn_api) { $dbConn->commit(); } else { $dbConn->rollback(); $errArr[] = $sku . '仓库数据修改失败'; } } else { $dbConn->rollback(); $errArr[] = $sku . '详情增加失败'; } } } } } } } else { $errArr[] = "传参有误"; } if (count($errArr) > 0) { self::$errMsg = implode("<br/>", $errArr); return false; } self::$errCode = "111"; return true; } } } } } }
public function post_vendorID_invoice_num_po_num_invoice_date_handler() { $dbc = FannieDB::get($this->config->get('OP_DB')); $skus = FormLib::get('sku', array()); $upcs = FormLib::get('upc', array()); $descriptions = FormLib::get('desc', array()); $cases = FormLib::get('qty', array()); $units = FormLib::get('units', array()); $sizes = FormLib::get('size', array()); $costs = FormLib::get('unitCost', array()); $totals = FormLib::get('totalCost', array()); $order = new PurchaseOrderModel($dbc); $order->vendorID($this->vendorID); $order->creationDate($this->invoice_date); $order->placed(1); $order->placedDate($this->invoice_date); $order->vendorOrderID($this->po_num); $order->vendorInvoiceID($this->invoice_num); $order->userID(0); $orderID = $order->save(); $checkP = $dbc->prepare(' SELECT v.sku FROM vendorItems AS v WHERE v.vendorID=? AND v.upc <> \'0000000000000\' AND v.upc <> \'\' AND v.upc IS NOT NULL AND v.sku=?'); $vendorItem = new VendorItemsModel($dbc); $item = new PurchaseOrderItemsModel($dbc); for ($i = 0; $i < count($skus); $i++) { $sku = $skus[$i]; $upc = BarcodeLib::padUPC(isset($upcs[$i]) ? $upcs[$i] : ''); $qty = isset($cases[$i]) ? $cases[$i] : 1; $caseSize = isset($units[$i]) ? $units[$i] : 1; $unitSize = isset($sizes[$i]) ? $sizes[$i] : ''; $unitCost = isset($costs[$i]) ? $costs[$i] : 0; $totalCost = isset($totals[$i]) ? $totals[$i] : 0; $desc = isset($descriptions[$i]) ? substr($descriptions[$i], 0, 50) : ''; $item->reset(); $item->orderID($orderID); $item->sku($sku); $item->quantity($qty); $item->unitCost($unitCost); $item->caseSize($caseSize); $item->receivedDate($this->invoice_date); $item->receivedQty($qty); $item->receivedTotalCost($totalCost); $item->unitSize($unitSize); $item->brand(''); $item->description($desc); $item->internalUPC($upc); $item->save(); /** Add entries to vendor catalog if they don't exist */ $checkR = $dbc->execute($checkP, array($this->vendorID, $sku)); if ($checkR && $dbc->numRows($checkR) == 0) { $vendorItem->vendorID($this->vendorID); $vendorItem->sku($sku); $vendorItem->upc($upc); $vendorItem->description($desc); $vendorItem->brand(''); $vendorItem->units($caseSize); $vendorItem->size($unitSize); $vendorItem->cost($unitCost); $vendorItem->vendorDept(0); $vendorItem->save(); } } header('Location: ' . filter_input(INPUT_SERVER, 'PHP_SELF') . '?complete=' . $orderID); return false; }
public function addOrder() { global $dbConn; $dataArr = $_POST["dataArr"]; $now = time(); $status = 1; //未审核的订单 $order_type = 4; //采购补单 $warehouse_id = 1; $flag = array(); $unOrderIdArr = array(); $operater = $_SESSION['sysUserId']; $skuObj = new SkuAct(); $skuComObj = new CommonAct(); foreach ($dataArr as $item) { $price = PurchaseOrderModel::getPriceBySku($item['sku']); //SKU单价 $partnerId = CommonAct::actgetPartnerIdBySku($item['sku']); //供应商ID $orderData = $this->getOrderSN($partnerId, $item['purchaseId'], 4); //判断同供应商、采购员跟踪号是否已存在 $orderSN = $orderData['recordnumber']; if (isset($orderSN)) { //同一个供应商的订单已经存在 $poid = $orderData['id']; $recordnumber = $orderSN; } else { $recordnumber = $this->autoCreateOrderSn($item['purchaseId'], 1); $sql = "INSERT INTO `ph_order`(`recordnumber`, `addtime`, `aduittime`, `status`, `order_type`, `warehouse_id`, `purchaseuser_id`, `aduituser_id`, `partner_id`, `company_id`, `note`) VALUES ('{$recordnumber}',{$now},{$now},{$status},{$order_type},{$warehouse_id},{$item['purchaseId']},{$item['purchaseId']},{$partnerId},1,'异常到货采购补单')"; if ($dbConn->execute($sql)) { $poid = PurchaseOrderModel::getOrderIdByNum($recordnumber); //根据跟踪号取采购主订单编号 } } if (isset($poid)) { $sql = "select id totalNum from ph_order_detail where sku='{$item['sku']}' and po_id='{$poid}' "; $sql = $dbConn->execute($sql); $detailInfo = $dbConn->fetch_one($sql); if (isset($detailInfo['id'])) { $sql = "update ph_order_detail set count=count+{$item['num']} WHERE id='{$poid}'"; } else { $sql = "insert into ph_order_detail (po_id,unOrderId,recordnumber,sku,count,price,stockqty) values ({$poid},'{$item['unOrderId']}','{$recordnumber}','{$item['sku']}',{$item['num']},{$price},'{$item['num']}')"; } if ($dbConn->execute($sql)) { $usql = "UPDATE `ph_sku_reach_record` SET `ordersn`='{$recordnumber}',operatime={$now}, operatorId={$operater},status = 1 WHERE id={$item['id']}"; //$skuObj->tallySkuRecord($item['sku'],$item['num'],1); // hold 住一部分数量 $dbConn->execute($usql); $skuComObj->calcAlert($item['sku']); $flag[] = 1; $unOrderIdArr[] = $item["unOrderId"]; } else { $flag[] = 0; } } } //$pushObj = new CommonAct(); //$pushObj->setTallyIsUse($unOrderIdArr); return json_encode($flag); }
/** *根据供应商编号获取额度、预警额度、是否签约 *@param $id 订单编号数组 *日期:2013/11/27 *作者:王民伟 */ public static function getParInfo($id) { self::initDB(); $sql = "SELECT * FROM ph_partner WHERE id={$id} "; $query = self::$dbConn->query($sql); if ($query) { $ret = self::$dbConn->fetch_array_all($query); if (empty($ret[0])) { self::$errMsg = "无数据"; return false; } return $ret; } self::$errMsg = "获取数据失败"; return false; }
/** * 生成海外备货单,根据下单人合并订单明细 * Enter description here ... */ public function createOwOrder() { global $dbConn; $skulist = $_POST['skulist']; $operator_id = $_SESSION[C('USER_AUTH_SYS_ID')]; //操作人员ID $comid = $_SESSION[C('USER_COM_ID')]; //公司ID $type = $_POST['type']; $rollback = false; $existSku = ''; $ismark = 0; BaseModel::begin(); //开始事务 foreach ($skulist as $key => $sku) { $price = PurchaseOrderModel::getPriceBySku($sku['sku']); //SKU单价 $purid = OwOrderModel::getPurchaseidBySku($sku['sku']); $parid = OwOrderModel::getPartnerId($sku['sku']); //供应商ID $parid = $parid['partnerId']; $storeid = 1; //仓库ID $orderData = OwOrderModel::getOwOrderNum($operator_id); //判断同操作员跟踪号是否已存在(未审核状态下) $orderSN = $orderData['recordnumber']; $main = array(); $detail = array(); if (!empty($orderSN)) { //存在符合条件的跟踪号,直接插入采购订单明细 /* $orderHasSku = OwOrderModel::orderExistSku($sku['sku']); if($orderHasSku){ $existSku .= '['.$sku['sku'].'],'; continue; }*/ $detail['sku'] = $sku['sku']; $detail['price'] = $price; //单价 $detail['count'] = $sku['rec']; //采购数量 $detail['goods_recommend_count'] = $sku['rec']; //采购数量 $detail['recordnumber'] = $orderData['recordnumber']; $poid = $orderData['id']; //根据跟踪号取采购主订单编号 $detail['parid'] = $parid; //料号供应商ID $detail['po_id'] = $poid; $dataSet = array2sql($detail); $sql = "insert into ph_ow_order_detail set {$dataSet} "; $rtndetail = $dbConn->execute($sql); if ($rtndetail === false) { $rollback = true; } else { $ismark = 1; } } else { //不存在符合条件的跟踪号重新生成 $recordnumber = PurchaseOrderModel::autoCreateOrderSn($purid, $comid); //生成对应公司的采购订单跟踪号 if (!empty($recordnumber)) { //生成采购订单号成功 $main['recordnumber'] = $recordnumber; //跟踪号 $main['purchaseuser_id'] = $purid; //采购员ID $main['operator_id'] = $operator_id; //操作人员id $main['warehouse_id'] = $storeid; //仓库ID $main['company_id'] = $comid; //公司编号 $main['partner_id'] = $parid; //供应商ID $main['addtime'] = time(); if ($type == "oversea") { $main['order_type'] = 5; // 给海外仓备货的订单 } else { $main['order_type'] = 1; // 正常订单 } $dataSet = array2sql($main); $sql = "insert into ph_ow_order set {$dataSet} "; $rtnmain = $dbConn->execute($sql); if ($rtnmain) { //主订单添加成功 /* $orderHasSku = OwOrderModel::orderExistSku($sku['sku']); if($orderHasSku){ $existSku .= '['.$sku['sku'].'],'; continue; }*/ $detail['sku'] = $sku['sku']; $detail['price'] = $price; //单价 $detail['count'] = $sku['rec']; //采购数量 $detail['goods_recommend_count'] = $sku['rec']; //采购数量 $detail['parid'] = $parid; //料号供应商ID $detail['recordnumber'] = $recordnumber; $poid = OwOrderModel::getOwPoid($recordnumber); //根据跟踪号取采购主订单编号 $detail['po_id'] = $poid; $dataSet = array2sql($detail); $sql = "insert into ph_ow_order_detail set {$dataSet} "; $rtndetail = $dbConn->execute($sql); if ($rtndetail === false) { $rollback = true; } else { $ismark = 1; } } else { $rollback = true; } } else { $rollback = true; } } } //$existSku = substr($existSku, 0, strlen($existSku) - 1); if ($rollback == false) { //if($ismark == 1){ BaseModel::commit(); BaseModel::autoCommit(); $result['msg'] = 'yes'; //}else{ // $result['msg'] = 'warn'; //} //$result['tip'] = $existSku; } else { BaseModel::rollback(); BaseModel::autoCommit(); $result['msg'] = 'no'; } return json_encode($result); }
function process_file($linedata) { global $FANNIE_OP_DB; $dbc = FannieDB::get($FANNIE_OP_DB); $skuCol = $this->get_column_index('sku'); $costCol = $this->get_column_index('cost'); $uQtyCol = $this->get_column_index('unitQty'); $cQtyCol = $this->get_column_index('caseQty'); $uSizeCol = $this->get_column_index('unitSize'); $cSizeCol = $this->get_column_index('caseSize'); $brandCol = $this->get_column_index('brand'); $descCol = $this->get_column_index('desc'); $upcCol = $this->get_column_index('upc'); $upccCol = $this->get_column_index('upcc'); $vendorID = FormLib::get('vendorID'); $inv = FormLib::get('identifier', ''); $orderDate = FormLib::get('orderDate', date('Y-m-d H:i:s')); $recvDate = FormLib::get('recvDate', ''); $order = new PurchaseOrderModel($dbc); $order->vendorID($vendorID); $order->creationDate($orderDate); $order->placedDate($orderDate); $order->placed(1); $order->userID(FannieAuth::getUID()); $order->vendorOrderID($inv); $order->vendorInvoiceID($inv); $orderID = $order->save(); $item = new PurchaseOrderItemsModel($dbc); $info = new VendorItemsModel($dbc); $ret = ''; foreach ($linedata as $line) { if (!isset($line[$skuCol])) { continue; } if (!isset($line[$costCol])) { continue; } $sku = $line[$skuCol]; $cost = $line[$costCol]; $cost = trim($cost, ' '); $cost = trim($cost, '$'); if (!is_numeric($cost)) { $ret .= "<i>Omitting item {$sku}. Cost {$cost} isn't a number</i><br />"; continue; } $unitQty = $uQtyCol !== false && isset($line[$uQtyCol]) ? $line[$uQtyCol] : 0; $caseQty = $cQtyCol !== false && isset($line[$cQtyCol]) ? $line[$cQtyCol] : 0; if ($unitQty == 0 && $caseQty == 0) { // no qty specified. continue; } $unitSize = $uSizeCol !== false && isset($line[$uSizeCol]) ? $line[$uSizeCol] : 0; $caseSize = $cSizeCol !== false && isset($line[$cSizeCol]) ? $line[$cSizeCol] : 0; $brand = $brandCol !== '' && isset($line[$brandCol]) ? $line[$brandCol] : ''; $desc = $descCol !== false && isset($line[$descCol]) ? $line[$descCol] : ''; $upc = ''; if ($upcCol !== false && isset($line[$upcCol])) { $upc = BarcodeLib::padUPC($line[$upcCol]); } elseif ($upccCol !== false && isset($line[$upccCol])) { $upc = BarcodeLib::padUPC($line[$upccCol]); $upc = '0' . substr($upc, 0, 12); } $info->reset(); $info->vendorID($vendorID); $info->sku($sku); if ($info->load()) { if ($brand === '') { $brand = $info->brand(); } if ($desc === '') { $desc = $info->description(); } if ($unitSize === 0) { $unitSize = $info->size(); } if ($caseSize === 0) { $caseSize = $info->units(); } $upc = $info->upc(); } if ($caseQty == 0 && $unitQty != 0) { if ($caseSize == 0) { $caseQty = $unitQty; $caseSize = 1; } else { $caseQty = $unitQty / $caseSize; } } elseif ($caseQty != 0 && $unitQty == 0) { if ($caseSize == 0) { $unitQty = $caseQty; $caseSize = 1; } else { $unitQty = $caseQty * $caseSize; } } elseif ($caseQty != 0 && $unitQty != 0) { if ($caseSize == 0) { $caseSize = $caseQty / $unitQty; } } $unitCost = $cost / $unitQty; $item->orderID($orderID); $item->sku($sku); if ($item->load()) { // multiple records for same item $item->quantity($caseQty + $item->quantity()); if ($recvDate !== '') { $item->receivedTotalCost($cost + $item->receivedTotalCost()); $item->receivedQty($caseQty + $item->receivedQty()); $item->receivedDate($recvDate); } } else { $item->quantity($caseQty); if ($recvDate !== '') { $item->receivedTotalCost($cost); $item->receivedQty($caseQty); $item->receivedDate($recvDate); } } $item->unitCost($unitCost); $item->caseSize($caseSize); $item->brand($brand); $item->description($desc); $item->internalUPC($upc); $item->save(); } $ret .= "<p>Import Complete"; $ret .= '<br />'; $ret .= '<a href="' . $this->config->get('URL') . 'purchasing/ViewPurchaseOrders.php?id=' . $orderID . '">View Order</a></p>'; $this->results = $ret; return true; }
public function get_id_adjust_view() { $dbc = FannieDB::get($this->config->get('OP_DB')); $order = new PurchaseOrderModel($dbc); $order->orderID($this->adjust); $order->load(); $orderJSON = $order->toJSON(); $items = new PurchaseOrderItemsModel($dbc); $items->orderID($this->adjust); $itemsJSON = '['; foreach ($items->find() as $item) { $itemsJSON .= $item->toJSON() . ','; } if (strlen($itemsJSON) > 1) { $itemsJSON = substr($itemsJSON, 0, strlen($itemsJSON) - 1); } $itemsJSON .= ']'; $orderJSON = str_replace('\\', '\\\\', $orderJSON); $itemsJSON = str_replace('\\', '\\\\', $itemsJSON); $this->addOnloadCommand("existingOrder('{$orderJSON}', '{$itemsJSON}');\n"); return $this->get_id_view(); }
public function addNewOrder() { global $dbConn; $skulist = $_POST['skulist']; //$purchaseId = $_SESSION[C('USER_AUTH_SYS_ID')];//采购员ID $purchaseId = $skulist[0]["cguserId"]; //采购员ID $comid = $_SESSION[C('USER_COM_ID')]; //公司ID $skuComObj = new CommonAct(); //重新计算这个sku 的已订购数量 $purchaseOrder = new PurchaseOrderAct(); $rollback = false; foreach ($skulist as $sku) { $price = $sku['price']; //SKU单价 $partnerId = $purchaseOrder->getPartnerId($sku['sku']); //供应商ID $partnerId = $partnerId['partnerId']; $storeid = 1; //仓库ID $orderData = $purchaseOrder->getOrderSN($partnerId, $purchaseId); //判断同供应商、采购员跟踪号是否已存在 $orderSN = $orderData['recordnumber']; $main = array(); $detail = array(); if (!empty($orderSN)) { //存在符合条件的跟踪号,直接插入采购订单明细 $detail['sku'] = $sku['sku']; $detail['price'] = $price; //单价 $detail['count'] = $sku['rec']; //采购数量 $detail['goods_recommend_count'] = $sku['rec']; //采购数量 $dataSet = array2sql($detail); $sql = "insert into ph_order_detail set {$dataSet} "; $dbConn->execute($sql); } else { //不存在符合条件的跟踪号重新生成 $recordnumber = PurchaseOrderModel::autoCreateOrderSn($purchaseId, $comid); //生成对应公司的采购订单跟踪号 if (!empty($recordnumber)) { //生成采购订单号成功 $main['recordnumber'] = $recordnumber; //跟踪号 $main['purchaseuser_id'] = $purchaseId; //采购员ID $main['warehouse_id'] = $storeid; //仓库ID $main['partner_id'] = $partnerId; //供应商ID $main['company_id'] = $comid; //公司编号 $dataSet = array2sql($main); $sql = "insert into ph_order set {$dataSet} "; $dbConn->execute($sql); if ($rtnmain) { //主订单添加成功 $detail['sku'] = $sku['sku']; $detail['price'] = $price; //单价 $detail['count'] = $sku['rec']; //采购数量 $detail['goods_recommend_count'] = $sku['rec']; //采购数量 $detail['recordnumber'] = $recordnumber; $dataSet = array2sql($detail); $sql = "insert into ph_order_detail set {$dataSet} "; $dbConn->execute($sql); $skuComObj->calcAlert($detail['sku']); //重新计算已订购数量 } } } } }
/** Receiving AJAX callback. Lookup item in the order and display form fields to enter required info */ public function get_id_sku_handler() { $dbc = $this->connection; $model = new PurchaseOrderItemsModel($dbc); $model->orderID($this->id); $model->sku($this->sku); // lookup by SKU but if nothing is found // try using the value as a UPC instead $found = false; if ($model->load()) { $found = true; } else { $model->reset(); $model->orderID($this->id); $model->internalUPC(BarcodeLib::padUPC($this->sku)); $matches = $model->find(); if (count($matches) == 1) { $model = $matches[0]; $found = true; } } // item not in order. need all fields to add it. if (!$found) { echo '<div class="alert alert-danger">SKU not found in order</div>'; echo '<form onsubmit="saveReceive(); return false;">'; echo '<table class="table table-bordered">'; echo '<tr><th>SKU</th><th>UPC</th><th>Brand</th><th>Description</th> <th>Qty Ordered</th><th>Cost (est)</th><th>Qty Received</th><th>Cost Received</th></tr>'; $order = new PurchaseOrderModel($dbc); $order->orderID($this->id); $order->load(); $item = new VendorItemsModel($dbc); $item->vendorID($order->vendorID()); $item->sku($this->sku); $item->load(); printf('<tr> <td>%s<input type="hidden" name="sku" value="%s" /></td> <td><input type="text" class="form-control" name="upc" value="%s" /></td> <td><input type="text" class="form-control" name="brand" value="%s" /></td> <td><input type="text" class="form-control" name="description" value="%s" /></td> <td><input type="text" class="form-control" name="orderQty" value="%s" /></td> <td><input type="text" class="form-control" name="orderCost" value="%.2f" /></td> <td><input type="text" class="form-control" name="receiveQty" value="%s" /></td> <td><input type="text" class="form-control" name="receiveCost" value="%.2f" /></td> <td><button type="submit" class="btn btn-default">Add New Item</button><input type="hidden" name="id" value="%d" /></td> </tr>', $this->sku, $this->sku, $item->upc(), $item->brand(), $item->description(), 1, $item->cost() * $item->units(), 0, 0, $this->id); echo '</table>'; echo '</form>'; } else { // item in order. just need received qty and cost echo '<form onsubmit="saveReceive(); return false;">'; echo '<table class="table table-bordered">'; echo '<tr><th>SKU</th><th>UPC</th><th>Brand</th><th>Description</th> <th>Qty Ordered</th><th>Cost (est)</th><th>Qty Received</th><th>Cost Received</th></tr>'; if ($model->receivedQty() === null) { $model->receivedQty($model->quantity()); } if ($model->receivedTotalCost() === null) { $model->receivedTotalCost($model->quantity() * $model->unitCost() * $model->caseSize()); } printf('<tr> <td>%s<input type="hidden" name="sku" value="%s" /></td> <td>%s</td> <td>%s</td> <td>%s</td> <td>%s</td> <td>%.2f</td> <td><input type="text" class="form-control" name="qty" value="%s" /></td> <td><input type="text" class="form-control" name="cost" value="%.2f" /></td> <td><button type="submit" class="btn btn-default">Save</button><input type="hidden" name="id" value="%d" /></td> </tr>', $this->sku, $this->sku, $model->internalUPC(), $model->brand(), $model->description(), $model->quantity(), $model->quantity() * $model->unitCost() * $model->caseSize(), $model->receivedQty(), $model->receivedTotalCost(), $this->id); echo '</table>'; echo '</form>'; } return false; }
/** * ProductStockalarmModel::updateWarnNew() * 新更新选择料号的预警信息 * @param array skuArr 料号数组 * @param int gid 采购员ID * @return bool */ public static function updateWarnNew($sku) { self::initDB(); $res = CommonModel::getSkuInfo($sku); print_r($res); exit; $res = json_decode($res, true); $days7 = 0.7; $days15 = 0.2; $days30 = 0.1; $dataarray = array(); $run_starttime = time(); $first_sale = CommonModel::getSkuFirstSaleTime($sku); $last_sale = CommonModel::getSkuLastSaleTime($sku); $stock_qty = CommonModel::getSkuStockqty($sku); // 实际库存 $everyday_sale = $res[0]['everyday_sale']; // 每日均量 $purchase_days = $res[0]['purchasedays']; // 采购天数 $alert_days = $res[0]['goods_days']; // 预警天数 $warehouse_id = 76; // 仓库编号 $partner_id = 0; // 供应商编号 $salensend = CommonModel::getSkuSalensend($sku); // 待发货数量 $interceptnums = CommonModel::getSkuInterceptnums($sku); // 拦截数量 $autointerceptnums = CommonModel::getSkuAutointerceptnums($sku); // 自动拦截数量 $auditingnums = CommonModel::getSkuAuditingnums($sku); // 审核数量 $hasbooknum = PurchaseOrderModel::hasBookNum($skuid, $warehouse_id, $purid); // 已订购数量 $hasbooknum = !empty($hasbooknum) ? $hasbooknum : 0; if ($first_sale > 0) { $time = time() - $first_sale; $saleday = ceil($time / (3600 * 24)); // 至今距离第一次卖出时间天数 $thirtycheck = time() - 30 * 24 * 3600; // 一个月前 $totalqty = $stock_qty + $hasbooknum; // 总库存=实际库存+已订购数量 $hasuseqty = $totalqty - $salensend - $interceptnums - $auditingnums - $autointerceptnums; // 可用库存数量 if ($saleday > 30) { if ($last_sale > $thirtycheck) { // 最近一次卖出时间已经超过一个月 $end1 = strtotime(date('Y-m-d') . '23:59:59'); $start1 = $end1 - 7 * 24 * 3600; $qty1 = CommonModel::getSkuSaleProducts($start1, $end1, $sku, $everyday_sale); // getSaleNum($start1, $end1, $sku, $warehouse_id, $everyday_sale);//取1~7天销售量 $end2 = $start1; $start2 = $end1 - 15 * 4 * 600; $qty2 = CommonModel::getSkuSaleProducts($start2, $end2, $sku, $everyday_sale); // getSaleNum($start1, $end1, $sku, $warehouse_id, $everyday_sale);//取1~7天销售量 $end3 = $start2; $start3 = $end1 - 30 * 24 * 3600; $qty3 = CommonModel::getSkuSaleProducts($start3, $end3, $sku, $everyday_sale); // getSaleNum($start1, $end1, $sku, $warehouse_id, $everyday_sale);//取1~7天销售量 $everyday_sale = $qty1 / 7 * $days7 + $qty2 / 8 * $days15 + $qty3 / 15 * $days30; // 每日均量计算 $needqty = ceil($everyday_sale * $alert_days) + $interceptnums; // 库存预警警数量 $dataarray['everyday_sale'] = $everyday_sale > 0.005 ? round($everyday_sale, 2) : 0; $dataarray['booknums'] = $hasbooknum; $dataarray['salensend'] = $salensend; $dataarray['auditingnums'] = $auditingnums; $dataarray['interceptnums'] = $interceptnums; $dataarray['autointerceptnums'] = $autointerceptnums; $dataarray['is_warning'] = $hasuseqty < 1 || $hasuseqty < $needqty ? 1 : 0; } else { $dataarray['everyday_sale'] = 0; $dataarray['booknums'] = $hasbooknum; $dataarray['salensend'] = $salensend; $dataarray['auditingnums'] = $auditingnums; $dataarray['interceptnums'] = $interceptnums; $dataarray['autointerceptnums'] = $autointerceptnums; $dataarray['is_warning'] = $hasuseqty < 0 ? 1 : 0; } } else { $end = strtotime(date('Y-m-d') . '23:59:59'); $start = $end - ($saleday + 1) * 24 * 3600; $qty = 20; // getSaleNum($start, $end, $sku, $warehouse_id, $everyday_sale); $everyday_sale = $qty / $saleday; $needqty = ceil($everyday_sale * $alert_days) + $interceptnums; // 计算产品库存报警数量 $dataarray['everyday_sale'] = round($everyday_sale, 2); $dataarray['booknums'] = $hasbooknum; $dataarray['salensend'] = $salensend; $dataarray['auditingnums'] = $auditingnums; $dataarray['interceptnums'] = $interceptnums; $dataarray['autointerceptnums'] = $autointerceptnums; $dataarray['is_warning'] = $hasuseqty < 1 || $hasuseqty < $needqty ? 1 : 0; } } else { $dataarray['everyday_sale'] = 0; $dataarray['booknums'] = $hasbooknum; $dataarray['salensend'] = 0; $dataarray['auditingnums'] = 0; $dataarray['interceptnums'] = 0; $dataarray['autointerceptnums'] = 0; $dataarray['is_warning'] = 0; } if ($needqty <= 0) { $dataarray['is_warning'] = 0; } $dataarray['lastupdate'] = time(); $dataarray['factory'] = $res[0]['factory']; $dataarray['purchaseuser'] = $res[0]['purchaseuser']; $dataarray['storeid'] = $res[0]['storeid']; $dataarray['sevendays'] = $res[0]['sevendays']; $dataarray['fifteendays'] = $res[0]['fifteendays']; $dataarray['thirtydays'] = $res[0]['thirtydays']; $dataarray['ow_stock'] = $res[0]['ow_count']; $dataarray['it_stock'] = $res[0]['it_count']; $dataarray['stock_qty'] = $res[0]['goods_count']; $dataarray['purchaseDays'] = $res[0]['purchasedays']; $dataarray['alertDays'] = $res[0]['goods_days']; $dataarray['purchaseId'] = $_SESSION[C('USER_AUTH_SYS_ID')]; $res = self::updateWarnInfo($sku, $dataarray); $run_endtime = time(); $speed_time = $run_endtime - $run_starttime; if ($res) { return "料号:{$sku} 缓存更新成功!"; } else { self::$errCode = 10001; self::$errMsg = "料号:{$sku} 缓存更新失败!"; return false; } }