diff --git a/htdocs/langs/en_US/cashdesk.lang b/htdocs/langs/en_US/cashdesk.lang
index 80e6c564767..52dc71d140c 100644
--- a/htdocs/langs/en_US/cashdesk.lang
+++ b/htdocs/langs/en_US/cashdesk.lang
@@ -129,3 +129,4 @@ WeighingScale=Weighing scale
ShowPriceHT = Display the column with the price excluding tax (on screen)
ShowPriceHTOnReceipt = Display the column with the price excluding tax (on the receipt)
CustomerDisplay=Customer display
+SplitSale=Split sale
diff --git a/htdocs/takepos/css/pos.css.php b/htdocs/takepos/css/pos.css.php
index 66c65edb622..5e2afdf0094 100644
--- a/htdocs/takepos/css/pos.css.php
+++ b/htdocs/takepos/css/pos.css.php
@@ -757,3 +757,36 @@ div#moreinfo, div#infowarehouse {
text-align: center;
margin: 2px;
}
+
+.splitsale {
+ float: left;
+ width: 100%;
+ height: 100%;
+ overflow: auto;
+}
+
+.rowsplit {
+ width: 100%;
+ height: 40%;
+}
+
+.headersplit {
+ height: 10%;
+ width: 100%;
+ padding: 10px;
+}
+
+.headercontent {
+ margin: auto;
+ width: 50%;
+ border: 3px solid black;
+ text-align: center;
+ font-size: 150%;
+ background-color: rgb(233,234,237);
+}
+
+.row:after {
+ content: "";
+ display: table;
+ clear: both;
+}
diff --git a/htdocs/takepos/index.php b/htdocs/takepos/index.php
index d11a081280c..02f68479750 100644
--- a/htdocs/takepos/index.php
+++ b/htdocs/takepos/index.php
@@ -481,6 +481,12 @@ function CloseBill() {
$.colorbox({href:"pay.php?place="+place+"&invoiceid="+invoiceid, width:"80%", height:"90%", transition:"none", iframe:"true", title:""});
}
+function Split() {
+ invoiceid = $("#invoiceid").val();
+ console.log("Open popup to split on invoiceid="+invoiceid);
+ $.colorbox({href:"split.php?place="+place+"&invoiceid="+invoiceid, width:"80%", height:"90%", transition:"none", iframe:"true", title:""});
+}
+
function Floors() {
console.log("Open box to select floor place="+place);
$.colorbox({href:"floors.php?place="+place, width:"90%", height:"90%", transition:"none", iframe:"true", title:"trans("Floors"); ?>"});
@@ -1040,6 +1046,8 @@ if (getDolGlobalString('TAKEPOS_DIRECT_PAYMENT')) {
$menus[$r++] = array('title'=>'
'.$langs->trans("DirectPayment").' ('.$langs->trans("Cash").')
', 'action'=>'DirectPayment();');
}
+$menus[$r++] = array('title'=>''.$langs->trans("SplitSale").'
', 'action'=>'Split();');
+
// BAR RESTAURANT specific menu
if (getDolGlobalString('TAKEPOS_BAR_RESTAURANT')) {
if ($conf->global->TAKEPOS_ORDER_PRINTERS) {
diff --git a/htdocs/takepos/split.php b/htdocs/takepos/split.php
new file mode 100644
index 00000000000..4de053513f5
--- /dev/null
+++ b/htdocs/takepos/split.php
@@ -0,0 +1,225 @@
+
+ *
+ * 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 .
+ */
+
+/**
+ * \file htdocs/takepos/split.php
+ * \ingroup takepos
+ * \brief Page with the content of the popup to split sale
+ */
+
+//if (! defined('NOREQUIREUSER')) define('NOREQUIREUSER', '1'); // Not disabled cause need to load personalized language
+//if (! defined('NOREQUIREDB')) define('NOREQUIREDB', '1'); // Not disabled cause need to load personalized language
+//if (! defined('NOREQUIRESOC')) define('NOREQUIRESOC', '1');
+//if (! defined('NOREQUIRETRAN')) define('NOREQUIRETRAN', '1');
+if (!defined('NOCSRFCHECK')) {
+ define('NOCSRFCHECK', '1');
+}
+if (!defined('NOTOKENRENEWAL')) {
+ define('NOTOKENRENEWAL', '1');
+}
+if (!defined('NOREQUIREMENU')) {
+ define('NOREQUIREMENU', '1');
+}
+if (!defined('NOREQUIREHTML')) {
+ define('NOREQUIREHTML', '1');
+}
+if (!defined('NOREQUIREAJAX')) {
+ define('NOREQUIREAJAX', '1');
+}
+
+require '../main.inc.php'; // Load $user and permissions
+require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php';
+
+$langs->loadLangs(array("main", "bills", "cashdesk", "banks"));
+
+$action = GETPOST('action', 'aZ09');
+$place = (GETPOST('place', 'aZ09') ? GETPOST('place', 'aZ09') : 0);
+
+if (empty($user->rights->takepos->run)) {
+ accessforbidden();
+}
+
+if ($action=="split") {
+ $line = GETPOST('line', 'int');
+ $split = GETPOST('split', 'int');
+ if ($split==1) { // Split line
+ $invoice = new Facture($db);
+ $ret = $invoice->fetch('', '(PROV-POS'.$_SESSION["takeposterminal"].'-SPLIT)');
+ if ($ret > 0) {
+ $placeid = $invoice->id;
+ } else {
+ $constforcompanyid = 'CASHDESK_ID_THIRDPARTY'.$_SESSION["takeposterminal"];
+ $invoice->socid = $conf->global->$constforcompanyid;
+ $invoice->date = dol_now();
+ $invoice->module_source = 'takepos';
+ $invoice->pos_source = $_SESSION["takeposterminal"];
+ $invoice->entity = !empty($_SESSION["takeposinvoiceentity"]) ? $_SESSION["takeposinvoiceentity"] : $conf->entity;
+ if ($invoice->socid <= 0) {
+ $langs->load('errors');
+ dol_htmloutput_errors($langs->trans("ErrorModuleSetupNotComplete", "TakePos"), null, 1);
+ } else {
+ $placeid = $invoice->create($user);
+ if ($placeid < 0) {
+ dol_htmloutput_errors($invoice->error, $invoice->errors, 1);
+ }
+ $sql = "UPDATE ".MAIN_DB_PREFIX."facture set ref='(PROV-POS".$_SESSION["takeposterminal"]."-SPLIT)' where rowid=".$placeid;
+ $db->query($sql);
+ }
+ }
+ $sql = "UPDATE ".MAIN_DB_PREFIX."facturedet set fk_facture=".$placeid." where rowid=".$line;
+ $db->query($sql);
+ } elseif ($split==0) { // Unsplit line
+ $invoice = new Facture($db);
+ $ret = $invoice->fetch('', '(PROV-POS'.$_SESSION["takeposterminal"].'-'.$place.')');
+ if ($ret > 0) {
+ $placeid = $invoice->id;
+ } else {
+ $constforcompanyid = 'CASHDESK_ID_THIRDPARTY'.$_SESSION["takeposterminal"];
+ $invoice->socid = $conf->global->$constforcompanyid;
+ $invoice->date = dol_now();
+ $invoice->module_source = 'takepos';
+ $invoice->pos_source = $_SESSION["takeposterminal"];
+ $invoice->entity = !empty($_SESSION["takeposinvoiceentity"]) ? $_SESSION["takeposinvoiceentity"] : $conf->entity;
+ if ($invoice->socid <= 0) {
+ $langs->load('errors');
+ dol_htmloutput_errors($langs->trans("ErrorModuleSetupNotComplete", "TakePos"), null, 1);
+ } else {
+ $placeid = $invoice->create($user);
+ if ($placeid < 0) {
+ dol_htmloutput_errors($invoice->error, $invoice->errors, 1);
+ }
+ $sql = "UPDATE ".MAIN_DB_PREFIX."facture set ref='(PROV-POS".$_SESSION["takeposterminal"]."-".$place.")' where rowid=".$placeid;
+ echo $sql;
+ $db->query($sql);
+ }
+ }
+ $sql = "UPDATE ".MAIN_DB_PREFIX."facturedet set fk_facture=".$placeid." where rowid=".$line;
+ echo $sql;
+ $db->query($sql);
+ }
+ $invoice->fetch('', '(PROV-POS'.$_SESSION["takeposterminal"].'-SPLIT)');
+ $invoice->update_price();
+ $invoice->fetch('', '(PROV-POS'.$_SESSION["takeposterminal"].'-'.$place.')');
+ $invoice->update_price();
+}
+
+
+/*
+ * View
+ */
+
+$invoice = new Facture($db);
+if ($invoiceid > 0) {
+ $invoice->fetch($invoiceid);
+} else {
+ $sql = "SELECT rowid FROM ".MAIN_DB_PREFIX."facture where ref='(PROV-POS".$_SESSION["takeposterminal"]."-".$place.")'";
+ $resql = $db->query($sql);
+ $obj = $db->fetch_object($resql);
+ if ($obj) {
+ $invoiceid = $obj->rowid;
+ }
+ if (!$invoiceid) {
+ $invoiceid = 0; // Invoice does not exist yet
+ } else {
+ $invoice->fetch($invoiceid);
+ }
+}
+
+$arrayofcss = array('/takepos/css/pos.css.php', '/takepos/css/split.css.php');
+$arrayofjs = array();
+
+$head = '';
+$title = '';
+$disablejs = 0;
+$disablehead = 0;
+
+top_htmlhead($head, $title, $disablejs, $disablehead, $arrayofjs, $arrayofcss);
+
+// Define list of possible payments
+$arrayOfValidPaymentModes = array();
+$arrayOfValidBankAccount = array();
+
+
+?>
+
+global->TAKEPOS_COLOR_THEME == 1) {
+ print '';
+}
+?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+