28 if (!defined(
'NOCSRFCHECK')) {
29 define(
'NOCSRFCHECK',
'1');
31 if (!defined(
'NOTOKENRENEWAL')) {
32 define(
'NOTOKENRENEWAL',
'1');
34 if (!defined(
'NOREQUIREMENU')) {
35 define(
'NOREQUIREMENU',
'1');
37 if (!defined(
'NOREQUIREHTML')) {
38 define(
'NOREQUIREHTML',
'1');
40 if (!defined(
'NOREQUIREAJAX')) {
41 define(
'NOREQUIREAJAX',
'1');
44 if (!defined(
'INCLUDE_PHONEPAGE_FROM_PUBLIC_PAGE')) {
45 require
'../main.inc.php';
47 require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formother.class.php';
48 require_once DOL_DOCUMENT_ROOT.
'/categories/class/categorie.class.php';
49 require_once DOL_DOCUMENT_ROOT.
'/compta/facture/class/facture.class.php';
50 require_once DOL_DOCUMENT_ROOT.
'/core/class/hookmanager.class.php';
52 if (defined(
'INCLUDE_PHONEPAGE_FROM_PUBLIC_PAGE')) {
56 $place = (
GETPOST(
'place',
'aZ09') ?
GETPOST(
'place',
'aZ09') : 0);
58 $action =
GETPOST(
'action',
'aZ09');
59 $setterminal =
GETPOST(
'setterminal',
'int');
60 $idproduct =
GETPOST(
'idproduct',
'int');
62 if ($setterminal > 0) {
63 $_SESSION[
"takeposterminal"] = $setterminal;
66 $langs->loadLangs(array(
"bills",
"orders",
"commercial",
"cashdesk",
"receiptprinter"));
68 if (empty($user->rights->takepos->run) && !defined(
'INCLUDE_PHONEPAGE_FROM_PUBLIC_PAGE')) {
76 if ($action ==
"productinfo") {
78 $prod->fetch($idproduct);
79 print
'<button type="button" class="publicphonebutton2 phoneblue total" onclick="AddProductConfirm(place, '.$idproduct.
');">'.$langs->trans(
'Add').
'</button>';
80 print
"<br><b>".$prod->label.
"</b><br>";
81 print
'<img class="imgwrapper" width="60%" src="'.DOL_URL_ROOT.
'/takepos/public/auto_order.php?genimg=pro&query=pro&id='.$idproduct.
'">';
82 print
"<br>".$prod->description;
83 print
"<br><b>".price($prod->price_ttc, 1, $langs, 1, -1, -1, $conf->currency).
"</b>";
85 } elseif ($action ==
"publicpreorder") {
86 print
'<button type="button" class="publicphonebutton2 phoneblue total" onclick="TakeposPrintingOrder();">'.$langs->trans(
'Confirm').
'</button>';
88 print
'<div class="comment">
89 <textarea class="textinput" placeholder="'.$langs->trans(
'Note').
'"></textarea>
92 } elseif ($action ==
"publicpayment") {
93 $langs->loadLangs(array(
"orders"));
94 print
'<h1>'.$langs->trans(
'StatusOrderDelivered').
'</h1>';
95 print
'<button type="button" class="publicphonebutton2 phoneblue total" onclick="CheckPlease();">'.$langs->trans(
'Payment').
'</button>';
97 } elseif ($action ==
"checkplease") {
99 print
'<h1>'.$langs->trans(
'StatusOrderDelivered').
'</h1>';
100 require_once DOL_DOCUMENT_ROOT.
'/core/class/dolreceiptprinter.class.php';
101 require_once DOL_DOCUMENT_ROOT.
'/compta/facture/class/facture.class.php';
103 $printer->initPrinter($conf->global->{
'TAKEPOS_PRINTER_TO_USE'.$_SESSION[
"takeposterminal"]});
104 $printer->printer->feed();
105 $printer->printer->feed();
106 $printer->printer->text($langs->trans(
'IM'));
107 $printer->printer->feed();
108 $printer->printer->text($langs->trans(
'Place').
": ".$place);
109 $printer->printer->feed();
110 $printer->printer->text($langs->trans(
'Payment').
": ".$langs->trans(
GETPOST(
'payment',
'alpha')));
111 $printer->printer->feed();
112 $printer->printer->feed();
113 $printer->printer->feed();
114 $printer->printer->feed();
115 $printer->printer->feed();
118 print
'<button type="button" class="publicphonebutton2 phoneblue total" onclick="CheckPlease(\'Cash\');">'.$langs->trans(
'Cash').
'</button>';
119 print
'<button type="button" class="publicphonebutton2 phoneblue total" onclick="CheckPlease(\'CreditCard\');">'.$langs->trans(
'CreditCard').
'</button>';
122 } elseif ($action ==
"editline") {
123 $placeid =
GETPOST(
'placeid',
'int');
124 $selectedline =
GETPOST(
'selectedline',
'int');
126 $invoice->fetch($placeid);
127 foreach ($invoice->lines as $line) {
128 if ($line->id == $selectedline) {
130 $prod->fetch($line->fk_product);
131 print
"<b>".$prod->label.
"</b><br>";
132 print
'<img class="imgwrapper" width="60%" src="'.DOL_URL_ROOT.
'/takepos/public/auto_order.php?genimg=pro&query=pro&id='.$line->fk_product.
'">';
133 print
"<br>".$prod->description;
134 print
"<br><b>".price($prod->price_ttc, 1, $langs, 1, -1, -1, $conf->currency).
"</b>";
136 print
'<button type="button" class="publicphonebutton2 phonered width24" onclick="SetQty(place, '.$selectedline.
', '.($line->qty - 1).
');">-</button>';
137 print
'<button type="button" class="publicphonebutton2 phonegreen width24" onclick="SetQty(place, '.$selectedline.
', '.($line->qty + 1).
');">+</button>';
138 print
'<button type="button" class="publicphonebutton2 phoneblue width24" onclick="SetNote(place, '.$selectedline.
');">'.$langs->trans(
'Note').
'</button>';
143 $title =
'TakePOS - Dolibarr '.DOL_VERSION;
144 if (!empty($conf->global->MAIN_APPLICATION_TITLE)) {
145 $title =
'TakePOS - '.$conf->global->MAIN_APPLICATION_TITLE;
147 $head =
'<meta name="apple-mobile-web-app-title" content="TakePOS"/>
148 <meta name="apple-mobile-web-app-capable" content="yes">
149 <meta name="mobile-web-app-capable" content="yes">
150 <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>';
151 $arrayofcss = array(
'/takepos/css/phone.css');
152 top_htmlhead($head, $title, $disablejs, $disablehead, $arrayofjs, $arrayofcss);
154 <script
type=
"text/javascript">
157 $categories = $categorie->get_full_arbo(
'product', (($conf->global->TAKEPOS_ROOT_CATEGORY_ID > 0) ? $conf->global->TAKEPOS_ROOT_CATEGORY_ID : 0), 1);
161 $levelofrootcategory = 0;
162 if ($conf->global->TAKEPOS_ROOT_CATEGORY_ID > 0) {
163 foreach ($categories as $key => $categorycursor) {
164 if ($categorycursor[
'id'] == $conf->global->TAKEPOS_ROOT_CATEGORY_ID) {
165 $levelofrootcategory = $categorycursor[
'level'];
170 $levelofmaincategories = $levelofrootcategory + 1;
172 $maincategories = array();
173 $subcategories = array();
174 foreach ($categories as $key => $categorycursor) {
175 if ($categorycursor[
'level'] == $levelofmaincategories) {
176 $maincategories[$key] = $categorycursor;
178 $subcategories[$key] = $categorycursor;
182 sort($maincategories);
183 sort($subcategories);
188 var categories = <?php echo json_encode($maincategories); ?>;
189 var subcategories = <?php echo json_encode($subcategories); ?>;
193 var pagecategories=0;
195 var place=
"<?php echo $place; ?>";
196 var editaction=
"qty";
200 $( document ).ready(
function() {
201 console.log(
"Refresh");
205 function LoadPlace(placeid){
208 if (defined(
'INCLUDE_PHONEPAGE_FROM_PUBLIC_PAGE')) {
209 echo
'$("#phonediv2").load("auto_order.php?mobilepage=invoice&place="+place, function() {
212 echo
'$("#phonediv2").load("invoice.php?mobilepage=invoice&place="+place, function() {
219 function AddProduct(placeid, productid){
222 if (defined(
'INCLUDE_PHONEPAGE_FROM_PUBLIC_PAGE')) {
223 print
'place=placeid;
224 $("#phonediv1").load("auto_order.php?action=productinfo&place="+place+"&idproduct="+productid, function() {
227 print
'AddProductConfirm(placeid, productid);';
232 function PublicPreOrder(){
233 $(
"#phonediv1").load(
"auto_order.php?action=publicpreorder&place="+place,
function() {
237 function AddProductConfirm(placeid, productid){
240 if (defined(
'INCLUDE_PHONEPAGE_FROM_PUBLIC_PAGE')) {
241 echo
'$("#phonediv2").load("auto_order.php?mobilepage=invoice&action=addline&token='.newToken().
'&place="+place+"&idproduct="+productid, function() {
244 echo
'$("#phonediv2").load("invoice.php?mobilepage=invoice&action=addline&token='.newToken().
'&place="+place+"&idproduct="+productid, function() {
250 function SetQty(place, selectedline, qty){
252 if (defined(
'INCLUDE_PHONEPAGE_FROM_PUBLIC_PAGE')) {
255 $(
"#phonediv2").load(
"auto_order.php?mobilepage=invoice&action=deleteline&token=<?php echo newToken(); ?>&place="+place+
"&idline="+selectedline,
function() {
259 $(
"#phonediv2").load(
"auto_order.php?mobilepage=invoice&action=updateqty&place="+place+
"&idline="+selectedline+
"&number="+qty,
function() {
266 $(
"#phonediv2").load(
"invoice.php?mobilepage=invoice&action=deleteline&token=<?php echo newToken(); ?>&place="+place+
"&idline="+selectedline,
function() {
270 $(
"#phonediv2").load(
"invoice.php?mobilepage=invoice&action=updateqty&place="+place+
"&idline="+selectedline+
"&number="+qty,
function() {
279 function SetNote(place, selectedline){
280 var note = prompt(
"<?php $langs->trans('Note'); ?>",
"");
281 $(
"#phonediv2").load(
"auto_order.php?mobilepage=invoice&action=updateqty&place="+place+
"&idline="+selectedline+
"&number="+qty,
function() {
288 if (defined(
'INCLUDE_PHONEPAGE_FROM_PUBLIC_PAGE')) {
289 echo
'$("#phonediv1").load("auto_order.php?mobilepage=cats&place="+place, function() {
292 echo
'$("#phonediv1").load("invoice.php?mobilepage=cats&place="+place, function() {
298 function LoadProducts(idcat){
301 if (defined(
'INCLUDE_PHONEPAGE_FROM_PUBLIC_PAGE')) {
302 echo
'$("#phonediv1").load("auto_order.php?mobilepage=products&catid="+idcat+"&place="+place, function() {
305 echo
'$("#phonediv1").load("invoice.php?mobilepage=products&catid="+idcat+"&place="+place, function() {
311 function LoadPlacesList(){
312 $(
"#phonediv1").load(
"invoice.php?mobilepage=places",
function() {
316 function TakeposPrintingOrder(){
317 console.log(
"TakeposPrintingOrder");
319 if (defined(
'INCLUDE_PHONEPAGE_FROM_PUBLIC_PAGE')) {
320 echo
'$("#phonediv2").load("auto_order.php?action=order&mobilepage=order&place="+place, function() {
322 echo
'$("#phonediv1").load("auto_order.php?action=publicpayment&place="+place, function() {
325 echo
'$("#phonediv2").load("invoice.php?action=order&place="+place, function() {
332 window.location.href=
'../user/logout.php?token=<?php echo newToken(); ?>';
335 function CheckPlease(payment){
336 if (payment==undefined){
337 $(
"#phonediv1").load(
"auto_order.php?action=checkplease&place="+place,
function() {
341 console.log(
"Request the check to the waiter");
342 $(
"#phonediv1").load(
"auto_order.php?action=checkplease&place=<?php echo $place; ?>&payment="+payment,
function() {
349 <body style=
"background-color:#D1D1D1;">
351 if ($conf->global->TAKEPOS_NUM_TERMINALS !=
"1" && $_SESSION[
"takeposterminal"] ==
"") {
352 print
'<div class="dialog-info-takepos-terminal" id="dialog-info" title="TakePOS">'.$langs->trans(
'TerminalSelect').
'</div>';
355 <div
class=
"container">
356 <div
class=
"phonebuttonsrow">
358 if (!defined(
'INCLUDE_PHONEPAGE_FROM_PUBLIC_PAGE')) {
359 print
'<button type="button" class="phonebutton" onclick="LoadPlacesList();">'.strtoupper(substr($langs->trans(
'Floors'), 0, 3)).
'</button>';
360 print
'<button type="button" class="phonebutton" onclick="LoadCats();">'.strtoupper(substr($langs->trans(
'Categories'), 0, 3)).
'</button>';
361 print
'<button type="button" class="phonebutton" onclick="TakeposPrintingOrder();">'.strtoupper(substr($langs->trans(
'Order'), 0, 3)).
'</button>';
362 print
'<button type="button" class="phonebutton" onclick="Exit();">'.strtoupper(substr($langs->trans(
'Logout'), 0, 3)).
'</button>';
364 print
'<button type="button" class="publicphonebutton phoneblue" onclick="LoadCats();">'.strtoupper(substr($langs->trans(
'Categories'), 0, 5)).
'</button>';
365 print
'<button type="button" class="publicphonebutton phoneorange" onclick="PublicPreOrder();">'.strtoupper(substr($langs->trans(
'Order'), 0, 5)).
'</button>';
366 print
'<button type="button" class="publicphonebutton phonegreen" onclick="CheckPlease();">'.strtoupper(substr($langs->trans(
'Payment'), 0, 5)).
'</button>';
370 <div
class=
"phonerow2">
371 <div
id=
"phonediv2" class=
"phonediv2"></div>
373 <div
class=
"phonerow1">
374 <div
id=
"phonediv1" class=
"phonediv1"></div>