diff --git a/htdocs/langs/en_US/cashdesk.lang b/htdocs/langs/en_US/cashdesk.lang index bf99ee556b7..940307acb9b 100644 --- a/htdocs/langs/en_US/cashdesk.lang +++ b/htdocs/langs/en_US/cashdesk.lang @@ -56,5 +56,7 @@ BillsCoinsPad=Bills and Coins Pad DolistorePosCategory=TakePOS modules and other POS solutions for Dolibarr TakeposNeedsCategories=TakePOS needs product categories to work OrderNotes=Order Notes +CashDeskBankAccountFor=Account used for payments in +NoPaimementModesDefined=No paiment mode defined in TakePOS configuration TicketVatGrouped=Group VAT by rate in tickets AutoPrintTickets=Automatically print tickets \ No newline at end of file diff --git a/htdocs/langs/fr_FR/cashdesk.lang b/htdocs/langs/fr_FR/cashdesk.lang index 135464b81d7..44c978784a4 100644 --- a/htdocs/langs/fr_FR/cashdesk.lang +++ b/htdocs/langs/fr_FR/cashdesk.lang @@ -49,5 +49,7 @@ AmountAtEndOfPeriod=Montant en fin de période (jour, mois ou année) TheoricalAmount=Montant théorique RealAmount=Montant réel CashFenceDone=Clôture de caisse faite pour la période +CashDeskBankAccountFor=Compte utilisé pour les paiements en +NoPaimementModesDefined=Pas de mode de paiement défini dans la configuration de TakePOS TicketVatGrouped=Grouper la TVA par taux dans les tickets AutoPrintTickets=Imprimet les tickets automatiquement \ No newline at end of file diff --git a/htdocs/takepos/admin/setup.php b/htdocs/takepos/admin/setup.php index a2dd6ed1b96..973c8cbd9cc 100644 --- a/htdocs/takepos/admin/setup.php +++ b/htdocs/takepos/admin/setup.php @@ -41,19 +41,38 @@ if (!$user->admin) accessforbidden(); $langs->loadLangs(array("admin", "cashdesk")); +global $db; + +$sql = "SELECT code, libelle FROM ".MAIN_DB_PREFIX."c_paiement"; +$sql.= " WHERE entity IN (".getEntity('c_paiement').")"; +$sql.= " AND active = 1"; +$sql.= " ORDER BY libelle"; +$resql = $db->query($sql); +$paiements = array(); +if($resql){ + while ($obj = $db->fetch_object($resql)){ + array_push($paiements, $obj); + } +} + /* * Actions */ if (GETPOST('action', 'alpha') == 'set') { $db->begin(); - if (GETPOST('socid', 'int') < 0) $_POST["socid"]=''; $res = dolibarr_set_const($db, "CASHDESK_ID_THIRDPARTY", (GETPOST('socid', 'int') > 0 ? GETPOST('socid', 'int') : ''), 'chaine', 0, '', $conf->entity); - $res = dolibarr_set_const($db, "CASHDESK_ID_BANKACCOUNT_CASH", (GETPOST('CASHDESK_ID_BANKACCOUNT_CASH', 'alpha') > 0 ? GETPOST('CASHDESK_ID_BANKACCOUNT_CASH', 'alpha') : ''), 'chaine', 0, '', $conf->entity); + + $res = dolibarr_set_const($db, "CASHDESK_ID_BANKACCOUNT_CASH", (GETPOST('CASHDESK_ID_BANKACCOUNT_CASH', 'alpha') > 0 ? GETPOST('CASHDESK_ID_BANKACCOUNT_CASH', 'alpha') : ''), 'chaine', 0, '', $conf->entity); $res = dolibarr_set_const($db, "CASHDESK_ID_BANKACCOUNT_CHEQUE", (GETPOST('CASHDESK_ID_BANKACCOUNT_CHEQUE', 'alpha') > 0 ? GETPOST('CASHDESK_ID_BANKACCOUNT_CHEQUE', 'alpha') : ''), 'chaine', 0, '', $conf->entity); $res = dolibarr_set_const($db, "CASHDESK_ID_BANKACCOUNT_CB", (GETPOST('CASHDESK_ID_BANKACCOUNT_CB', 'alpha') > 0 ? GETPOST('CASHDESK_ID_BANKACCOUNT_CB', 'alpha') : ''), 'chaine', 0, '', $conf->entity); + foreach($paiements as $modep) { + if (in_array($modep->code, array('LIQ', 'CB', 'CHQ'))) continue; + $name="CASHDESK_ID_BANKACCOUNT_".$modep->code; + $res = dolibarr_set_const($db, $name, (GETPOST($name, 'alpha') > 0 ? GETPOST($name, 'alpha') : ''), 'chaine', 0, '', $conf->entity); + } $res = dolibarr_set_const($db, "CASHDESK_ID_WAREHOUSE", (GETPOST('CASHDESK_ID_WAREHOUSE', 'alpha') > 0 ? GETPOST('CASHDESK_ID_WAREHOUSE', 'alpha') : ''), 'chaine', 0, '', $conf->entity); $res = dolibarr_set_const($db, "CASHDESK_NO_DECREASE_STOCK", GETPOST('CASHDESK_NO_DECREASE_STOCK', 'alpha'), 'chaine', 0, '', $conf->entity); $res = dolibarr_set_const($db, "CASHDESK_SERVICES", GETPOST('CASHDESK_SERVICES', 'alpha'), 'chaine', 0, '', $conf->entity); @@ -245,23 +264,28 @@ print $form->select_company($conf->global->CASHDESK_ID_THIRDPARTY, 'socid', 's.c print ''; if (! empty($conf->banque->enabled)) { - - print ''.$langs->trans("CashDeskBankAccountForSell").''; + print ''.$langs->trans("CashDeskBankAccountForSell").''; print ''; $form->select_comptes($conf->global->CASHDESK_ID_BANKACCOUNT_CASH, 'CASHDESK_ID_BANKACCOUNT_CASH', 0, "courant=2", 1); print ''; - - print ''.$langs->trans("CashDeskBankAccountForCheque").''; print ''; $form->select_comptes($conf->global->CASHDESK_ID_BANKACCOUNT_CHEQUE, 'CASHDESK_ID_BANKACCOUNT_CHEQUE', 0, "courant=1", 1); print ''; - - print ''.$langs->trans("CashDeskBankAccountForCB").''; print ''; $form->select_comptes($conf->global->CASHDESK_ID_BANKACCOUNT_CB, 'CASHDESK_ID_BANKACCOUNT_CB', 0, "courant=1", 1); print ''; + + foreach($paiements as $modep) { + if (in_array($modep->code, array('LIQ', 'CB', 'CHQ'))) continue; + $name="CASHDESK_ID_BANKACCOUNT_".$modep->code; + print ''.$langs->trans("CashDeskBankAccountFor").' '.$langs->trans($modep->libelle).''; + print ''; + $cour=preg_match('/^LIQ.*/', $modep->code)?2:1; + $form->select_comptes($conf->global->$name, $name, 0, "courant=".$cour, 1); + print ''; + } } if (! empty($conf->stock->enabled)) diff --git a/htdocs/takepos/invoice.php b/htdocs/takepos/invoice.php index e1a4b32d935..4d6299b3c0a 100644 --- a/htdocs/takepos/invoice.php +++ b/htdocs/takepos/invoice.php @@ -16,10 +16,10 @@ * along with this program. If not, see . */ -// 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('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'); } @@ -47,17 +47,33 @@ $invoice = new Facture($db); $ret = $invoice->fetch('', '(PROV-POS-'.$place.')'); if ($ret > 0) $placeid = $invoice->id; +$paycode = $pay; +if ($pay == 'cash') $paycode = 'LIQ'; +if ($pay == 'card') $paycode = 'CB'; +if ($pay == 'cheque') $paycode = 'CHQ'; + +// Retrieve paiementid +$sql = "SELECT id FROM ".MAIN_DB_PREFIX."c_paiement"; +$sql.= " WHERE entity IN (".getEntity('c_paiement').")"; +$sql.= " AND code = '".$paycode."'"; +$resql = $db->query($sql); +$codes = $db->fetch_array($resql); +$paiementid=$codes[0]; /* -* Actions -*/ + * Actions + */ if ($action == 'valid' && $user->rights->facture->creer) { - if ($pay == "cash") $bankaccount = $conf->global->CASHDESK_ID_BANKACCOUNT_CASH; + if ($pay == "cash") $bankaccount = $conf->global->CASHDESK_ID_BANKACCOUNT_CASH; elseif ($pay == "card") $bankaccount = $conf->global->CASHDESK_ID_BANKACCOUNT_CB; elseif ($pay == "cheque") $bankaccount = $conf->global->CASHDESK_ID_BANKACCOUNT_CHEQUE; - + else + { + $accountname="CASHDESK_ID_BANKACCOUNT_".$pay; + $bankaccount=$conf->global->$accountname; + } $now=dol_now(); $invoice = new Facture($db); @@ -72,12 +88,10 @@ if ($action == 'valid' && $user->rights->facture->creer) $payment->bank_account = $bankaccount; $payment->amounts[$invoice->id] = $invoice->total_ttc; - if ($pay=="cash") $payment->paiementid = 4; - elseif ($pay=="card") $payment->paiementid = 6; - elseif ($pay=="cheque") $payment->paiementid = 7; - $payment->num_payment = $invoice->ref; + $payment->paiementid=$paiementid; + $payment->num_paiement=$invoice->ref; - $payment->create($user); + $payment->create($user); $payment->addPaymentToBank($user, 'payment', '(CustomerInvoicePayment)', $bankaccount, '', ''); $invoice->set_paid($user); diff --git a/htdocs/takepos/pay.php b/htdocs/takepos/pay.php index 33524b80a8c..49f252f1224 100644 --- a/htdocs/takepos/pay.php +++ b/htdocs/takepos/pay.php @@ -15,10 +15,10 @@ * along with this program. If not, see . */ -//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('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'); @@ -50,6 +50,24 @@ else{ top_htmlhead($head, $title, $disablejs, $disablehead, $arrayofjs, $arrayofcss); $langs->loadLangs(array("main", "bills", "cashdesk")); + +$sql = "SELECT code, libelle FROM ".MAIN_DB_PREFIX."c_paiement"; +$sql.= " WHERE entity IN (".getEntity('c_paiement').")"; +$sql.= " AND active = 1"; +$sql.= " ORDER BY libelle"; +$resql = $db->query($sql); +$paiements = array(); +if ($resql) { + while ($obj = $db->fetch_object($resql)) { + $paycode = $obj->code; + if ($paycode == 'LIQ') $paycode = 'CASH'; + if ($paycode == 'CB') $paycode = 'CARD'; + if ($paycode == 'CHQ') $paycode = 'CHEQUE'; + + $accountname="CASHDESK_ID_BANKACCOUNT_".$paycode; + if (! empty($conf->global->$accountname) && $conf->global->$accountname > 0) array_push($paiements, $obj); + } +} ?> @@ -105,25 +123,68 @@ $langs->loadLangs(array("main", "bills", "cashdesk"));
"reset()", + "span" => "style='font-size: 150%;'", + "text" => "C", + ), + array( + "function" => "parent.$.colorbox.close();", + "span" => "id='printtext'", + "text" => $langs->trans("GoBack"), + ), +); $numpad=$conf->global->TAKEPOS_NUMPAD; ?> - +0) : ?> + + + + - +1) : ?> + + + + + - +2) : ?> + + + + + - - + + + + +
diff --git a/htdocs/takepos/takepos.php b/htdocs/takepos/takepos.php index 36b670146f9..3c49a45754a 100644 --- a/htdocs/takepos/takepos.php +++ b/htdocs/takepos/takepos.php @@ -449,8 +449,26 @@ $( document ).ready(function() { global->CASHDESK_ID_THIRDPARTY) or empty($conf->global->CASHDESK_ID_BANKACCOUNT_CASH) or empty($conf->global->CASHDESK_ID_BANKACCOUNT_CB)) { +$sql = "SELECT code, libelle FROM ".MAIN_DB_PREFIX."c_paiement"; +$sql.= " WHERE entity IN (".getEntity('c_paiement').")"; +$sql.= " AND active = 1"; +$sql.= " ORDER BY libelle"; +$resql = $db->query($sql); +$paiementsModes = array(); +if ($resql){ + while ($obj = $db->fetch_object($resql)){ + $paycode = $obj->code; + if ($paycode == 'LIQ') $paycode = 'CASH'; + if ($paycode == 'CB') $paycode = 'CARD'; + if ($paycode == 'CHQ') $paycode = 'CHEQUE'; + + $accountname="CASHDESK_ID_BANKACCOUNT_".$paycode; + if (! empty($conf->global->$accountname) && $conf->global->$accountname > 0) array_push($paiementsModes, $obj); + } +} +if (empty($paiementsModes)) { setEventMessages($langs->trans("ErrorModuleSetupNotComplete"), null, 'errors'); } if (count($maincategories)==0) {