Files
Nuvolar/Nuvolar.Laravel/app/Http/Controllers/Api/StorageController.php
2018-03-14 20:09:57 +01:00

1505 lines
81 KiB
PHP

<?php
namespace App\Http\Controllers\Api;
use Illuminate\Support\Facades\DB;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use App\User;
use Auth;
use Ramsey\Uuid\Uuid;
use App\Http\Controllers\Controller;
class StorageController extends Controller
{
public function getStorage(Request $request)
{
$user=Auth::guard('api')->user();
$headers = apache_request_headers();
return response()->json($headers, 200);
$storage=DB::connection($headers['cdb'])->select('SELECT t1.ShortName
FROM storage t1' );
return response()->json($storage, 200);
}
public function makeSerialNumberRangeStorageIn(Request $request)
{
# Elkészíti automatikusan a StorageInRowsRange segéd táblát
try
{
$headers = apache_request_headers();
$fullarray = array();
DB::connection($headers['cdb'])->beginTransaction();
DB::connection($headers['cdb'])->update('UPDATE StorageInRows SET StorageInRowsRange=NULL WHERE StorageInHeader = ?', [$request['storageinheader']]);
DB::connection($headers['cdb'])->delete('DELETE FROM StorageInRowsRange WHERE StorageInHeader = ?',
[
$request['storageinheader']
]);
$storageinrowsbyproducts=DB::connection($headers['cdb'])->
select('SELECT t1.Products
FROM StorageInRows t1 JOIN Products t2 on
t1.Products=t2.Oid
WHERE t1.StorageInHeader = ? AND t2.IsSerialNumber = 1
GROUP BY t1.Products',
[
$request['storageinheader']
]);
if (count($storageinrowsbyproducts) > 0)
{
foreach ($storageinrowsbyproducts as $key => $storageinrowsbyproduct) {
$storageinrows=DB::connection($headers['cdb'])->select('SELECT *
FROM StorageInRows t1 JOIN StorageInHeader t2 ON
t1.StorageInHeader = t2.Oid
WHERE Products = ? AND t2.Oid = ?
ORDER BY t1.SerialNumber ASC',
[
$storageinrowsbyproduct->Products,
$request['storageinheader']
]);
$rangestart='';
$rangestop='';
$qtt=1;
// return response()->json($storageinrows[0+1], 200);
for ($i=0; $i < count($storageinrows); $i++) {
if ($i == 0) {
$rangestart=$storageinrows[$i]->SerialNumber;
$rangestop=$storageinrows[$i]->SerialNumber;
}
if ($i < count($storageinrows)-1) {
$curnext=(float)($storageinrows[$i+1]->SerialNumber);
$cur=(float)($storageinrows[$i]->SerialNumber);
if ($cur == $curnext-1)
{
$qtt = $qtt +1;
$rangestop=$storageinrows[$i+1]->SerialNumber;
}
else
{
#Be a tömbbe ...
// $rangestop=$storageinrows[$i]->SerialNumber;
$fullarray[$storageinrowsbyproduct->Products][] = ['rangestart' => $rangestart, 'rangestop'=>$rangestop, 'qtt' => $qtt];
# Be az adatbázisba ... :)
$uuid = Uuid::uuid1();
DB::connection($headers['cdb'])->insert('INSERT INTO StorageInRowsRange (Oid, StorageInHeader, Products, QTT, SerialNumberFrom, SerialNumberTo)
VALUES (? , ?, ?, ?, ?, ?)',
[
$uuid,
$request['storageinheader'],
$storageinrowsbyproduct->Products,
$qtt,
$rangestart,
$rangestop
]);
DB::connection($headers['cdb'])->update('UPDATE StorageInRows set StorageInRowsRange = ?
WHERE StorageInHeader = ? AND Products = ? And SerialNumber >= ? AND SerialNumber <= ?',
[
$uuid,
$request['storageinheader'],
$storageinrowsbyproduct->Products,
$rangestart,
$rangestop
]);
$rangestart=$storageinrows[$i+1]->SerialNumber;
$qtt = 1;
}
}
if ($i == count($storageinrows) - 1) {
$rangestop=$storageinrows[$i]->SerialNumber;
#Be a tömbbe ...
$fullarray[$storageinrowsbyproduct->Products][] = ['rangestart' => $rangestart, 'rangestop'=>$rangestop, 'qtt' => $qtt];
$uuid = Uuid::uuid1();
DB::connection($headers['cdb'])->insert('INSERT INTO StorageInRowsRange (Oid, StorageInHeader, Products, QTT, SerialNumberFrom, SerialNumberTo)
VALUES (? , ?, ?, ?, ?, ?)',
[
$uuid,
$request['storageinheader'],
$storageinrowsbyproduct->Products,
$qtt,
$rangestart,
$rangestop
]);
DB::connection($headers['cdb'])->update('UPDATE StorageInRows set StorageInRowsRange = ?
WHERE StorageInHeader = ? AND Products = ? And SerialNumber >= ? AND SerialNumber <= ?',
[
$uuid,
$request['storageinheader'],
$storageinrowsbyproduct->Products,
$rangestart,
$rangestop
]);
}
}
}
}
DB::connection($headers['cdb'])->commit();
return response()->json("OK", 200);
}
catch (Exception $e)
{
return response()->json($e->getMessage(), 500);
}
}
public function makeSerialNumberRangeStorageOut(Request $request)
{
# Elkészíti automatikusan a StorageInRowsRange segéd táblát
try
{
$headers = apache_request_headers();
$fullarray = array();
DB::connection($headers['cdb'])->beginTransaction();
DB::connection($headers['cdb'])->update('UPDATE StorageOutRows SET StorageOutRowsRange=NULL WHERE StorageOutHeader = ?', [$request['storageoutheader']]);
DB::connection($headers['cdb'])->delete('DELETE FROM StorageOutRowsRange WHERE StorageOutHeader = ?',
[
$request['storageoutheader']
]);
$storageoutrowsbyproducts=DB::connection($headers['cdb'])->
select('SELECT t1.Products
FROM StorageOutRows t3 JOIN StorageInRows t1 ON
t3.StorageInRows = t1.Oid JOIN Products t2 on
t1.Products=t2.Oid
WHERE t3.StorageOutHeader = ? AND t2.IsSerialNumber = 1
GROUP BY t1.Products',
[
$request['storageoutheader']
]);
if (count($storageoutrowsbyproducts) > 0)
{
foreach ($storageoutrowsbyproducts as $key => $storageoutrowsbyproduct) {
$storageoutrows=DB::connection($headers['cdb'])->select('SELECT *
FROM StorageOutRows t3 JOIN StorageInRows t1 ON
t3.StorageInRows = t1.Oid JOIN StorageInHeader t2 ON
t1.StorageInHeader = t2.Oid
WHERE Products = ? AND t3.StorageOutHeader = ?
ORDER BY t1.SerialNumber ASC',
[
$storageoutrowsbyproduct->Products,
$request['storageoutheader']
]);
$rangestart='';
$rangestop='';
$qtt=1;
// return response()->json($storageinrows[0+1], 200);
for ($i=0; $i < count($storageoutrows); $i++) {
if ($i == 0) {
$rangestart=$storageoutrows[$i]->SerialNumber;
$rangestop=$storageoutrows[$i]->SerialNumber;
}
if ($i < count($storageoutrows)-1) {
$curnext=(float)($storageoutrows[$i+1]->SerialNumber);
$cur=(float)($storageoutrows[$i]->SerialNumber);
if ($cur == $curnext-1)
{
$qtt = $qtt +1;
$rangestop=$storageoutrows[$i+1]->SerialNumber;
}
else
{
#Be a tömbbe ...
// $rangestop=$storageinrows[$i]->SerialNumber;
$fullarray[$storageoutrowsbyproduct->Products][] = ['rangestart' => $rangestart, 'rangestop'=>$rangestop, 'qtt' => $qtt];
# Be az adatbázisba ... :)
$uuid = Uuid::uuid1();
DB::connection($headers['cdb'])->insert('INSERT INTO StorageOutRowsRange (Oid, StorageOutHeader, Products, QTT, SerialNumberFrom, SerialNumberTo)
VALUES (? , ?, ?, ?, ?, ?)',
[
$uuid,
$request['storageoutheader'],
$storageoutrowsbyproduct->Products,
$qtt,
$rangestart,
$rangestop
]);
DB::connection($headers['cdb'])->update('UPDATE StorageOutRows t1 JOIN StorageInRows t2 ON
t1.StorageInRows=t2.Oid
SET t1.StorageOutRowsRange = ?
WHERE t1.StorageOutHeader = ? AND t2.Products = ? And t2.SerialNumber >= ? AND t2.SerialNumber <= ?',
[
$uuid,
$request['storageOutheader'],
$storageoutrowsbyproduct->Products,
$rangestart,
$rangestop
]);
$rangestart=$storageoutrows[$i+1]->SerialNumber;
$qtt = 1;
}
}
if ($i == count($storageoutrows) - 1) {
$rangestop=$storageoutrows[$i]->SerialNumber;
#Be a tömbbe ...
$fullarray[$storageoutrowsbyproduct->Products][] = ['rangestart' => $rangestart, 'rangestop'=>$rangestop, 'qtt' => $qtt];
$uuid = Uuid::uuid1();
DB::connection($headers['cdb'])->insert('INSERT INTO StorageOutRowsRange (Oid, StorageOutHeader, Products, QTT, SerialNumberFrom, SerialNumberTo)
VALUES (? , ?, ?, ?, ?, ?)',
[
$uuid,
$request['storageoutheader'],
$storageoutrowsbyproduct->Products,
$qtt,
$rangestart,
$rangestop
]);
DB::connection($headers['cdb'])->update('UPDATE StorageOutRows t1 JOIN StorageInRows t2 ON
t1.StorageInRows=t2.Oid
SET t1.StorageOutRowsRange = ?
WHERE t1.StorageOutHeader = ? AND t2.Products = ? And t2.SerialNumber >= ? AND t2.SerialNumber <= ?',
[
$uuid,
$request['storageoutheader'],
$storageoutrowsbyproduct->Products,
$rangestart,
$rangestop
]);
}
}
}
}
DB::connection($headers['cdb'])->commit();
return response()->json("OK", 200);
}
catch (Exception $e)
{
return response()->json($e->getMessage(), 500);
}
}
# Storage In
public function addItemStorageIn(Request $request)
{
try
{
$headers = apache_request_headers();
$packetnumber="";
$serialnumber="";
$responsetext="OK";
if ($request['packetnumber']==null) { $packetnumber="";}else{$packetnumber=$request['packetnumber'];}
if ($request['serialnumber']==null) { $serialnumber="";}else{$serialnumber=$request['serialnumber'];}
//return response()->json($request['serialnumber']==null, 200);
DB::connection($headers['cdb'])->beginTransaction();
$qtt_will=1;
$products=DB::connection($headers['cdb'])->select('SELECT *
FROM Products
WHERE Oid = ?', [$request['products']]);
//return response()->json($request['products'], 200);
if ($products[0]->IsSerialNumber) {
$qtt_will=1;
}
else
{
$qtt_will=$request['qtt_will'];
}
$storageinheader=DB::connection($headers['cdb'])->select('SELECT * FROM StorageInHeader
WHERE Oid=?', [$request['storageinheader']]);
if ($storageinheader[0]->IsEditable != 1) {
return response()->json("Nem szerkeszthető kitárolás!", 200);
}
$storagecomputed=count(DB::connection($headers['cdb'])->select('SELECT * FROM StorageComputed
WHERE Storage=? AND Products=?', [$storageinheader[0]->Storage,$request['products']]));
$count=count(DB::connection($headers['cdb'])->select('SELECT * FROM StorageInRows
WHERE StorageInHeader=?', [$request['storageinheader']]));
if ($products[0]->IsPacketNumber && !$products[0]->IsSerialNumber) {
# Ha kötegszámos tétel
$data=count(DB::connection($headers['cdb'])->select('SELECT * FROM StorageInRows
WHERE StorageInHeader=? AND PacketNumber=? AND Products=? AND PriceHUF=?',
[
$request['storageinheader'],
$request['packetnumber'],
$request['products'],
$request['pricehuf']
]));
if ($data==0) {
//StorageInRows beállítása
//-----------------------------------------------------------------------------------------------------------------------
DB::connection($headers['cdb'])->insert('INSERT INTO StorageInRows (Oid, StorageInHeader, PacketNumber, Products, QTT_Will, QTT_Out, QTT_Out_Will, RowIndex, PriceHUF, PriceAmountHUF)
VALUES (UUID(), ?, ?, ?, ?, ?, ?, ?, ?,? )',
[
$request['storageinheader'],
$packetnumber,
$request['products'],
$qtt_will,0,0,$count+1,
$request['pricehuf'],
$request['pricehuf']*$qtt_will
]);
}
else
{
DB::connection($headers['cdb'])->update('UPDATE StorageInRows set QTT_Will=QTT_Will + ?, PriceAmountHUF=PriceHUF * (QTT_Will + ?)
WHERE StorageInHeader=? AND PacketNumber=? AND Products=?',
[
$qtt_will,
$qtt_will,
$request['storageinheader'],
$packetnumber,
$request['products']
]);
}
// StorageComputed beállítása
//----------------------------------------------------------------------------------------------------------------------
if ($storagecomputed==0) {
DB::connection($headers['cdb'])->insert('INSERT INTO StorageComputed (Oid, Products,Storage,QTT,IsLocked,QTTReservedIn,QTTReservedOut)
VALUES (UUID(), ?, ?, ?, ?, ?, ?)',
[$request['products'],
$storageinheader[0]->Storage,
0,0,$qtt_will,0]);
}else {
DB::connection($headers['cdb'])->update('UPDATE StorageComputed set QTTReservedIn=QTTReservedIn+?
WHERE Storage=? AND Products=?', [$qtt_will,$storageinheader[0]->Storage,$request['products']]);
}
}
if ($products[0]->IsSerialNumber) {
# Ha gyáriszámos tétel
if ($request['serialnumberinputmode'] == 0)
{
# Ha egy darab gyáriszámot adott meg
$data=count(DB::connection($headers['cdb'])->select('SELECT * FROM StorageInRows
WHERE SerialNumber=? AND Products=? AND ((IFNULL(QTT,0) > IFNULL(QTT_Out,0)) OR IFNULL(QTT_Will,0) > 0)',
[
$request['serialnumber'],
$request['products']
]));
if ($data==0)
{
//StorageInRows beállítása
//-----------------------------------------------------------------------------------------------------------------------
if (!isset($request['storageinrowsrange'])) { $storageinrowsrange=NULL; }else{$storageinrowsrange=$request['storageinrowsrange'];}
DB::connection($headers['cdb'])->insert('INSERT INTO
StorageInRows (Oid, StorageInHeader, SerialNumber, Products, QTT_Will, QTT_Out, QTT_Out_Will, RowIndex, PriceHUF, PriceAmountHUF, StorageInRowsRange)
VALUES (UUID(), ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)',
[
$request['storageinheader'],
$request['serialnumber'],
$request['products'],
1,0,0,$count+1,
$request['pricehuf'],
$request['pricehuf'],
$storageinrowsrange
]);
// StorageComputed beállítása
//----------------------------------------------------------------------------------------------------------------------
if ($storagecomputed==0) {
DB::connection($headers['cdb'])->insert('INSERT INTO StorageComputed (Oid, Products, Storage, QTT, IsLocked, QTTReservedIn, QTTReservedOut)
VALUES (UUID(), ?, ?, ?, ?, ?, ?)',
[
$request['products'],
$storageinheader[0]->Storage,
0,0,1,0
]);
}else {
DB::connection($headers['cdb'])->update('UPDATE StorageComputed set QTTReservedIn=QTTReservedIn+?
WHERE Storage=? AND Products=?',
[
$qtt_will,
$storageinheader[0]->Storage,
$request['products']
]);
}
}
else
{
$responsetext="Már be lett tárolva ! (".$request['serialnumber'].")";
return response()->json($responsetext, 200);
}
}
else
{
$serialnumberfrom=$request['serialnumberfrom'];
$serialnumberto=$request['serialnumberto'];
// return response()->json($serialnumberto, 200);
DB::insert('INSERT INTO StorageInRowsRange (Oid, StorageInHeader, )
VALUES (?, ?)',
[
1, 'Dayle'
]);
for ($i=$serialnumberfrom; $i<=$serialnumberto; $i++) {
$data=count(DB::connection($headers['cdb'])->select('SELECT * FROM StorageInRows
WHERE SerialNumber=? AND Products=? AND ((IFNULL(QTT,0) > IFNULL(QTT_Out,0)) OR IFNULL(QTT_Will,0) > 0)',
[
$i,
$request['products']
]));
if ($data==0)
{
//StorageInRows beállítása
//-----------------------------------------------------------------------------------------------------------------------
DB::connection($headers['cdb'])->insert('INSERT INTO StorageInRows (Oid, StorageInHeader, SerialNumber, Products, QTT_Will,
QTT_Out, QTT_Out_Will, RowIndex, PriceHUF, PriceAmountHUF)
VALUES (UUID(), ?, ?, ?, ?, ?, ?, ?, ?, ?)',
[
$request['storageinheader'],
$i,
$request['products'],
1,0,0,$count+1,
$request['pricehuf'],
$request['pricehuf']
]);
// StorageComputed beállítása
//----------------------------------------------------------------------------------------------------------------------
if ($storagecomputed==0) {
DB::connection($headers['cdb'])->insert('INSERT INTO StorageComputed (Oid, Products,Storage,QTT,IsLocked,QTTReservedIn,QTTReservedOut)
VALUES (UUID(), ?, ?, ?, ?, ?, ?)',
[$request['products'],
$storageinheader[0]->Storage,
0,0,1,0]);
}else {
DB::connection($headers['cdb'])->update('UPDATE StorageComputed set QTTReservedIn=QTTReservedIn+?
WHERE Storage=? AND Products=?', [$qtt_will,$storageinheader[0]->Storage,$request['products']]);
}
}
else
{
$responsetext="Már be lett tárolva ! (".$request['serialnumber'].")";
return response()->json($responsetext, 200);
}
}
}
}
if (!$products[0]->IsPacketNumber && !$products[0]->IsSerialNumber) {
# Ha NEM gyáriszámos és NEM kötegszámos, akkor
$data=count(DB::connection($headers['cdb'])->select('SELECT * FROM StorageInRows
WHERE StorageInHeader=? AND Products=? AND PriceHUF = ?',
[
$request['storageinheader'],
$request['products'],
$request['pricehuf']
]));
if ($data==0) {
//StorageInRows beállítása
//-----------------------------------------------------------------------------------------------------------------------
DB::connection($headers['cdb'])->insert('INSERT INTO StorageInRows (Oid, StorageInHeader, Products, QTT_Will, QTT_Out, QTT_Out_Will, RowIndex, PriceHUF, PriceAmountHUF)
VALUES (UUID(), ?, ?, ?, ?, ?, ?, ?, ? )',
[
$request['storageinheader'],
$request['products'],
$qtt_will,0,0,$count + 1,
$request['pricehuf'],
$request['pricehuf'] * $qtt_will
]);
}
else
{
DB::connection($headers['cdb'])->update('UPDATE StorageInRows set QTT_Will = QTT_Will + ?, PriceAmountHUF = PriceHUF * (QTT_Will + ?)
WHERE StorageInHeader=? AND Products=? AND PriceHUF = ?',
[
$qtt_will,
$qtt_will,
$request['storageinheader'],
$request['products'],
$request['pricehuf']
]);
}
// StorageComputed beállítása
//----------------------------------------------------------------------------------------------------------------------
if ($storagecomputed==0) {
DB::connection($headers['cdb'])->insert('INSERT INTO StorageComputed (Oid, Products,Storage,QTT,IsLocked,QTTReservedIn,QTTReservedOut)
VALUES (UUID(), ?, ?, ?, ?, ?, ?)',
[$request['products'],
$storageinheader[0]->Storage,
0,0,$qtt_will,0]);
}else {
DB::connection($headers['cdb'])->update('UPDATE StorageComputed set QTTReservedIn=QTTReservedIn+?
WHERE Storage=? AND Products=?', [$qtt_will,$storageinheader[0]->Storage,$request['products']]);
}
}
DB::connection($headers['cdb'])->commit();
return response()->json($responsetext, 200);
}
catch (Exception $e)
{
return response()->json($e->getMessage(), 500);
}
}
public function addItemGroupStorageIn(Request $request)
{
try
{
$headers = apache_request_headers();
DB::connection($headers['cdb'])->beginTransaction();
$uuid = Uuid::uuid1();
DB::connection($headers['cdb'])->insert('INSERT INTO StorageInRowsRange (Oid, StorageInHeader, Products, SerialNumberFrom, SerialNumberTo,
PrefixTag, SuffixTag, SerialNumberDigit, QTT )
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)',
[
$uuid,
$request['storageinheader'],
$request['products'],
$request['serialnumberfrom'],
$request['serialnumberto'],
$request['prefixtag'],
$request['suffixtag'],
$request['serialnumberdigit'],
$request['serialnumberto']-$request['serialnumberfrom']+1
]);
$request->request->add(['packetnumber' => '']);
$request->request->add(['qtt_will' => '1']);
$request->request->add(['serialnumberinputmode' => 0]);
$request->request->add(['storageinrowsrange' => $uuid]);
foreach ($request['serialnumbers'] as $key => $serialnumber) {
# Most kell meghívni egyenként a sor hozzáadást.
$request->request->add(['serialnumber' => $serialnumber]);
$response = $this->addItemStorageIn($request);
if ($response->original != 'OK') {
return response()->json($response->original, 200);
}
}
$response = $this->makeSerialNumberRangeStorageIn($request);
if ($response->original != 'OK') {
return response()->json($response->original, 200);
}
DB::connection($headers['cdb'])->commit();
return response()->json("OK", 200);
}
catch (Exception $e)
{
return response()->json($e->getMessage(), 500);
}
}
public function removeItemStorageIn(Request $request)
{
try
{
$headers = apache_request_headers();
$storageinrows=$request['storageinrows'];
DB::connection($headers['cdb'])->beginTransaction();
foreach ($storageinrows as $key => $storageinrow) {
$sir=DB::connection($headers['cdb'])->select('SELECT t2.Storage,t1.Products,t1.RowIndex,t1.StorageInHeader,t2.IsEditable
FROM StorageInRows t1 JOIN StorageInHeader t2 on
t1.StorageInHeader=t2.Oid
WHERE t1.Oid = ?', [$storageinrow]);
if (count($sir)>0) {
if ($sir[0]->IsEditable != 1) {
return response()->json("Nem szerkeszthető kitárolás!", 200);
}
DB::connection($headers['cdb'])->update('UPDATE StorageComputed set QTTReservedIn=QTTReservedIn-1
WHERE Storage=? AND Products=?', [$sir[0]->Storage,$sir[0]->Products]);
DB::connection($headers['cdb'])->delete('DELETE FROM StorageInRows
WHERE Oid = ?', [$storageinrow]);
DB::connection($headers['cdb'])->update('UPDATE StorageInRows set RowIndex=RowIndex-1
WHERE StorageInHeader=? AND RowIndex>?', [$sir[0]->StorageInHeader,$sir[0]->RowIndex]);
$request->request->add(['storageinheader' => $sir[0]->StorageInHeader]);
$response = $this->makeSerialNumberRangeStorageIn($request);
if ($response->original != 'OK') {
return response()->json($response->original, 200);
}
}
}
DB::connection($headers['cdb'])->commit();
return response()->json("OK", 200);
}
catch (Exception $e)
{
return response()->json($e->getMessage(), 500);
}
}
public function finalizeStorageIn(Request $request)
{
try
{
$headers = apache_request_headers();
DB::connection($headers['cdb'])->beginTransaction();
DB::connection($headers['cdb'])->update('UPDATE StorageInHeader set IsEditable=0,IsFinalized=1,
UserFinalized = ?, DateFinalized = NOW()
WHERE Oid = ?', [
$request['usercreated'],
$request['storageinheader']
]);
$storageinrows=DB::connection($headers['cdb'])->select('SELECT t1.Oid,t2.Storage,t1.Products,t1.QTT_Will,t2.DocumentNumber,t1.SerialNumber,t2.DateExecution
FROM StorageInRows t1 JOIN StorageInHeader t2 on
t1.StorageInHeader=t2.Oid
WHERE t1.StorageInHeader = ?', [$request['storageinheader']]);
foreach ($storageinrows as $key => $storageinrow) {
//StorageInRows frissítése
DB::connection($headers['cdb'])->update('UPDATE StorageInRows
SET QTT=QTT_Will,
QTT_Will=0
WHERE Oid = ?', [$storageinrow->Oid]);
// StorageComputed frissítése
DB::connection($headers['cdb'])->update('UPDATE StorageComputed
SET QTT=QTT+?,
QTTReservedIn=QTTReservedIn-?
WHERE Storage=? AND Products=?', [$storageinrow->QTT_Will,
$storageinrow->QTT_Will,
$storageinrow->Storage,
$storageinrow->Products]);
// Eseménynapló
DB::connection($headers['cdb'])->insert('INSERT INTO StorageMoveEvents
(Oid, Storage, Products, DocumentNumber, SerialNumber, DateExecution, MoveEventsType,ObjectCreated,UserCreated)
VALUES (UUID(), ?, ?, ?, ?, ?, ?, NOW(), ?)',
[
$storageinrow->Storage,
$storageinrow->Products,
$storageinrow->DocumentNumber,
$storageinrow->SerialNumber,
$storageinrow->DateExecution,
0,
$request['usercreated']
]);
}
DB::connection($headers['cdb'])->commit();
return response()->json("OK", 200);
}
catch (Exception $e)
{
return response()->json($e->getMessage(), 500);
}
}
public function getStorageInHeader(Request $request)
{
try
{
$headers = apache_request_headers();
// DB::connection($headers['cdb'])->beginTransaction();
$storageinheader=DB::connection($headers['cdb'])->
select('SELECT t1.Oid,
t1.DocumentNumber,
t1.DateExecution,
t2.ShortName as Storage_ShortName,
t1.IsEditable
FROM StorageInHeader t1 join Storage t2 on
t1.Storage=t2.Oid
WHERE t1.Oid = ?',
[
$request['storageinheader']
]);
$storageinrows=DB::connection($headers['cdb'])->
select('SELECT t1.Oid,
t2.ProductNumber as Products_ProductNumber,
t2.ShortName as Products_ShortName,
t1.SerialNumber,
t1.PacketNumber,
t1.QTT,
t1.QTT_Will,
t1.QTT_Out,
t1.QTT_Out_Will
FROM StorageInRows t1 left join Products t2 on
t1.Products=t2.Oid
WHERE t1.StorageInHeader = ?',
[
$request['storageinheader']
]);
$vv_storageinrowsprint=DB::connection($headers['cdb'])->
select('SELECT t1.Oid,
t2.ProductNumber as Products_ProductNumber,
t2.ShortName as Products_ShortName,
t1.SerialNumber,
t1.QTT
FROM vv_storageinrowsprint t1 left join Products t2 on
t1.Products=t2.Oid
WHERE t1.StorageInHeader = ?',
[
$request['storageinheader']
]);
$result=array();
if (count($storageinheader)>0) {
$result['storageinheader']=$storageinheader[0];
$result['storageinrows']=$storageinrows;
$result['vv_storageinrowsprint']=$vv_storageinrowsprint;
}
// DB::connection($headers['cdb'])->commit();
return response()->json($result, 200);
}
catch (Exception $e)
{
return response()->json($e->getMessage(), 500);
}
}
public function listStorageInHeader($storage,$open)
{
# Visszatér a betárolási bizonylatok fejléc kollekciójával
$user=Auth::guard('api')->user();
$headers = apache_request_headers();
$storageinheader=DB::connection($headers['cdb'])->
select('SELECT t1.Oid,
t1.DocumentNumber,
t1.DateExecution,
t2.ShortName as Storage_ShortName,
t1.IsEditable
FROM StorageInHeader t1 join Storage t2 on
t1.Storage=t2.Oid
WHERE t1.Storage = ? AND t1.IsEditable = ?',
[
$storage,
$open
]);
return response()->json(["data"=>$storageinheader], 200);
}
# Storage Out
public function addItemStorageOut(Request $request)
{
# Kitárolási sor hozzáadása
try
{
$headers = apache_request_headers();
if ($request['outmode'] == "eSerialNumber")
{
# Ha gyáriszámos a kiadás
DB::connection($headers['cdb'])->beginTransaction();
$storageoutheader=DB::connection($headers['cdb'])->select('SELECT * FROM StorageOutHeader WHERE Oid = ?', [$request['storageoutheader']]);
if ($storageoutheader[0]->IsEditable != 1) {
return response()->json("Nem szerkeszthető kitárolás!", 200);
}
$storageinrows=DB::connection($headers['cdb'])->select('SELECT *
FROM StorageInRows
WHERE Oid = ? AND IFNULL(QTT_Out_Will,0)=0 AND IFNULL(QTT_Out,0)=0', [$request['storageinrows']]);
// return response()->json($storageinrows, 200);
if (count($storageinrows)==1) {
# Van cucc, ki lehet adni
# StorageComputed
DB::connection($headers['cdb'])->update('UPDATE StorageComputed set QTT = QTT-1, QTTReservedOut=QTTReservedOut+1
WHERE Storage = ? AND Products = ?', [$storageoutheader[0]->Storage,$storageinrows[0]->Products]);
#StorageOutRows
DB::connection($headers['cdb'])->insert('INSERT INTO StorageOutRows (Oid, StorageOutHeader, StorageInRows, QTT_Will, QTT)
VALUES (UUID(), ?, ?, ?, ?)',
[$request['storageoutheader'],
$request['storageinrows'],
1,0
]
);
#StorageInRows update
DB::connection($headers['cdb'])->update('UPDATE StorageInRows set QTT_Out_Will = 1 WHERE Oid = ?', [$request['storageinrows']]);
}
DB::connection($headers['cdb'])->commit();
}
if ($request['outmode'] == "ePacketNumber"){
# Kötegszámos kitárolás
DB::connection($headers['cdb'])->beginTransaction();
$storageoutheader=DB::connection($headers['cdb'])->select('SELECT * FROM StorageOutHeader WHERE Oid = ?',
[
$request['storageoutheader']
]);
if ($storageoutheader[0]->IsEditable != 1) {
return response()->json("Nem szerkeszthető kitárolás!", 200);
}
$storageinrows=DB::connection($headers['cdb'])->select('SELECT *
FROM StorageInRows
WHERE Oid = ? AND IFNULL(QTT_Out_Will,0)=0 AND IFNULL(QTT_Out,0)=0',
[
$request['storageinrows']
]);
if (count($storageinrows) == 0) {
return response()->json("Nincs raktáron elegendő mennyiség !", 200);
}
$qtt_free = $storageinrows[0]->QTT - $storageinrows[0]->QTT_Out - $storageinrows[0]->QTT_Out_Will;
$qtt_need = floatval($request['qtt_will']);
if ($qtt_free >= $qtt_need)
{
# Van cucc, ki lehet adni
# StorageComputed
DB::connection($headers['cdb'])->update('UPDATE StorageComputed set QTT = QTT - ?, QTTReservedOut=QTTReservedOut + ?
WHERE Storage = ? AND Products = ?',
[
$request['qtt_will'],
$request['qtt_will'],
$storageoutheader[0]->Storage,
$storageinrows[0]->Products
]);
#StorageOutRows
DB::connection($headers['cdb'])->insert('INSERT INTO StorageOutRows (Oid, StorageOutHeader, StorageInRows, QTT_Will, QTT)
VALUES (UUID(), ?, ?, ?, ?)',
[$request['storageoutheader'],
$request['storageinrows'],
$request['qtt_will'],0
]
);
#StorageInRows update
DB::connection($headers['cdb'])->update('UPDATE StorageInRows set QTT_Out_Will = QTT_Out_Will + ?
WHERE Oid = ?',
[
$request['qtt_will'],
$request['storageinrows']
]);
}
DB::connection($headers['cdb'])->commit();
}
if ($request['outmode'] == "eProducts") {
# Sima termék kiadás FIFO alapján
DB::connection($headers['cdb'])->beginTransaction();
$storageinrows=DB::connection($headers['cdb'])->select('SELECT t1.QTT,t1.QTT_Out,t1.QTT_Out_Will,t1.Oid
FROM StorageInRows t1 JOIN StorageInHeader t2 ON
t1.StorageInHeader = t2.Oid
WHERE t2.Storage = ? AND
t1.Products = ? AND
t1.QTT > (t1.QTT_Out + t1.QTT_Out_Will) AND
t2.IsEditable = 0
ORDER BY t2.DateExecution ASC',
[
$request['storage'],
$request['products']
]);
$qtt_free = 0;
$qtt_need = floatval($request['qtt_will']);
foreach ($storageinrows as $key => $storageinrow)
{
$qtt_free = $qtt_free + $storageinrow->QTT - $storageinrow->QTT_Out - $storageinrow->QTT_Out_Will;
}
// return response()->json($qtt_free, 200);
if ($qtt_free >= $qtt_need)
{
foreach ($storageinrows as $key => $storageinrow)
{
$qtt_has = $storageinrow->QTT - $storageinrow->QTT_Out - $storageinrow->QTT_Out_Will;
if ($qtt_need <= $qtt_has)
{
# Most kell a sor rögzítése
DB::connection($headers['cdb'])->update('UPDATE StorageComputed set QTT = QTT - ?, QTTReservedOut=QTTReservedOut + ?
WHERE Storage = ? AND Products = ?',
[
$qtt_need,
$qtt_need,
$request['storage'],
$request['products']
]);
#StorageOutRows
DB::connection($headers['cdb'])->insert('INSERT INTO StorageOutRows (Oid, StorageOutHeader, StorageInRows, QTT_Will, QTT)
VALUES (UUID(), ?, ?, ?, ?)',
[
$request['storageoutheader'],
$storageinrow->Oid,
$qtt_need,0
]);
#StorageInRows update
DB::connection($headers['cdb'])->update('UPDATE StorageInRows set QTT_Out_Will = QTT_Out_Will + ?
WHERE Oid = ?',
[
$qtt_need,
$storageinrow->Oid
]);
break;
}
else
{
# Most kell a sor rögzítése
DB::connection($headers['cdb'])->update('UPDATE StorageComputed set QTT = QTT-1, QTTReservedOut=QTTReservedOut + ?
WHERE Storage = ? AND Products = ?',
[
$qtt_has,
$request['storage'],
$request['products']
]);
#StorageOutRows
DB::connection($headers['cdb'])->insert('INSERT INTO StorageOutRows (Oid, StorageOutHeader, StorageInRows, QTT_Will, QTT)
VALUES (UUID(), ?, ?, ?, ?)',
[
$request['storageoutheader'],
$storageinrow->Oid,
$qtt_has,0
]);
#StorageInRows update
DB::connection($headers['cdb'])->update('UPDATE StorageInRows set QTT_Out_Will = QTT_Out_Will + ?
WHERE Oid = ?',
[
$qtt_has,
$storageinrow->Oid
]);
$qtt_need = $qtt_need - $qtt_has;
}
}
}else
{
return response()->json("Nincs raktáron elegendő mennyiség !", 200);
}
DB::connection($headers['cdb'])->commit();
}
return response()->json("OK", 200);
}
catch (Exception $e)
{
return response()->json($e->getMessage(), 500);
}
}
public function addItemGroupStorageOut(Request $request)
{
try
{
$headers = apache_request_headers();
DB::connection($headers['cdb'])->beginTransaction();
$request->request->add(['packetnumber' => '']);
$request->request->add(['outmode' => "eSerialNumber"]);
foreach ($request['serialnumbers'] as $key => $serialnumber) {
# Most kell meghívni egyenként a sor hozzáadást.
$storageinrows=DB::connection($headers['cdb'])->
select('SELECT t1.Oid
FROM StorageInRows t1 join StorageInHeader t2 on
t1.StorageInHeader=t2.Oid
WHERE t1.Products = ? AND t1.SerialNumber = ? AND
t2.Storage = ? AND
t1.QTT_Out = 0 AND t1.QTT_Out_Will = 0',
[
$request['products'],
$serialnumber,
$request['storage']
]);
if (count($storageinrows)==1)
{
$request->request->add(['serialnumber' => $serialnumber]);
$request->request->add(['storageinrows' => $storageinrows[0]->Oid]);
$response = $this->addItemStorageOut($request);
if ($response->original != 'OK') {
return response()->json($response->original, 200);
}
}
}
$response = $this->makeSerialNumberRangeStorageOut($request);
if ($response->original != 'OK') {
return response()->json($response->original, 200);
}
DB::connection($headers['cdb'])->commit();
return response()->json("OK", 200);
}
catch (Exception $e)
{
return response()->json($e->getMessage(), 500);
}
}
public function removeItemStorageOut(Request $request)
{
try
{
$headers = apache_request_headers();
$storageoutrows=$request['storageoutrows'];
DB::connection($headers['cdb'])->beginTransaction();
foreach ($storageoutrows as $key => $storageoutrow)
{
$sor=DB::connection($headers['cdb'])->select('SELECT t2.Storage,t3.Products,t1.StorageOutHeader,t1.StorageInRows,t1.QTT_Will,t2.IsEditable
FROM StorageOutRows t1 JOIN StorageOutHeader t2 on
t1.StorageOutHeader=t2.Oid JOIN StorageInRows t3 on
t1.StorageInRows=t3.Oid
WHERE t1.Oid = ?', [$storageoutrow]);
if ($sor[0]->IsEditable != 1) {
return response()->json("Nem szerkeszthető kitárolás!", 200);
}
# StorageInRows update
DB::connection($headers['cdb'])->update('UPDATE StorageInRows set QTT_Out_Will=QTT_Out_Will-?
WHERE Oid = ?', [$sor[0]->QTT_Will,$sor[0]->StorageInRows]);
# StorageComputed update
DB::connection($headers['cdb'])->update('UPDATE StorageComputed set QTTReservedOut = QTTReservedOut - ?,QTT = QTT + ?
WHERE Products = ? AND Storage=?',
[
$sor[0]->QTT_Will,
$sor[0]->QTT_Will,
$sor[0]->Products,
$sor[0]->Storage
]);
# StorageOutRows delete
DB::connection($headers['cdb'])->delete('DELETE FROM StorageOutRows
WHERE Oid = ?', [$storageoutrow]);
$request->request->add(['storageoutheader' => $sor[0]->StorageOutHeader]);
$response = $this->makeSerialNumberRangeStorageOut($request);
if ($response->original != 'OK') {
return response()->json($response->original, 500);
}
}
DB::connection($headers['cdb'])->commit();
return response()->json("OK", 200);
}
catch (Exception $e)
{
return response()->json($e->getMessage(), 500);
}
}
public function finalizeStorageOut(Request $request)
{
try
{
$headers = apache_request_headers();
DB::connection($headers['cdb'])->beginTransaction();
$storageoutheader=DB::connection($headers['cdb'])->select('SELECT * FROM StorageOutHeader WHERE Oid = ?', [$request['storageoutheader']]);
if (count($storageoutheader)>0)
{
# Kitárolás véglegesítése
DB::connection($headers['cdb'])->update('UPDATE StorageOutHeader set IsEditable=0,IsFinalized=1
WHERE Oid = ?', [$request['storageoutheader']]);
# StorageInRows frissítése
$storageoutrows=DB::connection($headers['cdb'])->select('SELECT t1.Oid,t1.QTT_Will,t1.StorageInRows,t3.Products,t2.Storage,t2.DocumentNumber,t3.SerialNumber ,t2.DateExecution
FROM StorageOutRows t1 JOIN StorageOutHeader t2 on
t1.StorageOutHeader=t2.Oid JOIN StorageInRows t3 on
t1.StorageInRows=t3.Oid
where StorageOutHeader = ?', [$request['storageoutheader']]);
foreach ($storageoutrows as $key => $storageoutrow)
{
# StorageOutRows frissítése
DB::connection($headers['cdb'])->update('UPDATE StorageOutRows set QTT = QTT + QTT_Will, QTT_Will = 0
WHERE Oid = ?', [$storageoutrow->Oid]);
#StorageInRows frissítése
DB::connection($headers['cdb'])->update('UPDATE StorageInRows set QTT_Out = QTT_Out + ?, QTT_Out_Will = QTT_Out_Will - ?
WHERE Oid = ?',
[
$storageoutrow->QTT_Will,
$storageoutrow->QTT_Will,
$storageoutrow->StorageInRows
]);
# StorageComputed frissítése
DB::connection($headers['cdb'])->update('UPDATE StorageComputed
SET QTTReservedOut=QTTReservedOut - ?
WHERE Storage=? AND Products=?',
[
$storageoutrow->QTT_Will,
$storageoutrow->Storage,
$storageoutrow->Products
]);
# Eseménynapló
DB::connection($headers['cdb'])->insert('INSERT INTO StorageMoveEvents
(Oid, Storage, Products, DocumentNumber, SerialNumber, DateExecution, MoveEventsType,ObjectCreated,UserCreated)
VALUES (UUID(), ?, ?, ?, ?, ?, ?, NOW(), ?)',
[
$storageoutrow->Storage,
$storageoutrow->Products,
$storageoutrow->DocumentNumber,
$storageoutrow->SerialNumber,
$storageoutrow->DateExecution,
3,
$request['usercreated']
]);
}
}
DB::connection($headers['cdb'])->commit();
return response()->json("OK", 200);
}
catch (Exception $e)
{
return response()->json($e->getMessage(), 500);
}
}
public function finalizeAndMoveStorageOut(Request $request)
{
try
{
$headers = apache_request_headers();
DB::connection($headers['cdb'])->beginTransaction();
$response=$this->finalizeStorageOut($request);
$storageoutheader=DB::connection($headers['cdb'])->select('SELECT * FROM StorageOutHeader
WHERE Oid = ? AND IsEditable = 0 AND IsFinalized = 1',
[
$request['storageoutheader']
]);
if (count($storageoutheader)>0) {
# code...
DB::connection($headers['cdb'])->update('UPDATE StorageOutHeader SET DocumentNumber=CONCAT(DocumentNumber,"-ÁTAD")
WHERE Oid = ? AND IsEditable = 0 AND IsFinalized = 1',
[
$request['storageoutheader']
]);
#StorageMoveType ellenőrzése
$storagemovetype=DB::connection($headers['cdb'])->select('SELECT t1.Oid
FROM StorageMoveType t1
WHERE t1.MoveType = 6 AND t1.MoveDirection = 0 AND t1.Storage = ?',
[
$request['storage']
]);
if (count($storagemovetype) == 0) {
return response()->json("Nincs beállítva a fogadó raktár mozgás tipusa!", 500);
}
#StorageInHeader előkészítése
DB::connection($headers['cdb'])->insert('INSERT INTO StorageInHeader (Oid,Storage,DocumentNumber,DateExecution,IsEditable,IsFinalized,StorageOutHeader,StorageMoveType)
VALUES (UUID(), ?, ?, ?, ?, ?, ?, ?)',
[
$request['storage'],
$storageoutheader[0]->DocumentNumber.'-FOGAD',
$storageoutheader[0]->DateExecution,
1,0,
$request['storageoutheader'],
$storagemovetype[0]->Oid
]);
$storageinheader=DB::connection($headers['cdb'])->select('SELECT Oid,Storage from StorageInHeader WHERE StorageOutHeader = ?', [$request['storageoutheader']]);
#StorageInRows sorok elkészítése
$storageoutrows=DB::connection($headers['cdb'])->select('SELECT t2.SerialNumber,t2.Products,t1.QTT,t2.PacketNumber
FROM StorageOutRows t1 JOIN StorageInRows t2 on
t1.StorageInRows=t2.Oid
WHERE StorageOutHeader = ?',
[
$request['storageoutheader']
]);
$rowindex=1;
foreach ($storageoutrows as $key => $storageoutrow) {
DB::connection($headers['cdb'])->insert('INSERT INTO StorageInRows (Oid, StorageInHeader, SerialNumber, Products, QTT, QTT_Will, QTT_Out, QTT_Out_Will, RowIndex, PacketNumber)
VALUES (UUID(), ?, ?, ?, ?, ?, ?, ?, ?, ?)',
[
$storageinheader[0]->Oid,
$storageoutrow->SerialNumber,
$storageoutrow->Products,
0,
$storageoutrow->QTT,
0,
0,
$rowindex,
$storageoutrow->PacketNumber,
]);
$rowindex=$rowindex + 1;
$storagecomputed=DB::connection($headers['cdb'])->select('SELECT * FROM StorageComputed WHERE Storage = ? AND Products = ?', [$storageinheader[0]->Storage,$storageoutrow->Products]);
if (count($storagecomputed)==0) {
DB::connection($headers['cdb'])->insert('INSERT INTO StorageComputed (Oid, Products,Storage,QTT,IsLocked,QTTReservedIn,QTTReservedOut)
VALUES (UUID(), ?, ?, ?, ?, ?, ?)',
[
$storageoutrow->Products,
$storageinheader[0]->Storage,
0,0,$storageoutrow->QTT,0
]);
}else {
DB::connection($headers['cdb'])->update('UPDATE StorageComputed set QTTReservedIn=QTTReservedIn+?
WHERE Storage=? AND Products=?', [$storageoutrow->QTT,$storageinheader[0]->Storage,$storageoutrow->Products]);
}
}
$request->request->add(['storageinheader' => $storageinheader[0]->Oid]);
$this->finalizeStorageIn($request);
$this->makeSerialNumberRangeStorageIn($request);
DB::connection($headers['cdb'])->commit();
return response()->json("OK", 200);
}
}
catch (Exception $e)
{
return response()->json($e->getMessage(), 500);
}
}
# Inventory
public function startInventory(Request $request)
{
try
{
$headers = apache_request_headers();
DB::connection($headers['cdb'])->beginTransaction();
$inventoryheader=DB::connection($headers['cdb'])->select('SELECT *
FROM InventoryHeader t1
WHERE t1.Oid = ? AND t1.InventoryStatus = 1',
[
$request['inventoryheader']
]);
if (count($inventoryheader)>0) {
DB::connection($headers['cdb'])->delete('DELETE FROM InventoryStorageInRows WHERE InventoryHeader = ?', [$request['inventoryheader']]);
DB::connection($headers['cdb'])->insert('INSERT InventoryStorageInRows (Oid, InventoryHeader,StorageInRows,QTT)
SELECT UUID(), ?, t1.Oid,(t1.QTT - t1.QTT_Out) - t1.QTT_Will
FROM StorageInRows t1 JOIN StorageInHeader t2 on
t1.StorageInHeader = t2.Oid
WHERE t2.IsEditable = 0 AND (t1.QTT - t1.QTT_Out) > 0',
[$request['inventoryheader']]);
DB::connection($headers['cdb'])->update('UPDATE InventoryHeader set InventoryStatus = 2 WHERE Oid = ?', [$request['inventoryheader']]);
}else
{
return response()->json("Van már megkezdett leltár !", 200);
}
DB::connection($headers['cdb'])->commit();
return response()->json("OK", 200);
}
catch (Exception $e)
{
return response()->json($e->getMessage(), 500);
}
}
public function addItemInventory(Request $request)
{
try
{
$headers = apache_request_headers();
DB::connection($headers['cdb'])->beginTransaction();
if ($request['multitracknumber']=='eFirstTrack') {
$multitracknumber=0;
}else{
$multitracknumber=1;
}
$inventoryheader=DB::connection($headers['cdb'])->select('SELECT *
FROM InventoryHeader t1
WHERE t1.Oid = ? AND t1.InventoryStatus = 2',
[
$request['inventoryheader']
]);
if (count($inventoryheader)>0) {
if ($request['outmode']=='eSerialNumber') {
$inventoryrows=DB::connection($headers['cdb'])->select('SELECT *
FROM InventoryRows t1
WHERE t1.InventoryHeader = ? AND t1.SerialNumber = ? AND t1.MultiTrackNumber = ?',
[
$request['inventoryheader'],
$request['serialnumber'],
$multitracknumber
]);
if (count($inventoryrows) == 0) {
DB::connection($headers['cdb'])->insert('INSERT INTO InventoryRows (Oid, InventoryHeader, HRPerson, MultiTrackNumber, Products, SerialNumber, PacketNumber, QTT, ObjectCreated)
VALUES (UUID(), ?, ?, ?, ?, ?, ?, ?, NOW())',
[
$request['inventoryheader'],
$request['hrperson'],
$multitracknumber,
$request['products'],
$request['serialnumber'],
$request['packetnumber'],
1
]);
}else
{
return response()->json("A sorozatszám már rögzítve lett !", 200);
}
}
}
DB::connection($headers['cdb'])->commit();
return response()->json("OK", 200);
}
catch (Exception $e)
{
return response()->json($e->getMessage(), 500);
}
}
public function removeItemInventory(Request $request)
{
try
{
$headers = apache_request_headers();
$inventoryrows=$request['inventoryrows'];
DB::connection($headers['cdb'])->beginTransaction();
foreach ($inventoryrows as $key => $inventoryrow) {
DB::connection($headers['cdb'])->delete('DELETE FROM InventoryRows WHERE Oid = ?',[$inventoryrow]);
}
DB::connection($headers['cdb'])->commit();
return response()->json("OK", 200);
}
catch (Exception $e)
{
return response()->json($e->getMessage(), 500);
}
}
public function createDifferentInventory(Request $request)
{
try
{
$headers = apache_request_headers();
DB::connection($headers['cdb'])->beginTransaction();
DB::connection($headers['cdb'])->update('UPDATE InventoryRows set PacketNumber="" WHERE PacketNumber IS NULL');
DB::connection($headers['cdb'])->update('UPDATE StorageInRows set PacketNumber="" WHERE PacketNumber IS NULL');
$inventoryrows=DB::connection($headers['cdb'])->select('SELECT * FROM InventoryRows WHERE InventoryHeader = ?', [$request['inventoryheader']]);
$inventorystorageinrows=DB::connection($headers['cdb'])->select('SELECT t1.Oid, t2.Products, t2.SerialNumber, t2.PacketNumber, t1.QTT, t1.InventoryHeader
FROM InventoryStorageInRows t1 JOIN StorageInRows t2 on
t1.StorageInRows=t2.Oid
WHERE InventoryHeader = ?', [$request['inventoryheader']]);
DB::connection($headers['cdb'])->delete('DELETE FROM InventoryDifferent WHERE Oid = ?', [$request['inventoryheader']]);
foreach ($inventoryrows as $key => $inventoryrow)
{
$inventorydifferent=DB::connection($headers['cdb'])->select('SELECT * FROM InventoryDifferent
WHERE Products = ? AND SerialNumber = ? AND PacketNumber = ? AND InventoryHeader = ?',
[
$inventoryrow->Products,
$inventoryrow->SerialNumber,
$inventoryrow->PacketNumber,
$inventoryrow->InventoryHeader
]);
if (count($inventorydifferent)==0) {
if ($inventoryrow->MultiTrackNumber==0) {
$QTT_01=$inventoryrow->QTT;
$QTT_02=0;
}else
{
$QTT_02=$inventoryrow->QTT;
$QTT_01=0;
}
DB::connection($headers['cdb'])->insert('INSERT INTO InventoryDifferent (Oid, InventoryHeader, Products, SerialNumber, PacketNumber,
QTT_01, QTT_02, QTT_StorageInRows)
VALUES (UUID(), ?, ?, ?, ?, ?, ?, ?)',
[
$inventoryrow->InventoryHeader,
$inventoryrow->Products,
$inventoryrow->SerialNumber,
$inventoryrow->PacketNumber,
$QTT_01,
$QTT_02,
0
]);
}
else
{
if ($inventoryrow->MultiTrackNumber == 0)
{
DB::connection($headers['cdb'])->update('UPDATE InventoryDifferent set QTT_01 = ? WHERE Oid = ?', [$inventoryrow->QTT,$inventorydifferent[0]->Oid]);
}
if ($inventoryrow->MultiTrackNumber == 1)
{
DB::connection($headers['cdb'])->update('UPDATE InventoryDifferent set QTT_02 = ? WHERE Oid = ?', [$inventoryrow->QTT,$inventorydifferent[0]->Oid]);
}
}
}
foreach ($inventorystorageinrows as $key => $inventorystorageinrow)
{
$inventorydifferent=DB::connection($headers['cdb'])->select('SELECT * FROM InventoryDifferent
WHERE Products = ? AND SerialNumber = ? AND PacketNumber = ? AND InventoryHeader = ?',
[
$inventorystorageinrow->Products,
$inventorystorageinrow->SerialNumber,
$inventorystorageinrow->PacketNumber,
$inventorystorageinrow->InventoryHeader
]);
if (count($inventorydifferent)==0) {
DB::connection($headers['cdb'])->insert('INSERT INTO InventoryDifferent (Oid, InventoryHeader, Products, SerialNumber, PacketNumber,
QTT_01, QTT_02, QTT_StorageInRows)
VALUES (UUID(), ?, ?, ?, ?, ?, ?, ?)',
[
$inventorystorageinrow->InventoryHeader,
$inventorystorageinrow->Products,
$inventorystorageinrow->SerialNumber,
$inventorystorageinrow->PacketNumber,
0,
0,
$inventorystorageinrow->QTT
]);
}
else
{
DB::connection($headers['cdb'])->update('UPDATE InventoryDifferent set QTT_StorageInRows = ? WHERE Oid = ?', [$inventorystorageinrow->QTT,$inventorydifferent[0]->Oid]);
}
}
DB::connection($headers['cdb'])->commit();
return response()->json("OK", 200);
}
catch (Exception $e)
{
return response()->json($e->getMessage(), 500);
}
}
}