FIX convert stock class
This commit is contained in:
parent
7ff2678ef0
commit
07a47629d1
@ -104,7 +104,7 @@ class StockMovements extends DolibarrApi
|
||||
}
|
||||
|
||||
$sql = "SELECT t.rowid";
|
||||
$sql .= " FROM ".MAIN_DB_PREFIX."stock_mouvement as t";
|
||||
$sql .= " FROM ".$this->db->prefix()."stock_mouvement as t";
|
||||
//$sql.= ' WHERE t.entity IN ('.getEntity('stock').')';
|
||||
$sql .= ' WHERE 1 = 1';
|
||||
// Add sql filters
|
||||
|
||||
@ -104,9 +104,9 @@ class Warehouses extends DolibarrApi
|
||||
}
|
||||
|
||||
$sql = "SELECT t.rowid";
|
||||
$sql .= " FROM ".MAIN_DB_PREFIX."entrepot as t";
|
||||
$sql .= " FROM ".$this->db->prefix()."entrepot as t";
|
||||
if ($category > 0) {
|
||||
$sql .= ", ".MAIN_DB_PREFIX."categorie_societe as c";
|
||||
$sql .= ", ".$this->db->prefix()."categorie_societe as c";
|
||||
}
|
||||
$sql .= ' WHERE t.entity IN ('.getEntity('stock').')';
|
||||
// Select warehouses of given category
|
||||
|
||||
@ -204,13 +204,13 @@ class Entrepot extends CommonObject
|
||||
|
||||
$this->db->begin();
|
||||
|
||||
$sql = "INSERT INTO ".MAIN_DB_PREFIX."entrepot (ref, entity, datec, fk_user_author, fk_parent, fk_project)";
|
||||
$sql = "INSERT INTO ".$this->db->prefix()."entrepot (ref, entity, datec, fk_user_author, fk_parent, fk_project)";
|
||||
$sql .= " VALUES ('".$this->db->escape($this->label)."', ".((int) $conf->entity).", '".$this->db->idate($now)."', ".((int) $user->id).", ".($this->fk_parent > 0 ? ((int) $this->fk_parent) : "NULL").", ".($this->fk_project > 0 ? ((int) $this->fk_project) : "NULL").")";
|
||||
|
||||
dol_syslog(get_class($this)."::create", LOG_DEBUG);
|
||||
$result = $this->db->query($sql);
|
||||
if ($result) {
|
||||
$id = $this->db->last_insert_id(MAIN_DB_PREFIX."entrepot");
|
||||
$id = $this->db->last_insert_id($this->db->prefix()."entrepot");
|
||||
if ($id > 0) {
|
||||
$this->id = $id;
|
||||
|
||||
@ -293,7 +293,7 @@ class Entrepot extends CommonObject
|
||||
$this->town = trim($this->town);
|
||||
$this->country_id = ($this->country_id > 0 ? $this->country_id : 0);
|
||||
|
||||
$sql = "UPDATE ".MAIN_DB_PREFIX."entrepot";
|
||||
$sql = "UPDATE ".$this->db->prefix()."entrepot";
|
||||
$sql .= " SET ref = '".$this->db->escape($this->label)."'";
|
||||
$sql .= ", fk_parent = ".(($this->fk_parent > 0) ? $this->fk_parent : "NULL");
|
||||
$sql .= ", fk_project = ".(($this->fk_project > 0) ? $this->fk_project : "NULL");
|
||||
@ -365,7 +365,7 @@ class Entrepot extends CommonObject
|
||||
$elements = array('stock_mouvement', 'product_stock', 'product_warehouse_properties');
|
||||
foreach ($elements as $table) {
|
||||
if (!$error) {
|
||||
$sql = "DELETE FROM ".MAIN_DB_PREFIX.$table;
|
||||
$sql = "DELETE FROM ".$this->db->prefix().$table;
|
||||
$sql .= " WHERE fk_entrepot = ".((int) $this->id);
|
||||
|
||||
$result = $this->db->query($sql);
|
||||
@ -388,7 +388,7 @@ class Entrepot extends CommonObject
|
||||
}
|
||||
|
||||
if (!$error) {
|
||||
$sql = "DELETE FROM ".MAIN_DB_PREFIX."entrepot";
|
||||
$sql = "DELETE FROM ".$this->db->prefix()."entrepot";
|
||||
$sql .= " WHERE rowid = ".((int) $this->id);
|
||||
$resql1 = $this->db->query($sql);
|
||||
if (!$resql1) {
|
||||
@ -400,7 +400,7 @@ class Entrepot extends CommonObject
|
||||
|
||||
if (!$error) {
|
||||
// Update denormalized fields because we change content of produt_stock. Warning: Do not use "SET p.stock", does not works with pgsql
|
||||
$sql = "UPDATE ".MAIN_DB_PREFIX."product as p SET stock = (SELECT SUM(ps.reel) FROM ".MAIN_DB_PREFIX."product_stock as ps WHERE ps.fk_product = p.rowid)";
|
||||
$sql = "UPDATE ".$this->db->prefix()."product as p SET stock = (SELECT SUM(ps.reel) FROM ".$this->db->prefix()."product_stock as ps WHERE ps.fk_product = p.rowid)";
|
||||
$resql2 = $this->db->query($sql);
|
||||
if (!$resql2) {
|
||||
$error++;
|
||||
@ -441,7 +441,7 @@ class Entrepot extends CommonObject
|
||||
|
||||
$sql = "SELECT rowid, entity, fk_parent, fk_project, ref as label, description, statut, lieu, address, zip, town, fk_pays as country_id, phone, fax,";
|
||||
$sql .= " model_pdf, import_key";
|
||||
$sql .= " FROM ".MAIN_DB_PREFIX."entrepot";
|
||||
$sql .= " FROM ".$this->db->prefix()."entrepot";
|
||||
if ($id) {
|
||||
$sql .= " WHERE rowid = ".((int) $id);
|
||||
} else {
|
||||
@ -506,7 +506,7 @@ class Entrepot extends CommonObject
|
||||
public function info($id)
|
||||
{
|
||||
$sql = "SELECT e.rowid, e.datec, e.tms as datem, e.fk_user_author";
|
||||
$sql .= " FROM ".MAIN_DB_PREFIX."entrepot as e";
|
||||
$sql .= " FROM ".$this->db->prefix()."entrepot as e";
|
||||
$sql .= " WHERE e.rowid = ".((int) $id);
|
||||
|
||||
dol_syslog(get_class($this)."::info", LOG_DEBUG);
|
||||
@ -553,7 +553,7 @@ class Entrepot extends CommonObject
|
||||
$liste = array();
|
||||
|
||||
$sql = "SELECT rowid, ref as label";
|
||||
$sql .= " FROM ".MAIN_DB_PREFIX."entrepot";
|
||||
$sql .= " FROM ".$this->db->prefix()."entrepot";
|
||||
$sql .= " WHERE entity IN (".getEntity('stock').")";
|
||||
$sql .= " AND statut = ".((int) $status);
|
||||
|
||||
@ -583,8 +583,8 @@ class Entrepot extends CommonObject
|
||||
$ret = array();
|
||||
|
||||
$sql = "SELECT count(distinct p.rowid) as nb";
|
||||
$sql .= " FROM ".MAIN_DB_PREFIX."product_stock as ps";
|
||||
$sql .= ", ".MAIN_DB_PREFIX."product as p";
|
||||
$sql .= " FROM ".$this->db->prefix()."product_stock as ps";
|
||||
$sql .= ", ".$this->db->prefix()."product as p";
|
||||
$sql .= " WHERE ps.fk_entrepot = ".((int) $this->id);
|
||||
$sql .= " AND ps.fk_product = p.rowid";
|
||||
|
||||
@ -625,10 +625,10 @@ class Entrepot extends CommonObject
|
||||
} else {
|
||||
$sql = "SELECT sum(ps.reel) as nb, sum(ps.reel * p.pmp) as value";
|
||||
}
|
||||
$sql .= " FROM ".MAIN_DB_PREFIX."product_stock as ps";
|
||||
$sql .= ", ".MAIN_DB_PREFIX."product as p";
|
||||
$sql .= " FROM ".$this->db->prefix()."product_stock as ps";
|
||||
$sql .= ", ".$this->db->prefix()."product as p";
|
||||
if ($separatedPMP) {
|
||||
$sql .= ", ".MAIN_DB_PREFIX."product_perentity as pa";
|
||||
$sql .= ", ".$this->db->prefix()."product_perentity as pa";
|
||||
}
|
||||
$sql .= " WHERE ps.fk_entrepot = ".((int) $this->id);
|
||||
if ($separatedPMP) {
|
||||
@ -819,7 +819,7 @@ class Entrepot extends CommonObject
|
||||
$parentid = $this->fk_parent; // If parent_id not defined on current object, we do not start consecutive searches of parents
|
||||
$i = 0;
|
||||
while ($parentid > 0 && $i < $protection) {
|
||||
$sql = "SELECT fk_parent FROM ".MAIN_DB_PREFIX."entrepot WHERE rowid = ".((int) $parentid);
|
||||
$sql = "SELECT fk_parent FROM ".$this->db->prefix()."entrepot WHERE rowid = ".((int) $parentid);
|
||||
$resql = $this->db->query($sql);
|
||||
if ($resql) {
|
||||
$objarbo = $this->db->fetch_object($resql);
|
||||
@ -853,7 +853,7 @@ class Entrepot extends CommonObject
|
||||
// phpcs:enable
|
||||
|
||||
$sql = 'SELECT rowid
|
||||
FROM '.MAIN_DB_PREFIX.'entrepot
|
||||
FROM '.$this->db->prefix().'entrepot
|
||||
WHERE fk_parent = '.((int) $id);
|
||||
|
||||
$resql = $this->db->query($sql);
|
||||
|
||||
@ -287,7 +287,7 @@ class MouvementStock extends CommonObject
|
||||
// If found and eatby/sellby not defined into table and provided, we update table
|
||||
// If found and eatby/sellby not defined into table and not provided, we do nothing
|
||||
// If not found, we add record
|
||||
$sql = "SELECT pb.rowid, pb.batch, pb.eatby, pb.sellby FROM ".MAIN_DB_PREFIX."product_lot as pb";
|
||||
$sql = "SELECT pb.rowid, pb.batch, pb.eatby, pb.sellby FROM ".$this->db->prefix()."product_lot as pb";
|
||||
$sql .= " WHERE pb.fk_product = ".((int) $fk_product)." AND pb.batch = '".$this->db->escape($batch)."'";
|
||||
dol_syslog(get_class($this)."::_create scan serial for this product to check if eatby and sellby match", LOG_DEBUG);
|
||||
$resql = $this->db->query($sql);
|
||||
@ -435,7 +435,7 @@ class MouvementStock extends CommonObject
|
||||
$origin_id = 0;
|
||||
}
|
||||
|
||||
$sql = "INSERT INTO ".MAIN_DB_PREFIX."stock_mouvement(";
|
||||
$sql = "INSERT INTO ".$this->db->prefix()."stock_mouvement(";
|
||||
$sql .= " datem, fk_product, batch, eatby, sellby,";
|
||||
$sql .= " fk_entrepot, value, type_mouvement, fk_user_author, label, inventorycode, price, fk_origin, origintype, fk_projet";
|
||||
$sql .= ")";
|
||||
@ -457,7 +457,7 @@ class MouvementStock extends CommonObject
|
||||
$resql = $this->db->query($sql);
|
||||
|
||||
if ($resql) {
|
||||
$mvid = $this->db->last_insert_id(MAIN_DB_PREFIX."stock_mouvement");
|
||||
$mvid = $this->db->last_insert_id($this->db->prefix()."stock_mouvement");
|
||||
$this->id = $mvid;
|
||||
} else {
|
||||
$this->error = $this->db->lasterror();
|
||||
@ -473,7 +473,7 @@ class MouvementStock extends CommonObject
|
||||
// Test if there is already a record for couple (warehouse / product), so later we will make an update or create.
|
||||
$alreadyarecord = 0;
|
||||
if (!$error) {
|
||||
$sql = "SELECT rowid, reel FROM ".MAIN_DB_PREFIX."product_stock";
|
||||
$sql = "SELECT rowid, reel FROM ".$this->db->prefix()."product_stock";
|
||||
$sql .= " WHERE fk_entrepot = ".((int) $entrepot_id)." AND fk_product = ".((int) $fk_product); // This is a unique key
|
||||
|
||||
dol_syslog(get_class($this)."::_create check if a record already exists in product_stock", LOG_DEBUG);
|
||||
@ -524,10 +524,10 @@ class MouvementStock extends CommonObject
|
||||
// Update stock quantity
|
||||
if (!$error) {
|
||||
if ($alreadyarecord > 0) {
|
||||
$sql = "UPDATE ".MAIN_DB_PREFIX."product_stock SET reel = reel + ".((float) $qty);
|
||||
$sql = "UPDATE ".$this->db->prefix()."product_stock SET reel = reel + ".((float) $qty);
|
||||
$sql .= " WHERE fk_entrepot = ".((int) $entrepot_id)." AND fk_product = ".((int) $fk_product);
|
||||
} else {
|
||||
$sql = "INSERT INTO ".MAIN_DB_PREFIX."product_stock";
|
||||
$sql = "INSERT INTO ".$this->db->prefix()."product_stock";
|
||||
$sql .= " (reel, fk_entrepot, fk_product) VALUES ";
|
||||
$sql .= " (".((float) $qty).", ".((int) $entrepot_id).", ".((int) $fk_product).")";
|
||||
}
|
||||
@ -538,7 +538,7 @@ class MouvementStock extends CommonObject
|
||||
$this->errors[] = $this->db->lasterror();
|
||||
$error = -3;
|
||||
} elseif (empty($fk_product_stock)) {
|
||||
$fk_product_stock = $this->db->last_insert_id(MAIN_DB_PREFIX."product_stock");
|
||||
$fk_product_stock = $this->db->last_insert_id($this->db->prefix()."product_stock");
|
||||
}
|
||||
}
|
||||
|
||||
@ -559,11 +559,11 @@ class MouvementStock extends CommonObject
|
||||
if (!$error) {
|
||||
$newpmp = price2num($newpmp, 'MU');
|
||||
|
||||
// $sql = "UPDATE ".MAIN_DB_PREFIX."product SET pmp = ".$newpmp.", stock = ".$this->db->ifsql("stock IS NULL", 0, "stock") . " + ".$qty;
|
||||
// $sql = "UPDATE ".$this->db->prefix()."product SET pmp = ".$newpmp.", stock = ".$this->db->ifsql("stock IS NULL", 0, "stock") . " + ".$qty;
|
||||
// $sql.= " WHERE rowid = ".((int) $fk_product);
|
||||
// Update pmp + denormalized fields because we change content of produt_stock. Warning: Do not use "SET p.stock", does not works with pgsql
|
||||
$sql = "UPDATE ".MAIN_DB_PREFIX."product as p SET pmp = ".((float) $newpmp).",";
|
||||
$sql .= " stock=(SELECT SUM(ps.reel) FROM ".MAIN_DB_PREFIX."product_stock as ps WHERE ps.fk_product = p.rowid)";
|
||||
$sql = "UPDATE ".$this->db->prefix()."product as p SET pmp = ".((float) $newpmp).",";
|
||||
$sql .= " stock=(SELECT SUM(ps.reel) FROM ".$this->db->prefix()."product_stock as ps WHERE ps.fk_product = p.rowid)";
|
||||
$sql .= " WHERE rowid = ".((int) $fk_product);
|
||||
|
||||
dol_syslog(get_class($this)."::_create update AWP", LOG_DEBUG);
|
||||
@ -576,7 +576,7 @@ class MouvementStock extends CommonObject
|
||||
|
||||
// If stock is now 0, we can remove entry into llx_product_stock, but only if there is no child lines into llx_product_batch (detail of batch, because we can imagine
|
||||
// having a lot1/qty=X and lot2/qty=-X, so 0 but we must not loose repartition of different lot.
|
||||
$sql = "DELETE FROM ".MAIN_DB_PREFIX."product_stock WHERE reel = 0 AND rowid NOT IN (SELECT fk_product_stock FROM ".MAIN_DB_PREFIX."product_batch as pb)";
|
||||
$sql = "DELETE FROM ".$this->db->prefix()."product_stock WHERE reel = 0 AND rowid NOT IN (SELECT fk_product_stock FROM ".$this->db->prefix()."product_batch as pb)";
|
||||
$resql = $this->db->query($sql);
|
||||
// We do not test error, it can fails if there is child in batch details
|
||||
}
|
||||
@ -644,7 +644,7 @@ class MouvementStock extends CommonObject
|
||||
$sql .= " t.eatby,";
|
||||
$sql .= " t.sellby,";
|
||||
$sql .= " t.fk_projet as fk_project";
|
||||
$sql .= ' FROM '.MAIN_DB_PREFIX.$this->table_element.' as t';
|
||||
$sql .= ' FROM '.$this->db->prefix().$this->table_element.' as t';
|
||||
$sql .= ' WHERE t.rowid = '.((int) $id);
|
||||
|
||||
$resql = $this->db->query($sql);
|
||||
@ -721,7 +721,7 @@ class MouvementStock extends CommonObject
|
||||
$pqtys = array();
|
||||
|
||||
$sql = "SELECT fk_product_pere, fk_product_fils, qty";
|
||||
$sql .= " FROM ".MAIN_DB_PREFIX."product_association";
|
||||
$sql .= " FROM ".$this->db->prefix()."product_association";
|
||||
$sql .= " WHERE fk_product_pere = ".((int) $idProduct);
|
||||
$sql .= " AND incdec = 1";
|
||||
|
||||
@ -824,7 +824,7 @@ class MouvementStock extends CommonObject
|
||||
{
|
||||
$nb = 0;
|
||||
|
||||
$sql = 'SELECT SUM(value) as nb from '.MAIN_DB_PREFIX.'stock_mouvement';
|
||||
$sql = 'SELECT SUM(value) as nb from '.$this->db->prefix().'stock_mouvement';
|
||||
$sql .= ' WHERE fk_product = '.((int) $productidselected);
|
||||
$sql .= " AND datem < '".$this->db->idate($datebefore)."'";
|
||||
|
||||
@ -1203,8 +1203,8 @@ class MouvementStock extends CommonObject
|
||||
$cpt = 0;
|
||||
|
||||
$sql = "SELECT sum(pb.qty) as cpt";
|
||||
$sql .= " FROM ".MAIN_DB_PREFIX."product_batch as pb";
|
||||
$sql .= " INNER JOIN ".MAIN_DB_PREFIX."product_stock as ps ON ps.rowid = pb.fk_product_stock";
|
||||
$sql .= " FROM ".$this->db->prefix()."product_batch as pb";
|
||||
$sql .= " INNER JOIN ".$this->db->prefix()."product_stock as ps ON ps.rowid = pb.fk_product_stock";
|
||||
$sql .= " WHERE ps.fk_product = " . ((int) $fk_product);
|
||||
$sql .= " AND pb.batch = '" . $this->db->escape($batch) . "'";
|
||||
|
||||
|
||||
@ -188,7 +188,7 @@ class Productlot extends CommonObject
|
||||
// Put here code to add control on parameters values
|
||||
|
||||
// Insert request
|
||||
$sql = 'INSERT INTO '.MAIN_DB_PREFIX.$this->table_element.'(';
|
||||
$sql = 'INSERT INTO '.$this->db->prefix().$this->table_element.'(';
|
||||
$sql .= 'entity,';
|
||||
$sql .= 'fk_product,';
|
||||
$sql .= 'batch,';
|
||||
@ -230,7 +230,7 @@ class Productlot extends CommonObject
|
||||
}
|
||||
|
||||
if (!$error) {
|
||||
$this->id = $this->db->last_insert_id(MAIN_DB_PREFIX.$this->table_element);
|
||||
$this->id = $this->db->last_insert_id($this->db->prefix().$this->table_element);
|
||||
|
||||
// Actions on extra fields
|
||||
if (!$error) {
|
||||
@ -296,7 +296,7 @@ class Productlot extends CommonObject
|
||||
$sql .= " t.fk_user_creat,";
|
||||
$sql .= " t.fk_user_modif,";
|
||||
$sql .= " t.import_key";
|
||||
$sql .= ' FROM '.MAIN_DB_PREFIX.$this->table_element.' as t';
|
||||
$sql .= ' FROM '.$this->db->prefix().$this->table_element.' as t';
|
||||
if ($product_id > 0 && $batch != '') {
|
||||
$sql .= " WHERE t.batch = '".$this->db->escape($batch)."' AND t.fk_product = ".((int) $product_id);
|
||||
} else {
|
||||
@ -394,7 +394,7 @@ class Productlot extends CommonObject
|
||||
}
|
||||
|
||||
// Update request
|
||||
$sql = 'UPDATE '.MAIN_DB_PREFIX.$this->table_element.' SET';
|
||||
$sql = 'UPDATE '.$this->db->prefix().$this->table_element.' SET';
|
||||
$sql .= ' entity = '.(isset($this->entity) ? $this->entity : "null").',';
|
||||
$sql .= ' fk_product = '.(isset($this->fk_product) ? $this->fk_product : "null").',';
|
||||
$sql .= ' batch = '.(isset($this->batch) ? "'".$this->db->escape($this->batch)."'" : "null").',';
|
||||
@ -479,7 +479,7 @@ class Productlot extends CommonObject
|
||||
//}
|
||||
|
||||
if (!$error) {
|
||||
$sql = 'DELETE FROM '.MAIN_DB_PREFIX.$this->table_element;
|
||||
$sql = 'DELETE FROM '.$this->db->prefix().$this->table_element;
|
||||
$sql .= ' WHERE rowid='.((int) $this->id);
|
||||
|
||||
$resql = $this->db->query($sql);
|
||||
|
||||
@ -113,7 +113,7 @@ class ProductStockEntrepot extends CommonObject
|
||||
// Put here code to add control on parameters values
|
||||
|
||||
// Insert request
|
||||
$sql = 'INSERT INTO '.MAIN_DB_PREFIX.$this->table_element.'(';
|
||||
$sql = 'INSERT INTO '.$this->db->prefix().$this->table_element.'(';
|
||||
|
||||
$sql .= 'fk_product,';
|
||||
$sql .= 'fk_entrepot,';
|
||||
@ -143,7 +143,7 @@ class ProductStockEntrepot extends CommonObject
|
||||
}
|
||||
|
||||
if (!$error) {
|
||||
$this->id = $this->db->last_insert_id(MAIN_DB_PREFIX.$this->table_element);
|
||||
$this->id = $this->db->last_insert_id($this->db->prefix().$this->table_element);
|
||||
|
||||
//if (!$notrigger) {
|
||||
// Uncomment this and change MYOBJECT to your own tag if you
|
||||
@ -192,7 +192,7 @@ class ProductStockEntrepot extends CommonObject
|
||||
$sql .= " t.seuil_stock_alerte,";
|
||||
$sql .= " t.desiredstock,";
|
||||
$sql .= " t.import_key";
|
||||
$sql .= ' FROM '.MAIN_DB_PREFIX.$this->table_element.' as t';
|
||||
$sql .= ' FROM '.$this->db->prefix().$this->table_element.' as t';
|
||||
if (!empty($id)) {
|
||||
$sql .= ' WHERE t.rowid = '.((int) $id);
|
||||
} else {
|
||||
@ -265,7 +265,7 @@ class ProductStockEntrepot extends CommonObject
|
||||
$sql .= " t.import_key";
|
||||
|
||||
|
||||
$sql .= ' FROM '.MAIN_DB_PREFIX.$this->table_element.' as t';
|
||||
$sql .= ' FROM '.$this->db->prefix().$this->table_element.' as t';
|
||||
|
||||
$sql .= ' WHERE 1=1';
|
||||
|
||||
@ -355,7 +355,7 @@ class ProductStockEntrepot extends CommonObject
|
||||
// Put here code to add a control on parameters values
|
||||
|
||||
// Update request
|
||||
$sql = 'UPDATE '.MAIN_DB_PREFIX.$this->table_element.' SET';
|
||||
$sql = 'UPDATE '.$this->db->prefix().$this->table_element.' SET';
|
||||
|
||||
$sql .= ' tms = '.(dol_strlen($this->tms) != 0 ? "'".$this->db->idate($this->tms)."'" : "'".$this->db->idate(dol_now())."'").',';
|
||||
$sql .= ' fk_product = '.(isset($this->fk_product) ? $this->fk_product : "null").',';
|
||||
@ -425,7 +425,7 @@ class ProductStockEntrepot extends CommonObject
|
||||
//}
|
||||
|
||||
if (!$error) {
|
||||
$sql = 'DELETE FROM '.MAIN_DB_PREFIX.$this->table_element;
|
||||
$sql = 'DELETE FROM '.$this->db->prefix().$this->table_element;
|
||||
$sql .= ' WHERE rowid='.((int) $this->id);
|
||||
|
||||
$resql = $this->db->query($sql);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user