dolibarr 22.0.5
split.php
Go to the documentation of this file.
1<?php
2/* Copyright (C) 2021 Andreu Bisquerra <jove@bisquerra.com>
3 * Copyright (C) 2024 Frédéric France <frederic.france@free.fr>
4 * Copyright (C) 2025 MDW <mdeweerd@users.noreply.github.com>
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 3 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program. If not, see <https://www.gnu.org/licenses/>.
18 */
19
26//if (! defined('NOREQUIREUSER')) define('NOREQUIREUSER', '1'); // Not disabled cause need to load personalized language
27//if (! defined('NOREQUIREDB')) define('NOREQUIREDB', '1'); // Not disabled cause need to load personalized language
28//if (! defined('NOREQUIRESOC')) define('NOREQUIRESOC', '1');
29//if (! defined('NOREQUIRETRAN')) define('NOREQUIRETRAN', '1');
30if (!defined('NOTOKENRENEWAL')) {
31 define('NOTOKENRENEWAL', '1');
32}
33if (!defined('NOREQUIREMENU')) {
34 define('NOREQUIREMENU', '1');
35}
36if (!defined('NOREQUIREHTML')) {
37 define('NOREQUIREHTML', '1');
38}
39if (!defined('NOREQUIREAJAX')) {
40 define('NOREQUIREAJAX', '1');
41}
42
43// Load Dolibarr environment
44require '../main.inc.php'; // Load $user and permissions
45require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php';
52$langs->loadLangs(array("main", "bills", "cashdesk", "banks"));
53
54$action = GETPOST('action', 'aZ09');
55$place = (GETPOST('place', 'aZ09') ? GETPOST('place', 'aZ09') : 0);
56
57if (!$user->hasRight('takepos', 'run')) {
59}
60
61
62/*
63 * Actions
64 */
65
66if ($action == "split" && $user->hasRight('takepos', 'run')) {
67 $line = GETPOSTINT('line');
68 $split = GETPOSTINT('split');
69 $invoice = null;
70 $placeid = 0;
71 if ($split == 1) { // Split line
72 $invoice = new Facture($db);
73 $ret = $invoice->fetch(0, '(PROV-POS'.$_SESSION["takeposterminal"].'-SPLIT)');
74 if ($ret > 0) {
75 $placeid = $invoice->id;
76 } else {
77 $constforcompanyid = 'CASHDESK_ID_THIRDPARTY'.$_SESSION["takeposterminal"];
78 $invoice->socid = getDolGlobalInt($constforcompanyid);
79 $invoice->date = dol_now();
80 $invoice->module_source = 'takepos';
81 $invoice->pos_source = $_SESSION["takeposterminal"];
82 $invoice->entity = !empty($_SESSION["takeposinvoiceentity"]) ? $_SESSION["takeposinvoiceentity"] : $conf->entity;
83 if ($invoice->socid <= 0) {
84 $langs->load('errors');
85 dol_htmloutput_errors($langs->trans("ErrorModuleSetupNotComplete", "TakePos"), [], 1);
86 } else {
87 $placeid = $invoice->create($user);
88 if ($placeid < 0) {
89 dol_htmloutput_errors($invoice->error, $invoice->errors, 1);
90 }
91 $sql = "UPDATE ".MAIN_DB_PREFIX."facture SET ref='(PROV-POS".$_SESSION["takeposterminal"]."-SPLIT)'";
92 $sql .= " WHERE rowid = ".((int) $placeid);
93 $db->query($sql);
94 }
95 }
96 $sql = "UPDATE ".MAIN_DB_PREFIX."facturedet SET fk_facture = ".((int) $placeid)." WHERE rowid = ".((int) $line);
97 $db->query($sql);
98 } elseif ($split == 0) { // Unsplit line
99 $invoice = new Facture($db);
100 if ($place == "SPLIT") {
101 $place = "0";
102 } // Avoid move line to the same place (from SPLIT to SPLIT place)
103 $ret = $invoice->fetch(0, '(PROV-POS'.$_SESSION["takeposterminal"].'-'.$place.')');
104 if ($ret > 0) {
105 $placeid = $invoice->id;
106 } else {
107 $constforcompanyid = 'CASHDESK_ID_THIRDPARTY'.$_SESSION["takeposterminal"];
108 $invoice->socid = getDolGlobalInt($constforcompanyid);
109 $invoice->date = dol_now();
110 $invoice->module_source = 'takepos';
111 $invoice->pos_source = $_SESSION["takeposterminal"];
112 $invoice->entity = !empty($_SESSION["takeposinvoiceentity"]) ? $_SESSION["takeposinvoiceentity"] : $conf->entity;
113 if ($invoice->socid <= 0) {
114 $langs->load('errors');
115 dol_htmloutput_errors($langs->trans("ErrorModuleSetupNotComplete", "TakePos"), [], 1);
116 } else {
117 $placeid = $invoice->create($user);
118 if ($placeid < 0) {
119 dol_htmloutput_errors($invoice->error, $invoice->errors, 1);
120 }
121
122 $sql = "UPDATE ".MAIN_DB_PREFIX."facture SET ref='(PROV-POS".$_SESSION["takeposterminal"]."-".$place.")'";
123 $sql .= " WHERE rowid = ".((int) $placeid);
124 $db->query($sql);
125 }
126 }
127 $sql = "UPDATE ".MAIN_DB_PREFIX."facturedet set fk_facture=".$placeid." where rowid=".$line;
128 $db->query($sql);
129 }
130 if ($invoice !== null) {
131 $invoice->fetch(0, '(PROV-POS'.$_SESSION["takeposterminal"].'-SPLIT)');
132 $invoice->update_price();
133
134 $invoice->fetch(0, '(PROV-POS'.$_SESSION["takeposterminal"].'-'.$place.')');
135 $invoice->update_price();
136 }
137}
138
139
140/*
141 * View
142 */
143
144$invoice = new Facture($db);
145if (isset($invoiceid) && $invoiceid > 0) {
146 $invoice->fetch($invoiceid);
147} else {
148 $sql = "SELECT rowid FROM ".MAIN_DB_PREFIX."facture where ref='(PROV-POS".$_SESSION["takeposterminal"]."-".$place.")'";
149 $resql = $db->query($sql);
150 $obj = $db->fetch_object($resql);
151 if ($obj) {
152 $invoiceid = $obj->rowid;
153 }
154 if (!isset($invoiceid)) {
155 $invoiceid = 0; // Invoice does not exist yet
156 } else {
157 $invoice->fetch($invoiceid);
158 }
159}
160
161$arrayofcss = array('/takepos/css/pos.css.php');
162if (getDolGlobalInt('TAKEPOS_COLOR_THEME') == 1) {
163 $arrayofcss[] = '/takepos/css/colorful.css';
164}
165$arrayofjs = array();
166
167$head = '';
168$title = '';
169$disablejs = 0;
170$disablehead = 0;
171
172top_htmlhead($head, $title, $disablejs, $disablehead, $arrayofjs, $arrayofcss);
173
174// Define list of possible payments
175$arrayOfValidPaymentModes = array();
176$arrayOfValidBankAccount = array();
177
178?>
179<body class="takepossplitphp">
180
181<script>
182function Split(selectedline, split) {
183 $.ajax({
184 url: "split.php?action=split&token=<?php echo newToken(); ?>&line="+selectedline+"&split="+split+"&place=<?php echo $place;?>",
185 context: document.body
186 }).done(function() {
187 $("#currentplace").load("invoice.php?place="+parent.place+"&invoiceid="+parent.invoiceid, function() {
188 $('#currentplace').find('.posinvoiceline').click(function(){
189 Split(this.id, 1);
190 });
191 });
192 $("#splitplace").load("invoice.php?place=SPLIT", function() {
193 $('#splitplace').find('.posinvoiceline').click(function(){
194 Split(this.id, 0);
195 });
196 });
197 });
198}
199
200$( document ).ready(function() {
201 if (parent.place=='SPLIT') {
202 parent.place=0;
203 parent.invoiceid=0;
204 parent.Refresh();
205 }
206 $("#currentplace").load("invoice.php?place="+parent.place+"&invoiceid="+parent.invoiceid, function() {
207 $('#currentplace').find('.posinvoiceline')
208 .click(function(){
209 Split(this.id, 1);
210 });
211 });
212
213 $("#splitplace").load("invoice.php?place=SPLIT", function() {
214 $('#splitplace').find('.posinvoiceline').click(function(){
215 Split(this.id, 0);
216 });
217 });
218
219
220
221 $("#headersplit1").html("<?php echo $langs->trans("Place");?> "+parent.place);
222 $("#headersplit2").html("<?php echo $langs->trans("SplitSale");?>");
223
224});
225</script>
226
227<div class="headersplit">
228 <a href="#" onclick="top.location.href='index.php?place='+parent.place"><div class="headercontent" id="headersplit1"></div></a>
229</div>
230
231<div class="rowsplit">
232 <div class="splitsale" id="currentplace"></div>
233</div>
234
235<div class="headersplit">
236 <a href="#" onclick="top.location.href='index.php?place=SPLIT'"><div class="headercontent" id="headersplit2"></div></a>
237</div>
238
239<div class="rowsplit">
240 <div class="splitsale" id="splitplace"></div>
241</div>
242
243</body>
244</html>
Class to manage invoices.
GETPOSTINT($paramname, $method=0)
Return the value of a $_GET or $_POST supervariable, converted into integer.
dol_now($mode='auto')
Return date for now.
getDolGlobalInt($key, $default=0)
Return a Dolibarr global constant int value.
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
dol_htmloutput_errors($mesgstring='', $mesgarray=array(), $keepembedded=0)
Print formatted error messages to output (Used to show messages on html output).
top_htmlhead($head, $title='', $disablejs=0, $disablehead=0, $arrayofjs=array(), $arrayofcss=array(), $disableforlogin=0, $disablenofollow=0, $disablenoindex=0)
Output html header of a page.
global $conf
The following vars must be defined: $type2label $form $conf, $lang, The following vars may also be de...
Definition member.php:79
accessforbidden($message='', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program.