| ';
print $invoicestatic->getNomUrl(1, 'withdraw');
print ' | ';
print '';
- print $thirdpartystatic->getNomUrl(1, 'customer');
+ print $thirdpartystatic->getNomUrl(1, 'supplier');
print ' | ';
print '';
diff --git a/htdocs/compta/prelevement/card.php b/htdocs/compta/prelevement/card.php
index d1a932a7685..5bce8045df9 100644
--- a/htdocs/compta/prelevement/card.php
+++ b/htdocs/compta/prelevement/card.php
@@ -31,10 +31,7 @@ require_once DOL_DOCUMENT_ROOT.'/compta/prelevement/class/bonprelevement.class.p
require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php';
// Load translation files required by the page
-$langs->loadLangs(array('banks', 'categories', 'bills', 'withdrawals'));
-
-if (!$user->rights->prelevement->bons->lire)
-accessforbidden();
+$langs->loadLangs(array('banks', 'categories', 'bills', 'companies', 'withdrawals'));
// Security check
if ($user->socid > 0) accessforbidden();
@@ -44,7 +41,6 @@ $action = GETPOST('action', 'alpha');
$id = GETPOST('id', 'int');
$ref = GETPOST('ref', 'alpha');
$socid = GETPOST('socid', 'int');
-
$type = GETPOST('type', 'aZ09');
// Load variable for pagination
@@ -67,6 +63,13 @@ include DOL_DOCUMENT_ROOT.'/core/actions_fetchobject.inc.php'; // Must be includ
$hookmanager->initHooks(array('directdebitprevcard', 'globalcard', 'directdebitprevlist'));
+if (!$user->rights->prelevement->bons->lire && $object->type != 'bank-transfer') {
+ accessforbidden();
+}
+if (!$user->rights->paymentbybanktransfer->read && $object->type == 'bank-transfer') {
+ accessforbidden();
+}
+
/*
* Actions
@@ -174,7 +177,7 @@ if ($id > 0 || $ref)
}*/
- $linkback = ''.$langs->trans("BackToList").'';
+ $linkback = ''.$langs->trans("BackToList").'';
dol_banner_tab($object, 'ref', $linkback, 1, 'ref', 'ref');
@@ -200,7 +203,7 @@ if ($id > 0 || $ref)
print ' |
| ';
- print $ligne->LibStatut($row[1], 1);
+ print $line->LibStatut($row[1], 1);
print ' | ';
print price($row[0]);
diff --git a/htdocs/core/class/commondocgenerator.class.php b/htdocs/core/class/commondocgenerator.class.php
index 0b8b99bd395..f610e6bb952 100644
--- a/htdocs/core/class/commondocgenerator.class.php
+++ b/htdocs/core/class/commondocgenerator.class.php
@@ -1072,7 +1072,8 @@ abstract class CommonDocGenerator
$parameters = array(
'curY' => &$curY,
'columnText' => $columnText,
- 'colKey' => $colKey
+ 'colKey' => $colKey,
+ 'pdf' => &$pdf,
);
$reshook = $hookmanager->executeHooks('printStdColumnContent', $parameters, $this); // Note that $action and $object may have been modified by hook
if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
diff --git a/htdocs/core/db/pgsql.class.php b/htdocs/core/db/pgsql.class.php
index 9ab2e1807bd..3f33016d7e5 100644
--- a/htdocs/core/db/pgsql.class.php
+++ b/htdocs/core/db/pgsql.class.php
@@ -177,6 +177,8 @@ class DoliDBPgsql extends DoliDB
if ($type == 'dml')
{
+ $reg = array();
+
$line = preg_replace('/\s/', ' ', $line); // Replace tabulation with space
// we are inside create table statement so lets process datatypes
diff --git a/htdocs/core/lib/prelevement.lib.php b/htdocs/core/lib/prelevement.lib.php
index a404e19184e..8008c9fd51f 100644
--- a/htdocs/core/lib/prelevement.lib.php
+++ b/htdocs/core/lib/prelevement.lib.php
@@ -39,8 +39,13 @@ function prelevement_prepare_head(BonPrelevement $object)
$h = 0;
$head = array();
+ $titleoftab = "WithdrawalsReceipts";
+ if ($object->type == 'bank-transfer') {
+ $titleoftab = "BankTransferReceipts";
+ }
+
$head[$h][0] = DOL_URL_ROOT.'/compta/prelevement/card.php?id='.$object->id;
- $head[$h][1] = $langs->trans("WithdrawalsReceipts");
+ $head[$h][1] = $langs->trans($titleoftab);
$head[$h][2] = 'prelevement';
$h++;
diff --git a/htdocs/core/lib/price.lib.php b/htdocs/core/lib/price.lib.php
index 7def1ec85fa..ea80732ae41 100644
--- a/htdocs/core/lib/price.lib.php
+++ b/htdocs/core/lib/price.lib.php
@@ -40,8 +40,8 @@
* @param float $pu Unit price (HT or TTC selon price_base_type)
* @param float $remise_percent_ligne Discount for line
* @param float $txtva 0=do not apply VAT tax, VAT rate=apply (this is VAT rate only without text code, we don't need text code because we alreaydy have all tax info into $localtaxes_array)
- * @param float $uselocaltax1_rate 0=do not use this localtax, >0=apply and get value from localtaxes_array (or database if empty), -1=autodetect according to seller if we must apply, get value from localtaxes_array (or database if empty). Try to always use -1.
- * @param float $uselocaltax2_rate 0=do not use this localtax, >0=apply and get value from localtaxes_array (or database if empty), -1=autodetect according to seller if we must apply, get value from localtaxes_array (or database if empty). Try to always use -1.
+ * @param float $uselocaltax1_rate 0=do not use localtax1, >0=apply and get value from localtaxes_array (or database if empty), -1=autodetect according to seller if we must apply, get value from localtaxes_array (or database if empty). Try to always use -1.
+ * @param float $uselocaltax2_rate 0=do not use localtax2, >0=apply and get value from localtaxes_array (or database if empty), -1=autodetect according to seller if we must apply, get value from localtaxes_array (or database if empty). Try to always use -1.
* @param float $remise_percent_global 0
* @param string $price_base_type HT=Unit price parameter is HT, TTC=Unit price parameter is TTC
* @param int $info_bits Miscellaneous informations on line
diff --git a/htdocs/core/tpl/card_presend.tpl.php b/htdocs/core/tpl/card_presend.tpl.php
index bca04a3f534..ba759eded31 100644
--- a/htdocs/core/tpl/card_presend.tpl.php
+++ b/htdocs/core/tpl/card_presend.tpl.php
@@ -127,7 +127,24 @@ if ($action == 'presend')
{
$formmail->fromid = $user->id;
}
- $formmail->trackid = $trackid;
+
+ if ($object->element === 'facture' && !empty($conf->global->INVOICE_EMAIL_SENDER)) {
+ $formmail->frommail = $conf->global->INVOICE_EMAIL_SENDER;
+ $formmail->fromname = '';
+ $formmail->fromtype = 'special';
+ }
+ if ($object->element === 'shipping' && !empty($conf->global->SHIPPING_EMAIL_SENDER)) {
+ $formmail->frommail = $conf->global->SHIPPING_EMAIL_SENDER;
+ $formmail->fromname = '';
+ $formmail->fromtype = 'special';
+ }
+ if ($object->element === 'commande' && !empty($conf->global->COMMANDE_EMAIL_SENDER)) {
+ $formmail->frommail = $conf->global->COMMANDE_EMAIL_SENDER;
+ $formmail->fromname = '';
+ $formmail->fromtype = 'special';
+ }
+
+ $formmail->trackid=$trackid;
if (!empty($conf->global->MAIN_EMAIL_ADD_TRACK_ID) && ($conf->global->MAIN_EMAIL_ADD_TRACK_ID & 2)) // If bit 2 is set
{
include DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php';
diff --git a/htdocs/core/tpl/extrafields_list_print_fields.tpl.php b/htdocs/core/tpl/extrafields_list_print_fields.tpl.php
index f80ae568071..95ac0d6d5ce 100644
--- a/htdocs/core/tpl/extrafields_list_print_fields.tpl.php
+++ b/htdocs/core/tpl/extrafields_list_print_fields.tpl.php
@@ -58,7 +58,7 @@ if (!empty($extrafieldsobjectkey)) // $extrafieldsobject is the $object->table_e
// we keep position for the first line
$totalarray['totalizable'][$key]['pos'] = $totalarray['nbfield'];
}
- $totalarray['totalizable'][$key]['total'] += $obj->$tmpkey;
+ if (is_numeric($obj->$tmpkey)) $totalarray['totalizable'][$key]['total'] += $obj->$tmpkey;
}
if (!empty($val['isameasure']))
{
diff --git a/htdocs/expedition/card.php b/htdocs/expedition/card.php
index 12503c36869..929e7ecafd0 100644
--- a/htdocs/expedition/card.php
+++ b/htdocs/expedition/card.php
@@ -1865,7 +1865,7 @@ if ($action == 'create')
print '';
print ' ';
- print ' ';
+ print '';
// Sending method
print '| ';
diff --git a/htdocs/fourn/class/fournisseur.commande.class.php b/htdocs/fourn/class/fournisseur.commande.class.php
index c7cb8025d62..e7803ea4d0f 100644
--- a/htdocs/fourn/class/fournisseur.commande.class.php
+++ b/htdocs/fourn/class/fournisseur.commande.class.php
@@ -1244,11 +1244,15 @@ class CommandeFournisseur extends CommonOrder
$error = 0;
$now = dol_now();
+ // $date_commande is deprecated
+ $date = ($this->date_commande ? $this->date_commande : $this->date); // in case of date is set
+ if(empty($date)) $date = $now;
+
// Clean parameters
if (empty($this->source)) $this->source = 0;
// Multicurrency (test on $this->multicurrency_tx because we should take the default rate only if not using origin rate)
- if (!empty($this->multicurrency_code) && empty($this->multicurrency_tx)) list($this->fk_multicurrency, $this->multicurrency_tx) = MultiCurrency::getIdAndTxFromCode($this->db, $this->multicurrency_code);
+ if (!empty($this->multicurrency_code) && empty($this->multicurrency_tx)) list($this->fk_multicurrency, $this->multicurrency_tx) = MultiCurrency::getIdAndTxFromCode($this->db, $this->multicurrency_code, $date);
else $this->fk_multicurrency = MultiCurrency::getIdFromCode($this->db, $this->multicurrency_code);
if (empty($this->fk_multicurrency))
{
diff --git a/htdocs/fourn/class/fournisseur.facture.class.php b/htdocs/fourn/class/fournisseur.facture.class.php
index 9949c4d3253..48ecb3de70f 100644
--- a/htdocs/fourn/class/fournisseur.facture.class.php
+++ b/htdocs/fourn/class/fournisseur.facture.class.php
@@ -359,7 +359,7 @@ class FactureFournisseur extends CommonInvoice
$remise = $this->remise;
// Multicurrency (test on $this->multicurrency_tx because we should take the default rate only if not using origin rate)
- if (!empty($this->multicurrency_code) && empty($this->multicurrency_tx)) list($this->fk_multicurrency, $this->multicurrency_tx) = MultiCurrency::getIdAndTxFromCode($this->db, $this->multicurrency_code);
+ if (!empty($this->multicurrency_code) && empty($this->multicurrency_tx)) list($this->fk_multicurrency, $this->multicurrency_tx) = MultiCurrency::getIdAndTxFromCode($this->db, $this->multicurrency_code, $this->date);
else $this->fk_multicurrency = MultiCurrency::getIdFromCode($this->db, $this->multicurrency_code);
if (empty($this->fk_multicurrency))
{
@@ -485,7 +485,7 @@ class FactureFournisseur extends CommonInvoice
$idligne,
$this->lines[$i]->description,
$this->lines[$i]->pu_ht,
- $this->lines[$i]->tva_tx,
+ $this->lines[$i]->tva_tx.($this->lines[$i]->vat_src_code ? ' ('.$this->lines[$i]->vat_src_code.')' : ''),
$this->lines[$i]->localtax1_tx,
$this->lines[$i]->localtax2_tx,
$this->lines[$i]->qty,
@@ -1885,6 +1885,8 @@ class FactureFournisseur extends CommonInvoice
$localtaxes_type = getLocalTaxesFromRate($vatrate, 0, $mysoc, $this->thirdparty);
+ $reg = array();
+
// Clean vat code
$vat_src_code = '';
if (preg_match('/\((.*)\)/', $vatrate, $reg))
@@ -2570,6 +2572,8 @@ class FactureFournisseur extends CommonInvoice
$object->id = 0;
$object->statut = self::STATUS_DRAFT;
+ $object->fetch_thirdparty(); // We need it to recalculate VAT localtaxes according to main sale taxes and vendor
+
// Clear fields
$object->ref_supplier = (empty($this->ref_supplier) ? $langs->trans("CopyOf").' '.$object->ref_supplier : $this->ref_supplier);
$object->author = $user->id;
diff --git a/htdocs/fourn/class/fournisseur.product.class.php b/htdocs/fourn/class/fournisseur.product.class.php
index a2ed4b6c0aa..b3c4514f5ff 100644
--- a/htdocs/fourn/class/fournisseur.product.class.php
+++ b/htdocs/fourn/class/fournisseur.product.class.php
@@ -995,7 +995,7 @@ class ProductFournisseur extends Product
//$out .= ' | '.$langs->trans("QtyMin").' | ';
$out .= ''.$langs->trans("User").' | ';
foreach ($productFournLogList as $productFournLog) {
- $out .= '| '.dol_print_date($this->db->jdate($productFournLog['datec']), 'dayhour', 'tzuser').' | ';
+ $out .= ' | '.dol_print_date($productFournLog['datec'], 'dayhour', 'tzuser').' | ';
$out .= ''.price($productFournLog['price']).' | ';
//$out.= ''.$productFournLog['quantity'].' | ';
$out .= ''.$productFournLog['lastname'].' | ';
diff --git a/htdocs/fourn/facture/card.php b/htdocs/fourn/facture/card.php
index 384359ae92f..80301dcdc43 100644
--- a/htdocs/fourn/facture/card.php
+++ b/htdocs/fourn/facture/card.php
@@ -1,6 +1,6 @@
- * Copyright (C) 2004-2016 Laurent Destailleur
+ * Copyright (C) 2004-2020 Laurent Destailleur
* Copyright (C) 2004 Christophe Combelles
* Copyright (C) 2005 Marc Barilley
* Copyright (C) 2005-2013 Regis Houssin
diff --git a/htdocs/holiday/define_holiday.php b/htdocs/holiday/define_holiday.php
index 51145fb1f42..0e83d68509d 100644
--- a/htdocs/holiday/define_holiday.php
+++ b/htdocs/holiday/define_holiday.php
@@ -264,7 +264,7 @@ if (count($typeleaves) == 0)
print ' | ';
// Action column
- print '';
+ print ' | ';
$searchpicto = $form->showFilterButtons();
print $searchpicto;
print ' | ';
diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang
index 7ab6c7e164f..36098ab54c1 100644
--- a/htdocs/langs/en_US/admin.lang
+++ b/htdocs/langs/en_US/admin.lang
@@ -1688,7 +1688,7 @@ AGENDA_SHOW_LINKED_OBJECT=Show linked object into agenda view
##### Clicktodial #####
ClickToDialSetup=Click To Dial module setup
ClickToDialUrlDesc=Url called when a click on phone picto is done. In URL, you can use tags __PHONETO__ that will be replaced with the phone number of person to call __PHONEFROM__ that will be replaced with phone number of calling person (yours) __LOGIN__ that will be replaced with clicktodial login (defined on user card) __PASS__ that will be replaced with clicktodial password (defined on user card).
-ClickToDialDesc=This module makea phone numbers clickable links. A click on the icon will make your phone call the number. This can be used to call a call-center system from Dolibarr that can call the phone number on a SIP system for example.
+ClickToDialDesc=This module change phone numbers, when using a desktop computer, into clickable links. A click will call the number. This can be used to start the phone call when using a soft phone on your desktop or when using a CTI system based on SIP protocol for example. Note: When using a smartphone, phone numbers are always clickable.
ClickToDialUseTelLink=Use just a link "tel:" on phone numbers
ClickToDialUseTelLinkDesc=Use this method if your users have a softphone or a software interface installed on the same computer as the browser, and called when you click on a link in your browser that starts with "tel:". If you need a full server solution (no need of local software installation), you must set this to "No" and fill next field.
##### Point Of Sale (CashDesk) #####
diff --git a/htdocs/langs/en_US/withdrawals.lang b/htdocs/langs/en_US/withdrawals.lang
index 841a9c2d480..662c587108a 100644
--- a/htdocs/langs/en_US/withdrawals.lang
+++ b/htdocs/langs/en_US/withdrawals.lang
@@ -77,12 +77,12 @@ StatusMotif8=Other reason
CreateForSepaFRST=Create direct debit file (SEPA FRST)
CreateForSepaRCUR=Create direct debit file (SEPA RCUR)
CreateAll=Create direct debit file (all)
-CreateFileForPaymentByBankTransfer=Create credit transfer (all)
+CreateFileForPaymentByBankTransfer=Create file for credit transfer (all)
CreateSepaFileForPaymentByBankTransfer=Create credit transfer file (SEPA)
CreateGuichet=Only office
CreateBanque=Only bank
OrderWaiting=Waiting for treatment
-NotifyTransmision=Withdrawal Transmission
+NotifyTransmision=File transmission
NotifyCredit=Withdrawal Credit
NumeroNationalEmetter=National Transmitter Number
WithBankUsingRIB=For bank accounts using RIB
@@ -95,7 +95,8 @@ ShowWithdraw=Show Direct Debit Order
IfInvoiceNeedOnWithdrawPaymentWontBeClosed=However, if invoice has at least one direct debit payment order not yet processed, it won't be set as paid to allow prior withdrawal management.
DoStandingOrdersBeforePayments=This tab allows you to request a direct debit payment order. Once done, go into menu Bank->Payment by direct debit to generate and manage the direct debit order. When direct debit order is closed, payment on invoices will be automatically recorded, and invoices closed if remainder to pay is null.
DoCreditTransferBeforePayments=This tab allows you to request a credit transfer order. Once done, go into menu Bank->Payment by credit transfer to generate and manage the credit transfer order. When credit transfer order is closed, payment on invoices will be automatically recorded, and invoices closed if remainder to pay is null.
-WithdrawalFile=Withdrawal file
+WithdrawalFile=Debit order file
+CreditTransferFile=Credit transfer file
SetToStatusSent=Set to status "File Sent"
ThisWillAlsoAddPaymentOnInvoice=This will also record payments on invoices and will classify them as "Paid" if remain to pay is null
StatisticsByLineStatus=Statistics by status of lines
@@ -121,6 +122,7 @@ SEPAFrstOrRecur=Type of payment
ModeRECUR=Recurring payment
ModeFRST=One-off payment
PleaseCheckOne=Please check one only
+CreditTransferOrderCreated=Credit transfer order %s created
DirectDebitOrderCreated=Direct debit order %s created
AmountRequested=Amount requested
SEPARCUR=SEPA CUR
diff --git a/htdocs/multicurrency/class/multicurrency.class.php b/htdocs/multicurrency/class/multicurrency.class.php
index 05d0f3f8a7c..8acd4430e47 100644
--- a/htdocs/multicurrency/class/multicurrency.class.php
+++ b/htdocs/multicurrency/class/multicurrency.class.php
@@ -517,6 +517,7 @@ class MultiCurrency extends CommonObject
global $conf;
$sql1 = 'SELECT m.rowid, mc.rate FROM '.MAIN_DB_PREFIX.'multicurrency m';
+
$sql1 .= ' LEFT JOIN '.MAIN_DB_PREFIX.'multicurrency_rate mc ON (m.rowid = mc.fk_multicurrency)';
$sql1 .= " WHERE m.code = '".$db->escape($code)."'";
$sql1 .= " AND m.entity IN (".getEntity('multicurrency').")";
@@ -525,7 +526,7 @@ class MultiCurrency extends CommonObject
$tmparray = dol_getdate($date_document);
$sql2 .= " AND mc.date_sync <= '".$db->idate(dol_mktime(23, 59, 59, $tmparray['mon'], $tmparray['mday'], $tmparray['year'], true))."'";
}
- $sql3 .= ' ORDER BY mc.date_sync DESC LIMIT 1';
+ $sql3 = ' ORDER BY mc.date_sync DESC LIMIT 1';
dol_syslog(__METHOD__, LOG_DEBUG);
$resql = $db->query($sql1.$sql2.$sql3);
diff --git a/htdocs/societe/card.php b/htdocs/societe/card.php
index 52de4d190d1..c73020ae7ab 100644
--- a/htdocs/societe/card.php
+++ b/htdocs/societe/card.php
@@ -1990,7 +1990,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action))
print '';
}
print '';
- if ($conf->browser->layout == 'phone') print '';
+ print ' ';
print '| '.$form->editfieldkey($langs->transcountry("LocalTax2IsUsed", $mysoc->country_code), 'localtax2assuj_value', '', $object, 0).' | ';
print $form->selectyesno('localtax2assuj_value', $object->localtax2_assuj, 1);
if (!isOnlyOneLocalTax(2))
diff --git a/htdocs/supplier_proposal/class/supplier_proposal.class.php b/htdocs/supplier_proposal/class/supplier_proposal.class.php
index 907a741c288..9d6ce02c8ee 100644
--- a/htdocs/supplier_proposal/class/supplier_proposal.class.php
+++ b/htdocs/supplier_proposal/class/supplier_proposal.class.php
@@ -869,7 +869,7 @@ class SupplierProposal extends CommonObject
}
// Multicurrency
- if (!empty($this->multicurrency_code)) list($this->fk_multicurrency, $this->multicurrency_tx) = MultiCurrency::getIdAndTxFromCode($this->db, $this->multicurrency_code);
+ if (!empty($this->multicurrency_code)) list($this->fk_multicurrency, $this->multicurrency_tx) = MultiCurrency::getIdAndTxFromCode($this->db, $this->multicurrency_code, $now);
if (empty($this->fk_multicurrency))
{
$this->multicurrency_code = $conf->currency;
diff --git a/htdocs/theme/eldy/info-box.inc.php b/htdocs/theme/eldy/info-box.inc.php
index cceb8af9bf7..b995b551f43 100644
--- a/htdocs/theme/eldy/info-box.inc.php
+++ b/htdocs/theme/eldy/info-box.inc.php
@@ -398,12 +398,18 @@ if (GETPOSTISSET('THEME_SATURATE_RATIO')) $conf->global->THEME_SATURATE_RATIO =
height: 0;
}
+.info-box-title {
+ width: calc(100% - 20px);
+}
.info-box-module {
min-width: 350px;
max-width: 350px;
}
-.info-box-title {
- width: calc(100% - 20px);
+@media only screen and (max-width: 1740px) {
+ .info-box-module {
+ min-width: 315px;
+ max-width: 315px;
+ }
}
@media only screen and (max-width: 767px) {
.info-box-module {
diff --git a/htdocs/theme/md/info-box.inc.php b/htdocs/theme/md/info-box.inc.php
index 949c8218e0a..e53f5d1f914 100644
--- a/htdocs/theme/md/info-box.inc.php
+++ b/htdocs/theme/md/info-box.inc.php
@@ -455,6 +455,18 @@ if (GETPOSTISSET('THEME_SATURATE_RATIO')) $conf->global->THEME_SATURATE_RATIO =
min-width: 350px;
max-width: 350px;
}
+@media only screen and (max-width: 1740px) {
+ .info-box-module {
+ min-width: 315px;
+ max-width: 315px;
+ }
+}
+@media only screen and (max-width: 767px) {
+ .info-box-module {
+ min-width: 260px;
+ }
+}
+
.info-box-module .info-box-content {
height: 6.3em;
}
diff --git a/test/phpunit/CodingSqlTest.php b/test/phpunit/CodingSqlTest.php
index 56b0d001a81..245a7869811 100644
--- a/test/phpunit/CodingSqlTest.php
+++ b/test/phpunit/CodingSqlTest.php
@@ -164,7 +164,10 @@ class CodingSqlTest extends PHPUnit\Framework\TestCase
continue;
print 'Check sql file '.$file."\n";
- $filecontent=file_get_contents($dir.'/'.$file);
+ $filecontent = file_get_contents($dir.'/'.$file);
+
+ // Allow ` for 'rank' column name
+ $filecontent = str_replace('`rank`', '_rank_', $filecontent);
$result=strpos($filecontent, '`');
print __METHOD__." Result for checking we don't have back quote = ".$result."\n";
| |