Fix move the code into mouvementstock class

This commit is contained in:
phf 2016-06-07 12:27:43 +02:00
parent c62a69ccc8
commit 67392fbac5
2 changed files with 89 additions and 97 deletions

View File

@ -240,7 +240,7 @@ class MouvementStock extends CommonObject
return -1; return -1;
} }
} }
// TODO Check qty is ok for stock move. // TODO Check qty is ok for stock move.
if (! empty($conf->productbatch->enabled) && $product->hasbatch() && ! $skip_batch) if (! empty($conf->productbatch->enabled) && $product->hasbatch() && ! $skip_batch)
{ {
@ -250,6 +250,17 @@ class MouvementStock extends CommonObject
{ {
} }
if (empty($conf->global->STOCK_ALLOW_NEGATIVE_TRANSFER) && in_array($type, array(1, 2)))
{
if (empty($product->stock_warehouse[$entrepot_id]->real) || $product->stock_warehouse[$entrepot_id]->real < abs($qty))
{
$this->error = $langs->trans('qtyToTranferIsNotEnough');
$this->errors[] = $langs->trans('qtyToTranferIsNotEnough');
$this->db->rollback();
return -8;
}
}
// Define if we must make the stock change (If product type is a service or if stock is used also for services) // Define if we must make the stock change (If product type is a service or if stock is used also for services)
$movestock=0; $movestock=0;

View File

@ -231,117 +231,98 @@ if ($action == "transfert_stock" && ! $cancel)
$pricesrc=0; $pricesrc=0;
if (isset($object->pmp)) $pricesrc=$object->pmp; if (isset($object->pmp)) $pricesrc=$object->pmp;
$pricedest=$pricesrc; $pricedest=$pricesrc;
$do_tranfer = true;
if (empty($conf->global->STOCK_ALLOW_NEGATIVE_TRANSFER))
{
$fk_warehouse_source = GETPOST("id_entrepot");
$nb_unit = GETPOST("nbpiece",'int');
if (empty($object->stock_warehouse[$fk_warehouse_source]->real) || $object->stock_warehouse[$fk_warehouse_source]->real < $nb_unit)
{
$do_tranfer = false;
$result1 = $result2 = -1;
$action='';
$object->error = $langs->trans('qtyToTranferIsNotEnough');
}
}
if ($do_tranfer) if ($object->hasbatch())
{ {
$pdluo = new Productbatch($db);
if ($object->hasbatch()) if ($pdluoid > 0)
{ {
$pdluo = new Productbatch($db); $result=$pdluo->fetch($pdluoid);
if ($result)
if ($pdluoid > 0)
{ {
$result=$pdluo->fetch($pdluoid); $srcwarehouseid=$pdluo->warehouseid;
if ($result) $batch=$pdluo->batch;
{ $eatby=$pdluo->eatby;
$srcwarehouseid=$pdluo->warehouseid; $sellby=$pdluo->sellby;
$batch=$pdluo->batch;
$eatby=$pdluo->eatby;
$sellby=$pdluo->sellby;
}
else
{
setEventMessages($pdluo->error, $pdluo->errors, 'errors');
$error++;
}
} }
else else
{ {
$srcwarehouseid=GETPOST('id_entrepot','int'); setEventMessages($pdluo->error, $pdluo->errors, 'errors');
$batch=GETPOST('batch_number'); $error++;
$eatby=$d_eatby;
$sellby=$d_sellby;
}
if (! $error)
{
// Remove stock
$result1=$object->correct_stock_batch(
$user,
$srcwarehouseid,
GETPOST("nbpiece",'int'),
1,
GETPOST("label",'san_alpha'),
$pricesrc,
$eatby,$sellby,$batch,
GETPOST('inventorycode')
);
if ($result1 < 0) $error++;
}
if (! $error)
{
// Add stock
$result2=$object->correct_stock_batch(
$user,
GETPOST("id_entrepot_destination",'int'),
GETPOST("nbpiece",'int'),
0,
GETPOST("label",'san_alpha'),
$pricedest,
$eatby,$sellby,$batch,
GETPOST('inventorycode')
);
if ($result2 < 0) $error++;
} }
} }
else else
{ {
if (! $error) $srcwarehouseid=GETPOST('id_entrepot','int');
{ $batch=GETPOST('batch_number');
// Remove stock $eatby=$d_eatby;
$result1=$object->correct_stock( $sellby=$d_sellby;
$user,
GETPOST("id_entrepot"),
GETPOST("nbpiece"),
1,
GETPOST("label"),
$pricesrc,
GETPOST('inventorycode')
);
if ($result1 < 0) $error++;
}
if (! $error)
{
// Add stock
$result2=$object->correct_stock(
$user,
GETPOST("id_entrepot_destination"),
GETPOST("nbpiece"),
0,
GETPOST("label"),
$pricedest,
GETPOST('inventorycode')
);
if ($result2 < 0) $error++;
}
} }
if (! $error)
{
// Remove stock
$result1=$object->correct_stock_batch(
$user,
$srcwarehouseid,
GETPOST("nbpiece",'int'),
1,
GETPOST("label",'san_alpha'),
$pricesrc,
$eatby,$sellby,$batch,
GETPOST('inventorycode')
);
if ($result1 < 0) $error++;
}
if (! $error)
{
// Add stock
$result2=$object->correct_stock_batch(
$user,
GETPOST("id_entrepot_destination",'int'),
GETPOST("nbpiece",'int'),
0,
GETPOST("label",'san_alpha'),
$pricedest,
$eatby,$sellby,$batch,
GETPOST('inventorycode')
);
if ($result2 < 0) $error++;
}
} }
else
{
if (! $error)
{
// Remove stock
$result1=$object->correct_stock(
$user,
GETPOST("id_entrepot"),
GETPOST("nbpiece"),
1,
GETPOST("label"),
$pricesrc,
GETPOST('inventorycode')
);
if ($result1 < 0) $error++;
}
if (! $error)
{
// Add stock
$result2=$object->correct_stock(
$user,
GETPOST("id_entrepot_destination"),
GETPOST("nbpiece"),
0,
GETPOST("label"),
$pricedest,
GETPOST('inventorycode')
);
if ($result2 < 0) $error++;
}
}
if (! $error && $result1 >= 0 && $result2 >= 0) if (! $error && $result1 >= 0 && $result2 >= 0)
{ {