FIX conflict and integrate Lionel fix
This commit is contained in:
parent
a85f542668
commit
0faec59f56
@ -53,6 +53,8 @@ if (empty($user->rights->takepos->run)) {
|
||||
accessforbidden();
|
||||
}
|
||||
|
||||
// Initialize technical object to manage hooks. Note that conf->hooks_modules contains array of hooks
|
||||
$hookmanager->initHooks(array('takeposproductsearch'));
|
||||
|
||||
/*
|
||||
* View
|
||||
@ -70,9 +72,10 @@ if ($action == 'getProducts') {
|
||||
$res = array();
|
||||
if (is_array($prods) && count($prods) > 0) {
|
||||
foreach ($prods as $prod) {
|
||||
if ($conf->global->TAKEPOS_PRODUCT_IN_STOCK == 1) {
|
||||
if (getDolGlobalInt('TAKEPOS_PRODUCT_IN_STOCK') == 1) {
|
||||
// remove products without stock
|
||||
$prod->load_stock('nobatch,novirtual');
|
||||
if ($prod->stock_warehouse[$conf->global->{'CASHDESK_ID_WAREHOUSE'.$_SESSION['takeposterminal']}]->real <= 0) {
|
||||
if ($prod->stock_warehouse[getDolGlobalString('CASHDESK_ID_WAREHOUSE'.$_SESSION['takeposterminal'])]->real <= 0) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
@ -117,25 +120,138 @@ if ($action == 'getProducts') {
|
||||
}
|
||||
}
|
||||
|
||||
$sql = 'SELECT p.rowid, p.ref, p.label, p.tosell, p.tobuy, p.barcode, p.price ';
|
||||
if ($conf->global->TAKEPOS_PRODUCT_IN_STOCK == 1) {
|
||||
$barcode_rules = getDolGlobalString('TAKEPOS_BARCODE_RULE_TO_INSERT_PRODUCT');
|
||||
if (!empty($conf->barcode->enabled) && !empty($barcode_rules)) {
|
||||
$barcode_rules_list = array();
|
||||
|
||||
// get barcode rules
|
||||
$barcode_char_nb = 0;
|
||||
$barcode_rules_arr = explode('+', $barcode_rules);
|
||||
foreach ($barcode_rules_arr as $barcode_rules_values) {
|
||||
$barcode_rules_values_arr = explode(':', $barcode_rules_values);
|
||||
if (count($barcode_rules_values_arr) == 2) {
|
||||
$char_nb = intval($barcode_rules_values_arr[1]);
|
||||
$barcode_rules_list[] = array('code' => $barcode_rules_values_arr[0], 'char_nb' => $char_nb);
|
||||
$barcode_char_nb += $char_nb;
|
||||
}
|
||||
}
|
||||
|
||||
$barcode_value_list = array();
|
||||
$barcode_offset = 0;
|
||||
$barcode_length = dol_strlen($term);
|
||||
if ($barcode_length == $barcode_char_nb) {
|
||||
$rows = array();
|
||||
|
||||
// split term with barcode rules
|
||||
foreach ($barcode_rules_list as $barcode_rule_arr) {
|
||||
$code = $barcode_rule_arr['code'];
|
||||
$char_nb = $barcode_rule_arr['char_nb'];
|
||||
$barcode_value_list[$code] = substr($term, $barcode_offset, $char_nb);
|
||||
$barcode_offset += $char_nb;
|
||||
}
|
||||
|
||||
if (isset($barcode_value_list['ref'])) {
|
||||
// search product from reference
|
||||
$sql = "SELECT rowid, ref, label, tosell, tobuy, barcode, price";
|
||||
$sql .= " FROM " . $db->prefix() . "product as p";
|
||||
$sql .= " WHERE entity IN (" . getEntity('product') . ")";
|
||||
$sql .= " AND ref = '" . $db->escape($barcode_value_list['ref']) . "'";
|
||||
if ($filteroncategids) {
|
||||
$sql .= " AND EXISTS (SELECT cp.fk_product FROM " . $db->prefix() . "categorie_product as cp WHERE cp.fk_product = p.rowid AND cp.fk_categorie IN (".$db->sanitize($filteroncategids)."))";
|
||||
}
|
||||
$sql .= " AND tosell = 1";
|
||||
$sql .= " AND (barcode IS NULL OR barcode != '" . $db->escape($term) . "')";
|
||||
|
||||
$resql = $db->query($sql);
|
||||
if ($resql && $db->num_rows($resql) == 1) {
|
||||
if ($obj = $db->fetch_object($resql)) {
|
||||
$qty = 1;
|
||||
if (isset($barcode_value_list['qu'])) {
|
||||
$qty_str = $barcode_value_list['qu'];
|
||||
if (isset($barcode_value_list['qd'])) {
|
||||
$qty_str .= '.' . $barcode_value_list['qd'];
|
||||
}
|
||||
$qty = floatval($qty_str);
|
||||
}
|
||||
|
||||
$ig = '../public/theme/common/nophoto.png';
|
||||
if (empty($conf->global->TAKEPOS_HIDE_PRODUCT_IMAGES)) {
|
||||
$objProd = new Product($db);
|
||||
$objProd->fetch($obj->rowid);
|
||||
$image = $objProd->show_photos('product', $conf->product->multidir_output[$objProd->entity], 'small', 1);
|
||||
|
||||
$match = array();
|
||||
preg_match('@src="([^"]+)"@', $image, $match);
|
||||
$file = array_pop($match);
|
||||
|
||||
if ($file != '') {
|
||||
if (!defined('INCLUDE_PHONEPAGE_FROM_PUBLIC_PAGE')) {
|
||||
$ig = $file.'&cache=1';
|
||||
} else {
|
||||
$ig = $file.'&cache=1&publictakepos=1&modulepart=product';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$rows[] = array(
|
||||
'rowid' => $obj->rowid,
|
||||
'ref' => $obj->ref,
|
||||
'label' => $obj->label,
|
||||
'tosell' => $obj->tosell,
|
||||
'tobuy' => $obj->tobuy,
|
||||
'barcode' => $obj->barcode,
|
||||
'price' => $obj->price,
|
||||
'object' => 'product',
|
||||
'img' => $ig,
|
||||
'qty' => $qty,
|
||||
);
|
||||
}
|
||||
$db->free($resql);
|
||||
}
|
||||
}
|
||||
|
||||
if (count($rows) == 1) {
|
||||
echo json_encode($rows);
|
||||
exit();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$sql = 'SELECT rowid, ref, label, tosell, tobuy, barcode, price' ;
|
||||
if (getDolGlobalInt('TAKEPOS_PRODUCT_IN_STOCK') == 1) {
|
||||
$sql .= ', ps.reel';
|
||||
}
|
||||
// Add fields from hooks
|
||||
$parameters=array();
|
||||
$reshook=$hookmanager->executeHooks('printFieldListSelect', $parameters); // Note that $action and $object may have been modified by hook
|
||||
$sql .= $hookmanager->resPrint;
|
||||
|
||||
$sql .= ' FROM '.MAIN_DB_PREFIX.'product as p';
|
||||
if ($conf->global->TAKEPOS_PRODUCT_IN_STOCK == 1) {
|
||||
if (getDolGlobalInt('TAKEPOS_PRODUCT_IN_STOCK') == 1) {
|
||||
$sql .= ' LEFT JOIN '.MAIN_DB_PREFIX.'product_stock as ps';
|
||||
$sql .= ' ON (p.rowid = ps.fk_product';
|
||||
$sql .= " AND ps.fk_entrepot = ".((int) getDolGlobalInt("CASHDESK_ID_WAREHOUSE".$_SESSION['takeposterminal']));
|
||||
}
|
||||
|
||||
// Add tables from hooks
|
||||
$parameters=array();
|
||||
$reshook=$hookmanager->executeHooks('printFieldListTables', $parameters); // Note that $action and $object may have been modified by hook
|
||||
$sql .= $hookmanager->resPrint;
|
||||
|
||||
$sql .= ' WHERE entity IN ('.getEntity('product').')';
|
||||
if ($filteroncategids) {
|
||||
$sql .= ' AND EXISTS (SELECT cp.fk_product FROM '.MAIN_DB_PREFIX.'categorie_product as cp WHERE cp.fk_product = p.rowid AND cp.fk_categorie IN ('.$db->sanitize($filteroncategids).'))';
|
||||
}
|
||||
$sql .= ' AND p.tosell = 1';
|
||||
if ($conf->global->TAKEPOS_PRODUCT_IN_STOCK == 1) {
|
||||
$sql .= ' AND tosell = 1';
|
||||
if (getDolGlobalInt('TAKEPOS_PRODUCT_IN_STOCK') == 1) {
|
||||
$sql .= ' AND ps.reel > 0';
|
||||
}
|
||||
$sql .= natural_search(array('p.ref', 'p.label', 'p.barcode'), $term);
|
||||
$sql .= natural_search(array('ref', 'label', 'barcode'), $term);
|
||||
// Add where from hooks
|
||||
$parameters=array();
|
||||
$reshook=$hookmanager->executeHooks('printFieldListWhere', $parameters); // Note that $action and $object may have been modified by hook
|
||||
$sql .= $hookmanager->resPrint;
|
||||
|
||||
$resql = $db->query($sql);
|
||||
if ($resql) {
|
||||
$rows = array();
|
||||
@ -168,6 +284,7 @@ if ($action == 'getProducts') {
|
||||
'price' => $obj->price,
|
||||
'object' => 'product',
|
||||
'img' => $ig,
|
||||
'qty' => 1,
|
||||
//'price_formated' => price(price2num($obj->price, 'MU'), 1, $langs, 1, -1, -1, $conf->currency)
|
||||
);
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user