|
|
@@ -329,49 +329,11 @@ sql;
|
|
|
DB::connection("oracle")->update(DB::raw("UPDATE TSK_TASKLISTS SET FMQTY = ?,FMQTY_EACH = ?,PLANTOQTY=?,PLANTOQTY_EACH=? WHERE TASKID = ? AND TASKID_SEQUENCE = ?"),[
|
|
|
$amount,$amount,$amount,$amount,$task->taskid,$task->taskid_sequence
|
|
|
]);
|
|
|
- /*$invs = DB::connection("oracle")->select(DB::raw("SELECT * FROM INV_LOT_LOC_ID WHERE LOTNUM = ? AND LOCATIONID IN (?,?) AND TRACEID = ?"),[
|
|
|
- $task->fmlotnum,$task->fmlocation,$task->plantolocation,$task->fmid
|
|
|
- ]);
|
|
|
- foreach ($invs as $inv){
|
|
|
- if ($inv->locationid==$task->fmlocation){
|
|
|
- $columns = '';
|
|
|
- $values = '';
|
|
|
- DB::connection("oracle")->update(DB::raw("UPDATE inv_lot_loc_id SET qty = qty-?,qtymvout = qtymvout-? WHERE lotnum = ? AND locationid = ? AND traceid = ?"),[
|
|
|
- $amount,$amount,$inv->lotnum,$inv->locationid,$inv->traceid
|
|
|
- ]);
|
|
|
- foreach ($inv as $key=>$val){
|
|
|
- if (Str::upper($key)=='TRACEID') $val = "WAS".$task->fmid;
|
|
|
- if (Str::upper($key)=='QTY' || Str::upper($key)=='QTYMVOUT') $val = $amount;
|
|
|
- $columns .= $key.",";
|
|
|
- $values .= $this->valFormat($val) .",";
|
|
|
- }
|
|
|
- $columns = mb_substr($columns,0,-1);
|
|
|
- $values = mb_substr($values,0,-1);
|
|
|
- DB::connection("oracle")->insert(DB::raw("INSERT INTO inv_lot_loc_id({$columns}) VALUES({$values})"));
|
|
|
- }
|
|
|
- if ($inv->locationid==$task->plantolocation){
|
|
|
- $columns = '';
|
|
|
- $values = '';
|
|
|
- DB::connection("oracle")->update(DB::raw("UPDATE inv_lot_loc_id SET QTYPA = QTYPA-? WHERE lotnum = ? AND locationid = ? AND traceid = ?"),[
|
|
|
- $amount,$inv->lotnum,$inv->locationid,$inv->traceid
|
|
|
- ]);
|
|
|
- foreach ($inv as $key=>$val){
|
|
|
- if (Str::upper($key)=='TRACEID') $val = "WAS".$task->fmid;
|
|
|
- if (Str::upper($key)=='QTYPA') $val = $amount;
|
|
|
- $columns .= $key.",";
|
|
|
- $values .= $this->valFormat($val) .",";
|
|
|
- }
|
|
|
- $columns = mb_substr($columns,0,-1);
|
|
|
- $values = mb_substr($values,0,-1);
|
|
|
- DB::connection("oracle")->insert(DB::raw("INSERT INTO inv_lot_loc_id({$columns}) VALUES({$values})"));
|
|
|
- }
|
|
|
- }*/
|
|
|
DB::connection("oracle")->commit();
|
|
|
}catch(\Exception $e) {
|
|
|
DB::connection("oracle")->rollBack();
|
|
|
throw new \Exception("拆分任务失败:".$e->getMessage());
|
|
|
}
|
|
|
- //return DB::connection("oracle")->selectOne(DB::raw("SELECT * FROM TSK_TASKLISTS WHERE TASKID = ? AND TASKID_SEQUENCE = ?"),[$task->taskid,$seq]);
|
|
|
return $task;
|
|
|
}
|
|
|
|
|
|
@@ -416,22 +378,21 @@ sql;
|
|
|
if (!$task->taskid)return false;//ASN单无此入库信息,禁止上架
|
|
|
$amount = (int)$task->fmqty;
|
|
|
$db = DB::connection("oracle");
|
|
|
- $db->transaction(function ()use($db,$amount,$ide,$task,&$who){
|
|
|
+ $db->beginTransaction();
|
|
|
+ try {
|
|
|
$sql = <<<sql
|
|
|
SELECT * FROM inv_lot_loc_id WHERE lotnum = ? AND traceid = ? AND locationid = ? AND customerid= ? and sku = ? and qtypa >= {$amount} FOR UPDATE
|
|
|
sql;
|
|
|
- $inv = $db->selectOne(DB::raw($sql),[$task->plantolotnum,$task->plantoid,$task->plantolocation,$task->customerid,$task->sku]);
|
|
|
+ $inv = $db->selectOne(DB::raw($sql),[$task->fmlotnum,$task->fmid,$task->fmlocation,$task->customerid,$task->sku]);
|
|
|
if (!$inv)return false;//余量与入库不符
|
|
|
|
|
|
$inv1 = $db->update(DB::raw("UPDATE inv_lot_loc_id SET qty = qty - ? WHERE LOTNUM = ? AND LOCATIONID = ? AND TRACEID = ? AND traceid != '*'"),[
|
|
|
$amount,$task->fmlotnum,$task->fmlocation,$task->fmid
|
|
|
]);
|
|
|
- $sql = "UPDATE inv_lot_loc_id SET qty = qtypa - ?";
|
|
|
- if ($inv->qtypa==$amount)$sql .= ",LOCATIONID = '{$ide}'";
|
|
|
- $inv2 = $db->update(DB::raw($sql." WHERE LOTNUM = ? AND LOCATIONID = ? AND TRACEID = ? AND traceid != '*'"),[
|
|
|
+ $db->update(DB::raw("UPDATE inv_lot_loc_id SET qtypa = qtypa - ? WHERE LOTNUM = ? AND LOCATIONID = ? AND TRACEID = ? AND traceid != '*'"),[
|
|
|
$amount,$task->plantolotnum,$task->plantolocation,$task->plantoid
|
|
|
]);
|
|
|
- if ($inv1!=1 || $inv2!=1){
|
|
|
+ if ($inv1!=1){
|
|
|
$db->rollBack();
|
|
|
return false;//库存余量错误
|
|
|
}
|
|
|
@@ -471,9 +432,12 @@ sql;
|
|
|
]);
|
|
|
$task->who = $who;
|
|
|
$this->checkAsn($task);
|
|
|
+ $db->commit();
|
|
|
return true;
|
|
|
- });
|
|
|
- return true;
|
|
|
+ }catch (\Exception $e){
|
|
|
+ $db->rollBack();
|
|
|
+ return false;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
private function checkAsn($task)
|