|
|
@@ -334,16 +334,16 @@ sql;
|
|
|
try {
|
|
|
$columns = '';
|
|
|
$values = '';
|
|
|
- $seq = 0;
|
|
|
foreach ($task as $key=>$val){
|
|
|
if (Str::upper($key)=='TASKID_SEQUENCE') {
|
|
|
$taskMax = DB::connection("oracle")->selectOne(DB::raw("select MAX(TASKID_SEQUENCE) maxseq from TSK_TASKLISTS where taskid = ?"),[$task->taskid]);
|
|
|
$val = $taskMax->maxseq + 1;
|
|
|
- $seq = $val;
|
|
|
}
|
|
|
if (Str::upper($key)=='FMQTY' || Str::upper($key)=='FMQTY_EACH'
|
|
|
- || Str::upper($key)=='PLANTOQTY' || Str::upper($key)=='PLANTOQTY_EACH')$val = $amount;
|
|
|
- if (Str::upper($key)=='FMID')$val = "WAS".$val;
|
|
|
+ || Str::upper($key)=='PLANTOQTY' || Str::upper($key)=='PLANTOQTY_EACH'){
|
|
|
+ $val -= $amount;
|
|
|
+ $task->$key = $amount;
|
|
|
+ }
|
|
|
$columns .= $key.",";
|
|
|
$values .= $this->valFormat($val) .",";
|
|
|
}
|
|
|
@@ -353,10 +353,10 @@ sql;
|
|
|
INSERT INTO TSK_TASKLISTS({$columns}) VALUES({$values})
|
|
|
sql;
|
|
|
DB::connection("oracle")->insert(DB::raw($sql));
|
|
|
- DB::connection("oracle")->update(DB::raw("UPDATE TSK_TASKLISTS SET FMQTY = FMQTY-?,FMQTY_EACH = FMQTY_EACH-?,PLANTOQTY=PLANTOQTY-?,PLANTOQTY_EACH=PLANTOQTY_EACH-? WHERE TASKID = ? AND TASKID_SEQUENCE = ?"),[
|
|
|
+ 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 = ?"),[
|
|
|
+ /*$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){
|
|
|
@@ -392,13 +392,14 @@ sql;
|
|
|
$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 DB::connection("oracle")->selectOne(DB::raw("SELECT * FROM TSK_TASKLISTS WHERE TASKID = ? AND TASKID_SEQUENCE = ?"),[$task->taskid,$seq]);
|
|
|
+ return $task;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -441,16 +442,26 @@ sql;
|
|
|
{
|
|
|
if (!$task->taskid)return false;//ASN单无此入库信息,禁止上架
|
|
|
$amount = (int)$task->fmqty;
|
|
|
- $sql = <<<sql
|
|
|
-SELECT * FROM inv_lot_loc_id WHERE lotnum = ? AND traceid = ? AND customerid= ? and sku = ? and qty = {$amount}
|
|
|
+ $db = DB::connection("oracle");
|
|
|
+ $db->transaction(function ()use($db,$amount,$ide,$task,&$who){
|
|
|
+ $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::connection("oracle")->selectOne(DB::raw($sql),[$task->fmlotnum,$task->fmid,$task->customerid,$task->sku]);
|
|
|
- if (!$inv)return false;//余量与入库不符
|
|
|
- DB::connection("oracle")->transaction(function ()use($inv,$amount,$ide,$task,&$who){
|
|
|
- $db = DB::connection("oracle");
|
|
|
- $db->delete(DB::raw("DELETE FROM inv_lot_loc_id WHERE lotnum = ? AND traceid = ? AND traceid != '*'"),[
|
|
|
- $inv->lotnum,$inv->traceid
|
|
|
+ $inv = $db->selectOne(DB::raw($sql),[$task->plantolotnum,$task->plantoid,$task->plantolocation,$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 != '*'"),[
|
|
|
+ $amount,$task->plantolotnum,$task->plantolocation,$task->plantoid
|
|
|
+ ]);
|
|
|
+ if ($inv1!=1 || $inv2!=1){
|
|
|
+ $db->rollBack();
|
|
|
+ return false;//库存余量错误
|
|
|
+ }
|
|
|
$invHistory = $db->selectOne(DB::raw("SELECT * FROM inv_lot_loc_id WHERE lotnum = ? AND locationid = ? AND customerid = ? AND sku = ? AND traceid = '*' FOR UPDATE"),[
|
|
|
$inv->lotnum,$ide,$inv->customerid,$inv->sku
|
|
|
]);
|
|
|
@@ -477,7 +488,7 @@ sql;
|
|
|
]);
|
|
|
$this->setTrNumber($max);
|
|
|
$sql = <<<sql
|
|
|
-update TSK_TASKLISTS set TASKPROCESS = '99',REASONCODE = 'OK',PLANTOLOCATION = ?,PLANLOGICALTOSEQUENCE = ?,FMID = '*',
|
|
|
+update TSK_TASKLISTS set TASKPROCESS = '99',REASONCODE = 'OK',PLANTOLOCATION = ?,PLANLOGICALTOSEQUENCE = ?,
|
|
|
COMPLETED_TRANSACTIONID = ?,OPENWHO = ?,OPENTIME = TO_DATE(?,'yyyy-mm-dd hh24:mi:ss'),
|
|
|
CLOSEWHO = ?,CLOSETIME = ?,EDITTIME = ?,EDITWHO = ?
|
|
|
where taskid = ? AND TASKID_SEQUENCE = ?
|
|
|
@@ -487,6 +498,7 @@ sql;
|
|
|
]);
|
|
|
$task->who = $who;
|
|
|
$this->checkAsn($task);
|
|
|
+ return true;
|
|
|
});
|
|
|
return true;
|
|
|
}
|
|
|
@@ -509,6 +521,14 @@ SQL;
|
|
|
[date("Y-m-d H:i:s"),$task->who,$task->docno]);
|
|
|
DB::connection("oracle")->update(DB::raw("UPDATE DOC_ASN_DETAILS SET linestatus = '99',edittime = TO_DATE(?,'yyyy-mm-dd hh24:mi:ss'),editwho = ? WHERE asnno = ?"),
|
|
|
[date("Y-m-d H:i:s"),$task->who,$task->docno]);
|
|
|
+ $sql = <<<SQL
|
|
|
+DELETE FROM INV_LOT_LOC_ID WHERE ((LOTNUM,LOCATIONID,TRACEID) IN
|
|
|
+(SELECT PLANTOLOTNUM,PLANTOLOCATION,PLANTOID FROM TSK_TASKLISTS WHERE DOCNO = ? AND DOCTYPE = 'ASN' AND TASKTYPE = 'PA' AND TASKPROCESS = '99') OR
|
|
|
+(LOTNUM,LOCATIONID,TRACEID) IN
|
|
|
+(SELECT FMLOTNUM,FMLOCATION,FMID FROM TSK_TASKLISTS WHERE DOCNO = ? AND DOCTYPE = 'ASN' AND TASKTYPE = 'PA' AND TASKPROCESS = '99'))
|
|
|
+AND QTY = 0 AND QTYPA = 0
|
|
|
+SQL;
|
|
|
+ DB::connection("oracle")->delete(DB::raw($sql),[$task->docno,$task->docno]);
|
|
|
}
|
|
|
/**
|
|
|
* put cache rack box to warehousing(将缓存架料箱入库)
|