Close #18770 : Can enter buying price on line
This commit is contained in:
parent
8cfccdcc5f
commit
7361941420
@ -103,6 +103,7 @@ class CommandeFournisseurDispatch extends CommonObjectLine
|
|||||||
public $batch;
|
public $batch;
|
||||||
public $eatby = '';
|
public $eatby = '';
|
||||||
public $sellby = '';
|
public $sellby = '';
|
||||||
|
public $cost_price = 0;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -189,7 +190,8 @@ class CommandeFournisseurDispatch extends CommonObjectLine
|
|||||||
$sql .= "batch,";
|
$sql .= "batch,";
|
||||||
$sql .= "eatby,";
|
$sql .= "eatby,";
|
||||||
$sql .= "sellby,";
|
$sql .= "sellby,";
|
||||||
$sql .= "fk_reception";
|
$sql .= "fk_reception,";
|
||||||
|
$sql .= "cost_price";
|
||||||
|
|
||||||
|
|
||||||
$sql .= ") VALUES (";
|
$sql .= ") VALUES (";
|
||||||
@ -205,7 +207,8 @@ class CommandeFournisseurDispatch extends CommonObjectLine
|
|||||||
$sql .= " ".(!isset($this->batch) ? 'NULL' : "'".$this->db->escape($this->batch)."'").",";
|
$sql .= " ".(!isset($this->batch) ? 'NULL' : "'".$this->db->escape($this->batch)."'").",";
|
||||||
$sql .= " ".(!isset($this->eatby) || dol_strlen($this->eatby) == 0 ? 'NULL' : "'".$this->db->idate($this->eatby)."'").",";
|
$sql .= " ".(!isset($this->eatby) || dol_strlen($this->eatby) == 0 ? 'NULL' : "'".$this->db->idate($this->eatby)."'").",";
|
||||||
$sql .= " ".(!isset($this->sellby) || dol_strlen($this->sellby) == 0 ? 'NULL' : "'".$this->db->idate($this->sellby)."'").",";
|
$sql .= " ".(!isset($this->sellby) || dol_strlen($this->sellby) == 0 ? 'NULL' : "'".$this->db->idate($this->sellby)."'").",";
|
||||||
$sql .= " ".(!isset($this->fk_reception) ? 'NULL' : "'".$this->db->escape($this->fk_reception)."'")."";
|
$sql .= " ".(!isset($this->fk_reception) ? 'NULL' : "'".$this->db->escape($this->fk_reception)."'").",";
|
||||||
|
$sql .= " ".(!isset($this->cost_price) ? '0' : "'".$this->db->escape($this->cost_price)."'")."";
|
||||||
$sql .= ")";
|
$sql .= ")";
|
||||||
|
|
||||||
$this->db->begin();
|
$this->db->begin();
|
||||||
|
|||||||
@ -111,3 +111,5 @@ ALTER TABLE llx_product_lot ADD COLUMN barcode varchar(180) DEFAULT NULL;
|
|||||||
ALTER TABLE llx_product_lot ADD COLUMN fk_barcode_type integer DEFAULT NULL;
|
ALTER TABLE llx_product_lot ADD COLUMN fk_barcode_type integer DEFAULT NULL;
|
||||||
|
|
||||||
ALTER TABLE llx_projet ADD COLUMN max_attendees integer DEFAULT 0;
|
ALTER TABLE llx_projet ADD COLUMN max_attendees integer DEFAULT 0;
|
||||||
|
|
||||||
|
ALTER TABLE llx_commande_fournisseur_dispatch ADD COLUMN cost_price double(24,8) DEFAULT 0;
|
||||||
|
|||||||
@ -36,5 +36,6 @@ create table llx_commande_fournisseur_dispatch
|
|||||||
sellby date DEFAULT NULL,
|
sellby date DEFAULT NULL,
|
||||||
status integer,
|
status integer,
|
||||||
datec datetime,
|
datec datetime,
|
||||||
tms timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
tms timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||||
|
cost_price double(24,8) DEFAULT 0
|
||||||
)ENGINE=innodb;
|
)ENGINE=innodb;
|
||||||
|
|||||||
@ -45,3 +45,4 @@ ReceptionsNumberingModules=Numbering module for receptions
|
|||||||
ReceptionsReceiptModel=Document templates for receptions
|
ReceptionsReceiptModel=Document templates for receptions
|
||||||
NoMorePredefinedProductToDispatch=No more predefined products to dispatch
|
NoMorePredefinedProductToDispatch=No more predefined products to dispatch
|
||||||
ReceptionExist=A reception exists
|
ReceptionExist=A reception exists
|
||||||
|
ByingPrice=Bying price
|
||||||
|
|||||||
@ -45,3 +45,4 @@ ReceptionsNumberingModules=Module de numérotation pour les réceptions
|
|||||||
ReceptionsReceiptModel=Modèles de document pour les réceptions
|
ReceptionsReceiptModel=Modèles de document pour les réceptions
|
||||||
NoMorePredefinedProductToDispatch=Plus de produits prédéfinis à expédier
|
NoMorePredefinedProductToDispatch=Plus de produits prédéfinis à expédier
|
||||||
ReceptionExist=Une réception existe
|
ReceptionExist=Une réception existe
|
||||||
|
ByingPrice=Prix d'achat
|
||||||
|
|||||||
@ -340,6 +340,7 @@ if (empty($reshook)) {
|
|||||||
$eatby = "dlc".$i;
|
$eatby = "dlc".$i;
|
||||||
$sellby = "dluo".$i;
|
$sellby = "dluo".$i;
|
||||||
$batch = "batch".$i;
|
$batch = "batch".$i;
|
||||||
|
$cost_price = "cost_price".$i;
|
||||||
|
|
||||||
if (GETPOST($qty, 'int') > 0 || (GETPOST($qty, 'int') == 0 && $conf->global->RECEPTION_GETS_ALL_ORDER_PRODUCTS)) {
|
if (GETPOST($qty, 'int') > 0 || (GETPOST($qty, 'int') == 0 && $conf->global->RECEPTION_GETS_ALL_ORDER_PRODUCTS)) {
|
||||||
$ent = "entl".$i;
|
$ent = "entl".$i;
|
||||||
@ -364,8 +365,11 @@ if (empty($reshook)) {
|
|||||||
$sellby = GETPOST($sellby, 'alpha');
|
$sellby = GETPOST($sellby, 'alpha');
|
||||||
$eatbydate = str_replace('/', '-', $eatby);
|
$eatbydate = str_replace('/', '-', $eatby);
|
||||||
$sellbydate = str_replace('/', '-', $sellby);
|
$sellbydate = str_replace('/', '-', $sellby);
|
||||||
|
if (!empty($conf->global->STOCK_CALCULATE_ON_RECEPTION) || !empty($conf->global->STOCK_CALCULATE_ON_RECEPTION_CLOSE)) {
|
||||||
$ret = $object->addline($entrepot_id, GETPOST($idl, 'int'), GETPOST($qty, 'int'), $array_options[$i], GETPOST($comment, 'alpha'), strtotime($eatbydate), strtotime($sellbydate), GETPOST($batch, 'alpha'));
|
$ret = $object->addline($entrepot_id, GETPOST($idl, 'int'), GETPOST($qty, 'int'), $array_options[$i], GETPOST($comment, 'alpha'), strtotime($eatbydate), strtotime($sellbydate), GETPOST($batch, 'alpha'), GETPOST($cost_price, 'double'));
|
||||||
|
} else {
|
||||||
|
$ret = $object->addline($entrepot_id, GETPOST($idl, 'int'), GETPOST($qty, 'int'), $array_options[$i], GETPOST($comment, 'alpha'), strtotime($eatbydate), strtotime($sellbydate), GETPOST($batch, 'alpha'));
|
||||||
|
}
|
||||||
if ($ret < 0) {
|
if ($ret < 0) {
|
||||||
setEventMessages($object->error, $object->errors, 'errors');
|
setEventMessages($object->error, $object->errors, 'errors');
|
||||||
$error++;
|
$error++;
|
||||||
@ -989,6 +993,9 @@ if ($action == 'create') {
|
|||||||
print '<td class="center">'.$langs->trans("QtyOrdered").'</td>';
|
print '<td class="center">'.$langs->trans("QtyOrdered").'</td>';
|
||||||
print '<td class="center">'.$langs->trans("QtyReceived").'</td>';
|
print '<td class="center">'.$langs->trans("QtyReceived").'</td>';
|
||||||
print '<td class="center">'.$langs->trans("QtyToReceive");
|
print '<td class="center">'.$langs->trans("QtyToReceive");
|
||||||
|
if (!empty($conf->global->STOCK_CALCULATE_ON_RECEPTION || $conf->global->STOCK_CALCULATE_ON_RECEPTION_CLOSE)) {
|
||||||
|
print '<td>'.$langs->trans("ByingPrice").'</td>';
|
||||||
|
}
|
||||||
if (empty($conf->productbatch->enabled)) {
|
if (empty($conf->productbatch->enabled)) {
|
||||||
print ' <br>(<a href="#" id="autofill">'.$langs->trans("Fill").'</a>';
|
print ' <br>(<a href="#" id="autofill">'.$langs->trans("Fill").'</a>';
|
||||||
print ' / <a href="#" id="autoreset">'.$langs->trans("Reset").'</a>)';
|
print ' / <a href="#" id="autoreset">'.$langs->trans("Reset").'</a>)';
|
||||||
@ -1118,6 +1125,7 @@ if ($action == 'create') {
|
|||||||
|
|
||||||
$stock = + $product->stock_warehouse[$dispatchLines[$indiceAsked]['ent']]->real; // Convert to number
|
$stock = + $product->stock_warehouse[$dispatchLines[$indiceAsked]['ent']]->real; // Convert to number
|
||||||
$deliverableQty = $dispatchLines[$indiceAsked]['qty'];
|
$deliverableQty = $dispatchLines[$indiceAsked]['qty'];
|
||||||
|
$cost_price = $dispatchLines[$indiceAsked]['pu'];
|
||||||
|
|
||||||
// Quantity to send
|
// Quantity to send
|
||||||
print '<td class="center">';
|
print '<td class="center">';
|
||||||
@ -1132,6 +1140,12 @@ if ($action == 'create') {
|
|||||||
}
|
}
|
||||||
print '</td>';
|
print '</td>';
|
||||||
|
|
||||||
|
if (!empty($conf->global->STOCK_CALCULATE_ON_RECEPTION) || !empty($conf->global->STOCK_CALCULATE_ON_RECEPTION_CLOSE)) {
|
||||||
|
print '<td>';
|
||||||
|
print '<input name="cost_price'.$indiceAsked.'" id="cost_price'.$indiceAsked.'" value="'.$cost_price.'">';
|
||||||
|
print '</td>';
|
||||||
|
}
|
||||||
|
|
||||||
// Stock
|
// Stock
|
||||||
if (!empty($conf->stock->enabled)) {
|
if (!empty($conf->stock->enabled)) {
|
||||||
print '<td class="left">';
|
print '<td class="left">';
|
||||||
|
|||||||
@ -562,6 +562,9 @@ class Reception extends CommonObject
|
|||||||
$sql = "SELECT cd.fk_product, cd.subprice,";
|
$sql = "SELECT cd.fk_product, cd.subprice,";
|
||||||
$sql .= " ed.rowid, ed.qty, ed.fk_entrepot,";
|
$sql .= " ed.rowid, ed.qty, ed.fk_entrepot,";
|
||||||
$sql .= " ed.eatby, ed.sellby, ed.batch";
|
$sql .= " ed.eatby, ed.sellby, ed.batch";
|
||||||
|
if (!empty($conf->global->STOCK_CALCULATE_ON_RECEPTION || $conf->global->STOCK_CALCULATE_ON_RECEPTION_CLOSE)) {
|
||||||
|
$sql .= ", ed.cost_price";
|
||||||
|
}
|
||||||
$sql .= " FROM ".MAIN_DB_PREFIX."commande_fournisseurdet as cd,";
|
$sql .= " FROM ".MAIN_DB_PREFIX."commande_fournisseurdet as cd,";
|
||||||
$sql .= " ".MAIN_DB_PREFIX."commande_fournisseur_dispatch as ed";
|
$sql .= " ".MAIN_DB_PREFIX."commande_fournisseur_dispatch as ed";
|
||||||
$sql .= " WHERE ed.fk_reception = ".((int) $this->id);
|
$sql .= " WHERE ed.fk_reception = ".((int) $this->id);
|
||||||
@ -589,7 +592,11 @@ class Reception extends CommonObject
|
|||||||
// line without batch detail
|
// line without batch detail
|
||||||
|
|
||||||
// We decrement stock of product (and sub-products) -> update table llx_product_stock (key of this table is fk_product+fk_entrepot) and add a movement record.
|
// We decrement stock of product (and sub-products) -> update table llx_product_stock (key of this table is fk_product+fk_entrepot) and add a movement record.
|
||||||
$result = $mouvS->reception($user, $obj->fk_product, $obj->fk_entrepot, $qty, $obj->subprice, $langs->trans("ReceptionValidatedInDolibarr", $numref));
|
if (!empty($conf->global->STOCK_CALCULATE_ON_RECEPTION || $conf->global->STOCK_CALCULATE_ON_RECEPTION_CLOSE)) {
|
||||||
|
$result = $mouvS->reception($user, $obj->fk_product, $obj->fk_entrepot, $qty, $obj->cost_price, $langs->trans("ReceptionValidatedInDolibarr", $numref));
|
||||||
|
} else {
|
||||||
|
$result = $mouvS->reception($user, $obj->fk_product, $obj->fk_entrepot, $qty, $obj->subprice, $langs->trans("ReceptionValidatedInDolibarr", $numref));
|
||||||
|
}
|
||||||
if ($result < 0) {
|
if ($result < 0) {
|
||||||
$error++;
|
$error++;
|
||||||
$this->errors[] = $mouvS->error;
|
$this->errors[] = $mouvS->error;
|
||||||
@ -601,7 +608,11 @@ class Reception extends CommonObject
|
|||||||
|
|
||||||
// We decrement stock of product (and sub-products) -> update table llx_product_stock (key of this table is fk_product+fk_entrepot) and add a movement record.
|
// We decrement stock of product (and sub-products) -> update table llx_product_stock (key of this table is fk_product+fk_entrepot) and add a movement record.
|
||||||
// Note: ->fk_origin_stock = id into table llx_product_batch (may be rename into llx_product_stock_batch in another version)
|
// Note: ->fk_origin_stock = id into table llx_product_batch (may be rename into llx_product_stock_batch in another version)
|
||||||
$result = $mouvS->reception($user, $obj->fk_product, $obj->fk_entrepot, $qty, $obj->subprice, $langs->trans("ReceptionValidatedInDolibarr", $numref), $this->db->jdate($obj->eatby), $this->db->jdate($obj->sellby), $obj->batch);
|
if (!empty($conf->global->STOCK_CALCULATE_ON_RECEPTION || $conf->global->STOCK_CALCULATE_ON_RECEPTION_CLOSE)) {
|
||||||
|
$result = $mouvS->reception($user, $obj->fk_product, $obj->fk_entrepot, $qty, $obj->cost_price, $langs->trans("ReceptionValidatedInDolibarr", $numref), $this->db->jdate($obj->eatby), $this->db->jdate($obj->sellby), $obj->batch);
|
||||||
|
} else {
|
||||||
|
$result = $mouvS->reception($user, $obj->fk_product, $obj->fk_entrepot, $qty, $obj->subprice, $langs->trans("ReceptionValidatedInDolibarr", $numref), $this->db->jdate($obj->eatby), $this->db->jdate($obj->sellby), $obj->batch);
|
||||||
|
}
|
||||||
if ($result < 0) {
|
if ($result < 0) {
|
||||||
$error++;
|
$error++;
|
||||||
$this->errors[] = $mouvS->error;
|
$this->errors[] = $mouvS->error;
|
||||||
@ -704,9 +715,10 @@ class Reception extends CommonObject
|
|||||||
* @param integer $eatby eat-by date
|
* @param integer $eatby eat-by date
|
||||||
* @param integer $sellby sell-by date
|
* @param integer $sellby sell-by date
|
||||||
* @param string $batch Lot number
|
* @param string $batch Lot number
|
||||||
|
* @param double $cost_price Line cost
|
||||||
* @return int <0 if KO, index of line if OK
|
* @return int <0 if KO, index of line if OK
|
||||||
*/
|
*/
|
||||||
public function addline($entrepot_id, $id, $qty, $array_options = 0, $comment = '', $eatby = '', $sellby = '', $batch = '')
|
public function addline($entrepot_id, $id, $qty, $array_options = 0, $comment = '', $eatby = '', $sellby = '', $batch = '', $cost_price = 0)
|
||||||
{
|
{
|
||||||
global $conf, $langs, $user;
|
global $conf, $langs, $user;
|
||||||
|
|
||||||
@ -746,8 +758,8 @@ class Reception extends CommonObject
|
|||||||
$line->eatby = $eatby;
|
$line->eatby = $eatby;
|
||||||
$line->sellby = $sellby;
|
$line->sellby = $sellby;
|
||||||
$line->status = 1;
|
$line->status = 1;
|
||||||
|
$line->cost_price = $cost_price;
|
||||||
$line->fk_reception = $this->id;
|
$line->fk_reception = $this->id;
|
||||||
|
|
||||||
$this->lines[$num] = $line;
|
$this->lines[$num] = $line;
|
||||||
|
|
||||||
return $num;
|
return $num;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user