diff --git a/htdocs/barcode/codeinit.php b/htdocs/barcode/codeinit.php index 7e9763caf5e..52a11e78bdd 100644 --- a/htdocs/barcode/codeinit.php +++ b/htdocs/barcode/codeinit.php @@ -184,7 +184,7 @@ llxHeader('', $langs->trans("MassBarcodeInit")); print load_fiche_titre($langs->trans("MassBarcodeInit"), '', 'title_setup.png'); print ''; -print $langs->trans("MassBarcodeInitDesc").''; +print ''.$langs->trans("MassBarcodeInitDesc").''; print ''; //print img_picto('','puce').' '.$langs->trans("PrintsheetForOneBarCode").''; @@ -302,6 +302,12 @@ if ($conf->product->enabled || $conf->product->service) } +print load_fiche_titre($langs->trans("BarCodePrintsheet"), '', 'generic'); +print ''."\n"; +print $langs->trans("ClickHereToGoTo").' : '.$langs->trans("BarCodePrintsheet").''; + + + print ''; print ''; diff --git a/htdocs/barcode/printsheet.php b/htdocs/barcode/printsheet.php index 8c883e55e75..f6dea256f6a 100644 --- a/htdocs/barcode/printsheet.php +++ b/htdocs/barcode/printsheet.php @@ -265,7 +265,7 @@ llxHeader('', $langs->trans("BarCodePrintsheet")); print load_fiche_titre($langs->trans("BarCodePrintsheet"), '', 'barcode'); print ''; -print $langs->trans("PageToGenerateBarCodeSheets", $langs->transnoentitiesnoconv("BuildPageToPrint")).''; +print ''.$langs->trans("PageToGenerateBarCodeSheets", $langs->transnoentitiesnoconv("BuildPageToPrint")).''; print ''; dol_htmloutput_errors($mesg); diff --git a/htdocs/langs/en_US/withdrawals.lang b/htdocs/langs/en_US/withdrawals.lang index 5217d54d39a..c80db907a84 100644 --- a/htdocs/langs/en_US/withdrawals.lang +++ b/htdocs/langs/en_US/withdrawals.lang @@ -34,7 +34,7 @@ NoInvoiceToWithdraw=No invoice open for '%s' is waiting. Go on tab '%s' on invoi NoSupplierInvoiceToWithdraw=No supplier invoice with open 'Direct credit requests' is waiting. Go on tab '%s' on invoice card to make a request. ResponsibleUser=User Responsible WithdrawalsSetup=Direct debit payment setup -CreditTransferSetup=Crebit transfer setup +CreditTransferSetup=Credit transfer setup WithdrawStatistics=Direct debit payment statistics CreditTransferStatistics=Credit transfer statistics Rejects=Rejects diff --git a/htdocs/product/composition/card.php b/htdocs/product/composition/card.php index 975dcfda831..aa3b49dd2c6 100644 --- a/htdocs/product/composition/card.php +++ b/htdocs/product/composition/card.php @@ -71,6 +71,7 @@ if ($action == 'add_prod' && ($user->rights->produit->creer || $user->rights->se { $error = 0; $maxprod = GETPOST("max_prod", 'int'); + for ($i = 0; $i < $maxprod; $i++) { $qty = price2num(GETPOST("prod_qty_".$i, 'alpha'), 'MS'); diff --git a/htdocs/public/notice.php b/htdocs/public/notice.php index a86b8c68e42..f97b4c03972 100644 --- a/htdocs/public/notice.php +++ b/htdocs/public/notice.php @@ -1,5 +1,5 @@ +/* Copyright (C) 2016-2020 Laurent Destailleur * * 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 @@ -26,6 +26,7 @@ define('NOCSRFCHECK', 1); define('NOLOGIN', 1); +define('NOSESSION', 1); require '../main.inc.php'; @@ -39,9 +40,8 @@ if (!GETPOST('transkey', 'alphanohtml') && !GETPOST('transphrase', 'alphanohtml' print 'Sorry, it seems your internet connexion is off.'; print 'You need to be connected to network to use this software.'; } else { - $langs->load("error"); - $langs->load("other"); + $langs->loadLangs(array("error", "other")); - if (GETPOST('transphrase', 'alphanohtml')) print GETPOST('transphrase', 'alphanohtml'); - if (GETPOST('transkey', 'alphanohtml')) print $langs->trans(GETPOST('transkey', 'alphanohtml')); + if (GETPOST('transphrase', 'alphanohtml')) print dol_escape_htmltag(GETPOST('transphrase', 'alphanohtml')); + elseif (GETPOST('transkey', 'alphanohtml')) print dol_escape_htmltag($langs->trans(GETPOST('transkey', 'alphanohtml'))); } diff --git a/htdocs/societe/price.php b/htdocs/societe/price.php index 278a85fa7f5..118d85e0fbb 100644 --- a/htdocs/societe/price.php +++ b/htdocs/societe/price.php @@ -55,6 +55,7 @@ $object = new Societe($db); // Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context $hookmanager->initHooks(array('thirdpartycustomerprice', 'globalcard')); +$error = 0; /* @@ -73,62 +74,70 @@ if (empty($reshook)) } if ($action == 'add_customer_price_confirm' && !$cancel && ($user->rights->produit->creer || $user->rights->service->creer)) { - $update_child_soc = GETPOST('updatechildprice'); - - // add price by customer - $prodcustprice->fk_soc = $socid; - $prodcustprice->fk_product = GETPOST('prodid', 'int'); - $prodcustprice->price = price2num(GETPOST("price"), 'MU'); - $prodcustprice->price_min = price2num(GETPOST("price_min"), 'MU'); - $prodcustprice->price_base_type = GETPOST("price_base_type", 'alpha'); - - $tva_tx_txt = GETPOST('tva_tx', 'alpha'); // tva_tx can be '8.5' or '8.5*' or '8.5 (XXX)' or '8.5* (XXX)' - - // We must define tva_tx, npr and local taxes - $vatratecode = ''; - $tva_tx = preg_replace('/[^0-9\.].*$/', '', $tva_tx_txt); // keep remove all after the numbers and dot - $npr = preg_match('/\*/', $tva_tx_txt) ? 1 : 0; - $localtax1 = 0; $localtax2 = 0; $localtax1_type = '0'; $localtax2_type = '0'; - // If value contains the unique code of vat line (new recommended method), we use it to find npr and local taxes - if (preg_match('/\((.*)\)/', $tva_tx_txt, $reg)) - { - // We look into database using code (we can't use get_localtax() because it depends on buyer that is not known). Same in update price. - $vatratecode = $reg[1]; - // Get record from code - $sql = "SELECT t.rowid, t.code, t.recuperableonly, t.localtax1, t.localtax2, t.localtax1_type, t.localtax2_type"; - $sql .= " FROM ".MAIN_DB_PREFIX."c_tva as t, ".MAIN_DB_PREFIX."c_country as c"; - $sql .= " WHERE t.fk_pays = c.rowid AND c.code = '".$mysoc->country_code."'"; - $sql .= " AND t.taux = ".((float) $tva_tx)." AND t.active = 1"; - $sql .= " AND t.code ='".$vatratecode."'"; - $resql = $db->query($sql); - if ($resql) - { - $obj = $db->fetch_object($resql); - $npr = $obj->recuperableonly; - $localtax1 = $obj->localtax1; - $localtax2 = $obj->localtax2; - $localtax1_type = $obj->localtax1_type; - $localtax2_type = $obj->localtax2_type; - } + if (! (GETPOST('prodid', 'int') > 0)) { + $error++; + setEventMessages($langs->trans("ErrorFieldRequired", $langs->trans("Product")), null, 'errors'); + $action = 'add_customer_price'; } - $prodcustprice->default_vat_code = $vatratecode; - $prodcustprice->tva_tx = $tva_tx; - $prodcustprice->recuperableonly = $npr; - $prodcustprice->localtax1_tx = $localtax1; - $prodcustprice->localtax2_tx = $localtax2; - $prodcustprice->localtax1_type = $localtax1_type; - $prodcustprice->localtax2_type = $localtax2_type; + if (! $error) { + $update_child_soc = GETPOST('updatechildprice'); - $result = $prodcustprice->create($user, 0, $update_child_soc); + // add price by customer + $prodcustprice->fk_soc = $socid; + $prodcustprice->fk_product = GETPOST('prodid', 'int'); + $prodcustprice->price = price2num(GETPOST("price"), 'MU'); + $prodcustprice->price_min = price2num(GETPOST("price_min"), 'MU'); + $prodcustprice->price_base_type = GETPOST("price_base_type", 'alpha'); - if ($result < 0) { - setEventMessages($prodcustprice->error, $prodcustprice->errors, 'errors'); - } else { - setEventMessages($langs->trans('Save'), null, 'mesgs'); + $tva_tx_txt = GETPOST('tva_tx', 'alpha'); // tva_tx can be '8.5' or '8.5*' or '8.5 (XXX)' or '8.5* (XXX)' + + // We must define tva_tx, npr and local taxes + $vatratecode = ''; + $tva_tx = preg_replace('/[^0-9\.].*$/', '', $tva_tx_txt); // keep remove all after the numbers and dot + $npr = preg_match('/\*/', $tva_tx_txt) ? 1 : 0; + $localtax1 = 0; $localtax2 = 0; $localtax1_type = '0'; $localtax2_type = '0'; + // If value contains the unique code of vat line (new recommended method), we use it to find npr and local taxes + if (preg_match('/\((.*)\)/', $tva_tx_txt, $reg)) + { + // We look into database using code (we can't use get_localtax() because it depends on buyer that is not known). Same in update price. + $vatratecode = $reg[1]; + // Get record from code + $sql = "SELECT t.rowid, t.code, t.recuperableonly, t.localtax1, t.localtax2, t.localtax1_type, t.localtax2_type"; + $sql .= " FROM ".MAIN_DB_PREFIX."c_tva as t, ".MAIN_DB_PREFIX."c_country as c"; + $sql .= " WHERE t.fk_pays = c.rowid AND c.code = '".$mysoc->country_code."'"; + $sql .= " AND t.taux = ".((float) $tva_tx)." AND t.active = 1"; + $sql .= " AND t.code ='".$vatratecode."'"; + $resql = $db->query($sql); + if ($resql) + { + $obj = $db->fetch_object($resql); + $npr = $obj->recuperableonly; + $localtax1 = $obj->localtax1; + $localtax2 = $obj->localtax2; + $localtax1_type = $obj->localtax1_type; + $localtax2_type = $obj->localtax2_type; + } + } + + $prodcustprice->default_vat_code = $vatratecode; + $prodcustprice->tva_tx = $tva_tx; + $prodcustprice->recuperableonly = $npr; + $prodcustprice->localtax1_tx = $localtax1; + $prodcustprice->localtax2_tx = $localtax2; + $prodcustprice->localtax1_type = $localtax1_type; + $prodcustprice->localtax2_type = $localtax2_type; + + $result = $prodcustprice->create($user, 0, $update_child_soc); + + if ($result < 0) { + setEventMessages($prodcustprice->error, $prodcustprice->errors, 'errors'); + } else { + setEventMessages($langs->trans('Save'), null, 'mesgs'); + } + + $action = ''; } - - $action = ''; } if ($action == 'delete_customer_price' && ($user->rights->produit->creer || $user->rights->service->creer)) { @@ -253,6 +262,9 @@ if (!empty($conf->global->PRODUIT_CUSTOMER_PRICES)) { if ($action == 'add_customer_price') { // Create mode + print ''; + print ''."\n"; + print load_fiche_titre($langs->trans('PriceByCustomer')); print 'id.'" method="POST">'; @@ -402,7 +414,8 @@ if (!empty($conf->global->PRODUIT_CUSTOMER_PRICES)) { print ''; } elseif ($action == 'showlog_customer_price') { - print ''."\n"; + print ''; + print ''."\n"; $filter = array( 't.fk_product' => GETPOST('prodid', 'int'), 't.fk_soc' => $socid @@ -426,6 +439,7 @@ if (!empty($conf->global->PRODUIT_CUSTOMER_PRICES)) { if (count($prodcustprice->lines) > 0) { print 'id.'" method="POST">'; + print ''; print ''; print ''; @@ -510,6 +524,7 @@ if (!empty($conf->global->PRODUIT_CUSTOMER_PRICES)) { print_barre_liste($langs->trans('PriceForEachProduct'), $page, $_SERVER['PHP_SELF'], $option, $sortfield, $sortorder, '', count($prodcustprice->lines), $nbtotalofrecords, ''); print 'id.'" method="POST">'; + print ''; print ''; print ''; @@ -569,16 +584,16 @@ if (!empty($conf->global->PRODUIT_CUSTOMER_PRICES)) { // Action if ($user->rights->produit->creer || $user->rights->service->creer) { - print ''; - print 'id.'&prodid='.$line->fk_product.'">'; + print ''; + print 'id.'&prodid='.$line->fk_product.'">'; print img_info(); print ''; print ' '; - print 'id.'&lineid='.$line->id.'">'; + print 'id.'&lineid='.$line->id.'">'; print img_edit('default', 0, 'style="vertical-align: middle;"'); print ''; print ' '; - print 'id.'&lineid='.$line->id.'">'; + print 'id.'&lineid='.$line->id.'">'; print img_delete('default', 'style="vertical-align: middle;"'); print ''; print '';