From 828aa9bd93cc8a4ecc3069b9071196e4984c1e65 Mon Sep 17 00:00:00 2001 From: David Beniamine Date: Fri, 29 Nov 2019 15:59:25 +0100 Subject: [PATCH 1/2] Sort products by reference --- htdocs/takepos/ajax.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/htdocs/takepos/ajax.php b/htdocs/takepos/ajax.php index 74f69618a0f..f889615660e 100644 --- a/htdocs/takepos/ajax.php +++ b/htdocs/takepos/ajax.php @@ -46,6 +46,10 @@ if ($action=="getProducts") { $object = new Categorie($db); $result=$object->fetch($category); $prods = $object->getObjectsInCateg("product"); + function sort_by_ref($a, $b) { + return strcmp($a->ref, $b->ref); + } + usort($prods, "sort_by_ref"); echo json_encode($prods); } elseif ($action=="search" && $term != '') { From 305a821b623e4e14be7f3e1fbb7c11ee8038c654 Mon Sep 17 00:00:00 2001 From: David Beniamine Date: Mon, 16 Dec 2019 17:30:31 +0100 Subject: [PATCH 2/2] TakePOS : setting to choose product field for sort --- htdocs/categories/class/categorie.class.php | 9 ++++++++- htdocs/takepos/admin/setup.php | 13 +++++++++++++ htdocs/takepos/ajax.php | 6 +----- 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/htdocs/categories/class/categorie.class.php b/htdocs/categories/class/categorie.class.php index f31e8f9b048..489b4034e3a 100644 --- a/htdocs/categories/class/categorie.class.php +++ b/htdocs/categories/class/categorie.class.php @@ -748,10 +748,11 @@ class Categorie extends CommonObject * * @param string $type Type of category ('customer', 'supplier', 'contact', 'product', 'member') * @param int $onlyids Return only ids of objects (consume less memory) + * @param string $orderby field for order * @return array|int -1 if KO, array of instance of object if OK * @see containsObject() */ - public function getObjectsInCateg($type, $onlyids = 0) + public function getObjectsInCateg($type, $onlyids = 0, $orderby='') { $objs = array(); @@ -763,6 +764,12 @@ class Categorie extends CommonObject $sql .= " WHERE o.entity IN (" . getEntity($obj->element).")"; $sql.= " AND c.fk_categorie = ".$this->id; $sql .= " AND c.fk_" . $this->MAP_CAT_FK[$type] . " = o.rowid"; + if ($orderby) { + $prod = new Product($db); + if(array_key_exists($orderby, $prod->fields)){ + $sql .= " ORDER BY $orderby"; + } + } dol_syslog(get_class($this)."::getObjectsInCateg", LOG_DEBUG); $resql = $this->db->query($sql); diff --git a/htdocs/takepos/admin/setup.php b/htdocs/takepos/admin/setup.php index f331587723b..1c9aa911e82 100644 --- a/htdocs/takepos/admin/setup.php +++ b/htdocs/takepos/admin/setup.php @@ -77,6 +77,7 @@ if (GETPOST('action', 'alpha') == 'set') $res = dolibarr_set_const($db, "TAKEPOS_HEADER", GETPOST('TAKEPOS_HEADER', 'alpha'), 'chaine', 0, '', $conf->entity); $res = dolibarr_set_const($db, "TAKEPOS_FOOTER", GETPOST('TAKEPOS_FOOTER', 'alpha'), 'chaine', 0, '', $conf->entity); $res = dolibarr_set_const($db, "TAKEPOS_NUMPAD", GETPOST('TAKEPOS_NUMPAD', 'alpha'), 'chaine', 0, '', $conf->entity); + $res = dolibarr_set_const($db, "TAKEPOS_SORTPRODUCTFIELD", GETPOST('TAKEPOS_SORTPRODUCTFIELD', 'alpha'), 'chaine', 0, '', $conf->entity); $res = dolibarr_set_const($db, "TAKEPOS_NUM_TERMINALS", GETPOST('TAKEPOS_NUM_TERMINALS', 'alpha'), 'chaine', 0, '', $conf->entity); if ($conf->global->TAKEPOS_ORDER_NOTES==1) @@ -213,6 +214,18 @@ $array=array(0=>$langs->trans("Numberspad"), 1=>$langs->trans("BillsCoinsPad")); print $form->selectarray('TAKEPOS_NUMPAD', $array, (empty($conf->global->TAKEPOS_NUMPAD)?'0':$conf->global->TAKEPOS_NUMPAD), 0); print "\n"; +// Sort product +print ''; +print $langs->trans("SortProductField"); +print ''; +$prod = new Product($db); +$array = []; +foreach($prod->fields as $k => $v) { + $array[$k]=$k; +} +print $form->selectarray('TAKEPOS_SORTPRODUCTFIELD', $array, (empty($conf->global->TAKEPOS_SORTPRODUCTFIELD)?'rowid':$conf->global->TAKEPOS_SORTPRODUCTFIELD), 0); +print "\n"; + $substitutionarray=pdf_getSubstitutionArray($langs, null, null, 2); $substitutionarray['__(AnyTranslationKey)__']=$langs->trans("Translation"); $htmltext = ''.$langs->trans("AvailableVariables").':
'; diff --git a/htdocs/takepos/ajax.php b/htdocs/takepos/ajax.php index f889615660e..415f6c6f680 100644 --- a/htdocs/takepos/ajax.php +++ b/htdocs/takepos/ajax.php @@ -45,11 +45,7 @@ $term = GETPOST('term', 'alpha'); if ($action=="getProducts") { $object = new Categorie($db); $result=$object->fetch($category); - $prods = $object->getObjectsInCateg("product"); - function sort_by_ref($a, $b) { - return strcmp($a->ref, $b->ref); - } - usort($prods, "sort_by_ref"); + $prods = $object->getObjectsInCateg("product", 0, $conf->global->TAKEPOS_SORTPRODUCTFIELD); echo json_encode($prods); } elseif ($action=="search" && $term != '') {