New movement stock can be linked to project
This commit is contained in:
parent
10bacda820
commit
56d75c552d
@ -3518,20 +3518,26 @@ class Product extends CommonObject
|
|||||||
* @param string $label Label of stock movement
|
* @param string $label Label of stock movement
|
||||||
* @param double $price Unit price HT of product, used to calculate average weighted price (PMP in french). If 0, average weighted price is not changed.
|
* @param double $price Unit price HT of product, used to calculate average weighted price (PMP in french). If 0, average weighted price is not changed.
|
||||||
* @param string $inventorycode Inventory code
|
* @param string $inventorycode Inventory code
|
||||||
|
* @param string $origin_element Origin element type
|
||||||
|
* @param int $origin_id Origin id of element
|
||||||
* @return int <0 if KO, >0 if OK
|
* @return int <0 if KO, >0 if OK
|
||||||
*/
|
*/
|
||||||
function correct_stock($user, $id_entrepot, $nbpiece, $movement, $label='', $price=0, $inventorycode='')
|
function correct_stock($user, $id_entrepot, $nbpiece, $movement, $label='', $price=0, $inventorycode='', $origin_element='', $origin_id=null)
|
||||||
{
|
{
|
||||||
if ($id_entrepot)
|
if ($id_entrepot)
|
||||||
{
|
{
|
||||||
$this->db->begin();
|
$this->db->begin();
|
||||||
|
|
||||||
require_once DOL_DOCUMENT_ROOT .'/product/stock/class/mouvementstock.class.php';
|
require_once DOL_DOCUMENT_ROOT .'/product/stock/class/mouvementstock.class.php';
|
||||||
|
|
||||||
|
// If remove stock then save it the actual PMP as price (the new calculation of PMP is triggered only with $movement = 0 || 3 )
|
||||||
|
if ($movement == 1) $price = $this->pmp;
|
||||||
|
|
||||||
$op[0] = "+".trim($nbpiece);
|
$op[0] = "+".trim($nbpiece);
|
||||||
$op[1] = "-".trim($nbpiece);
|
$op[1] = "-".trim($nbpiece);
|
||||||
|
|
||||||
$movementstock=new MouvementStock($this->db);
|
$movementstock=new MouvementStock($this->db);
|
||||||
|
$movementstock->setOrigin($origin_element, $origin_id);
|
||||||
$result=$movementstock->_create($user,$this->id,$id_entrepot,$op[$movement],$movement,$price,$label,$inventorycode);
|
$result=$movementstock->_create($user,$this->id,$id_entrepot,$op[$movement],$movement,$price,$label,$inventorycode);
|
||||||
|
|
||||||
if ($result >= 0)
|
if ($result >= 0)
|
||||||
@ -3563,9 +3569,11 @@ class Product extends CommonObject
|
|||||||
* @param date $dluo sell-by date
|
* @param date $dluo sell-by date
|
||||||
* @param string $lot Lot number
|
* @param string $lot Lot number
|
||||||
* @param string $inventorycode Inventory code
|
* @param string $inventorycode Inventory code
|
||||||
|
* @param string $origin_element Origin element type
|
||||||
|
* @param int $origin_id Origin id of element
|
||||||
* @return int <0 if KO, >0 if OK
|
* @return int <0 if KO, >0 if OK
|
||||||
*/
|
*/
|
||||||
function correct_stock_batch($user, $id_entrepot, $nbpiece, $movement, $label='', $price=0, $dlc='', $dluo='',$lot='', $inventorycode='')
|
function correct_stock_batch($user, $id_entrepot, $nbpiece, $movement, $label='', $price=0, $dlc='', $dluo='',$lot='', $inventorycode='', $origin_element='', $origin_id=null)
|
||||||
{
|
{
|
||||||
if ($id_entrepot)
|
if ($id_entrepot)
|
||||||
{
|
{
|
||||||
@ -3573,10 +3581,14 @@ class Product extends CommonObject
|
|||||||
|
|
||||||
require_once DOL_DOCUMENT_ROOT .'/product/stock/class/mouvementstock.class.php';
|
require_once DOL_DOCUMENT_ROOT .'/product/stock/class/mouvementstock.class.php';
|
||||||
|
|
||||||
|
// If remove stock then save it the actual PMP as price (the new calculation of PMP is triggered only with $movement = 0 || 3 )
|
||||||
|
if ($movement == 1) $price = $this->pmp;
|
||||||
|
|
||||||
$op[0] = "+".trim($nbpiece);
|
$op[0] = "+".trim($nbpiece);
|
||||||
$op[1] = "-".trim($nbpiece);
|
$op[1] = "-".trim($nbpiece);
|
||||||
|
|
||||||
$movementstock=new MouvementStock($this->db);
|
$movementstock=new MouvementStock($this->db);
|
||||||
|
$movementstock->setOrigin($origin_element, $origin_id);
|
||||||
$result=$movementstock->_create($user,$this->id,$id_entrepot,$op[$movement],$movement,$price,$label,$inventorycode,'',$dlc,$dluo,$lot);
|
$result=$movementstock->_create($user,$this->id,$id_entrepot,$op[$movement],$movement,$price,$label,$inventorycode,'',$dlc,$dluo,$lot);
|
||||||
|
|
||||||
if ($result >= 0)
|
if ($result >= 0)
|
||||||
|
|||||||
@ -893,6 +893,33 @@ class MouvementStock extends CommonObject
|
|||||||
|
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set attribute origin to object
|
||||||
|
*
|
||||||
|
* @param string $origin_element
|
||||||
|
* @param int $origin_id
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
function setOrigin($origin_element, $origin_id)
|
||||||
|
{
|
||||||
|
if (!empty($origin_element) && $origin_id > 0)
|
||||||
|
{
|
||||||
|
$origin='';
|
||||||
|
if ($origin_element == 'project')
|
||||||
|
{
|
||||||
|
if (!class_exists('Project')) require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php';
|
||||||
|
$origin = new Project($this->db);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($origin))
|
||||||
|
{
|
||||||
|
$this->origin = $origin;
|
||||||
|
$this->origin->id = $origin_id;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -34,6 +34,11 @@ require_once DOL_DOCUMENT_ROOT.'/product/class/html.formproduct.class.php';
|
|||||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/stock.lib.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/stock.lib.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/product.lib.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/product.lib.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
|
||||||
|
if (! empty($conf->projet->enabled))
|
||||||
|
{
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formprojet.class.php';
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php';
|
||||||
|
}
|
||||||
|
|
||||||
$langs->load("products");
|
$langs->load("products");
|
||||||
$langs->load("stocks");
|
$langs->load("stocks");
|
||||||
@ -156,6 +161,15 @@ if ($action == "correct_stock")
|
|||||||
|
|
||||||
if (! $error)
|
if (! $error)
|
||||||
{
|
{
|
||||||
|
$origin_element = '';
|
||||||
|
$origin_id = null;
|
||||||
|
|
||||||
|
if (GETPOST('projectid', 'int'))
|
||||||
|
{
|
||||||
|
$origin_element = 'project';
|
||||||
|
$origin_id = GETPOST('projectid', 'int');
|
||||||
|
}
|
||||||
|
|
||||||
if ($product->hasbatch())
|
if ($product->hasbatch())
|
||||||
{
|
{
|
||||||
$batch=GETPOST('batch_number');
|
$batch=GETPOST('batch_number');
|
||||||
@ -173,7 +187,9 @@ if ($action == "correct_stock")
|
|||||||
GETPOST("label",'san_alpha'),
|
GETPOST("label",'san_alpha'),
|
||||||
GETPOST('unitprice'),
|
GETPOST('unitprice'),
|
||||||
$eatby,$sellby,$batch,
|
$eatby,$sellby,$batch,
|
||||||
GETPOST('inventorycode')
|
GETPOST('inventorycode'),
|
||||||
|
$origin_element,
|
||||||
|
$origin_id
|
||||||
); // We do not change value of stock for a correction
|
); // We do not change value of stock for a correction
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -185,7 +201,9 @@ if ($action == "correct_stock")
|
|||||||
GETPOST("mouvement"),
|
GETPOST("mouvement"),
|
||||||
GETPOST("label",'san_alpha'),
|
GETPOST("label",'san_alpha'),
|
||||||
GETPOST('unitprice'),
|
GETPOST('unitprice'),
|
||||||
GETPOST('inventorycode')
|
GETPOST('inventorycode'),
|
||||||
|
$origin_element,
|
||||||
|
$origin_id
|
||||||
); // We do not change value of stock for a correction
|
); // We do not change value of stock for a correction
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -392,6 +410,7 @@ $userstatic=new User($db);
|
|||||||
$form=new Form($db);
|
$form=new Form($db);
|
||||||
$formother=new FormOther($db);
|
$formother=new FormOther($db);
|
||||||
$formproduct=new FormProduct($db);
|
$formproduct=new FormProduct($db);
|
||||||
|
if (!empty($conf->projet->enabled)) $formproject=new FormProjets($db);
|
||||||
|
|
||||||
$sql = "SELECT p.rowid, p.ref as product_ref, p.label as produit, p.fk_product_type as type, p.entity,";
|
$sql = "SELECT p.rowid, p.ref as product_ref, p.label as produit, p.fk_product_type as type, p.entity,";
|
||||||
$sql.= " e.label as stock, e.rowid as entrepot_id, e.lieu,";
|
$sql.= " e.label as stock, e.rowid as entrepot_id, e.lieu,";
|
||||||
|
|||||||
@ -37,6 +37,11 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/product.lib.php';
|
|||||||
require_once DOL_DOCUMENT_ROOT.'/product/class/html.formproduct.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/product/class/html.formproduct.class.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/product/stock/class/productstockentrepot.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/product/stock/class/productstockentrepot.class.php';
|
||||||
if (! empty($conf->productbatch->enabled)) require_once DOL_DOCUMENT_ROOT.'/product/class/productbatch.class.php';
|
if (! empty($conf->productbatch->enabled)) require_once DOL_DOCUMENT_ROOT.'/product/class/productbatch.class.php';
|
||||||
|
if (! empty($conf->projet->enabled))
|
||||||
|
{
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formprojet.class.php';
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php';
|
||||||
|
}
|
||||||
|
|
||||||
$langs->load("products");
|
$langs->load("products");
|
||||||
$langs->load("orders");
|
$langs->load("orders");
|
||||||
@ -220,6 +225,15 @@ if ($action == "correct_stock" && ! $cancel)
|
|||||||
$priceunit=price2num(GETPOST("unitprice"));
|
$priceunit=price2num(GETPOST("unitprice"));
|
||||||
if (is_numeric(GETPOST("nbpiece")) && $id)
|
if (is_numeric(GETPOST("nbpiece")) && $id)
|
||||||
{
|
{
|
||||||
|
$origin_element = '';
|
||||||
|
$origin_id = null;
|
||||||
|
|
||||||
|
if (GETPOST('projectid', 'int'))
|
||||||
|
{
|
||||||
|
$origin_element = 'project';
|
||||||
|
$origin_id = GETPOST('projectid', 'int');
|
||||||
|
}
|
||||||
|
|
||||||
if (empty($object)) {
|
if (empty($object)) {
|
||||||
$object = new Product($db);
|
$object = new Product($db);
|
||||||
$result=$object->fetch($id);
|
$result=$object->fetch($id);
|
||||||
@ -236,7 +250,9 @@ if ($action == "correct_stock" && ! $cancel)
|
|||||||
$d_eatby,
|
$d_eatby,
|
||||||
$d_sellby,
|
$d_sellby,
|
||||||
$batchnumber,
|
$batchnumber,
|
||||||
GETPOST('inventorycode')
|
GETPOST('inventorycode'),
|
||||||
|
$origin_element,
|
||||||
|
$origin_id
|
||||||
); // We do not change value of stock for a correction
|
); // We do not change value of stock for a correction
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -248,7 +264,9 @@ if ($action == "correct_stock" && ! $cancel)
|
|||||||
GETPOST("mouvement"),
|
GETPOST("mouvement"),
|
||||||
GETPOST("label"),
|
GETPOST("label"),
|
||||||
$priceunit,
|
$priceunit,
|
||||||
GETPOST('inventorycode')
|
GETPOST('inventorycode'),
|
||||||
|
$origin_element,
|
||||||
|
$origin_id
|
||||||
); // We do not change value of stock for a correction
|
); // We do not change value of stock for a correction
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -490,7 +508,7 @@ if ($action == 'updateline' && GETPOST('save') == $langs->trans('Save'))
|
|||||||
|
|
||||||
$form = new Form($db);
|
$form = new Form($db);
|
||||||
$formproduct=new FormProduct($db);
|
$formproduct=new FormProduct($db);
|
||||||
|
if (! empty($conf->projet->enabled)) $formproject=new FormProjets($db);
|
||||||
|
|
||||||
if ($id > 0 || $ref)
|
if ($id > 0 || $ref)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -77,7 +77,14 @@
|
|||||||
// Purchase price
|
// Purchase price
|
||||||
print '<tr>';
|
print '<tr>';
|
||||||
print '<td width="20%" colspan="2">'.$langs->trans("UnitPurchaseValue").'</td>';
|
print '<td width="20%" colspan="2">'.$langs->trans("UnitPurchaseValue").'</td>';
|
||||||
print '<td colspan="4"><input class="flat" name="unitprice" id="unitprice" size="10" value="'.GETPOST("unitprice").'"></td>';
|
print '<td colspan="'.(!empty($conf->projet->enabled) ? '2' : '4').'"><input class="flat" name="unitprice" id="unitprice" size="10" value="'.GETPOST("unitprice").'"></td>';
|
||||||
|
if (! empty($conf->projet->enabled))
|
||||||
|
{
|
||||||
|
print '<td>'.$langs->trans('Project').'</td>';
|
||||||
|
print '<td>';
|
||||||
|
$formproject->select_projects();
|
||||||
|
print '</td>';
|
||||||
|
}
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
// Serial / Eat-by date
|
// Serial / Eat-by date
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user