Merge pull request #18458 from andreubisquerra/develop
NEW Split Sale in TakePOS
This commit is contained in:
commit
169282c82b
@ -129,3 +129,4 @@ WeighingScale=Weighing scale
|
|||||||
ShowPriceHT = Display the column with the price excluding tax (on screen)
|
ShowPriceHT = Display the column with the price excluding tax (on screen)
|
||||||
ShowPriceHTOnReceipt = Display the column with the price excluding tax (on the receipt)
|
ShowPriceHTOnReceipt = Display the column with the price excluding tax (on the receipt)
|
||||||
CustomerDisplay=Customer display
|
CustomerDisplay=Customer display
|
||||||
|
SplitSale=Split sale
|
||||||
|
|||||||
@ -757,3 +757,36 @@ div#moreinfo, div#infowarehouse {
|
|||||||
text-align: center;
|
text-align: center;
|
||||||
margin: 2px;
|
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;
|
||||||
|
}
|
||||||
|
|||||||
@ -481,6 +481,12 @@ function CloseBill() {
|
|||||||
$.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 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() {
|
function Floors() {
|
||||||
console.log("Open box to select floor place="+place);
|
console.log("Open box to select floor place="+place);
|
||||||
$.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"); ?>"});
|
||||||
@ -1040,6 +1046,8 @@ if (getDolGlobalString('TAKEPOS_DIRECT_PAYMENT')) {
|
|||||||
$menus[$r++] = array('title'=>'<span class="far fa-money-bill-alt paddingrightonly"></span><div class="trunc">'.$langs->trans("DirectPayment").' <span class="opacitymedium">('.$langs->trans("Cash").')</span></div>', 'action'=>'DirectPayment();');
|
$menus[$r++] = array('title'=>'<span class="far fa-money-bill-alt paddingrightonly"></span><div class="trunc">'.$langs->trans("DirectPayment").' <span class="opacitymedium">('.$langs->trans("Cash").')</span></div>', 'action'=>'DirectPayment();');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$menus[$r++] = array('title'=>'<span class="fas fa-cut paddingrightonly"></span><div class="trunc">'.$langs->trans("SplitSale").'</div>', 'action'=>'Split();');
|
||||||
|
|
||||||
// BAR RESTAURANT specific menu
|
// BAR RESTAURANT specific menu
|
||||||
if (getDolGlobalString('TAKEPOS_BAR_RESTAURANT')) {
|
if (getDolGlobalString('TAKEPOS_BAR_RESTAURANT')) {
|
||||||
if ($conf->global->TAKEPOS_ORDER_PRINTERS) {
|
if ($conf->global->TAKEPOS_ORDER_PRINTERS) {
|
||||||
|
|||||||
225
htdocs/takepos/split.php
Normal file
225
htdocs/takepos/split.php
Normal file
@ -0,0 +1,225 @@
|
|||||||
|
<?php
|
||||||
|
/* Copyright (C) 2021 Andreu Bisquerra <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 <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \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();
|
||||||
|
|
||||||
|
|
||||||
|
?>
|
||||||
|
<link rel="stylesheet" href="css/pos.css.php">
|
||||||
|
<?php
|
||||||
|
if ($conf->global->TAKEPOS_COLOR_THEME == 1) {
|
||||||
|
print '<link rel="stylesheet" href="css/colorful.css">';
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
function Split(selectedline, split) {
|
||||||
|
$.ajax({
|
||||||
|
url: "split.php?action=split&line="+selectedline+"&split="+split,
|
||||||
|
context: document.body
|
||||||
|
}).done(function() {
|
||||||
|
$("#currentplace").load("invoice.php?place="+parent.place+"&invoiceid="+parent.invoiceid, function() {
|
||||||
|
$('.posinvoiceline').click(function(){
|
||||||
|
Split(this.id, 1);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
$("#splitplace").load("invoice.php?place=SPLIT", function() {
|
||||||
|
$('#splitplace').find('.posinvoiceline').click(function(){
|
||||||
|
Split(this.id, 0);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
$( document ).ready(function() {
|
||||||
|
$("#currentplace").load("invoice.php?place="+parent.place+"&invoiceid="+parent.invoiceid, function() {
|
||||||
|
$('#currentplace').find('.posinvoiceline')
|
||||||
|
.click(function(){
|
||||||
|
Split(this.id, 1);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
$("#splitplace").load("invoice.php?place=SPLIT", function() {
|
||||||
|
$('#splitplace').find('.posinvoiceline').click(function(){
|
||||||
|
Split(this.id, 0);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
if (parent.place=='SPLIT') parent.place=0;
|
||||||
|
|
||||||
|
$("#headersplit1").html("<?php echo $langs->trans("Place");?> "+parent.place);
|
||||||
|
$("#headersplit2").html("<?php echo $langs->trans("SplitSale");?>");
|
||||||
|
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<div class="headersplit">
|
||||||
|
<a href="#" onclick="top.location.href='index.php?place='+parent.place"><div class="headercontent" id="headersplit1"></div></a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="rowsplit">
|
||||||
|
<div class="splitsale" id="currentplace"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="headersplit">
|
||||||
|
<a href="#" onclick="top.location.href='index.php?place=SPLIT'"><div class="headercontent" id="headersplit2"></div></a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="rowsplit">
|
||||||
|
<div class="splitsale" id="splitplace"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
Loading…
Reference in New Issue
Block a user