Clean code and debug TakePOS module

This commit is contained in:
Laurent Destailleur 2019-03-27 17:50:23 +01:00
parent e064a954d2
commit 3930464b84
5 changed files with 77 additions and 53 deletions

View File

@ -53,6 +53,7 @@ if (empty($conf->dol_no_mouse_hover))
hide: { delay: 50 }, hide: { delay: 50 },
tooltipClass: "mytooltip", tooltipClass: "mytooltip",
content: function () { content: function () {
console.log("Return title for popup");
return $(this).prop(\'title\'); /* To force to get title as is */ return $(this).prop(\'title\'); /* To force to get title as is */
} }
});'."\n"; });'."\n";

View File

@ -208,6 +208,13 @@ div.catwatermark{
padding-left: 5px; padding-left: 5px;
} }
.selected {
font-weight: bold;
}
.order {
color: limegreen;
}
.colorwhite { .colorwhite {
color: white; color: white;
} }

View File

@ -131,8 +131,8 @@ if (($action=="addline" || $action=="freezone") && $placeid == 0)
$db->query($sql); $db->query($sql);
} }
if ($action == "addline") { if ($action == "addline")
{
$prod = new Product($db); $prod = new Product($db);
$prod->fetch($idproduct); $prod->fetch($idproduct);
@ -269,20 +269,14 @@ if ($action == "order" and $placeid != 0) {
* View * View
*/ */
$form = new Form($db);
?> ?>
<style>
.selected {
font-weight: bold;
}
.order {
color: limegreen;
}
</style>
<script language="javascript"> <script language="javascript">
var selectedline=0; var selectedline=0;
var selectedtext=""; var selectedtext="";
var placeid=<?php echo $placeid;?>; var placeid=<?php echo $placeid;?>;
$(document).ready(function(){ $(document).ready(function() {
$('table tbody tr').click(function(){ $('table tbody tr').click(function(){
$('table tbody tr').removeClass("selected"); $('table tbody tr').removeClass("selected");
$(this).addClass("selected"); $(this).addClass("selected");
@ -321,10 +315,9 @@ if ($action == "search") {
} }
?> ?>
});
$(document).ready(function(){ $('table tbody tr').click(function(){
$('table tbody tr').click(function(){ console.log("We click on a line");
$('table tbody tr').removeClass("selected"); $('table tbody tr').removeClass("selected");
$(this).addClass("selected"); $(this).addClass("selected");
if (selectedline==this.id) return; // If is already selected if (selectedline==this.id) return; // If is already selected
@ -352,6 +345,7 @@ if ($action == "search") {
} }
?> ?>
}); });
function Print(id){ function Print(id){
@ -371,7 +365,16 @@ function TakeposPrinting(id){
}); });
} }
</script> </script>
<?php <?php
// Add again js for footer because this content is injected into takepos.php page so all init
// for tooltip and other js beautifiers must be reexecuted too.
if (! empty($conf->use_javascript_ajax))
{
print "\n".'<!-- Includes JS Footer of Dolibarr -->'."\n";
print '<script src="'.DOL_URL_ROOT.'/core/js/lib_foot.js.php?lang='.$langs->defaultlang.($ext?'&'.$ext:'').'"></script>'."\n";
}
print '<div class="div-table-responsive-no-min invoice">'; print '<div class="div-table-responsive-no-min invoice">';
print '<table id="tablelines" class="noborder noshadow" width="100%">'; print '<table id="tablelines" class="noborder noshadow" width="100%">';
print '<tr class="liste_titre nodrag nodrop">'; print '<tr class="liste_titre nodrag nodrop">';
@ -387,8 +390,22 @@ if ($placeid > 0) {
if ($line->special_code == "3") { if ($line->special_code == "3") {
print ' order'; print ' order';
} }
print '" id="' . $line->rowid . '">'; print '" id="' . $line->id . '">';
print '<td class="left">' . $line->product_label . $line->desc; print '<td class="left">';
print $line->product_label;
if ($line->product_label && $line->desc) print '<br>';
if ($line->product_label != $line->desc)
{
$firstline = dolGetFirstLineOfText($line->desc);
if ($firstline != $line->desc)
{
print $form->textwithpicto(dolGetFirstLineOfText($line->desc), $line->desc);
}
else
{
print $line->desc;
}
}
if (!empty($line->array_options['options_order_notes'])) echo "<br>(".$line->array_options['options_order_notes'].")"; if (!empty($line->array_options['options_order_notes'])) echo "<br>(".$line->array_options['options_order_notes'].")";
print '</td>'; print '</td>';
print '<td class="right">' . $line->qty . '</td>'; print '<td class="right">' . $line->qty . '</td>';

View File

@ -1,15 +0,0 @@
/* Copyright (C) 2018 Charles-FR BENKE <jove@bisquerra.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/

View File

@ -31,7 +31,7 @@ if (! defined('NOREQUIREAJAX')) define('NOREQUIREAJAX', '1');
require '../main.inc.php'; // Load $user and permissions require '../main.inc.php'; // Load $user and permissions
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php';
require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php'; require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php';
require_once DOL_DOCUMENT_ROOT . '/compta/facture/class/facture.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/class/hookmanager.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/hookmanager.class.php';
$place = GETPOST('place', 'int'); $place = GETPOST('place', 'int');
@ -61,9 +61,8 @@ top_htmlhead($head, $title, $disablejs, $disablehead, $arrayofjs, $arrayofcss);
?> ?>
<link rel="stylesheet" href="css/pos.css"> <link rel="stylesheet" href="css/pos.css">
<script type="text/javascript" src="js/takepos.js" ></script>
<link rel="stylesheet" href="css/colorbox.css" type="text/css" media="screen" /> <link rel="stylesheet" href="css/colorbox.css" type="text/css" media="screen" />
<script type="text/javascript" src="js/jquery.colorbox-min.js"></script> <script type="text/javascript" src="js/jquery.colorbox-min.js"></script> <!-- TODO It seems we don't need this -->
<script language="javascript"> <script language="javascript">
<?php <?php
$categories = $categorie->get_full_arbo('product', 0, (($conf->global->TAKEPOS_ROOT_CATEGORY_ID > 0)?$conf->global->TAKEPOS_ROOT_CATEGORY_ID:0)); $categories = $categorie->get_full_arbo('product', 0, (($conf->global->TAKEPOS_ROOT_CATEGORY_ID > 0)?$conf->global->TAKEPOS_ROOT_CATEGORY_ID:0));
@ -154,7 +153,9 @@ function MoreCategories(moreorless) {
} }
function LoadProducts(position, issubcat=false) { function LoadProducts(position, issubcat=false) {
$('#catimg'+position).animate({opacity: '0.5'}, 1); var maxproduct = <?php echo ($MAXPRODUCT - 2); ?>;
$('#catimg'+position).animate({opacity: '0.5'}, 1);
$('#catimg'+position).animate({opacity: '1'}, 100); $('#catimg'+position).animate({opacity: '1'}, 100);
if (issubcat==true) currentcat=$('#prodiv'+position).data('rowid'); if (issubcat==true) currentcat=$('#prodiv'+position).data('rowid');
else currentcat=$('#catdiv'+position).data('rowid'); else currentcat=$('#catdiv'+position).data('rowid');
@ -163,7 +164,7 @@ function LoadProducts(position, issubcat=false) {
ishow=0; //product to show counter ishow=0; //product to show counter
jQuery.each(subcategories, function(i, val) { jQuery.each(subcategories, function(i, val) {
if (currentcat==val.fk_parent){ if (currentcat==val.fk_parent) {
$("#prodesc"+ishow).text(val.label); $("#prodesc"+ishow).text(val.label);
$("#proimg"+ishow).attr("src","genimg/index.php?query=cat&id="+val.rowid); $("#proimg"+ishow).attr("src","genimg/index.php?query=cat&id="+val.rowid);
$("#prodiv"+ishow).data("rowid",val.rowid); $("#prodiv"+ishow).data("rowid",val.rowid);
@ -175,28 +176,35 @@ function LoadProducts(position, issubcat=false) {
idata=0; //product data counter idata=0; //product data counter
$.getJSON('./ajax.php?action=getProducts&category='+currentcat, function(data) { $.getJSON('./ajax.php?action=getProducts&category='+currentcat, function(data) {
while (ishow < 30) { console.log("Call ajax.php (in LoadProducts) to get Products of category "+currentcat);
while (ishow < maxproduct) {
console.log("ishow"+ishow+" idata="+idata);
console.log(data[idata]);
if (typeof (data[idata]) == "undefined") { if (typeof (data[idata]) == "undefined") {
$("#prodesc"+ishow).text(""); $("#prodesc"+ishow).text("");
$("#proimg"+ishow).attr("src","genimg/empty.png"); $("#proimg"+ishow).attr("src","genimg/empty.png");
$("#prodiv"+ishow).data("rowid",""); $("#prodiv"+ishow).data("rowid","");
$("#prowatermark"+ishow).hide();
ishow++; //Next product to show after print data product ishow++; //Next product to show after print data product
} }
else if ((data[idata]['status']) == "1") { else if ((data[idata]['status']) == "1") { // Only show products with status=1 (for sell)
//Only show products with status=1 (for sell)
$("#prodesc"+ishow).text(data[parseInt(idata)]['label']); $("#prodesc"+ishow).text(data[parseInt(idata)]['label']);
$("#proimg"+ishow).attr("src","genimg/index.php?query=pro&id="+data[idata]['id']); $("#proimg"+ishow).attr("src","genimg/index.php?query=pro&id="+data[idata]['id']);
$("#prodiv"+ishow).data("rowid",data[idata]['id']); $("#prodiv"+ishow).data("rowid",data[idata]['id']);
$("#prodiv"+ishow).data("iscat",0); $("#prodiv"+ishow).data("iscat",0);
$("#prowatermark"+ishow).hide();
ishow++; //Next product to show after print data product ishow++; //Next product to show after print data product
} }
$("#prowatermark"+ishow).hide(); //console.log("Hide the prowatermark for ishow="+ishow);
idata++; //Next data everytime idata++; //Next data everytime
} }
}); });
} }
function MoreProducts(moreorless){ function MoreProducts(moreorless) {
var maxproduct = <?php echo ($MAXPRODUCT - 2); ?>;
if (moreorless=="more"){ if (moreorless=="more"){
$('#proimg31').animate({opacity: '0.5'}, 1); $('#proimg31').animate({opacity: '0.5'}, 1);
$('#proimg31').animate({opacity: '1'}, 100); $('#proimg31').animate({opacity: '1'}, 100);
@ -209,13 +217,16 @@ function MoreProducts(moreorless){
pageproducts=pageproducts-1; pageproducts=pageproducts-1;
} }
$.getJSON('./ajax.php?action=getProducts&category='+currentcat, function(data) { $.getJSON('./ajax.php?action=getProducts&category='+currentcat, function(data) {
if (typeof (data[(30*pageproducts)]) == "undefined" && moreorless=="more"){ // Return if no more pages console.log("Call ajax.php (in MoreProducts) to get Products of category "+currentcat);
if (typeof (data[(maxproduct * pageproducts)]) == "undefined" && moreorless=="more"){ // Return if no more pages
pageproducts=pageproducts-1; pageproducts=pageproducts-1;
return; return;
} }
idata=30*pageproducts; //product data counter idata=30*pageproducts; //product data counter
ishow=0; //product to show counter ishow=0; //product to show counter
while (ishow < 30) {
while (ishow < maxproduct) {
if (typeof (data[idata]) == "undefined") { if (typeof (data[idata]) == "undefined") {
$("#prodesc"+ishow).text(""); $("#prodesc"+ishow).text("");
$("#proimg"+ishow).attr("src","genimg/empty.png"); $("#proimg"+ishow).attr("src","genimg/empty.png");
@ -236,62 +247,65 @@ function MoreProducts(moreorless){
}); });
} }
function ClickProduct(position){ function ClickProduct(position) {
$('#proimg'+position).animate({opacity: '0.5'}, 1); $('#proimg'+position).animate({opacity: '0.5'}, 1);
$('#proimg'+position).animate({opacity: '1'}, 100); $('#proimg'+position).animate({opacity: '1'}, 100);
if ($('#prodiv'+position).data('iscat')==1){ if ($('#prodiv'+position).data('iscat')==1){
console.log("Click on a category at position "+position);
LoadProducts(position, true); LoadProducts(position, true);
} }
else{ else{
idproduct=$('#prodiv'+position).data('rowid'); idproduct=$('#prodiv'+position).data('rowid');
console.log("Click on product at position "+position+" for idproduct "+idproduct);
if (idproduct=="") return; if (idproduct=="") return;
// Call page invoice.php to generate the section with product lines
$("#poslines").load("invoice.php?action=addline&place="+place+"&idproduct="+idproduct, function() { $("#poslines").load("invoice.php?action=addline&place="+place+"&idproduct="+idproduct, function() {
$('#poslines').scrollTop($('#poslines')[0].scrollHeight); $('#poslines').scrollTop($('#poslines')[0].scrollHeight);
}); });
} }
} }
function deleteline(){ function deleteline() {
$("#poslines").load("invoice.php?action=deleteline&place="+place+"&idline="+selectedline, function() { $("#poslines").load("invoice.php?action=deleteline&place="+place+"&idline="+selectedline, function() {
$('#poslines').scrollTop($('#poslines')[0].scrollHeight); $('#poslines').scrollTop($('#poslines')[0].scrollHeight);
}); });
} }
function Customer(){ function Customer() {
$.colorbox({href:"customers.php?nomassaction=1&place="+place, width:"90%", height:"80%", transition:"none", iframe:"true", title:"<?php echo $langs->trans("Customer");?>"}); $.colorbox({href:"customers.php?nomassaction=1&place="+place, width:"90%", height:"80%", transition:"none", iframe:"true", title:"<?php echo $langs->trans("Customer");?>"});
} }
function CloseBill(){ function CloseBill() {
invoiceid = $("#invoiceid").val(); invoiceid = $("#invoiceid").val();
console.log("Open popup to enter payment on invoiceid="+invoiceid); console.log("Open popup to enter payment on invoiceid="+invoiceid);
$.colorbox({href:"pay.php?place="+place+"&invoiceid="+invoiceid, width:"80%", height:"90%", transition:"none", iframe:"true", title:""}); $.colorbox({href:"pay.php?place="+place+"&invoiceid="+invoiceid, width:"80%", height:"90%", transition:"none", iframe:"true", title:""});
} }
function Floors(){ function Floors() {
$.colorbox({href:"floors.php?place="+place, width:"90%", height:"90%", transition:"none", iframe:"true", title:"<?php echo $langs->trans("Floors");?>"}); $.colorbox({href:"floors.php?place="+place, width:"90%", height:"90%", transition:"none", iframe:"true", title:"<?php echo $langs->trans("Floors");?>"});
} }
function FreeZone(){ function FreeZone() {
$.colorbox({href:"freezone.php?action=freezone&place="+place, onClosed: function () { Refresh(); },width:"80%", height:"30%", transition:"none", iframe:"true", title:"<?php echo $langs->trans("FreeZone");?>"}); $.colorbox({href:"freezone.php?action=freezone&place="+place, onClosed: function () { Refresh(); },width:"80%", height:"30%", transition:"none", iframe:"true", title:"<?php echo $langs->trans("FreeZone");?>"});
} }
function TakeposOrderNotes(){ function TakeposOrderNotes() {
$.colorbox({href:"freezone.php?action=addnote&place="+place+"&idline="+selectedline, onClosed: function () { Refresh(); },width:"80%", height:"30%", transition:"none", iframe:"true", title:"<?php echo $langs->trans("OrderNotes");?>"}); $.colorbox({href:"freezone.php?action=addnote&place="+place+"&idline="+selectedline, onClosed: function () { Refresh(); },width:"80%", height:"30%", transition:"none", iframe:"true", title:"<?php echo $langs->trans("OrderNotes");?>"});
} }
function Refresh(){ function Refresh() {
$("#poslines").load("invoice.php?place="+place, function() { $("#poslines").load("invoice.php?place="+place, function() {
$('#poslines').scrollTop($('#poslines')[0].scrollHeight); $('#poslines').scrollTop($('#poslines')[0].scrollHeight);
}); });
} }
function Search(){ function Search() {
$("#poslines").load("invoice.php?action=search&place="+place, function() { $("#poslines").load("invoice.php?action=search&place="+place, function() {
$('#poslines').scrollTop($('#poslines')[0].scrollHeight); $('#poslines').scrollTop($('#poslines')[0].scrollHeight);
}); });
} }
function Search2(){ function Search2() {
pageproducts=0; pageproducts=0;
$.getJSON('./ajax.php?action=search&term='+$('#search').val(), function(data) { $.getJSON('./ajax.php?action=search&term='+$('#search').val(), function(data) {
for (i = 0; i < 30; i++) { for (i = 0; i < 30; i++) {