Merge remote-tracking branch 'upstream/develop' into boxindex
This commit is contained in:
commit
e2c57584b7
15
.travis.yml
15
.travis.yml
@ -38,8 +38,8 @@ env:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
fast_finish: true
|
fast_finish: true
|
||||||
allow_failures:
|
#allow_failures:
|
||||||
- php: nightly
|
#- php: nightly
|
||||||
include:
|
include:
|
||||||
- if: type = push
|
- if: type = push
|
||||||
php: '5.6'
|
php: '5.6'
|
||||||
@ -73,13 +73,6 @@ before_install:
|
|||||||
phpenv config-rm xdebug.ini
|
phpenv config-rm xdebug.ini
|
||||||
echo
|
echo
|
||||||
|
|
||||||
- |
|
|
||||||
if [ "$DB" = 'postgresql' ]; then
|
|
||||||
echo "Check pgloader version"
|
|
||||||
pgloader --version
|
|
||||||
echo
|
|
||||||
fi
|
|
||||||
|
|
||||||
install:
|
install:
|
||||||
- |
|
- |
|
||||||
echo "Updating Composer"
|
echo "Updating Composer"
|
||||||
@ -178,6 +171,10 @@ before_script:
|
|||||||
mysql --version | head -
|
mysql --version | head -
|
||||||
mysql -e "SELECT VERSION();" | head -
|
mysql -e "SELECT VERSION();" | head -
|
||||||
psql --version
|
psql --version
|
||||||
|
if [ "$DB" = 'postgresql' ]; then
|
||||||
|
echo "Check pgloader version"
|
||||||
|
pgloader --version
|
||||||
|
fi
|
||||||
echo
|
echo
|
||||||
|
|
||||||
- |
|
- |
|
||||||
|
|||||||
16
ChangeLog
16
ChangeLog
@ -7,7 +7,8 @@ English Dolibarr ChangeLog
|
|||||||
|
|
||||||
For users:
|
For users:
|
||||||
----------
|
----------
|
||||||
NEW: Add module "Credit transfer SEPA" to manage payment of vendors using bank credit transfer SEPA files.
|
NEW: Module "Credit transfer SEPA" to manage payment of vendors using bank credit transfer SEPA files.
|
||||||
|
NEW: Module Intracomm report
|
||||||
NEW: Module Reception (for a more accurate management of your receptions) moved from experimental to stable.
|
NEW: Module Reception (for a more accurate management of your receptions) moved from experimental to stable.
|
||||||
NEW: Module Recruitment to manage Job position and applications.
|
NEW: Module Recruitment to manage Job position and applications.
|
||||||
NEW: Several security issues after a private bug bounty campaign.
|
NEW: Several security issues after a private bug bounty campaign.
|
||||||
@ -22,7 +23,6 @@ NEW: Solve blocking feature. Can increase stock of a Kit without changing subpro
|
|||||||
NEW: add a widget to show the customers with outstanding limits reached
|
NEW: add a widget to show the customers with outstanding limits reached
|
||||||
NEW: add 2 rules for emailcollector: Message send/not sent from Dolibarr
|
NEW: add 2 rules for emailcollector: Message send/not sent from Dolibarr
|
||||||
NEW: add a counter of number of words for pages in website module
|
NEW: add a counter of number of words for pages in website module
|
||||||
NEW: add alert before changing thirdparty in TakePOS
|
|
||||||
NEW: add a page to list Stock at a given date in the past
|
NEW: add a page to list Stock at a given date in the past
|
||||||
NEW: add a start date to begin binding in accountancy
|
NEW: add a start date to begin binding in accountancy
|
||||||
NEW: add a statistics page to list popularity of products on invoices
|
NEW: add a statistics page to list popularity of products on invoices
|
||||||
@ -34,7 +34,7 @@ NEW: add column vat rate in page to define accounting account on product/service
|
|||||||
NEW: add costprice in fields of products list
|
NEW: add costprice in fields of products list
|
||||||
NEW: add an import profile for CUSTOMER ORDER, PO, PROPOSAL MODULE, SUPPLIER INVOICE
|
NEW: add an import profile for CUSTOMER ORDER, PO, PROPOSAL MODULE, SUPPLIER INVOICE
|
||||||
NEW: add employee link in expense report binding page
|
NEW: add employee link in expense report binding page
|
||||||
NEW: add EORI No. as ProfID5
|
NEW: add EORI No. as ProfID5 #15382
|
||||||
NEW: add export for various payments
|
NEW: add export for various payments
|
||||||
NEW: add Extrafields labels and values in mail on create ticket
|
NEW: add Extrafields labels and values in mail on create ticket
|
||||||
NEW: add Extrafields support on ECM module
|
NEW: add Extrafields support on ECM module
|
||||||
@ -121,9 +121,7 @@ NEW: link on balance to the ledger
|
|||||||
NEW: MAIN_EMAILCOLLECTOR_MAIL_WITHOUT_HEADER const in email collector
|
NEW: MAIN_EMAILCOLLECTOR_MAIL_WITHOUT_HEADER const in email collector
|
||||||
NEW: manage errors on update extra fields in ticket card
|
NEW: manage errors on update extra fields in ticket card
|
||||||
NEW: mass-actions for the event list view
|
NEW: mass-actions for the event list view
|
||||||
NEW: Module Intracomm report
|
|
||||||
NEW: more filter for "View change logs"
|
NEW: more filter for "View change logs"
|
||||||
NEW: multicurrency total in TakePOS
|
|
||||||
NEW: multiselect type and date to date filter
|
NEW: multiselect type and date to date filter
|
||||||
NEW: Nature of product is now a dictionay
|
NEW: Nature of product is now a dictionay
|
||||||
NEW: new line template: hidden conf to fill service dates from the last service line
|
NEW: new line template: hidden conf to fill service dates from the last service line
|
||||||
@ -136,14 +134,12 @@ NEW: Purchase price table: added filterable table columns
|
|||||||
NEW: rate editor for multicurrency
|
NEW: rate editor for multicurrency
|
||||||
NEW: ref_ext field for Commande lines, order lines, Attributes and Combinations, Invoice lines, payments, order lines
|
NEW: ref_ext field for Commande lines, order lines, Attributes and Combinations, Invoice lines, payments, order lines
|
||||||
NEW: remove new lines in mail on add ticket message
|
NEW: remove new lines in mail on add ticket message
|
||||||
NEW: restrict thirdparty to customer in TakePOS
|
|
||||||
NEW: Rule "email to" accept wildcard *
|
NEW: Rule "email to" accept wildcard *
|
||||||
NEW: Save filter of the project homepage
|
NEW: Save filter of the project homepage
|
||||||
NEW: select-able columns on customer and supplier invoice paymnet list
|
NEW: select-able columns on customer and supplier invoice paymnet list
|
||||||
NEW: select-able columns on miscellaneous payments + more data columns
|
NEW: select-able columns on miscellaneous payments + more data columns
|
||||||
NEW: select-able columns on social taxes list
|
NEW: select-able columns on social taxes list
|
||||||
NEW: send context and remove new lines on create ticket
|
NEW: send context and remove new lines on create ticket
|
||||||
NEW: show available stock in TakePOS
|
|
||||||
NEW: show category filter on lists only when user have rights to read categories
|
NEW: show category filter on lists only when user have rights to read categories
|
||||||
NEW: show header number and make it clickable in warehouse area, payment area, shipment area
|
NEW: show header number and make it clickable in warehouse area, payment area, shipment area
|
||||||
NEW: show image of user in the combo select of users
|
NEW: show image of user in the combo select of users
|
||||||
@ -156,12 +152,16 @@ NEW: show tags and status in search list of website pages
|
|||||||
NEW: show user on external calender events (when found)
|
NEW: show user on external calender events (when found)
|
||||||
NEW: subject title with company name instead of application title in ticket message
|
NEW: subject title with company name instead of application title in ticket message
|
||||||
NEW: Support for Samba4 AD
|
NEW: Support for Samba4 AD
|
||||||
|
NEW: TakePOS add alert before changing thirdparty
|
||||||
NEW: TakePOS add third order printer
|
NEW: TakePOS add third order printer
|
||||||
NEW: TakePOS can change thirdparty with barcode scan
|
NEW: TakePOS can change thirdparty with barcode scan
|
||||||
NEW: TakePOS can create a thirdparty customer from TakePOS frontend
|
NEW: TakePOS can create a thirdparty customer from TakePOS frontend
|
||||||
NEW: TakePOS connector compatibility with RECEIPT PRINTERS module
|
NEW: TakePOS connector compatibility with RECEIPT PRINTERS module
|
||||||
NEW: TakePOS Gift Receipt
|
NEW: TakePOS Gift Receipt
|
||||||
NEW: TakePOS Multicurrency compatibility
|
NEW: TakePOS multicurrency compatibility
|
||||||
|
NEW: TakePOS multicurrency total
|
||||||
|
NEW: TakePOS restrict thirdparty to customer
|
||||||
|
NEW: TakePOS show available stock in TakePOS
|
||||||
NEW: TakePOS Weighing Scale compatibility with TakePOS connector #14725
|
NEW: TakePOS Weighing Scale compatibility with TakePOS connector #14725
|
||||||
NEW: Third-Party Import new fields: mother company,outstanding debt limit,bank account,incoterms
|
NEW: Third-Party Import new fields: mother company,outstanding debt limit,bank account,incoterms
|
||||||
NEW: Thirdparty module : box on customer/supplier tab for invoice outsantding amount late
|
NEW: Thirdparty module : box on customer/supplier tab for invoice outsantding amount late
|
||||||
|
|||||||
10
build/README
10
build/README
@ -7,6 +7,9 @@ Building packages
|
|||||||
##################################################
|
##################################################
|
||||||
|
|
||||||
All sub-directories of "build" directory contains files (setup or binary tools) required to build automatically Dolibarr packages.
|
All sub-directories of "build" directory contains files (setup or binary tools) required to build automatically Dolibarr packages.
|
||||||
|
The build directory and all its contents is absolutely not required to make Dolibarr working.
|
||||||
|
It is here only to build Dolibarr packages, and those generated packages will not contains this "build" directory.
|
||||||
|
|
||||||
|
|
||||||
There are several tools:
|
There are several tools:
|
||||||
|
|
||||||
@ -17,8 +20,7 @@ There are several tools:
|
|||||||
--------------------------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
Prerequisites to build tgz, debian, rpm package:
|
Prerequisites to build tgz, debian and rpm packages:
|
||||||
|
|
||||||
> apt-get install tar dpkg dpatch p7zip-full rpm zip
|
> apt-get install tar dpkg dpatch p7zip-full rpm zip
|
||||||
|
|
||||||
|
|
||||||
@ -58,10 +60,6 @@ Prerequisites to build autoexe DoliWamp package:
|
|||||||
|
|
||||||
--------------------------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
Note:
|
|
||||||
The build directory and all its contents is absolutely not required to make Dolibarr working.
|
|
||||||
It is here only to build Dolibarr packages, and those generated packages will not contains this "build" directory.
|
|
||||||
|
|
||||||
|
|
||||||
You can find in "build", following sub-directories:
|
You can find in "build", following sub-directories:
|
||||||
|
|
||||||
|
|||||||
15
dev/README
15
dev/README
@ -1,13 +1,14 @@
|
|||||||
README (English)
|
README (English)
|
||||||
--------------------------------
|
--------------------------------
|
||||||
This directory contains sub-directories to provide tools or
|
|
||||||
documentation for developers.
|
|
||||||
Note: All files in this directory are in VCS only and are not
|
|
||||||
provided with a standard release.
|
|
||||||
|
|
||||||
|
This directory contains sub-directories to provide tools or documentation for developers.
|
||||||
|
|
||||||
|
Note: All files in this directory are in the source repository only and are not provided with a standard release. They are useless to make Dolibarr working.
|
||||||
|
|
||||||
|
You may find a more complete documentation on Dolibarr on the wiki:
|
||||||
|
|
||||||
There is also some documentation on Dolibarr Wiki:
|
|
||||||
https://wiki.dolibarr.org/
|
https://wiki.dolibarr.org/
|
||||||
and
|
|
||||||
https://doxygen.dolibarr.org/
|
|
||||||
|
|
||||||
|
and on
|
||||||
|
|
||||||
|
https://doxygen.dolibarr.org/
|
||||||
|
|||||||
@ -6,18 +6,15 @@
|
|||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
|
||||||
This directory contains several subdirectories with entries for
|
This directory contains several subdirectories with entries for informations on Dolibarr.<br>
|
||||||
informations on Dolibarr.<br>
|
But if you are looking for other resources (downloads, documentation, addons, ...), you can find this on Internet on web following sites:<br>
|
||||||
But if you are looking for other resources (downloads, documentation, addons, ...), you can find this
|
|
||||||
on Internet on web following sites:<br>
|
|
||||||
<br>
|
|
||||||
* <a href="https://wiki.dolibarr.org">Dolibarr wiki (documentation)</a><br>
|
|
||||||
<br>
|
<br>
|
||||||
* <a href="https://www.dolibarr.org">Dolibarr portal (official website)</a><br>
|
* <a href="https://www.dolibarr.org">Dolibarr portal (official website)</a><br>
|
||||||
<br>
|
<br>
|
||||||
* <a href="https://demo.dolibarr.org">Dolibarr demo (online)</a><br>
|
* <a href="https://wiki.dolibarr.org">Dolibarr wiki (documentation)</a><br>
|
||||||
<br>
|
<br>
|
||||||
* <a href="https://www.nltechno.com/pages/dolibarrwinbin.php">DoliWamp, the Dolibarr for Windows</a><br>
|
* <a href="https://demo.dolibarr.org">Dolibarr demo (online)</a><br>
|
||||||
<br>
|
<br>
|
||||||
* <a href="https://www.dolistore.com">DoliStore (official addons/plugins market place)</a><br>
|
* <a href="https://www.dolistore.com">DoliStore (official addons/plugins market place)</a><br>
|
||||||
|
|
||||||
|
|||||||
@ -32,7 +32,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/html.formaccounting.class.php';
|
|||||||
$error = 0;
|
$error = 0;
|
||||||
|
|
||||||
// Load translation files required by the page
|
// Load translation files required by the page
|
||||||
$langs->loadLangs(array("bills", "accountancy"));
|
$langs->loadLangs(array("bills", "accountancy", "compta"));
|
||||||
|
|
||||||
$mesg = '';
|
$mesg = '';
|
||||||
$action = GETPOST('action', 'aZ09');
|
$action = GETPOST('action', 'aZ09');
|
||||||
@ -41,7 +41,9 @@ $id = GETPOST('id', 'int');
|
|||||||
$ref = GETPOST('ref', 'alpha');
|
$ref = GETPOST('ref', 'alpha');
|
||||||
$rowid = GETPOST('rowid', 'int');
|
$rowid = GETPOST('rowid', 'int');
|
||||||
$cancel = GETPOST('cancel', 'alpha');
|
$cancel = GETPOST('cancel', 'alpha');
|
||||||
$accountingaccount = GETPOST('accountingaccount', 'alpha');
|
|
||||||
|
$account_number = GETPOST('account_number', 'string');
|
||||||
|
$label = GETPOST('label', 'alpha');
|
||||||
|
|
||||||
// Security check
|
// Security check
|
||||||
if ($user->socid > 0) accessforbidden();
|
if ($user->socid > 0) accessforbidden();
|
||||||
@ -65,104 +67,118 @@ if (GETPOST('cancel', 'alpha'))
|
|||||||
if ($action == 'add' && $user->rights->accounting->chartofaccount)
|
if ($action == 'add' && $user->rights->accounting->chartofaccount)
|
||||||
{
|
{
|
||||||
if (!$cancel) {
|
if (!$cancel) {
|
||||||
$sql = 'SELECT pcg_version FROM '.MAIN_DB_PREFIX.'accounting_system WHERE rowid='.$conf->global->CHARTOFACCOUNTS;
|
if (!$account_number)
|
||||||
|
|
||||||
dol_syslog('accountancy/admin/card.php:: $sql='.$sql);
|
|
||||||
$result = $db->query($sql);
|
|
||||||
$obj = $db->fetch_object($result);
|
|
||||||
|
|
||||||
// Clean code
|
|
||||||
|
|
||||||
// To manage zero or not at the end of the accounting account
|
|
||||||
if ($conf->global->ACCOUNTING_MANAGE_ZERO == 1)
|
|
||||||
{
|
{
|
||||||
$account_number = GETPOST('account_number', 'string');
|
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("AccountNumber")), null, 'errors');
|
||||||
|
$action = 'create';
|
||||||
|
} elseif (!$label)
|
||||||
|
{
|
||||||
|
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("Label")), null, 'errors');
|
||||||
|
$action = 'create';
|
||||||
} else {
|
} else {
|
||||||
$account_number = clean_account(GETPOST('account_number', 'string'));
|
$sql = 'SELECT pcg_version FROM ' . MAIN_DB_PREFIX . 'accounting_system WHERE rowid=' . $conf->global->CHARTOFACCOUNTS;
|
||||||
}
|
|
||||||
|
|
||||||
if (GETPOST('account_parent', 'int') <= 0)
|
dol_syslog('accountancy/admin/card.php:: $sql=' . $sql);
|
||||||
{
|
$result = $db->query($sql);
|
||||||
$account_parent = 0;
|
$obj = $db->fetch_object($result);
|
||||||
} else {
|
|
||||||
$account_parent = GETPOST('account_parent', 'int');
|
|
||||||
}
|
|
||||||
|
|
||||||
$object->fk_pcg_version = $obj->pcg_version;
|
// Clean code
|
||||||
$object->pcg_type = GETPOST('pcg_type', 'alpha');
|
|
||||||
$object->account_number = $account_number;
|
|
||||||
$object->account_parent = $account_parent;
|
|
||||||
$object->account_category = GETPOST('account_category', 'alpha');
|
|
||||||
$object->label = GETPOST('label', 'alpha');
|
|
||||||
$object->labelshort = GETPOST('labelshort', 'alpha');
|
|
||||||
$object->active = 1;
|
|
||||||
|
|
||||||
$res = $object->create($user);
|
// To manage zero or not at the end of the accounting account
|
||||||
if ($res == - 3) {
|
if ($conf->global->ACCOUNTING_MANAGE_ZERO == 1) {
|
||||||
$error = 1;
|
$account_number = $account_number;
|
||||||
$action = "create";
|
} else {
|
||||||
setEventMessages($object->error, $object->errors, 'errors');
|
$account_number = clean_account($account_number);
|
||||||
} elseif ($res == - 4) {
|
}
|
||||||
$error = 2;
|
|
||||||
$action = "create";
|
if (GETPOST('account_parent', 'int') <= 0) {
|
||||||
setEventMessages($object->error, $object->errors, 'errors');
|
$account_parent = 0;
|
||||||
} elseif ($res < 0)
|
} else {
|
||||||
{
|
$account_parent = GETPOST('account_parent', 'int');
|
||||||
$error++;
|
}
|
||||||
setEventMessages($object->error, $object->errors, 'errors');
|
|
||||||
$action = "create";
|
$object->fk_pcg_version = $obj->pcg_version;
|
||||||
}
|
$object->pcg_type = GETPOST('pcg_type', 'alpha');
|
||||||
if (!$error)
|
$object->account_number = $account_number;
|
||||||
{
|
$object->account_parent = $account_parent;
|
||||||
setEventMessages("RecordCreatedSuccessfully", null, 'mesgs');
|
$object->account_category = GETPOST('account_category', 'alpha');
|
||||||
$urltogo = $backtopage ? $backtopage : dol_buildpath('/accountancy/admin/account.php', 1);
|
$object->label = $label;
|
||||||
header("Location: ".$urltogo);
|
$object->labelshort = GETPOST('labelshort', 'alpha');
|
||||||
exit;
|
$object->active = 1;
|
||||||
|
|
||||||
|
$res = $object->create($user);
|
||||||
|
if ($res == -3) {
|
||||||
|
$error = 1;
|
||||||
|
$action = "create";
|
||||||
|
setEventMessages($object->error, $object->errors, 'errors');
|
||||||
|
} elseif ($res == -4) {
|
||||||
|
$error = 2;
|
||||||
|
$action = "create";
|
||||||
|
setEventMessages($object->error, $object->errors, 'errors');
|
||||||
|
} elseif ($res < 0) {
|
||||||
|
$error++;
|
||||||
|
setEventMessages($object->error, $object->errors, 'errors');
|
||||||
|
$action = "create";
|
||||||
|
}
|
||||||
|
if (!$error) {
|
||||||
|
setEventMessages("RecordCreatedSuccessfully", null, 'mesgs');
|
||||||
|
$urltogo = $backtopage ? $backtopage : dol_buildpath('/accountancy/admin/account.php', 1);
|
||||||
|
header("Location: " . $urltogo);
|
||||||
|
exit;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} elseif ($action == 'edit' && $user->rights->accounting->chartofaccount) {
|
} elseif ($action == 'edit' && $user->rights->accounting->chartofaccount) {
|
||||||
if (!$cancel) {
|
if (!$cancel) {
|
||||||
$result = $object->fetch($id);
|
if (!$account_number)
|
||||||
|
|
||||||
$sql = 'SELECT pcg_version FROM '.MAIN_DB_PREFIX.'accounting_system WHERE rowid='.$conf->global->CHARTOFACCOUNTS;
|
|
||||||
|
|
||||||
dol_syslog('accountancy/admin/card.php:: $sql='.$sql);
|
|
||||||
$result2 = $db->query($sql);
|
|
||||||
$obj = $db->fetch_object($result2);
|
|
||||||
|
|
||||||
// Clean code
|
|
||||||
|
|
||||||
// To manage zero or not at the end of the accounting account
|
|
||||||
if ($conf->global->ACCOUNTING_MANAGE_ZERO == 1)
|
|
||||||
{
|
{
|
||||||
$account_number = GETPOST('account_number', 'string');
|
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("AccountNumber")), null, 'errors');
|
||||||
} else {
|
$action = 'update';
|
||||||
$account_number = clean_account(GETPOST('account_number', 'string'));
|
} elseif (!$label)
|
||||||
}
|
|
||||||
|
|
||||||
if (GETPOST('account_parent', 'int') <= 0)
|
|
||||||
{
|
{
|
||||||
$account_parent = 0;
|
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("Label")), null, 'errors');
|
||||||
|
$action = 'update';
|
||||||
} else {
|
} else {
|
||||||
$account_parent = GETPOST('account_parent', 'int');
|
$result = $object->fetch($id);
|
||||||
}
|
|
||||||
|
|
||||||
$object->fk_pcg_version = $obj->pcg_version;
|
$sql = 'SELECT pcg_version FROM ' . MAIN_DB_PREFIX . 'accounting_system WHERE rowid=' . $conf->global->CHARTOFACCOUNTS;
|
||||||
$object->pcg_type = GETPOST('pcg_type', 'alpha');
|
|
||||||
$object->account_number = $account_number;
|
|
||||||
$object->account_parent = $account_parent;
|
|
||||||
$object->account_category = GETPOST('account_category', 'alpha');
|
|
||||||
$object->label = GETPOST('label', 'alpha');
|
|
||||||
$object->labelshort = GETPOST('labelshort', 'alpha');
|
|
||||||
|
|
||||||
$result = $object->update($user);
|
dol_syslog('accountancy/admin/card.php:: $sql=' . $sql);
|
||||||
|
$result2 = $db->query($sql);
|
||||||
|
$obj = $db->fetch_object($result2);
|
||||||
|
|
||||||
if ($result > 0) {
|
// Clean code
|
||||||
$urltogo = $backtopage ? $backtopage : ($_SERVER["PHP_SELF"]."?id=".$id);
|
|
||||||
header("Location: ".$urltogo);
|
// To manage zero or not at the end of the accounting account
|
||||||
exit();
|
if ($conf->global->ACCOUNTING_MANAGE_ZERO == 1) {
|
||||||
} else {
|
$account_number = $account_number;
|
||||||
$mesg = $object->error;
|
} else {
|
||||||
|
$account_number = clean_account($account_number);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (GETPOST('account_parent', 'int') <= 0) {
|
||||||
|
$account_parent = 0;
|
||||||
|
} else {
|
||||||
|
$account_parent = GETPOST('account_parent', 'int');
|
||||||
|
}
|
||||||
|
|
||||||
|
$object->fk_pcg_version = $obj->pcg_version;
|
||||||
|
$object->pcg_type = GETPOST('pcg_type', 'alpha');
|
||||||
|
$object->account_number = $account_number;
|
||||||
|
$object->account_parent = $account_parent;
|
||||||
|
$object->account_category = GETPOST('account_category', 'alpha');
|
||||||
|
$object->label = $label;
|
||||||
|
$object->labelshort = GETPOST('labelshort', 'alpha');
|
||||||
|
|
||||||
|
$result = $object->update($user);
|
||||||
|
|
||||||
|
if ($result > 0) {
|
||||||
|
$urltogo = $backtopage ? $backtopage : ($_SERVER["PHP_SELF"] . "?id=" . $id);
|
||||||
|
header("Location: " . $urltogo);
|
||||||
|
exit();
|
||||||
|
} else {
|
||||||
|
$mesg = $object->error;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$urltogo = $backtopage ? $backtopage : ($_SERVER["PHP_SELF"]."?id=".$id);
|
$urltogo = $backtopage ? $backtopage : ($_SERVER["PHP_SELF"]."?id=".$id);
|
||||||
@ -222,7 +238,7 @@ if ($action == 'create') {
|
|||||||
|
|
||||||
// Account number
|
// Account number
|
||||||
print '<tr><td class="titlefieldcreate"><span class="fieldrequired">'.$langs->trans("AccountNumber").'</span></td>';
|
print '<tr><td class="titlefieldcreate"><span class="fieldrequired">'.$langs->trans("AccountNumber").'</span></td>';
|
||||||
print '<td><input name="account_number" size="30" value="'.$accountingaccount.'"></td></tr>';
|
print '<td><input name="account_number" size="30" value="'.$account_number.'"></td></tr>';
|
||||||
|
|
||||||
// Label
|
// Label
|
||||||
print '<tr><td><span class="fieldrequired">'.$langs->trans("Label").'</span></td>';
|
print '<tr><td><span class="fieldrequired">'.$langs->trans("Label").'</span></td>';
|
||||||
|
|||||||
@ -37,7 +37,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/html.formaccounting.class.php';
|
|||||||
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php';
|
||||||
|
|
||||||
// Load translation files required by the page
|
// Load translation files required by the page
|
||||||
$langs->loadLangs(array("accountancy"));
|
$langs->loadLangs(array("accountancy", "compta"));
|
||||||
|
|
||||||
$page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int');
|
$page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int');
|
||||||
$sortorder = GETPOST("sortorder", 'alpha');
|
$sortorder = GETPOST("sortorder", 'alpha');
|
||||||
@ -88,6 +88,7 @@ if (empty($search_date_start) && !GETPOSTISSET('formfilteraction'))
|
|||||||
} else {
|
} else {
|
||||||
$month_start = ($conf->global->SOCIETE_FISCAL_MONTH_START ? ($conf->global->SOCIETE_FISCAL_MONTH_START) : 1);
|
$month_start = ($conf->global->SOCIETE_FISCAL_MONTH_START ? ($conf->global->SOCIETE_FISCAL_MONTH_START) : 1);
|
||||||
$year_start = dol_print_date(dol_now(), '%Y');
|
$year_start = dol_print_date(dol_now(), '%Y');
|
||||||
|
if (dol_print_date(dol_now(), '%m') < $month_start) $year_start--; // If current month is lower that starting fiscal month, we start last year
|
||||||
$year_end = $year_start + 1;
|
$year_end = $year_start + 1;
|
||||||
$month_end = $month_start - 1;
|
$month_end = $month_start - 1;
|
||||||
if ($month_end < 1)
|
if ($month_end < 1)
|
||||||
@ -322,7 +323,9 @@ if ($action != 'export_csv')
|
|||||||
$root_account_number = $tmparrayforrootaccount['account_number'];
|
$root_account_number = $tmparrayforrootaccount['account_number'];
|
||||||
|
|
||||||
if (empty($accountingaccountstatic->label) && $accountingaccountstatic->id > 0) {
|
if (empty($accountingaccountstatic->label) && $accountingaccountstatic->id > 0) {
|
||||||
$link = '<a href="'.DOL_URL_ROOT.'/accountancy/admin/card.php?action=update&token='.newToken().'&id='.$accountingaccountstatic->id.'">'.img_edit().'</a>';
|
$link = '<a class="editfielda reposition" href="' . DOL_URL_ROOT . '/accountancy/admin/card.php?action=update&token=' . newToken() . '&id=' . $accountingaccountstatic->id . '">' . img_edit() . '</a>';
|
||||||
|
} elseif (empty($tmparrayforrootaccount['label'])) {
|
||||||
|
$link = '<a href="' . DOL_URL_ROOT . '/accountancy/admin/card.php?action=create&token=' . newToken() . '&accountingaccount=' . length_accountg($line->numero_compte) . '">' . img_edit_add() . '</a>';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!empty($show_subgroup))
|
if (!empty($show_subgroup))
|
||||||
|
|||||||
@ -36,7 +36,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
|
|||||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php';
|
||||||
|
|
||||||
// Load translation files required by the page
|
// Load translation files required by the page
|
||||||
$langs->loadLangs(array("accountancy"));
|
$langs->loadLangs(array("accountancy", "compta"));
|
||||||
|
|
||||||
$socid = GETPOST('socid', 'int');
|
$socid = GETPOST('socid', 'int');
|
||||||
|
|
||||||
@ -661,7 +661,7 @@ if (empty($reshook)) {
|
|||||||
}
|
}
|
||||||
$newcardbutton .= '<span class="valignmiddle marginrightonly">'.$langs->trans("IncludeDocsAlreadyExported").'</span>';
|
$newcardbutton .= '<span class="valignmiddle marginrightonly">'.$langs->trans("IncludeDocsAlreadyExported").'</span>';
|
||||||
|
|
||||||
$newcardbutton .= dolGetButtonTitle($buttonLabel, $langs->trans("ExportFilteredList").' ('.$listofformat[$formatexportset].')', 'fa fa-file-export paddingleft', $_SERVER["PHP_SELF"].'?action=export_file'.($param ? '&'.$param : ''), $user->rights->accounting->mouvements->export);
|
if (!empty($user->rights->accounting->mouvements->export)) $newcardbutton .= dolGetButtonTitle($buttonLabel, $langs->trans("ExportFilteredList").' ('.$listofformat[$formatexportset].')', 'fa fa-file-export paddingleft', $_SERVER["PHP_SELF"].'?action=export_file'.($param ? '&'.$param : ''), $user->rights->accounting->mouvements->export);
|
||||||
|
|
||||||
$newcardbutton .= dolGetButtonTitle($langs->trans('ViewFlatList'), '', 'fa fa-list paddingleft imgforviewmode', DOL_URL_ROOT.'/accountancy/bookkeeping/list.php?'.$param, '', 1, array('morecss' => 'marginleftonly btnTitleSelected'));
|
$newcardbutton .= dolGetButtonTitle($langs->trans('ViewFlatList'), '', 'fa fa-list paddingleft imgforviewmode', DOL_URL_ROOT.'/accountancy/bookkeeping/list.php?'.$param, '', 1, array('morecss' => 'marginleftonly btnTitleSelected'));
|
||||||
$newcardbutton .= dolGetButtonTitle($langs->trans('GroupByAccountAccounting'), '', 'fa fa-stream paddingleft imgforviewmode', DOL_URL_ROOT.'/accountancy/bookkeeping/listbyaccount.php?'.$param, '', 1, array('morecss' => 'marginleftonly'));
|
$newcardbutton .= dolGetButtonTitle($langs->trans('GroupByAccountAccounting'), '', 'fa fa-stream paddingleft imgforviewmode', DOL_URL_ROOT.'/accountancy/bookkeeping/listbyaccount.php?'.$param, '', 1, array('morecss' => 'marginleftonly'));
|
||||||
|
|||||||
@ -48,6 +48,14 @@ $search_date_endday = GETPOST('search_date_endday', 'int');
|
|||||||
$search_date_start = dol_mktime(0, 0, 0, $search_date_startmonth, $search_date_startday, $search_date_startyear);
|
$search_date_start = dol_mktime(0, 0, 0, $search_date_startmonth, $search_date_startday, $search_date_startyear);
|
||||||
$search_date_end = dol_mktime(0, 0, 0, $search_date_endmonth, $search_date_endday, $search_date_endyear);
|
$search_date_end = dol_mktime(0, 0, 0, $search_date_endmonth, $search_date_endday, $search_date_endyear);
|
||||||
$search_doc_date = dol_mktime(0, 0, 0, GETPOST('doc_datemonth', 'int'), GETPOST('doc_dateday', 'int'), GETPOST('doc_dateyear', 'int'));
|
$search_doc_date = dol_mktime(0, 0, 0, GETPOST('doc_datemonth', 'int'), GETPOST('doc_dateday', 'int'), GETPOST('doc_dateyear', 'int'));
|
||||||
|
$search_date_export_startyear = GETPOST('search_date_export_startyear', 'int');
|
||||||
|
$search_date_export_startmonth = GETPOST('search_date_export_startmonth', 'int');
|
||||||
|
$search_date_export_startday = GETPOST('search_date_export_startday', 'int');
|
||||||
|
$search_date_export_endyear = GETPOST('search_date_export_endyear', 'int');
|
||||||
|
$search_date_export_endmonth = GETPOST('search_date_export_endmonth', 'int');
|
||||||
|
$search_date_export_endday = GETPOST('search_date_export_endday', 'int');
|
||||||
|
$search_date_export_start = dol_mktime(0, 0, 0, $search_date_export_startmonth, $search_date_export_startday, $search_date_export_startyear);
|
||||||
|
$search_date_export_end = dol_mktime(0, 0, 0, $search_date_export_endmonth, $search_date_export_endday, $search_date_export_endyear);
|
||||||
|
|
||||||
$search_accountancy_code = GETPOST("search_accountancy_code");
|
$search_accountancy_code = GETPOST("search_accountancy_code");
|
||||||
$search_accountancy_code_start = GETPOST('search_accountancy_code_start', 'alpha');
|
$search_accountancy_code_start = GETPOST('search_accountancy_code_start', 'alpha');
|
||||||
@ -128,6 +136,7 @@ $arrayfields = array(
|
|||||||
't.debit'=>array('label'=>$langs->trans("Debit"), 'checked'=>1),
|
't.debit'=>array('label'=>$langs->trans("Debit"), 'checked'=>1),
|
||||||
't.credit'=>array('label'=>$langs->trans("Credit"), 'checked'=>1),
|
't.credit'=>array('label'=>$langs->trans("Credit"), 'checked'=>1),
|
||||||
't.lettering_code'=>array('label'=>$langs->trans("LetteringCode"), 'checked'=>1),
|
't.lettering_code'=>array('label'=>$langs->trans("LetteringCode"), 'checked'=>1),
|
||||||
|
't.date_export'=>array('label'=>$langs->trans("DateExport"), 'checked'=>1),
|
||||||
);
|
);
|
||||||
|
|
||||||
if (empty($conf->global->ACCOUNTING_ENABLE_LETTERING)) unset($arrayfields['t.lettering_code']);
|
if (empty($conf->global->ACCOUNTING_ENABLE_LETTERING)) unset($arrayfields['t.lettering_code']);
|
||||||
@ -181,6 +190,14 @@ if (empty($reshook))
|
|||||||
$search_date_endyear = '';
|
$search_date_endyear = '';
|
||||||
$search_date_endmonth = '';
|
$search_date_endmonth = '';
|
||||||
$search_date_endday = '';
|
$search_date_endday = '';
|
||||||
|
$search_date_export_start = '';
|
||||||
|
$search_date_export_end = '';
|
||||||
|
$search_date_export_startyear = '';
|
||||||
|
$search_date_export_startmonth = '';
|
||||||
|
$search_date_export_startday = '';
|
||||||
|
$search_date_export_endyear = '';
|
||||||
|
$search_date_export_endmonth = '';
|
||||||
|
$search_date_export_endday = '';
|
||||||
$search_debit = '';
|
$search_debit = '';
|
||||||
$search_credit = '';
|
$search_credit = '';
|
||||||
$search_lettering_code = '';
|
$search_lettering_code = '';
|
||||||
@ -253,6 +270,14 @@ if (empty($reshook))
|
|||||||
$filter['t.reconciled_option'] = $search_not_reconciled;
|
$filter['t.reconciled_option'] = $search_not_reconciled;
|
||||||
$param .= '&search_not_reconciled='.urlencode($search_not_reconciled);
|
$param .= '&search_not_reconciled='.urlencode($search_not_reconciled);
|
||||||
}
|
}
|
||||||
|
if (!empty($search_date_export_start)) {
|
||||||
|
$filter['t.date_export>='] = $search_date_export_start;
|
||||||
|
$param .= '&search_date_export_startmonth='.$search_date_export_startmonth.'&search_date_export_startday='.$search_date_export_startday.'&search_date_export_startyear='.$search_date_export_startyear;
|
||||||
|
}
|
||||||
|
if (!empty($search_date_export_end)) {
|
||||||
|
$filter['t.date_export<='] = $search_date_export_end;
|
||||||
|
$param .= '&search_date_export_endmonth='.$search_date_export_endmonth.'&search_date_export_endday='.$search_date_export_endday.'&search_date_export_endyear='.$search_date_export_endyear;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($action == 'delbookkeeping' && $user->rights->accounting->mouvements->supprimer) {
|
if ($action == 'delbookkeeping' && $user->rights->accounting->mouvements->supprimer) {
|
||||||
@ -494,6 +519,17 @@ if (!empty($arrayfields['t.lettering_code']['checked']))
|
|||||||
print '<br><span class="nowrap"><input type="checkbox" name="search_reconciled_option" value="notreconciled"'.($search_not_reconciled == 'notreconciled' ? ' checked' : '').'>'.$langs->trans("NotReconciled").'</span>';
|
print '<br><span class="nowrap"><input type="checkbox" name="search_reconciled_option" value="notreconciled"'.($search_not_reconciled == 'notreconciled' ? ' checked' : '').'>'.$langs->trans("NotReconciled").'</span>';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
|
// Date export
|
||||||
|
if (!empty($arrayfields['t.date_export']['checked'])) {
|
||||||
|
print '<td class="liste_titre center">';
|
||||||
|
print '<div class="nowrap">';
|
||||||
|
print $form->selectDate($search_date_export_start, 'search_date_export_start', 0, 0, 1, '', 1, 0, 0, '', '', '', '', 1, '', $langs->trans("From"));
|
||||||
|
print '</div>';
|
||||||
|
print '<div class="nowrap">';
|
||||||
|
print $form->selectDate($search_date_export_end, 'search_date_export_end', 0, 0, 1, '', 1, 0, 0, '', '', '', '', 1, '', $langs->trans("to"));
|
||||||
|
print '</div>';
|
||||||
|
print '</td>';
|
||||||
|
}
|
||||||
|
|
||||||
// Fields from hook
|
// Fields from hook
|
||||||
$parameters = array('arrayfields'=>$arrayfields);
|
$parameters = array('arrayfields'=>$arrayfields);
|
||||||
@ -516,6 +552,7 @@ if (!empty($arrayfields['t.label_operation']['checked'])) print_liste_field_tit
|
|||||||
if (!empty($arrayfields['t.debit']['checked'])) print_liste_field_titre($arrayfields['t.debit']['label'], $_SERVER['PHP_SELF'], "t.debit", "", $param, '', $sortfield, $sortorder, 'right ');
|
if (!empty($arrayfields['t.debit']['checked'])) print_liste_field_titre($arrayfields['t.debit']['label'], $_SERVER['PHP_SELF'], "t.debit", "", $param, '', $sortfield, $sortorder, 'right ');
|
||||||
if (!empty($arrayfields['t.credit']['checked'])) print_liste_field_titre($arrayfields['t.credit']['label'], $_SERVER['PHP_SELF'], "t.credit", "", $param, '', $sortfield, $sortorder, 'right ');
|
if (!empty($arrayfields['t.credit']['checked'])) print_liste_field_titre($arrayfields['t.credit']['label'], $_SERVER['PHP_SELF'], "t.credit", "", $param, '', $sortfield, $sortorder, 'right ');
|
||||||
if (!empty($arrayfields['t.lettering_code']['checked'])) print_liste_field_titre($arrayfields['t.lettering_code']['label'], $_SERVER['PHP_SELF'], "t.lettering_code", "", $param, '', $sortfield, $sortorder, 'center ');
|
if (!empty($arrayfields['t.lettering_code']['checked'])) print_liste_field_titre($arrayfields['t.lettering_code']['label'], $_SERVER['PHP_SELF'], "t.lettering_code", "", $param, '', $sortfield, $sortorder, 'center ');
|
||||||
|
if (!empty($arrayfields['t.date_export']['checked'])) print_liste_field_titre($arrayfields['t.date_export']['label'], $_SERVER['PHP_SELF'], "t.date_export", "", $param, '', $sortfield, $sortorder, 'center ');
|
||||||
// Hook fields
|
// Hook fields
|
||||||
$parameters = array('arrayfields'=>$arrayfields, 'param'=>$param, 'sortfield'=>$sortfield, 'sortorder'=>$sortorder);
|
$parameters = array('arrayfields'=>$arrayfields, 'param'=>$param, 'sortfield'=>$sortfield, 'sortorder'=>$sortorder);
|
||||||
$reshook = $hookmanager->executeHooks('printFieldListTitle', $parameters); // Note that $action and $object may have been modified by hook
|
$reshook = $hookmanager->executeHooks('printFieldListTitle', $parameters); // Note that $action and $object may have been modified by hook
|
||||||
@ -546,13 +583,12 @@ while ($i < min($num, $limit))
|
|||||||
|
|
||||||
// Is it a break ?
|
// Is it a break ?
|
||||||
if ($accountg != $displayed_account_number || !isset($displayed_account_number)) {
|
if ($accountg != $displayed_account_number || !isset($displayed_account_number)) {
|
||||||
if (empty($conf->global->ACCOUNTING_ENABLE_LETTERING) || empty($arrayfields['t.lettering_code']['checked'])) {
|
$colnumber = 5;
|
||||||
$colnumber = 3;
|
$colnumberend = 7;
|
||||||
$colnumberend = 7;
|
|
||||||
} else {
|
if (empty($conf->global->ACCOUNTING_ENABLE_LETTERING) || empty($arrayfields['t.lettering_code']['checked'])) $colnumber--;
|
||||||
$colnumber = 4;
|
if (empty($arrayfields['t.date_export']['checked'])) $colnumber--;
|
||||||
$colnumberend = 7;
|
|
||||||
}
|
|
||||||
$colspan = $totalarray['nbfield'] - $colnumber;
|
$colspan = $totalarray['nbfield'] - $colnumber;
|
||||||
$colspanend = $totalarray['nbfield'] - $colnumberend;
|
$colspanend = $totalarray['nbfield'] - $colnumberend;
|
||||||
// Show a subtotal by accounting account
|
// Show a subtotal by accounting account
|
||||||
@ -585,7 +621,7 @@ while ($i < min($num, $limit))
|
|||||||
|
|
||||||
// Show the break account
|
// Show the break account
|
||||||
print "<tr>";
|
print "<tr>";
|
||||||
print '<td colspan="'.($totalarray['nbfield'] ? $totalarray['nbfield'] : 9).'" style="font-weight:bold; border-bottom: 1pt solid black;">';
|
print '<td colspan="'.($totalarray['nbfield'] ? $totalarray['nbfield'] : 10).'" style="font-weight:bold; border-bottom: 1pt solid black;">';
|
||||||
if ($line->numero_compte != "" && $line->numero_compte != '-1') print length_accountg($line->numero_compte).' : '.$object->get_compte_desc($line->numero_compte);
|
if ($line->numero_compte != "" && $line->numero_compte != '-1') print length_accountg($line->numero_compte).' : '.$object->get_compte_desc($line->numero_compte);
|
||||||
else print '<span class="error">'.$langs->trans("Unknown").'</span>';
|
else print '<span class="error">'.$langs->trans("Unknown").'</span>';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
@ -735,6 +771,13 @@ while ($i < min($num, $limit))
|
|||||||
if (!$i) $totalarray['nbfield']++;
|
if (!$i) $totalarray['nbfield']++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Exported operation date
|
||||||
|
if (!empty($arrayfields['t.date_export']['checked']))
|
||||||
|
{
|
||||||
|
print '<td class="center">'.dol_print_date($line->date_export, 'dayhour').'</td>';
|
||||||
|
if (!$i) $totalarray['nbfield']++;
|
||||||
|
}
|
||||||
|
|
||||||
// Fields from hook
|
// Fields from hook
|
||||||
$parameters = array('arrayfields'=>$arrayfields, 'obj'=>$obj);
|
$parameters = array('arrayfields'=>$arrayfields, 'obj'=>$obj);
|
||||||
$reshook = $hookmanager->executeHooks('printFieldListValue', $parameters); // Note that $action and $object may have been modified by hook
|
$reshook = $hookmanager->executeHooks('printFieldListValue', $parameters); // Note that $action and $object may have been modified by hook
|
||||||
@ -763,14 +806,6 @@ while ($i < min($num, $limit))
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($num > 0) {
|
if ($num > 0) {
|
||||||
// Show sub-total of last shown account
|
|
||||||
if (empty($conf->global->ACCOUNTING_ENABLE_LETTERING) || empty($arrayfields['t.lettering_code']['checked'])) {
|
|
||||||
$colnumber = 3;
|
|
||||||
$colnumberend = 7;
|
|
||||||
} else {
|
|
||||||
$colnumber = 4;
|
|
||||||
$colnumberend = 7;
|
|
||||||
}
|
|
||||||
$colspan = $totalarray['nbfield'] - $colnumber;
|
$colspan = $totalarray['nbfield'] - $colnumber;
|
||||||
$colspanend = $totalarray['nbfield'] - $colnumberend;
|
$colspanend = $totalarray['nbfield'] - $colnumberend;
|
||||||
print '<tr class="liste_total">';
|
print '<tr class="liste_total">';
|
||||||
|
|||||||
@ -48,6 +48,14 @@ $search_date_endday = GETPOST('search_date_endday', 'int');
|
|||||||
$search_date_start = dol_mktime(0, 0, 0, $search_date_startmonth, $search_date_startday, $search_date_startyear);
|
$search_date_start = dol_mktime(0, 0, 0, $search_date_startmonth, $search_date_startday, $search_date_startyear);
|
||||||
$search_date_end = dol_mktime(0, 0, 0, $search_date_endmonth, $search_date_endday, $search_date_endyear);
|
$search_date_end = dol_mktime(0, 0, 0, $search_date_endmonth, $search_date_endday, $search_date_endyear);
|
||||||
$search_doc_date = dol_mktime(0, 0, 0, GETPOST('doc_datemonth', 'int'), GETPOST('doc_dateday', 'int'), GETPOST('doc_dateyear', 'int'));
|
$search_doc_date = dol_mktime(0, 0, 0, GETPOST('doc_datemonth', 'int'), GETPOST('doc_dateday', 'int'), GETPOST('doc_dateyear', 'int'));
|
||||||
|
$search_date_export_startyear = GETPOST('search_date_export_startyear', 'int');
|
||||||
|
$search_date_export_startmonth = GETPOST('search_date_export_startmonth', 'int');
|
||||||
|
$search_date_export_startday = GETPOST('search_date_export_startday', 'int');
|
||||||
|
$search_date_export_endyear = GETPOST('search_date_export_endyear', 'int');
|
||||||
|
$search_date_export_endmonth = GETPOST('search_date_export_endmonth', 'int');
|
||||||
|
$search_date_export_endday = GETPOST('search_date_export_endday', 'int');
|
||||||
|
$search_date_export_start = dol_mktime(0, 0, 0, $search_date_export_startmonth, $search_date_export_startday, $search_date_export_startyear);
|
||||||
|
$search_date_export_end = dol_mktime(0, 0, 0, $search_date_export_endmonth, $search_date_export_endday, $search_date_export_endyear);
|
||||||
|
|
||||||
$search_accountancy_code = GETPOST("search_accountancy_code");
|
$search_accountancy_code = GETPOST("search_accountancy_code");
|
||||||
$search_accountancy_code_start = GETPOST('search_accountancy_code_start', 'alpha');
|
$search_accountancy_code_start = GETPOST('search_accountancy_code_start', 'alpha');
|
||||||
@ -135,6 +143,7 @@ $arrayfields = array(
|
|||||||
't.debit'=>array('label'=>$langs->trans("Debit"), 'checked'=>1),
|
't.debit'=>array('label'=>$langs->trans("Debit"), 'checked'=>1),
|
||||||
't.credit'=>array('label'=>$langs->trans("Credit"), 'checked'=>1),
|
't.credit'=>array('label'=>$langs->trans("Credit"), 'checked'=>1),
|
||||||
't.lettering_code'=>array('label'=>$langs->trans("LetteringCode"), 'checked'=>1),
|
't.lettering_code'=>array('label'=>$langs->trans("LetteringCode"), 'checked'=>1),
|
||||||
|
't.date_export'=>array('label'=>$langs->trans("DateExport"), 'checked'=>1),
|
||||||
);
|
);
|
||||||
|
|
||||||
if (empty($conf->global->ACCOUNTING_ENABLE_LETTERING)) {
|
if (empty($conf->global->ACCOUNTING_ENABLE_LETTERING)) {
|
||||||
@ -193,6 +202,14 @@ if (empty($reshook)) {
|
|||||||
$search_date_endyear = '';
|
$search_date_endyear = '';
|
||||||
$search_date_endmonth = '';
|
$search_date_endmonth = '';
|
||||||
$search_date_endday = '';
|
$search_date_endday = '';
|
||||||
|
$search_date_export_start = '';
|
||||||
|
$search_date_export_end = '';
|
||||||
|
$search_date_export_startyear = '';
|
||||||
|
$search_date_export_startmonth = '';
|
||||||
|
$search_date_export_startday = '';
|
||||||
|
$search_date_export_endyear = '';
|
||||||
|
$search_date_export_endmonth = '';
|
||||||
|
$search_date_export_endday = '';
|
||||||
$search_debit = '';
|
$search_debit = '';
|
||||||
$search_credit = '';
|
$search_credit = '';
|
||||||
$search_lettering_code = '';
|
$search_lettering_code = '';
|
||||||
@ -265,6 +282,14 @@ if (empty($reshook)) {
|
|||||||
$filter['t.reconciled_option'] = $search_not_reconciled;
|
$filter['t.reconciled_option'] = $search_not_reconciled;
|
||||||
$param .= '&search_not_reconciled='.urlencode($search_not_reconciled);
|
$param .= '&search_not_reconciled='.urlencode($search_not_reconciled);
|
||||||
}
|
}
|
||||||
|
if (!empty($search_date_export_start)) {
|
||||||
|
$filter['t.date_export>='] = $search_date_export_start;
|
||||||
|
$param .= '&search_date_export_startmonth='.$search_date_export_startmonth.'&search_date_export_startday='.$search_date_export_startday.'&search_date_export_startyear='.$search_date_export_startyear;
|
||||||
|
}
|
||||||
|
if (!empty($search_date_export_end)) {
|
||||||
|
$filter['t.date_export<='] = $search_date_export_end;
|
||||||
|
$param .= '&search_date_export_endmonth='.$search_date_export_endmonth.'&search_date_export_endday='.$search_date_export_endday.'&search_date_export_endyear='.$search_date_export_endyear;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($action == 'delbookkeeping' && $user->rights->accounting->mouvements->supprimer) {
|
if ($action == 'delbookkeeping' && $user->rights->accounting->mouvements->supprimer) {
|
||||||
@ -301,7 +326,7 @@ if ($action == 'delbookkeepingyearconfirm' && $user->rights->accounting->mouveme
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Make a redirect to avoid to launch the delete later after a back button
|
// Make a redirect to avoid to launch the delete later after a back button
|
||||||
header("Location: listbysubaccount.php".($param ? '?'.$param : ''));
|
header("Location: ".$_SERVER["PHP_SELF"].($param ? '?'.$param : ''));
|
||||||
exit;
|
exit;
|
||||||
} else {
|
} else {
|
||||||
setEventMessages("NoRecordDeleted", null, 'warnings');
|
setEventMessages("NoRecordDeleted", null, 'warnings');
|
||||||
@ -318,7 +343,7 @@ if ($action == 'delmouvconfirm' && $user->rights->accounting->mouvements->suppri
|
|||||||
setEventMessages($langs->trans("RecordDeleted"), null, 'mesgs');
|
setEventMessages($langs->trans("RecordDeleted"), null, 'mesgs');
|
||||||
}
|
}
|
||||||
|
|
||||||
header("Location: listbysubaccount.php?noreset=1".($param ? '&'.$param : ''));
|
header("Location: ".$_SERVER["PHP_SELF"]."?noreset=1".($param ? '&'.$param : ''));
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -419,7 +444,6 @@ if (empty($reshook)) {
|
|||||||
$newcardbutton = dolGetButtonTitle($langs->trans('ViewFlatList'), '', 'fa fa-list paddingleft imgforviewmode', DOL_URL_ROOT.'/accountancy/bookkeeping/list.php?'.$param);
|
$newcardbutton = dolGetButtonTitle($langs->trans('ViewFlatList'), '', 'fa fa-list paddingleft imgforviewmode', DOL_URL_ROOT.'/accountancy/bookkeeping/list.php?'.$param);
|
||||||
$newcardbutton .= dolGetButtonTitle($langs->trans('GroupByAccountAccounting'), '', 'fa fa-stream paddingleft imgforviewmode', DOL_URL_ROOT.'/accountancy/bookkeeping/listbyaccount.php', '', 1, array('morecss' => 'marginleftonly'));
|
$newcardbutton .= dolGetButtonTitle($langs->trans('GroupByAccountAccounting'), '', 'fa fa-stream paddingleft imgforviewmode', DOL_URL_ROOT.'/accountancy/bookkeeping/listbyaccount.php', '', 1, array('morecss' => 'marginleftonly'));
|
||||||
$newcardbutton .= dolGetButtonTitle($langs->trans('GroupBySubAccountAccounting'), '', 'fa fa-align-left vmirror paddingleft imgforviewmode', DOL_URL_ROOT.'/accountancy/bookkeeping/listbysubaccount.php', '', 1, array('morecss' => 'marginleftonly btnTitleSelected'));
|
$newcardbutton .= dolGetButtonTitle($langs->trans('GroupBySubAccountAccounting'), '', 'fa fa-align-left vmirror paddingleft imgforviewmode', DOL_URL_ROOT.'/accountancy/bookkeeping/listbysubaccount.php', '', 1, array('morecss' => 'marginleftonly btnTitleSelected'));
|
||||||
|
|
||||||
$newcardbutton .= dolGetButtonTitle($langs->trans('NewAccountingMvt'), '', 'fa fa-plus-circle paddingleft', DOL_URL_ROOT.'/accountancy/bookkeeping/card.php?action=create');
|
$newcardbutton .= dolGetButtonTitle($langs->trans('NewAccountingMvt'), '', 'fa fa-plus-circle paddingleft', DOL_URL_ROOT.'/accountancy/bookkeeping/card.php?action=create');
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -522,6 +546,17 @@ if (!empty($arrayfields['t.lettering_code']['checked'])) {
|
|||||||
print '<br><span class="nowrap"><input type="checkbox" name="search_reconciled_option" value="notreconciled"'.($search_not_reconciled == 'notreconciled' ? ' checked' : '').'>'.$langs->trans("NotReconciled").'</span>';
|
print '<br><span class="nowrap"><input type="checkbox" name="search_reconciled_option" value="notreconciled"'.($search_not_reconciled == 'notreconciled' ? ' checked' : '').'>'.$langs->trans("NotReconciled").'</span>';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
|
// Date export
|
||||||
|
if (!empty($arrayfields['t.date_export']['checked'])) {
|
||||||
|
print '<td class="liste_titre center">';
|
||||||
|
print '<div class="nowrap">';
|
||||||
|
print $form->selectDate($search_date_export_start, 'search_date_export_start', 0, 0, 1, '', 1, 0, 0, '', '', '', '', 1, '', $langs->trans("From"));
|
||||||
|
print '</div>';
|
||||||
|
print '<div class="nowrap">';
|
||||||
|
print $form->selectDate($search_date_export_end, 'search_date_export_end', 0, 0, 1, '', 1, 0, 0, '', '', '', '', 1, '', $langs->trans("to"));
|
||||||
|
print '</div>';
|
||||||
|
print '</td>';
|
||||||
|
}
|
||||||
|
|
||||||
// Fields from hook
|
// Fields from hook
|
||||||
$parameters = array('arrayfields'=>$arrayfields);
|
$parameters = array('arrayfields'=>$arrayfields);
|
||||||
@ -560,6 +595,9 @@ if (!empty($arrayfields['t.credit']['checked'])) {
|
|||||||
if (!empty($arrayfields['t.lettering_code']['checked'])) {
|
if (!empty($arrayfields['t.lettering_code']['checked'])) {
|
||||||
print_liste_field_titre($arrayfields['t.lettering_code']['label'], $_SERVER['PHP_SELF'], "t.lettering_code", "", $param, '', $sortfield, $sortorder, 'center ');
|
print_liste_field_titre($arrayfields['t.lettering_code']['label'], $_SERVER['PHP_SELF'], "t.lettering_code", "", $param, '', $sortfield, $sortorder, 'center ');
|
||||||
}
|
}
|
||||||
|
if (!empty($arrayfields['t.date_export']['checked'])) {
|
||||||
|
print_liste_field_titre($arrayfields['t.date_export']['label'], $_SERVER['PHP_SELF'], "t.date_export", "", $param, '', $sortfield, $sortorder, 'center ');
|
||||||
|
}
|
||||||
// Hook fields
|
// Hook fields
|
||||||
$parameters = array('arrayfields'=>$arrayfields, 'param'=>$param, 'sortfield'=>$sortfield, 'sortorder'=>$sortorder);
|
$parameters = array('arrayfields'=>$arrayfields, 'param'=>$param, 'sortfield'=>$sortfield, 'sortorder'=>$sortorder);
|
||||||
$reshook = $hookmanager->executeHooks('printFieldListTitle', $parameters); // Note that $action and $object may have been modified by hook
|
$reshook = $hookmanager->executeHooks('printFieldListTitle', $parameters); // Note that $action and $object may have been modified by hook
|
||||||
@ -589,15 +627,15 @@ while ($i < min($num, $limit)) {
|
|||||||
|
|
||||||
// Is it a break ?
|
// Is it a break ?
|
||||||
if ($accountg != $displayed_account_number || !isset($displayed_account_number)) {
|
if ($accountg != $displayed_account_number || !isset($displayed_account_number)) {
|
||||||
if (empty($conf->global->ACCOUNTING_ENABLE_LETTERING) || empty($arrayfields['t.lettering_code']['checked'])) {
|
$colnumber = 5;
|
||||||
$colnumber = 3;
|
$colnumberend = 7;
|
||||||
$colnumberend = 7;
|
|
||||||
} else {
|
if (empty($conf->global->ACCOUNTING_ENABLE_LETTERING) || empty($arrayfields['t.lettering_code']['checked'])) $colnumber--;
|
||||||
$colnumber = 4;
|
if (empty($arrayfields['t.date_export']['checked'])) $colnumber--;
|
||||||
$colnumberend = 7;
|
|
||||||
}
|
$colspan = $totalarray['nbfield'] - $colnumber;
|
||||||
$colspan = $totalarray['nbfield'] - $colnumber;
|
$colspanend = $totalarray['nbfield'] - $colnumberend;
|
||||||
$colspanend = $totalarray['nbfield'] - $colnumberend;
|
|
||||||
// Show a subtotal by accounting account
|
// Show a subtotal by accounting account
|
||||||
if (isset($displayed_account_number)) {
|
if (isset($displayed_account_number)) {
|
||||||
print '<tr class="liste_total">';
|
print '<tr class="liste_total">';
|
||||||
@ -627,7 +665,7 @@ while ($i < min($num, $limit)) {
|
|||||||
|
|
||||||
// Show the break account
|
// Show the break account
|
||||||
print "<tr>";
|
print "<tr>";
|
||||||
print '<td colspan="'.($totalarray['nbfield'] ? $totalarray['nbfield'] : 9).'" style="font-weight:bold; border-bottom: 1pt solid black;">';
|
print '<td colspan="'.($totalarray['nbfield'] ? $totalarray['nbfield'] : 10).'" style="font-weight:bold; border-bottom: 1pt solid black;">';
|
||||||
if ($line->subledger_account != "" && $line->subledger_account != '-1') {
|
if ($line->subledger_account != "" && $line->subledger_account != '-1') {
|
||||||
print $object->get_compte_desc($line->numero_compte).' : '.length_accounta($line->subledger_account);
|
print $object->get_compte_desc($line->numero_compte).' : '.length_accounta($line->subledger_account);
|
||||||
} else {
|
} else {
|
||||||
@ -796,6 +834,13 @@ while ($i < min($num, $limit)) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Exported operation date
|
||||||
|
if (!empty($arrayfields['t.date_export']['checked']))
|
||||||
|
{
|
||||||
|
print '<td class="center">'.dol_print_date($line->date_export, 'dayhour').'</td>';
|
||||||
|
if (!$i) $totalarray['nbfield']++;
|
||||||
|
}
|
||||||
|
|
||||||
// Fields from hook
|
// Fields from hook
|
||||||
$parameters = array('arrayfields'=>$arrayfields, 'obj'=>$obj);
|
$parameters = array('arrayfields'=>$arrayfields, 'obj'=>$obj);
|
||||||
$reshook = $hookmanager->executeHooks('printFieldListValue', $parameters); // Note that $action and $object may have been modified by hook
|
$reshook = $hookmanager->executeHooks('printFieldListValue', $parameters); // Note that $action and $object may have been modified by hook
|
||||||
@ -826,14 +871,6 @@ while ($i < min($num, $limit)) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($num > 0) {
|
if ($num > 0) {
|
||||||
// Show sub-total of last shown account
|
|
||||||
if (empty($conf->global->ACCOUNTING_ENABLE_LETTERING) || empty($arrayfields['t.lettering_code']['checked'])) {
|
|
||||||
$colnumber = 3;
|
|
||||||
$colnumberend = 7;
|
|
||||||
} else {
|
|
||||||
$colnumber = 4;
|
|
||||||
$colnumberend = 7;
|
|
||||||
}
|
|
||||||
$colspan = $totalarray['nbfield'] - $colnumber;
|
$colspan = $totalarray['nbfield'] - $colnumber;
|
||||||
$colspanend = $totalarray['nbfield'] - $colnumberend;
|
$colspanend = $totalarray['nbfield'] - $colnumberend;
|
||||||
print '<tr class="liste_total">';
|
print '<tr class="liste_total">';
|
||||||
|
|||||||
@ -795,7 +795,7 @@ class BookKeeping extends CommonObject
|
|||||||
$sql .= " t.label_operation,";
|
$sql .= " t.label_operation,";
|
||||||
$sql .= " t.debit,";
|
$sql .= " t.debit,";
|
||||||
$sql .= " t.credit,";
|
$sql .= " t.credit,";
|
||||||
$sql .= " t.montant,";
|
$sql .= " t.montant as amount,";
|
||||||
$sql .= " t.sens,";
|
$sql .= " t.sens,";
|
||||||
$sql .= " t.multicurrency_amount,";
|
$sql .= " t.multicurrency_amount,";
|
||||||
$sql .= " t.multicurrency_code,";
|
$sql .= " t.multicurrency_code,";
|
||||||
@ -806,7 +806,8 @@ class BookKeeping extends CommonObject
|
|||||||
$sql .= " t.code_journal,";
|
$sql .= " t.code_journal,";
|
||||||
$sql .= " t.journal_label,";
|
$sql .= " t.journal_label,";
|
||||||
$sql .= " t.piece_num,";
|
$sql .= " t.piece_num,";
|
||||||
$sql .= " t.date_creation";
|
$sql .= " t.date_creation,";
|
||||||
|
$sql .= " t.date_export";
|
||||||
// Manage filter
|
// Manage filter
|
||||||
$sqlwhere = array();
|
$sqlwhere = array();
|
||||||
if (count($filter) > 0) {
|
if (count($filter) > 0) {
|
||||||
@ -823,6 +824,8 @@ class BookKeeping extends CommonObject
|
|||||||
$sqlwhere[] = $key.' LIKE \''.$this->db->escape($value).'%\'';
|
$sqlwhere[] = $key.' LIKE \''.$this->db->escape($value).'%\'';
|
||||||
} elseif ($key == 't.date_creation>=' || $key == 't.date_creation<=') {
|
} elseif ($key == 't.date_creation>=' || $key == 't.date_creation<=') {
|
||||||
$sqlwhere[] = $key.'\''.$this->db->idate($value).'\'';
|
$sqlwhere[] = $key.'\''.$this->db->idate($value).'\'';
|
||||||
|
} elseif ($key == 't.date_export>=' || $key == 't.date_export<=') {
|
||||||
|
$sqlwhere[] = $key.'\''.$this->db->idate($value).'\'';
|
||||||
} elseif ($key == 't.credit' || $key == 't.debit') {
|
} elseif ($key == 't.credit' || $key == 't.debit') {
|
||||||
$sqlwhere[] = natural_search($key, $value, 1, 1);
|
$sqlwhere[] = natural_search($key, $value, 1, 1);
|
||||||
} elseif ($key == 't.reconciled_option') {
|
} elseif ($key == 't.reconciled_option') {
|
||||||
@ -878,7 +881,8 @@ class BookKeeping extends CommonObject
|
|||||||
$line->label_operation = $obj->label_operation;
|
$line->label_operation = $obj->label_operation;
|
||||||
$line->debit = $obj->debit;
|
$line->debit = $obj->debit;
|
||||||
$line->credit = $obj->credit;
|
$line->credit = $obj->credit;
|
||||||
$line->montant = $obj->montant;
|
$line->montant = $obj->amount; // deprecated
|
||||||
|
$line->amount = $obj->amount;
|
||||||
$line->sens = $obj->sens;
|
$line->sens = $obj->sens;
|
||||||
$line->multicurrency_amount = $obj->multicurrency_amount;
|
$line->multicurrency_amount = $obj->multicurrency_amount;
|
||||||
$line->multicurrency_code = $obj->multicurrency_code;
|
$line->multicurrency_code = $obj->multicurrency_code;
|
||||||
@ -889,7 +893,8 @@ class BookKeeping extends CommonObject
|
|||||||
$line->code_journal = $obj->code_journal;
|
$line->code_journal = $obj->code_journal;
|
||||||
$line->journal_label = $obj->journal_label;
|
$line->journal_label = $obj->journal_label;
|
||||||
$line->piece_num = $obj->piece_num;
|
$line->piece_num = $obj->piece_num;
|
||||||
$line->date_creation = $obj->date_creation;
|
$line->date_creation = $this->db->jdate($obj->date_creation);
|
||||||
|
$line->date_export = $this->db->jdate($obj->date_export);
|
||||||
|
|
||||||
$this->lines[] = $line;
|
$this->lines[] = $line;
|
||||||
|
|
||||||
@ -941,7 +946,7 @@ class BookKeeping extends CommonObject
|
|||||||
$sql .= " t.credit,";
|
$sql .= " t.credit,";
|
||||||
$sql .= " t.lettering_code,";
|
$sql .= " t.lettering_code,";
|
||||||
$sql .= " t.date_lettering,";
|
$sql .= " t.date_lettering,";
|
||||||
$sql .= " t.montant,";
|
$sql .= " t.montant as amount,";
|
||||||
$sql .= " t.sens,";
|
$sql .= " t.sens,";
|
||||||
$sql .= " t.fk_user_author,";
|
$sql .= " t.fk_user_author,";
|
||||||
$sql .= " t.import_key,";
|
$sql .= " t.import_key,";
|
||||||
@ -1019,7 +1024,8 @@ class BookKeeping extends CommonObject
|
|||||||
$line->label_operation = $obj->label_operation;
|
$line->label_operation = $obj->label_operation;
|
||||||
$line->debit = $obj->debit;
|
$line->debit = $obj->debit;
|
||||||
$line->credit = $obj->credit;
|
$line->credit = $obj->credit;
|
||||||
$line->montant = $obj->montant;
|
$line->montant = $obj->amount; // deprecated
|
||||||
|
$line->amount = $obj->amount;
|
||||||
$line->sens = $obj->sens;
|
$line->sens = $obj->sens;
|
||||||
$line->lettering_code = $obj->lettering_code;
|
$line->lettering_code = $obj->lettering_code;
|
||||||
$line->date_lettering = $obj->date_lettering;
|
$line->date_lettering = $obj->date_lettering;
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2013 Olivier Geffroy <jeff@jeffinfo.com>
|
/* Copyright (C) 2013 Olivier Geffroy <jeff@jeffinfo.com>
|
||||||
* Copyright (C) 2013-2014 Florian Henry <florian.henry@open-concept.pro>
|
* Copyright (C) 2013-2014 Florian Henry <florian.henry@open-concept.pro>
|
||||||
* Copyright (C) 2013-2017 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
* Copyright (C) 2013-2020 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
||||||
* Copyright (C) 2014 Juanjo Menent <jmenent@2byte.es>
|
* Copyright (C) 2014 Juanjo Menent <jmenent@2byte.es>
|
||||||
* Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr>
|
* Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr>
|
||||||
*
|
*
|
||||||
@ -123,9 +123,9 @@ if ($action == 'validatehistory') {
|
|||||||
$sql .= " l.rowid, l.fk_product, l.description, l.total_ht, l.fk_code_ventilation, l.product_type as type_l, l.tva_tx as tva_tx_line, l.vat_src_code,";
|
$sql .= " l.rowid, l.fk_product, l.description, l.total_ht, l.fk_code_ventilation, l.product_type as type_l, l.tva_tx as tva_tx_line, l.vat_src_code,";
|
||||||
$sql .= " p.rowid as product_id, p.ref as product_ref, p.label as product_label, p.fk_product_type as type, p.tva_tx as tva_tx_prod,";
|
$sql .= " p.rowid as product_id, p.ref as product_ref, p.label as product_label, p.fk_product_type as type, p.tva_tx as tva_tx_prod,";
|
||||||
$sql .= " p.accountancy_code_sell as code_sell, p.accountancy_code_sell_intra as code_sell_intra, p.accountancy_code_sell_export as code_sell_export,";
|
$sql .= " p.accountancy_code_sell as code_sell, p.accountancy_code_sell_intra as code_sell_intra, p.accountancy_code_sell_export as code_sell_export,";
|
||||||
$sql .= " aa.rowid as aarowid, aa2.rowid as aarowid_intra, aa3.rowid as aarowid_export,";
|
$sql .= " aa.rowid as aarowid, aa2.rowid as aarowid_intra, aa3.rowid as aarowid_export, aa4.rowid as aarowid_thirdparty,";
|
||||||
$sql .= " co.code as country_code, co.label as country_label,";
|
$sql .= " co.code as country_code, co.label as country_label,";
|
||||||
$sql .= " s.tva_intra";
|
$sql .= " s.tva_intra, s.accountancy_code_sell as company_code_sell";
|
||||||
$sql .= " FROM ".MAIN_DB_PREFIX."facture as f";
|
$sql .= " FROM ".MAIN_DB_PREFIX."facture as f";
|
||||||
$sql .= " INNER JOIN ".MAIN_DB_PREFIX."societe as s ON s.rowid = f.fk_soc";
|
$sql .= " INNER JOIN ".MAIN_DB_PREFIX."societe as s ON s.rowid = f.fk_soc";
|
||||||
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."c_country as co ON co.rowid = s.fk_pays ";
|
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."c_country as co ON co.rowid = s.fk_pays ";
|
||||||
@ -134,6 +134,7 @@ if ($action == 'validatehistory') {
|
|||||||
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_account as aa ON p.accountancy_code_sell = aa.account_number AND aa.active = 1 AND aa.fk_pcg_version = '".$db->escape($chartaccountcode)."' AND aa.entity = ".$conf->entity;
|
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_account as aa ON p.accountancy_code_sell = aa.account_number AND aa.active = 1 AND aa.fk_pcg_version = '".$db->escape($chartaccountcode)."' AND aa.entity = ".$conf->entity;
|
||||||
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_account as aa2 ON p.accountancy_code_sell_intra = aa2.account_number AND aa2.active = 1 AND aa2.fk_pcg_version = '".$db->escape($chartaccountcode)."' AND aa2.entity = ".$conf->entity;
|
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_account as aa2 ON p.accountancy_code_sell_intra = aa2.account_number AND aa2.active = 1 AND aa2.fk_pcg_version = '".$db->escape($chartaccountcode)."' AND aa2.entity = ".$conf->entity;
|
||||||
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_account as aa3 ON p.accountancy_code_sell_export = aa3.account_number AND aa3.active = 1 AND aa3.fk_pcg_version = '".$db->escape($chartaccountcode)."' AND aa3.entity = ".$conf->entity;
|
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_account as aa3 ON p.accountancy_code_sell_export = aa3.account_number AND aa3.active = 1 AND aa3.fk_pcg_version = '".$db->escape($chartaccountcode)."' AND aa3.entity = ".$conf->entity;
|
||||||
|
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_account as aa4 ON s.accountancy_code_sell = aa4.account_number AND aa4.active = 1 AND aa4.fk_pcg_version = '".$db->escape($chartaccountcode)."' AND aa4.entity = ".$conf->entity;
|
||||||
$sql .= " WHERE f.fk_statut > 0 AND l.fk_code_ventilation <= 0";
|
$sql .= " WHERE f.fk_statut > 0 AND l.fk_code_ventilation <= 0";
|
||||||
$sql .= " AND l.product_type <= 2";
|
$sql .= " AND l.product_type <= 2";
|
||||||
|
|
||||||
@ -153,7 +154,7 @@ if ($action == 'validatehistory') {
|
|||||||
|
|
||||||
$isBuyerInEEC = isInEEC($objp);
|
$isBuyerInEEC = isInEEC($objp);
|
||||||
|
|
||||||
// Search suggested account for product/service (similar code exists in page list.php to make manual binding)
|
// Level 2: Search suggested account for product/service (similar code exists in page list.php to make manual binding)
|
||||||
$suggestedaccountingaccountfor = '';
|
$suggestedaccountingaccountfor = '';
|
||||||
if (($objp->country_code == $mysoc->country_code) || empty($objp->country_code)) { // If buyer in same country than seller (if not defined, we assume it is same country)
|
if (($objp->country_code == $mysoc->country_code) || empty($objp->country_code)) { // If buyer in same country than seller (if not defined, we assume it is same country)
|
||||||
$objp->code_sell_p = $objp->code_sell;
|
$objp->code_sell_p = $objp->code_sell;
|
||||||
@ -179,6 +180,13 @@ if ($action == 'validatehistory') {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Level 3: Search suggested account for this thirdparty (similar code exists in page index.php to make automatic binding)
|
||||||
|
if (!empty($objp->company_code_sell)) {
|
||||||
|
$objp->code_sell_t = $objp->company_code_sell;
|
||||||
|
$objp->aarowid_suggest = $objp->aarowid_thirdparty;
|
||||||
|
$suggestedaccountingaccountfor = '';
|
||||||
|
}
|
||||||
|
|
||||||
if ($objp->aarowid_suggest > 0)
|
if ($objp->aarowid_suggest > 0)
|
||||||
{
|
{
|
||||||
$sqlupdate = "UPDATE ".MAIN_DB_PREFIX."facturedet";
|
$sqlupdate = "UPDATE ".MAIN_DB_PREFIX."facturedet";
|
||||||
|
|||||||
@ -211,9 +211,9 @@ $sql .= " p.rowid as product_id, p.ref as product_ref, p.label as product_label,
|
|||||||
$sql .= " p.accountancy_code_sell as code_sell, p.accountancy_code_sell_intra as code_sell_intra, p.accountancy_code_sell_export as code_sell_export,";
|
$sql .= " p.accountancy_code_sell as code_sell, p.accountancy_code_sell_intra as code_sell_intra, p.accountancy_code_sell_export as code_sell_export,";
|
||||||
$sql .= " p.accountancy_code_buy as code_buy, p.accountancy_code_buy_intra as code_buy_intra, p.accountancy_code_buy_export as code_buy_export,";
|
$sql .= " p.accountancy_code_buy as code_buy, p.accountancy_code_buy_intra as code_buy_intra, p.accountancy_code_buy_export as code_buy_export,";
|
||||||
$sql .= " p.tosell as status, p.tobuy as status_buy,";
|
$sql .= " p.tosell as status, p.tobuy as status_buy,";
|
||||||
$sql .= " aa.rowid as aarowid, aa2.rowid as aarowid_intra, aa3.rowid as aarowid_export,";
|
$sql .= " aa.rowid as aarowid, aa2.rowid as aarowid_intra, aa3.rowid as aarowid_export, aa4.rowid as aarowid_thirdparty,";
|
||||||
$sql .= " co.code as country_code, co.label as country_label,";
|
$sql .= " co.code as country_code, co.label as country_label,";
|
||||||
$sql .= " s.rowid as socid, s.nom as name, s.tva_intra, s.email, s.town, s.zip, s.fk_pays, s.client, s.fournisseur, s.code_client, s.code_fournisseur, s.code_compta as code_compta_client, s.code_compta_fournisseur";
|
$sql .= " s.rowid as socid, s.nom as name, s.tva_intra, s.email, s.town, s.zip, s.fk_pays, s.client, s.fournisseur, s.code_client, s.code_fournisseur, s.code_compta as code_compta_client, s.code_compta_fournisseur, s.accountancy_code_sell as company_code_sell";
|
||||||
$parameters = array();
|
$parameters = array();
|
||||||
$reshook = $hookmanager->executeHooks('printFieldListSelect', $parameters); // Note that $action and $object may have been modified by hook
|
$reshook = $hookmanager->executeHooks('printFieldListSelect', $parameters); // Note that $action and $object may have been modified by hook
|
||||||
$sql .= $hookmanager->resPrint;
|
$sql .= $hookmanager->resPrint;
|
||||||
@ -225,6 +225,7 @@ $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."product as p ON p.rowid = l.fk_product";
|
|||||||
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_account as aa ON p.accountancy_code_sell = aa.account_number AND aa.active = 1 AND aa.fk_pcg_version = '".$db->escape($chartaccountcode)."' AND aa.entity = ".$conf->entity;
|
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_account as aa ON p.accountancy_code_sell = aa.account_number AND aa.active = 1 AND aa.fk_pcg_version = '".$db->escape($chartaccountcode)."' AND aa.entity = ".$conf->entity;
|
||||||
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_account as aa2 ON p.accountancy_code_sell_intra = aa2.account_number AND aa2.active = 1 AND aa2.fk_pcg_version = '".$db->escape($chartaccountcode)."' AND aa2.entity = ".$conf->entity;
|
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_account as aa2 ON p.accountancy_code_sell_intra = aa2.account_number AND aa2.active = 1 AND aa2.fk_pcg_version = '".$db->escape($chartaccountcode)."' AND aa2.entity = ".$conf->entity;
|
||||||
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_account as aa3 ON p.accountancy_code_sell_export = aa3.account_number AND aa3.active = 1 AND aa3.fk_pcg_version = '".$db->escape($chartaccountcode)."' AND aa3.entity = ".$conf->entity;
|
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_account as aa3 ON p.accountancy_code_sell_export = aa3.account_number AND aa3.active = 1 AND aa3.fk_pcg_version = '".$db->escape($chartaccountcode)."' AND aa3.entity = ".$conf->entity;
|
||||||
|
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_account as aa4 ON s.accountancy_code_sell = aa4.account_number AND aa4.active = 1 AND aa4.fk_pcg_version = '".$db->escape($chartaccountcode)."' AND aa4.entity = ".$conf->entity;
|
||||||
$sql .= " WHERE f.fk_statut > 0 AND l.fk_code_ventilation <= 0";
|
$sql .= " WHERE f.fk_statut > 0 AND l.fk_code_ventilation <= 0";
|
||||||
$sql .= " AND l.product_type <= 2";
|
$sql .= " AND l.product_type <= 2";
|
||||||
// Define begin binding date
|
// Define begin binding date
|
||||||
@ -456,11 +457,12 @@ if ($result) {
|
|||||||
$facture_static->type = $objp->ftype;
|
$facture_static->type = $objp->ftype;
|
||||||
|
|
||||||
$code_sell_p_notset = '';
|
$code_sell_p_notset = '';
|
||||||
|
$code_sell_t_notset = '';
|
||||||
$objp->aarowid_suggest = ''; // Will be set later
|
$objp->aarowid_suggest = ''; // Will be set later
|
||||||
|
|
||||||
$isBuyerInEEC = isInEEC($objp);
|
$isBuyerInEEC = isInEEC($objp);
|
||||||
|
|
||||||
// Search suggested default account for product/service
|
// Level 1: Search suggested default account for product/service
|
||||||
$suggestedaccountingaccountbydefaultfor = '';
|
$suggestedaccountingaccountbydefaultfor = '';
|
||||||
if ($objp->type_l == 1) {
|
if ($objp->type_l == 1) {
|
||||||
if ($objp->country_code == $mysoc->country_code || empty($objp->country_code)) { // If buyer in same country than seller (if not defined, we assume it is same country)
|
if ($objp->country_code == $mysoc->country_code || empty($objp->country_code)) { // If buyer in same country than seller (if not defined, we assume it is same country)
|
||||||
@ -503,7 +505,7 @@ if ($result) {
|
|||||||
}
|
}
|
||||||
if ($objp->code_sell_l == -1) $objp->code_sell_l = '';
|
if ($objp->code_sell_l == -1) $objp->code_sell_l = '';
|
||||||
|
|
||||||
// Search suggested account for product/service (similar code exists in page index.php to make automatic binding)
|
// Level 2: Search suggested account for product/service (similar code exists in page index.php to make automatic binding)
|
||||||
$suggestedaccountingaccountfor = '';
|
$suggestedaccountingaccountfor = '';
|
||||||
if (($objp->country_code == $mysoc->country_code) || empty($objp->country_code)) { // If buyer in same country than seller (if not defined, we assume it is same country)
|
if (($objp->country_code == $mysoc->country_code) || empty($objp->country_code)) { // If buyer in same country than seller (if not defined, we assume it is same country)
|
||||||
$objp->code_sell_p = $objp->code_sell;
|
$objp->code_sell_p = $objp->code_sell;
|
||||||
@ -529,6 +531,13 @@ if ($result) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Level 3: Search suggested account for this thirdparty (similar code exists in page index.php to make automatic binding)
|
||||||
|
if (!empty($objp->company_code_sell)) {
|
||||||
|
$objp->code_sell_t = $objp->company_code_sell;
|
||||||
|
$objp->aarowid_suggest = $objp->aarowid_thirdparty;
|
||||||
|
$suggestedaccountingaccountfor = '';
|
||||||
|
}
|
||||||
|
|
||||||
// Manage Deposit
|
// Manage Deposit
|
||||||
if ($objp->description == "(DEPOSIT)") {
|
if ($objp->description == "(DEPOSIT)") {
|
||||||
$accountdeposittoventilated = new AccountingAccount($db);
|
$accountdeposittoventilated = new AccountingAccount($db);
|
||||||
@ -547,6 +556,7 @@ if ($result) {
|
|||||||
|
|
||||||
// $objp->code_sell_l is now default code of product/service
|
// $objp->code_sell_l is now default code of product/service
|
||||||
// $objp->code_sell_p is now code of product/service
|
// $objp->code_sell_p is now code of product/service
|
||||||
|
// $objp->code_sell_t is now code of thirdparty
|
||||||
|
|
||||||
print '<tr class="oddeven">';
|
print '<tr class="oddeven">';
|
||||||
|
|
||||||
@ -596,7 +606,7 @@ if ($result) {
|
|||||||
|
|
||||||
// Found accounts
|
// Found accounts
|
||||||
print '<td>';
|
print '<td>';
|
||||||
$s = '<span class="small">'.(($objp->type_l == 1) ? $langs->trans("DefaultForService") : $langs->trans("DefaultForProduct")).': </span>';
|
$s = '<span class="small">1. '.(($objp->type_l == 1) ? $langs->trans("DefaultForService") : $langs->trans("DefaultForProduct")).': </span>';
|
||||||
$shelp = '';
|
$shelp = '';
|
||||||
if ($suggestedaccountingaccountbydefaultfor == 'eec') $shelp .= $langs->trans("SaleEEC");
|
if ($suggestedaccountingaccountbydefaultfor == 'eec') $shelp .= $langs->trans("SaleEEC");
|
||||||
elseif ($suggestedaccountingaccountbydefaultfor == 'export') $shelp .= $langs->trans("SaleExport");
|
elseif ($suggestedaccountingaccountbydefaultfor == 'export') $shelp .= $langs->trans("SaleExport");
|
||||||
@ -605,7 +615,7 @@ if ($result) {
|
|||||||
if ($objp->product_id > 0)
|
if ($objp->product_id > 0)
|
||||||
{
|
{
|
||||||
print '<br>';
|
print '<br>';
|
||||||
$s = '<span class="small">'.(($objp->type_l == 1) ? $langs->trans("ThisService") : $langs->trans("ThisProduct")).': </span>';
|
$s = '<span class="small">2. '.(($objp->type_l == 1) ? $langs->trans("ThisService") : $langs->trans("ThisProduct")).': </span>';
|
||||||
$shelp = '';
|
$shelp = '';
|
||||||
if ($suggestedaccountingaccountfor == 'eec') $shelp = $langs->trans("SaleEEC");
|
if ($suggestedaccountingaccountfor == 'eec') $shelp = $langs->trans("SaleEEC");
|
||||||
elseif ($suggestedaccountingaccountfor == 'eecwithvat') $shelp = $langs->trans("SaleEECWithVAT");
|
elseif ($suggestedaccountingaccountfor == 'eecwithvat') $shelp = $langs->trans("SaleEECWithVAT");
|
||||||
@ -613,16 +623,23 @@ if ($result) {
|
|||||||
elseif ($suggestedaccountingaccountfor == 'export') $shelp = $langs->trans("SaleExport");
|
elseif ($suggestedaccountingaccountfor == 'export') $shelp = $langs->trans("SaleExport");
|
||||||
$s .= (empty($objp->code_sell_p) ? '<span style="'.$code_sell_p_notset.'">'.$langs->trans("NotDefined").'</span>' : length_accountg($objp->code_sell_p));
|
$s .= (empty($objp->code_sell_p) ? '<span style="'.$code_sell_p_notset.'">'.$langs->trans("NotDefined").'</span>' : length_accountg($objp->code_sell_p));
|
||||||
print $form->textwithpicto($s, $shelp, 1, 'help', '', 0, 2, '', 1);
|
print $form->textwithpicto($s, $shelp, 1, 'help', '', 0, 2, '', 1);
|
||||||
|
} else {
|
||||||
|
print '<br>';
|
||||||
|
$s = '<span class="small">2. '.(($objp->type_l == 1) ? $langs->trans("ThisService") : $langs->trans("ThisProduct")).': </span>';
|
||||||
|
$shelp = '';
|
||||||
|
$s .= $langs->trans("NotDefined");
|
||||||
|
print $form->textwithpicto($s, $shelp, 1, 'help', '', 0, 2, '', 1);
|
||||||
}
|
}
|
||||||
|
print '<br>';
|
||||||
|
$s = '<span class="small">3. '.(($objp->type_l == 1) ? $langs->trans("ServiceForThisThirdparty") : $langs->trans("ProductForThisThirdparty")).': </span>';
|
||||||
|
$shelp = '';
|
||||||
|
$s .= ($objp->code_sell_t > 0 ? length_accountg($objp->code_sell_t) : '<span style="'.$code_sell_t_notset.'">'.$langs->trans("NotDefined").'</span>');
|
||||||
|
print $form->textwithpicto($s, $shelp, 1, 'help', '', 0, 2, '', 1);
|
||||||
print '</td>';
|
print '</td>';
|
||||||
|
|
||||||
// Suggested accounting account
|
// Suggested accounting account
|
||||||
// $objp->code_sell_l = default (it takes the country into consideration), $objp->code_sell_p is value for product (it takes the country into consideration too)
|
|
||||||
print '<td>';
|
print '<td>';
|
||||||
$suggestedid = $objp->aarowid_suggest;
|
$suggestedid = $objp->aarowid_suggest;
|
||||||
/*var_dump($suggestedid);
|
|
||||||
var_dump($objp->code_sell_p);
|
|
||||||
var_dump($objp->code_sell_l);*/
|
|
||||||
if (empty($suggestedid) && empty($objp->code_sell_p) && !empty($objp->code_sell_l) && empty($conf->global->ACCOUNTANCY_DO_NOT_AUTOFILL_ACCOUNT_WITH_GENERIC))
|
if (empty($suggestedid) && empty($objp->code_sell_p) && !empty($objp->code_sell_l) && empty($conf->global->ACCOUNTANCY_DO_NOT_AUTOFILL_ACCOUNT_WITH_GENERIC))
|
||||||
{
|
{
|
||||||
if (empty($accountingaccount_codetotid_cache[$objp->code_sell_l]))
|
if (empty($accountingaccount_codetotid_cache[$objp->code_sell_l]))
|
||||||
@ -642,7 +659,6 @@ if ($result) {
|
|||||||
|
|
||||||
// Column with checkbox
|
// Column with checkbox
|
||||||
print '<td class="center">';
|
print '<td class="center">';
|
||||||
//var_dump($objp->aarowid);var_dump($objp->aarowid_intra);var_dump($objp->aarowid_export);var_dump($objp->aarowid_suggest);
|
|
||||||
$ischecked = $objp->aarowid_suggest;
|
$ischecked = $objp->aarowid_suggest;
|
||||||
if ($suggestedaccountingaccountfor == 'eecwithoutvatnumber') $ischecked = 0;
|
if ($suggestedaccountingaccountfor == 'eecwithoutvatnumber') $ischecked = 0;
|
||||||
print '<input type="checkbox" class="flat checkforselect checkforselect'.$objp->rowid.'" name="toselect[]" value="'.$objp->rowid."_".$i.'"'.($ischecked ? "checked" : "").'/>';
|
print '<input type="checkbox" class="flat checkforselect checkforselect'.$objp->rowid.'" name="toselect[]" value="'.$objp->rowid."_".$i.'"'.($ischecked ? "checked" : "").'/>';
|
||||||
|
|||||||
@ -120,9 +120,9 @@ if ($action == 'validatehistory') {
|
|||||||
$sql .= " l.rowid, l.fk_product, l.description, l.total_ht, l.fk_code_ventilation, l.product_type as type_l, l.tva_tx as tva_tx_line, l.vat_src_code,";
|
$sql .= " l.rowid, l.fk_product, l.description, l.total_ht, l.fk_code_ventilation, l.product_type as type_l, l.tva_tx as tva_tx_line, l.vat_src_code,";
|
||||||
$sql .= " p.rowid as product_id, p.ref as product_ref, p.label as product_label, p.fk_product_type as type,";
|
$sql .= " p.rowid as product_id, p.ref as product_ref, p.label as product_label, p.fk_product_type as type,";
|
||||||
$sql .= " p.accountancy_code_buy as code_buy, p.accountancy_code_buy_intra as code_buy_intra, p.accountancy_code_buy_export as code_buy_export, p.tva_tx as tva_tx_prod,";
|
$sql .= " p.accountancy_code_buy as code_buy, p.accountancy_code_buy_intra as code_buy_intra, p.accountancy_code_buy_export as code_buy_export, p.tva_tx as tva_tx_prod,";
|
||||||
$sql .= " aa.rowid as aarowid, aa2.rowid as aarowid_intra, aa3.rowid as aarowid_export,";
|
$sql .= " aa.rowid as aarowid, aa2.rowid as aarowid_intra, aa3.rowid as aarowid_export, aa4.rowid as aarowid_thirdparty,";
|
||||||
$sql .= " co.code as country_code, co.label as country_label,";
|
$sql .= " co.code as country_code, co.label as country_label,";
|
||||||
$sql .= " s.tva_intra";
|
$sql .= " s.tva_intra, s.accountancy_code_buy as company_code_buy";
|
||||||
$sql .= " FROM ".MAIN_DB_PREFIX."facture_fourn as f";
|
$sql .= " FROM ".MAIN_DB_PREFIX."facture_fourn as f";
|
||||||
$sql .= " INNER JOIN ".MAIN_DB_PREFIX."societe as s ON s.rowid = f.fk_soc";
|
$sql .= " INNER JOIN ".MAIN_DB_PREFIX."societe as s ON s.rowid = f.fk_soc";
|
||||||
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."c_country as co ON co.rowid = s.fk_pays ";
|
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."c_country as co ON co.rowid = s.fk_pays ";
|
||||||
@ -131,6 +131,7 @@ if ($action == 'validatehistory') {
|
|||||||
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_account as aa ON p.accountancy_code_buy = aa.account_number AND aa.active = 1 AND aa.fk_pcg_version = '".$db->escape($chartaccountcode)."' AND aa.entity = ".$conf->entity;
|
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_account as aa ON p.accountancy_code_buy = aa.account_number AND aa.active = 1 AND aa.fk_pcg_version = '".$db->escape($chartaccountcode)."' AND aa.entity = ".$conf->entity;
|
||||||
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_account as aa2 ON p.accountancy_code_buy_intra = aa2.account_number AND aa2.active = 1 AND aa2.fk_pcg_version = '".$db->escape($chartaccountcode)."' AND aa2.entity = ".$conf->entity;
|
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_account as aa2 ON p.accountancy_code_buy_intra = aa2.account_number AND aa2.active = 1 AND aa2.fk_pcg_version = '".$db->escape($chartaccountcode)."' AND aa2.entity = ".$conf->entity;
|
||||||
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_account as aa3 ON p.accountancy_code_buy_export = aa3.account_number AND aa3.active = 1 AND aa3.fk_pcg_version = '".$db->escape($chartaccountcode)."' AND aa3.entity = ".$conf->entity;
|
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_account as aa3 ON p.accountancy_code_buy_export = aa3.account_number AND aa3.active = 1 AND aa3.fk_pcg_version = '".$db->escape($chartaccountcode)."' AND aa3.entity = ".$conf->entity;
|
||||||
|
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_account as aa4 ON s.accountancy_code_buy = aa4.account_number AND aa4.active = 1 AND aa4.fk_pcg_version = '".$db->escape($chartaccountcode)."' AND aa4.entity = ".$conf->entity;
|
||||||
$sql .= " WHERE f.fk_statut > 0 AND l.fk_code_ventilation <= 0";
|
$sql .= " WHERE f.fk_statut > 0 AND l.fk_code_ventilation <= 0";
|
||||||
$sql .= " AND l.product_type <= 2";
|
$sql .= " AND l.product_type <= 2";
|
||||||
|
|
||||||
@ -151,7 +152,7 @@ if ($action == 'validatehistory') {
|
|||||||
|
|
||||||
$isSellerInEEC = isInEEC($objp);
|
$isSellerInEEC = isInEEC($objp);
|
||||||
|
|
||||||
// Search suggested account for product/service
|
// Level 2: Search suggested account for product/service (similar code exists in page list.php to make manual binding)
|
||||||
$suggestedaccountingaccountfor = '';
|
$suggestedaccountingaccountfor = '';
|
||||||
if (($objp->country_code == $mysoc->country_code) || empty($objp->country_code)) { // If buyer in same country than seller (if not defined, we assume it is same country)
|
if (($objp->country_code == $mysoc->country_code) || empty($objp->country_code)) { // If buyer in same country than seller (if not defined, we assume it is same country)
|
||||||
$objp->code_buy_p = $objp->code_buy;
|
$objp->code_buy_p = $objp->code_buy;
|
||||||
@ -169,6 +170,13 @@ if ($action == 'validatehistory') {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Level 3: Search suggested account for this thirdparty (similar code exists in page index.php to make automatic binding)
|
||||||
|
if (!empty($objp->company_code_buy)) {
|
||||||
|
$objp->code_buy_t = $objp->company_code_buy;
|
||||||
|
$objp->aarowid_suggest = $objp->aarowid_thirdparty;
|
||||||
|
$suggestedaccountingaccountfor = '';
|
||||||
|
}
|
||||||
|
|
||||||
if ($objp->aarowid_suggest > 0)
|
if ($objp->aarowid_suggest > 0)
|
||||||
{
|
{
|
||||||
$sqlupdate = "UPDATE ".MAIN_DB_PREFIX."facture_fourn_det";
|
$sqlupdate = "UPDATE ".MAIN_DB_PREFIX."facture_fourn_det";
|
||||||
|
|||||||
@ -215,9 +215,9 @@ $sql .= " p.rowid as product_id, p.ref as product_ref, p.label as product_label,
|
|||||||
$sql .= " p.accountancy_code_sell as code_sell, p.accountancy_code_sell_intra as code_sell_intra, p.accountancy_code_sell_export as code_sell_export,";
|
$sql .= " p.accountancy_code_sell as code_sell, p.accountancy_code_sell_intra as code_sell_intra, p.accountancy_code_sell_export as code_sell_export,";
|
||||||
$sql .= " p.accountancy_code_buy as code_buy, p.accountancy_code_buy_intra as code_buy_intra, p.accountancy_code_buy_export as code_buy_export,";
|
$sql .= " p.accountancy_code_buy as code_buy, p.accountancy_code_buy_intra as code_buy_intra, p.accountancy_code_buy_export as code_buy_export,";
|
||||||
$sql .= " p.tosell as status, p.tobuy as status_buy,";
|
$sql .= " p.tosell as status, p.tobuy as status_buy,";
|
||||||
$sql .= " aa.rowid as aarowid, aa2.rowid as aarowid_intra, aa3.rowid as aarowid_export,";
|
$sql .= " aa.rowid as aarowid, aa2.rowid as aarowid_intra, aa3.rowid as aarowid_export, aa4.rowid as aarowid_thirdparty,";
|
||||||
$sql .= " co.code as country_code, co.label as country_label,";
|
$sql .= " co.code as country_code, co.label as country_label,";
|
||||||
$sql .= " s.rowid as socid, s.nom as name, s.tva_intra, s.email, s.town, s.zip, s.fk_pays, s.client, s.fournisseur, s.code_client, s.code_fournisseur, s.code_compta as code_compta_client, s.code_compta_fournisseur";
|
$sql .= " s.rowid as socid, s.nom as name, s.tva_intra, s.email, s.town, s.zip, s.fk_pays, s.client, s.fournisseur, s.code_client, s.code_fournisseur, s.code_compta as code_compta_client, s.code_compta_fournisseur, s.accountancy_code_buy as company_code_buy";
|
||||||
$parameters = array();
|
$parameters = array();
|
||||||
$reshook = $hookmanager->executeHooks('printFieldListSelect', $parameters); // Note that $action and $object may have been modified by hook
|
$reshook = $hookmanager->executeHooks('printFieldListSelect', $parameters); // Note that $action and $object may have been modified by hook
|
||||||
$sql .= $hookmanager->resPrint;
|
$sql .= $hookmanager->resPrint;
|
||||||
@ -229,6 +229,7 @@ $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."product as p ON p.rowid = l.fk_product";
|
|||||||
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_account as aa ON p.accountancy_code_buy = aa.account_number AND aa.active = 1 AND aa.fk_pcg_version = '".$db->escape($chartaccountcode)."' AND aa.entity = ".$conf->entity;
|
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_account as aa ON p.accountancy_code_buy = aa.account_number AND aa.active = 1 AND aa.fk_pcg_version = '".$db->escape($chartaccountcode)."' AND aa.entity = ".$conf->entity;
|
||||||
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_account as aa2 ON p.accountancy_code_buy_intra = aa2.account_number AND aa2.active = 1 AND aa2.fk_pcg_version = '".$db->escape($chartaccountcode)."' AND aa2.entity = ".$conf->entity;
|
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_account as aa2 ON p.accountancy_code_buy_intra = aa2.account_number AND aa2.active = 1 AND aa2.fk_pcg_version = '".$db->escape($chartaccountcode)."' AND aa2.entity = ".$conf->entity;
|
||||||
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_account as aa3 ON p.accountancy_code_buy_export = aa3.account_number AND aa3.active = 1 AND aa3.fk_pcg_version = '".$db->escape($chartaccountcode)."' AND aa3.entity = ".$conf->entity;
|
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_account as aa3 ON p.accountancy_code_buy_export = aa3.account_number AND aa3.active = 1 AND aa3.fk_pcg_version = '".$db->escape($chartaccountcode)."' AND aa3.entity = ".$conf->entity;
|
||||||
|
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_account as aa4 ON s.accountancy_code_buy = aa4.account_number AND aa4.active = 1 AND aa4.fk_pcg_version = '".$db->escape($chartaccountcode)."' AND aa4.entity = ".$conf->entity;
|
||||||
$sql .= " WHERE f.fk_statut > 0 AND l.fk_code_ventilation <= 0";
|
$sql .= " WHERE f.fk_statut > 0 AND l.fk_code_ventilation <= 0";
|
||||||
$sql .= " AND l.product_type <= 2";
|
$sql .= " AND l.product_type <= 2";
|
||||||
// Define begin binding date
|
// Define begin binding date
|
||||||
@ -460,10 +461,12 @@ if ($result) {
|
|||||||
$facturefourn_static->label = $objp->invoice_label;
|
$facturefourn_static->label = $objp->invoice_label;
|
||||||
|
|
||||||
$code_buy_p_notset = '';
|
$code_buy_p_notset = '';
|
||||||
|
$code_buy_t_notset = '';
|
||||||
$objp->aarowid_suggest = ''; // Will be set later
|
$objp->aarowid_suggest = ''; // Will be set later
|
||||||
|
|
||||||
$isSellerInEEC = isInEEC($objp);
|
$isSellerInEEC = isInEEC($objp);
|
||||||
|
|
||||||
|
// Level 1: Search suggested default account for product/service
|
||||||
$suggestedaccountingaccountbydefaultfor = '';
|
$suggestedaccountingaccountbydefaultfor = '';
|
||||||
if ($objp->type_l == 1) {
|
if ($objp->type_l == 1) {
|
||||||
if ($objp->country_code == $mysoc->country_code || empty($objp->country_code)) { // If buyer in same country than seller (if not defined, we assume it is same country)
|
if ($objp->country_code == $mysoc->country_code || empty($objp->country_code)) { // If buyer in same country than seller (if not defined, we assume it is same country)
|
||||||
@ -494,7 +497,7 @@ if ($result) {
|
|||||||
}
|
}
|
||||||
if ($objp->code_sell_l == -1) $objp->code_sell_l = '';
|
if ($objp->code_sell_l == -1) $objp->code_sell_l = '';
|
||||||
|
|
||||||
// Search suggested account for product/service
|
// Level 2: Search suggested account for product/service (similar code exists in page index.php to make automatic binding)
|
||||||
$suggestedaccountingaccountfor = '';
|
$suggestedaccountingaccountfor = '';
|
||||||
if (($objp->country_code == $mysoc->country_code) || empty($objp->country_code)) { // If buyer in same country than seller (if not defined, we assume it is same country)
|
if (($objp->country_code == $mysoc->country_code) || empty($objp->country_code)) { // If buyer in same country than seller (if not defined, we assume it is same country)
|
||||||
$objp->code_buy_p = $objp->code_buy;
|
$objp->code_buy_p = $objp->code_buy;
|
||||||
@ -512,6 +515,13 @@ if ($result) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Level 3: Search suggested account for this thirdparty (similar code exists in page index.php to make automatic binding)
|
||||||
|
if (!empty($objp->company_code_buy)) {
|
||||||
|
$objp->code_buy_t = $objp->company_code_buy;
|
||||||
|
$objp->aarowid_suggest = $objp->aarowid_thirdparty;
|
||||||
|
$suggestedaccountingaccountfor = '';
|
||||||
|
}
|
||||||
|
|
||||||
if (!empty($objp->code_buy_p)) {
|
if (!empty($objp->code_buy_p)) {
|
||||||
// Value was defined previously
|
// Value was defined previously
|
||||||
} else {
|
} else {
|
||||||
@ -521,6 +531,7 @@ if ($result) {
|
|||||||
|
|
||||||
// $objp->code_buy_l is now default code of product/service
|
// $objp->code_buy_l is now default code of product/service
|
||||||
// $objp->code_buy_p is now code of product/service
|
// $objp->code_buy_p is now code of product/service
|
||||||
|
// $objp->code_buy_t is now code of thirdparty
|
||||||
|
|
||||||
print '<tr class="oddeven">';
|
print '<tr class="oddeven">';
|
||||||
|
|
||||||
@ -576,7 +587,7 @@ if ($result) {
|
|||||||
|
|
||||||
// Found accounts
|
// Found accounts
|
||||||
print '<td>';
|
print '<td>';
|
||||||
$s = '<span class="small">'.(($objp->type_l == 1) ? $langs->trans("DefaultForService") : $langs->trans("DefaultForProduct")).': </span>';
|
$s = '<span class="small">1. '.(($objp->type_l == 1) ? $langs->trans("DefaultForService") : $langs->trans("DefaultForProduct")).': </span>';
|
||||||
$shelp = '';
|
$shelp = '';
|
||||||
if ($suggestedaccountingaccountbydefaultfor == 'eec') $shelp .= $langs->trans("SaleEEC");
|
if ($suggestedaccountingaccountbydefaultfor == 'eec') $shelp .= $langs->trans("SaleEEC");
|
||||||
elseif ($suggestedaccountingaccountbydefaultfor == 'export') $shelp .= $langs->trans("SaleExport");
|
elseif ($suggestedaccountingaccountbydefaultfor == 'export') $shelp .= $langs->trans("SaleExport");
|
||||||
@ -585,13 +596,24 @@ if ($result) {
|
|||||||
if ($objp->product_id > 0)
|
if ($objp->product_id > 0)
|
||||||
{
|
{
|
||||||
print '<br>';
|
print '<br>';
|
||||||
$s = '<span class="small">'.(($objp->type_l == 1) ? $langs->trans("ThisService") : $langs->trans("ThisProduct")).': </span>';
|
$s = '<span class="small">2. '.(($objp->type_l == 1) ? $langs->trans("ThisService") : $langs->trans("ThisProduct")).': </span>';
|
||||||
$shelp = '';
|
$shelp = '';
|
||||||
if ($suggestedaccountingaccountfor == 'eec') $shelp = $langs->trans("SaleEEC");
|
if ($suggestedaccountingaccountfor == 'eec') $shelp = $langs->trans("SaleEEC");
|
||||||
elseif ($suggestedaccountingaccountfor == 'export') $shelp = $langs->trans("SaleExport");
|
elseif ($suggestedaccountingaccountfor == 'export') $shelp = $langs->trans("SaleExport");
|
||||||
$s .= (empty($objp->code_buy_p) ? '<span style="'.$code_buy_p_notset.'">'.$langs->trans("NotDefined").'</span>' : length_accountg($objp->code_buy_p));
|
$s .= (empty($objp->code_buy_p) ? '<span style="'.$code_buy_p_notset.'">'.$langs->trans("NotDefined").'</span>' : length_accountg($objp->code_buy_p));
|
||||||
print $form->textwithpicto($s, $shelp, 1, 'help', '', 0, 2, '', 1);
|
print $form->textwithpicto($s, $shelp, 1, 'help', '', 0, 2, '', 1);
|
||||||
|
} else {
|
||||||
|
print '<br>';
|
||||||
|
$s = '<span class="small">2. '.(($objp->type_l == 1) ? $langs->trans("ThisService") : $langs->trans("ThisProduct")).': </span>';
|
||||||
|
$shelp = '';
|
||||||
|
$s .= $langs->trans("NotDefined");
|
||||||
|
print $form->textwithpicto($s, $shelp, 1, 'help', '', 0, 2, '', 1);
|
||||||
}
|
}
|
||||||
|
print '<br>';
|
||||||
|
$s = '<span class="small">3. '.(($objp->type_l == 1) ? $langs->trans("ServiceForThisThirdparty") : $langs->trans("ProductForThisThirdparty")).': </span>';
|
||||||
|
$shelp = '';
|
||||||
|
$s .= ($objp->code_buy_t > 0 ? length_accountg($objp->code_buy_t) : '<span style="'.$code_buy_t_notset.'">'.$langs->trans("NotDefined").'</span>');
|
||||||
|
print $form->textwithpicto($s, $shelp, 1, 'help', '', 0, 2, '', 1);
|
||||||
print '</td>';
|
print '</td>';
|
||||||
|
|
||||||
// Suggested accounting account
|
// Suggested accounting account
|
||||||
|
|||||||
@ -393,7 +393,7 @@ print '<tr class="liste_titre"><th class="titlefield wordbreak">'.$langs->trans(
|
|||||||
|
|
||||||
// Name
|
// Name
|
||||||
print '<tr class="oddeven"><td class="fieldrequired wordbreak"><label for="name">'.$langs->trans("CompanyName").'</label></td><td>';
|
print '<tr class="oddeven"><td class="fieldrequired wordbreak"><label for="name">'.$langs->trans("CompanyName").'</label></td><td>';
|
||||||
print '<input name="nom" id="name" class="minwidth200" value="'.dol_escape_htmltag((GETPOSTISSET('nom') ? GETPOST('nom', 'nohtml') : (!empty($conf->global->MAIN_INFO_SOCIETE_NOM) ? $conf->global->MAIN_INFO_SOCIETE_NOM : '')).'"'.(empty($conf->global->MAIN_INFO_SOCIETE_NOM) ? ' autofocus="autofocus"' : '')).'></td></tr>'."\n";
|
print '<input name="nom" id="name" class="minwidth200" value="'.dol_escape_htmltag((GETPOSTISSET('nom') ? GETPOST('nom', 'nohtml') : (!empty($conf->global->MAIN_INFO_SOCIETE_NOM) ? $conf->global->MAIN_INFO_SOCIETE_NOM : ''))).'"'.(empty($conf->global->MAIN_INFO_SOCIETE_NOM) ? ' autofocus="autofocus"' : '').'></td></tr>'."\n";
|
||||||
|
|
||||||
// Address
|
// Address
|
||||||
print '<tr class="oddeven"><td><label for="MAIN_INFO_SOCIETE_ADDRESS">'.$langs->trans("CompanyAddress").'</label></td><td>';
|
print '<tr class="oddeven"><td><label for="MAIN_INFO_SOCIETE_ADDRESS">'.$langs->trans("CompanyAddress").'</label></td><td>';
|
||||||
|
|||||||
@ -34,7 +34,7 @@ if (!$user->admin) accessforbidden();
|
|||||||
|
|
||||||
$action = GETPOST('action', 'aZ09');
|
$action = GETPOST('action', 'aZ09');
|
||||||
|
|
||||||
|
$form = new Form($db);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Actions
|
* Actions
|
||||||
@ -49,6 +49,7 @@ if ($action == 'setvalue')
|
|||||||
$checkread = GETPOST('value', 'alpha');
|
$checkread = GETPOST('value', 'alpha');
|
||||||
$checkread_key = GETPOST('MAILING_EMAIL_UNSUBSCRIBE_KEY', 'alpha');
|
$checkread_key = GETPOST('MAILING_EMAIL_UNSUBSCRIBE_KEY', 'alpha');
|
||||||
$mailingdelay = GETPOST('MAILING_DELAY', 'int');
|
$mailingdelay = GETPOST('MAILING_DELAY', 'int');
|
||||||
|
$contactbulkdefault = GETPOST('MAILING_CONTACT_DEFAULT_BULK_STATUS', 'int');
|
||||||
|
|
||||||
$res = dolibarr_set_const($db, "MAILING_EMAIL_FROM", $mailfrom, 'chaine', 0, '', $conf->entity);
|
$res = dolibarr_set_const($db, "MAILING_EMAIL_FROM", $mailfrom, 'chaine', 0, '', $conf->entity);
|
||||||
if (!$res > 0) $error++;
|
if (!$res > 0) $error++;
|
||||||
@ -56,11 +57,14 @@ if ($action == 'setvalue')
|
|||||||
if (!$res > 0) $error++;
|
if (!$res > 0) $error++;
|
||||||
$res = dolibarr_set_const($db, "MAILING_DELAY", $mailingdelay, 'chaine', 0, '', $conf->entity);
|
$res = dolibarr_set_const($db, "MAILING_DELAY", $mailingdelay, 'chaine', 0, '', $conf->entity);
|
||||||
if (!$res > 0) $error++;
|
if (!$res > 0) $error++;
|
||||||
|
$res = dolibarr_set_const($db, "MAILING_CONTACT_DEFAULT_BULK_STATUS", $contactbulkdefault, 'chaine', 0, '', $conf->entity);
|
||||||
|
if (!$res > 0) $error++;
|
||||||
|
|
||||||
// Create temporary encryption key if nedded
|
// Create temporary encryption key if nedded
|
||||||
$res = dolibarr_set_const($db, "MAILING_EMAIL_UNSUBSCRIBE_KEY", $checkread_key, 'chaine', 0, '', $conf->entity);
|
$res = dolibarr_set_const($db, "MAILING_EMAIL_UNSUBSCRIBE_KEY", $checkread_key, 'chaine', 0, '', $conf->entity);
|
||||||
if (!$res > 0) $error++;
|
if (!$res > 0) $error++;
|
||||||
|
|
||||||
|
|
||||||
if (!$error)
|
if (!$error)
|
||||||
{
|
{
|
||||||
$db->commit();
|
$db->commit();
|
||||||
@ -70,7 +74,17 @@ if ($action == 'setvalue')
|
|||||||
setEventMessages($langs->trans("Error"), null, 'errors');
|
setEventMessages($langs->trans("Error"), null, 'errors');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if ($action == 'setonsearchandlistgooncustomerorsuppliercard') {
|
||||||
|
$setonsearchandlistgooncustomerorsuppliercard = GETPOST('value', 'int');
|
||||||
|
$res = dolibarr_set_const($db, "SOCIETE_ON_SEARCH_AND_LIST_GO_ON_CUSTOMER_OR_SUPPLIER_CARD", $setonsearchandlistgooncustomerorsuppliercard, 'yesno', 0, '', $conf->entity);
|
||||||
|
if (!$res > 0) $error++;
|
||||||
|
if (!$error)
|
||||||
|
{
|
||||||
|
setEventMessages($langs->trans("SetupSaved"), null, 'mesgs');
|
||||||
|
} else {
|
||||||
|
setEventMessages($langs->trans("Error"), null, 'errors');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* View
|
* View
|
||||||
@ -136,6 +150,16 @@ print '<input size="32" type="text" name="MAILING_EMAIL_UNSUBSCRIBE_KEY" id="MAI
|
|||||||
if (!empty($conf->use_javascript_ajax)) print ' '.img_picto($langs->trans('Generate'), 'refresh', 'id="generate_token" class="linkobject"');
|
if (!empty($conf->use_javascript_ajax)) print ' '.img_picto($langs->trans('Generate'), 'refresh', 'id="generate_token" class="linkobject"');
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
|
// default blacklist from mailing
|
||||||
|
print '<tr class="oddeven">';
|
||||||
|
print '<td>' . $langs->trans("DefaultBlacklistMailingStatus") . '</td>';
|
||||||
|
print '<td>';
|
||||||
|
$blacklist_setting=array(0=>$langs->trans('No'),1=>$langs->trans('Yes'),-1=>$langs->trans('DefaultStatusEmptyMandatory'));
|
||||||
|
print $form->selectarray("MAILING_CONTACT_DEFAULT_BULK_STATUS", $blacklist_setting, $conf->global->MAILING_CONTACT_DEFAULT_BULK_STATUS);
|
||||||
|
print '</td>';
|
||||||
|
print '</tr>';
|
||||||
|
|
||||||
|
|
||||||
if (!empty($conf->use_javascript_ajax) && $conf->global->MAIN_FEATURES_LEVEL >= 1) {
|
if (!empty($conf->use_javascript_ajax) && $conf->global->MAIN_FEATURES_LEVEL >= 1) {
|
||||||
print '<tr class="oddeven"><td>';
|
print '<tr class="oddeven"><td>';
|
||||||
print $langs->trans("MailAdvTargetRecipients").'</td><td>';
|
print $langs->trans("MailAdvTargetRecipients").'</td><td>';
|
||||||
|
|||||||
@ -707,7 +707,15 @@ if (!empty($conf->global->MAIN_DEFAULT_WAREHOUSE_USER)) {
|
|||||||
print "</td>\n";
|
print "</td>\n";
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
}
|
}
|
||||||
|
print '<tr class="oddeven">';
|
||||||
|
print '<td>'.$langs->trans("WarehouseAskWarehouseDuringPropal").'</td>';
|
||||||
|
print '<td class="right">';
|
||||||
|
if ($conf->use_javascript_ajax) {
|
||||||
|
print ajax_constantonoff('WAREHOUSE_ASK_WAREHOUSE_DURING_PROPAL');
|
||||||
|
} else {
|
||||||
|
$arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes"));
|
||||||
|
print $form->selectarray("WAREHOUSE_ASK_WAREHOUSE_DURING_PROPAL", $arrval, $conf->global->WAREHOUSE_ASK_WAREHOUSE_DURING_PROPAL);
|
||||||
|
}
|
||||||
print '<tr class="oddeven">';
|
print '<tr class="oddeven">';
|
||||||
print '<td>'.$langs->trans("WarehouseAskWarehouseDuringOrder").'</td>';
|
print '<td>'.$langs->trans("WarehouseAskWarehouseDuringOrder").'</td>';
|
||||||
print '<td class="right">';
|
print '<td class="right">';
|
||||||
|
|||||||
@ -264,7 +264,7 @@ if (!$error && $xml)
|
|||||||
$out .= "</tr>\n";
|
$out .= "</tr>\n";
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$out .= '<tr class="oddeven"><td colspan="3" class="opacitymedium">'.$langs->trans("None").'</td></tr>';
|
$out .= '<tr class="oddeven"><td colspan="4" class="opacitymedium">'.$langs->trans("None").'</td></tr>';
|
||||||
}
|
}
|
||||||
$out .= '</table>';
|
$out .= '</table>';
|
||||||
$out .= '</div>';
|
$out .= '</div>';
|
||||||
@ -317,7 +317,7 @@ if (!$error && $xml)
|
|||||||
$out .= '<td class="right"></td>'."\n";
|
$out .= '<td class="right"></td>'."\n";
|
||||||
$out .= "</tr>\n";
|
$out .= "</tr>\n";
|
||||||
} else {
|
} else {
|
||||||
$out .= '<tr class="oddeven"><td colspan="6" class="opacitymedium">'.$langs->trans("None").'</td></tr>';
|
$out .= '<tr class="oddeven"><td colspan="7" class="opacitymedium">'.$langs->trans("None").'</td></tr>';
|
||||||
}
|
}
|
||||||
$out .= '</table>';
|
$out .= '</table>';
|
||||||
$out .= '</div>';
|
$out .= '</div>';
|
||||||
@ -370,12 +370,11 @@ if (!$error && $xml)
|
|||||||
$out .= '<td class="right"></td>'."\n";
|
$out .= '<td class="right"></td>'."\n";
|
||||||
$out .= "</tr>\n";
|
$out .= "</tr>\n";
|
||||||
} else {
|
} else {
|
||||||
$out .= '<tr class="oddeven"><td colspan="5" class="opacitymedium">'.$langs->trans("None").'</td></tr>';
|
$out .= '<tr class="oddeven"><td colspan="6" class="opacitymedium">'.$langs->trans("None").'</td></tr>';
|
||||||
}
|
}
|
||||||
$out .= '</table>';
|
$out .= '</table>';
|
||||||
$out .= '</div>';
|
$out .= '</div>';
|
||||||
|
|
||||||
|
|
||||||
// Show warning
|
// Show warning
|
||||||
if (empty($tmpfilelist) && empty($tmpfilelist2) && empty($tmpfilelist3))
|
if (empty($tmpfilelist) && empty($tmpfilelist2) && empty($tmpfilelist3))
|
||||||
{
|
{
|
||||||
|
|||||||
@ -31,7 +31,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php';
|
|||||||
if (!$user->admin) accessforbidden();
|
if (!$user->admin) accessforbidden();
|
||||||
|
|
||||||
// Load translation files required by the page
|
// Load translation files required by the page
|
||||||
$langs->loadLangs(array("admin", "workflow", "propal", "workflow", "orders", "supplier_proposal", "receptions", "errors"));
|
$langs->loadLangs(array("admin", "workflow", "propal", "workflow", "orders", "supplier_proposal", "receptions", "errors", 'sendings'));
|
||||||
|
|
||||||
$action = GETPOST('action', 'aZ09');
|
$action = GETPOST('action', 'aZ09');
|
||||||
|
|
||||||
@ -130,6 +130,14 @@ $workflowcodes = array(
|
|||||||
'enabled'=>(!empty($conf->reception->enabled) && (!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled))),
|
'enabled'=>(!empty($conf->reception->enabled) && (!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled))),
|
||||||
'picto'=>'bill'
|
'picto'=>'bill'
|
||||||
),
|
),
|
||||||
|
|
||||||
|
// Automatic classification shipping
|
||||||
|
'WORKFLOW_SHIPPING_CLASSIFY_CLOSED_INVOICE' => array(
|
||||||
|
'family' => 'classify_shipping',
|
||||||
|
'position' => 66,
|
||||||
|
'enabled' => ! empty($conf->expedition->enabled) && ! empty($conf->facture->enabled),
|
||||||
|
'picto' => 'shipment'
|
||||||
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!empty($conf->modules_parts['workflow']) && is_array($conf->modules_parts['workflow'])) {
|
if (!empty($conf->modules_parts['workflow']) && is_array($conf->modules_parts['workflow'])) {
|
||||||
@ -190,6 +198,7 @@ foreach ($workflowcodes as $key => $params) {
|
|||||||
if ($reg[1] == 'supplier_proposal') $header .= ' - '.$langs->trans('SupplierProposal');
|
if ($reg[1] == 'supplier_proposal') $header .= ' - '.$langs->trans('SupplierProposal');
|
||||||
if ($reg[1] == 'supplier_order') $header .= ' - '.$langs->trans('SupplierOrder');
|
if ($reg[1] == 'supplier_order') $header .= ' - '.$langs->trans('SupplierOrder');
|
||||||
if ($reg[1] == 'reception') $header .= ' - '.$langs->trans('Reception');
|
if ($reg[1] == 'reception') $header .= ' - '.$langs->trans('Reception');
|
||||||
|
if ($reg[1] == 'shipping') $header .= ' - '.$langs->trans('Shipment');
|
||||||
} else {
|
} else {
|
||||||
$header = $langs->trans("Description");
|
$header = $langs->trans("Description");
|
||||||
}
|
}
|
||||||
|
|||||||
@ -134,10 +134,10 @@ if (empty($reshook))
|
|||||||
|
|
||||||
// Set if we used free entry or predefined product
|
// Set if we used free entry or predefined product
|
||||||
$idprod = (int) GETPOST('idprod', 'int');
|
$idprod = (int) GETPOST('idprod', 'int');
|
||||||
$qty = GETPOST('qty', 'int');
|
$qty = price2num(GETPOST('qty', 'alpha'), 'MS');
|
||||||
$qty_frozen = GETPOST('qty_frozen', 'int');
|
$qty_frozen = price2num(GETPOST('qty_frozen', 'alpha'), 'MS');
|
||||||
$disable_stock_change = GETPOST('disable_stock_change', 'int');
|
$disable_stock_change = GETPOST('disable_stock_change', 'int');
|
||||||
$efficiency = GETPOST('efficiency', 'int');
|
$efficiency = price2num(GETPOST('efficiency', 'alpha'));
|
||||||
|
|
||||||
if ($qty == '') {
|
if ($qty == '') {
|
||||||
setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Qty')), null, 'errors');
|
setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Qty')), null, 'errors');
|
||||||
@ -155,8 +155,6 @@ if (empty($reshook))
|
|||||||
|
|
||||||
if (!$error)
|
if (!$error)
|
||||||
{
|
{
|
||||||
$lastposition = 0;
|
|
||||||
|
|
||||||
$bomline = new BOMLine($db);
|
$bomline = new BOMLine($db);
|
||||||
$bomline->fk_bom = $id;
|
$bomline->fk_bom = $id;
|
||||||
$bomline->fk_product = $idprod;
|
$bomline->fk_product = $idprod;
|
||||||
@ -181,8 +179,10 @@ if (empty($reshook))
|
|||||||
unset($_POST['qty_frozen']);
|
unset($_POST['qty_frozen']);
|
||||||
unset($_POST['disable_stock_change']);
|
unset($_POST['disable_stock_change']);
|
||||||
|
|
||||||
$object->fetchLines();
|
$object->fetchLines();
|
||||||
}
|
|
||||||
|
$object->calculateCosts();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -193,10 +193,10 @@ if (empty($reshook))
|
|||||||
$error = 0;
|
$error = 0;
|
||||||
|
|
||||||
// Set if we used free entry or predefined product
|
// Set if we used free entry or predefined product
|
||||||
$qty = price2num(GETPOST('qty', 'int'));
|
$qty = price2num(GETPOST('qty', 'alpha'), 'MS');
|
||||||
$qty_frozen = GETPOST('qty_frozen', 'int');
|
$qty_frozen = price2num(GETPOST('qty_frozen', 'alpha'), 'MS');
|
||||||
$disable_stock_change = GETPOST('disable_stock_change', 'int');
|
$disable_stock_change = GETPOST('disable_stock_change', 'int');
|
||||||
$efficiency = price2num(GETPOST('efficiency', 'int'));
|
$efficiency = price2num(GETPOST('efficiency', 'alpha'));
|
||||||
|
|
||||||
if ($qty == '') {
|
if ($qty == '') {
|
||||||
setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Qty')), null, 'errors');
|
setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Qty')), null, 'errors');
|
||||||
@ -221,7 +221,9 @@ if (empty($reshook))
|
|||||||
unset($_POST['qty_frozen']);
|
unset($_POST['qty_frozen']);
|
||||||
unset($_POST['disable_stock_change']);
|
unset($_POST['disable_stock_change']);
|
||||||
|
|
||||||
$object->fetchLines();
|
$object->fetchLines();
|
||||||
|
|
||||||
|
$object->calculateCosts();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -141,7 +141,7 @@ print '</td>';
|
|||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
if (is_object($objectline)) {
|
if (is_object($objectline)) {
|
||||||
print $objectline->showOptionals($extrafields, 'edit', array('style'=>$bcnd[$var], 'colspan'=>$coldisplay), '', '', 1);
|
print $objectline->showOptionals($extrafields, 'edit', array('style'=>$bcnd[$var], 'colspan'=>$coldisplay), '', '', 1, 'line');
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
||||||
|
|||||||
@ -141,7 +141,7 @@ print '</td>';
|
|||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
if (is_object($objectline)) {
|
if (is_object($objectline)) {
|
||||||
print $objectline->showOptionals($extrafields, 'edit', array('style'=>$bcnd[$var], 'colspan'=>$coldisplay), '', '', 1);
|
print $objectline->showOptionals($extrafields, 'edit', array('style'=>$bcnd[$var], 'colspan'=>$coldisplay), '', '', 1, 'line');
|
||||||
}
|
}
|
||||||
|
|
||||||
print "<!-- END PHP TEMPLATE objectline_edit.tpl.php -->\n";
|
print "<!-- END PHP TEMPLATE objectline_edit.tpl.php -->\n";
|
||||||
|
|||||||
@ -161,7 +161,7 @@ print '</tr>';
|
|||||||
//Line extrafield
|
//Line extrafield
|
||||||
if (!empty($extrafields))
|
if (!empty($extrafields))
|
||||||
{
|
{
|
||||||
print $line->showOptionals($extrafields, 'view', array('style'=>'class="drag drop oddeven"', 'colspan'=>$coldisplay), '', '', 1);
|
print $line->showOptionals($extrafields, 'view', array('style'=>'class="drag drop oddeven"', 'colspan'=>$coldisplay), '', '', 1, 'line');
|
||||||
}
|
}
|
||||||
|
|
||||||
print "<!-- END PHP TEMPLATE objectline_view.tpl.php -->\n";
|
print "<!-- END PHP TEMPLATE objectline_view.tpl.php -->\n";
|
||||||
|
|||||||
@ -1266,6 +1266,12 @@ if ($object->id > 0)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Allow external modules to add their own shortlist of recent objects
|
||||||
|
$parameters = array();
|
||||||
|
$reshook = $hookmanager->executeHooks('addMoreRecentObjects', $parameters, $object, $action);
|
||||||
|
if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
|
||||||
|
else print $hookmanager->resPrint;
|
||||||
|
|
||||||
print '</div></div></div>';
|
print '</div></div></div>';
|
||||||
print '<div style="clear:both"></div>';
|
print '<div style="clear:both"></div>';
|
||||||
|
|
||||||
|
|||||||
@ -130,6 +130,8 @@ $permissiondellink = $usercancreate; // Used by the include of actions_dellink.i
|
|||||||
$permissiontoedit = $usercancreate; // Used by the include of actions_lineupdown.inc.php
|
$permissiontoedit = $usercancreate; // Used by the include of actions_lineupdown.inc.php
|
||||||
|
|
||||||
|
|
||||||
|
//if ($thirdparty->fk_warehouse > 0) $object->warehouse_id = $thirdparty->fk_warehouse;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Actions
|
* Actions
|
||||||
*/
|
*/
|
||||||
@ -242,6 +244,7 @@ if (empty($reshook))
|
|||||||
} // Validation
|
} // Validation
|
||||||
elseif ($action == 'confirm_validate' && $confirm == 'yes' && $usercanvalidate)
|
elseif ($action == 'confirm_validate' && $confirm == 'yes' && $usercanvalidate)
|
||||||
{
|
{
|
||||||
|
$idwarehouse = GETPOST('idwarehouse', 'int');
|
||||||
$result = $object->valid($user);
|
$result = $object->valid($user);
|
||||||
if ($result >= 0)
|
if ($result >= 0)
|
||||||
{
|
{
|
||||||
@ -349,6 +352,7 @@ if (empty($reshook))
|
|||||||
$object->demand_reason_id = GETPOST('demand_reason_id');
|
$object->demand_reason_id = GETPOST('demand_reason_id');
|
||||||
$object->fk_delivery_address = GETPOST('fk_address', 'int');
|
$object->fk_delivery_address = GETPOST('fk_address', 'int');
|
||||||
$object->shipping_method_id = GETPOST('shipping_method_id', 'int');
|
$object->shipping_method_id = GETPOST('shipping_method_id', 'int');
|
||||||
|
$object->warehouse_id = GETPOST('warehouse_id', 'int');
|
||||||
$object->duree_validite = $duration;
|
$object->duree_validite = $duration;
|
||||||
$object->cond_reglement_id = GETPOST('cond_reglement_id');
|
$object->cond_reglement_id = GETPOST('cond_reglement_id');
|
||||||
$object->mode_reglement_id = GETPOST('mode_reglement_id');
|
$object->mode_reglement_id = GETPOST('mode_reglement_id');
|
||||||
@ -380,6 +384,7 @@ if (empty($reshook))
|
|||||||
$object->demand_reason_id = GETPOST('demand_reason_id', 'int');
|
$object->demand_reason_id = GETPOST('demand_reason_id', 'int');
|
||||||
$object->fk_delivery_address = GETPOST('fk_address', 'int');
|
$object->fk_delivery_address = GETPOST('fk_address', 'int');
|
||||||
$object->shipping_method_id = GETPOST('shipping_method_id', 'int');
|
$object->shipping_method_id = GETPOST('shipping_method_id', 'int');
|
||||||
|
$object->warehouse_id = GETPOST('warehouse_id', 'int');
|
||||||
$object->duree_validite = price2num(GETPOST('duree_validite', 'alpha'));
|
$object->duree_validite = price2num(GETPOST('duree_validite', 'alpha'));
|
||||||
$object->cond_reglement_id = GETPOST('cond_reglement_id', 'int');
|
$object->cond_reglement_id = GETPOST('cond_reglement_id', 'int');
|
||||||
$object->mode_reglement_id = GETPOST('mode_reglement_id', 'int');
|
$object->mode_reglement_id = GETPOST('mode_reglement_id', 'int');
|
||||||
@ -796,7 +801,7 @@ if (empty($reshook))
|
|||||||
} elseif ($action == 'addline' && $usercancreate) { // Add line
|
} elseif ($action == 'addline' && $usercancreate) { // Add line
|
||||||
// Set if we used free entry or predefined product
|
// Set if we used free entry or predefined product
|
||||||
$predef = '';
|
$predef = '';
|
||||||
$product_desc = (GETPOSTISSET('dp_desc') ?GETPOST('dp_desc', 'restricthtml') : '');
|
$product_desc = (GETPOSTISSET('dp_desc') ? GETPOST('dp_desc', 'restricthtml') : '');
|
||||||
$price_ht = price2num(GETPOST('price_ht'));
|
$price_ht = price2num(GETPOST('price_ht'));
|
||||||
$price_ht_devise = price2num(GETPOST('multicurrency_price_ht'));
|
$price_ht_devise = price2num(GETPOST('multicurrency_price_ht'));
|
||||||
$prod_entry_mode = GETPOST('prod_entry_mode');
|
$prod_entry_mode = GETPOST('prod_entry_mode');
|
||||||
@ -809,7 +814,7 @@ if (empty($reshook))
|
|||||||
$tva_tx = '';
|
$tva_tx = '';
|
||||||
}
|
}
|
||||||
|
|
||||||
$qty = price2num(GETPOST('qty'.$predef), 'MS');
|
$qty = price2num(GETPOST('qty'.$predef, 'alpha'), 'MS');
|
||||||
$remise_percent = GETPOST('remise_percent'.$predef);
|
$remise_percent = GETPOST('remise_percent'.$predef);
|
||||||
if (empty($remise_percent)) $remise_percent = 0;
|
if (empty($remise_percent)) $remise_percent = 0;
|
||||||
|
|
||||||
@ -999,11 +1004,16 @@ if (empty($reshook))
|
|||||||
$outputlangs->setDefaultLang($newlang);
|
$outputlangs->setDefaultLang($newlang);
|
||||||
}
|
}
|
||||||
|
|
||||||
$desc = (!empty($prod->multilangs [$outputlangs->defaultlang] ["description"])) ? $prod->multilangs [$outputlangs->defaultlang] ["description"] : $prod->description;
|
$desc = (!empty($prod->multilangs[$outputlangs->defaultlang]["description"])) ? $prod->multilangs[$outputlangs->defaultlang]["description"] : $prod->description;
|
||||||
} else {
|
} else {
|
||||||
$desc = $prod->description;
|
$desc = $prod->description;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//If text set in desc is the same as product description (as now it's preloaded) whe add it only one time
|
||||||
|
if ($product_desc==$desc && !empty($conf->global->PRODUIT_AUTOFILL_DESC)) {
|
||||||
|
$product_desc='';
|
||||||
|
}
|
||||||
|
|
||||||
if (!empty($product_desc) && !empty($conf->global->MAIN_NO_CONCAT_DESCRIPTION)) $desc = $product_desc;
|
if (!empty($product_desc) && !empty($conf->global->MAIN_NO_CONCAT_DESCRIPTION)) $desc = $product_desc;
|
||||||
else $desc = dol_concatdesc($desc, $product_desc, '', !empty($conf->global->MAIN_CHANGE_ORDER_CONCAT_DESCRIPTION));
|
else $desc = dol_concatdesc($desc, $product_desc, '', !empty($conf->global->MAIN_CHANGE_ORDER_CONCAT_DESCRIPTION));
|
||||||
|
|
||||||
@ -1234,7 +1244,7 @@ if (empty($reshook))
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$qty = price2num(GETPOST('qty'), 'MS');
|
$qty = price2num(GETPOST('qty', 'alpha'), 'MS');
|
||||||
|
|
||||||
$result = $object->updateline(GETPOST('lineid', 'int'), $pu_ht, $qty, GETPOST('remise_percent'), $vat_rate, $localtax1_rate, $localtax2_rate, $description, 'HT', $info_bits, $special_code, GETPOST('fk_parent_line'), 0, $fournprice, $buyingprice, $label, $type, $date_start, $date_end, $array_options, $_POST["units"], $pu_ht_devise);
|
$result = $object->updateline(GETPOST('lineid', 'int'), $pu_ht, $qty, GETPOST('remise_percent'), $vat_rate, $localtax1_rate, $localtax2_rate, $description, 'HT', $info_bits, $special_code, GETPOST('fk_parent_line'), 0, $fournprice, $buyingprice, $label, $type, $date_start, $date_end, $array_options, $_POST["units"], $pu_ht_devise);
|
||||||
|
|
||||||
@ -1320,6 +1330,9 @@ if (empty($reshook))
|
|||||||
} // shipping method
|
} // shipping method
|
||||||
elseif ($action == 'setshippingmethod' && $usercancreate) {
|
elseif ($action == 'setshippingmethod' && $usercancreate) {
|
||||||
$result = $object->setShippingMethod(GETPOST('shipping_method_id', 'int'));
|
$result = $object->setShippingMethod(GETPOST('shipping_method_id', 'int'));
|
||||||
|
}// warehouse
|
||||||
|
elseif ($action == 'setwarehouse' && $usercancreate) {
|
||||||
|
$result = $object->setWarehouse(GETPOST('warehouse_id', 'int'));
|
||||||
} elseif ($action == 'update_extras') {
|
} elseif ($action == 'update_extras') {
|
||||||
$object->oldcopy = dol_clone($object);
|
$object->oldcopy = dol_clone($object);
|
||||||
|
|
||||||
@ -1464,6 +1477,7 @@ if ($action == 'create')
|
|||||||
$mode_reglement_id = (!empty($objectsrc->mode_reglement_id) ? $objectsrc->mode_reglement_id : (!empty($soc->mode_reglement_id) ? $soc->mode_reglement_id : 0));
|
$mode_reglement_id = (!empty($objectsrc->mode_reglement_id) ? $objectsrc->mode_reglement_id : (!empty($soc->mode_reglement_id) ? $soc->mode_reglement_id : 0));
|
||||||
$remise_percent = (!empty($objectsrc->remise_percent) ? $objectsrc->remise_percent : (!empty($soc->remise_percent) ? $soc->remise_percent : 0));
|
$remise_percent = (!empty($objectsrc->remise_percent) ? $objectsrc->remise_percent : (!empty($soc->remise_percent) ? $soc->remise_percent : 0));
|
||||||
$remise_absolue = (!empty($objectsrc->remise_absolue) ? $objectsrc->remise_absolue : (!empty($soc->remise_absolue) ? $soc->remise_absolue : 0));
|
$remise_absolue = (!empty($objectsrc->remise_absolue) ? $objectsrc->remise_absolue : (!empty($soc->remise_absolue) ? $soc->remise_absolue : 0));
|
||||||
|
$warehouse_id = (!empty($objectsrc->warehouse_id) ? $objectsrc->warehouse_id : (!empty($soc->warehouse_id) ? $soc->warehouse_id : 0));
|
||||||
$dateinvoice = (empty($dateinvoice) ? (empty($conf->global->MAIN_AUTOFILL_DATE) ?-1 : '') : $dateinvoice);
|
$dateinvoice = (empty($dateinvoice) ? (empty($conf->global->MAIN_AUTOFILL_DATE) ?-1 : '') : $dateinvoice);
|
||||||
|
|
||||||
// Replicate extrafields
|
// Replicate extrafields
|
||||||
@ -1480,6 +1494,13 @@ if ($action == 'create')
|
|||||||
if (!empty($conf->multicurrency->enabled) && !empty($soc->multicurrency_code)) $currency_code = $soc->multicurrency_code;
|
if (!empty($conf->multicurrency->enabled) && !empty($soc->multicurrency_code)) $currency_code = $soc->multicurrency_code;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Warehouse default if null
|
||||||
|
if (!empty($conf->stock->enabled) && empty($warehouse_id) && !empty($conf->global->WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER))
|
||||||
|
{
|
||||||
|
if (empty($object->warehouse_id) && !empty($conf->global->MAIN_DEFAULT_WAREHOUSE)) $warehouse_id = $conf->global->MAIN_DEFAULT_WAREHOUSE;
|
||||||
|
if (empty($object->warehouse_id) && !empty($conf->global->MAIN_DEFAULT_WAREHOUSE_USER)) $warehouse_id = $user->fk_warehouse;
|
||||||
|
}
|
||||||
|
|
||||||
$object = new Propal($db);
|
$object = new Propal($db);
|
||||||
|
|
||||||
print '<form name="addprop" action="'.$_SERVER["PHP_SELF"].'" method="POST">';
|
print '<form name="addprop" action="'.$_SERVER["PHP_SELF"].'" method="POST">';
|
||||||
@ -1512,9 +1533,13 @@ if ($action == 'create')
|
|||||||
print $soc->getNomUrl(1);
|
print $soc->getNomUrl(1);
|
||||||
print '<input type="hidden" name="socid" value="'.$soc->id.'">';
|
print '<input type="hidden" name="socid" value="'.$soc->id.'">';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
|
if (!empty($conf->global->SOCIETE_ASK_FOR_SHIPPING_METHOD) && !empty($soc->shipping_method_id)) {
|
||||||
|
$shipping_method_id = $soc->shipping_method_id;
|
||||||
|
}
|
||||||
|
//$warehouse_id = $soc->warehouse_id;
|
||||||
} else {
|
} else {
|
||||||
print '<td>';
|
print '<td>';
|
||||||
print $form->select_company('', 'socid', '(s.client = 1 OR s.client = 2 OR s.client = 3) AND status=1', 'SelectThirdParty', 0, 0, null, 0, 'minwidth300 maxwidth500');
|
print img_picto('', 'company').$form->select_company('', 'socid', '(s.client = 1 OR s.client = 2 OR s.client = 3) AND status=1', 'SelectThirdParty', 0, 0, null, 0, 'minwidth300 maxwidth500');
|
||||||
// reload page to retrieve customer informations
|
// reload page to retrieve customer informations
|
||||||
if (empty($conf->global->RELOAD_PAGE_ON_CUSTOMER_CHANGE_DISABLED))
|
if (empty($conf->global->RELOAD_PAGE_ON_CUSTOMER_CHANGE_DISABLED))
|
||||||
{
|
{
|
||||||
@ -1538,6 +1563,7 @@ if ($action == 'create')
|
|||||||
{
|
{
|
||||||
// Contacts (ask contact only if thirdparty already defined).
|
// Contacts (ask contact only if thirdparty already defined).
|
||||||
print "<tr><td>".$langs->trans("DefaultContact").'</td><td>';
|
print "<tr><td>".$langs->trans("DefaultContact").'</td><td>';
|
||||||
|
print img_picto('', 'contact');
|
||||||
$form->select_contacts($soc->id, $contactid, 'contactid', 1, $srccontactslist);
|
$form->select_contacts($soc->id, $contactid, 'contactid', 1, $srccontactslist);
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
@ -1555,25 +1581,28 @@ if ($action == 'create')
|
|||||||
|
|
||||||
// Date
|
// Date
|
||||||
print '<tr><td class="fieldrequired">'.$langs->trans('Date').'</td><td>';
|
print '<tr><td class="fieldrequired">'.$langs->trans('Date').'</td><td>';
|
||||||
print $form->selectDate('', '', '', '', '', "addprop", 1, 1);
|
print img_picto('', 'object_calendarday').' '.$form->selectDate('', '', '', '', '', "addprop", 1, 1);
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
// Validaty duration
|
// Validaty duration
|
||||||
print '<tr><td class="fieldrequired">'.$langs->trans("ValidityDuration").'</td><td><input name="duree_validite" class="width50" value="'.(GETPOSTISSET('duree_validite') ? GETPOST('duree_validite', 'alphanohtml') : $conf->global->PROPALE_VALIDITY_DURATION).'"> '.$langs->trans("days").'</td></tr>';
|
print '<tr><td class="fieldrequired">'.$langs->trans("ValidityDuration").'</td><td>'.img_picto('', 'clock').' <input name="duree_validite" class="width50" value="'.(GETPOSTISSET('duree_validite') ? GETPOST('duree_validite', 'alphanohtml') : $conf->global->PROPALE_VALIDITY_DURATION).'"> '.$langs->trans("days").'</td></tr>';
|
||||||
|
|
||||||
// Terms of payment
|
// Terms of payment
|
||||||
print '<tr><td class="nowrap">'.$langs->trans('PaymentConditionsShort').'</td><td>';
|
print '<tr><td class="nowrap">'.$langs->trans('PaymentConditionsShort').'</td><td>';
|
||||||
|
print img_picto('', 'paiment');
|
||||||
$form->select_conditions_paiements((GETPOSTISSET('cond_reglement_id') ? GETPOST('cond_reglement_id', 'int') : $soc->cond_reglement_id), 'cond_reglement_id', -1, 1);
|
$form->select_conditions_paiements((GETPOSTISSET('cond_reglement_id') ? GETPOST('cond_reglement_id', 'int') : $soc->cond_reglement_id), 'cond_reglement_id', -1, 1);
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
// Mode of payment
|
// Mode of payment
|
||||||
print '<tr><td>'.$langs->trans('PaymentMode').'</td><td>';
|
print '<tr><td>'.$langs->trans('PaymentMode').'</td><td>';
|
||||||
|
print img_picto('', 'bank').' ';
|
||||||
$form->select_types_paiements((GETPOSTISSET('mode_reglement_id') ? GETPOST('mode_reglement_id', 'int') : $soc->mode_reglement_id), 'mode_reglement_id');
|
$form->select_types_paiements((GETPOSTISSET('mode_reglement_id') ? GETPOST('mode_reglement_id', 'int') : $soc->mode_reglement_id), 'mode_reglement_id');
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
// Bank Account
|
// Bank Account
|
||||||
if (!empty($conf->global->BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL) && !empty($conf->banque->enabled)) {
|
if (!empty($conf->global->BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL) && !empty($conf->banque->enabled)) {
|
||||||
print '<tr><td>'.$langs->trans('BankAccount').'</td><td>';
|
print '<tr><td>'.$langs->trans('BankAccount').'</td><td>';
|
||||||
|
print img_picto('', 'bank_account');
|
||||||
$form->select_comptes($soc->fk_account, 'fk_account', 0, '', 1);
|
$form->select_comptes($soc->fk_account, 'fk_account', 0, '', 1);
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
}
|
}
|
||||||
@ -1588,6 +1617,7 @@ if ($action == 'create')
|
|||||||
if (!empty($conf->commande->enabled))
|
if (!empty($conf->commande->enabled))
|
||||||
print ' ('.$langs->trans('AfterOrder').')';
|
print ' ('.$langs->trans('AfterOrder').')';
|
||||||
print '</td><td>';
|
print '</td><td>';
|
||||||
|
print img_picto('', 'clock').' ';
|
||||||
$form->selectAvailabilityDelay('', 'availability_id', '', 1);
|
$form->selectAvailabilityDelay('', 'availability_id', '', 1);
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
@ -1597,13 +1627,24 @@ if ($action == 'create')
|
|||||||
$shipping_method_id = $soc->shipping_method_id;
|
$shipping_method_id = $soc->shipping_method_id;
|
||||||
}
|
}
|
||||||
print '<tr><td>'.$langs->trans('SendingMethod').'</td><td>';
|
print '<tr><td>'.$langs->trans('SendingMethod').'</td><td>';
|
||||||
|
print img_picto('', 'object_dollyrevert').' ';
|
||||||
print $form->selectShippingMethod($shipping_method_id, 'shipping_method_id', '', 1);
|
print $form->selectShippingMethod($shipping_method_id, 'shipping_method_id', '', 1);
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Warehouse
|
||||||
|
if (!empty($conf->stock->enabled) && !empty($conf->global->WAREHOUSE_ASK_WAREHOUSE_DURING_PROPAL)) {
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/product/class/html.formproduct.class.php';
|
||||||
|
$formproduct = new FormProduct($db);
|
||||||
|
print '<tr><td>'.$langs->trans('Warehouse').'</td><td>';
|
||||||
|
print img_picto('', 'stock').$formproduct->selectWarehouses($warehouse_id, 'warehouse_id', '', 1, 0, 0, '', 0, 0, array(), 'maxwidth175 maxwidth500 widthcentpercentminusxx');
|
||||||
|
print '</td></tr>';
|
||||||
|
}
|
||||||
|
|
||||||
// Delivery date (or manufacturing)
|
// Delivery date (or manufacturing)
|
||||||
print '<tr><td>'.$langs->trans("DeliveryDate").'</td>';
|
print '<tr><td>'.$langs->trans("DeliveryDate").'</td>';
|
||||||
print '<td>';
|
print '<td>';
|
||||||
|
print img_picto('', 'object_calendarday').' ';
|
||||||
if ($conf->global->DATE_LIVRAISON_WEEK_DELAY != "") {
|
if ($conf->global->DATE_LIVRAISON_WEEK_DELAY != "") {
|
||||||
$tmpdte = time() + ((7 * $conf->global->DATE_LIVRAISON_WEEK_DELAY) * 24 * 60 * 60);
|
$tmpdte = time() + ((7 * $conf->global->DATE_LIVRAISON_WEEK_DELAY) * 24 * 60 * 60);
|
||||||
$syear = date("Y", $tmpdte);
|
$syear = date("Y", $tmpdte);
|
||||||
@ -1621,6 +1662,7 @@ if ($action == 'create')
|
|||||||
$langs->load("projects");
|
$langs->load("projects");
|
||||||
print '<tr>';
|
print '<tr>';
|
||||||
print '<td>'.$langs->trans("Project").'</td><td>';
|
print '<td>'.$langs->trans("Project").'</td><td>';
|
||||||
|
print img_picto('', 'project');
|
||||||
$numprojet = $formproject->select_projects(($soc->id > 0 ? $soc->id : -1), $projectid, 'projectid', 0, 0, 1, 1, 0, 0, 0, '', 0, 0, 'maxwidth500');
|
$numprojet = $formproject->select_projects(($soc->id > 0 ? $soc->id : -1), $projectid, 'projectid', 0, 0, 1, 1, 0, 0, 0, '', 0, 0, 'maxwidth500');
|
||||||
print ' <a href="'.DOL_URL_ROOT.'/projet/card.php?socid='.$soc->id.'&action=create&status=1&backtopage='.urlencode($_SERVER["PHP_SELF"].'?action=create&socid='.$soc->id).'"><span class="fa fa-plus-circle valignmiddle paddingleft" title="'.$langs->trans("AddProject").'"></span></a>';
|
print ' <a href="'.DOL_URL_ROOT.'/projet/card.php?socid='.$soc->id.'&action=create&status=1&backtopage='.urlencode($_SERVER["PHP_SELF"].'?action=create&socid='.$soc->id).'"><span class="fa fa-plus-circle valignmiddle paddingleft" title="'.$langs->trans("AddProject").'"></span></a>';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
@ -1641,6 +1683,7 @@ if ($action == 'create')
|
|||||||
print '<tr>';
|
print '<tr>';
|
||||||
print '<td>'.$langs->trans("DefaultModel").'</td>';
|
print '<td>'.$langs->trans("DefaultModel").'</td>';
|
||||||
print '<td>';
|
print '<td>';
|
||||||
|
print img_picto('', 'pdf').' ';
|
||||||
$liste = ModelePDFPropales::liste_modeles($db);
|
$liste = ModelePDFPropales::liste_modeles($db);
|
||||||
print $form->selectarray('model', $liste, ($conf->global->PROPALE_ADDON_PDF_ODT_DEFAULT ? $conf->global->PROPALE_ADDON_PDF_ODT_DEFAULT : $conf->global->PROPALE_ADDON_PDF));
|
print $form->selectarray('model', $liste, ($conf->global->PROPALE_ADDON_PDF_ODT_DEFAULT ? $conf->global->PROPALE_ADDON_PDF_ODT_DEFAULT : $conf->global->PROPALE_ADDON_PDF));
|
||||||
print "</td></tr>";
|
print "</td></tr>";
|
||||||
@ -2097,6 +2140,24 @@ if ($action == 'create')
|
|||||||
print '</tr>';
|
print '</tr>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Warehouse
|
||||||
|
if (!empty($conf->stock->enabled) && !empty($conf->global->WAREHOUSE_ASK_WAREHOUSE_DURING_PROPAL)) {
|
||||||
|
$langs->load('stocks');
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/product/class/html.formproduct.class.php';
|
||||||
|
$formproduct = new FormProduct($db);
|
||||||
|
print '<tr><td>';
|
||||||
|
$editenable = $usercancreate;
|
||||||
|
print $form->editfieldkey("Warehouse", 'warehouse', '', $object, $editenable);
|
||||||
|
print '</td><td>';
|
||||||
|
if ($action == 'editwarehouse') {
|
||||||
|
$formproduct->formSelectWarehouses($_SERVER['PHP_SELF'].'?id='.$object->id, $object->warehouse_id, 'warehouse_id', 1);
|
||||||
|
} else {
|
||||||
|
$formproduct->formSelectWarehouses($_SERVER['PHP_SELF'].'?id='.$object->id, $object->warehouse_id, 'none');
|
||||||
|
}
|
||||||
|
print '</td>';
|
||||||
|
print '</tr>';
|
||||||
|
}
|
||||||
|
|
||||||
// Origin of demand
|
// Origin of demand
|
||||||
print '<tr><td>';
|
print '<tr><td>';
|
||||||
print '<table class="nobordernopadding" width="100%"><tr><td>';
|
print '<table class="nobordernopadding" width="100%"><tr><td>';
|
||||||
|
|||||||
@ -208,6 +208,8 @@ class Propal extends CommonObject
|
|||||||
public $demand_reason_id;
|
public $demand_reason_id;
|
||||||
public $demand_reason_code;
|
public $demand_reason_code;
|
||||||
|
|
||||||
|
public $warehouse_id;
|
||||||
|
|
||||||
public $extraparams = array();
|
public $extraparams = array();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -231,8 +233,6 @@ class Propal extends CommonObject
|
|||||||
public $multicurrency_total_tva;
|
public $multicurrency_total_tva;
|
||||||
public $multicurrency_total_ttc;
|
public $multicurrency_total_ttc;
|
||||||
|
|
||||||
public $oldcopy;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 'type' if the field format ('integer', 'integer:ObjectClass:PathToClass[:AddCreateButtonOrNot[:Filter]]', 'varchar(x)', 'double(24,8)', 'real', 'price', 'text', 'html', 'date', 'datetime', 'timestamp', 'duration', 'mail', 'phone', 'url', 'password')
|
* 'type' if the field format ('integer', 'integer:ObjectClass:PathToClass[:AddCreateButtonOrNot[:Filter]]', 'varchar(x)', 'double(24,8)', 'real', 'price', 'text', 'html', 'date', 'datetime', 'timestamp', 'duration', 'mail', 'phone', 'url', 'password')
|
||||||
@ -298,6 +298,7 @@ class Propal extends CommonObject
|
|||||||
'model_pdf' =>array('type'=>'varchar(255)', 'label'=>'PDFTemplate', 'enabled'=>1, 'visible'=>0, 'position'=>180),
|
'model_pdf' =>array('type'=>'varchar(255)', 'label'=>'PDFTemplate', 'enabled'=>1, 'visible'=>0, 'position'=>180),
|
||||||
'date_livraison' =>array('type'=>'date', 'label'=>'DateDeliveryPlanned', 'enabled'=>1, 'visible'=>-1, 'position'=>185),
|
'date_livraison' =>array('type'=>'date', 'label'=>'DateDeliveryPlanned', 'enabled'=>1, 'visible'=>-1, 'position'=>185),
|
||||||
'fk_shipping_method' =>array('type'=>'integer', 'label'=>'ShippingMethod', 'enabled'=>1, 'visible'=>-1, 'position'=>190),
|
'fk_shipping_method' =>array('type'=>'integer', 'label'=>'ShippingMethod', 'enabled'=>1, 'visible'=>-1, 'position'=>190),
|
||||||
|
'fk_warehouse' =>array('type'=>'integer:Entrepot:product/stock/class/entrepot.class.php', 'label'=>'Fk warehouse', 'enabled'=>1, 'visible'=>-1, 'position'=>191),
|
||||||
'fk_availability' =>array('type'=>'integer', 'label'=>'Availability', 'enabled'=>1, 'visible'=>-1, 'position'=>195),
|
'fk_availability' =>array('type'=>'integer', 'label'=>'Availability', 'enabled'=>1, 'visible'=>-1, 'position'=>195),
|
||||||
'fk_delivery_address' =>array('type'=>'integer', 'label'=>'DeliveryAddress', 'enabled'=>1, 'visible'=>0, 'position'=>200), // deprecated
|
'fk_delivery_address' =>array('type'=>'integer', 'label'=>'DeliveryAddress', 'enabled'=>1, 'visible'=>0, 'position'=>200), // deprecated
|
||||||
'fk_input_reason' =>array('type'=>'integer', 'label'=>'InputReason', 'enabled'=>1, 'visible'=>-1, 'position'=>205),
|
'fk_input_reason' =>array('type'=>'integer', 'label'=>'InputReason', 'enabled'=>1, 'visible'=>-1, 'position'=>205),
|
||||||
@ -1051,6 +1052,7 @@ class Propal extends CommonObject
|
|||||||
$sql .= ", ref_client";
|
$sql .= ", ref_client";
|
||||||
$sql .= ", date_livraison";
|
$sql .= ", date_livraison";
|
||||||
$sql .= ", fk_shipping_method";
|
$sql .= ", fk_shipping_method";
|
||||||
|
$sql .= ", fk_warehouse";
|
||||||
$sql .= ", fk_availability";
|
$sql .= ", fk_availability";
|
||||||
$sql .= ", fk_input_reason";
|
$sql .= ", fk_input_reason";
|
||||||
$sql .= ", fk_projet";
|
$sql .= ", fk_projet";
|
||||||
@ -1083,6 +1085,7 @@ class Propal extends CommonObject
|
|||||||
$sql .= ", '".$this->db->escape($this->ref_client)."'";
|
$sql .= ", '".$this->db->escape($this->ref_client)."'";
|
||||||
$sql .= ", ".(empty($delivery_date) ? "NULL" : "'".$this->db->idate($delivery_date)."'");
|
$sql .= ", ".(empty($delivery_date) ? "NULL" : "'".$this->db->idate($delivery_date)."'");
|
||||||
$sql .= ", ".($this->shipping_method_id > 0 ? $this->shipping_method_id : 'NULL');
|
$sql .= ", ".($this->shipping_method_id > 0 ? $this->shipping_method_id : 'NULL');
|
||||||
|
$sql .= ", ".($this->warehouse_id > 0 ? $this->warehouse_id : 'NULL');
|
||||||
$sql .= ", ".$this->availability_id;
|
$sql .= ", ".$this->availability_id;
|
||||||
$sql .= ", ".$this->demand_reason_id;
|
$sql .= ", ".$this->demand_reason_id;
|
||||||
$sql .= ", ".($this->fk_project ? $this->fk_project : "null");
|
$sql .= ", ".($this->fk_project ? $this->fk_project : "null");
|
||||||
@ -1437,6 +1440,7 @@ class Propal extends CommonObject
|
|||||||
$sql .= ", p.fk_mode_reglement";
|
$sql .= ", p.fk_mode_reglement";
|
||||||
$sql .= ', p.fk_account';
|
$sql .= ', p.fk_account';
|
||||||
$sql .= ", p.fk_shipping_method";
|
$sql .= ", p.fk_shipping_method";
|
||||||
|
$sql .= ", p.fk_warehouse";
|
||||||
$sql .= ", p.fk_incoterms, p.location_incoterms";
|
$sql .= ", p.fk_incoterms, p.location_incoterms";
|
||||||
$sql .= ", p.fk_multicurrency, p.multicurrency_code, p.multicurrency_tx, p.multicurrency_total_ht, p.multicurrency_total_tva, p.multicurrency_total_ttc";
|
$sql .= ", p.fk_multicurrency, p.multicurrency_code, p.multicurrency_tx, p.multicurrency_total_ht, p.multicurrency_total_tva, p.multicurrency_total_ttc";
|
||||||
$sql .= ", p.tms as date_modification";
|
$sql .= ", p.tms as date_modification";
|
||||||
@ -1510,6 +1514,7 @@ class Propal extends CommonObject
|
|||||||
$this->date_livraison = $this->db->jdate($obj->delivery_date); // deprecated
|
$this->date_livraison = $this->db->jdate($obj->delivery_date); // deprecated
|
||||||
$this->delivery_date = $this->db->jdate($obj->delivery_date);
|
$this->delivery_date = $this->db->jdate($obj->delivery_date);
|
||||||
$this->shipping_method_id = ($obj->fk_shipping_method > 0) ? $obj->fk_shipping_method : null;
|
$this->shipping_method_id = ($obj->fk_shipping_method > 0) ? $obj->fk_shipping_method : null;
|
||||||
|
$this->warehouse_id = ($obj->fk_warehouse > 0) ? $obj->fk_warehouse : null;
|
||||||
$this->availability_id = $obj->fk_availability;
|
$this->availability_id = $obj->fk_availability;
|
||||||
$this->availability_code = $obj->availability_code;
|
$this->availability_code = $obj->availability_code;
|
||||||
$this->availability = $obj->availability;
|
$this->availability = $obj->availability;
|
||||||
|
|||||||
@ -47,6 +47,7 @@ require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php';
|
|||||||
|
|
||||||
// Load translation files required by the page
|
// Load translation files required by the page
|
||||||
$langs->loadLangs(array('companies', 'propal', 'compta', 'bills', 'orders', 'products', 'deliveries', 'categories'));
|
$langs->loadLangs(array('companies', 'propal', 'compta', 'bills', 'orders', 'products', 'deliveries', 'categories'));
|
||||||
|
if (!empty($conf->expedition->enabled)) $langs->loadLangs(array('sendings'));
|
||||||
|
|
||||||
$socid = GETPOST('socid', 'int');
|
$socid = GETPOST('socid', 'int');
|
||||||
|
|
||||||
@ -66,6 +67,7 @@ $search_refproject = GETPOST('search_refproject', 'alpha');
|
|||||||
$search_project = GETPOST('search_project', 'alpha');
|
$search_project = GETPOST('search_project', 'alpha');
|
||||||
|
|
||||||
$search_societe = GETPOST('search_societe', 'alpha');
|
$search_societe = GETPOST('search_societe', 'alpha');
|
||||||
|
$search_societe_alias = GETPOST('search_societe_alias', 'alpha');
|
||||||
$search_montant_ht = GETPOST('search_montant_ht', 'alpha');
|
$search_montant_ht = GETPOST('search_montant_ht', 'alpha');
|
||||||
$search_montant_vat = GETPOST('search_montant_vat', 'alpha');
|
$search_montant_vat = GETPOST('search_montant_vat', 'alpha');
|
||||||
$search_montant_ttc = GETPOST('search_montant_ttc', 'alpha');
|
$search_montant_ttc = GETPOST('search_montant_ttc', 'alpha');
|
||||||
@ -89,6 +91,9 @@ $search_datedelivery_start = dol_mktime(0, 0, 0, GETPOST('search_datedelivery_st
|
|||||||
$search_datedelivery_end = dol_mktime(23, 59, 59, GETPOST('search_datedelivery_endmonth', 'int'), GETPOST('search_datedelivery_endday', 'int'), GETPOST('search_datedelivery_endyear', 'int'));
|
$search_datedelivery_end = dol_mktime(23, 59, 59, GETPOST('search_datedelivery_endmonth', 'int'), GETPOST('search_datedelivery_endday', 'int'), GETPOST('search_datedelivery_endyear', 'int'));
|
||||||
$search_availability = GETPOST('search_availability', 'int');
|
$search_availability = GETPOST('search_availability', 'int');
|
||||||
$search_categ_cus = GETPOST("search_categ_cus", 'int');
|
$search_categ_cus = GETPOST("search_categ_cus", 'int');
|
||||||
|
$search_fk_cond_reglement = GETPOST("search_fk_cond_reglement", 'int');
|
||||||
|
$search_fk_shipping_method = GETPOST("search_fk_shipping_method", 'int');
|
||||||
|
$search_fk_mode_reglement = GETPOST("search_fk_mode_reglement", 'int');
|
||||||
$search_btn = GETPOST('button_search', 'alpha');
|
$search_btn = GETPOST('button_search', 'alpha');
|
||||||
$search_remove_btn = GETPOST('button_removefilter', 'alpha');
|
$search_remove_btn = GETPOST('button_removefilter', 'alpha');
|
||||||
|
|
||||||
@ -157,6 +162,7 @@ $arrayfields = array(
|
|||||||
'pr.ref'=>array('label'=>"ProjectRef", 'checked'=>1, 'enabled'=>(empty($conf->projet->enabled) ? 0 : 1)),
|
'pr.ref'=>array('label'=>"ProjectRef", 'checked'=>1, 'enabled'=>(empty($conf->projet->enabled) ? 0 : 1)),
|
||||||
'pr.title'=>array('label'=>"ProjectLabel", 'checked'=>0, 'enabled'=>(empty($conf->projet->enabled) ? 0 : 1)),
|
'pr.title'=>array('label'=>"ProjectLabel", 'checked'=>0, 'enabled'=>(empty($conf->projet->enabled) ? 0 : 1)),
|
||||||
's.nom'=>array('label'=>"ThirdParty", 'checked'=>1),
|
's.nom'=>array('label'=>"ThirdParty", 'checked'=>1),
|
||||||
|
's.name_alias'=>array('label'=>"AliasNameShort", 'checked'=>1),
|
||||||
's.town'=>array('label'=>"Town", 'checked'=>1),
|
's.town'=>array('label'=>"Town", 'checked'=>1),
|
||||||
's.zip'=>array('label'=>"Zip", 'checked'=>1),
|
's.zip'=>array('label'=>"Zip", 'checked'=>1),
|
||||||
'state.nom'=>array('label'=>"StateShort", 'checked'=>0),
|
'state.nom'=>array('label'=>"StateShort", 'checked'=>0),
|
||||||
@ -166,6 +172,9 @@ $arrayfields = array(
|
|||||||
'p.fin_validite'=>array('label'=>"DateEnd", 'checked'=>1),
|
'p.fin_validite'=>array('label'=>"DateEnd", 'checked'=>1),
|
||||||
'p.date_livraison'=>array('label'=>"DeliveryDate", 'checked'=>0),
|
'p.date_livraison'=>array('label'=>"DeliveryDate", 'checked'=>0),
|
||||||
'ava.rowid'=>array('label'=>"AvailabilityPeriod", 'checked'=>0),
|
'ava.rowid'=>array('label'=>"AvailabilityPeriod", 'checked'=>0),
|
||||||
|
'p.fk_shipping_method'=>array('label'=>"SendingMethod", 'checked'=>0, 'enabled'=>!empty($conf->expedition->enabled)),
|
||||||
|
'p.fk_cond_reglement'=>array('label'=>"PaymentConditionsShort", 'checked'=>0),
|
||||||
|
'p.fk_mode_reglement'=>array('label'=>"PaymentMode", 'checked'=>0),
|
||||||
'p.total_ht'=>array('label'=>"AmountHT", 'checked'=>1),
|
'p.total_ht'=>array('label'=>"AmountHT", 'checked'=>1),
|
||||||
'p.total_vat'=>array('label'=>"AmountVAT", 'checked'=>0),
|
'p.total_vat'=>array('label'=>"AmountVAT", 'checked'=>0),
|
||||||
'p.total_ttc'=>array('label'=>"AmountTTC", 'checked'=>0),
|
'p.total_ttc'=>array('label'=>"AmountTTC", 'checked'=>0),
|
||||||
@ -187,6 +196,7 @@ $arrayfields = array(
|
|||||||
'p.note_private'=>array('label'=>'NotePrivate', 'checked'=>0, 'position'=>511, 'enabled'=>(empty($conf->global->MAIN_LIST_ALLOW_PRIVATE_NOTES))),
|
'p.note_private'=>array('label'=>'NotePrivate', 'checked'=>0, 'position'=>511, 'enabled'=>(empty($conf->global->MAIN_LIST_ALLOW_PRIVATE_NOTES))),
|
||||||
'p.fk_statut'=>array('label'=>"Status", 'checked'=>1, 'position'=>1000),
|
'p.fk_statut'=>array('label'=>"Status", 'checked'=>1, 'position'=>1000),
|
||||||
);
|
);
|
||||||
|
|
||||||
// Extra fields
|
// Extra fields
|
||||||
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_array_fields.tpl.php';
|
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_array_fields.tpl.php';
|
||||||
|
|
||||||
@ -215,6 +225,7 @@ if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x'
|
|||||||
$search_refproject = '';
|
$search_refproject = '';
|
||||||
$search_project = '';
|
$search_project = '';
|
||||||
$search_societe = '';
|
$search_societe = '';
|
||||||
|
$search_societe_alias = '';
|
||||||
$search_montant_ht = '';
|
$search_montant_ht = '';
|
||||||
$search_montant_vat = '';
|
$search_montant_vat = '';
|
||||||
$search_montant_ttc = '';
|
$search_montant_ttc = '';
|
||||||
@ -243,6 +254,9 @@ if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x'
|
|||||||
$toselect = '';
|
$toselect = '';
|
||||||
$search_array_options = array();
|
$search_array_options = array();
|
||||||
$search_categ_cus = 0;
|
$search_categ_cus = 0;
|
||||||
|
$search_fk_cond_reglement = '';
|
||||||
|
$search_fk_shipping_method = '';
|
||||||
|
$search_fk_mode_reglement = '';
|
||||||
}
|
}
|
||||||
if ($object_statut != '') $search_status = $object_statut;
|
if ($object_statut != '') $search_status = $object_statut;
|
||||||
|
|
||||||
@ -278,7 +292,7 @@ $help_url = 'EN:Commercial_Proposals|FR:Proposition_commerciale|ES:Presupuestos'
|
|||||||
|
|
||||||
$sql = 'SELECT';
|
$sql = 'SELECT';
|
||||||
if ($sall || $search_product_category > 0) $sql = 'SELECT DISTINCT';
|
if ($sall || $search_product_category > 0) $sql = 'SELECT DISTINCT';
|
||||||
$sql .= ' s.rowid as socid, s.nom as name, s.email, s.town, s.zip, s.fk_pays, s.client, s.code_client, ';
|
$sql .= ' s.rowid as socid, s.nom as name, s.name_alias as alias, s.email, s.town, s.zip, s.fk_pays, s.client, s.code_client, ';
|
||||||
$sql .= " typent.code as typent_code,";
|
$sql .= " typent.code as typent_code,";
|
||||||
$sql .= " ava.rowid as availability,";
|
$sql .= " ava.rowid as availability,";
|
||||||
$sql .= " state.code_departement as state_code, state.nom as state_name,";
|
$sql .= " state.code_departement as state_code, state.nom as state_name,";
|
||||||
@ -286,6 +300,7 @@ $sql .= ' p.rowid, p.entity, p.note_private, p.total_ht, p.tva as total_vat, p.t
|
|||||||
$sql .= ' p.fk_multicurrency, p.multicurrency_code, p.multicurrency_tx, p.multicurrency_total_ht, p.multicurrency_total_tva as multicurrency_total_vat, p.multicurrency_total_ttc,';
|
$sql .= ' p.fk_multicurrency, p.multicurrency_code, p.multicurrency_tx, p.multicurrency_total_ht, p.multicurrency_total_tva as multicurrency_total_vat, p.multicurrency_total_ttc,';
|
||||||
$sql .= ' p.datec as date_creation, p.tms as date_update, p.date_cloture as date_cloture,';
|
$sql .= ' p.datec as date_creation, p.tms as date_update, p.date_cloture as date_cloture,';
|
||||||
$sql .= ' p.note_public, p.note_private,';
|
$sql .= ' p.note_public, p.note_private,';
|
||||||
|
$sql .= ' p.fk_cond_reglement,p.fk_mode_reglement,p.fk_shipping_method,';
|
||||||
$sql .= " pr.rowid as project_id, pr.ref as project_ref, pr.title as project_label,";
|
$sql .= " pr.rowid as project_id, pr.ref as project_ref, pr.title as project_label,";
|
||||||
$sql .= ' u.login';
|
$sql .= ' u.login';
|
||||||
if (!$user->rights->societe->client->voir && !$socid) $sql .= ", sc.fk_soc, sc.fk_user";
|
if (!$user->rights->societe->client->voir && !$socid) $sql .= ", sc.fk_soc, sc.fk_user";
|
||||||
@ -337,6 +352,7 @@ if ($search_project) $sql .= natural_search('pr.title', $search_project);
|
|||||||
if ($search_availability) $sql .= " AND p.fk_availability IN (".$db->sanitize($db->escape($search_availability)).')';
|
if ($search_availability) $sql .= " AND p.fk_availability IN (".$db->sanitize($db->escape($search_availability)).')';
|
||||||
|
|
||||||
if ($search_societe) $sql .= natural_search('s.nom', $search_societe);
|
if ($search_societe) $sql .= natural_search('s.nom', $search_societe);
|
||||||
|
if ($search_societe_alias) $sql .= natural_search('s.name_alias', $search_societe_alias);
|
||||||
if ($search_login) $sql .= natural_search("u.login", $search_login);
|
if ($search_login) $sql .= natural_search("u.login", $search_login);
|
||||||
if ($search_montant_ht != '') $sql .= natural_search("p.total_ht", $search_montant_ht, 1);
|
if ($search_montant_ht != '') $sql .= natural_search("p.total_ht", $search_montant_ht, 1);
|
||||||
if ($search_montant_vat != '') $sql .= natural_search("p.tva", $search_montant_vat, 1);
|
if ($search_montant_vat != '') $sql .= natural_search("p.tva", $search_montant_vat, 1);
|
||||||
@ -352,6 +368,10 @@ if ($sall) {
|
|||||||
if ($search_categ_cus > 0) $sql .= " AND cc.fk_categorie = ".$db->escape($search_categ_cus);
|
if ($search_categ_cus > 0) $sql .= " AND cc.fk_categorie = ".$db->escape($search_categ_cus);
|
||||||
if ($search_categ_cus == -2) $sql .= " AND cc.fk_categorie IS NULL";
|
if ($search_categ_cus == -2) $sql .= " AND cc.fk_categorie IS NULL";
|
||||||
|
|
||||||
|
if ($search_fk_cond_reglement > 0) $sql .= " AND p.fk_cond_reglement = ".$db->escape($search_fk_cond_reglement);
|
||||||
|
if ($search_fk_shipping_method > 0) $sql .= " AND p.fk_shipping_method = ".$db->escape($search_fk_shipping_method);
|
||||||
|
if ($search_fk_mode_reglement > 0) $sql .= " AND p.fk_mode_reglement = ".$db->escape($search_fk_mode_reglement);
|
||||||
|
|
||||||
if ($search_product_category > 0) $sql .= " AND cp.fk_categorie = ".$db->escape($search_product_category);
|
if ($search_product_category > 0) $sql .= " AND cp.fk_categorie = ".$db->escape($search_product_category);
|
||||||
if ($socid > 0) $sql .= ' AND s.rowid = '.$socid;
|
if ($socid > 0) $sql .= ' AND s.rowid = '.$socid;
|
||||||
if ($search_status != '' && $search_status != '-1')
|
if ($search_status != '' && $search_status != '-1')
|
||||||
@ -443,6 +463,7 @@ if ($resql)
|
|||||||
if ($search_refcustomer) $param .= '&search_refcustomer='.urlencode($search_refcustomer);
|
if ($search_refcustomer) $param .= '&search_refcustomer='.urlencode($search_refcustomer);
|
||||||
if ($search_refproject) $param .= '&search_refproject='.urlencode($search_refproject);
|
if ($search_refproject) $param .= '&search_refproject='.urlencode($search_refproject);
|
||||||
if ($search_societe) $param .= '&search_societe='.urlencode($search_societe);
|
if ($search_societe) $param .= '&search_societe='.urlencode($search_societe);
|
||||||
|
if ($search_societe_alias) $param .= '&search_societe_alias='.urlencode($search_societe_alias);
|
||||||
if ($search_user > 0) $param .= '&search_user='.urlencode($search_user);
|
if ($search_user > 0) $param .= '&search_user='.urlencode($search_user);
|
||||||
if ($search_sale > 0) $param .= '&search_sale='.urlencode($search_sale);
|
if ($search_sale > 0) $param .= '&search_sale='.urlencode($search_sale);
|
||||||
if ($search_montant_ht) $param .= '&search_montant_ht='.urlencode($search_montant_ht);
|
if ($search_montant_ht) $param .= '&search_montant_ht='.urlencode($search_montant_ht);
|
||||||
@ -458,6 +479,9 @@ if ($resql)
|
|||||||
if ($optioncss != '') $param .= '&optioncss='.urlencode($optioncss);
|
if ($optioncss != '') $param .= '&optioncss='.urlencode($optioncss);
|
||||||
if ($search_categ_cus > 0) $param .= '&search_categ_cus='.urlencode($search_categ_cus);
|
if ($search_categ_cus > 0) $param .= '&search_categ_cus='.urlencode($search_categ_cus);
|
||||||
if ($search_product_category != '') $param .= '&search_product_category='.$search_product_category;
|
if ($search_product_category != '') $param .= '&search_product_category='.$search_product_category;
|
||||||
|
if ($search_fk_cond_reglement > 0) $param .= '&search_fk_cond_reglement='.$search_fk_cond_reglement;
|
||||||
|
if ($search_fk_shipping_method > 0) $param .= '&search_fk_shipping_method='.$search_fk_shipping_method;
|
||||||
|
if ($search_fk_mode_reglement > 0) $param .= '&search_fk_mode_reglement='.$search_fk_mode_reglement;
|
||||||
|
|
||||||
// Add $param from extra fields
|
// Add $param from extra fields
|
||||||
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_param.tpl.php';
|
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_param.tpl.php';
|
||||||
@ -602,6 +626,12 @@ if ($resql)
|
|||||||
print '<input class="flat maxwidth100" type="text" name="search_societe" value="'.dol_escape_htmltag($search_societe).'">';
|
print '<input class="flat maxwidth100" type="text" name="search_societe" value="'.dol_escape_htmltag($search_societe).'">';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
|
if (!empty($arrayfields['s.name_alias']['checked']))
|
||||||
|
{
|
||||||
|
print '<td class="liste_titre" align="left">';
|
||||||
|
print '<input class="flat maxwidth100" type="text" name="search_societe_alias" value="'.dol_escape_htmltag($search_societe_alias).'">';
|
||||||
|
print '</td>';
|
||||||
|
}
|
||||||
if (!empty($arrayfields['s.town']['checked'])) print '<td class="liste_titre"><input class="flat maxwidth50" type="text" name="search_town" value="'.$search_town.'"></td>';
|
if (!empty($arrayfields['s.town']['checked'])) print '<td class="liste_titre"><input class="flat maxwidth50" type="text" name="search_town" value="'.$search_town.'"></td>';
|
||||||
if (!empty($arrayfields['s.zip']['checked'])) print '<td class="liste_titre"><input class="flat maxwidth50" type="text" name="search_zip" value="'.$search_zip.'"></td>';
|
if (!empty($arrayfields['s.zip']['checked'])) print '<td class="liste_titre"><input class="flat maxwidth50" type="text" name="search_zip" value="'.$search_zip.'"></td>';
|
||||||
// State
|
// State
|
||||||
@ -670,6 +700,27 @@ if ($resql)
|
|||||||
print ajax_combobox('search_availability');
|
print ajax_combobox('search_availability');
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
|
// Shipping Method
|
||||||
|
if (!empty($arrayfields['p.fk_shipping_method']['checked']))
|
||||||
|
{
|
||||||
|
print '<td class="liste_titre">';
|
||||||
|
$form->selectShippingMethod($search_fk_shipping_method, 'search_fk_shipping_method', '', 1, '', 1);
|
||||||
|
print '</td>';
|
||||||
|
}
|
||||||
|
// Payment term
|
||||||
|
if (!empty($arrayfields['p.fk_cond_reglement']['checked']))
|
||||||
|
{
|
||||||
|
print '<td class="liste_titre">';
|
||||||
|
$form->select_conditions_paiements($search_fk_cond_reglement, 'search_fk_cond_reglement', -1, 1, 1);
|
||||||
|
print '</td>';
|
||||||
|
}
|
||||||
|
// Payment mode
|
||||||
|
if (!empty($arrayfields['p.fk_mode_reglement']['checked']))
|
||||||
|
{
|
||||||
|
print '<td class="liste_titre">';
|
||||||
|
$form->select_types_paiements($search_fk_mode_reglement, 'search_fk_mode_reglement', '', 0, 1, 1, 0, -1);
|
||||||
|
print '</td>';
|
||||||
|
}
|
||||||
if (!empty($arrayfields['p.total_ht']['checked']))
|
if (!empty($arrayfields['p.total_ht']['checked']))
|
||||||
{
|
{
|
||||||
// Amount
|
// Amount
|
||||||
@ -821,6 +872,7 @@ if ($resql)
|
|||||||
if (!empty($arrayfields['pr.ref']['checked'])) print_liste_field_titre($arrayfields['pr.ref']['label'], $_SERVER["PHP_SELF"], 'pr.ref', '', $param, '', $sortfield, $sortorder);
|
if (!empty($arrayfields['pr.ref']['checked'])) print_liste_field_titre($arrayfields['pr.ref']['label'], $_SERVER["PHP_SELF"], 'pr.ref', '', $param, '', $sortfield, $sortorder);
|
||||||
if (!empty($arrayfields['pr.title']['checked'])) print_liste_field_titre($arrayfields['pr.title']['label'], $_SERVER["PHP_SELF"], 'pr.title', '', $param, '', $sortfield, $sortorder);
|
if (!empty($arrayfields['pr.title']['checked'])) print_liste_field_titre($arrayfields['pr.title']['label'], $_SERVER["PHP_SELF"], 'pr.title', '', $param, '', $sortfield, $sortorder);
|
||||||
if (!empty($arrayfields['s.nom']['checked'])) print_liste_field_titre($arrayfields['s.nom']['label'], $_SERVER["PHP_SELF"], 's.nom', '', $param, '', $sortfield, $sortorder);
|
if (!empty($arrayfields['s.nom']['checked'])) print_liste_field_titre($arrayfields['s.nom']['label'], $_SERVER["PHP_SELF"], 's.nom', '', $param, '', $sortfield, $sortorder);
|
||||||
|
if (!empty($arrayfields['s.name_alias']['checked'])) print_liste_field_titre($arrayfields['s.name_alias']['label'], $_SERVER["PHP_SELF"], 's.name_alias', '', $param, '', $sortfield, $sortorder);
|
||||||
if (!empty($arrayfields['s.town']['checked'])) print_liste_field_titre($arrayfields['s.town']['label'], $_SERVER["PHP_SELF"], 's.town', '', $param, '', $sortfield, $sortorder);
|
if (!empty($arrayfields['s.town']['checked'])) print_liste_field_titre($arrayfields['s.town']['label'], $_SERVER["PHP_SELF"], 's.town', '', $param, '', $sortfield, $sortorder);
|
||||||
if (!empty($arrayfields['s.zip']['checked'])) print_liste_field_titre($arrayfields['s.zip']['label'], $_SERVER["PHP_SELF"], 's.zip', '', $param, '', $sortfield, $sortorder);
|
if (!empty($arrayfields['s.zip']['checked'])) print_liste_field_titre($arrayfields['s.zip']['label'], $_SERVER["PHP_SELF"], 's.zip', '', $param, '', $sortfield, $sortorder);
|
||||||
if (!empty($arrayfields['state.nom']['checked'])) print_liste_field_titre($arrayfields['state.nom']['label'], $_SERVER["PHP_SELF"], "state.nom", "", $param, '', $sortfield, $sortorder);
|
if (!empty($arrayfields['state.nom']['checked'])) print_liste_field_titre($arrayfields['state.nom']['label'], $_SERVER["PHP_SELF"], "state.nom", "", $param, '', $sortfield, $sortorder);
|
||||||
@ -830,6 +882,9 @@ if ($resql)
|
|||||||
if (!empty($arrayfields['p.fin_validite']['checked'])) print_liste_field_titre($arrayfields['p.fin_validite']['label'], $_SERVER["PHP_SELF"], 'dfv', '', $param, 'align="center"', $sortfield, $sortorder);
|
if (!empty($arrayfields['p.fin_validite']['checked'])) print_liste_field_titre($arrayfields['p.fin_validite']['label'], $_SERVER["PHP_SELF"], 'dfv', '', $param, 'align="center"', $sortfield, $sortorder);
|
||||||
if (!empty($arrayfields['p.date_livraison']['checked'])) print_liste_field_titre($arrayfields['p.date_livraison']['label'], $_SERVER["PHP_SELF"], 'ddelivery', '', $param, 'align="center"', $sortfield, $sortorder);
|
if (!empty($arrayfields['p.date_livraison']['checked'])) print_liste_field_titre($arrayfields['p.date_livraison']['label'], $_SERVER["PHP_SELF"], 'ddelivery', '', $param, 'align="center"', $sortfield, $sortorder);
|
||||||
if (!empty($arrayfields['ava.rowid']['checked'])) print_liste_field_titre($arrayfields['ava.rowid']['label'], $_SERVER["PHP_SELF"], 'availability', '', $param, '', $sortfield, $sortorder);
|
if (!empty($arrayfields['ava.rowid']['checked'])) print_liste_field_titre($arrayfields['ava.rowid']['label'], $_SERVER["PHP_SELF"], 'availability', '', $param, '', $sortfield, $sortorder);
|
||||||
|
if (!empty($arrayfields['p.fk_shipping_method']['checked'])) print_liste_field_titre($arrayfields['p.fk_shipping_method']['label'], $_SERVER["PHP_SELF"], "p.fk_shipping_method", "", $param, '', $sortfield, $sortorder);
|
||||||
|
if (!empty($arrayfields['p.fk_cond_reglement']['checked'])) print_liste_field_titre($arrayfields['p.fk_cond_reglement']['label'], $_SERVER["PHP_SELF"], "p.fk_cond_reglement", "", $param, '', $sortfield, $sortorder);
|
||||||
|
if (!empty($arrayfields['p.fk_mode_reglement']['checked'])) print_liste_field_titre($arrayfields['p.fk_mode_reglement']['label'], $_SERVER["PHP_SELF"], "p.fk_mode_reglement", "", $param, '', $sortfield, $sortorder);
|
||||||
if (!empty($arrayfields['p.total_ht']['checked'])) print_liste_field_titre($arrayfields['p.total_ht']['label'], $_SERVER["PHP_SELF"], 'p.total_ht', '', $param, 'class="right"', $sortfield, $sortorder);
|
if (!empty($arrayfields['p.total_ht']['checked'])) print_liste_field_titre($arrayfields['p.total_ht']['label'], $_SERVER["PHP_SELF"], 'p.total_ht', '', $param, 'class="right"', $sortfield, $sortorder);
|
||||||
if (!empty($arrayfields['p.total_vat']['checked'])) print_liste_field_titre($arrayfields['p.total_vat']['label'], $_SERVER["PHP_SELF"], 'p.tva', '', $param, 'class="right"', $sortfield, $sortorder);
|
if (!empty($arrayfields['p.total_vat']['checked'])) print_liste_field_titre($arrayfields['p.total_vat']['label'], $_SERVER["PHP_SELF"], 'p.tva', '', $param, 'class="right"', $sortfield, $sortorder);
|
||||||
if (!empty($arrayfields['p.total_ttc']['checked'])) print_liste_field_titre($arrayfields['p.total_ttc']['label'], $_SERVER["PHP_SELF"], 'p.total', '', $param, 'class="right"', $sortfield, $sortorder);
|
if (!empty($arrayfields['p.total_ttc']['checked'])) print_liste_field_titre($arrayfields['p.total_ttc']['label'], $_SERVER["PHP_SELF"], 'p.total', '', $param, 'class="right"', $sortfield, $sortorder);
|
||||||
@ -981,6 +1036,15 @@ if ($resql)
|
|||||||
if (!$i) $totalarray['nbfield']++;
|
if (!$i) $totalarray['nbfield']++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Alias
|
||||||
|
if (!empty($arrayfields['s.name_alias']['checked']))
|
||||||
|
{
|
||||||
|
print '<td class="tdoverflowmax200">';
|
||||||
|
print $obj->alias;
|
||||||
|
print '</td>';
|
||||||
|
if (!$i) $totalarray['nbfield']++;
|
||||||
|
}
|
||||||
|
|
||||||
// Town
|
// Town
|
||||||
if (!empty($arrayfields['s.town']['checked']))
|
if (!empty($arrayfields['s.town']['checked']))
|
||||||
{
|
{
|
||||||
@ -1064,7 +1128,30 @@ if ($resql)
|
|||||||
print '</td>';
|
print '</td>';
|
||||||
if (!$i) $totalarray['nbfield']++;
|
if (!$i) $totalarray['nbfield']++;
|
||||||
}
|
}
|
||||||
|
//Shipping Method
|
||||||
|
if (!empty($arrayfields['p.fk_shipping_method']['checked']))
|
||||||
|
{
|
||||||
|
print '<td>';
|
||||||
|
$form->formSelectShippingMethod('', $obj->fk_shipping_method, 'none', 1);
|
||||||
|
print '</td>';
|
||||||
|
if (!$i) $totalarray['nbfield']++;
|
||||||
|
}
|
||||||
|
// Payment terms
|
||||||
|
if (!empty($arrayfields['p.fk_cond_reglement']['checked']))
|
||||||
|
{
|
||||||
|
print '<td>';
|
||||||
|
$form->form_conditions_reglement($_SERVER['PHP_SELF'], $obj->fk_cond_reglement, 'none');
|
||||||
|
print '</td>';
|
||||||
|
if (!$i) $totalarray['nbfield']++;
|
||||||
|
}
|
||||||
|
// Payment mode
|
||||||
|
if (!empty($arrayfields['p.fk_mode_reglement']['checked']))
|
||||||
|
{
|
||||||
|
print '<td>';
|
||||||
|
$form->form_modes_reglement($_SERVER['PHP_SELF'], $obj->fk_mode_reglement, 'none', '', -1);
|
||||||
|
print '</td>';
|
||||||
|
if (!$i) $totalarray['nbfield']++;
|
||||||
|
}
|
||||||
// Amount HT
|
// Amount HT
|
||||||
if (!empty($arrayfields['p.total_ht']['checked']))
|
if (!empty($arrayfields['p.total_ht']['checked']))
|
||||||
{
|
{
|
||||||
@ -1105,7 +1192,6 @@ if ($resql)
|
|||||||
if (!$i) $totalarray['pos'][$totalarray['nbfield']] = 'p.total_invoiced';
|
if (!$i) $totalarray['pos'][$totalarray['nbfield']] = 'p.total_invoiced';
|
||||||
$totalarray['val']['p.total_invoiced'] += $totalInvoicedTTC;
|
$totalarray['val']['p.total_invoiced'] += $totalInvoicedTTC;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Currency
|
// Currency
|
||||||
if (!empty($arrayfields['p.multicurrency_code']['checked']))
|
if (!empty($arrayfields['p.multicurrency_code']['checked']))
|
||||||
{
|
{
|
||||||
|
|||||||
@ -113,11 +113,6 @@ $permissionnote = $usercancreate; // Used by the include of actions_setnotes.inc
|
|||||||
$permissiondellink = $usercancreate; // Used by the include of actions_dellink.inc.php
|
$permissiondellink = $usercancreate; // Used by the include of actions_dellink.inc.php
|
||||||
$permissiontoadd = $usercancreate; // Used by the include of actions_addupdatedelete.inc.php and actions_lineupdown.inc.php
|
$permissiontoadd = $usercancreate; // Used by the include of actions_addupdatedelete.inc.php and actions_lineupdown.inc.php
|
||||||
|
|
||||||
if (!empty($conf->expedition->enabled) && !empty($conf->global->WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER)) {
|
|
||||||
if (empty($object->warehouse_id) && !empty($conf->global->MAIN_DEFAULT_WAREHOUSE)) $object->warehouse_id = $conf->global->MAIN_DEFAULT_WAREHOUSE;
|
|
||||||
if (empty($object->warehouse_id) && !empty($conf->global->MAIN_DEFAULT_WAREHOUSE_USER)) $object->warehouse_id = $user->fk_warehouse;
|
|
||||||
}
|
|
||||||
|
|
||||||
$error = 0;
|
$error = 0;
|
||||||
|
|
||||||
$date_delivery = dol_mktime(GETPOST('liv_hour', 'int'), GETPOST('liv_min', 'int'), 0, GETPOST('liv_month', 'int'), GETPOST('liv_day', 'int'), GETPOST('liv_year', 'int'));
|
$date_delivery = dol_mktime(GETPOST('liv_hour', 'int'), GETPOST('liv_min', 'int'), 0, GETPOST('liv_month', 'int'), GETPOST('liv_day', 'int'), GETPOST('liv_year', 'int'));
|
||||||
@ -633,7 +628,7 @@ if (empty($reshook))
|
|||||||
$predef = '';
|
$predef = '';
|
||||||
$product_desc = (GETPOSTISSET('dp_desc') ? GETPOST('dp_desc', 'restricthtml') : '');
|
$product_desc = (GETPOSTISSET('dp_desc') ? GETPOST('dp_desc', 'restricthtml') : '');
|
||||||
$price_ht = price2num(GETPOST('price_ht'), 'MU');
|
$price_ht = price2num(GETPOST('price_ht'), 'MU');
|
||||||
$price_ht_devise = price2num(GETPOST('multicurrency_price_ht'), 'CR');
|
$price_ht_devise = price2num(GETPOST('multicurrency_price_ht'), 'CU');
|
||||||
$prod_entry_mode = GETPOST('prod_entry_mode');
|
$prod_entry_mode = GETPOST('prod_entry_mode');
|
||||||
if ($prod_entry_mode == 'free')
|
if ($prod_entry_mode == 'free')
|
||||||
{
|
{
|
||||||
@ -644,7 +639,7 @@ if (empty($reshook))
|
|||||||
$tva_tx = '';
|
$tva_tx = '';
|
||||||
}
|
}
|
||||||
|
|
||||||
$qty = price2num(GETPOST('qty'.$predef, 'alpha'));
|
$qty = price2num(GETPOST('qty'.$predef, 'alpha'), 'MS');
|
||||||
$remise_percent = (GETPOSTISSET('remise_percent'.$predef) ? price2num(GETPOST('remise_percent'.$predef, 'alpha')) : 0);
|
$remise_percent = (GETPOSTISSET('remise_percent'.$predef) ? price2num(GETPOST('remise_percent'.$predef, 'alpha')) : 0);
|
||||||
|
|
||||||
// Extrafields
|
// Extrafields
|
||||||
@ -846,6 +841,11 @@ if (empty($reshook))
|
|||||||
$desc = $prod->description;
|
$desc = $prod->description;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//If text set in desc is the same as product descpription (as now it's preloaded) whe add it only one time
|
||||||
|
if ($product_desc==$desc && !empty($conf->global->PRODUIT_AUTOFILL_DESC)) {
|
||||||
|
$product_desc='';
|
||||||
|
}
|
||||||
|
|
||||||
if (!empty($product_desc) && !empty($conf->global->MAIN_NO_CONCAT_DESCRIPTION)) $desc = $product_desc;
|
if (!empty($product_desc) && !empty($conf->global->MAIN_NO_CONCAT_DESCRIPTION)) $desc = $product_desc;
|
||||||
else $desc = dol_concatdesc($desc, $product_desc, '', !empty($conf->global->MAIN_CHANGE_ORDER_CONCAT_DESCRIPTION));
|
else $desc = dol_concatdesc($desc, $product_desc, '', !empty($conf->global->MAIN_CHANGE_ORDER_CONCAT_DESCRIPTION));
|
||||||
|
|
||||||
@ -1533,6 +1533,13 @@ if ($action == 'create' && $usercancreate)
|
|||||||
$note_public = $object->getDefaultCreateValueFor('note_public');
|
$note_public = $object->getDefaultCreateValueFor('note_public');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Warehouse default if null
|
||||||
|
if (!empty($conf->stock->enabled) && empty($warehouse_id) && !empty($conf->global->WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER))
|
||||||
|
{
|
||||||
|
if (empty($object->warehouse_id) && !empty($conf->global->MAIN_DEFAULT_WAREHOUSE)) $warehouse_id = $conf->global->MAIN_DEFAULT_WAREHOUSE;
|
||||||
|
if (empty($object->warehouse_id) && !empty($conf->global->MAIN_DEFAULT_WAREHOUSE_USER)) $warehouse_id = $user->fk_warehouse;
|
||||||
|
}
|
||||||
|
|
||||||
print '<form name="crea_commande" action="'.$_SERVER["PHP_SELF"].'" method="POST">';
|
print '<form name="crea_commande" action="'.$_SERVER["PHP_SELF"].'" method="POST">';
|
||||||
print '<input type="hidden" name="token" value="'.newToken().'">';
|
print '<input type="hidden" name="token" value="'.newToken().'">';
|
||||||
print '<input type="hidden" name="action" value="add">';
|
print '<input type="hidden" name="action" value="add">';
|
||||||
@ -1590,6 +1597,7 @@ if ($action == 'create' && $usercancreate)
|
|||||||
if ($socid > 0) {
|
if ($socid > 0) {
|
||||||
// Contacts (ask contact only if thirdparty already defined).
|
// Contacts (ask contact only if thirdparty already defined).
|
||||||
print "<tr><td>".$langs->trans("DefaultContact").'</td><td>';
|
print "<tr><td>".$langs->trans("DefaultContact").'</td><td>';
|
||||||
|
print img_picto('', 'contact');
|
||||||
$form->select_contacts($soc->id, $contactid, 'contactid', 1, $srccontactslist, '', 1);
|
$form->select_contacts($soc->id, $contactid, 'contactid', 1, $srccontactslist, '', 1);
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
@ -1608,14 +1616,14 @@ if ($action == 'create' && $usercancreate)
|
|||||||
|
|
||||||
// Date
|
// Date
|
||||||
print '<tr><td class="fieldrequired">'.$langs->trans('Date').'</td><td>';
|
print '<tr><td class="fieldrequired">'.$langs->trans('Date').'</td><td>';
|
||||||
print $form->selectDate('', 're', '', '', '', "crea_commande", 1, 1); // Always autofill date with current date
|
print img_picto('', 'object_calendarday').' '.$form->selectDate('', 're', '', '', '', "crea_commande", 1, 1); // Always autofill date with current date
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
// Date delivery planned
|
// Date delivery planned
|
||||||
print '<tr><td>'.$langs->trans("DateDeliveryPlanned").'</td>';
|
print '<tr><td>'.$langs->trans("DateDeliveryPlanned").'</td>';
|
||||||
print '<td colspan="3">';
|
print '<td colspan="3">';
|
||||||
$date_delivery = ($date_delivery ? $date_delivery : $object->date_delivery);
|
$date_delivery = ($date_delivery ? $date_delivery : $object->date_delivery);
|
||||||
print $form->selectDate($date_delivery ? $date_delivery : -1, 'date_delivery', 1, 1, 1);
|
print img_picto('', 'object_calendarday').' '.$form->selectDate($date_delivery ? $date_delivery : -1, 'date_delivery', 1, 1, 1);
|
||||||
print "</td>\n";
|
print "</td>\n";
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
@ -1626,6 +1634,7 @@ if ($action == 'create' && $usercancreate)
|
|||||||
|
|
||||||
// Mode de reglement
|
// Mode de reglement
|
||||||
print '<tr><td>'.$langs->trans('PaymentMode').'</td><td>';
|
print '<tr><td>'.$langs->trans('PaymentMode').'</td><td>';
|
||||||
|
print img_picto('', 'bank').' ';
|
||||||
$form->select_types_paiements($mode_reglement_id, 'mode_reglement_id');
|
$form->select_types_paiements($mode_reglement_id, 'mode_reglement_id');
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
@ -1633,24 +1642,27 @@ if ($action == 'create' && $usercancreate)
|
|||||||
if (!empty($conf->global->BANK_ASK_PAYMENT_BANK_DURING_ORDER) && !empty($conf->banque->enabled))
|
if (!empty($conf->global->BANK_ASK_PAYMENT_BANK_DURING_ORDER) && !empty($conf->banque->enabled))
|
||||||
{
|
{
|
||||||
print '<tr><td>'.$langs->trans('BankAccount').'</td><td>';
|
print '<tr><td>'.$langs->trans('BankAccount').'</td><td>';
|
||||||
|
print img_picto('', 'bank_account');
|
||||||
$form->select_comptes($fk_account, 'fk_account', 0, '', 1);
|
$form->select_comptes($fk_account, 'fk_account', 0, '', 1);
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
}
|
}
|
||||||
|
|
||||||
// Delivery delay
|
// Delivery delay
|
||||||
print '<tr class="fielddeliverydelay"><td>'.$langs->trans('AvailabilityPeriod').'</td><td>';
|
print '<tr class="fielddeliverydelay"><td>'.$langs->trans('AvailabilityPeriod').'</td><td>';
|
||||||
|
print img_picto('', 'clock').' ';
|
||||||
$form->selectAvailabilityDelay($availability_id, 'availability_id', '', 1);
|
$form->selectAvailabilityDelay($availability_id, 'availability_id', '', 1);
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
// Shipping Method
|
// Shipping Method
|
||||||
if (!empty($conf->expedition->enabled)) {
|
if (!empty($conf->expedition->enabled)) {
|
||||||
print '<tr><td>'.$langs->trans('SendingMethod').'</td><td>';
|
print '<tr><td>'.$langs->trans('SendingMethod').'</td><td>';
|
||||||
|
print img_picto('', 'object_dollyrevert').' ';
|
||||||
print $form->selectShippingMethod($shipping_method_id, 'shipping_method_id', '', 1);
|
print $form->selectShippingMethod($shipping_method_id, 'shipping_method_id', '', 1);
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
}
|
}
|
||||||
|
|
||||||
// Warehouse
|
// Warehouse
|
||||||
if (!empty($conf->expedition->enabled) && !empty($conf->global->WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER)) {
|
if (!empty($conf->stock->enabled) && !empty($conf->global->WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER)) {
|
||||||
require_once DOL_DOCUMENT_ROOT.'/product/class/html.formproduct.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/product/class/html.formproduct.class.php';
|
||||||
$formproduct = new FormProduct($db);
|
$formproduct = new FormProduct($db);
|
||||||
print '<tr><td>'.$langs->trans('Warehouse').'</td><td>';
|
print '<tr><td>'.$langs->trans('Warehouse').'</td><td>';
|
||||||
@ -1716,6 +1728,7 @@ if ($action == 'create' && $usercancreate)
|
|||||||
// Template to use by default
|
// Template to use by default
|
||||||
print '<tr><td>'.$langs->trans('DefaultModel').'</td>';
|
print '<tr><td>'.$langs->trans('DefaultModel').'</td>';
|
||||||
print '<td>';
|
print '<td>';
|
||||||
|
print img_picto('', 'pdf').' ';
|
||||||
include_once DOL_DOCUMENT_ROOT.'/core/modules/commande/modules_commande.php';
|
include_once DOL_DOCUMENT_ROOT.'/core/modules/commande/modules_commande.php';
|
||||||
$liste = ModelePDFCommandes::liste_modeles($db);
|
$liste = ModelePDFCommandes::liste_modeles($db);
|
||||||
print $form->selectarray('model', $liste, $conf->global->COMMANDE_ADDON_PDF);
|
print $form->selectarray('model', $liste, $conf->global->COMMANDE_ADDON_PDF);
|
||||||
@ -2160,7 +2173,7 @@ if ($action == 'create' && $usercancreate)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Warehouse
|
// Warehouse
|
||||||
if (!empty($conf->expedition->enabled) && !empty($conf->global->WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER)) {
|
if (!empty($conf->stock->enabled) && !empty($conf->global->WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER)) {
|
||||||
$langs->load('stocks');
|
$langs->load('stocks');
|
||||||
require_once DOL_DOCUMENT_ROOT.'/product/class/html.formproduct.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/product/class/html.formproduct.class.php';
|
||||||
$formproduct = new FormProduct($db);
|
$formproduct = new FormProduct($db);
|
||||||
|
|||||||
@ -200,6 +200,8 @@ class Commande extends CommonOrder
|
|||||||
public $special_code;
|
public $special_code;
|
||||||
public $source; // Order mode. How we received order (by phone, by email, ...)
|
public $source; // Order mode. How we received order (by phone, by email, ...)
|
||||||
|
|
||||||
|
public $warehouse_id;
|
||||||
|
|
||||||
public $extraparams = array();
|
public $extraparams = array();
|
||||||
|
|
||||||
public $linked_objects = array();
|
public $linked_objects = array();
|
||||||
@ -231,11 +233,6 @@ class Commande extends CommonOrder
|
|||||||
public $multicurrency_total_tva;
|
public $multicurrency_total_tva;
|
||||||
public $multicurrency_total_ttc;
|
public $multicurrency_total_ttc;
|
||||||
|
|
||||||
/**
|
|
||||||
* @var Commande clone of order object
|
|
||||||
*/
|
|
||||||
public $oldcopy;
|
|
||||||
|
|
||||||
//! key of module source when order generated from a dedicated module ('cashdesk', 'takepos', ...)
|
//! key of module source when order generated from a dedicated module ('cashdesk', 'takepos', ...)
|
||||||
public $module_source;
|
public $module_source;
|
||||||
//! key of pos source ('0', '1', ...)
|
//! key of pos source ('0', '1', ...)
|
||||||
|
|||||||
@ -67,6 +67,7 @@ $search_product_category = GETPOST('search_product_category', 'int');
|
|||||||
$search_ref = GETPOST('search_ref', 'alpha') != '' ?GETPOST('search_ref', 'alpha') : GETPOST('sref', 'alpha');
|
$search_ref = GETPOST('search_ref', 'alpha') != '' ?GETPOST('search_ref', 'alpha') : GETPOST('sref', 'alpha');
|
||||||
$search_ref_customer = GETPOST('search_ref_customer', 'alpha');
|
$search_ref_customer = GETPOST('search_ref_customer', 'alpha');
|
||||||
$search_company = GETPOST('search_company', 'alpha');
|
$search_company = GETPOST('search_company', 'alpha');
|
||||||
|
$search_company_alias = GETPOST('search_company_alias', 'alpha');
|
||||||
$search_town = GETPOST('search_town', 'alpha');
|
$search_town = GETPOST('search_town', 'alpha');
|
||||||
$search_zip = GETPOST('search_zip', 'alpha');
|
$search_zip = GETPOST('search_zip', 'alpha');
|
||||||
$search_state = GETPOST("search_state", 'alpha');
|
$search_state = GETPOST("search_state", 'alpha');
|
||||||
@ -95,7 +96,9 @@ $search_remove_btn = GETPOST('button_removefilter', 'alpha');
|
|||||||
$search_project_ref = GETPOST('search_project_ref', 'alpha');
|
$search_project_ref = GETPOST('search_project_ref', 'alpha');
|
||||||
$search_project = GETPOST('search_project', 'alpha');
|
$search_project = GETPOST('search_project', 'alpha');
|
||||||
$search_shippable = GETPOST('search_shippable', 'aZ09');
|
$search_shippable = GETPOST('search_shippable', 'aZ09');
|
||||||
|
$search_fk_cond_reglement = GETPOST("search_fk_cond_reglement", 'int');
|
||||||
|
$search_fk_shipping_method = GETPOST("search_fk_shipping_method", 'int');
|
||||||
|
$search_fk_mode_reglement = GETPOST("search_fk_mode_reglement", 'int');
|
||||||
|
|
||||||
// Security check
|
// Security check
|
||||||
$id = (GETPOST('orderid') ?GETPOST('orderid', 'int') : GETPOST('id', 'int'));
|
$id = (GETPOST('orderid') ?GETPOST('orderid', 'int') : GETPOST('id', 'int'));
|
||||||
@ -147,6 +150,7 @@ $arrayfields = array(
|
|||||||
'p.ref'=>array('label'=>"ProjectRef", 'checked'=>1, 'enabled'=>(empty($conf->projet->enabled) ? 0 : 1), 'position'=>20),
|
'p.ref'=>array('label'=>"ProjectRef", 'checked'=>1, 'enabled'=>(empty($conf->projet->enabled) ? 0 : 1), 'position'=>20),
|
||||||
'p.title'=>array('label'=>"ProjectLabel", 'checked'=>0, 'enabled'=>(empty($conf->projet->enabled) ? 0 : 1), 'position'=>25),
|
'p.title'=>array('label'=>"ProjectLabel", 'checked'=>0, 'enabled'=>(empty($conf->projet->enabled) ? 0 : 1), 'position'=>25),
|
||||||
's.nom'=>array('label'=>"ThirdParty", 'checked'=>1, 'position'=>30),
|
's.nom'=>array('label'=>"ThirdParty", 'checked'=>1, 'position'=>30),
|
||||||
|
's.name_alias'=>array('label'=>"AliasNameShort", 'checked'=>1, 'position'=>31),
|
||||||
's.town'=>array('label'=>"Town", 'checked'=>1, 'position'=>35),
|
's.town'=>array('label'=>"Town", 'checked'=>1, 'position'=>35),
|
||||||
's.zip'=>array('label'=>"Zip", 'checked'=>1, 'position'=>40),
|
's.zip'=>array('label'=>"Zip", 'checked'=>1, 'position'=>40),
|
||||||
'state.nom'=>array('label'=>"StateShort", 'checked'=>0, 'position'=>45),
|
'state.nom'=>array('label'=>"StateShort", 'checked'=>0, 'position'=>45),
|
||||||
@ -154,6 +158,9 @@ $arrayfields = array(
|
|||||||
'typent.code'=>array('label'=>"ThirdPartyType", 'checked'=>$checkedtypetiers, 'position'=>55),
|
'typent.code'=>array('label'=>"ThirdPartyType", 'checked'=>$checkedtypetiers, 'position'=>55),
|
||||||
'c.date_commande'=>array('label'=>"OrderDateShort", 'checked'=>1, 'position'=>60),
|
'c.date_commande'=>array('label'=>"OrderDateShort", 'checked'=>1, 'position'=>60),
|
||||||
'c.date_delivery'=>array('label'=>"DateDeliveryPlanned", 'checked'=>1, 'enabled'=>empty($conf->global->ORDER_DISABLE_DELIVERY_DATE), 'position'=>65),
|
'c.date_delivery'=>array('label'=>"DateDeliveryPlanned", 'checked'=>1, 'enabled'=>empty($conf->global->ORDER_DISABLE_DELIVERY_DATE), 'position'=>65),
|
||||||
|
'c.fk_shipping_method'=>array('label'=>"SendingMethod", 'checked'=>0, 'position'=>66 , 'enabled'=>!empty($conf->expedition->enabled)),
|
||||||
|
'c.fk_cond_reglement'=>array('label'=>"PaymentConditionsShort", 'checked'=>0, 'position'=>67),
|
||||||
|
'c.fk_mode_reglement'=>array('label'=>"PaymentMode", 'checked'=>0, 'position'=>68),
|
||||||
'c.total_ht'=>array('label'=>"AmountHT", 'checked'=>1, 'position'=>75),
|
'c.total_ht'=>array('label'=>"AmountHT", 'checked'=>1, 'position'=>75),
|
||||||
'c.total_vat'=>array('label'=>"AmountVAT", 'checked'=>0, 'position'=>80),
|
'c.total_vat'=>array('label'=>"AmountVAT", 'checked'=>0, 'position'=>80),
|
||||||
'c.total_ttc'=>array('label'=>"AmountTTC", 'checked'=>0, 'position'=>85),
|
'c.total_ttc'=>array('label'=>"AmountTTC", 'checked'=>0, 'position'=>85),
|
||||||
@ -206,6 +213,7 @@ if (empty($reshook))
|
|||||||
$search_ref = '';
|
$search_ref = '';
|
||||||
$search_ref_customer = '';
|
$search_ref_customer = '';
|
||||||
$search_company = '';
|
$search_company = '';
|
||||||
|
$search_company_alias = '';
|
||||||
$search_town = '';
|
$search_town = '';
|
||||||
$search_zip = "";
|
$search_zip = "";
|
||||||
$search_state = "";
|
$search_state = "";
|
||||||
@ -235,6 +243,9 @@ if (empty($reshook))
|
|||||||
$search_categ_cus = 0;
|
$search_categ_cus = 0;
|
||||||
$search_datecloture_start = '';
|
$search_datecloture_start = '';
|
||||||
$search_datecloture_end = '';
|
$search_datecloture_end = '';
|
||||||
|
$search_fk_cond_reglement = '';
|
||||||
|
$search_fk_shipping_method = '';
|
||||||
|
$search_fk_mode_reglement = '';
|
||||||
}
|
}
|
||||||
if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')
|
if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')
|
||||||
|| GETPOST('button_search_x', 'alpha') || GETPOST('button_search.x', 'alpha') || GETPOST('button_search', 'alpha'))
|
|| GETPOST('button_search_x', 'alpha') || GETPOST('button_search.x', 'alpha') || GETPOST('button_search', 'alpha'))
|
||||||
@ -272,7 +283,7 @@ $help_url = "EN:Module_Customers_Orders|FR:Module_Commandes_Clients|ES:Módulo_P
|
|||||||
|
|
||||||
$sql = 'SELECT';
|
$sql = 'SELECT';
|
||||||
if ($sall || $search_product_category > 0) $sql = 'SELECT DISTINCT';
|
if ($sall || $search_product_category > 0) $sql = 'SELECT DISTINCT';
|
||||||
$sql .= ' s.rowid as socid, s.nom as name, s.email, s.town, s.zip, s.fk_pays, s.client, s.code_client,';
|
$sql .= ' s.rowid as socid, s.nom as name, s.name_alias as name_alias, s.email, s.town, s.zip, s.fk_pays, s.client, s.code_client,';
|
||||||
$sql .= " typent.code as typent_code,";
|
$sql .= " typent.code as typent_code,";
|
||||||
$sql .= " state.code_departement as state_code, state.nom as state_name,";
|
$sql .= " state.code_departement as state_code, state.nom as state_name,";
|
||||||
$sql .= ' c.rowid, c.ref, c.total_ht, c.tva as total_tva, c.total_ttc, c.ref_client, c.fk_user_author,';
|
$sql .= ' c.rowid, c.ref, c.total_ht, c.tva as total_tva, c.total_ttc, c.ref_client, c.fk_user_author,';
|
||||||
@ -280,7 +291,8 @@ $sql .= ' c.fk_multicurrency, c.multicurrency_code, c.multicurrency_tx, c.multic
|
|||||||
$sql .= ' c.date_valid, c.date_commande, c.note_public, c.note_private, c.date_livraison as date_delivery, c.fk_statut, c.facture as billed,';
|
$sql .= ' c.date_valid, c.date_commande, c.note_public, c.note_private, c.date_livraison as date_delivery, c.fk_statut, c.facture as billed,';
|
||||||
$sql .= ' c.date_creation as date_creation, c.tms as date_update, c.date_cloture as date_cloture,';
|
$sql .= ' c.date_creation as date_creation, c.tms as date_update, c.date_cloture as date_cloture,';
|
||||||
$sql .= " p.rowid as project_id, p.ref as project_ref, p.title as project_label,";
|
$sql .= " p.rowid as project_id, p.ref as project_ref, p.title as project_label,";
|
||||||
$sql .= " u.login";
|
$sql .= " u.login,";
|
||||||
|
$sql .= ' c.fk_cond_reglement,c.fk_mode_reglement,c.fk_shipping_method';
|
||||||
if ($search_categ_cus) $sql .= ", cc.fk_categorie, cc.fk_soc";
|
if ($search_categ_cus) $sql .= ", cc.fk_categorie, cc.fk_soc";
|
||||||
// Add fields from extrafields
|
// Add fields from extrafields
|
||||||
if (!empty($extrafields->attributes[$object->table_element]['label']))
|
if (!empty($extrafields->attributes[$object->table_element]['label']))
|
||||||
@ -353,6 +365,7 @@ if ($search_state) $sql .= natural_search("state.nom",
|
|||||||
if ($search_country) $sql .= " AND s.fk_pays IN (".$search_country.')';
|
if ($search_country) $sql .= " AND s.fk_pays IN (".$search_country.')';
|
||||||
if ($search_type_thirdparty) $sql .= " AND s.fk_typent IN (".$search_type_thirdparty.')';
|
if ($search_type_thirdparty) $sql .= " AND s.fk_typent IN (".$search_type_thirdparty.')';
|
||||||
if ($search_company) $sql .= natural_search('s.nom', $search_company);
|
if ($search_company) $sql .= natural_search('s.nom', $search_company);
|
||||||
|
if ($search_company_alias) $sql .= natural_search('s.name_alias', $search_company_alias);
|
||||||
if ($search_sale > 0) $sql .= " AND s.rowid = sc.fk_soc AND sc.fk_user = ".$search_sale;
|
if ($search_sale > 0) $sql .= " AND s.rowid = sc.fk_soc AND sc.fk_user = ".$search_sale;
|
||||||
if ($search_user > 0) $sql .= " AND ec.fk_c_type_contact = tc.rowid AND tc.element='commande' AND tc.source='internal' AND ec.element_id = c.rowid AND ec.fk_socpeople = ".$search_user;
|
if ($search_user > 0) $sql .= " AND ec.fk_c_type_contact = tc.rowid AND tc.element='commande' AND tc.source='internal' AND ec.element_id = c.rowid AND ec.fk_socpeople = ".$search_user;
|
||||||
if ($search_total_ht != '') $sql .= natural_search('c.total_ht', $search_total_ht, 1);
|
if ($search_total_ht != '') $sql .= natural_search('c.total_ht', $search_total_ht, 1);
|
||||||
@ -369,6 +382,9 @@ if ($search_project_ref != '') $sql .= natural_search("p.ref", $se
|
|||||||
if ($search_project != '') $sql .= natural_search("p.title", $search_project);
|
if ($search_project != '') $sql .= natural_search("p.title", $search_project);
|
||||||
if ($search_categ_cus > 0) $sql .= " AND cc.fk_categorie = ".$db->escape($search_categ_cus);
|
if ($search_categ_cus > 0) $sql .= " AND cc.fk_categorie = ".$db->escape($search_categ_cus);
|
||||||
if ($search_categ_cus == -2) $sql .= " AND cc.fk_categorie IS NULL";
|
if ($search_categ_cus == -2) $sql .= " AND cc.fk_categorie IS NULL";
|
||||||
|
if ($search_fk_cond_reglement > 0) $sql .= " AND c.fk_cond_reglement = ".$db->escape($search_fk_cond_reglement);
|
||||||
|
if ($search_fk_shipping_method > 0) $sql .= " AND c.fk_shipping_method = ".$db->escape($search_fk_shipping_method);
|
||||||
|
if ($search_fk_mode_reglement > 0) $sql .= " AND c.fk_mode_reglement = ".$db->escape($search_fk_mode_reglement);
|
||||||
|
|
||||||
// Add where from extra fields
|
// Add where from extra fields
|
||||||
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_sql.tpl.php';
|
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_sql.tpl.php';
|
||||||
@ -454,6 +470,7 @@ if ($resql)
|
|||||||
if ($search_datedelivery_end) $param .= '&search_datedelivery_end_day='.dol_print_date($search_datedelivery_end, '%d').'&search_datedelivery_end_month='.dol_print_date($search_datedelivery_end, '%m').'&search_datedelivery_end_year='.dol_print_date($search_datedelivery_end, '%Y');
|
if ($search_datedelivery_end) $param .= '&search_datedelivery_end_day='.dol_print_date($search_datedelivery_end, '%d').'&search_datedelivery_end_month='.dol_print_date($search_datedelivery_end, '%m').'&search_datedelivery_end_year='.dol_print_date($search_datedelivery_end, '%Y');
|
||||||
if ($search_ref) $param .= '&search_ref='.urlencode($search_ref);
|
if ($search_ref) $param .= '&search_ref='.urlencode($search_ref);
|
||||||
if ($search_company) $param .= '&search_company='.urlencode($search_company);
|
if ($search_company) $param .= '&search_company='.urlencode($search_company);
|
||||||
|
if ($search_company_alias) $param .= '&search_company_alias='.urlencode($search_company_alias);
|
||||||
if ($search_ref_customer) $param .= '&search_ref_customer='.urlencode($search_ref_customer);
|
if ($search_ref_customer) $param .= '&search_ref_customer='.urlencode($search_ref_customer);
|
||||||
if ($search_user > 0) $param .= '&search_user='.urlencode($search_user);
|
if ($search_user > 0) $param .= '&search_user='.urlencode($search_user);
|
||||||
if ($search_sale > 0) $param .= '&search_sale='.urlencode($search_sale);
|
if ($search_sale > 0) $param .= '&search_sale='.urlencode($search_sale);
|
||||||
@ -478,6 +495,9 @@ if ($resql)
|
|||||||
if ($show_files) $param .= '&show_files='.urlencode($show_files);
|
if ($show_files) $param .= '&show_files='.urlencode($show_files);
|
||||||
if ($optioncss != '') $param .= '&optioncss='.urlencode($optioncss);
|
if ($optioncss != '') $param .= '&optioncss='.urlencode($optioncss);
|
||||||
if ($search_billed != '') $param .= '&search_billed='.urlencode($search_billed);
|
if ($search_billed != '') $param .= '&search_billed='.urlencode($search_billed);
|
||||||
|
if ($search_fk_cond_reglement > 0) $param .= '&search_fk_cond_reglement='.$search_fk_cond_reglement;
|
||||||
|
if ($search_fk_shipping_method > 0) $param .= '&search_fk_shipping_method='.$search_fk_shipping_method;
|
||||||
|
if ($search_fk_mode_reglement > 0) $param .= '&search_fk_mode_reglement='.$search_fk_mode_reglement;
|
||||||
|
|
||||||
// Add $param from extra fields
|
// Add $param from extra fields
|
||||||
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_param.tpl.php';
|
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_param.tpl.php';
|
||||||
@ -678,6 +698,13 @@ if ($resql)
|
|||||||
print '<input class="flat maxwidth100" type="text" name="search_company" value="'.dol_escape_htmltag($search_company).'">';
|
print '<input class="flat maxwidth100" type="text" name="search_company" value="'.dol_escape_htmltag($search_company).'">';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
|
// Alias
|
||||||
|
if (!empty($arrayfields['s.name_alias']['checked']))
|
||||||
|
{
|
||||||
|
print '<td class="liste_titre" align="left">';
|
||||||
|
print '<input class="flat maxwidth100" type="text" name="search_company_alias" value="'.dol_escape_htmltag($search_company_alias).'">';
|
||||||
|
print '</td>';
|
||||||
|
}
|
||||||
// Town
|
// Town
|
||||||
if (!empty($arrayfields['s.town']['checked'])) print '<td class="liste_titre"><input class="flat" type="text" size="4" name="search_town" value="'.dol_escape_htmltag($search_town).'"></td>';
|
if (!empty($arrayfields['s.town']['checked'])) print '<td class="liste_titre"><input class="flat" type="text" size="4" name="search_town" value="'.dol_escape_htmltag($search_town).'"></td>';
|
||||||
// Zip
|
// Zip
|
||||||
@ -726,6 +753,27 @@ if ($resql)
|
|||||||
print '</div>';
|
print '</div>';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
|
// Shipping Method
|
||||||
|
if (!empty($arrayfields['c.fk_shipping_method']['checked']))
|
||||||
|
{
|
||||||
|
print '<td class="liste_titre">';
|
||||||
|
$form->selectShippingMethod($search_fk_shipping_method, 'search_fk_shipping_method', '', 1, '', 1);
|
||||||
|
print '</td>';
|
||||||
|
}
|
||||||
|
// Payment term
|
||||||
|
if (!empty($arrayfields['c.fk_cond_reglement']['checked']))
|
||||||
|
{
|
||||||
|
print '<td class="liste_titre">';
|
||||||
|
$form->select_conditions_paiements($search_fk_cond_reglement, 'search_fk_cond_reglement', -1, 1, 1);
|
||||||
|
print '</td>';
|
||||||
|
}
|
||||||
|
// Payment mode
|
||||||
|
if (!empty($arrayfields['c.fk_mode_reglement']['checked']))
|
||||||
|
{
|
||||||
|
print '<td class="liste_titre">';
|
||||||
|
$form->select_types_paiements($search_fk_mode_reglement, 'search_fk_mode_reglement', '', 0, 1, 1, 0, -1);
|
||||||
|
print '</td>';
|
||||||
|
}
|
||||||
if (!empty($arrayfields['c.total_ht']['checked']))
|
if (!empty($arrayfields['c.total_ht']['checked']))
|
||||||
{
|
{
|
||||||
// Amount
|
// Amount
|
||||||
@ -881,6 +929,7 @@ if ($resql)
|
|||||||
if (!empty($arrayfields['p.ref']['checked'])) print_liste_field_titre($arrayfields['p.ref']['label'], $_SERVER["PHP_SELF"], "p.ref", "", $param, '', $sortfield, $sortorder);
|
if (!empty($arrayfields['p.ref']['checked'])) print_liste_field_titre($arrayfields['p.ref']['label'], $_SERVER["PHP_SELF"], "p.ref", "", $param, '', $sortfield, $sortorder);
|
||||||
if (!empty($arrayfields['p.title']['checked'])) print_liste_field_titre($arrayfields['p.title']['label'], $_SERVER["PHP_SELF"], "p.title", "", $param, '', $sortfield, $sortorder);
|
if (!empty($arrayfields['p.title']['checked'])) print_liste_field_titre($arrayfields['p.title']['label'], $_SERVER["PHP_SELF"], "p.title", "", $param, '', $sortfield, $sortorder);
|
||||||
if (!empty($arrayfields['s.nom']['checked'])) print_liste_field_titre($arrayfields['s.nom']['label'], $_SERVER["PHP_SELF"], 's.nom', '', $param, '', $sortfield, $sortorder);
|
if (!empty($arrayfields['s.nom']['checked'])) print_liste_field_titre($arrayfields['s.nom']['label'], $_SERVER["PHP_SELF"], 's.nom', '', $param, '', $sortfield, $sortorder);
|
||||||
|
if (!empty($arrayfields['s.name_alias']['checked'])) print_liste_field_titre($arrayfields['s.name_alias']['label'], $_SERVER["PHP_SELF"], 's.name_alias', '', $param, '', $sortfield, $sortorder);
|
||||||
if (!empty($arrayfields['s.town']['checked'])) print_liste_field_titre($arrayfields['s.town']['label'], $_SERVER["PHP_SELF"], 's.town', '', $param, '', $sortfield, $sortorder);
|
if (!empty($arrayfields['s.town']['checked'])) print_liste_field_titre($arrayfields['s.town']['label'], $_SERVER["PHP_SELF"], 's.town', '', $param, '', $sortfield, $sortorder);
|
||||||
if (!empty($arrayfields['s.zip']['checked'])) print_liste_field_titre($arrayfields['s.zip']['label'], $_SERVER["PHP_SELF"], 's.zip', '', $param, '', $sortfield, $sortorder);
|
if (!empty($arrayfields['s.zip']['checked'])) print_liste_field_titre($arrayfields['s.zip']['label'], $_SERVER["PHP_SELF"], 's.zip', '', $param, '', $sortfield, $sortorder);
|
||||||
if (!empty($arrayfields['state.nom']['checked'])) print_liste_field_titre($arrayfields['state.nom']['label'], $_SERVER["PHP_SELF"], "state.nom", "", $param, '', $sortfield, $sortorder);
|
if (!empty($arrayfields['state.nom']['checked'])) print_liste_field_titre($arrayfields['state.nom']['label'], $_SERVER["PHP_SELF"], "state.nom", "", $param, '', $sortfield, $sortorder);
|
||||||
@ -888,6 +937,9 @@ if ($resql)
|
|||||||
if (!empty($arrayfields['typent.code']['checked'])) print_liste_field_titre($arrayfields['typent.code']['label'], $_SERVER["PHP_SELF"], "typent.code", "", $param, '', $sortfield, $sortorder, 'center ');
|
if (!empty($arrayfields['typent.code']['checked'])) print_liste_field_titre($arrayfields['typent.code']['label'], $_SERVER["PHP_SELF"], "typent.code", "", $param, '', $sortfield, $sortorder, 'center ');
|
||||||
if (!empty($arrayfields['c.date_commande']['checked'])) print_liste_field_titre($arrayfields['c.date_commande']['label'], $_SERVER["PHP_SELF"], 'c.date_commande', '', $param, '', $sortfield, $sortorder, 'center ');
|
if (!empty($arrayfields['c.date_commande']['checked'])) print_liste_field_titre($arrayfields['c.date_commande']['label'], $_SERVER["PHP_SELF"], 'c.date_commande', '', $param, '', $sortfield, $sortorder, 'center ');
|
||||||
if (!empty($arrayfields['c.date_delivery']['checked'])) print_liste_field_titre($arrayfields['c.date_delivery']['label'], $_SERVER["PHP_SELF"], 'c.date_livraison', '', $param, '', $sortfield, $sortorder, 'center ');
|
if (!empty($arrayfields['c.date_delivery']['checked'])) print_liste_field_titre($arrayfields['c.date_delivery']['label'], $_SERVER["PHP_SELF"], 'c.date_livraison', '', $param, '', $sortfield, $sortorder, 'center ');
|
||||||
|
if (!empty($arrayfields['c.fk_shipping_method']['checked'])) print_liste_field_titre($arrayfields['c.fk_shipping_method']['label'], $_SERVER["PHP_SELF"], "c.fk_shipping_method", "", $param, '', $sortfield, $sortorder);
|
||||||
|
if (!empty($arrayfields['c.fk_cond_reglement']['checked'])) print_liste_field_titre($arrayfields['c.fk_cond_reglement']['label'], $_SERVER["PHP_SELF"], "c.fk_cond_reglement", "", $param, '', $sortfield, $sortorder);
|
||||||
|
if (!empty($arrayfields['c.fk_mode_reglement']['checked'])) print_liste_field_titre($arrayfields['c.fk_mode_reglement']['label'], $_SERVER["PHP_SELF"], "c.fk_mode_reglement", "", $param, '', $sortfield, $sortorder);
|
||||||
if (!empty($arrayfields['c.total_ht']['checked'])) print_liste_field_titre($arrayfields['c.total_ht']['label'], $_SERVER["PHP_SELF"], 'c.total_ht', '', $param, '', $sortfield, $sortorder, 'right ');
|
if (!empty($arrayfields['c.total_ht']['checked'])) print_liste_field_titre($arrayfields['c.total_ht']['label'], $_SERVER["PHP_SELF"], 'c.total_ht', '', $param, '', $sortfield, $sortorder, 'right ');
|
||||||
if (!empty($arrayfields['c.total_vat']['checked'])) print_liste_field_titre($arrayfields['c.total_vat']['label'], $_SERVER["PHP_SELF"], 'c.tva', '', $param, '', $sortfield, $sortorder, 'right ');
|
if (!empty($arrayfields['c.total_vat']['checked'])) print_liste_field_titre($arrayfields['c.total_vat']['label'], $_SERVER["PHP_SELF"], 'c.tva', '', $param, '', $sortfield, $sortorder, 'right ');
|
||||||
if (!empty($arrayfields['c.total_ttc']['checked'])) print_liste_field_titre($arrayfields['c.total_ttc']['label'], $_SERVER["PHP_SELF"], 'c.total_ttc', '', $param, '', $sortfield, $sortorder, 'right ');
|
if (!empty($arrayfields['c.total_ttc']['checked'])) print_liste_field_titre($arrayfields['c.total_ttc']['label'], $_SERVER["PHP_SELF"], 'c.total_ttc', '', $param, '', $sortfield, $sortorder, 'right ');
|
||||||
@ -1038,6 +1090,14 @@ if ($resql)
|
|||||||
if (!$i) $totalarray['nbfield']++;
|
if (!$i) $totalarray['nbfield']++;
|
||||||
}
|
}
|
||||||
// Town
|
// Town
|
||||||
|
if (!empty($arrayfields['s.name_alias']['checked']))
|
||||||
|
{
|
||||||
|
print '<td class="nocellnopadd">';
|
||||||
|
print $obj->alias;
|
||||||
|
print '</td>';
|
||||||
|
if (!$i) $totalarray['nbfield']++;
|
||||||
|
}
|
||||||
|
// Town
|
||||||
if (!empty($arrayfields['s.town']['checked']))
|
if (!empty($arrayfields['s.town']['checked']))
|
||||||
{
|
{
|
||||||
print '<td class="nocellnopadd">';
|
print '<td class="nocellnopadd">';
|
||||||
@ -1094,6 +1154,30 @@ if ($resql)
|
|||||||
print '</td>';
|
print '</td>';
|
||||||
if (!$i) $totalarray['nbfield']++;
|
if (!$i) $totalarray['nbfield']++;
|
||||||
}
|
}
|
||||||
|
//Shipping Method
|
||||||
|
if (!empty($arrayfields['c.fk_shipping_method']['checked']))
|
||||||
|
{
|
||||||
|
print '<td>';
|
||||||
|
$form->formSelectShippingMethod('', $obj->fk_shipping_method, 'none', 1);
|
||||||
|
print '</td>';
|
||||||
|
if (!$i) $totalarray['nbfield']++;
|
||||||
|
}
|
||||||
|
// Payment terms
|
||||||
|
if (!empty($arrayfields['c.fk_cond_reglement']['checked']))
|
||||||
|
{
|
||||||
|
print '<td>';
|
||||||
|
$form->form_conditions_reglement($_SERVER['PHP_SELF'], $obj->fk_cond_reglement, 'none');
|
||||||
|
print '</td>';
|
||||||
|
if (!$i) $totalarray['nbfield']++;
|
||||||
|
}
|
||||||
|
// Payment mode
|
||||||
|
if (!empty($arrayfields['c.fk_mode_reglement']['checked']))
|
||||||
|
{
|
||||||
|
print '<td>';
|
||||||
|
$form->form_modes_reglement($_SERVER['PHP_SELF'], $obj->fk_mode_reglement, 'none', '', -1);
|
||||||
|
print '</td>';
|
||||||
|
if (!$i) $totalarray['nbfield']++;
|
||||||
|
}
|
||||||
// Amount HT
|
// Amount HT
|
||||||
if (!empty($arrayfields['c.total_ht']['checked']))
|
if (!empty($arrayfields['c.total_ht']['checked']))
|
||||||
{
|
{
|
||||||
@ -1326,7 +1410,6 @@ if ($resql)
|
|||||||
print '<td class="center">'.yn($obj->billed).'</td>';
|
print '<td class="center">'.yn($obj->billed).'</td>';
|
||||||
if (!$i) $totalarray['nbfield']++;
|
if (!$i) $totalarray['nbfield']++;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Status
|
// Status
|
||||||
if (!empty($arrayfields['c.fk_statut']['checked']))
|
if (!empty($arrayfields['c.fk_statut']['checked']))
|
||||||
{
|
{
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2017-2019 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
/* Copyright (C) 2017-2021 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
||||||
* Copyright (C) 2018-2020 Frédéric France <frederic.france@netlogic.fr>
|
* Copyright (C) 2018-2020 Frédéric France <frederic.france@netlogic.fr>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
@ -266,6 +266,18 @@ if ($action == 'confirm_clone' && $confirm == 'yes' && ($user->rights->banque->m
|
|||||||
$object->datev = $newdatepayment;
|
$object->datev = $newdatepayment;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (GETPOSTISSET("clone_sens")) {
|
||||||
|
$object->sens = GETPOST("clone_sens", 'int');
|
||||||
|
} else {
|
||||||
|
$object->sens = $object->sens;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (GETPOST("clone_amount", "alpha")) {
|
||||||
|
$object->amount = price2num(GETPOST("clone_amount", "alpha"));
|
||||||
|
} else {
|
||||||
|
$object->amount = price2num($object->amount);
|
||||||
|
}
|
||||||
|
|
||||||
if ($object->check())
|
if ($object->check())
|
||||||
{
|
{
|
||||||
$id = $object->create($user);
|
$id = $object->create($user);
|
||||||
@ -486,14 +498,19 @@ if ($id)
|
|||||||
// Clone confirmation
|
// Clone confirmation
|
||||||
if ($action === 'clone')
|
if ($action === 'clone')
|
||||||
{
|
{
|
||||||
|
$set_value_help = $form->textwithpicto('', $langs->trans($langs->trans("AccountingDirectionHelp")));
|
||||||
|
$sensarray = array('0' => $langs->trans("Debit"), '1' => $langs->trans("Credit"));
|
||||||
|
|
||||||
$formquestion = array(
|
$formquestion = array(
|
||||||
array('type' => 'text', 'name' => 'clone_label', 'label' => $langs->trans("Label"), 'value' => $langs->trans("CopyOf").' '.$object->label),
|
array('type' => 'text', 'name' => 'clone_label', 'label' => $langs->trans("Label"), 'value' => $langs->trans("CopyOf").' '.$object->label),
|
||||||
);
|
array('type' => 'date', 'tdclass'=>'fieldrequired', 'name' => 'clone_date_payment', 'label' => $langs->trans("DatePayment"), 'value' => -1),
|
||||||
$formquestion[] = array('type' => 'date', 'tdclass'=>'fieldrequired', 'name' => 'clone_date_payment', 'label' => $langs->trans("DatePayment"), 'value' => -1);
|
array('type' => 'date', 'name' => 'clone_date_value', 'label' => $langs->trans("DateValue"), 'value' => -1),
|
||||||
$formquestion[] = array('type' => 'date', 'name' => 'clone_date_value', 'label' => $langs->trans("DateValue"), 'value' => -1);
|
array('type' => 'other', 'tdclass'=>'fieldrequired', 'name' => 'clone_accountid', 'label' => $langs->trans("BankAccount"), 'value' => $form->select_comptes($object->fk_account, "accountid", 0, '', 1, '', 0, 'minwidth200', 1)),
|
||||||
$formquestion[] = array('type' => 'other', 'tdclass'=>'fieldrequired', 'name' => 'accountid', 'label' => $langs->trans("BankAccount"), 'value' => $form->select_comptes($accountid, "accountid", 0, '', 1, '', 0, 'minwidth200', 1));
|
array('type' => 'text', 'name' => 'clone_amount', 'label' => $langs->trans("Amount"), 'value' => price($object->amount)),
|
||||||
|
array('type' => 'select', 'name' => 'clone_sens', 'label' => $langs->trans("Sens") . ' ' . $set_value_help, 'values' => $sensarray, 'default' => $object->sens),
|
||||||
|
);
|
||||||
|
|
||||||
print $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('ToClone'), $langs->trans('ConfirmCloneVariousPayment', $object->ref), 'confirm_clone', $formquestion, 'yes', 1, 300);
|
print $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('ToClone'), $langs->trans('ConfirmCloneVariousPayment', $object->ref), 'confirm_clone', $formquestion, 'yes', 1, 350);
|
||||||
}
|
}
|
||||||
|
|
||||||
print dol_get_fiche_head($head, 'card', $langs->trans("VariousPayment"), -1, $object->picto);
|
print dol_get_fiche_head($head, 'card', $langs->trans("VariousPayment"), -1, $object->picto);
|
||||||
|
|||||||
@ -439,7 +439,7 @@ if (empty($reshook))
|
|||||||
$predef = '';
|
$predef = '';
|
||||||
$product_desc = (GETPOSTISSET('dp_desc') ? GETPOST('dp_desc', 'restricthtml') : '');
|
$product_desc = (GETPOSTISSET('dp_desc') ? GETPOST('dp_desc', 'restricthtml') : '');
|
||||||
$price_ht = price2num(GETPOST('price_ht'), 'MU');
|
$price_ht = price2num(GETPOST('price_ht'), 'MU');
|
||||||
$price_ht_devise = price2num(GETPOST('multicurrency_price_ht'), 'CR');
|
$price_ht_devise = price2num(GETPOST('multicurrency_price_ht'), 'CU');
|
||||||
$prod_entry_mode = GETPOST('prod_entry_mode', 'alpha');
|
$prod_entry_mode = GETPOST('prod_entry_mode', 'alpha');
|
||||||
if ($prod_entry_mode == 'free')
|
if ($prod_entry_mode == 'free')
|
||||||
{
|
{
|
||||||
@ -450,7 +450,7 @@ if (empty($reshook))
|
|||||||
$tva_tx = '';
|
$tva_tx = '';
|
||||||
}
|
}
|
||||||
|
|
||||||
$qty = price2num(GETPOST('qty'.$predef), 'alpha');
|
$qty = price2num(GETPOST('qty'.$predef, 'alpha'), 'MS');
|
||||||
$remise_percent = GETPOST('remise_percent'.$predef);
|
$remise_percent = GETPOST('remise_percent'.$predef);
|
||||||
|
|
||||||
// Extrafields
|
// Extrafields
|
||||||
|
|||||||
@ -977,11 +977,14 @@ if (empty($reshook))
|
|||||||
if ($_POST['type'] == Facture::TYPE_REPLACEMENT)
|
if ($_POST['type'] == Facture::TYPE_REPLACEMENT)
|
||||||
{
|
{
|
||||||
$dateinvoice = dol_mktime(12, 0, 0, GETPOST('remonth', 'int'), GETPOST('reday', 'int'), GETPOST('reyear', 'int'));
|
$dateinvoice = dol_mktime(12, 0, 0, GETPOST('remonth', 'int'), GETPOST('reday', 'int'), GETPOST('reyear', 'int'));
|
||||||
if (empty($dateinvoice))
|
if (empty($dateinvoice)) {
|
||||||
{
|
|
||||||
$error++;
|
$error++;
|
||||||
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Date")), null, 'errors');
|
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Date")), null, 'errors');
|
||||||
$action = 'create';
|
$action = 'create';
|
||||||
|
} elseif ($dateinvoice > (dol_now() + (empty($conf->global->INVOICE_MAX_FUTURE_DELAY) ? 0 : $conf->global->INVOICE_MAX_FUTURE_DELAY))) {
|
||||||
|
$error++;
|
||||||
|
setEventMessages($langs->trans("ErrorDateIsInFuture"), null, 'errors');
|
||||||
|
$action = 'create';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!($_POST['fac_replacement'] > 0)) {
|
if (!($_POST['fac_replacement'] > 0)) {
|
||||||
@ -1029,7 +1032,7 @@ if (empty($reshook))
|
|||||||
// Credit note invoice
|
// Credit note invoice
|
||||||
if (GETPOST('type') == Facture::TYPE_CREDIT_NOTE)
|
if (GETPOST('type') == Facture::TYPE_CREDIT_NOTE)
|
||||||
{
|
{
|
||||||
$sourceinvoice = GETPOST('fac_avoir');
|
$sourceinvoice = GETPOST('fac_avoir', 'int');
|
||||||
if (!($sourceinvoice > 0) && empty($conf->global->INVOICE_CREDIT_NOTE_STANDALONE))
|
if (!($sourceinvoice > 0) && empty($conf->global->INVOICE_CREDIT_NOTE_STANDALONE))
|
||||||
{
|
{
|
||||||
$error++;
|
$error++;
|
||||||
@ -1038,11 +1041,14 @@ if (empty($reshook))
|
|||||||
}
|
}
|
||||||
|
|
||||||
$dateinvoice = dol_mktime(12, 0, 0, GETPOST('remonth', 'int'), GETPOST('reday', 'int'), GETPOST('reyear', 'int'));
|
$dateinvoice = dol_mktime(12, 0, 0, GETPOST('remonth', 'int'), GETPOST('reday', 'int'), GETPOST('reyear', 'int'));
|
||||||
if (empty($dateinvoice))
|
if (empty($dateinvoice)) {
|
||||||
{
|
|
||||||
$error++;
|
$error++;
|
||||||
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Date")), null, 'errors');
|
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Date")), null, 'errors');
|
||||||
$action = 'create';
|
$action = 'create';
|
||||||
|
} elseif ($dateinvoice > (dol_now() + (empty($conf->global->INVOICE_MAX_FUTURE_DELAY) ? 0 : $conf->global->INVOICE_MAX_FUTURE_DELAY))) {
|
||||||
|
$error++;
|
||||||
|
setEventMessages($langs->trans("ErrorDateIsInFuture"), null, 'errors');
|
||||||
|
$action = 'create';
|
||||||
}
|
}
|
||||||
|
|
||||||
$date_pointoftax = dol_mktime(12, 0, 0, GETPOST('date_pointoftaxmonth', 'int'), GETPOST('date_pointoftaxday', 'int'), GETPOST('date_pointoftaxyear', 'int'));
|
$date_pointoftax = dol_mktime(12, 0, 0, GETPOST('date_pointoftaxmonth', 'int'), GETPOST('date_pointoftaxday', 'int'), GETPOST('date_pointoftaxyear', 'int'));
|
||||||
@ -1255,11 +1261,14 @@ if (empty($reshook))
|
|||||||
if (($_POST['type'] == Facture::TYPE_STANDARD || $_POST['type'] == Facture::TYPE_DEPOSIT) && GETPOST('fac_rec', 'int') > 0)
|
if (($_POST['type'] == Facture::TYPE_STANDARD || $_POST['type'] == Facture::TYPE_DEPOSIT) && GETPOST('fac_rec', 'int') > 0)
|
||||||
{
|
{
|
||||||
$dateinvoice = dol_mktime(12, 0, 0, GETPOST('remonth', 'int'), GETPOST('reday', 'int'), GETPOST('reyear', 'int'));
|
$dateinvoice = dol_mktime(12, 0, 0, GETPOST('remonth', 'int'), GETPOST('reday', 'int'), GETPOST('reyear', 'int'));
|
||||||
if (empty($dateinvoice))
|
if (empty($dateinvoice)) {
|
||||||
{
|
|
||||||
$error++;
|
$error++;
|
||||||
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Date")), null, 'errors');
|
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Date")), null, 'errors');
|
||||||
$action = 'create';
|
$action = 'create';
|
||||||
|
} elseif ($dateinvoice > (dol_now() + (empty($conf->global->INVOICE_MAX_FUTURE_DELAY) ? 0 : $conf->global->INVOICE_MAX_FUTURE_DELAY))) {
|
||||||
|
$error++;
|
||||||
|
setEventMessages($langs->trans("ErrorDateIsInFuture"), null, 'errors');
|
||||||
|
$action = 'create';
|
||||||
}
|
}
|
||||||
|
|
||||||
$date_pointoftax = dol_mktime(12, 0, 0, $_POST['date_pointoftaxmonth'], $_POST['date_pointoftaxday'], $_POST['date_pointoftaxyear']);
|
$date_pointoftax = dol_mktime(12, 0, 0, $_POST['date_pointoftaxmonth'], $_POST['date_pointoftaxday'], $_POST['date_pointoftaxyear']);
|
||||||
@ -1305,11 +1314,14 @@ if (empty($reshook))
|
|||||||
}
|
}
|
||||||
|
|
||||||
$dateinvoice = dol_mktime(12, 0, 0, GETPOST('remonth', 'int'), GETPOST('reday', 'int'), GETPOST('reyear', 'int'));
|
$dateinvoice = dol_mktime(12, 0, 0, GETPOST('remonth', 'int'), GETPOST('reday', 'int'), GETPOST('reyear', 'int'));
|
||||||
if (empty($dateinvoice))
|
if (empty($dateinvoice)) {
|
||||||
{
|
|
||||||
$error++;
|
$error++;
|
||||||
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Date")), null, 'errors');
|
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Date")), null, 'errors');
|
||||||
$action = 'create';
|
$action = 'create';
|
||||||
|
} elseif ($dateinvoice > (dol_now() + (empty($conf->global->INVOICE_MAX_FUTURE_DELAY) ? 0 : $conf->global->INVOICE_MAX_FUTURE_DELAY))) {
|
||||||
|
$error++;
|
||||||
|
setEventMessages($langs->trans("ErrorDateIsInFuture"), null, 'errors');
|
||||||
|
$action = 'create';
|
||||||
}
|
}
|
||||||
|
|
||||||
$date_pointoftax = dol_mktime(12, 0, 0, $_POST['date_pointoftaxmonth'], $_POST['date_pointoftaxday'], $_POST['date_pointoftaxyear']);
|
$date_pointoftax = dol_mktime(12, 0, 0, $_POST['date_pointoftaxmonth'], $_POST['date_pointoftaxday'], $_POST['date_pointoftaxyear']);
|
||||||
@ -1725,11 +1737,15 @@ if (empty($reshook))
|
|||||||
// Situation invoices
|
// Situation invoices
|
||||||
if (GETPOST('type') == Facture::TYPE_SITUATION && (!empty($_POST['situations'])))
|
if (GETPOST('type') == Facture::TYPE_SITUATION && (!empty($_POST['situations'])))
|
||||||
{
|
{
|
||||||
$datefacture = dol_mktime(12, 0, 0, GETPOST('remonth', 'int'), GETPOST('reday', 'int'), GETPOST('reyear', 'int'));
|
$dateinvoice = dol_mktime(12, 0, 0, GETPOST('remonth', 'int'), GETPOST('reday', 'int'), GETPOST('reyear', 'int'));
|
||||||
if (empty($datefacture)) {
|
if (empty($dateinvoice)) {
|
||||||
$error++;
|
$error++;
|
||||||
$mesg = $langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Date"));
|
$mesg = $langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Date"));
|
||||||
setEventMessages($mesg, null, 'errors');
|
setEventMessages($mesg, null, 'errors');
|
||||||
|
} elseif ($dateinvoice > (dol_now() + (empty($conf->global->INVOICE_MAX_FUTURE_DELAY) ? 0 : $conf->global->INVOICE_MAX_FUTURE_DELAY))) {
|
||||||
|
$error++;
|
||||||
|
setEventMessages($langs->trans("ErrorDateIsInFuture"), null, 'errors');
|
||||||
|
$action = 'create';
|
||||||
}
|
}
|
||||||
|
|
||||||
$date_pointoftax = dol_mktime(12, 0, 0, $_POST['date_pointoftaxmonth'], $_POST['date_pointoftaxday'], $_POST['date_pointoftaxyear']);
|
$date_pointoftax = dol_mktime(12, 0, 0, $_POST['date_pointoftaxmonth'], $_POST['date_pointoftaxday'], $_POST['date_pointoftaxyear']);
|
||||||
@ -1811,7 +1827,7 @@ if (empty($reshook))
|
|||||||
}
|
}
|
||||||
|
|
||||||
$object->fetch_thirdparty();
|
$object->fetch_thirdparty();
|
||||||
$object->date = $datefacture;
|
$object->date = $dateinvoice;
|
||||||
$object->date_pointoftax = $date_pointoftax;
|
$object->date_pointoftax = $date_pointoftax;
|
||||||
$object->note_public = trim(GETPOST('note_public', 'restricthtml'));
|
$object->note_public = trim(GETPOST('note_public', 'restricthtml'));
|
||||||
$object->note = trim(GETPOST('note', 'restricthtml'));
|
$object->note = trim(GETPOST('note', 'restricthtml'));
|
||||||
@ -1894,7 +1910,7 @@ if (empty($reshook))
|
|||||||
|
|
||||||
// Set if we used free entry or predefined product
|
// Set if we used free entry or predefined product
|
||||||
$predef = '';
|
$predef = '';
|
||||||
$product_desc = (GETPOST('dp_desc', 'none') ?GETPOST('dp_desc', 'restricthtml') : '');
|
$product_desc =(GETPOSTISSET('dp_desc') ? GETPOST('dp_desc', 'restricthtml') : '');
|
||||||
$price_ht = price2num(GETPOST('price_ht'));
|
$price_ht = price2num(GETPOST('price_ht'));
|
||||||
$price_ht_devise = price2num(GETPOST('multicurrency_price_ht'));
|
$price_ht_devise = price2num(GETPOST('multicurrency_price_ht'));
|
||||||
$prod_entry_mode = GETPOST('prod_entry_mode', 'alpha');
|
$prod_entry_mode = GETPOST('prod_entry_mode', 'alpha');
|
||||||
@ -2064,6 +2080,11 @@ if (empty($reshook))
|
|||||||
$desc = $prod->description;
|
$desc = $prod->description;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//If text set in desc is the same as product descpription (as now it's preloaded) whe add it only one time
|
||||||
|
if ($product_desc==$desc && !empty($conf->global->PRODUIT_AUTOFILL_DESC)) {
|
||||||
|
$product_desc='';
|
||||||
|
}
|
||||||
|
|
||||||
if (!empty($product_desc) && !empty($conf->global->MAIN_NO_CONCAT_DESCRIPTION)) $desc = $product_desc;
|
if (!empty($product_desc) && !empty($conf->global->MAIN_NO_CONCAT_DESCRIPTION)) $desc = $product_desc;
|
||||||
else $desc = dol_concatdesc($desc, $product_desc, '', !empty($conf->global->MAIN_CHANGE_ORDER_CONCAT_DESCRIPTION));
|
else $desc = dol_concatdesc($desc, $product_desc, '', !empty($conf->global->MAIN_CHANGE_ORDER_CONCAT_DESCRIPTION));
|
||||||
|
|
||||||
@ -3342,11 +3363,11 @@ if ($action == 'create')
|
|||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
}
|
}
|
||||||
|
|
||||||
$datefacture = dol_mktime(12, 0, 0, GETPOST('remonth', 'int'), GETPOST('reday', 'int'), GETPOST('reyear', 'int'));
|
$newdateinvoice = dol_mktime(12, 0, 0, GETPOST('remonth', 'int'), GETPOST('reday', 'int'), GETPOST('reyear', 'int'));
|
||||||
|
|
||||||
// Date invoice
|
// Date invoice
|
||||||
print '<tr><td class="fieldrequired">'.$langs->trans('DateInvoice').'</td><td colspan="2">';
|
print '<tr><td class="fieldrequired">'.$langs->trans('DateInvoice').'</td><td colspan="2">';
|
||||||
print $form->selectDate($datefacture ? $datefacture : $dateinvoice, '', '', '', '', "add", 1, 1);
|
print $form->selectDate($newdateinvoice ? $newdateinvoice : $dateinvoice, '', '', '', '', "add", 1, 1);
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
// Date point of tax
|
// Date point of tax
|
||||||
@ -3504,7 +3525,7 @@ if ($action == 'create')
|
|||||||
$htmltext = '';
|
$htmltext = '';
|
||||||
if (GETPOST('fac_rec', 'int') > 0)
|
if (GETPOST('fac_rec', 'int') > 0)
|
||||||
{
|
{
|
||||||
$dateexample = ($datefacture ? $datefacture : $dateinvoice);
|
$dateexample = ($newdateinvoice ? $newdateinvoice : $dateinvoice);
|
||||||
if (empty($dateexample)) $dateexample = dol_now();
|
if (empty($dateexample)) $dateexample = dol_now();
|
||||||
$substitutionarray = array(
|
$substitutionarray = array(
|
||||||
'__TOTAL_HT__' => $langs->trans("AmountHT").' ('.$langs->trans("Example").': '.price($exampletemplateinvoice->total_ht).')',
|
'__TOTAL_HT__' => $langs->trans("AmountHT").' ('.$langs->trans("Example").': '.price($exampletemplateinvoice->total_ht).')',
|
||||||
|
|||||||
@ -85,6 +85,7 @@ $search_type = GETPOST('search_type', 'int');
|
|||||||
$search_project_ref = GETPOST('search_project_ref', 'alpha');
|
$search_project_ref = GETPOST('search_project_ref', 'alpha');
|
||||||
$search_project = GETPOST('search_project', 'alpha');
|
$search_project = GETPOST('search_project', 'alpha');
|
||||||
$search_societe = GETPOST('search_societe', 'alpha');
|
$search_societe = GETPOST('search_societe', 'alpha');
|
||||||
|
$search_societe_alias = GETPOST('search_societe_alias', 'alpha');
|
||||||
$search_montant_ht = GETPOST('search_montant_ht', 'alpha');
|
$search_montant_ht = GETPOST('search_montant_ht', 'alpha');
|
||||||
$search_montant_vat = GETPOST('search_montant_vat', 'alpha');
|
$search_montant_vat = GETPOST('search_montant_vat', 'alpha');
|
||||||
$search_montant_localtax1 = GETPOST('search_montant_localtax1', 'alpha');
|
$search_montant_localtax1 = GETPOST('search_montant_localtax1', 'alpha');
|
||||||
@ -182,6 +183,7 @@ $arrayfields = array(
|
|||||||
'p.ref'=>array('label'=>"ProjectRef", 'checked'=>1, 'enabled'=>(empty($conf->projet->enabled) ? 0 : 1), 'position'=>40),
|
'p.ref'=>array('label'=>"ProjectRef", 'checked'=>1, 'enabled'=>(empty($conf->projet->enabled) ? 0 : 1), 'position'=>40),
|
||||||
'p.title'=>array('label'=>"ProjectLabel", 'checked'=>0, 'enabled'=>(empty($conf->projet->enabled) ? 0 : 1), 'position'=>40),
|
'p.title'=>array('label'=>"ProjectLabel", 'checked'=>0, 'enabled'=>(empty($conf->projet->enabled) ? 0 : 1), 'position'=>40),
|
||||||
's.nom'=>array('label'=>"ThirdParty", 'checked'=>1, 'position'=>50),
|
's.nom'=>array('label'=>"ThirdParty", 'checked'=>1, 'position'=>50),
|
||||||
|
's.name_alias'=>array('label'=>"AliasNameShort", 'checked'=>1, 'position'=>51),
|
||||||
's.town'=>array('label'=>"Town", 'checked'=>1, 'position'=>55),
|
's.town'=>array('label'=>"Town", 'checked'=>1, 'position'=>55),
|
||||||
's.zip'=>array('label'=>"Zip", 'checked'=>1, 'position'=>60),
|
's.zip'=>array('label'=>"Zip", 'checked'=>1, 'position'=>60),
|
||||||
'state.nom'=>array('label'=>"StateShort", 'checked'=>0, 'position'=>65),
|
'state.nom'=>array('label'=>"StateShort", 'checked'=>0, 'position'=>65),
|
||||||
@ -254,6 +256,7 @@ if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter',
|
|||||||
$search_project_ref = '';
|
$search_project_ref = '';
|
||||||
$search_project = '';
|
$search_project = '';
|
||||||
$search_societe = '';
|
$search_societe = '';
|
||||||
|
$search_societe_alias = '';
|
||||||
$search_montant_ht = '';
|
$search_montant_ht = '';
|
||||||
$search_montant_vat = '';
|
$search_montant_vat = '';
|
||||||
$search_montant_localtax1 = '';
|
$search_montant_localtax1 = '';
|
||||||
@ -422,7 +425,7 @@ $sql .= ' f.datef as df, f.date_valid, f.date_lim_reglement as datelimite, f.mod
|
|||||||
$sql .= ' f.paye as paye, f.fk_statut, f.close_code,';
|
$sql .= ' f.paye as paye, f.fk_statut, f.close_code,';
|
||||||
$sql .= ' f.datec as date_creation, f.tms as date_update, f.date_closing as date_closing,';
|
$sql .= ' f.datec as date_creation, f.tms as date_update, f.date_closing as date_closing,';
|
||||||
$sql .= ' f.retained_warranty, f.retained_warranty_date_limit, f.situation_final, f.situation_cycle_ref, f.situation_counter,';
|
$sql .= ' f.retained_warranty, f.retained_warranty_date_limit, f.situation_final, f.situation_cycle_ref, f.situation_counter,';
|
||||||
$sql .= ' s.rowid as socid, s.nom as name, s.email, s.town, s.zip, s.fk_pays, s.client, s.fournisseur, s.code_client, s.code_fournisseur, s.code_compta as code_compta_client, s.code_compta_fournisseur,';
|
$sql .= ' s.rowid as socid, s.nom as name, s.name_alias as name_alias, s.email, s.town, s.zip, s.fk_pays, s.client, s.fournisseur, s.code_client, s.code_fournisseur, s.code_compta as code_compta_client, s.code_compta_fournisseur,';
|
||||||
$sql .= " typent.code as typent_code,";
|
$sql .= " typent.code as typent_code,";
|
||||||
$sql .= " state.code_departement as state_code, state.nom as state_name,";
|
$sql .= " state.code_departement as state_code, state.nom as state_name,";
|
||||||
$sql .= " country.code as country_code,";
|
$sql .= " country.code as country_code,";
|
||||||
@ -486,12 +489,14 @@ if ($search_type != '' && $search_type != '-1') $sql .= " AND f.type IN (".$db->
|
|||||||
if ($search_project_ref) $sql .= natural_search('p.ref', $search_project_ref);
|
if ($search_project_ref) $sql .= natural_search('p.ref', $search_project_ref);
|
||||||
if ($search_project) $sql .= natural_search('p.title', $search_project);
|
if ($search_project) $sql .= natural_search('p.title', $search_project);
|
||||||
if ($search_societe) $sql .= natural_search('s.nom', $search_societe);
|
if ($search_societe) $sql .= natural_search('s.nom', $search_societe);
|
||||||
|
if ($search_societe_alias) $sql .= natural_search('s.name_alias', $search_societe_alias);
|
||||||
if ($search_town) $sql .= natural_search('s.town', $search_town);
|
if ($search_town) $sql .= natural_search('s.town', $search_town);
|
||||||
if ($search_zip) $sql .= natural_search("s.zip", $search_zip);
|
if ($search_zip) $sql .= natural_search("s.zip", $search_zip);
|
||||||
if ($search_state) $sql .= natural_search("state.nom", $search_state);
|
if ($search_state) $sql .= natural_search("state.nom", $search_state);
|
||||||
if ($search_country) $sql .= " AND s.fk_pays IN (".$db->sanitize($db->escape($search_country)).')';
|
if ($search_country) $sql .= " AND s.fk_pays IN (".$db->sanitize($db->escape($search_country)).')';
|
||||||
if ($search_type_thirdparty) $sql .= " AND s.fk_typent IN (".$db->sanitize($db->escape($search_type_thirdparty)).')';
|
if ($search_type_thirdparty) $sql .= " AND s.fk_typent IN (".$db->sanitize($db->escape($search_type_thirdparty)).')';
|
||||||
if ($search_company) $sql .= natural_search('s.nom', $search_company);
|
if ($search_company) $sql .= natural_search('s.nom', $search_company);
|
||||||
|
if ($search_company_alias) $sql .= natural_search('s.name_alias', $search_company_alias);
|
||||||
if ($search_montant_ht != '') $sql .= natural_search('f.total', $search_montant_ht, 1);
|
if ($search_montant_ht != '') $sql .= natural_search('f.total', $search_montant_ht, 1);
|
||||||
if ($search_montant_vat != '') $sql .= natural_search('f.tva', $search_montant_vat, 1);
|
if ($search_montant_vat != '') $sql .= natural_search('f.tva', $search_montant_vat, 1);
|
||||||
if ($search_montant_localtax1 != '') $sql .= natural_search('f.localtax1', $search_montant_localtax1, 1);
|
if ($search_montant_localtax1 != '') $sql .= natural_search('f.localtax1', $search_montant_localtax1, 1);
|
||||||
@ -551,7 +556,7 @@ if (!$sall)
|
|||||||
$sql .= ' f.retained_warranty, f.retained_warranty_date_limit, f.situation_final, f.situation_cycle_ref, f.situation_counter,';
|
$sql .= ' f.retained_warranty, f.retained_warranty_date_limit, f.situation_final, f.situation_cycle_ref, f.situation_counter,';
|
||||||
$sql .= ' f.fk_user_author, f.fk_multicurrency, f.multicurrency_code, f.multicurrency_tx, f.multicurrency_total_ht, f.multicurrency_total_tva,';
|
$sql .= ' f.fk_user_author, f.fk_multicurrency, f.multicurrency_code, f.multicurrency_tx, f.multicurrency_total_ht, f.multicurrency_total_tva,';
|
||||||
$sql .= ' f.multicurrency_total_tva, f.multicurrency_total_ttc,';
|
$sql .= ' f.multicurrency_total_tva, f.multicurrency_total_ttc,';
|
||||||
$sql .= ' s.rowid, s.nom, s.email, s.town, s.zip, s.fk_pays, s.client, s.fournisseur, s.code_client, s.code_fournisseur, s.code_compta, s.code_compta_fournisseur,';
|
$sql .= ' s.rowid, s.nom, s.name_alias, s.email, s.town, s.zip, s.fk_pays, s.client, s.fournisseur, s.code_client, s.code_fournisseur, s.code_compta, s.code_compta_fournisseur,';
|
||||||
$sql .= ' typent.code,';
|
$sql .= ' typent.code,';
|
||||||
$sql .= ' state.code_departement, state.nom,';
|
$sql .= ' state.code_departement, state.nom,';
|
||||||
$sql .= ' country.code,';
|
$sql .= ' country.code,';
|
||||||
@ -628,6 +633,7 @@ if ($resql)
|
|||||||
if ($search_project) $param .= '&search_project='.urlencode($search_project);
|
if ($search_project) $param .= '&search_project='.urlencode($search_project);
|
||||||
if ($search_type != '') $param .= '&search_type='.urlencode($search_type);
|
if ($search_type != '') $param .= '&search_type='.urlencode($search_type);
|
||||||
if ($search_societe) $param .= '&search_societe='.urlencode($search_societe);
|
if ($search_societe) $param .= '&search_societe='.urlencode($search_societe);
|
||||||
|
if ($search_societe_alias) $param .= '&search_societe_alias='.urlencode($search_societe_alias);
|
||||||
if ($search_town) $param .= '&search_town='.urlencode($search_town);
|
if ($search_town) $param .= '&search_town='.urlencode($search_town);
|
||||||
if ($search_zip) $param .= '&search_zip='.urlencode($search_zip);
|
if ($search_zip) $param .= '&search_zip='.urlencode($search_zip);
|
||||||
if ($search_sale > 0) $param .= '&search_sale='.urlencode($search_sale);
|
if ($search_sale > 0) $param .= '&search_sale='.urlencode($search_sale);
|
||||||
@ -861,6 +867,11 @@ if ($resql)
|
|||||||
{
|
{
|
||||||
print '<td class="liste_titre"><input class="flat maxwidth75imp" type="text" name="search_societe" value="'.$search_societe.'"></td>';
|
print '<td class="liste_titre"><input class="flat maxwidth75imp" type="text" name="search_societe" value="'.$search_societe.'"></td>';
|
||||||
}
|
}
|
||||||
|
// Alias
|
||||||
|
if (!empty($arrayfields['s.name_alias']['checked']))
|
||||||
|
{
|
||||||
|
print '<td class="liste_titre"><input class="flat maxwidth75imp" type="text" name="search_societe_alias" value="'.$search_societe_alias.'"></td>';
|
||||||
|
}
|
||||||
// Town
|
// Town
|
||||||
if (!empty($arrayfields['s.town']['checked'])) print '<td class="liste_titre"><input class="flat maxwidth75imp" type="text" name="search_town" value="'.dol_escape_htmltag($search_town).'"></td>';
|
if (!empty($arrayfields['s.town']['checked'])) print '<td class="liste_titre"><input class="flat maxwidth75imp" type="text" name="search_town" value="'.dol_escape_htmltag($search_town).'"></td>';
|
||||||
// Zip
|
// Zip
|
||||||
@ -1099,6 +1110,7 @@ if ($resql)
|
|||||||
if (!empty($arrayfields['p.ref']['checked'])) print_liste_field_titre($arrayfields['p.ref']['label'], $_SERVER['PHP_SELF'], "p.ref", '', $param, '', $sortfield, $sortorder);
|
if (!empty($arrayfields['p.ref']['checked'])) print_liste_field_titre($arrayfields['p.ref']['label'], $_SERVER['PHP_SELF'], "p.ref", '', $param, '', $sortfield, $sortorder);
|
||||||
if (!empty($arrayfields['p.title']['checked'])) print_liste_field_titre($arrayfields['p.title']['label'], $_SERVER['PHP_SELF'], "p.title", '', $param, '', $sortfield, $sortorder);
|
if (!empty($arrayfields['p.title']['checked'])) print_liste_field_titre($arrayfields['p.title']['label'], $_SERVER['PHP_SELF'], "p.title", '', $param, '', $sortfield, $sortorder);
|
||||||
if (!empty($arrayfields['s.nom']['checked'])) print_liste_field_titre($arrayfields['s.nom']['label'], $_SERVER['PHP_SELF'], 's.nom', '', $param, '', $sortfield, $sortorder);
|
if (!empty($arrayfields['s.nom']['checked'])) print_liste_field_titre($arrayfields['s.nom']['label'], $_SERVER['PHP_SELF'], 's.nom', '', $param, '', $sortfield, $sortorder);
|
||||||
|
if (!empty($arrayfields['s.name_alias']['checked'])) print_liste_field_titre($arrayfields['s.name_alias']['label'], $_SERVER['PHP_SELF'], 's.name_alias', '', $param, '', $sortfield, $sortorder);
|
||||||
if (!empty($arrayfields['s.town']['checked'])) print_liste_field_titre($arrayfields['s.town']['label'], $_SERVER["PHP_SELF"], 's.town', '', $param, '', $sortfield, $sortorder);
|
if (!empty($arrayfields['s.town']['checked'])) print_liste_field_titre($arrayfields['s.town']['label'], $_SERVER["PHP_SELF"], 's.town', '', $param, '', $sortfield, $sortorder);
|
||||||
if (!empty($arrayfields['s.zip']['checked'])) print_liste_field_titre($arrayfields['s.zip']['label'], $_SERVER["PHP_SELF"], 's.zip', '', $param, '', $sortfield, $sortorder);
|
if (!empty($arrayfields['s.zip']['checked'])) print_liste_field_titre($arrayfields['s.zip']['label'], $_SERVER["PHP_SELF"], 's.zip', '', $param, '', $sortfield, $sortorder);
|
||||||
if (!empty($arrayfields['state.nom']['checked'])) print_liste_field_titre($arrayfields['state.nom']['label'], $_SERVER["PHP_SELF"], "state.nom", "", $param, '', $sortfield, $sortorder);
|
if (!empty($arrayfields['state.nom']['checked'])) print_liste_field_titre($arrayfields['state.nom']['label'], $_SERVER["PHP_SELF"], "state.nom", "", $param, '', $sortfield, $sortorder);
|
||||||
@ -1361,6 +1373,14 @@ if ($resql)
|
|||||||
print '</td>';
|
print '</td>';
|
||||||
if (!$i) $totalarray['nbfield']++;
|
if (!$i) $totalarray['nbfield']++;
|
||||||
}
|
}
|
||||||
|
// Alias
|
||||||
|
if (!empty($arrayfields['s.name_alias']['checked']))
|
||||||
|
{
|
||||||
|
print '<td>';
|
||||||
|
print $obj->name_alias;
|
||||||
|
print '</td>';
|
||||||
|
if (!$i) $totalarray['nbfield']++;
|
||||||
|
}
|
||||||
// Town
|
// Town
|
||||||
if (!empty($arrayfields['s.town']['checked']))
|
if (!empty($arrayfields['s.town']['checked']))
|
||||||
{
|
{
|
||||||
|
|||||||
@ -182,8 +182,7 @@ if ($action == 'update' && !$_POST["cancel"] && $user->rights->tax->charges->cre
|
|||||||
|
|
||||||
if (!$dateech)
|
if (!$dateech)
|
||||||
{
|
{
|
||||||
setEventMessages($langs->trans("ErrorFieldReqrequire_once DOL_DOCUMENT_ROOT.'/compta/sociales/class/chargesociales.class.php';
|
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("Date")), null, 'errors');
|
||||||
uired", $langs->transnoentities("Date")), null, 'errors');
|
|
||||||
$action = 'edit';
|
$action = 'edit';
|
||||||
} elseif (!$dateperiod)
|
} elseif (!$dateperiod)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -200,7 +200,7 @@ if (empty($reshook))
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$object->email = (string) GETPOST("email", 'alpha');
|
$object->email = (string) GETPOST('email', 'custom', 0, FILTER_SANITIZE_EMAIL);
|
||||||
$object->no_email = GETPOST("no_email", "int");
|
$object->no_email = GETPOST("no_email", "int");
|
||||||
$object->phone_pro = (string) GETPOST("phone_pro", 'alpha');
|
$object->phone_pro = (string) GETPOST("phone_pro", 'alpha');
|
||||||
$object->phone_perso = (string) GETPOST("phone_perso", 'alpha');
|
$object->phone_perso = (string) GETPOST("phone_perso", 'alpha');
|
||||||
@ -225,44 +225,59 @@ if (empty($reshook))
|
|||||||
$action = 'create';
|
$action = 'create';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!GETPOST("lastname")) {
|
if (!empty($conf->mailing->enabled) && $conf->global->MAILING_CONTACT_DEFAULT_BULK_STATUS==-1 && $object->no_email==-1 && !empty($object->email)) {
|
||||||
|
$error++;
|
||||||
|
$errors[] = $langs->trans("ErrorFieldRequired", $langs->transnoentities("No_Email"));
|
||||||
|
$action = 'create';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($object->email) && !isValidEMail($object->email))
|
||||||
|
{
|
||||||
|
$langs->load("errors");
|
||||||
|
$error++;
|
||||||
|
$errors[] = $langs->trans("ErrorBadEMail", GETPOST('email', 'alpha'));
|
||||||
|
$action = 'create';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($object->lastname)) {
|
||||||
$error++;
|
$error++;
|
||||||
$errors[] = $langs->trans("ErrorFieldRequired", $langs->transnoentities("Lastname").' / '.$langs->transnoentities("Label"));
|
$errors[] = $langs->trans("ErrorFieldRequired", $langs->transnoentities("Lastname").' / '.$langs->transnoentities("Label"));
|
||||||
$action = 'create';
|
$action = 'create';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$error)
|
if (empty($error)) {
|
||||||
{
|
|
||||||
$id = $object->create($user);
|
$id = $object->create($user);
|
||||||
if ($id <= 0)
|
if ($id <= 0) {
|
||||||
{
|
|
||||||
$error++;
|
$error++;
|
||||||
$errors = array_merge($errors, ($object->error ? array($object->error) : $object->errors));
|
$errors = array_merge($errors, ($object->error ? array($object->error) : $object->errors));
|
||||||
$action = 'create';
|
$action = 'create';
|
||||||
} else {
|
}
|
||||||
// Categories association
|
}
|
||||||
$contcats = GETPOST('contcats', 'array');
|
|
||||||
$object->setCategories($contcats);
|
|
||||||
|
|
||||||
// Add mass emailing flag into table mailing_unsubscribe
|
if (empty($error)) {
|
||||||
if (GETPOST('no_email', 'int') && $object->email)
|
// Categories association
|
||||||
{
|
$contcats = GETPOST('contcats', 'array');
|
||||||
$sql = "SELECT COUNT(*) as nb FROM ".MAIN_DB_PREFIX."mailing_unsubscribe WHERE entity IN (".getEntity('mailing', 0).") AND email = '".$db->escape($object->email)."'";
|
if (count($contcats)>0) {
|
||||||
$resql = $db->query($sql);
|
$result = $object->setCategories($contcats);
|
||||||
if ($resql)
|
if ($result <= 0) {
|
||||||
{
|
$error++;
|
||||||
$obj = $db->fetch_object($resql);
|
$errors = array_merge($errors, ($object->error ? array($object->error) : $object->errors));
|
||||||
if (empty($obj->nb))
|
$action = 'create';
|
||||||
{
|
|
||||||
$sql = "INSERT INTO ".MAIN_DB_PREFIX."mailing_unsubscribe(email, entity, date_creat) VALUES ('".$db->escape($object->email)."', ".$db->escape(getEntity('mailing', 0)).", '".$db->idate(dol_now())."')";
|
|
||||||
$resql = $db->query($sql);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$error && $id > 0)
|
if (empty($error) && !empty($conf->mailing->enabled) && !empty($object->email)) {
|
||||||
|
// Add mass emailing flag into table mailing_unsubscribe
|
||||||
|
$result=$object->setNoEmail($object->no_email);
|
||||||
|
if ($result<0) {
|
||||||
|
$error++;
|
||||||
|
$errors = array_merge($errors, ($object->error ? array($object->error) : $object->errors));
|
||||||
|
$action = 'create';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($error) && $id > 0)
|
||||||
{
|
{
|
||||||
$db->commit();
|
$db->commit();
|
||||||
if (!empty($backtopage)) $url = $backtopage;
|
if (!empty($backtopage)) $url = $backtopage;
|
||||||
@ -298,12 +313,26 @@ if (empty($reshook))
|
|||||||
|
|
||||||
if ($action == 'update' && !$_POST["cancel"] && $user->rights->societe->contact->creer)
|
if ($action == 'update' && !$_POST["cancel"] && $user->rights->societe->contact->creer)
|
||||||
{
|
{
|
||||||
if (empty($_POST["lastname"]))
|
if (empty(GETPOST("lastname", 'alpha')))
|
||||||
{
|
{
|
||||||
$error++; $errors = array($langs->trans("ErrorFieldRequired", $langs->transnoentities("Name").' / '.$langs->transnoentities("Label")));
|
$error++; $errors = array($langs->trans("ErrorFieldRequired", $langs->transnoentities("Name").' / '.$langs->transnoentities("Label")));
|
||||||
$action = 'edit';
|
$action = 'edit';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!empty($conf->mailing->enabled) && $conf->global->MAILING_CONTACT_DEFAULT_BULK_STATUS==-1 && GETPOST("no_email", "int")==-1 && !empty(GETPOST('email', 'custom', 0, FILTER_SANITIZE_EMAIL))) {
|
||||||
|
$error++;
|
||||||
|
$errors[] = $langs->trans("ErrorFieldRequired", $langs->transnoentities("No_Email"));
|
||||||
|
$action = 'edit';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty(GETPOST('email', 'custom', 0, FILTER_SANITIZE_EMAIL)) && !isValidEMail(GETPOST('email', 'custom', 0, FILTER_SANITIZE_EMAIL)))
|
||||||
|
{
|
||||||
|
$langs->load("errors");
|
||||||
|
$error++;
|
||||||
|
$errors[] = $langs->trans("ErrorBadEMail", GETPOST('email', 'alpha'));
|
||||||
|
$action = 'edit';
|
||||||
|
}
|
||||||
|
|
||||||
if (!$error)
|
if (!$error)
|
||||||
{
|
{
|
||||||
$contactid = GETPOST("contactid", 'int');
|
$contactid = GETPOST("contactid", 'int');
|
||||||
@ -374,7 +403,7 @@ if (empty($reshook))
|
|||||||
$object->state_id = GETPOST("state_id", 'int');
|
$object->state_id = GETPOST("state_id", 'int');
|
||||||
$object->country_id = GETPOST("country_id", 'int');
|
$object->country_id = GETPOST("country_id", 'int');
|
||||||
|
|
||||||
$object->email = (string) GETPOST("email", 'alpha');
|
$object->email = (string) GETPOST('email', 'custom', 0, FILTER_SANITIZE_EMAIL);
|
||||||
$object->no_email = GETPOST("no_email", "int");
|
$object->no_email = GETPOST("no_email", "int");
|
||||||
//$object->jabberid = GETPOST("jabberid", 'alpha');
|
//$object->jabberid = GETPOST("jabberid", 'alpha');
|
||||||
//$object->skype = GETPOST("skype", 'alpha');
|
//$object->skype = GETPOST("skype", 'alpha');
|
||||||
@ -411,31 +440,15 @@ if (empty($reshook))
|
|||||||
$categories = GETPOST('contcats', 'array');
|
$categories = GETPOST('contcats', 'array');
|
||||||
$object->setCategories($categories);
|
$object->setCategories($categories);
|
||||||
|
|
||||||
$no_email = GETPOST('no_email', 'int');
|
|
||||||
|
|
||||||
// Update mass emailing flag into table mailing_unsubscribe
|
// Update mass emailing flag into table mailing_unsubscribe
|
||||||
if (GETPOSTISSET('no_email') && $object->email)
|
if (GETPOSTISSET('no_email') && $object->email)
|
||||||
{
|
{
|
||||||
if ($no_email)
|
$no_email = GETPOST('no_email', 'int');
|
||||||
{
|
$result=$object->setNoEmail($no_email);
|
||||||
$sql = "SELECT COUNT(*) as nb FROM ".MAIN_DB_PREFIX."mailing_unsubscribe WHERE entity IN (".getEntity('mailing', 0).") AND email = '".$db->escape($object->email)."'";
|
if ($result<0) {
|
||||||
$resql = $db->query($sql);
|
setEventMessages($object->error, $object->errors, 'errors');
|
||||||
if ($resql)
|
$action = 'edit';
|
||||||
{
|
|
||||||
$obj = $db->fetch_object($resql);
|
|
||||||
$noemail = $obj->nb;
|
|
||||||
if (empty($noemail))
|
|
||||||
{
|
|
||||||
$sql = "INSERT INTO ".MAIN_DB_PREFIX."mailing_unsubscribe(email, entity, date_creat) VALUES ('".$db->escape($object->email)."', ".$db->escape(getEntity('mailing', 0)).", '".$db->idate(dol_now())."')";
|
|
||||||
$resql = $db->query($sql);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$sql = "DELETE FROM ".MAIN_DB_PREFIX."mailing_unsubscribe WHERE email = '".$db->escape($object->email)."' AND entity = ".$db->escape(getEntity('mailing', 0));
|
|
||||||
$resql = $db->query($sql);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$object->no_email = $no_email;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$object->old_lastname = '';
|
$object->old_lastname = '';
|
||||||
@ -738,27 +751,36 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action))
|
|||||||
print '<input type="text" name="email" id="email" value="'.(GETPOSTISSET('email') ? GETPOST('email', 'alpha') : $object->email).'"></td>';
|
print '<input type="text" name="email" id="email" value="'.(GETPOSTISSET('email') ? GETPOST('email', 'alpha') : $object->email).'"></td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
|
//Unsubscribe
|
||||||
if (!empty($conf->mailing->enabled))
|
if (!empty($conf->mailing->enabled))
|
||||||
{
|
{
|
||||||
$noemail = '';
|
if ($conf->use_javascript_ajax && $conf->global->MAILING_CONTACT_DEFAULT_BULK_STATUS==-1)
|
||||||
if (empty($noemail) && !empty($object->email))
|
|
||||||
{
|
{
|
||||||
$sql = "SELECT COUNT(*) as nb FROM ".MAIN_DB_PREFIX."mailing_unsubscribe WHERE entity IN (".getEntity('mailing').") AND email = '".$db->escape($object->email)."'";
|
print "\n".'<script type="text/javascript" language="javascript">'."\n";
|
||||||
//print $sql;
|
print '$(document).ready(function () {
|
||||||
$resql = $db->query($sql);
|
$("#email").keyup(function() {
|
||||||
if ($resql)
|
if ($(this).val()!="") {
|
||||||
{
|
$(".noemail").addClass("fieldrequired");
|
||||||
$obj = $db->fetch_object($resql);
|
} else {
|
||||||
$noemail = $obj->nb;
|
$(".noemail").removeClass("fieldrequired");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
})'."\n";
|
||||||
|
print '</script>'."\n";
|
||||||
|
}
|
||||||
|
if (!GETPOSTISSET("no_email") && !empty($object->email))
|
||||||
|
{
|
||||||
|
$result=$object->getNoEmail();
|
||||||
|
if ($result<0) {
|
||||||
|
setEventMessages($object->error, $object->errors, 'errors');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
print '<tr>';
|
print '<tr>';
|
||||||
print '<td><label for="no_email">'.$langs->trans("No_Email").'</label></td>';
|
print '<td class="noemail"><label for="no_email">'.$langs->trans("No_Email").'</label></td>';
|
||||||
print '<td>'.$form->selectyesno('no_email', (GETPOSTISSET("no_email") ? GETPOST("no_email", 'alpha') : $noemail), 1).'</td>';
|
print '<td>'.$form->selectyesno('no_email', (GETPOSTISSET("no_email") ? GETPOST("no_email", 'int') : $conf->global->MAILING_CONTACT_DEFAULT_BULK_STATUS), 1, false, ($conf->global->MAILING_CONTACT_DEFAULT_BULK_STATUS==-1)).'</td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
}
|
}
|
||||||
print '</tr>';
|
|
||||||
|
|
||||||
if (!empty($conf->socialnetworks->enabled)) {
|
if (!empty($conf->socialnetworks->enabled)) {
|
||||||
foreach ($socialnetworks as $key => $value) {
|
foreach ($socialnetworks as $key => $value) {
|
||||||
@ -774,39 +796,6 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action))
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// if (! empty($conf->socialnetworks->enabled))
|
|
||||||
// {
|
|
||||||
// // Jabber
|
|
||||||
// if (! empty($conf->global->SOCIALNETWORKS_JABBER))
|
|
||||||
// {
|
|
||||||
// print '<tr><td><label for="skype">'.$form->editfieldkey('Jabber', 'jabberid', '', $object, 0).'</label></td>';
|
|
||||||
// print '<td colspan="3"><input type="text" name="jabberid" id="jabberid" class="minwidth100" maxlength="80" value="'.dol_escape_htmltag(GETPOSTISSET("jabberid")?GETPOST("jabberid", 'alpha'):$object->jabberid).'"></td></tr>';
|
|
||||||
// }
|
|
||||||
// // Skype
|
|
||||||
// if (! empty($conf->global->SOCIALNETWORKS_SKYPE))
|
|
||||||
// {
|
|
||||||
// print '<tr><td><label for="skype">'.$form->editfieldkey('Skype', 'skype', '', $object, 0).'</label></td>';
|
|
||||||
// print '<td colspan="3"><input type="text" name="skype" id="skype" class="minwidth100" maxlength="80" value="'.dol_escape_htmltag(GETPOSTISSET("skype")?GETPOST("skype", 'alpha'):$object->skype).'"></td></tr>';
|
|
||||||
// }
|
|
||||||
// // Twitter
|
|
||||||
// if (! empty($conf->global->SOCIALNETWORKS_TWITTER))
|
|
||||||
// {
|
|
||||||
// print '<tr><td><label for="twitter">'.$form->editfieldkey('Twitter', 'twitter', '', $object, 0).'</label></td>';
|
|
||||||
// print '<td colspan="3"><input type="text" name="twitter" id="twitter" class="minwidth100" maxlength="80" value="'.dol_escape_htmltag(GETPOSTISSET("twitter")?GETPOST("twitter", 'alpha'):$object->twitter).'"></td></tr>';
|
|
||||||
// }
|
|
||||||
// // Facebook
|
|
||||||
// if (! empty($conf->global->SOCIALNETWORKS_FACEBOOK))
|
|
||||||
// {
|
|
||||||
// print '<tr><td><label for="facebook">'.$form->editfieldkey('Facebook', 'facebook', '', $object, 0).'</label></td>';
|
|
||||||
// print '<td colspan="3"><input type="text" name="facebook" id="facebook" class="minwidth100" maxlength="80" value="'.dol_escape_htmltag(GETPOSTISSET("facebook")?GETPOST("facebook", 'alpha'):$object->facebook).'"></td></tr>';
|
|
||||||
// }
|
|
||||||
// // LinkedIn
|
|
||||||
// if (! empty($conf->global->SOCIALNETWORKS_LINKEDIN))
|
|
||||||
// {
|
|
||||||
// print '<tr><td><label for="linkedin">'.$form->editfieldkey('LinkedIn', 'linkedin', '', $object, 0).'</label></td>';
|
|
||||||
// print '<td colspan="3"><input type="text" name="linkedin" id="linkedin" class="minwidth100" maxlength="80" value="'.dol_escape_htmltag(GETPOSTISSET("linkedin")?GETPOST("linkedin", 'alpha'):$object->linkedin).'"></td></tr>';
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
// Visibility
|
// Visibility
|
||||||
print '<tr><td><label for="priv">'.$langs->trans("ContactVisibility").'</label></td><td colspan="3">';
|
print '<tr><td><label for="priv">'.$langs->trans("ContactVisibility").'</label></td><td colspan="3">';
|
||||||
@ -1050,28 +1039,40 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action))
|
|||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
// Unsubscribe
|
// Unsubscribe
|
||||||
print '<tr>';
|
|
||||||
if (!empty($conf->mailing->enabled))
|
if (!empty($conf->mailing->enabled))
|
||||||
{
|
{
|
||||||
$noemail = '';
|
if ($conf->use_javascript_ajax && $conf->global->MAILING_CONTACT_DEFAULT_BULK_STATUS==-1)
|
||||||
if (empty($noemail) && !empty($object->email))
|
|
||||||
{
|
{
|
||||||
$sql = "SELECT COUNT(*) as nb FROM ".MAIN_DB_PREFIX."mailing_unsubscribe WHERE entity IN (".getEntity('mailing').") AND email = '".$db->escape($object->email)."'";
|
print "\n".'<script type="text/javascript" language="javascript">'."\n";
|
||||||
//print $sql;
|
|
||||||
$resql = $db->query($sql);
|
print '
|
||||||
if ($resql)
|
jQuery(document).ready(function () {
|
||||||
{
|
function init_check_no_email(input) {
|
||||||
$obj = $db->fetch_object($resql);
|
if (input.val()!="") {
|
||||||
$noemail = $obj->nb;
|
$(".noemail").addClass("fieldrequired");
|
||||||
|
} else {
|
||||||
|
$(".noemail").removeClass("fieldrequired");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$("#email").keyup(function() {
|
||||||
|
init_check_no_email($(this));
|
||||||
|
});
|
||||||
|
init_check_no_email($("#email"));
|
||||||
|
})'."\n";
|
||||||
|
print '</script>'."\n";
|
||||||
|
}
|
||||||
|
if (!GETPOSTISSET("no_email") && !empty($object->email))
|
||||||
|
{
|
||||||
|
$result=$object->getNoEmail();
|
||||||
|
if ($result<0) {
|
||||||
|
setEventMessages($object->error, $object->errors, 'errors');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
print '<tr>';
|
||||||
print '<td><label for="no_email">'.$langs->trans("No_Email").'</label></td>';
|
print '<td class="noemail"><label for="no_email">'.$langs->trans("No_Email").'</label></td>';
|
||||||
print '<td>'.$form->selectyesno('no_email', (GETPOSTISSET("no_email") ?GETPOST("no_email", 'alpha') : $noemail), 1).'</td>';
|
print '<td>'.$form->selectyesno('no_email', (GETPOSTISSET("no_email") ? GETPOST("no_email", 'int') : $object->no_email), 1, false, ($conf->global->MAILING_CONTACT_DEFAULT_BULK_STATUS==-1)).'</td>';
|
||||||
} else {
|
print '</tr>';
|
||||||
print '<td colspan="2"></td>';
|
|
||||||
}
|
}
|
||||||
print '</tr>';
|
|
||||||
|
|
||||||
if (!empty($conf->socialnetworks->enabled)) {
|
if (!empty($conf->socialnetworks->enabled)) {
|
||||||
foreach ($socialnetworks as $key => $value) {
|
foreach ($socialnetworks as $key => $value) {
|
||||||
@ -1300,20 +1301,11 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action))
|
|||||||
// Unsubscribe opt-out
|
// Unsubscribe opt-out
|
||||||
if (!empty($conf->mailing->enabled))
|
if (!empty($conf->mailing->enabled))
|
||||||
{
|
{
|
||||||
//print 'eee'.$object->email;
|
$result=$object->getNoEmail();
|
||||||
$noemail = $object->no_email;
|
if ($result<0) {
|
||||||
if (empty($noemail) && !empty($object->email))
|
setEventMessages($object->error, $object->errors, 'errors');
|
||||||
{
|
|
||||||
$sql = "SELECT COUNT(*) as nb FROM ".MAIN_DB_PREFIX."mailing_unsubscribe WHERE entity IN (".getEntity('mailing').") AND email = '".$db->escape($object->email)."'";
|
|
||||||
//print $sql;
|
|
||||||
$resql = $db->query($sql);
|
|
||||||
if ($resql)
|
|
||||||
{
|
|
||||||
$obj = $db->fetch_object($resql);
|
|
||||||
$noemail = $obj->nb;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
print '<tr><td>'.$langs->trans("No_Email").'</td><td>'.yn($noemail).'</td></tr>';
|
print '<tr><td>'.$langs->trans("No_Email").'</td><td>'.yn($object->no_email).'</td></tr>';
|
||||||
}
|
}
|
||||||
|
|
||||||
print '<tr><td>'.$langs->trans("ContactVisibility").'</td><td>';
|
print '<tr><td>'.$langs->trans("ContactVisibility").'</td><td>';
|
||||||
|
|||||||
@ -1180,6 +1180,20 @@ class Contact extends CommonObject
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!$error)
|
||||||
|
{
|
||||||
|
// Remove Roles
|
||||||
|
$sql = "DELETE FROM ".MAIN_DB_PREFIX."societe_contacts WHERE fk_socpeople = ".$this->id;
|
||||||
|
dol_syslog(__METHOD__, LOG_DEBUG);
|
||||||
|
$resql = $this->db->query($sql);
|
||||||
|
if (!$resql)
|
||||||
|
{
|
||||||
|
$error++;
|
||||||
|
$this->error .= $this->db->lasterror();
|
||||||
|
$errorflag = -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (!$error)
|
if (!$error)
|
||||||
{
|
{
|
||||||
// Remove category
|
// Remove category
|
||||||
@ -1880,4 +1894,94 @@ class Contact extends CommonObject
|
|||||||
|
|
||||||
return "Error, mode/status not found";
|
return "Error, mode/status not found";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set "blacklist" mailing status
|
||||||
|
*
|
||||||
|
* @param int $no_email 1=Do not send mailing, 0=Ok to recieve mailling
|
||||||
|
* @return int <0 if KO, >0 if OK
|
||||||
|
*/
|
||||||
|
public function setNoEmail($no_email)
|
||||||
|
{
|
||||||
|
$error = 0;
|
||||||
|
|
||||||
|
// Update mass emailing flag into table mailing_unsubscribe
|
||||||
|
if ($this->email)
|
||||||
|
{
|
||||||
|
$this->db->begin();
|
||||||
|
|
||||||
|
if ($no_email)
|
||||||
|
{
|
||||||
|
$sql = "SELECT COUNT(rowid) as nb FROM ".MAIN_DB_PREFIX."mailing_unsubscribe WHERE entity IN (".getEntity('mailing', 0).") AND email = '".$this->db->escape($this->email)."'";
|
||||||
|
$resql = $this->db->query($sql);
|
||||||
|
if ($resql)
|
||||||
|
{
|
||||||
|
$obj = $this->db->fetch_object($resql);
|
||||||
|
$noemail = $obj->nb;
|
||||||
|
if (empty($noemail))
|
||||||
|
{
|
||||||
|
$sql = "INSERT INTO ".MAIN_DB_PREFIX."mailing_unsubscribe(email, entity, date_creat) VALUES ('".$this->db->escape($this->email)."', ".$this->db->escape(getEntity('mailing', 0)).", '".$this->db->idate(dol_now())."')";
|
||||||
|
$resql = $this->db->query($sql);
|
||||||
|
if (!$resql)
|
||||||
|
{
|
||||||
|
$error++;
|
||||||
|
$this->error = $this->db->lasterror();
|
||||||
|
$this->errors[] = $this->error;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$error++;
|
||||||
|
$this->error = $this->db->lasterror();
|
||||||
|
$this->errors[] = $this->error;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$sql = "DELETE FROM ".MAIN_DB_PREFIX."mailing_unsubscribe WHERE email = '".$this->db->escape($this->email)."' AND entity = ".$this->db->escape(getEntity('mailing', 0));
|
||||||
|
$resql = $this->db->query($sql);
|
||||||
|
if (!$resql)
|
||||||
|
{
|
||||||
|
$error++;
|
||||||
|
$this->error = $this->db->lasterror();
|
||||||
|
$this->errors[] = $this->error;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($error)) {
|
||||||
|
$this->no_email = $no_email;
|
||||||
|
$this->db->commit();
|
||||||
|
return 1;
|
||||||
|
} else {
|
||||||
|
$this->db->rollback();
|
||||||
|
return $error * -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* get "blacklist" mailing status
|
||||||
|
* set no_email attribut to 1 or 0
|
||||||
|
*
|
||||||
|
* @return int <0 if KO, >0 if OK
|
||||||
|
*/
|
||||||
|
public function getNoEmail()
|
||||||
|
{
|
||||||
|
if ($this->email)
|
||||||
|
{
|
||||||
|
$sql = "SELECT COUNT(rowid) as nb FROM ".MAIN_DB_PREFIX."mailing_unsubscribe WHERE entity IN (".getEntity('mailing').") AND email = '".$this->db->escape($this->email)."'";
|
||||||
|
$resql = $this->db->query($sql);
|
||||||
|
if ($resql)
|
||||||
|
{
|
||||||
|
$obj = $this->db->fetch_object($resql);
|
||||||
|
$this->no_email = $obj->nb;
|
||||||
|
return 1;
|
||||||
|
} else {
|
||||||
|
$this->error = $this->db->lasterror();
|
||||||
|
$this->errors[] = $this->error;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -385,7 +385,7 @@ if (empty($reshook))
|
|||||||
$predef = '';
|
$predef = '';
|
||||||
$product_desc = (GETPOSTISSET('dp_desc') ? GETPOST('dp_desc', 'restricthtml') : '');
|
$product_desc = (GETPOSTISSET('dp_desc') ? GETPOST('dp_desc', 'restricthtml') : '');
|
||||||
$price_ht = price2num(GETPOST('price_ht'), 'MU');
|
$price_ht = price2num(GETPOST('price_ht'), 'MU');
|
||||||
$price_ht_devise = price2num(GETPOST('multicurrency_price_ht', 'CR'));
|
$price_ht_devise = price2num(GETPOST('multicurrency_price_ht', 'CU'));
|
||||||
if (GETPOST('prod_entry_mode', 'alpha') == 'free')
|
if (GETPOST('prod_entry_mode', 'alpha') == 'free')
|
||||||
{
|
{
|
||||||
$idprod = 0;
|
$idprod = 0;
|
||||||
@ -395,7 +395,7 @@ if (empty($reshook))
|
|||||||
$tva_tx = '';
|
$tva_tx = '';
|
||||||
}
|
}
|
||||||
|
|
||||||
$qty = price2num(GETPOST('qty'.$predef), 'alpha');
|
$qty = price2num(GETPOST('qty'.$predef, 'alpha'), 'MS');
|
||||||
$remise_percent = ((GETPOST('remise_percent'.$predef) != '') ? GETPOST('remise_percent'.$predef) : 0);
|
$remise_percent = ((GETPOST('remise_percent'.$predef) != '') ? GETPOST('remise_percent'.$predef) : 0);
|
||||||
|
|
||||||
if ($qty == '')
|
if ($qty == '')
|
||||||
@ -499,6 +499,12 @@ if (empty($reshook))
|
|||||||
}
|
}
|
||||||
|
|
||||||
$desc = $prod->description;
|
$desc = $prod->description;
|
||||||
|
|
||||||
|
//If text set in desc is the same as product descpription (as now it's preloaded) whe add it only one time
|
||||||
|
if ($product_desc==$desc && !empty($conf->global->PRODUIT_AUTOFILL_DESC)) {
|
||||||
|
$product_desc='';
|
||||||
|
}
|
||||||
|
|
||||||
if (!empty($product_desc) && !empty($conf->global->MAIN_NO_CONCAT_DESCRIPTION)) $desc = $product_desc;
|
if (!empty($product_desc) && !empty($conf->global->MAIN_NO_CONCAT_DESCRIPTION)) $desc = $product_desc;
|
||||||
else $desc = dol_concatdesc($desc, $product_desc, '', !empty($conf->global->MAIN_CHANGE_ORDER_CONCAT_DESCRIPTION));
|
else $desc = dol_concatdesc($desc, $product_desc, '', !empty($conf->global->MAIN_CHANGE_ORDER_CONCAT_DESCRIPTION));
|
||||||
|
|
||||||
|
|||||||
@ -91,7 +91,7 @@ class box_birthdays extends ModeleBoxes
|
|||||||
$sql .= " WHERE u.entity IN (".getEntity('user').")";
|
$sql .= " WHERE u.entity IN (".getEntity('user').")";
|
||||||
$sql .= " AND u.statut = 1";
|
$sql .= " AND u.statut = 1";
|
||||||
$sql .= dolSqlDateFilter('u.birth', 0, $tmparray['mon'], 0);
|
$sql .= dolSqlDateFilter('u.birth', 0, $tmparray['mon'], 0);
|
||||||
$sql .= " ORDER BY u.birth ASC";
|
$sql .= " ORDER BY DAY(u.birth) ASC";
|
||||||
$sql .= $this->db->plimit($max, 0);
|
$sql .= $this->db->plimit($max, 0);
|
||||||
|
|
||||||
dol_syslog(get_class($this)."::loadBox", LOG_DEBUG);
|
dol_syslog(get_class($this)."::loadBox", LOG_DEBUG);
|
||||||
|
|||||||
@ -91,7 +91,7 @@ class box_birthdays_members extends ModeleBoxes
|
|||||||
$sql .= " WHERE u.entity IN (".getEntity('adherent').")";
|
$sql .= " WHERE u.entity IN (".getEntity('adherent').")";
|
||||||
$sql .= " AND u.statut = 1";
|
$sql .= " AND u.statut = 1";
|
||||||
$sql .= dolSqlDateFilter('u.birth', 0, $tmparray['mon'], 0);
|
$sql .= dolSqlDateFilter('u.birth', 0, $tmparray['mon'], 0);
|
||||||
$sql .= " ORDER BY u.birth ASC";
|
$sql .= " ORDER BY DAY(u.birth) ASC";
|
||||||
$sql .= $this->db->plimit($max, 0);
|
$sql .= $this->db->plimit($max, 0);
|
||||||
|
|
||||||
dol_syslog(get_class($this)."::loadBox", LOG_DEBUG);
|
dol_syslog(get_class($this)."::loadBox", LOG_DEBUG);
|
||||||
|
|||||||
@ -120,7 +120,8 @@ class box_graph_invoices_permonth extends ModeleBoxes
|
|||||||
if (empty($shownb) && empty($showtot)) { $shownb = 1; $showtot = 1; }
|
if (empty($shownb) && empty($showtot)) { $shownb = 1; $showtot = 1; }
|
||||||
$nowarray = dol_getdate(dol_now(), true);
|
$nowarray = dol_getdate(dol_now(), true);
|
||||||
if (empty($endyear)) $endyear = $nowarray['year'];
|
if (empty($endyear)) $endyear = $nowarray['year'];
|
||||||
$startyear = $endyear - 1;
|
$startyear = $endyear - (empty($conf->global->MAIN_NB_OF_YEAR_IN_WIDGET_GRAPH) ? 1 : $conf->global->MAIN_NB_OF_YEAR_IN_WIDGET_GRAPH);
|
||||||
|
|
||||||
$mode = 'customer';
|
$mode = 'customer';
|
||||||
$WIDTH = (($shownb && $showtot) || !empty($conf->dol_optimize_smallscreen)) ? '256' : '320';
|
$WIDTH = (($shownb && $showtot) || !empty($conf->dol_optimize_smallscreen)) ? '256' : '320';
|
||||||
$HEIGHT = '192';
|
$HEIGHT = '192';
|
||||||
|
|||||||
@ -118,7 +118,8 @@ class box_graph_invoices_supplier_permonth extends ModeleBoxes
|
|||||||
$nowarray = dol_getdate(dol_now(), true);
|
$nowarray = dol_getdate(dol_now(), true);
|
||||||
if (empty($year)) $year = $nowarray['year'];
|
if (empty($year)) $year = $nowarray['year'];
|
||||||
if (empty($endyear)) $endyear = $nowarray['year'];
|
if (empty($endyear)) $endyear = $nowarray['year'];
|
||||||
$startyear = $endyear - 1;
|
$startyear = $endyear - (empty($conf->global->MAIN_NB_OF_YEAR_IN_WIDGET_GRAPH) ? 1 : $conf->global->MAIN_NB_OF_YEAR_IN_WIDGET_GRAPH);
|
||||||
|
|
||||||
$mode = 'supplier';
|
$mode = 'supplier';
|
||||||
$WIDTH = (($shownb && $showtot) || !empty($conf->dol_optimize_smallscreen)) ? '256' : '320';
|
$WIDTH = (($shownb && $showtot) || !empty($conf->dol_optimize_smallscreen)) ? '256' : '320';
|
||||||
$HEIGHT = '192';
|
$HEIGHT = '192';
|
||||||
|
|||||||
@ -120,7 +120,8 @@ class box_graph_orders_permonth extends ModeleBoxes
|
|||||||
if (empty($shownb) && empty($showtot)) { $shownb = 1; $showtot = 1; }
|
if (empty($shownb) && empty($showtot)) { $shownb = 1; $showtot = 1; }
|
||||||
$nowarray = dol_getdate(dol_now(), true);
|
$nowarray = dol_getdate(dol_now(), true);
|
||||||
if (empty($endyear)) $endyear = $nowarray['year'];
|
if (empty($endyear)) $endyear = $nowarray['year'];
|
||||||
$startyear = $endyear - 1;
|
$startyear = $endyear - (empty($conf->global->MAIN_NB_OF_YEAR_IN_WIDGET_GRAPH) ? 1 : $conf->global->MAIN_NB_OF_YEAR_IN_WIDGET_GRAPH);
|
||||||
|
|
||||||
$mode = 'customer';
|
$mode = 'customer';
|
||||||
$WIDTH = (($shownb && $showtot) || !empty($conf->dol_optimize_smallscreen)) ? '256' : '320';
|
$WIDTH = (($shownb && $showtot) || !empty($conf->dol_optimize_smallscreen)) ? '256' : '320';
|
||||||
$HEIGHT = '192';
|
$HEIGHT = '192';
|
||||||
|
|||||||
@ -119,7 +119,8 @@ class box_graph_orders_supplier_permonth extends ModeleBoxes
|
|||||||
if (empty($shownb) && empty($showtot)) { $shownb = 1; $showtot = 1; }
|
if (empty($shownb) && empty($showtot)) { $shownb = 1; $showtot = 1; }
|
||||||
$nowarray = dol_getdate(dol_now(), true);
|
$nowarray = dol_getdate(dol_now(), true);
|
||||||
if (empty($endyear)) $endyear = $nowarray['year'];
|
if (empty($endyear)) $endyear = $nowarray['year'];
|
||||||
$startyear = $endyear - 1;
|
$startyear = $endyear - (empty($conf->global->MAIN_NB_OF_YEAR_IN_WIDGET_GRAPH) ? 1 : $conf->global->MAIN_NB_OF_YEAR_IN_WIDGET_GRAPH);
|
||||||
|
|
||||||
$mode = 'supplier';
|
$mode = 'supplier';
|
||||||
$WIDTH = (($shownb && $showtot) || !empty($conf->dol_optimize_smallscreen)) ? '256' : '320';
|
$WIDTH = (($shownb && $showtot) || !empty($conf->dol_optimize_smallscreen)) ? '256' : '320';
|
||||||
$HEIGHT = '192';
|
$HEIGHT = '192';
|
||||||
|
|||||||
@ -120,7 +120,8 @@ class box_graph_propales_permonth extends ModeleBoxes
|
|||||||
if (empty($shownb) && empty($showtot)) { $shownb = 1; $showtot = 1; }
|
if (empty($shownb) && empty($showtot)) { $shownb = 1; $showtot = 1; }
|
||||||
$nowarray = dol_getdate(dol_now(), true);
|
$nowarray = dol_getdate(dol_now(), true);
|
||||||
if (empty($endyear)) $endyear = $nowarray['year'];
|
if (empty($endyear)) $endyear = $nowarray['year'];
|
||||||
$startyear = $endyear - 1;
|
$startyear = $endyear - (empty($conf->global->MAIN_NB_OF_YEAR_IN_WIDGET_GRAPH) ? 1 : $conf->global->MAIN_NB_OF_YEAR_IN_WIDGET_GRAPH);
|
||||||
|
|
||||||
$WIDTH = (($shownb && $showtot) || !empty($conf->dol_optimize_smallscreen)) ? '256' : '320';
|
$WIDTH = (($shownb && $showtot) || !empty($conf->dol_optimize_smallscreen)) ? '256' : '320';
|
||||||
$HEIGHT = '192';
|
$HEIGHT = '192';
|
||||||
|
|
||||||
|
|||||||
@ -3257,14 +3257,18 @@ abstract class CommonObject
|
|||||||
*
|
*
|
||||||
* @param string $origin Linked element type
|
* @param string $origin Linked element type
|
||||||
* @param int $origin_id Linked element id
|
* @param int $origin_id Linked element id
|
||||||
|
* @param User $f_user User that create
|
||||||
|
* @param int $notrigger 1=Does not execute triggers, 0= execute triggers
|
||||||
* @return int <=0 if KO, >0 if OK
|
* @return int <=0 if KO, >0 if OK
|
||||||
* @see fetchObjectLinked(), updateObjectLinked(), deleteObjectLinked()
|
* @see fetchObjectLinked(), updateObjectLinked(), deleteObjectLinked()
|
||||||
*/
|
*/
|
||||||
public function add_object_linked($origin = null, $origin_id = null)
|
public function add_object_linked($origin = null, $origin_id = null, $f_user = null, $notrigger = 0)
|
||||||
{
|
{
|
||||||
// phpcs:enable
|
// phpcs:enable
|
||||||
|
global $user;
|
||||||
$origin = (!empty($origin) ? $origin : $this->origin);
|
$origin = (!empty($origin) ? $origin : $this->origin);
|
||||||
$origin_id = (!empty($origin_id) ? $origin_id : $this->origin_id);
|
$origin_id = (!empty($origin_id) ? $origin_id : $this->origin_id);
|
||||||
|
$f_user = isset($f_user) ? $f_user : $user;
|
||||||
|
|
||||||
// Special case
|
// Special case
|
||||||
if ($origin == 'order') $origin = 'commande';
|
if ($origin == 'order') $origin = 'commande';
|
||||||
@ -3272,26 +3276,41 @@ abstract class CommonObject
|
|||||||
if ($origin == 'invoice_template') $origin = 'facturerec';
|
if ($origin == 'invoice_template') $origin = 'facturerec';
|
||||||
if ($origin == 'supplierorder') $origin = 'order_supplier';
|
if ($origin == 'supplierorder') $origin = 'order_supplier';
|
||||||
$this->db->begin();
|
$this->db->begin();
|
||||||
|
$error = 0;
|
||||||
|
|
||||||
$sql = "INSERT INTO ".MAIN_DB_PREFIX."element_element (";
|
$sql = "INSERT INTO " . MAIN_DB_PREFIX . "element_element (";
|
||||||
$sql .= "fk_source";
|
$sql .= "fk_source";
|
||||||
$sql .= ", sourcetype";
|
$sql .= ", sourcetype";
|
||||||
$sql .= ", fk_target";
|
$sql .= ", fk_target";
|
||||||
$sql .= ", targettype";
|
$sql .= ", targettype";
|
||||||
$sql .= ") VALUES (";
|
$sql .= ") VALUES (";
|
||||||
$sql .= $origin_id;
|
$sql .= $origin_id;
|
||||||
$sql .= ", '".$this->db->escape($origin)."'";
|
$sql .= ", '" . $this->db->escape($origin) . "'";
|
||||||
$sql .= ", ".$this->id;
|
$sql .= ", " . $this->id;
|
||||||
$sql .= ", '".$this->db->escape($this->element)."'";
|
$sql .= ", '" . $this->db->escape($this->element) . "'";
|
||||||
$sql .= ")";
|
$sql .= ")";
|
||||||
|
|
||||||
dol_syslog(get_class($this)."::add_object_linked", LOG_DEBUG);
|
dol_syslog(get_class($this) . "::add_object_linked", LOG_DEBUG);
|
||||||
if ($this->db->query($sql))
|
if ($this->db->query($sql)) {
|
||||||
{
|
if (!$notrigger) {
|
||||||
|
// Call trigger
|
||||||
|
$this->context['link_origin'] = $origin;
|
||||||
|
$this->context['link_origin_id'] = $origin_id;
|
||||||
|
$result = $this->call_trigger('OBJECT_LINK_INSERT', $f_user);
|
||||||
|
if ($result < 0) {
|
||||||
|
$error++;
|
||||||
|
}
|
||||||
|
// End call triggers
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$this->error = $this->db->lasterror();
|
||||||
|
$error++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$error) {
|
||||||
$this->db->commit();
|
$this->db->commit();
|
||||||
return 1;
|
return 1;
|
||||||
} else {
|
} else {
|
||||||
$this->error = $this->db->lasterror();
|
|
||||||
$this->db->rollback();
|
$this->db->rollback();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -3502,38 +3521,61 @@ abstract class CommonObject
|
|||||||
* @param string $sourcetype Object source type
|
* @param string $sourcetype Object source type
|
||||||
* @param int $targetid Object target id
|
* @param int $targetid Object target id
|
||||||
* @param string $targettype Object target type
|
* @param string $targettype Object target type
|
||||||
|
* @param User $f_user User that create
|
||||||
|
* @param int $notrigger 1=Does not execute triggers, 0= execute triggers
|
||||||
* @return int >0 if OK, <0 if KO
|
* @return int >0 if OK, <0 if KO
|
||||||
* @see add_object_linked(), fetObjectLinked(), deleteObjectLinked()
|
* @see add_object_linked(), fetObjectLinked(), deleteObjectLinked()
|
||||||
*/
|
*/
|
||||||
public function updateObjectLinked($sourceid = null, $sourcetype = '', $targetid = null, $targettype = '')
|
public function updateObjectLinked($sourceid = null, $sourcetype = '', $targetid = null, $targettype = '', $f_user = null, $notrigger = 0)
|
||||||
{
|
{
|
||||||
|
global $user;
|
||||||
$updatesource = false;
|
$updatesource = false;
|
||||||
$updatetarget = false;
|
$updatetarget = false;
|
||||||
|
$f_user = isset($f_user) ? $f_user : $user;
|
||||||
|
|
||||||
if (!empty($sourceid) && !empty($sourcetype) && empty($targetid) && empty($targettype)) $updatesource = true;
|
if (!empty($sourceid) && !empty($sourcetype) && empty($targetid) && empty($targettype)) $updatesource = true;
|
||||||
elseif (empty($sourceid) && empty($sourcetype) && !empty($targetid) && !empty($targettype)) $updatetarget = true;
|
elseif (empty($sourceid) && empty($sourcetype) && !empty($targetid) && !empty($targettype)) $updatetarget = true;
|
||||||
|
|
||||||
$sql = "UPDATE ".MAIN_DB_PREFIX."element_element SET ";
|
$this->db->begin();
|
||||||
if ($updatesource)
|
$error = 0;
|
||||||
{
|
|
||||||
$sql .= "fk_source = ".$sourceid;
|
$sql = "UPDATE " . MAIN_DB_PREFIX . "element_element SET ";
|
||||||
$sql .= ", sourcetype = '".$this->db->escape($sourcetype)."'";
|
if ($updatesource) {
|
||||||
$sql .= " WHERE fk_target = ".$this->id;
|
$sql .= "fk_source = " . $sourceid;
|
||||||
$sql .= " AND targettype = '".$this->db->escape($this->element)."'";
|
$sql .= ", sourcetype = '" . $this->db->escape($sourcetype) . "'";
|
||||||
} elseif ($updatetarget)
|
$sql .= " WHERE fk_target = " . $this->id;
|
||||||
{
|
$sql .= " AND targettype = '" . $this->db->escape($this->element) . "'";
|
||||||
$sql .= "fk_target = ".$targetid;
|
} elseif ($updatetarget) {
|
||||||
$sql .= ", targettype = '".$this->db->escape($targettype)."'";
|
$sql .= "fk_target = " . $targetid;
|
||||||
$sql .= " WHERE fk_source = ".$this->id;
|
$sql .= ", targettype = '" . $this->db->escape($targettype) . "'";
|
||||||
$sql .= " AND sourcetype = '".$this->db->escape($this->element)."'";
|
$sql .= " WHERE fk_source = " . $this->id;
|
||||||
|
$sql .= " AND sourcetype = '" . $this->db->escape($this->element) . "'";
|
||||||
}
|
}
|
||||||
|
|
||||||
dol_syslog(get_class($this)."::updateObjectLinked", LOG_DEBUG);
|
dol_syslog(get_class($this) . "::updateObjectLinked", LOG_DEBUG);
|
||||||
if ($this->db->query($sql))
|
if ($this->db->query($sql)) {
|
||||||
{
|
if (!$notrigger) {
|
||||||
return 1;
|
// Call trigger
|
||||||
|
$this->context['link_source_id'] = $sourceid;
|
||||||
|
$this->context['link_source_type'] = $sourcetype;
|
||||||
|
$this->context['link_target_id'] = $targetid;
|
||||||
|
$this->context['link_target_type'] = $targettype;
|
||||||
|
$result = $this->call_trigger('OBJECT_LINK_UPDATE', $f_user);
|
||||||
|
if ($result < 0) {
|
||||||
|
$error++;
|
||||||
|
}
|
||||||
|
// End call triggers
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
$this->error = $this->db->lasterror();
|
$this->error = $this->db->lasterror();
|
||||||
|
$error++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$error) {
|
||||||
|
$this->db->commit();
|
||||||
|
return 1;
|
||||||
|
} else {
|
||||||
|
$this->db->rollback();
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -3546,13 +3588,17 @@ abstract class CommonObject
|
|||||||
* @param int $targetid Object target id
|
* @param int $targetid Object target id
|
||||||
* @param string $targettype Object target type
|
* @param string $targettype Object target type
|
||||||
* @param int $rowid Row id of line to delete. If defined, other parameters are not used.
|
* @param int $rowid Row id of line to delete. If defined, other parameters are not used.
|
||||||
|
* @param User $f_user User that create
|
||||||
|
* @param int $notrigger 1=Does not execute triggers, 0= execute triggers
|
||||||
* @return int >0 if OK, <0 if KO
|
* @return int >0 if OK, <0 if KO
|
||||||
* @see add_object_linked(), updateObjectLinked(), fetchObjectLinked()
|
* @see add_object_linked(), updateObjectLinked(), fetchObjectLinked()
|
||||||
*/
|
*/
|
||||||
public function deleteObjectLinked($sourceid = null, $sourcetype = '', $targetid = null, $targettype = '', $rowid = '')
|
public function deleteObjectLinked($sourceid = null, $sourcetype = '', $targetid = null, $targettype = '', $rowid = '', $f_user = null, $notrigger = 0)
|
||||||
{
|
{
|
||||||
|
global $user;
|
||||||
$deletesource = false;
|
$deletesource = false;
|
||||||
$deletetarget = false;
|
$deletetarget = false;
|
||||||
|
$f_user = isset($f_user) ? $f_user : $user;
|
||||||
|
|
||||||
if (!empty($sourceid) && !empty($sourcetype) && empty($targetid) && empty($targettype)) $deletesource = true;
|
if (!empty($sourceid) && !empty($sourcetype) && empty($targetid) && empty($targettype)) $deletesource = true;
|
||||||
elseif (empty($sourceid) && empty($sourcetype) && !empty($targetid) && !empty($targettype)) $deletetarget = true;
|
elseif (empty($sourceid) && empty($sourcetype) && !empty($targetid) && !empty($targettype)) $deletetarget = true;
|
||||||
@ -3561,36 +3607,56 @@ abstract class CommonObject
|
|||||||
$sourcetype = (!empty($sourcetype) ? $sourcetype : $this->element);
|
$sourcetype = (!empty($sourcetype) ? $sourcetype : $this->element);
|
||||||
$targetid = (!empty($targetid) ? $targetid : $this->id);
|
$targetid = (!empty($targetid) ? $targetid : $this->id);
|
||||||
$targettype = (!empty($targettype) ? $targettype : $this->element);
|
$targettype = (!empty($targettype) ? $targettype : $this->element);
|
||||||
|
$this->db->begin();
|
||||||
|
$error = 0;
|
||||||
|
|
||||||
$sql = "DELETE FROM ".MAIN_DB_PREFIX."element_element";
|
if (!$notrigger) {
|
||||||
$sql .= " WHERE";
|
// Call trigger
|
||||||
if ($rowid > 0)
|
$this->context['link_id'] = $rowid;
|
||||||
{
|
$this->context['link_source_id'] = $sourceid;
|
||||||
$sql .= " rowid = ".$rowid;
|
$this->context['link_source_type'] = $sourcetype;
|
||||||
} else {
|
$this->context['link_target_id'] = $targetid;
|
||||||
if ($deletesource)
|
$this->context['link_target_type'] = $targettype;
|
||||||
{
|
$result = $this->call_trigger('OBJECT_LINK_DELETE', $f_user);
|
||||||
$sql .= " fk_source = ".$sourceid." AND sourcetype = '".$this->db->escape($sourcetype)."'";
|
if ($result < 0) {
|
||||||
$sql .= " AND fk_target = ".$this->id." AND targettype = '".$this->db->escape($this->element)."'";
|
$error++;
|
||||||
} elseif ($deletetarget)
|
}
|
||||||
{
|
// End call triggers
|
||||||
$sql .= " fk_target = ".$targetid." AND targettype = '".$this->db->escape($targettype)."'";
|
}
|
||||||
$sql .= " AND fk_source = ".$this->id." AND sourcetype = '".$this->db->escape($this->element)."'";
|
|
||||||
|
if (!$error) {
|
||||||
|
$sql = "DELETE FROM " . MAIN_DB_PREFIX . "element_element";
|
||||||
|
$sql .= " WHERE";
|
||||||
|
if ($rowid > 0) {
|
||||||
|
$sql .= " rowid = " . $rowid;
|
||||||
} else {
|
} else {
|
||||||
$sql .= " (fk_source = ".$this->id." AND sourcetype = '".$this->db->escape($this->element)."')";
|
if ($deletesource) {
|
||||||
$sql .= " OR";
|
$sql .= " fk_source = " . $sourceid . " AND sourcetype = '" . $this->db->escape($sourcetype) . "'";
|
||||||
$sql .= " (fk_target = ".$this->id." AND targettype = '".$this->db->escape($this->element)."')";
|
$sql .= " AND fk_target = " . $this->id . " AND targettype = '" . $this->db->escape($this->element) . "'";
|
||||||
|
} elseif ($deletetarget) {
|
||||||
|
$sql .= " fk_target = " . $targetid . " AND targettype = '" . $this->db->escape($targettype) . "'";
|
||||||
|
$sql .= " AND fk_source = " . $this->id . " AND sourcetype = '" . $this->db->escape($this->element) . "'";
|
||||||
|
} else {
|
||||||
|
$sql .= " (fk_source = " . $this->id . " AND sourcetype = '" . $this->db->escape($this->element) . "')";
|
||||||
|
$sql .= " OR";
|
||||||
|
$sql .= " (fk_target = " . $this->id . " AND targettype = '" . $this->db->escape($this->element) . "')";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
dol_syslog(get_class($this) . "::deleteObjectLinked", LOG_DEBUG);
|
||||||
|
if (!$this->db->query($sql)) {
|
||||||
|
$this->error = $this->db->lasterror();
|
||||||
|
$this->errors[] = $this->error;
|
||||||
|
$error++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
dol_syslog(get_class($this)."::deleteObjectLinked", LOG_DEBUG);
|
if (!$error) {
|
||||||
if ($this->db->query($sql))
|
$this->db->commit();
|
||||||
{
|
|
||||||
return 1;
|
return 1;
|
||||||
} else {
|
} else {
|
||||||
$this->error = $this->db->lasterror();
|
$this->db->rollback();
|
||||||
$this->errors[] = $this->error;
|
return 0;
|
||||||
return -1;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -6753,9 +6819,10 @@ abstract class CommonObject
|
|||||||
* @param string $keysuffix Suffix string to add after name and id of field (can be used to avoid duplicate names)
|
* @param string $keysuffix Suffix string to add after name and id of field (can be used to avoid duplicate names)
|
||||||
* @param string $keyprefix Prefix string to add before name and id of field (can be used to avoid duplicate names)
|
* @param string $keyprefix Prefix string to add before name and id of field (can be used to avoid duplicate names)
|
||||||
* @param string $onetrtd All fields in same tr td. Used by objectline_create.tpl.php for example.
|
* @param string $onetrtd All fields in same tr td. Used by objectline_create.tpl.php for example.
|
||||||
|
* @param string $display_type "card" for form display, "line" for document line display (extrafields on propal line, order line, etc...)
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
public function showOptionals($extrafields, $mode = 'view', $params = null, $keysuffix = '', $keyprefix = '', $onetrtd = 0)
|
public function showOptionals($extrafields, $mode = 'view', $params = null, $keysuffix = '', $keyprefix = '', $onetrtd = 0, $display_type = 'card')
|
||||||
{
|
{
|
||||||
global $db, $conf, $langs, $action, $form, $hookmanager;
|
global $db, $conf, $langs, $action, $form, $hookmanager;
|
||||||
|
|
||||||
@ -6810,7 +6877,7 @@ abstract class CommonObject
|
|||||||
}
|
}
|
||||||
|
|
||||||
$colspan = '';
|
$colspan = '';
|
||||||
if (is_array($params) && count($params) > 0) {
|
if (is_array($params) && count($params) > 0 && $display_type=='card') {
|
||||||
if (array_key_exists('cols', $params)) {
|
if (array_key_exists('cols', $params)) {
|
||||||
$colspan = $params['cols'];
|
$colspan = $params['cols'];
|
||||||
} elseif (array_key_exists('colspan', $params)) { // For backward compatibility. Use cols instead now.
|
} elseif (array_key_exists('colspan', $params)) { // For backward compatibility. Use cols instead now.
|
||||||
@ -6869,7 +6936,7 @@ abstract class CommonObject
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$out .= $extrafields->showSeparator($key, $this, ($colspan + 1));
|
$out .= $extrafields->showSeparator($key, $this, ($colspan + 1), $display_type);
|
||||||
} else {
|
} else {
|
||||||
$class = (!empty($extrafields->attributes[$this->table_element]['hidden'][$key]) ? 'hideobject ' : '');
|
$class = (!empty($extrafields->attributes[$this->table_element]['hidden'][$key]) ? 'hideobject ' : '');
|
||||||
$csstyle = '';
|
$csstyle = '';
|
||||||
@ -6888,10 +6955,11 @@ abstract class CommonObject
|
|||||||
$domData .= ' data-targetid="'.$this->id.'"';
|
$domData .= ' data-targetid="'.$this->id.'"';
|
||||||
|
|
||||||
$html_id = (empty($this->id) ? '' : 'extrarow-'.$this->element.'_'.$key.'_'.$this->id);
|
$html_id = (empty($this->id) ? '' : 'extrarow-'.$this->element.'_'.$key.'_'.$this->id);
|
||||||
|
if ($display_type=='card') {
|
||||||
|
if (!empty($conf->global->MAIN_EXTRAFIELDS_USE_TWO_COLUMS) && ($e % 2) == 0) { $colspan = '0'; }
|
||||||
|
|
||||||
if (!empty($conf->global->MAIN_EXTRAFIELDS_USE_TWO_COLUMS) && ($e % 2) == 0) { $colspan = '0'; }
|
if ($action == 'selectlines') { $colspan++; }
|
||||||
|
}
|
||||||
if ($action == 'selectlines') { $colspan++; }
|
|
||||||
|
|
||||||
// Convert date into timestamp format (value in memory must be a timestamp)
|
// Convert date into timestamp format (value in memory must be a timestamp)
|
||||||
if (in_array($extrafields->attributes[$this->table_element]['type'][$key], array('date', 'datetime')))
|
if (in_array($extrafields->attributes[$this->table_element]['type'][$key], array('date', 'datetime')))
|
||||||
@ -6918,11 +6986,13 @@ abstract class CommonObject
|
|||||||
$labeltoshow = $langs->trans($label);
|
$labeltoshow = $langs->trans($label);
|
||||||
$helptoshow = $langs->trans($extrafields->attributes[$this->table_element]['help'][$key]);
|
$helptoshow = $langs->trans($extrafields->attributes[$this->table_element]['help'][$key]);
|
||||||
|
|
||||||
$out .= '<tr '.($html_id ? 'id="'.$html_id.'" ' : '').$csstyle.' class="'.$class.$this->element.'_extras_'.$key.' trextrafields_collapse'.$extrafields_collapse_num.'" '.$domData.' >';
|
if ($display_type=='card') {
|
||||||
if (!empty($conf->global->MAIN_VIEW_LINE_NUMBER) && $action == 'view') {
|
$out .= '<tr '.($html_id ? 'id="'.$html_id.'" ' : '').$csstyle.' class="'.$class.$this->element.'_extras_'.$key.' trextrafields_collapse'.$extrafields_collapse_num.'" '.$domData.' >';
|
||||||
$out .= '<td></td>';
|
$out .= '<td class="wordbreak';
|
||||||
|
} elseif ($display_type=='line') {
|
||||||
|
$out .= '<div '.($html_id ? 'id="'.$html_id.'" ' : '').$csstyle.' class="'.$class.$this->element.'_extras_'.$key.' trextrafields_collapse'.$extrafields_collapse_num.(!empty($this->id)?'_'.$this->id:'').'" '.$domData.' >';
|
||||||
|
$out .= '<div style="display: inline-block; padding-right:4px" class="wordbreak';
|
||||||
}
|
}
|
||||||
$out .= '<td class="wordbreak';
|
|
||||||
//$out .= "titlefield";
|
//$out .= "titlefield";
|
||||||
//if (GETPOST('action', 'restricthtml') == 'create') $out.='create';
|
//if (GETPOST('action', 'restricthtml') == 'create') $out.='create';
|
||||||
// BUG #11554 : For public page, use red dot for required fields, instead of bold label
|
// BUG #11554 : For public page, use red dot for required fields, instead of bold label
|
||||||
@ -6938,11 +7008,15 @@ abstract class CommonObject
|
|||||||
if (!empty($extrafields->attributes[$this->table_element]['help'][$key])) $out .= $form->textwithpicto($labeltoshow, $helptoshow);
|
if (!empty($extrafields->attributes[$this->table_element]['help'][$key])) $out .= $form->textwithpicto($labeltoshow, $helptoshow);
|
||||||
else $out .= $labeltoshow;
|
else $out .= $labeltoshow;
|
||||||
}
|
}
|
||||||
$out .= '</td>';
|
|
||||||
|
$out .= ($display_type=='card' ? '</td>' : '</div>');
|
||||||
|
|
||||||
$html_id = !empty($this->id) ? $this->element.'_extras_'.$key.'_'.$this->id : '';
|
$html_id = !empty($this->id) ? $this->element.'_extras_'.$key.'_'.$this->id : '';
|
||||||
|
if ($display_type=='card') {
|
||||||
$out .= '<td '.($html_id ? 'id="'.$html_id.'" ' : '').'class="'.$this->element.'_extras_'.$key.'" '.($colspan ? ' colspan="'.$colspan.'"' : '').'>';
|
$out .= '<td '.($html_id ? 'id="'.$html_id.'" ' : '').' class="'.$this->element.'_extras_'.$key.'" '.($colspan ? ' colspan="'.$colspan.'"' : '').'>';
|
||||||
|
} elseif ($display_type=='line') {
|
||||||
|
$out .= '<div '.($html_id ? 'id="'.$html_id.'" ' : '').' style="display: inline-block" class="'.$this->element.'_extras_'.$key.'">';
|
||||||
|
}
|
||||||
|
|
||||||
switch ($mode) {
|
switch ($mode) {
|
||||||
case "view":
|
case "view":
|
||||||
@ -6956,15 +7030,18 @@ abstract class CommonObject
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
$out .= '</td>';
|
$out .= ($display_type=='card' ? '</td>' : '</div>');
|
||||||
|
|
||||||
/*for($ii = 0; $ii < ($colspan - 1); $ii++)
|
/*for($ii = 0; $ii < ($colspan - 1); $ii++)
|
||||||
{
|
{
|
||||||
$out .='<td class="'.$this->element.'_extras_'.$key.'"></td>';
|
$out .='<td class="'.$this->element.'_extras_'.$key.'"></td>';
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
if (!empty($conf->global->MAIN_EXTRAFIELDS_USE_TWO_COLUMS) && (($e % 2) == 1)) $out .= '</tr>';
|
if (!empty($conf->global->MAIN_EXTRAFIELDS_USE_TWO_COLUMS) && (($e % 2) == 1)) {
|
||||||
else $out .= '</tr>';
|
$out .= ($display_type=='card' ? '</tr>' : '</div>');
|
||||||
|
} else {
|
||||||
|
$out .= ($display_type=='card' ? '</tr>' : '</div>');
|
||||||
|
}
|
||||||
$e++;
|
$e++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -697,6 +697,12 @@ class Conf
|
|||||||
|
|
||||||
if (!empty($this->global->MAIN_TZUSERINPUTKEY)) $this->tzuserinputkey = $this->global->MAIN_TZUSERINPUTKEY; // 'tzserver' or 'tzuserrel'
|
if (!empty($this->global->MAIN_TZUSERINPUTKEY)) $this->tzuserinputkey = $this->global->MAIN_TZUSERINPUTKEY; // 'tzserver' or 'tzuserrel'
|
||||||
|
|
||||||
|
if (!empty($this->global->PRODUIT_AUTOFILL_DESC)) {
|
||||||
|
$this->global->MAIN_NO_CONCAT_DESCRIPTION = 1;
|
||||||
|
} else {
|
||||||
|
unset($this->global->MAIN_NO_CONCAT_DESCRIPTION);
|
||||||
|
}
|
||||||
|
|
||||||
// For backward compatibility
|
// For backward compatibility
|
||||||
if (isset($this->product)) $this->produit = $this->product;
|
if (isset($this->product)) $this->produit = $this->product;
|
||||||
if (isset($this->facture)) $this->invoice = $this->facture;
|
if (isset($this->facture)) $this->invoice = $this->facture;
|
||||||
|
|||||||
@ -924,15 +924,15 @@ class ExtraFields
|
|||||||
* Return HTML string to put an input field into a page
|
* Return HTML string to put an input field into a page
|
||||||
* Code very similar with showInputField of common object
|
* Code very similar with showInputField of common object
|
||||||
*
|
*
|
||||||
* @param string $key Key of attribute
|
* @param string $key Key of attribute
|
||||||
* @param string $value Preselected value to show (for date type it must be in timestamp format, for amount or price it must be a php numeric value)
|
* @param string|array $value Preselected value to show (for date type it must be in timestamp format, for amount or price it must be a php numeric value); for dates in filter mode, a range array('start'=><timestamp>, 'end'=><timestamp>) should be provided
|
||||||
* @param string $moreparam To add more parametes on html input tag
|
* @param string $moreparam To add more parameters on html input tag
|
||||||
* @param string $keysuffix Prefix string to add after name and id of field (can be used to avoid duplicate names)
|
* @param string $keysuffix Prefix string to add after name and id of field (can be used to avoid duplicate names)
|
||||||
* @param string $keyprefix Suffix string to add before name and id of field (can be used to avoid duplicate names)
|
* @param string $keyprefix Suffix string to add before name and id of field (can be used to avoid duplicate names)
|
||||||
* @param string $morecss More css (to defined size of field. Old behaviour: may also be a numeric)
|
* @param string $morecss More css (to defined size of field. Old behaviour: may also be a numeric)
|
||||||
* @param int $objectid Current object id
|
* @param int $objectid Current object id
|
||||||
* @param string $extrafieldsobjectkey If defined (for example $object->table_element), use the new method to get extrafields data
|
* @param string $extrafieldsobjectkey If defined (for example $object->table_element), use the new method to get extrafields data
|
||||||
* @param string $mode 1=Used for search filters
|
* @param string $mode 1=Used for search filters
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
public function showInputField($key, $value, $moreparam = '', $keysuffix = '', $keyprefix = '', $morecss = '', $objectid = 0, $extrafieldsobjectkey = '', $mode = 0)
|
public function showInputField($key, $value, $moreparam = '', $keysuffix = '', $keyprefix = '', $morecss = '', $objectid = 0, $extrafieldsobjectkey = '', $mode = 0)
|
||||||
@ -1024,8 +1024,22 @@ class ExtraFields
|
|||||||
// Do not show current date when field not required (see selectDate() method)
|
// Do not show current date when field not required (see selectDate() method)
|
||||||
if (!$required && $value == '') $value = '-1';
|
if (!$required && $value == '') $value = '-1';
|
||||||
|
|
||||||
// TODO Must also support $moreparam
|
if ($mode == 1) {
|
||||||
$out = $form->selectDate($value, $keyprefix.$key.$keysuffix, $showtime, $showtime, $required, '', 1, (($keyprefix != 'search_' && $keyprefix != 'search_options_') ? 1 : 0), 0, 1);
|
// search filter on a date extrafield shows two inputs to select a date range
|
||||||
|
$prefill = array(
|
||||||
|
'start' => isset($value['start']) ? $value['start'] : '',
|
||||||
|
'end' => isset($value['end']) ? $value['end'] : '');
|
||||||
|
$out = '<div ' . ($moreparam ? $moreparam : '') . '><div class="nowrap">'
|
||||||
|
. $langs->trans('From') . ' '
|
||||||
|
. $form->selectDate($prefill['start'], $keyprefix . $key . $keysuffix . '_start', 0, 0, 1)
|
||||||
|
. '</div><div class="nowrap">'
|
||||||
|
. $langs->trans('to') . ' '
|
||||||
|
. $form->selectDate($prefill['end'], $keyprefix . $key . $keysuffix . '_end', 0, 0, 1)
|
||||||
|
. '</div></div>';
|
||||||
|
} else {
|
||||||
|
// TODO Must also support $moreparam
|
||||||
|
$out = $form->selectDate($value, $keyprefix.$key.$keysuffix, $showtime, $showtime, $required, '', 1, (($keyprefix != 'search_' && $keyprefix != 'search_options_') ? 1 : 0), 0, 1);
|
||||||
|
}
|
||||||
} elseif (in_array($type, array('int', 'integer')))
|
} elseif (in_array($type, array('int', 'integer')))
|
||||||
{
|
{
|
||||||
$tmp = explode(',', $size);
|
$tmp = explode(',', $size);
|
||||||
@ -1907,15 +1921,29 @@ class ExtraFields
|
|||||||
* @param string $key Key of attribute
|
* @param string $key Key of attribute
|
||||||
* @param string $object Object
|
* @param string $object Object
|
||||||
* @param int $colspan Value of colspan to use (it must includes the first column with title)
|
* @param int $colspan Value of colspan to use (it must includes the first column with title)
|
||||||
|
* @param string $display_type "card" for form display, "line" for document line display (extrafields on propal line, order line, etc...)
|
||||||
* @return string HTML code with line for separator
|
* @return string HTML code with line for separator
|
||||||
*/
|
*/
|
||||||
public function showSeparator($key, $object, $colspan = 2)
|
public function showSeparator($key, $object, $colspan = 2, $display_type = 'card')
|
||||||
{
|
{
|
||||||
global $langs;
|
global $langs;
|
||||||
|
|
||||||
$out = '<tr id="trextrafieldseparator'.$key.'" class="trextrafieldseparator trextrafieldseparator'.$key.'"><td colspan="'.$colspan.'"><strong>';
|
if ($display_type=='card') {
|
||||||
|
$tagtype='tr';
|
||||||
|
$tagtype_dyn='td';
|
||||||
|
}elseif ($display_type=='line') {
|
||||||
|
$tagtype='div';
|
||||||
|
$tagtype_dyn='span';
|
||||||
|
$colspan=0;
|
||||||
|
}
|
||||||
|
|
||||||
|
$out = '<'.$tagtype.' id="trextrafieldseparator'.$key.(!empty($object->id)?'_'.$object->id:'').'" class="trextrafieldseparator trextrafieldseparator'.$key.(!empty($object->id)?'_'.$object->id:'').'">';
|
||||||
|
$out .= '<'.$tagtype_dyn.' '.(!empty($colspan)?'colspan="' . $colspan . '"':'').'>';
|
||||||
|
$out .='<strong>';
|
||||||
$out .= $langs->trans($this->attributes[$object->table_element]['label'][$key]);
|
$out .= $langs->trans($this->attributes[$object->table_element]['label'][$key]);
|
||||||
$out .= '</strong></td></tr>';
|
$out .= '</strong>';
|
||||||
|
$out .= '</'.$tagtype_dyn.'>';
|
||||||
|
$out .= '</'.$tagtype.'>';
|
||||||
|
|
||||||
$extrafield_param = $this->attributes[$object->table_element]['param'][$key];
|
$extrafield_param = $this->attributes[$object->table_element]['param'][$key];
|
||||||
if (!empty($extrafield_param) && is_array($extrafield_param)) {
|
if (!empty($extrafield_param) && is_array($extrafield_param)) {
|
||||||
@ -1925,27 +1953,27 @@ class ExtraFields
|
|||||||
$extrafield_collapse_display_value = intval($extrafield_param_list[0]);
|
$extrafield_collapse_display_value = intval($extrafield_param_list[0]);
|
||||||
if ($extrafield_collapse_display_value == 1 || $extrafield_collapse_display_value == 2) {
|
if ($extrafield_collapse_display_value == 1 || $extrafield_collapse_display_value == 2) {
|
||||||
// Set the collapse_display status to cookie in priority or if ignorecollapsesetup is 1, if cookie and ignorecollapsesetup not defined, use the setup.
|
// Set the collapse_display status to cookie in priority or if ignorecollapsesetup is 1, if cookie and ignorecollapsesetup not defined, use the setup.
|
||||||
$collapse_display = ((isset($_COOKIE['DOLCOLLAPSE_'.$object->table_element.'_extrafields_'.$key]) || GETPOST('ignorecollapsesetup', 'int')) ? ($_COOKIE['DOLCOLLAPSE_'.$object->table_element.'_extrafields_'.$key] ? true : false) : ($extrafield_collapse_display_value == 2 ? false : true));
|
$collapse_display = ((isset($_COOKIE['DOLCOLLAPSE_'.$object->table_element.'_extrafields_'.$key.(!empty($object->id)?'_'.$object->id:'')]) || GETPOST('ignorecollapsesetup', 'int')) ? ($_COOKIE['DOLCOLLAPSE_'.$object->table_element.'_extrafields_'.$key.(!empty($object->id)?'_'.$object->id:'')] ? true : false) : ($extrafield_collapse_display_value == 2 ? false : true));
|
||||||
$extrafields_collapse_num = $this->attributes[$object->table_element]['pos'][$key];
|
$extrafields_collapse_num = $this->attributes[$object->table_element]['pos'][$key].(!empty($object->id)?'_'.$object->id:'');
|
||||||
|
|
||||||
$out .= '<!-- Add js script to manage the collpase/uncollapse of extrafields separators '.$key.' -->';
|
$out .= '<!-- Add js script to manage the collpase/uncollapse of extrafields separators '.$key.' -->';
|
||||||
$out .= '<script type="text/javascript">';
|
$out .= '<script type="text/javascript">';
|
||||||
$out .= 'jQuery(document).ready(function(){';
|
$out .= 'jQuery(document).ready(function(){';
|
||||||
if ($collapse_display === false) {
|
if ($collapse_display === false) {
|
||||||
$out .= ' jQuery("#trextrafieldseparator'.$key.' td").prepend("<span class=\"cursorpointer far fa-plus-square\"></span> ");'."\n";
|
$out .= ' jQuery("#trextrafieldseparator'.$key.(!empty($object->id)?'_'.$object->id:'').' '.$tagtype_dyn.'").prepend("<span class=\"cursorpointer far fa-plus-square\"></span> ");'."\n";
|
||||||
$out .= ' jQuery(".trextrafields_collapse'.$extrafields_collapse_num.'").hide();'."\n";
|
$out .= ' jQuery(".trextrafields_collapse'.$extrafields_collapse_num.'").hide();'."\n";
|
||||||
} else {
|
} else {
|
||||||
$out .= ' jQuery("#trextrafieldseparator'.$key.' td").prepend("<span class=\"cursorpointer far fa-minus-square\"></span> ");'."\n";
|
$out .= ' jQuery("#trextrafieldseparator'.$key.(!empty($object->id)?'_'.$object->id:'').' '.$tagtype_dyn.'").prepend("<span class=\"cursorpointer far fa-minus-square\"></span> ");'."\n";
|
||||||
$out .= ' document.cookie = "DOLCOLLAPSE_'.$object->table_element.'_extrafields_'.$key.'=1; path='.$_SERVER["PHP_SELF"].'"'."\n";
|
$out .= ' document.cookie = "DOLCOLLAPSE_'.$object->table_element.'_extrafields_'.$key.'=1; path='.$_SERVER["PHP_SELF"].'"'."\n";
|
||||||
}
|
}
|
||||||
$out .= ' jQuery("#trextrafieldseparator'.$key.'").click(function(){'."\n";
|
$out .= ' jQuery("#trextrafieldseparator'.$key.(!empty($object->id)?'_'.$object->id:'').'").click(function(){'."\n";
|
||||||
$out .= ' jQuery(".trextrafields_collapse'.$extrafields_collapse_num.'").toggle(300, function(){'."\n";
|
$out .= ' jQuery(".trextrafields_collapse'.$extrafields_collapse_num.'").toggle(300, function(){'."\n";
|
||||||
$out .= ' if (jQuery(".trextrafields_collapse'.$extrafields_collapse_num.'").is(":hidden")) {'."\n";
|
$out .= ' if (jQuery(".trextrafields_collapse'.$extrafields_collapse_num.'").is(":hidden")) {'."\n";
|
||||||
$out .= ' jQuery("#trextrafieldseparator'.$key.' td span").addClass("fa-plus-square").removeClass("fa-minus-square");'."\n";
|
$out .= ' jQuery("#trextrafieldseparator'.$key.(!empty($object->id)?'_'.$object->id:'').' '.$tagtype_dyn.' span").addClass("fa-plus-square").removeClass("fa-minus-square");'."\n";
|
||||||
$out .= ' document.cookie = "DOLCOLLAPSE_'.$object->table_element.'_extrafields_'.$key.'=0; path='.$_SERVER["PHP_SELF"].'"'."\n";
|
$out .= ' document.cookie = "DOLCOLLAPSE_'.$object->table_element.'_extrafields_'.$key.(!empty($object->id)?'_'.$object->id:'').'=0; path='.$_SERVER["PHP_SELF"].'"'."\n";
|
||||||
$out .= ' } else {'."\n";
|
$out .= ' } else {'."\n";
|
||||||
$out .= ' jQuery("#trextrafieldseparator'.$key.' td span").addClass("fa-minus-square").removeClass("fa-plus-square");'."\n";
|
$out .= ' jQuery("#trextrafieldseparator'.$key.(!empty($object->id)?'_'.$object->id:'').' '.$tagtype_dyn.' span").addClass("fa-minus-square").removeClass("fa-plus-square");'."\n";
|
||||||
$out .= ' document.cookie = "DOLCOLLAPSE_'.$object->table_element.'_extrafields_'.$key.'=1; path='.$_SERVER["PHP_SELF"].'"'."\n";
|
$out .= ' document.cookie = "DOLCOLLAPSE_'.$object->table_element.'_extrafields_'.$key.(!empty($object->id)?'_'.$object->id:'').'=1; path='.$_SERVER["PHP_SELF"].'"'."\n";
|
||||||
$out .= ' }'."\n";
|
$out .= ' }'."\n";
|
||||||
$out .= ' });';
|
$out .= ' });';
|
||||||
$out .= ' });';
|
$out .= ' });';
|
||||||
@ -2090,9 +2118,28 @@ class ExtraFields
|
|||||||
|
|
||||||
if (in_array($key_type, array('date', 'datetime')))
|
if (in_array($key_type, array('date', 'datetime')))
|
||||||
{
|
{
|
||||||
if (!GETPOSTISSET($keysuffix."options_".$key.$keyprefix."year")) continue; // Value was not provided, we should not set it.
|
$dateparamname_start = $keysuffix . 'options_' . $key . $keyprefix . '_start';
|
||||||
// Clean parameters
|
$dateparamname_end = $keysuffix . 'options_' . $key . $keyprefix . '_end';
|
||||||
$value_key = dol_mktime(GETPOST($keysuffix."options_".$key.$keyprefix."hour", 'int'), GETPOST($keysuffix."options_".$key.$keyprefix."min", 'int'), 0, GETPOST($keysuffix."options_".$key.$keyprefix."month", 'int'), GETPOST($keysuffix."options_".$key.$keyprefix."day", 'int'), GETPOST($keysuffix."options_".$key.$keyprefix."year", 'int'));
|
if (GETPOSTISSET($dateparamname_start . 'year') && GETPOSTISSET($dateparamname_end . 'year')) {
|
||||||
|
// values provided as a date pair (start date + end date), each date being broken down as year, month, day, etc.
|
||||||
|
$value_key = array(
|
||||||
|
'start' => dol_mktime(
|
||||||
|
0, 0, 0,
|
||||||
|
GETPOST($dateparamname_start . 'month', 'int'),
|
||||||
|
GETPOST($dateparamname_start . 'day', 'int'),
|
||||||
|
GETPOST($dateparamname_start . 'year', 'int')),
|
||||||
|
'end' => dol_mktime(
|
||||||
|
23, 59, 59,
|
||||||
|
GETPOST($dateparamname_end . 'month', 'int'),
|
||||||
|
GETPOST($dateparamname_end . 'day', 'int'),
|
||||||
|
GETPOST($dateparamname_end . 'year', 'int'))
|
||||||
|
);
|
||||||
|
} elseif (GETPOSTISSET($keysuffix."options_".$key.$keyprefix."year")) {
|
||||||
|
// Clean parameters
|
||||||
|
$value_key = dol_mktime(GETPOST($keysuffix."options_".$key.$keyprefix."hour", 'int'), GETPOST($keysuffix."options_".$key.$keyprefix."min", 'int'), 0, GETPOST($keysuffix."options_".$key.$keyprefix."month", 'int'), GETPOST($keysuffix."options_".$key.$keyprefix."day", 'int'), GETPOST($keysuffix."options_".$key.$keyprefix."year", 'int'));
|
||||||
|
} else {
|
||||||
|
continue; // Value was not provided, we should not set it.
|
||||||
|
}
|
||||||
} elseif (in_array($key_type, array('checkbox', 'chkbxlst')))
|
} elseif (in_array($key_type, array('checkbox', 'chkbxlst')))
|
||||||
{
|
{
|
||||||
if (!GETPOSTISSET($keysuffix."options_".$key.$keyprefix)) continue; // Value was not provided, we should not set it.
|
if (!GETPOSTISSET($keysuffix."options_".$key.$keyprefix)) continue; // Value was not provided, we should not set it.
|
||||||
|
|||||||
@ -2182,7 +2182,9 @@ class Form
|
|||||||
if (!empty($conf->global->MAIN_MULTILANGS))
|
if (!empty($conf->global->MAIN_MULTILANGS))
|
||||||
{
|
{
|
||||||
$sql .= ", pl.label as label_translated";
|
$sql .= ", pl.label as label_translated";
|
||||||
|
$sql .= ", pl.description as description_translated";
|
||||||
$selectFields .= ", label_translated";
|
$selectFields .= ", label_translated";
|
||||||
|
$selectFields .= ", description_translated";
|
||||||
}
|
}
|
||||||
// Price by quantity
|
// Price by quantity
|
||||||
if (!empty($conf->global->PRODUIT_CUSTOMER_PRICES_BY_QTY) || !empty($conf->global->PRODUIT_CUSTOMER_PRICES_BY_QTY_MULTIPRICES))
|
if (!empty($conf->global->PRODUIT_CUSTOMER_PRICES_BY_QTY) || !empty($conf->global->PRODUIT_CUSTOMER_PRICES_BY_QTY_MULTIPRICES))
|
||||||
@ -2222,7 +2224,18 @@ class Form
|
|||||||
// Multilang : we add translation
|
// Multilang : we add translation
|
||||||
if (!empty($conf->global->MAIN_MULTILANGS))
|
if (!empty($conf->global->MAIN_MULTILANGS))
|
||||||
{
|
{
|
||||||
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."product_lang as pl ON pl.fk_product = p.rowid AND pl.lang='".$this->db->escape($langs->getDefaultLang())."'";
|
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."product_lang as pl ON pl.fk_product = p.rowid ";
|
||||||
|
if (!empty($conf->global->PRODUIT_TEXTS_IN_THIRDPARTY_LANGUAGE) && !empty($socid)) {
|
||||||
|
$soc = new Societe($db);
|
||||||
|
$result = $soc->fetch($socid);
|
||||||
|
if ($result > 0 && !empty($soc->default_lang)) {
|
||||||
|
$sql .= " AND pl.lang='" . $this->db->escape($soc->default_lang) . "'";
|
||||||
|
} else {
|
||||||
|
$sql .= " AND pl.lang='".$this->db->escape($langs->getDefaultLang())."'";
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$sql .= " AND pl.lang='".$this->db->escape($langs->getDefaultLang())."'";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!empty($conf->global->PRODUIT_ATTRIBUTES_HIDECHILD)) {
|
if (!empty($conf->global->PRODUIT_ATTRIBUTES_HIDECHILD)) {
|
||||||
@ -2435,7 +2448,9 @@ class Form
|
|||||||
$outval = '';
|
$outval = '';
|
||||||
$outref = '';
|
$outref = '';
|
||||||
$outlabel = '';
|
$outlabel = '';
|
||||||
|
$outlabel_translated = '';
|
||||||
$outdesc = '';
|
$outdesc = '';
|
||||||
|
$outdesc_translated = '';
|
||||||
$outbarcode = '';
|
$outbarcode = '';
|
||||||
$outorigin = '';
|
$outorigin = '';
|
||||||
$outtype = '';
|
$outtype = '';
|
||||||
@ -2456,6 +2471,11 @@ class Form
|
|||||||
$outref = $objp->ref;
|
$outref = $objp->ref;
|
||||||
$outlabel = $objp->label;
|
$outlabel = $objp->label;
|
||||||
$outdesc = $objp->description;
|
$outdesc = $objp->description;
|
||||||
|
if (!empty($conf->global->MAIN_MULTILANGS))
|
||||||
|
{
|
||||||
|
$outlabel_translated = $objp->label_translated;
|
||||||
|
$outdesc_translated = $objp->description_translated;
|
||||||
|
}
|
||||||
$outbarcode = $objp->barcode;
|
$outbarcode = $objp->barcode;
|
||||||
$outorigin = $objp->fk_country;
|
$outorigin = $objp->fk_country;
|
||||||
$outpbq = empty($objp->price_by_qty_rowid) ? '' : $objp->price_by_qty_rowid;
|
$outpbq = empty($objp->price_by_qty_rowid) ? '' : $objp->price_by_qty_rowid;
|
||||||
@ -2517,6 +2537,10 @@ class Form
|
|||||||
elseif ($objp->stock <= 0) $opt .= ' class="product_line_stock_too_low"';
|
elseif ($objp->stock <= 0) $opt .= ' class="product_line_stock_too_low"';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (!empty($conf->global->PRODUIT_TEXTS_IN_THIRDPARTY_LANGUAGE)) {
|
||||||
|
$opt .= ' data-labeltrans="'.$outlabel_translated.'"';
|
||||||
|
$opt .= ' data-desctrans="'.dol_escape_htmltag($outdesc_translated).'"';
|
||||||
|
}
|
||||||
$opt .= '>';
|
$opt .= '>';
|
||||||
$opt .= $objp->ref;
|
$opt .= $objp->ref;
|
||||||
if ($outbarcode) $opt .= ' ('.$outbarcode.')';
|
if ($outbarcode) $opt .= ' ('.$outbarcode.')';
|
||||||
@ -2687,7 +2711,24 @@ class Form
|
|||||||
}
|
}
|
||||||
|
|
||||||
$opt .= "</option>\n";
|
$opt .= "</option>\n";
|
||||||
$optJson = array('key'=>$outkey, 'value'=>$outref, 'label'=>$outval, 'label2'=>$outlabel, 'desc'=>$outdesc, 'type'=>$outtype, 'price_ht'=>price2num($outprice_ht), 'price_ttc'=>price2num($outprice_ttc), 'pricebasetype'=>$outpricebasetype, 'tva_tx'=>$outtva_tx, 'qty'=>$outqty, 'discount'=>$outdiscount, 'duration_value'=>$outdurationvalue, 'duration_unit'=>$outdurationunit, 'pbq'=>$outpbq);
|
$optJson = array(
|
||||||
|
'key'=>$outkey,
|
||||||
|
'value'=>$outref,
|
||||||
|
'label'=>$outval,
|
||||||
|
'label2'=>$outlabel,
|
||||||
|
'desc'=>$outdesc,
|
||||||
|
'type'=>$outtype,
|
||||||
|
'price_ht'=>price2num($outprice_ht),
|
||||||
|
'price_ttc'=>price2num($outprice_ttc),
|
||||||
|
'pricebasetype'=>$outpricebasetype,
|
||||||
|
'tva_tx'=>$outtva_tx, 'qty'=>$outqty,
|
||||||
|
'discount'=>$outdiscount,
|
||||||
|
'duration_value'=>$outdurationvalue,
|
||||||
|
'duration_unit'=>$outdurationunit,
|
||||||
|
'pbq'=>$outpbq,
|
||||||
|
'labeltrans'=>$outlabel_translated,
|
||||||
|
'desctrans'=>$outdesc_translated
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
|
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
|
||||||
@ -2770,6 +2811,12 @@ class Form
|
|||||||
$sql .= " pfp.ref_fourn, pfp.rowid as idprodfournprice, pfp.price as fprice, pfp.quantity, pfp.remise_percent, pfp.remise, pfp.unitprice,";
|
$sql .= " pfp.ref_fourn, pfp.rowid as idprodfournprice, pfp.price as fprice, pfp.quantity, pfp.remise_percent, pfp.remise, pfp.unitprice,";
|
||||||
$sql .= " pfp.fk_supplier_price_expression, pfp.fk_product, pfp.tva_tx, pfp.fk_soc, s.nom as name,";
|
$sql .= " pfp.fk_supplier_price_expression, pfp.fk_product, pfp.tva_tx, pfp.fk_soc, s.nom as name,";
|
||||||
$sql .= " pfp.supplier_reputation";
|
$sql .= " pfp.supplier_reputation";
|
||||||
|
// if we use supplier description of the products
|
||||||
|
if (!empty($conf->global->PRODUIT_FOURN_TEXTS)) {
|
||||||
|
$sql .= " ,pfp.desc_fourn as description";
|
||||||
|
} else {
|
||||||
|
$sql .= " ,p.description";
|
||||||
|
}
|
||||||
// Units
|
// Units
|
||||||
if (!empty($conf->global->PRODUCT_USE_UNITS)) {
|
if (!empty($conf->global->PRODUCT_USE_UNITS)) {
|
||||||
$sql .= ", u.label as unit_long, u.short_label as unit_short, p.weight, p.weight_units, p.length, p.length_units, p.width, p.width_units, p.height, p.height_units, p.surface, p.surface_units, p.volume, p.volume_units";
|
$sql .= ", u.label as unit_long, u.short_label as unit_short, p.weight, p.weight_units, p.length, p.length_units, p.width, p.width_units, p.height, p.height_units, p.surface, p.surface_units, p.volume, p.volume_units";
|
||||||
@ -2799,7 +2846,11 @@ class Form
|
|||||||
foreach ($scrit as $crit)
|
foreach ($scrit as $crit)
|
||||||
{
|
{
|
||||||
if ($i > 0) $sql .= " AND ";
|
if ($i > 0) $sql .= " AND ";
|
||||||
$sql .= "(pfp.ref_fourn LIKE '".$this->db->escape($prefix.$crit)."%' OR p.ref LIKE '".$this->db->escape($prefix.$crit)."%' OR p.label LIKE '".$this->db->escape($prefix.$crit)."%')";
|
$sql .= "(pfp.ref_fourn LIKE '".$this->db->escape($prefix.$crit)."%' OR p.ref LIKE '".$this->db->escape($prefix.$crit)."%' OR p.label LIKE '".$this->db->escape($prefix.$crit)."%'";
|
||||||
|
if (!empty($conf->global->PRODUIT_FOURN_TEXTS)) {
|
||||||
|
$sql .= " OR pfp.desc_fourn LIKE '".$this->db->escape($prefix.$crit)."%'";
|
||||||
|
}
|
||||||
|
$sql .= ")";
|
||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
if (count($scrit) > 1) $sql .= ")";
|
if (count($scrit) > 1) $sql .= ")";
|
||||||
@ -3028,8 +3079,9 @@ class Form
|
|||||||
if (empty($objp->idprodfournprice) && empty($alsoproductwithnosupplierprice)) $opt .= ' disabled';
|
if (empty($objp->idprodfournprice) && empty($alsoproductwithnosupplierprice)) $opt .= ' disabled';
|
||||||
if (!empty($objp->idprodfournprice) && $objp->idprodfournprice > 0)
|
if (!empty($objp->idprodfournprice) && $objp->idprodfournprice > 0)
|
||||||
{
|
{
|
||||||
$opt .= ' pbq="'.$objp->idprodfournprice.'" data-pbq="'.$objp->idprodfournprice.'" data-pbqqty="'.$objp->quantity.'" data-pbqup="'.$objp->unitprice.'" data-pbqpercent="'.$objp->remise_percent.'"';
|
$opt .= ' data-qty="'.$objp->quantity.'" data-up="'.$objp->unitprice.'" data-discount="'.$outdiscount.'"';
|
||||||
}
|
}
|
||||||
|
$opt .= ' data-description="'.dol_escape_htmltag($objp->description).'"';
|
||||||
$opt .= ' data-html="'.dol_escape_htmltag($optlabel).'"';
|
$opt .= ' data-html="'.dol_escape_htmltag($optlabel).'"';
|
||||||
$opt .= '>';
|
$opt .= '>';
|
||||||
|
|
||||||
@ -3043,7 +3095,20 @@ class Form
|
|||||||
// "key" value of json key array is used by jQuery automatically as selected value
|
// "key" value of json key array is used by jQuery automatically as selected value
|
||||||
// "label" value of json key array is used by jQuery automatically as text for combo box
|
// "label" value of json key array is used by jQuery automatically as text for combo box
|
||||||
$out .= $opt;
|
$out .= $opt;
|
||||||
array_push($outarray, array('key'=>$outkey, 'value'=>$outref, 'label'=>$outval, 'qty'=>$outqty, 'up'=>$objp->unitprice, 'discount'=>$outdiscount, 'type'=>$outtype, 'duration_value'=>$outdurationvalue, 'duration_unit'=>$outdurationunit, 'disabled'=>(empty($objp->idprodfournprice) ?true:false)));
|
array_push($outarray,
|
||||||
|
array('key'=>$outkey,
|
||||||
|
'value'=>$outref,
|
||||||
|
'label'=>$outval,
|
||||||
|
'qty'=>$outqty,
|
||||||
|
'up'=>$objp->unitprice,
|
||||||
|
'discount'=>$outdiscount,
|
||||||
|
'type'=>$outtype,
|
||||||
|
'duration_value'=>$outdurationvalue,
|
||||||
|
'duration_unit'=>$outdurationunit,
|
||||||
|
'disabled'=>(empty($objp->idprodfournprice) ?true:false),
|
||||||
|
'description'=>$objp->description
|
||||||
|
)
|
||||||
|
);
|
||||||
// Exemple of var_dump $outarray
|
// Exemple of var_dump $outarray
|
||||||
// array(1) {[0]=>array(6) {[key"]=>string(1) "2" ["value"]=>string(3) "ppp"
|
// array(1) {[0]=>array(6) {[key"]=>string(1) "2" ["value"]=>string(3) "ppp"
|
||||||
// ["label"]=>string(76) "ppp (<strong>f</strong>ff2) - ppp - 20,00 Euros/1unité (20,00 Euros/unité)"
|
// ["label"]=>string(76) "ppp (<strong>f</strong>ff2) - ppp - 20,00 Euros/1unité (20,00 Euros/unité)"
|
||||||
@ -3749,9 +3814,10 @@ class Form
|
|||||||
* @param string $filtre To filter list
|
* @param string $filtre To filter list
|
||||||
* @param int $useempty 1=Add an empty value in list, 2=Add an empty value in list only if there is more than 2 entries.
|
* @param int $useempty 1=Add an empty value in list, 2=Add an empty value in list only if there is more than 2 entries.
|
||||||
* @param string $moreattrib To add more attribute on select
|
* @param string $moreattrib To add more attribute on select
|
||||||
|
* @param int $noinfoadmin 0=Add admin info, 1=Disable admin info
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function selectShippingMethod($selected = '', $htmlname = 'shipping_method_id', $filtre = '', $useempty = 0, $moreattrib = '')
|
public function selectShippingMethod($selected = '', $htmlname = 'shipping_method_id', $filtre = '', $useempty = 0, $moreattrib = '', $noinfoadmin = 0)
|
||||||
{
|
{
|
||||||
global $langs, $conf, $user;
|
global $langs, $conf, $user;
|
||||||
|
|
||||||
@ -3786,7 +3852,7 @@ class Form
|
|||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
print "</select>";
|
print "</select>";
|
||||||
if ($user->admin) print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"), 1);
|
if ($user->admin && empty($noinfoadmin)) print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"), 1);
|
||||||
|
|
||||||
print ajax_combobox('select'.$htmlname);
|
print ajax_combobox('select'.$htmlname);
|
||||||
} else {
|
} else {
|
||||||
@ -3890,9 +3956,10 @@ class Form
|
|||||||
* @param string $selected Preselected Unit ID
|
* @param string $selected Preselected Unit ID
|
||||||
* @param string $htmlname Select name
|
* @param string $htmlname Select name
|
||||||
* @param int $showempty Add a nempty line
|
* @param int $showempty Add a nempty line
|
||||||
|
* @param string $unit_type Restrict to one given unit type
|
||||||
* @return string HTML select
|
* @return string HTML select
|
||||||
*/
|
*/
|
||||||
public function selectUnits($selected = '', $htmlname = 'units', $showempty = 0)
|
public function selectUnits($selected = '', $htmlname = 'units', $showempty = 0, $unit_type = '')
|
||||||
{
|
{
|
||||||
global $langs;
|
global $langs;
|
||||||
|
|
||||||
@ -3902,6 +3969,9 @@ class Form
|
|||||||
|
|
||||||
$sql = 'SELECT rowid, label, code from '.MAIN_DB_PREFIX.'c_units';
|
$sql = 'SELECT rowid, label, code from '.MAIN_DB_PREFIX.'c_units';
|
||||||
$sql .= ' WHERE active > 0';
|
$sql .= ' WHERE active > 0';
|
||||||
|
if (!empty($unit_type)) {
|
||||||
|
$sql .= " AND unit_type = '".$this->db->escape($unit_type)."'";
|
||||||
|
}
|
||||||
|
|
||||||
$resql = $this->db->query($sql);
|
$resql = $this->db->query($sql);
|
||||||
if ($resql && $this->db->num_rows($resql) > 0)
|
if ($resql && $this->db->num_rows($resql) > 0)
|
||||||
@ -4882,7 +4952,7 @@ class Form
|
|||||||
print '<form method="POST" action="'.$page.'">';
|
print '<form method="POST" action="'.$page.'">';
|
||||||
print '<input type="hidden" name="action" value="setmulticurrencyrate">';
|
print '<input type="hidden" name="action" value="setmulticurrencyrate">';
|
||||||
print '<input type="hidden" name="token" value="'.newToken().'">';
|
print '<input type="hidden" name="token" value="'.newToken().'">';
|
||||||
print '<input type="text" class="maxwidth100" name="'.$htmlname.'" value="'.(!empty($rate) ? price(price2num($rate, 'CR')) : 1).'" /> ';
|
print '<input type="text" class="maxwidth100" name="'.$htmlname.'" value="'.(!empty($rate) ? price(price2num($rate, 'CU')) : 1).'" /> ';
|
||||||
print '<select name="calculation_mode">';
|
print '<select name="calculation_mode">';
|
||||||
print '<option value="1">'.$currency.' > '.$conf->currency.'</option>';
|
print '<option value="1">'.$currency.' > '.$conf->currency.'</option>';
|
||||||
print '<option value="2">'.$conf->currency.' > '.$currency.'</option>';
|
print '<option value="2">'.$conf->currency.' > '.$currency.'</option>';
|
||||||
|
|||||||
@ -1257,8 +1257,6 @@ class FormMail extends Form
|
|||||||
$defaultmessage = $outputlangs->transnoentities("PredefinedMailContentSendActionComm");
|
$defaultmessage = $outputlangs->transnoentities("PredefinedMailContentSendActionComm");
|
||||||
} elseif ($type_template == 'thirdparty') {
|
} elseif ($type_template == 'thirdparty') {
|
||||||
$defaultmessage = $outputlangs->transnoentities("PredefinedMailContentThirdparty");
|
$defaultmessage = $outputlangs->transnoentities("PredefinedMailContentThirdparty");
|
||||||
} elseif ($type_template == 'user') {
|
|
||||||
$defaultmessage = $outputlangs->transnoentities("PredefinedMailContentUser");
|
|
||||||
} elseif (!empty($type_template)) {
|
} elseif (!empty($type_template)) {
|
||||||
$defaultmessage = $outputlangs->transnoentities("PredefinedMailContentGeneric");
|
$defaultmessage = $outputlangs->transnoentities("PredefinedMailContentGeneric");
|
||||||
}
|
}
|
||||||
|
|||||||
@ -81,7 +81,8 @@ class Notify
|
|||||||
'EXPENSE_REPORT_VALIDATE',
|
'EXPENSE_REPORT_VALIDATE',
|
||||||
'EXPENSE_REPORT_APPROVE',
|
'EXPENSE_REPORT_APPROVE',
|
||||||
'HOLIDAY_VALIDATE',
|
'HOLIDAY_VALIDATE',
|
||||||
'HOLIDAY_APPROVE'
|
'HOLIDAY_APPROVE',
|
||||||
|
'ACTION_CREATE'
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
@ -530,12 +531,18 @@ class Notify
|
|||||||
$object_type = 'holiday';
|
$object_type = 'holiday';
|
||||||
$mesg = $outputlangs->transnoentitiesnoconv("EMailTextHolidayValidated", $link);
|
$mesg = $outputlangs->transnoentitiesnoconv("EMailTextHolidayValidated", $link);
|
||||||
break;
|
break;
|
||||||
case 'HOLIDAY_APPROVE':
|
case 'HOLIDAY_APPROVE':
|
||||||
$link = '<a href="'.$urlwithroot.'/holiday/card.php?id='.$object->id.'">'.$newref.'</a>';
|
$link = '<a href="'.$urlwithroot.'/holiday/card.php?id='.$object->id.'">'.$newref.'</a>';
|
||||||
$dir_output = $conf->holiday->dir_output;
|
$dir_output = $conf->holiday->dir_output;
|
||||||
$object_type = 'holiday';
|
$object_type = 'holiday';
|
||||||
$mesg = $outputlangs->transnoentitiesnoconv("EMailTextHolidayApproved", $link);
|
$mesg = $outputlangs->transnoentitiesnoconv("EMailTextHolidayApproved", $link);
|
||||||
break;
|
break;
|
||||||
|
case 'ACTION_CREATE':
|
||||||
|
$link = '<a href="'.$urlwithroot.'/comm/action/card.php?id='.$object->id.'">'.$newref.'</a>';
|
||||||
|
$dir_output = $conf->agenda->dir_output;
|
||||||
|
$object_type = 'action';
|
||||||
|
$mesg = $outputlangs->transnoentitiesnoconv("EMailTextActionAdded", $link);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
$ref = dol_sanitizeFileName($newref);
|
$ref = dol_sanitizeFileName($newref);
|
||||||
$pdf_path = $dir_output."/".$ref."/".$ref.".pdf";
|
$pdf_path = $dir_output."/".$ref."/".$ref.".pdf";
|
||||||
@ -749,6 +756,12 @@ class Notify
|
|||||||
$object_type = 'holiday';
|
$object_type = 'holiday';
|
||||||
$mesg = $langs->transnoentitiesnoconv("EMailTextHolidayApproved", $link);
|
$mesg = $langs->transnoentitiesnoconv("EMailTextHolidayApproved", $link);
|
||||||
break;
|
break;
|
||||||
|
case 'ACTION_CREATE':
|
||||||
|
$link = '<a href="'.$urlwithroot.'/comm/action/card.php?id='.$object->id.'">'.$newref.'</a>';
|
||||||
|
$dir_output = $conf->agenda->dir_output;
|
||||||
|
$object_type = 'action';
|
||||||
|
$mesg = $langs->transnoentitiesnoconv("EMailTextActionAdded", $link);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
$ref = dol_sanitizeFileName($newref);
|
$ref = dol_sanitizeFileName($newref);
|
||||||
$pdf_path = $dir_output."/".$ref."/".$ref.".pdf";
|
$pdf_path = $dir_output."/".$ref."/".$ref.".pdf";
|
||||||
|
|||||||
@ -135,7 +135,11 @@ function ajax_autocompleter($selected, $htmlname, $url, $urloption = '', $minLen
|
|||||||
}
|
}
|
||||||
return { label: label, value: item.value, id: item.key, disabled: item.disabled,
|
return { label: label, value: item.value, id: item.key, disabled: item.disabled,
|
||||||
update: update, textarea: textarea,
|
update: update, textarea: textarea,
|
||||||
pbq: item.pbq, type: item.type, qty: item.qty, discount: item.discount, pricebasetype: item.pricebasetype, price_ht: item.price_ht, price_ttc: item.price_ttc }
|
pbq: item.pbq,
|
||||||
|
type: item.type, qty: item.qty, discount: item.discount,
|
||||||
|
pricebasetype: item.pricebasetype, price_ht: item.price_ht,
|
||||||
|
price_ttc: item.price_ttc,
|
||||||
|
up: item.up, description : item.description}
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
else console.error("Error: Ajax url '.$url.($urloption ? '?'.$urloption : '').' has returned an empty page. Should be an empty json array.");
|
else console.error("Error: Ajax url '.$url.($urloption ? '?'.$urloption : '').' has returned an empty page. Should be an empty json array.");
|
||||||
@ -148,13 +152,33 @@ function ajax_autocompleter($selected, $htmlname, $url, $urloption = '', $minLen
|
|||||||
console.log("Selected id = "+ui.item.id+" - If this value is null, it means you select a record with key that is null so selection is not effective");
|
console.log("Selected id = "+ui.item.id+" - If this value is null, it means you select a record with key that is null so selection is not effective");
|
||||||
|
|
||||||
//console.log(ui.item);
|
//console.log(ui.item);
|
||||||
$("#'.$htmlname.'").attr("data-pbq", ui.item.pbq);
|
//For supplier price
|
||||||
$("#'.$htmlname.'").attr("data-pbqup", ui.item.price_ht);
|
$("#'.$htmlname.'").attr("data-up", ui.item.up);
|
||||||
$("#'.$htmlname.'").attr("data-pbqbase", ui.item.pricebasetype);
|
$("#'.$htmlname.'").attr("data-discount", ui.item.discount);
|
||||||
$("#'.$htmlname.'").attr("data-pbqqty", ui.item.qty);
|
$("#'.$htmlname.'").attr("data-qty", ui.item.qty);
|
||||||
$("#'.$htmlname.'").attr("data-pbqpercent", ui.item.discount);
|
$("#'.$htmlname.'").attr("data-description", ui.item.description);
|
||||||
|
|
||||||
$("#'.$htmlname.'").val(ui.item.id).trigger("change"); // Select new value
|
//For customer price
|
||||||
|
';
|
||||||
|
|
||||||
|
if (!empty($conf->global->PRODUIT_CUSTOMER_PRICES_BY_QTY)) {
|
||||||
|
$script .= '
|
||||||
|
$("#' . $htmlname . '").attr("data-pbq", ui.item.pbq);
|
||||||
|
$("#' . $htmlname . '").attr("data-pbqup", ui.item.price_ht);
|
||||||
|
$("#' . $htmlname . '").attr("data-pbqbase", ui.item.pricebasetype);
|
||||||
|
$("#' . $htmlname . '").attr("data-pbqqty", ui.item.qty);
|
||||||
|
$("#' . $htmlname . '").attr("data-pbqpercent", ui.item.discount);
|
||||||
|
';
|
||||||
|
} else {
|
||||||
|
$script .= '
|
||||||
|
$("#' . $htmlname . '").attr("data-up", ui.item.price_ht);
|
||||||
|
$("#' . $htmlname . '").attr("data-base", ui.item.pricebasetype);
|
||||||
|
$("#' . $htmlname . '").attr("data-qty", ui.item.qty);
|
||||||
|
$("#' . $htmlname . '").attr("data-discount", ui.item.discount);
|
||||||
|
';
|
||||||
|
}
|
||||||
|
$script .= '
|
||||||
|
$("#'.$htmlname.'").val(ui.item.id).trigger("change"); // Select new value
|
||||||
// Disable an element
|
// Disable an element
|
||||||
if (options.option_disabled) {
|
if (options.option_disabled) {
|
||||||
console.log("Make action option_disabled on #"+options.option_disabled+" with disabled="+ui.item.disabled)
|
console.log("Make action option_disabled on #"+options.option_disabled+" with disabled="+ui.item.disabled)
|
||||||
|
|||||||
@ -1976,7 +1976,7 @@ function dol_print_date($time, $format = '', $tzoutput = 'auto', $outputlangs =
|
|||||||
{
|
{
|
||||||
global $conf, $langs;
|
global $conf, $langs;
|
||||||
|
|
||||||
if ($tzoutput == 'auto') {
|
if ($tzoutput == 'auto' && property_exists($conf, 'tzuserinputkey')) {
|
||||||
$tzoutput = $conf->tzuserinputkey;
|
$tzoutput = $conf->tzuserinputkey;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4826,7 +4826,8 @@ function price($amount, $form = 0, $outlangs = '', $trunc = 1, $rounding = -1, $
|
|||||||
* 'MU'=Round to Max unit price (MAIN_MAX_DECIMALS_UNIT)
|
* 'MU'=Round to Max unit price (MAIN_MAX_DECIMALS_UNIT)
|
||||||
* 'MT'=Round to Max for totals with Tax (MAIN_MAX_DECIMALS_TOT)
|
* 'MT'=Round to Max for totals with Tax (MAIN_MAX_DECIMALS_TOT)
|
||||||
* 'MS'=Round to Max for stock quantity (MAIN_MAX_DECIMALS_STOCK)
|
* 'MS'=Round to Max for stock quantity (MAIN_MAX_DECIMALS_STOCK)
|
||||||
* 'CR'=Foreign currency accurancy
|
* 'CU'=Round to Max unit price of foreign currency accuracy
|
||||||
|
* 'CT'=Round to Max for totals with Tax of foreign currency accuracy
|
||||||
* Numeric = Nb of digits for rounding
|
* Numeric = Nb of digits for rounding
|
||||||
* @param int $option Put 1 if you know that content is already universal format number (so no correction on decimal will be done)
|
* @param int $option Put 1 if you know that content is already universal format number (so no correction on decimal will be done)
|
||||||
* Put 2 if you know that number is a user input (so we know we don't have to fix decimal separator).
|
* Put 2 if you know that number is a user input (so we know we don't have to fix decimal separator).
|
||||||
@ -4896,8 +4897,11 @@ function price2num($amount, $rounding = '', $option = 0)
|
|||||||
elseif ($rounding == 'MS') {
|
elseif ($rounding == 'MS') {
|
||||||
$nbofdectoround = empty($conf->global->MAIN_MAX_DECIMALS_STOCK) ? 5 : $conf->global->MAIN_MAX_DECIMALS_STOCK;
|
$nbofdectoround = empty($conf->global->MAIN_MAX_DECIMALS_STOCK) ? 5 : $conf->global->MAIN_MAX_DECIMALS_STOCK;
|
||||||
}
|
}
|
||||||
elseif ($rounding == 'CR') {
|
elseif ($rounding == 'CU') {
|
||||||
$nbofdectoround = max($conf->global->MAIN_MAX_DECIMALS_TOT, 8);
|
$nbofdectoround = max($conf->global->MAIN_MAX_DECIMALS_UNIT, 8); // TODO Use param of currency
|
||||||
|
}
|
||||||
|
elseif ($rounding == 'CT') {
|
||||||
|
$nbofdectoround = max($conf->global->MAIN_MAX_DECIMALS_TOT, 8); // TODO Use param of currency
|
||||||
}
|
}
|
||||||
elseif (is_numeric($rounding)) $nbofdectoround = $rounding;
|
elseif (is_numeric($rounding)) $nbofdectoround = $rounding;
|
||||||
//print "RR".$amount.' - '.$nbofdectoround.'<br>';
|
//print "RR".$amount.' - '.$nbofdectoround.'<br>';
|
||||||
|
|||||||
@ -148,8 +148,11 @@ function check_user_password_ldap($usertotest, $passwordtotest, $entitytotest)
|
|||||||
{
|
{
|
||||||
if ($result == 2) // Connection is ok for user/pass into LDAP
|
if ($result == 2) // Connection is ok for user/pass into LDAP
|
||||||
{
|
{
|
||||||
dol_syslog("functions_ldap::check_user_password_ldap Authentification ok");
|
|
||||||
$login = $usertotest;
|
$login = $usertotest;
|
||||||
|
if (!empty($conf->global->LDAP_FIELD_LOGIN)) {
|
||||||
|
$login = $ldap->login;
|
||||||
|
}
|
||||||
|
dol_syslog("functions_ldap::check_user_password_ldap $login authentication ok");
|
||||||
|
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
|
||||||
|
|
||||||
|
|||||||
@ -74,6 +74,14 @@ class modMailing extends DolibarrModules
|
|||||||
|
|
||||||
// Constants
|
// Constants
|
||||||
$this->const = array();
|
$this->const = array();
|
||||||
|
$r = 0;
|
||||||
|
|
||||||
|
$this->const[$r][0] = "MAILING_CONTACT_DEFAULT_BULK_STATUS";
|
||||||
|
$this->const[$r][1] = "chaine";
|
||||||
|
$this->const[$r][2] = "0";
|
||||||
|
$this->const[$r][3] = 'Default black list mailing';
|
||||||
|
$this->const[$r][4] = 0;
|
||||||
|
$r++;
|
||||||
|
|
||||||
// Boxes
|
// Boxes
|
||||||
$this->boxes = array();
|
$this->boxes = array();
|
||||||
|
|||||||
@ -56,7 +56,10 @@ foreach ($object->fields as $key => $val)
|
|||||||
if (!empty($val['picto'])) { print img_picto('', $val['picto']); }
|
if (!empty($val['picto'])) { print img_picto('', $val['picto']); }
|
||||||
if (in_array($val['type'], array('int', 'integer'))) $value = GETPOST($key, 'int');
|
if (in_array($val['type'], array('int', 'integer'))) $value = GETPOST($key, 'int');
|
||||||
elseif ($val['type'] == 'text' || $val['type'] == 'html') $value = GETPOST($key, 'restricthtml');
|
elseif ($val['type'] == 'text' || $val['type'] == 'html') $value = GETPOST($key, 'restricthtml');
|
||||||
else $value = GETPOST($key, 'alpha');
|
elseif ($val['type'] == 'date') $value = dol_mktime(12, 0, 0, GETPOST($key.'month', 'int'), GETPOST($key.'day', 'int'), GETPOST($key.'year', 'int'));
|
||||||
|
elseif ($val['type'] == 'datetime') $value = dol_mktime(GETPOST($key.'hour', 'int'), GETPOST($key.'min', 'int'), 0, GETPOST($key.'month', 'int'), GETPOST($key.'day', 'int'), GETPOST($key.'year', 'int'));
|
||||||
|
elseif ($val['type'] == 'boolean') $value = (GETPOST($key) == 'on' ? 1 : 0);
|
||||||
|
else $value = GETPOST($key, 'alphanohtml');
|
||||||
if ($val['noteditable']) print $object->showOutputField($val, $key, $value, '', '', '', 0);
|
if ($val['noteditable']) print $object->showOutputField($val, $key, $value, '', '', '', 0);
|
||||||
else print $object->showInputField($val, $key, $value, '', '', '', 0);
|
else print $object->showInputField($val, $key, $value, '', '', '', 0);
|
||||||
print '</td>';
|
print '</td>';
|
||||||
|
|||||||
@ -35,8 +35,8 @@ if (!empty($extrafieldsobjectkey)) // $extrafieldsobject is the $object->table_e
|
|||||||
print '<input class="flat'.($searchclass ? ' '.$searchclass : '').'" size="4" type="text" name="'.$search_options_pattern.$tmpkey.'" value="'.dol_escape_htmltag($search_array_options[$search_options_pattern.$tmpkey]).'">';
|
print '<input class="flat'.($searchclass ? ' '.$searchclass : '').'" size="4" type="text" name="'.$search_options_pattern.$tmpkey.'" value="'.dol_escape_htmltag($search_array_options[$search_options_pattern.$tmpkey]).'">';
|
||||||
} elseif (in_array($typeofextrafield, array('datetime', 'timestamp')))
|
} elseif (in_array($typeofextrafield, array('datetime', 'timestamp')))
|
||||||
{
|
{
|
||||||
// TODO
|
$morecss = '';
|
||||||
// Use showInputField in a particular manner to have input with a comparison operator, not input for a specific value date-hour-minutes
|
echo $extrafields->showInputField($key, $search_array_options[$search_options_pattern.$tmpkey], '', '', $search_options_pattern, $morecss, 0, $extrafieldsobjectkey, 1);
|
||||||
} else {
|
} else {
|
||||||
// for the type as 'checkbox', 'chkbxlst', 'sellist' we should use code instead of id (example: I declare a 'chkbxlst' to have a link with dictionnairy, I have to extend it with the 'code' instead 'rowid')
|
// for the type as 'checkbox', 'chkbxlst', 'sellist' we should use code instead of id (example: I declare a 'chkbxlst' to have a link with dictionnairy, I have to extend it with the 'code' instead 'rowid')
|
||||||
$morecss = '';
|
$morecss = '';
|
||||||
|
|||||||
@ -16,6 +16,22 @@ if (!empty($search_array_options) && is_array($search_array_options)) // $extraf
|
|||||||
{
|
{
|
||||||
$crit = $val;
|
$crit = $val;
|
||||||
$tmpkey = preg_replace('/'.$search_options_pattern.'/', '', $key);
|
$tmpkey = preg_replace('/'.$search_options_pattern.'/', '', $key);
|
||||||
|
if (is_array($val) && array_key_exists('start', $val) && array_key_exists('end', $val)) {
|
||||||
|
// date range from list filters is stored as array('start' => <timestamp>, 'end' => <timestamp>)
|
||||||
|
// start date
|
||||||
|
$param .= '&' . $search_options_pattern.$tmpkey.'_startyear=' . dol_print_date($val['start'], '%Y');
|
||||||
|
$param .= '&' . $search_options_pattern.$tmpkey.'_startmonth=' . dol_print_date($val['start'], '%m');
|
||||||
|
$param .= '&' . $search_options_pattern.$tmpkey.'_startday=' . dol_print_date($val['start'], '%d');
|
||||||
|
$param .= '&' . $search_options_pattern.$tmpkey.'_starthour=' . dol_print_date($val['start'], '%H');
|
||||||
|
$param .= '&' . $search_options_pattern.$tmpkey.'_startmin=' . dol_print_date($val['start'], '%M');
|
||||||
|
// end date
|
||||||
|
$param .= '&' . $search_options_pattern.$tmpkey.'_endyear=' . dol_print_date($val['end'], '%Y');
|
||||||
|
$param .= '&' . $search_options_pattern.$tmpkey.'_endmonth=' . dol_print_date($val['end'], '%m');
|
||||||
|
$param .= '&' . $search_options_pattern.$tmpkey.'_endday=' . dol_print_date($val['end'], '%d');
|
||||||
|
$param .= '&' . $search_options_pattern.$tmpkey.'_endhour=' . dol_print_date($val['end'], '%H');
|
||||||
|
$param .= '&' . $search_options_pattern.$tmpkey.'_endmin=' . dol_print_date($val['end'], '%M');
|
||||||
|
$val = '';
|
||||||
|
}
|
||||||
if ($val != '') $param .= '&'.$search_options_pattern.$tmpkey.'='.urlencode($val);
|
if ($val != '') $param .= '&'.$search_options_pattern.$tmpkey.'='.urlencode($val);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -23,7 +23,15 @@ if (!empty($extrafieldsobjectkey) && !empty($search_array_options) && is_array($
|
|||||||
|
|
||||||
if ($crit != '' && in_array($typ, array('date', 'datetime', 'timestamp')))
|
if ($crit != '' && in_array($typ, array('date', 'datetime', 'timestamp')))
|
||||||
{
|
{
|
||||||
$sql .= " AND ".$extrafieldsobjectprefix.$tmpkey." = '".$db->idate($crit)."'";
|
if (is_numeric($crit)) {
|
||||||
|
$sql .= " AND ".$extrafieldsobjectprefix.$tmpkey." = '".$db->idate($crit)."'";
|
||||||
|
} elseif (is_array($crit)) {
|
||||||
|
$sql .= ' AND (' . $extrafieldsobjectprefix.$tmpkey
|
||||||
|
.' BETWEEN "'
|
||||||
|
. $db->idate($crit['start'])
|
||||||
|
. '" AND "'
|
||||||
|
. $db->idate($crit['end']) . '")';
|
||||||
|
}
|
||||||
} elseif (in_array($typ, array('boolean')))
|
} elseif (in_array($typ, array('boolean')))
|
||||||
{
|
{
|
||||||
if ($crit !== '-1' && $crit !== '') {
|
if ($crit !== '-1' && $crit !== '') {
|
||||||
|
|||||||
@ -319,6 +319,11 @@ if ($nolinesbefore) {
|
|||||||
echo $form->selectyesno('date_end_fill', $line->date_end_fill, 1);
|
echo $form->selectyesno('date_end_fill', $line->date_end_fill, 1);
|
||||||
echo '</div>';
|
echo '</div>';
|
||||||
}
|
}
|
||||||
|
if (is_object($objectline)) {
|
||||||
|
print '<div style="padding-top: 10px" id="extrafield_lines_area_create" name="extrafield_lines_area_create">';
|
||||||
|
print $objectline->showOptionals($extrafields, 'edit', array(), '', '', 1, 'line');
|
||||||
|
print '</div>';
|
||||||
|
}
|
||||||
echo '</td>';
|
echo '</td>';
|
||||||
if ($object->element == 'supplier_proposal' || $object->element == 'order_supplier' || $object->element == 'invoice_supplier') // We must have same test in printObjectLines
|
if ($object->element == 'supplier_proposal' || $object->element == 'order_supplier' || $object->element == 'invoice_supplier') // We must have same test in printObjectLines
|
||||||
{
|
{
|
||||||
@ -412,10 +417,6 @@ if ($nolinesbefore) {
|
|||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<?php
|
<?php
|
||||||
if (is_object($objectline)) {
|
|
||||||
print $objectline->showOptionals($extrafields, 'edit', array('colspan'=>$coldisplay), '', '', 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((!empty($conf->service->enabled) || ($object->element == 'contrat')) && $dateSelector && GETPOST('type') != '0') // We show date field if required
|
if ((!empty($conf->service->enabled) || ($object->element == 'contrat')) && $dateSelector && GETPOST('type') != '0') // We show date field if required
|
||||||
{
|
{
|
||||||
print '<tr id="trlinefordates" class="oddeven">'."\n";
|
print '<tr id="trlinefordates" class="oddeven">'."\n";
|
||||||
@ -516,13 +517,13 @@ if (!empty($usemargins) && $user->rights->margins->creer)
|
|||||||
<?php
|
<?php
|
||||||
if (!empty($conf->global->DISPLAY_MARGIN_RATES)) { ?>
|
if (!empty($conf->global->DISPLAY_MARGIN_RATES)) { ?>
|
||||||
$("input[name='np_marginRate']:first").blur(function(e) {
|
$("input[name='np_marginRate']:first").blur(function(e) {
|
||||||
return checkFreeLine(e, "np_marginRate");
|
return checkFreeLine(e, "np_marginRate");
|
||||||
});
|
});
|
||||||
<?php
|
<?php
|
||||||
}
|
}
|
||||||
if (!empty($conf->global->DISPLAY_MARK_RATES)) { ?>
|
if (!empty($conf->global->DISPLAY_MARK_RATES)) { ?>
|
||||||
$("input[name='np_markRate']:first").blur(function(e) {
|
$("input[name='np_markRate']:first").blur(function(e) {
|
||||||
return checkFreeLine(e, "np_markRate");
|
return checkFreeLine(e, "np_markRate");
|
||||||
});
|
});
|
||||||
<?php
|
<?php
|
||||||
}
|
}
|
||||||
@ -537,21 +538,21 @@ if (!empty($usemargins) && $user->rights->margins->creer)
|
|||||||
|
|
||||||
var rate = $("input[name='"+npRate+"']:first");
|
var rate = $("input[name='"+npRate+"']:first");
|
||||||
if (rate.val() == '')
|
if (rate.val() == '')
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
if (! $.isNumeric(rate.val().replace(',','.')))
|
if (! $.isNumeric(rate.val().replace(',','.')))
|
||||||
{
|
{
|
||||||
alert('<?php echo dol_escape_js($langs->trans("rateMustBeNumeric")); ?>');
|
alert('<?php echo dol_escape_js($langs->trans("rateMustBeNumeric")); ?>');
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
setTimeout(function () { rate.focus() }, 50);
|
setTimeout(function () { rate.focus() }, 50);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (npRate == "np_markRate" && rate.val() >= 100)
|
if (npRate == "np_markRate" && rate.val() >= 100)
|
||||||
{
|
{
|
||||||
alert('<?php echo dol_escape_js($langs->trans("markRateShouldBeLesserThan100")); ?>');
|
alert('<?php echo dol_escape_js($langs->trans("markRateShouldBeLesserThan100")); ?>');
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
setTimeout(function () { rate.focus() }, 50);
|
setTimeout(function () { rate.focus() }, 50);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
var price = 0;
|
var price = 0;
|
||||||
@ -604,39 +605,39 @@ if (!empty($usemargins) && $user->rights->margins->creer)
|
|||||||
});
|
});
|
||||||
|
|
||||||
$("#prod_entry_mode_free").on( "click", function() {
|
$("#prod_entry_mode_free").on( "click", function() {
|
||||||
setforfree();
|
setforfree();
|
||||||
});
|
});
|
||||||
$("#select_type").change(function()
|
$("#select_type").change(function()
|
||||||
{
|
{
|
||||||
setforfree();
|
setforfree();
|
||||||
if (jQuery('#select_type').val() >= 0)
|
if (jQuery('#select_type').val() >= 0)
|
||||||
{
|
{
|
||||||
/* focus work on a standard textarea but not if field was replaced with CKEDITOR */
|
/* focus work on a standard textarea but not if field was replaced with CKEDITOR */
|
||||||
jQuery('#dp_desc').focus();
|
jQuery('#dp_desc').focus();
|
||||||
/* focus if CKEDITOR */
|
/* focus if CKEDITOR */
|
||||||
if (typeof CKEDITOR == "object" && typeof CKEDITOR.instances != "undefined")
|
if (typeof CKEDITOR == "object" && typeof CKEDITOR.instances != "undefined")
|
||||||
{
|
{
|
||||||
var editor = CKEDITOR.instances['dp_desc'];
|
var editor = CKEDITOR.instances['dp_desc'];
|
||||||
if (editor) { editor.focus(); }
|
if (editor) { editor.focus(); }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
console.log("Hide/show date according to product type");
|
console.log("Hide/show date according to product type");
|
||||||
if (jQuery('#select_type').val() == '0')
|
if (jQuery('#select_type').val() == '0')
|
||||||
{
|
{
|
||||||
jQuery('#trlinefordates').hide();
|
jQuery('#trlinefordates').hide();
|
||||||
jQuery('.divlinefordates').hide();
|
jQuery('.divlinefordates').hide();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
jQuery('#trlinefordates').show();
|
jQuery('#trlinefordates').show();
|
||||||
jQuery('.divlinefordates').show();
|
jQuery('.divlinefordates').show();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
$("#prod_entry_mode_predef").on( "click", function() {
|
$("#prod_entry_mode_predef").on( "click", function() {
|
||||||
console.log("click prod_entry_mode_predef");
|
console.log("click prod_entry_mode_predef");
|
||||||
setforpredef();
|
setforpredef();
|
||||||
jQuery('#trlinefordates').show();
|
jQuery('#trlinefordates').show();
|
||||||
});
|
});
|
||||||
|
|
||||||
<?php
|
<?php
|
||||||
@ -661,7 +662,6 @@ if (!empty($usemargins) && $user->rights->margins->creer)
|
|||||||
?>
|
?>
|
||||||
var pbq = parseInt($('option:selected', this).attr('data-pbq')); /* If product was selected with a HTML select */
|
var pbq = parseInt($('option:selected', this).attr('data-pbq')); /* If product was selected with a HTML select */
|
||||||
if (isNaN(pbq)) { pbq = jQuery('#idprod').attr('data-pbq'); } /* If product was selected with a HTML input with autocomplete */
|
if (isNaN(pbq)) { pbq = jQuery('#idprod').attr('data-pbq'); } /* If product was selected with a HTML input with autocomplete */
|
||||||
//console.log(pbq);
|
|
||||||
|
|
||||||
if ((jQuery('#idprod').val() > 0 || jQuery('#idprodfournprice').val()) && ! isNaN(pbq) && pbq > 0)
|
if ((jQuery('#idprod').val() > 0 || jQuery('#idprodfournprice').val()) && ! isNaN(pbq) && pbq > 0)
|
||||||
{
|
{
|
||||||
@ -677,6 +677,32 @@ if (!empty($usemargins) && $user->rights->margins->creer)
|
|||||||
function(data) {
|
function(data) {
|
||||||
console.log("Load unit price end, we got value "+data.price_ht);
|
console.log("Load unit price end, we got value "+data.price_ht);
|
||||||
jQuery("#price_ht").val(data.price_ht);
|
jQuery("#price_ht").val(data.price_ht);
|
||||||
|
<?php
|
||||||
|
if (!empty($conf->global->PRODUIT_AUTOFILL_DESC) && $conf->global->PRODUIT_AUTOFILL_DESC == 1) {
|
||||||
|
if (!empty($conf->global->MAIN_MULTILANGS) && !empty($conf->global->PRODUIT_TEXTS_IN_THIRDPARTY_LANGUAGE)) { ?>
|
||||||
|
var proddesc = data.desc_trans;
|
||||||
|
<?php
|
||||||
|
} else { ?>
|
||||||
|
var proddesc = data.desc;
|
||||||
|
<?php
|
||||||
|
} ?>
|
||||||
|
console.log("Load desciption into text area : "+proddesc);
|
||||||
|
<?php
|
||||||
|
if (!empty($conf->global->FCKEDITOR_ENABLE_DETAILS)) { ?>
|
||||||
|
if (typeof CKEDITOR == "object" && typeof CKEDITOR.instances != "undefined")
|
||||||
|
{
|
||||||
|
var editor = CKEDITOR.instances['dp_desc'];
|
||||||
|
if (editor) {
|
||||||
|
editor.setData(proddesc);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
<?php
|
||||||
|
} else { ?>
|
||||||
|
jQuery('#dp_desc').text(proddesc);
|
||||||
|
<?php
|
||||||
|
} ?>
|
||||||
|
<?php
|
||||||
|
} ?>
|
||||||
},
|
},
|
||||||
'json'
|
'json'
|
||||||
);
|
);
|
||||||
@ -791,7 +817,10 @@ if (!empty($usemargins) && $user->rights->margins->creer)
|
|||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
||||||
/* To process customer price per quantity (CUSTOMER_PRICE_PER_QTY works only if combo product is not an ajax after x key pressed) */
|
<?php
|
||||||
|
if (!empty($conf->global->PRODUIT_CUSTOMER_PRICES_BY_QTY))
|
||||||
|
{?>
|
||||||
|
/* To process customer price per quantity (PRODUIT_CUSTOMER_PRICES_BY_QTY works only if combo product is not an ajax after x key pressed) */
|
||||||
var pbq = parseInt($('option:selected', this).attr('data-pbq')); // When select is done from HTML select
|
var pbq = parseInt($('option:selected', this).attr('data-pbq')); // When select is done from HTML select
|
||||||
if (isNaN(pbq)) { pbq = jQuery('#idprod').attr('data-pbq'); } // When select is done from HTML input with autocomplete
|
if (isNaN(pbq)) { pbq = jQuery('#idprod').attr('data-pbq'); } // When select is done from HTML input with autocomplete
|
||||||
var pbqup = parseFloat($('option:selected', this).attr('data-pbqup'));
|
var pbqup = parseFloat($('option:selected', this).attr('data-pbqup'));
|
||||||
@ -803,7 +832,7 @@ if (!empty($usemargins) && $user->rights->margins->creer)
|
|||||||
var pbqpercent = parseFloat($('option:selected', this).attr('data-pbqpercent'));
|
var pbqpercent = parseFloat($('option:selected', this).attr('data-pbqpercent'));
|
||||||
if (isNaN(pbqpercent)) { pbqpercent = jQuery('#idprod').attr('data-pbqpercent'); }
|
if (isNaN(pbqpercent)) { pbqpercent = jQuery('#idprod').attr('data-pbqpercent'); }
|
||||||
|
|
||||||
if ((jQuery('#idprod').val() > 0 || jQuery('#idprodfournprice').val()) && ! isNaN(pbq) && pbq > 0)
|
if ((jQuery('#idprod').val() > 0) && ! isNaN(pbq) && pbq > 0)
|
||||||
{
|
{
|
||||||
var pbqupht = pbqup; /* TODO support of price per qty TTC not yet available */
|
var pbqupht = pbqup; /* TODO support of price per qty TTC not yet available */
|
||||||
|
|
||||||
@ -818,12 +847,76 @@ if (!empty($usemargins) && $user->rights->margins->creer)
|
|||||||
{
|
{
|
||||||
jQuery("#remise_percent").val(pbqpercent);
|
jQuery("#remise_percent").val(pbqpercent);
|
||||||
}
|
}
|
||||||
|
} else { jQuery("#pbq").val(''); }
|
||||||
|
<?php
|
||||||
}
|
}
|
||||||
else
|
?>
|
||||||
|
//Deal with supplier
|
||||||
|
if (jQuery('#idprodfournprice').val() >0)
|
||||||
{
|
{
|
||||||
jQuery("#pbq").val('');
|
var up = parseFloat($('option:selected', this).attr('data-up')); // When select is done from HTML select
|
||||||
|
if (isNaN(up)) { up = parseFloat(jQuery('#idprodfournprice').attr('data-up'));} // When select is done from HTML input with autocomplete
|
||||||
|
|
||||||
|
var qty = parseFloat($('option:selected', this).attr('data-qty'));
|
||||||
|
if (isNaN(qty)) { qty = parseFloat(jQuery('#idprodfournprice').attr('data-qty'));}
|
||||||
|
|
||||||
|
var discount = parseFloat($('option:selected', this).attr('data-discount'));
|
||||||
|
if (isNaN(discount)) { discount = parseFloat(jQuery('#idprodfournprice').attr('data-discount'));}
|
||||||
|
|
||||||
|
console.log("We find supplier price :"+up+" qty: "+qty+" discount: "+discount+" for product "+jQuery('#idprodfournprice').val());
|
||||||
|
|
||||||
|
jQuery("#price_ht").val(up);
|
||||||
|
if (jQuery("#qty").val() < qty)
|
||||||
|
{
|
||||||
|
jQuery("#qty").val(qty);
|
||||||
|
}
|
||||||
|
if (jQuery("#remise_percent").val() < discount)
|
||||||
|
{
|
||||||
|
jQuery("#remise_percent").val(discount);
|
||||||
|
}
|
||||||
|
|
||||||
|
<?php
|
||||||
|
if (!empty($conf->global->PRODUIT_AUTOFILL_DESC) && $conf->global->PRODUIT_AUTOFILL_DESC == 1) {
|
||||||
|
?>
|
||||||
|
var description = $('option:selected', this).attr('data-description');
|
||||||
|
if (typeof description == 'undefined') { description = jQuery('#idprodfournprice').attr('data-description'); }
|
||||||
|
|
||||||
|
console.log("Load desciption into text area : "+description);
|
||||||
|
<?php
|
||||||
|
if (!empty($conf->global->FCKEDITOR_ENABLE_DETAILS)) { ?>
|
||||||
|
if (typeof CKEDITOR == "object" && typeof CKEDITOR.instances != "undefined")
|
||||||
|
{
|
||||||
|
var editor = CKEDITOR.instances['dp_desc'];
|
||||||
|
if (editor) {
|
||||||
|
editor.setData(description);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
<?php
|
||||||
|
} else { ?>
|
||||||
|
jQuery('#dp_desc').text(description);
|
||||||
|
<?php
|
||||||
|
}
|
||||||
|
}?>
|
||||||
|
} else if (jQuery('#idprodfournprice').length > 0) {
|
||||||
|
<?php
|
||||||
|
if (!empty($conf->global->PRODUIT_AUTOFILL_DESC) && $conf->global->PRODUIT_AUTOFILL_DESC == 1) {
|
||||||
|
if (!empty($conf->global->FCKEDITOR_ENABLE_DETAILS)) { ?>
|
||||||
|
if (typeof CKEDITOR == "object" && typeof CKEDITOR.instances != "undefined")
|
||||||
|
{
|
||||||
|
var editor = CKEDITOR.instances['dp_desc'];
|
||||||
|
if (editor) {
|
||||||
|
editor.setData('');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
<?php
|
||||||
|
} else { ?>
|
||||||
|
jQuery('#dp_desc').text('');
|
||||||
|
<?php
|
||||||
|
}
|
||||||
|
}?>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* To set focus */
|
/* To set focus */
|
||||||
if (jQuery('#idprod').val() > 0 || jQuery('#idprodfournprice').val() > 0)
|
if (jQuery('#idprod').val() > 0 || jQuery('#idprodfournprice').val() > 0)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -125,6 +125,14 @@ $coldisplay++;
|
|||||||
print '<textarea id="product_desc" class="flat" name="product_desc" readonly style="width: 200px; height:80px;">'.$line->description.'</textarea>';
|
print '<textarea id="product_desc" class="flat" name="product_desc" readonly style="width: 200px; height:80px;">'.$line->description.'</textarea>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Line extrafield
|
||||||
|
if (!empty($extrafields))
|
||||||
|
{
|
||||||
|
print '<div style="padding-top: 10px" id="extrafield_lines_area_edit" name="extrafield_lines_area_edit">';
|
||||||
|
print $line->showOptionals($extrafields, 'edit', array('class'=>'tredited'), '', '', 1, 'line');
|
||||||
|
print '</div>';
|
||||||
|
}
|
||||||
|
|
||||||
// Show autofill date for recuring invoices
|
// Show autofill date for recuring invoices
|
||||||
if (!empty($conf->service->enabled) && $line->product_type == 1 && $line->element == 'facturedetrec')
|
if (!empty($conf->service->enabled) && $line->product_type == 1 && $line->element == 'facturedetrec')
|
||||||
{
|
{
|
||||||
@ -189,11 +197,21 @@ $coldisplay++;
|
|||||||
</td>
|
</td>
|
||||||
|
|
||||||
<?php
|
<?php
|
||||||
if (!empty($conf->global->PRODUCT_USE_UNITS))
|
if (!empty($conf->global->PRODUCT_USE_UNITS)) {
|
||||||
{
|
$unit_type = false;
|
||||||
|
// limit unit select to unit type
|
||||||
|
if (!empty($line->fk_unit) && empty($conf->global->MAIN_EDIT_LINE_ALLOW_ALL_UNIT_TYPE)) {
|
||||||
|
include_once DOL_DOCUMENT_ROOT.'/core/class/cunits.class.php';
|
||||||
|
$cUnit = new CUnits($line->db);
|
||||||
|
if ($cUnit->fetch($line->fk_unit) > 0) {
|
||||||
|
if (!empty($cUnit->unit_type)) {
|
||||||
|
$unit_type = $cUnit->unit_type;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
$coldisplay++;
|
$coldisplay++;
|
||||||
print '<td class="left">';
|
print '<td class="left">';
|
||||||
print $form->selectUnits($line->fk_unit, "units");
|
print $form->selectUnits($line->fk_unit, "units", 0, $unit_type);
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
@ -260,14 +278,6 @@ $coldisplay++;
|
|||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<?php
|
|
||||||
//Line extrafield
|
|
||||||
if (!empty($extrafields))
|
|
||||||
{
|
|
||||||
print $line->showOptionals($extrafields, 'edit', array('class'=>'tredited', 'colspan'=>$coldisplay), '', '', 1);
|
|
||||||
}
|
|
||||||
?>
|
|
||||||
|
|
||||||
<?php if (!empty($conf->service->enabled) && $line->product_type == 1 && $dateSelector) { ?>
|
<?php if (!empty($conf->service->enabled) && $line->product_type == 1 && $dateSelector) { ?>
|
||||||
<tr id="service_duration_area" class="treditedlinefordate">
|
<tr id="service_duration_area" class="treditedlinefordate">
|
||||||
<?php if (!empty($conf->global->MAIN_VIEW_LINE_NUMBER)) { ?>
|
<?php if (!empty($conf->global->MAIN_VIEW_LINE_NUMBER)) { ?>
|
||||||
|
|||||||
@ -119,8 +119,7 @@ if (($line->info_bits & 2) == 2) {
|
|||||||
} else {
|
} else {
|
||||||
$format = $conf->global->MAIN_USE_HOURMIN_IN_DATE_RANGE ? 'dayhour' : 'day';
|
$format = $conf->global->MAIN_USE_HOURMIN_IN_DATE_RANGE ? 'dayhour' : 'day';
|
||||||
|
|
||||||
if ($line->fk_product > 0)
|
if ($line->fk_product > 0) {
|
||||||
{
|
|
||||||
print $form->textwithtooltip($text, $description, 3, '', '', $i, 0, (!empty($line->fk_parent_line) ?img_picto('', 'rightarrow') : ''));
|
print $form->textwithtooltip($text, $description, 3, '', '', $i, 0, (!empty($line->fk_parent_line) ?img_picto('', 'rightarrow') : ''));
|
||||||
} else {
|
} else {
|
||||||
$type = (!empty($line->product_type) ? $line->product_type : $line->fk_product_type);
|
$type = (!empty($line->product_type) ? $line->product_type : $line->fk_product_type);
|
||||||
@ -158,6 +157,13 @@ if (($line->info_bits & 2) == 2) {
|
|||||||
{
|
{
|
||||||
print (!empty($line->description) && $line->description != $line->product_label) ? '<br>'.dol_htmlentitiesbr($line->description) : '';
|
print (!empty($line->description) && $line->description != $line->product_label) ? '<br>'.dol_htmlentitiesbr($line->description) : '';
|
||||||
}
|
}
|
||||||
|
//Line extrafield
|
||||||
|
if (!empty($extrafields))
|
||||||
|
{
|
||||||
|
print '<div style="padding-top: 10px" id="extrafield_lines_area_'.$line->id.'" name="extrafield_lines_area_'.$line->id.'">';
|
||||||
|
print $line->showOptionals($extrafields, 'view', array(), '', '', 1, 'line');
|
||||||
|
print '</div>';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($user->rights->fournisseur->lire && $line->fk_fournprice > 0)
|
if ($user->rights->fournisseur->lire && $line->fk_fournprice > 0)
|
||||||
@ -361,10 +367,4 @@ if ($action == 'selectlines') { ?>
|
|||||||
|
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
|
|
||||||
//Line extrafield
|
|
||||||
if (!empty($extrafields))
|
|
||||||
{
|
|
||||||
print $line->showOptionals($extrafields, 'view', array('style'=>'class="drag drop oddeven"', 'colspan'=>$coldisplay), '', '', 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
print "<!-- END PHP TEMPLATE objectline_view.tpl.php -->\n";
|
print "<!-- END PHP TEMPLATE objectline_view.tpl.php -->\n";
|
||||||
|
|||||||
@ -158,6 +158,18 @@ class InterfaceWorkflowManager extends DolibarrTriggers
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (! empty($conf->expedition->enabled) && ! empty($conf->workflow->enabled) && ! empty($conf->global->WORKFLOW_SHIPPING_CLASSIFY_CLOSED_INVOICE)) {
|
||||||
|
/** @var Facture $object */
|
||||||
|
$object->fetchObjectLinked('', 'shipping', $object->id, $object->element);
|
||||||
|
|
||||||
|
if (! empty($object->linkedObjects)) {
|
||||||
|
/** @var Expedition $shipment */
|
||||||
|
$shipment = array_shift($object->linkedObjects['shipping']);
|
||||||
|
|
||||||
|
$ret = $shipment->setClosed();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return $ret;
|
return $ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -46,7 +46,8 @@ class InterfaceNotification extends DolibarrTriggers
|
|||||||
'EXPENSE_REPORT_VALIDATE',
|
'EXPENSE_REPORT_VALIDATE',
|
||||||
'EXPENSE_REPORT_APPROVE',
|
'EXPENSE_REPORT_APPROVE',
|
||||||
'HOLIDAY_VALIDATE',
|
'HOLIDAY_VALIDATE',
|
||||||
'HOLIDAY_APPROVE'
|
'HOLIDAY_APPROVE',
|
||||||
|
'ACTION_CREATE'
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -198,11 +198,21 @@ class InterfaceTicketEmail extends DolibarrTriggers
|
|||||||
|
|
||||||
if (empty($conf->global->TICKET_DISABLE_CUSTOMER_MAILS) && empty($object->context['disableticketemail']) && $object->notify_tiers_at_create) {
|
if (empty($conf->global->TICKET_DISABLE_CUSTOMER_MAILS) && empty($object->context['disableticketemail']) && $object->notify_tiers_at_create) {
|
||||||
$sendto = '';
|
$sendto = '';
|
||||||
if (empty($user->socid) && empty($user->email)) {
|
|
||||||
$object->fetch_thirdparty();
|
//if contact selected send to email's contact else send to email's thirdparty
|
||||||
$sendto = $object->thirdparty->email;
|
|
||||||
} else {
|
$contactid = GETPOST('contactid', 'alpha');
|
||||||
$sendto = $user->email;
|
|
||||||
|
if (!empty($contactid)) {
|
||||||
|
$contact = new Contact($this->db);
|
||||||
|
$res = $contact->fetch($contactid);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($res > 0 && !empty($contact->email) && !empty($contact->statut)) {
|
||||||
|
$sendto = $contact->email;
|
||||||
|
} elseif (!empty($object->fk_soc)) {
|
||||||
|
$object->fetch_thirdparty();
|
||||||
|
$sendto = $object->thirdparty->email;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($sendto) {
|
if ($sendto) {
|
||||||
|
|||||||
@ -80,12 +80,13 @@ class TraceableDB extends DoliDB
|
|||||||
* Convert (by PHP) a GM Timestamp date into a string date with PHP server TZ to insert into a date field.
|
* Convert (by PHP) a GM Timestamp date into a string date with PHP server TZ to insert into a date field.
|
||||||
* Function to use to build INSERT, UPDATE or WHERE predica
|
* Function to use to build INSERT, UPDATE or WHERE predica
|
||||||
*
|
*
|
||||||
* @param int $param Date TMS to convert
|
* @param int $param Date TMS to convert
|
||||||
* @return string Date in a string YYYYMMDDHHMMSS
|
* @param mixed $gm 'gmt'=Input informations are GMT values, 'tzserver'=Local to server TZ
|
||||||
|
* @return string Date in a string YYYY-MM-DD HH:MM:SS
|
||||||
*/
|
*/
|
||||||
public function idate($param)
|
public function idate($param, $gm = 'tzserver')
|
||||||
{
|
{
|
||||||
return $this->db->idate($param);
|
return $this->db->idate($param, $gm);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -188,7 +188,6 @@ if (empty($reshook))
|
|||||||
if ($action == 'add' && $user->rights->expedition->creer)
|
if ($action == 'add' && $user->rights->expedition->creer)
|
||||||
{
|
{
|
||||||
$error = 0;
|
$error = 0;
|
||||||
$predef = '';
|
|
||||||
|
|
||||||
$db->begin();
|
$db->begin();
|
||||||
|
|
||||||
@ -215,7 +214,6 @@ if (empty($reshook))
|
|||||||
$object->fk_delivery_address = $objectsrc->fk_delivery_address;
|
$object->fk_delivery_address = $objectsrc->fk_delivery_address;
|
||||||
$object->shipping_method_id = GETPOST('shipping_method_id', 'int');
|
$object->shipping_method_id = GETPOST('shipping_method_id', 'int');
|
||||||
$object->tracking_number = GETPOST('tracking_number', 'alpha');
|
$object->tracking_number = GETPOST('tracking_number', 'alpha');
|
||||||
$object->ref_int = GETPOST('ref_int', 'alpha');
|
|
||||||
$object->note_private = GETPOST('note_private', 'restricthtml');
|
$object->note_private = GETPOST('note_private', 'restricthtml');
|
||||||
$object->note_public = GETPOST('note_public', 'restricthtml');
|
$object->note_public = GETPOST('note_public', 'restricthtml');
|
||||||
$object->fk_incoterms = GETPOST('incoterm_id', 'int');
|
$object->fk_incoterms = GETPOST('incoterm_id', 'int');
|
||||||
|
|||||||
@ -499,8 +499,8 @@ class Expedition extends CommonObject
|
|||||||
// create shipment lines
|
// create shipment lines
|
||||||
foreach ($stockLocationQty as $stockLocation => $qty)
|
foreach ($stockLocationQty as $stockLocation => $qty)
|
||||||
{
|
{
|
||||||
if (($line_id = $this->create_line($stockLocation, $line_ext->origin_line_id, $qty, $line_ext->rang, $array_options)) < 0)
|
$line_id = $this->create_line($stockLocation, $line_ext->origin_line_id, $qty, $line_ext->rang, $array_options);
|
||||||
{
|
if ($line_id < 0) {
|
||||||
$error++;
|
$error++;
|
||||||
} else {
|
} else {
|
||||||
// create shipment batch lines for stockLocation
|
// create shipment batch lines for stockLocation
|
||||||
@ -629,7 +629,7 @@ class Expedition extends CommonObject
|
|||||||
if (!empty($conf->multicurrency->enabled))
|
if (!empty($conf->multicurrency->enabled))
|
||||||
{
|
{
|
||||||
if (!empty($this->multicurrency_code)) $this->multicurrency_code = $this->thirdparty->multicurrency_code;
|
if (!empty($this->multicurrency_code)) $this->multicurrency_code = $this->thirdparty->multicurrency_code;
|
||||||
if (!empty($conf->global->MULTICURRENCY_USE_ORIGIN_TX) && !empty($objectsrc->multicurrency_tx)) $this->multicurrency_tx = $this->thirdparty->multicurrency_tx;
|
if (!empty($conf->global->MULTICURRENCY_USE_ORIGIN_TX) && !empty($this->thirdparty->multicurrency_tx)) $this->multicurrency_tx = $this->thirdparty->multicurrency_tx;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -671,7 +671,7 @@ class Expedition extends CommonObject
|
|||||||
// Protection
|
// Protection
|
||||||
if ($this->statut)
|
if ($this->statut)
|
||||||
{
|
{
|
||||||
dol_syslog(get_class($this)."::valid no draft status", LOG_WARNING);
|
dol_syslog(get_class($this)."::valid not in draft status", LOG_WARNING);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -757,7 +757,7 @@ class Expedition extends CommonObject
|
|||||||
|
|
||||||
//var_dump($this->lines[$i]);
|
//var_dump($this->lines[$i]);
|
||||||
$mouvS = new MouvementStock($this->db);
|
$mouvS = new MouvementStock($this->db);
|
||||||
$mouvS->origin = &$this;
|
$mouvS->origin = dol_clone($this, 1);
|
||||||
|
|
||||||
if (empty($obj->edbrowid))
|
if (empty($obj->edbrowid))
|
||||||
{
|
{
|
||||||
@ -765,6 +765,7 @@ class Expedition extends CommonObject
|
|||||||
|
|
||||||
// We decrement stock of product (and sub-products) -> update table llx_product_stock (key of this table is fk_product+fk_entrepot) and add a movement record.
|
// We decrement stock of product (and sub-products) -> update table llx_product_stock (key of this table is fk_product+fk_entrepot) and add a movement record.
|
||||||
$result = $mouvS->livraison($user, $obj->fk_product, $obj->fk_entrepot, $qty, $obj->subprice, $langs->trans("ShipmentValidatedInDolibarr", $numref));
|
$result = $mouvS->livraison($user, $obj->fk_product, $obj->fk_entrepot, $qty, $obj->subprice, $langs->trans("ShipmentValidatedInDolibarr", $numref));
|
||||||
|
|
||||||
if ($result < 0) {
|
if ($result < 0) {
|
||||||
$error++;
|
$error++;
|
||||||
$this->error = $mouvS->error;
|
$this->error = $mouvS->error;
|
||||||
@ -794,7 +795,6 @@ class Expedition extends CommonObject
|
|||||||
|
|
||||||
// Change status of order to "shipment in process"
|
// Change status of order to "shipment in process"
|
||||||
$ret = $this->setStatut(Commande::STATUS_SHIPMENTONPROCESS, $this->origin_id, $this->origin);
|
$ret = $this->setStatut(Commande::STATUS_SHIPMENTONPROCESS, $this->origin_id, $this->origin);
|
||||||
|
|
||||||
if (!$ret)
|
if (!$ret)
|
||||||
{
|
{
|
||||||
$error++;
|
$error++;
|
||||||
@ -1081,8 +1081,8 @@ class Expedition extends CommonObject
|
|||||||
if (isset($this->size_units)) $this->size_units = trim($this->size_units);
|
if (isset($this->size_units)) $this->size_units = trim($this->size_units);
|
||||||
if (isset($this->weight_units)) $this->weight_units = trim($this->weight_units);
|
if (isset($this->weight_units)) $this->weight_units = trim($this->weight_units);
|
||||||
if (isset($this->trueWeight)) $this->weight = trim($this->trueWeight);
|
if (isset($this->trueWeight)) $this->weight = trim($this->trueWeight);
|
||||||
if (isset($this->note_private)) $this->note = trim($this->note_private);
|
if (isset($this->note_private)) $this->note_private = trim($this->note_private);
|
||||||
if (isset($this->note_public)) $this->note = trim($this->note_public);
|
if (isset($this->note_public)) $this->note_public = trim($this->note_public);
|
||||||
if (isset($this->model_pdf)) $this->model_pdf = trim($this->model_pdf);
|
if (isset($this->model_pdf)) $this->model_pdf = trim($this->model_pdf);
|
||||||
|
|
||||||
|
|
||||||
@ -1093,7 +1093,6 @@ class Expedition extends CommonObject
|
|||||||
// Update request
|
// Update request
|
||||||
$sql = "UPDATE ".MAIN_DB_PREFIX."expedition SET";
|
$sql = "UPDATE ".MAIN_DB_PREFIX."expedition SET";
|
||||||
|
|
||||||
$sql .= " tms=".(dol_strlen($this->tms) != 0 ? "'".$this->db->idate($this->tms)."'" : 'null').",";
|
|
||||||
$sql .= " ref=".(isset($this->ref) ? "'".$this->db->escape($this->ref)."'" : "null").",";
|
$sql .= " ref=".(isset($this->ref) ? "'".$this->db->escape($this->ref)."'" : "null").",";
|
||||||
$sql .= " ref_ext=".(isset($this->ref_ext) ? "'".$this->db->escape($this->ref_ext)."'" : "null").",";
|
$sql .= " ref_ext=".(isset($this->ref_ext) ? "'".$this->db->escape($this->ref_ext)."'" : "null").",";
|
||||||
$sql .= " ref_customer=".(isset($this->ref_customer) ? "'".$this->db->escape($this->ref_customer)."'" : "null").",";
|
$sql .= " ref_customer=".(isset($this->ref_customer) ? "'".$this->db->escape($this->ref_customer)."'" : "null").",";
|
||||||
@ -2751,7 +2750,7 @@ class ExpeditionLigne extends CommonObjectLine
|
|||||||
$ranktouse = $this->rang;
|
$ranktouse = $this->rang;
|
||||||
if ($ranktouse == -1)
|
if ($ranktouse == -1)
|
||||||
{
|
{
|
||||||
$rangmax = $this->line_max($fk_expedition);
|
$rangmax = $this->line_max($this->fk_expedition);
|
||||||
$ranktouse = $rangmax + 1;
|
$ranktouse = $rangmax + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -371,9 +371,9 @@ if (empty($reshook))
|
|||||||
$tva_tx = '';
|
$tva_tx = '';
|
||||||
}
|
}
|
||||||
|
|
||||||
$qty = price2num(GETPOST('qty'.$predef), 'alpha');
|
$qty = price2num(GETPOST('qty'.$predef, 'alpha'), 'MS');
|
||||||
$remise_percent = GETPOST('remise_percent'.$predef);
|
$remise_percent = GETPOST('remise_percent'.$predef);
|
||||||
$price_ht_devise = price2num(GETPOST('multicurrency_price_ht'), 'CR');
|
$price_ht_devise = price2num(GETPOST('multicurrency_price_ht'), 'CU');
|
||||||
|
|
||||||
// Extrafields
|
// Extrafields
|
||||||
$extralabelsline = $extrafields->fetch_name_optionals_label($object->table_element_line);
|
$extralabelsline = $extrafields->fetch_name_optionals_label($object->table_element_line);
|
||||||
@ -475,7 +475,7 @@ if (empty($reshook))
|
|||||||
$outputlangs = new Translate("", $conf);
|
$outputlangs = new Translate("", $conf);
|
||||||
$outputlangs->setDefaultLang($newlang);
|
$outputlangs->setDefaultLang($newlang);
|
||||||
}
|
}
|
||||||
$desc = (!empty($productsupplier->multilangs [$outputlangs->defaultlang] ["description"])) ? $productsupplier->multilangs [$outputlangs->defaultlang] ["description"] : $productsupplier->description;
|
$desc = (!empty($productsupplier->multilangs[$outputlangs->defaultlang]["description"])) ? $productsupplier->multilangs[$outputlangs->defaultlang]["description"] : $productsupplier->description;
|
||||||
} else {
|
} else {
|
||||||
$desc = $productsupplier->description;
|
$desc = $productsupplier->description;
|
||||||
}
|
}
|
||||||
@ -484,7 +484,13 @@ if (empty($reshook))
|
|||||||
$desc = $productsupplier->desc_supplier;
|
$desc = $productsupplier->desc_supplier;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (trim($product_desc) != trim($desc)) $desc = dol_concatdesc($desc, $product_desc, '', !empty($conf->global->MAIN_CHANGE_ORDER_CONCAT_DESCRIPTION));
|
//If text set in desc is the same as product descpription (as now it's preloaded) whe add it only one time
|
||||||
|
if ($product_desc==$desc && !empty($conf->global->PRODUIT_AUTOFILL_DESC)) {
|
||||||
|
$product_desc='';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($product_desc) && !empty($conf->global->MAIN_NO_CONCAT_DESCRIPTION)) $desc = $product_desc;
|
||||||
|
if (!empty($product_desc) && trim($product_desc) != trim($desc)) $desc = dol_concatdesc($desc, $product_desc, '', !empty($conf->global->MAIN_CHANGE_ORDER_CONCAT_DESCRIPTION));
|
||||||
|
|
||||||
$type = $productsupplier->type;
|
$type = $productsupplier->type;
|
||||||
if ($price_ht != '' || $price_ht_devise != '') {
|
if ($price_ht != '' || $price_ht_devise != '') {
|
||||||
|
|||||||
@ -655,19 +655,23 @@ if (empty($reshook))
|
|||||||
$ret = $extrafields->setOptionalsFromPost(null, $object);
|
$ret = $extrafields->setOptionalsFromPost(null, $object);
|
||||||
if ($ret < 0) $error++;
|
if ($ret < 0) $error++;
|
||||||
|
|
||||||
$datefacture = dol_mktime(12, 0, 0, GETPOST('remonth', 'int'), GETPOST('reday', 'int'), GETPOST('reyear', 'int'));
|
$dateinvoice = dol_mktime(12, 0, 0, GETPOST('remonth', 'int'), GETPOST('reday', 'int'), GETPOST('reyear', 'int'));
|
||||||
$datedue = dol_mktime(12, 0, 0, $_POST['echmonth'], $_POST['echday'], $_POST['echyear']);
|
$datedue = dol_mktime(12, 0, 0, $_POST['echmonth'], $_POST['echday'], $_POST['echyear']);
|
||||||
|
|
||||||
// Replacement invoice
|
// Replacement invoice
|
||||||
if ($_POST['type'] == FactureFournisseur::TYPE_REPLACEMENT)
|
if ($_POST['type'] == FactureFournisseur::TYPE_REPLACEMENT)
|
||||||
{
|
{
|
||||||
if ($datefacture == '')
|
if (empty($dateinvoice)) {
|
||||||
{
|
|
||||||
setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentities('DateInvoice')), null, 'errors');
|
setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentities('DateInvoice')), null, 'errors');
|
||||||
$action = 'create';
|
$action = 'create';
|
||||||
$_GET['socid'] = $_POST['socid'];
|
$_GET['socid'] = $_POST['socid'];
|
||||||
$error++;
|
$error++;
|
||||||
|
} elseif ($dateinvoice > (dol_now() + (empty($conf->global->INVOICE_MAX_FUTURE_DELAY) ? 0 : $conf->global->INVOICE_MAX_FUTURE_DELAY))) {
|
||||||
|
$error++;
|
||||||
|
setEventMessages($langs->trans("ErrorDateIsInFuture"), null, 'errors');
|
||||||
|
$action = 'create';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(GETPOST('fac_replacement', 'int') > 0)) {
|
if (!(GETPOST('fac_replacement', 'int') > 0)) {
|
||||||
$error++;
|
$error++;
|
||||||
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("ReplaceInvoice")), null, 'errors');
|
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("ReplaceInvoice")), null, 'errors');
|
||||||
@ -682,7 +686,7 @@ if (empty($reshook))
|
|||||||
$object->ref_supplier = GETPOST('ref_supplier', 'alpha');
|
$object->ref_supplier = GETPOST('ref_supplier', 'alpha');
|
||||||
$object->socid = GETPOST('socid', 'int');
|
$object->socid = GETPOST('socid', 'int');
|
||||||
$object->libelle = GETPOST('label', 'nohtml');
|
$object->libelle = GETPOST('label', 'nohtml');
|
||||||
$object->date = $datefacture;
|
$object->date = $dateinvoice;
|
||||||
$object->date_echeance = $datedue;
|
$object->date_echeance = $datedue;
|
||||||
$object->note_public = GETPOST('note_public', 'restricthtml');
|
$object->note_public = GETPOST('note_public', 'restricthtml');
|
||||||
$object->note_private = GETPOST('note_private', 'restricthtml');
|
$object->note_private = GETPOST('note_private', 'restricthtml');
|
||||||
@ -723,13 +727,18 @@ if (empty($reshook))
|
|||||||
$action = 'create';
|
$action = 'create';
|
||||||
$error++;
|
$error++;
|
||||||
}
|
}
|
||||||
if ($datefacture == '')
|
|
||||||
{
|
if (empty($dateinvoice)) {
|
||||||
setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentities('DateInvoice')), null, 'errors');
|
setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentities('DateInvoice')), null, 'errors');
|
||||||
$action = 'create';
|
$action = 'create';
|
||||||
$_GET['socid'] = $_POST['socid'];
|
$_GET['socid'] = $_POST['socid'];
|
||||||
$error++;
|
$error++;
|
||||||
|
} elseif ($dateinvoice > (dol_now() + (empty($conf->global->INVOICE_MAX_FUTURE_DELAY) ? 0 : $conf->global->INVOICE_MAX_FUTURE_DELAY))) {
|
||||||
|
$error++;
|
||||||
|
setEventMessages($langs->trans("ErrorDateIsInFuture"), null, 'errors');
|
||||||
|
$action = 'create';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!GETPOST('ref_supplier'))
|
if (!GETPOST('ref_supplier'))
|
||||||
{
|
{
|
||||||
setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentities('RefSupplier')), null, 'errors');
|
setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentities('RefSupplier')), null, 'errors');
|
||||||
@ -748,7 +757,7 @@ if (empty($reshook))
|
|||||||
$object->socid = GETPOST('socid', 'int');
|
$object->socid = GETPOST('socid', 'int');
|
||||||
$object->libelle = GETPOST('label', 'nohtml');
|
$object->libelle = GETPOST('label', 'nohtml');
|
||||||
$object->label = GETPOST('label', 'nohtml');
|
$object->label = GETPOST('label', 'nohtml');
|
||||||
$object->date = $datefacture;
|
$object->date = $dateinvoice;
|
||||||
$object->date_echeance = $datedue;
|
$object->date_echeance = $datedue;
|
||||||
$object->note_public = GETPOST('note_public', 'restricthtml');
|
$object->note_public = GETPOST('note_public', 'restricthtml');
|
||||||
$object->note_private = GETPOST('note_private', 'restricthtml');
|
$object->note_private = GETPOST('note_private', 'restricthtml');
|
||||||
@ -837,13 +846,17 @@ if (empty($reshook))
|
|||||||
$error++;
|
$error++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($datefacture == '')
|
if (empty($dateinvoice)) {
|
||||||
{
|
|
||||||
setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentities('DateInvoice')), null, 'errors');
|
setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentities('DateInvoice')), null, 'errors');
|
||||||
$action = 'create';
|
$action = 'create';
|
||||||
$_GET['socid'] = $_POST['socid'];
|
$_GET['socid'] = $_POST['socid'];
|
||||||
$error++;
|
$error++;
|
||||||
|
} elseif ($dateinvoice > (dol_now() + (empty($conf->global->INVOICE_MAX_FUTURE_DELAY) ? 0 : $conf->global->INVOICE_MAX_FUTURE_DELAY))) {
|
||||||
|
$error++;
|
||||||
|
setEventMessages($langs->trans("ErrorDateIsInFuture"), null, 'errors');
|
||||||
|
$action = 'create';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!GETPOST('ref_supplier'))
|
if (!GETPOST('ref_supplier'))
|
||||||
{
|
{
|
||||||
setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentities('RefSupplier')), null, 'errors');
|
setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentities('RefSupplier')), null, 'errors');
|
||||||
@ -861,7 +874,7 @@ if (empty($reshook))
|
|||||||
$object->ref_supplier = $_POST['ref_supplier'];
|
$object->ref_supplier = $_POST['ref_supplier'];
|
||||||
$object->socid = $_POST['socid'];
|
$object->socid = $_POST['socid'];
|
||||||
$object->libelle = $_POST['label'];
|
$object->libelle = $_POST['label'];
|
||||||
$object->date = $datefacture;
|
$object->date = $dateinvoice;
|
||||||
$object->date_echeance = $datedue;
|
$object->date_echeance = $datedue;
|
||||||
$object->note_public = GETPOST('note_public', 'restricthtml');
|
$object->note_public = GETPOST('note_public', 'restricthtml');
|
||||||
$object->note_private = GETPOST('note_private', 'restricthtml');
|
$object->note_private = GETPOST('note_private', 'restricthtml');
|
||||||
@ -1191,9 +1204,9 @@ if (empty($reshook))
|
|||||||
$tva_tx = '';
|
$tva_tx = '';
|
||||||
}
|
}
|
||||||
|
|
||||||
$qty = price2num(GETPOST('qty'.$predef), 'alpha');
|
$qty = price2num(GETPOST('qty'.$predef, 'alpha'), 'MS');
|
||||||
$remise_percent = GETPOST('remise_percent'.$predef);
|
$remise_percent = GETPOST('remise_percent'.$predef);
|
||||||
$price_ht_devise = price2num(GETPOST('multicurrency_price_ht'), 'CR');
|
$price_ht_devise = price2num(GETPOST('multicurrency_price_ht'), 'CU');
|
||||||
|
|
||||||
// Extrafields
|
// Extrafields
|
||||||
$extralabelsline = $extrafields->fetch_name_optionals_label($object->table_element_line);
|
$extralabelsline = $extrafields->fetch_name_optionals_label($object->table_element_line);
|
||||||
@ -1289,13 +1302,18 @@ if (empty($reshook))
|
|||||||
$desc = $productsupplier->desc_supplier;
|
$desc = $productsupplier->desc_supplier;
|
||||||
} else $desc = $productsupplier->description;
|
} else $desc = $productsupplier->description;
|
||||||
|
|
||||||
if (trim($product_desc) != trim($desc)) $desc = dol_concatdesc($desc, $product_desc, '', !empty($conf->global->MAIN_CHANGE_ORDER_CONCAT_DESCRIPTION));
|
//If text set in desc is the same as product descpription (as now it's preloaded) whe add it only one time
|
||||||
|
if ($product_desc==$desc && !empty($conf->global->PRODUIT_AUTOFILL_DESC)) {
|
||||||
|
$product_desc='';
|
||||||
|
}
|
||||||
|
if (!empty($product_desc) && !empty($conf->global->MAIN_NO_CONCAT_DESCRIPTION)) $desc = $product_desc;
|
||||||
|
if (!empty($product_desc) && trim($product_desc) != trim($desc)) $desc = dol_concatdesc($desc, $product_desc, '', !empty($conf->global->MAIN_CHANGE_ORDER_CONCAT_DESCRIPTION));
|
||||||
|
|
||||||
$type = $productsupplier->type;
|
$type = $productsupplier->type;
|
||||||
if ($price_ht != '' || $price_ht_devise != '') {
|
if (GETPOST('price_ht') != '' || GETPOST('price_ht_devise') != '') {
|
||||||
$price_base_type = 'HT';
|
$price_base_type = 'HT';
|
||||||
$pu = price2num($price_ht, 'MU');
|
$pu = price2num($price_ht, 'MU');
|
||||||
$pu_ht_devise = price2num($price_ht_devise, 'MU');
|
$pu_ht_devise = price2num($price_ht_devise, 'CU');
|
||||||
} else {
|
} else {
|
||||||
$price_base_type = ($productsupplier->fourn_price_base_type ? $productsupplier->fourn_price_base_type : 'HT');
|
$price_base_type = ($productsupplier->fourn_price_base_type ? $productsupplier->fourn_price_base_type : 'HT');
|
||||||
if (empty($object->multicurrency_code) || ($productsupplier->fourn_multicurrency_code != $object->multicurrency_code)) { // If object is in a different currency and price not in this currency
|
if (empty($object->multicurrency_code) || ($productsupplier->fourn_multicurrency_code != $object->multicurrency_code)) { // If object is in a different currency and price not in this currency
|
||||||
@ -1373,15 +1391,14 @@ if (empty($reshook))
|
|||||||
$localtax1_tx = get_localtax($tva_tx, 1, $mysoc, $object->thirdparty);
|
$localtax1_tx = get_localtax($tva_tx, 1, $mysoc, $object->thirdparty);
|
||||||
$localtax2_tx = get_localtax($tva_tx, 2, $mysoc, $object->thirdparty);
|
$localtax2_tx = get_localtax($tva_tx, 2, $mysoc, $object->thirdparty);
|
||||||
|
|
||||||
if ($price_ht !== '')
|
if (GETPOST('price_ht') != '' || GETPOST('price_ht_devise') != '') {
|
||||||
{
|
|
||||||
$pu_ht = price2num($price_ht, 'MU'); // $pu_ht must be rounded according to settings
|
$pu_ht = price2num($price_ht, 'MU'); // $pu_ht must be rounded according to settings
|
||||||
} else {
|
} else {
|
||||||
$pu_ttc = price2num(GETPOST('price_ttc'), 'MU');
|
$pu_ttc = price2num(GETPOST('price_ttc'), 'MU');
|
||||||
$pu_ht = price2num($pu_ttc / (1 + ($tva_tx / 100)), 'MU'); // $pu_ht must be rounded according to settings
|
$pu_ht = price2num($pu_ttc / (1 + ($tva_tx / 100)), 'MU'); // $pu_ht must be rounded according to settings
|
||||||
}
|
}
|
||||||
$price_base_type = 'HT';
|
$price_base_type = 'HT';
|
||||||
$pu_ht_devise = price2num($price_ht_devise, 'MU');
|
$pu_ht_devise = price2num($price_ht_devise, 'CU');
|
||||||
|
|
||||||
$result = $object->addline($product_desc, $pu_ht, $tva_tx, $localtax1_tx, $localtax2_tx, $qty, 0, $remise_percent, $date_start, $date_end, 0, $tva_npr, $price_base_type, $type, -1, 0, $array_options, $fk_unit, 0, $pu_ht_devise, $ref_supplier);
|
$result = $object->addline($product_desc, $pu_ht, $tva_tx, $localtax1_tx, $localtax2_tx, $qty, 0, $remise_percent, $date_start, $date_end, 0, $tva_npr, $price_base_type, $type, -1, 0, $array_options, $fk_unit, 0, $pu_ht_devise, $ref_supplier);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -409,6 +409,7 @@ if ($action == 'create' || $action == 'confirm_paiement' || $action == 'add_paie
|
|||||||
}
|
}
|
||||||
function callForResult(imgId)
|
function callForResult(imgId)
|
||||||
{
|
{
|
||||||
|
console.log("callForResult Calculate total of payment");
|
||||||
var json = {};
|
var json = {};
|
||||||
var form = $("#payment_form");
|
var form = $("#payment_form");
|
||||||
|
|
||||||
@ -445,6 +446,7 @@ if ($action == 'create' || $action == 'confirm_paiement' || $action == 'add_paie
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
callForResult();
|
||||||
$("#payment_form").find("input.amount").change(function() {
|
$("#payment_form").find("input.amount").change(function() {
|
||||||
callForResult();
|
callForResult();
|
||||||
});
|
});
|
||||||
@ -690,10 +692,10 @@ if ($action == 'create' || $action == 'confirm_paiement' || $action == 'add_paie
|
|||||||
if (!empty($conf->use_javascript_ajax))
|
if (!empty($conf->use_javascript_ajax))
|
||||||
print img_picto("Auto fill", 'rightarrow', "class='AutoFillAmout' data-rowname='".$namef."' data-value='".($sign * $remaintopay)."'");
|
print img_picto("Auto fill", 'rightarrow', "class='AutoFillAmout' data-rowname='".$namef."' data-value='".($sign * $remaintopay)."'");
|
||||||
print '<input type="hidden" class="remain" name="'.$nameRemain.'" value="'.$remaintopay.'">';
|
print '<input type="hidden" class="remain" name="'.$nameRemain.'" value="'.$remaintopay.'">';
|
||||||
print '<input type="text" size="8" class="amount" name="'.$namef.'" value="'.dol_escape_htmltag(GETPOST($namef)).'">';
|
print '<input type="text" size="8" class="amount" name="'.$namef.'" value="'.dol_escape_htmltag(GETPOST($namef)).'">'; // class is requied to be used by javascript callForResult();
|
||||||
} else {
|
} else {
|
||||||
print '<input type="text" size="8" name="'.$namef.'_disabled" value="'.dol_escape_htmltag(GETPOST($namef)).'" disabled>';
|
print '<input type="text" size="8" name="'.$namef.'_disabled" value="'.dol_escape_htmltag(GETPOST($namef)).'" disabled>';
|
||||||
print '<input type="hidden" name="'.$namef.'" value="'.dol_escape_htmltag(GETPOST($namef)).'">';
|
print '<input type="hidden" class="amount" name="'.$namef.'" value="'.dol_escape_htmltag(GETPOST($namef)).'">'; // class is requied to be used by javascript callForResult();
|
||||||
}
|
}
|
||||||
print "</td>";
|
print "</td>";
|
||||||
|
|
||||||
|
|||||||
@ -820,6 +820,7 @@ IMG;
|
|||||||
// Export to PDF using LibreOffice
|
// Export to PDF using LibreOffice
|
||||||
if ($conf->global->MAIN_ODT_AS_PDF == 'libreoffice')
|
if ($conf->global->MAIN_ODT_AS_PDF == 'libreoffice')
|
||||||
{
|
{
|
||||||
|
// Install prerequisites: apt install soffice libreoffice-common libreoffice-writer
|
||||||
// using windows libreoffice that must be in path
|
// using windows libreoffice that must be in path
|
||||||
// using linux/mac libreoffice that must be in path
|
// using linux/mac libreoffice that must be in path
|
||||||
// Note PHP Config "fastcgi.impersonate=0" must set to 0 - Default is 1
|
// Note PHP Config "fastcgi.impersonate=0" must set to 0 - Default is 1
|
||||||
@ -856,7 +857,7 @@ IMG;
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// deprecated old method
|
// deprecated old method using odt2pdf.sh (native, jodconverter, ...)
|
||||||
$tmpname=preg_replace('/\.odt/i', '', $name);
|
$tmpname=preg_replace('/\.odt/i', '', $name);
|
||||||
|
|
||||||
if (!empty($conf->global->MAIN_DOL_SCRIPTS_ROOT))
|
if (!empty($conf->global->MAIN_DOL_SCRIPTS_ROOT))
|
||||||
|
|||||||
@ -145,4 +145,4 @@ insert into llx_c_action_trigger (code,label,description,elementtype,rang) value
|
|||||||
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('TASK_CREATE','Task created','Executed when a project task is created','project',150);
|
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('TASK_CREATE','Task created','Executed when a project task is created','project',150);
|
||||||
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('TASK_MODIFY','Task modified','Executed when a project task is modified','project',151);
|
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('TASK_MODIFY','Task modified','Executed when a project task is modified','project',151);
|
||||||
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('TASK_DELETE','Task deleted','Executed when a project task is deleted','project',152);
|
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('TASK_DELETE','Task deleted','Executed when a project task is deleted','project',152);
|
||||||
|
insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('ACTION_CREATE','Action added','Executed when an action is added to the agenda','agenda',700);
|
||||||
|
|||||||
@ -39,7 +39,19 @@ UPDATE llx_adherent SET ref = rowid WHERE ref = '' or ref IS NULL;
|
|||||||
ALTER TABLE llx_adherent MODIFY COLUMN ref varchar(30) NOT NULL;
|
ALTER TABLE llx_adherent MODIFY COLUMN ref varchar(30) NOT NULL;
|
||||||
ALTER TABLE llx_adherent ADD UNIQUE INDEX uk_adherent_ref (ref, entity);
|
ALTER TABLE llx_adherent ADD UNIQUE INDEX uk_adherent_ref (ref, entity);
|
||||||
|
|
||||||
|
ALTER TABLE llx_societe ADD COLUMN accountancy_code_sell varchar(32) AFTER webservices_key;
|
||||||
|
ALTER TABLE llx_societe ADD COLUMN accountancy_code_buy varchar(32) AFTER accountancy_code_sell;
|
||||||
|
|
||||||
ALTER TABLE llx_bank_account ADD COLUMN ics varchar(32) NULL;
|
ALTER TABLE llx_bank_account ADD COLUMN ics varchar(32) NULL;
|
||||||
ALTER TABLE llx_bank_account ADD COLUMN ics_transfer varchar(32) NULL;
|
ALTER TABLE llx_bank_account ADD COLUMN ics_transfer varchar(32) NULL;
|
||||||
|
|
||||||
ALTER TABLE llx_facture MODIFY COLUMN date_valid DATETIME NULL DEFAULT NULL;
|
ALTER TABLE llx_facture MODIFY COLUMN date_valid DATETIME NULL DEFAULT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE llx_website ADD COLUMN lastaccess datetime NULL;
|
||||||
|
ALTER TABLE llx_website ADD COLUMN pageviews_month BIGINT UNSIGNED DEFAULT 0;
|
||||||
|
ALTER TABLE llx_website ADD COLUMN pageviews_total BIGINT UNSIGNED DEFAULT 0;
|
||||||
|
|
||||||
|
ALTER TABLE llx_propal ADD COLUMN fk_warehouse integer DEFAULT NULL AFTER fk_shipping_method;
|
||||||
|
ALTER TABLE llx_propal ADD CONSTRAINT llx_propal_fk_warehouse FOREIGN KEY (fk_warehouse) REFERENCES llx_entrepot(rowid);
|
||||||
|
ALTER TABLE llx_propal ADD INDEX idx_propal_fk_warehouse(fk_warehouse);
|
||||||
|
|
||||||
|
|||||||
@ -28,9 +28,11 @@ ALTER TABLE llx_propal ADD INDEX idx_propal_fk_user_cloture (fk_user_cloture);
|
|||||||
ALTER TABLE llx_propal ADD INDEX idx_propal_fk_projet (fk_projet);
|
ALTER TABLE llx_propal ADD INDEX idx_propal_fk_projet (fk_projet);
|
||||||
ALTER TABLE llx_propal ADD INDEX idx_propal_fk_account(fk_account);
|
ALTER TABLE llx_propal ADD INDEX idx_propal_fk_account(fk_account);
|
||||||
ALTER TABLE llx_propal ADD INDEX idx_propal_fk_currency(fk_currency);
|
ALTER TABLE llx_propal ADD INDEX idx_propal_fk_currency(fk_currency);
|
||||||
|
ALTER TABLE llx_propal ADD INDEX idx_propal_fk_warehouse(fk_warehouse);
|
||||||
|
|
||||||
ALTER TABLE llx_propal ADD CONSTRAINT fk_propal_fk_soc FOREIGN KEY (fk_soc) REFERENCES llx_societe (rowid);
|
ALTER TABLE llx_propal ADD CONSTRAINT fk_propal_fk_soc FOREIGN KEY (fk_soc) REFERENCES llx_societe (rowid);
|
||||||
ALTER TABLE llx_propal ADD CONSTRAINT fk_propal_fk_user_author FOREIGN KEY (fk_user_author) REFERENCES llx_user (rowid);
|
ALTER TABLE llx_propal ADD CONSTRAINT fk_propal_fk_user_author FOREIGN KEY (fk_user_author) REFERENCES llx_user (rowid);
|
||||||
ALTER TABLE llx_propal ADD CONSTRAINT fk_propal_fk_user_valid FOREIGN KEY (fk_user_valid) REFERENCES llx_user (rowid);
|
ALTER TABLE llx_propal ADD CONSTRAINT fk_propal_fk_user_valid FOREIGN KEY (fk_user_valid) REFERENCES llx_user (rowid);
|
||||||
ALTER TABLE llx_propal ADD CONSTRAINT fk_propal_fk_user_cloture FOREIGN KEY (fk_user_cloture) REFERENCES llx_user (rowid);
|
ALTER TABLE llx_propal ADD CONSTRAINT fk_propal_fk_user_cloture FOREIGN KEY (fk_user_cloture) REFERENCES llx_user (rowid);
|
||||||
ALTER TABLE llx_propal ADD CONSTRAINT fk_propal_fk_projet FOREIGN KEY (fk_projet) REFERENCES llx_projet (rowid);
|
ALTER TABLE llx_propal ADD CONSTRAINT fk_propal_fk_projet FOREIGN KEY (fk_projet) REFERENCES llx_projet (rowid);
|
||||||
|
ALTER TABLE llx_propal ADD CONSTRAINT llx_propal_fk_warehouse FOREIGN KEY (fk_warehouse) REFERENCES llx_entrepot(rowid);
|
||||||
|
|||||||
@ -66,6 +66,7 @@ create table llx_propal
|
|||||||
|
|
||||||
date_livraison date DEFAULT NULL, -- delivery date
|
date_livraison date DEFAULT NULL, -- delivery date
|
||||||
fk_shipping_method integer, -- shipping method id
|
fk_shipping_method integer, -- shipping method id
|
||||||
|
fk_warehouse integer DEFAULT NULL, -- warehouse id
|
||||||
fk_availability integer NULL,
|
fk_availability integer NULL,
|
||||||
fk_input_reason integer,
|
fk_input_reason integer,
|
||||||
fk_incoterms integer, -- for incoterms
|
fk_incoterms integer, -- for incoterms
|
||||||
|
|||||||
@ -116,6 +116,9 @@ create table llx_societe
|
|||||||
webservices_url varchar(255), -- supplier webservice url
|
webservices_url varchar(255), -- supplier webservice url
|
||||||
webservices_key varchar(128), -- supplier webservice key
|
webservices_key varchar(128), -- supplier webservice key
|
||||||
|
|
||||||
|
accountancy_code_sell varchar(32), -- Selling accountancy code
|
||||||
|
accountancy_code_buy varchar(32), -- Buying accountancy code
|
||||||
|
|
||||||
tms timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, -- last modification date
|
tms timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, -- last modification date
|
||||||
datec datetime, -- creation date
|
datec datetime, -- creation date
|
||||||
fk_user_creat integer NULL, -- utilisateur qui a cree l'info
|
fk_user_creat integer NULL, -- utilisateur qui a cree l'info
|
||||||
|
|||||||
@ -36,6 +36,9 @@ CREATE TABLE llx_website
|
|||||||
fk_user_modif integer,
|
fk_user_modif integer,
|
||||||
date_creation datetime,
|
date_creation datetime,
|
||||||
position integer DEFAULT 0,
|
position integer DEFAULT 0,
|
||||||
|
lastaccess datetime NULL,
|
||||||
|
pageviews_month BIGINT UNSIGNED DEFAULT 0,
|
||||||
|
pageviews_total BIGINT UNSIGNED DEFAULT 0,
|
||||||
tms timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
tms timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||||
import_key varchar(14) -- import key
|
import_key varchar(14) -- import key
|
||||||
) ENGINE=innodb;
|
) ENGINE=innodb;
|
||||||
|
|||||||
@ -48,6 +48,7 @@ CountriesExceptMe=All countries except %s
|
|||||||
AccountantFiles=Export source documents
|
AccountantFiles=Export source documents
|
||||||
ExportAccountingSourceDocHelp=With this tool, you can export the source events (list and PDFs) that were used to generate your accountancy. To export your journals, use the menu entry %s - %s.
|
ExportAccountingSourceDocHelp=With this tool, you can export the source events (list and PDFs) that were used to generate your accountancy. To export your journals, use the menu entry %s - %s.
|
||||||
VueByAccountAccounting=View by accounting account
|
VueByAccountAccounting=View by accounting account
|
||||||
|
VueBySubAccountAccounting=View by accounting subaccount
|
||||||
|
|
||||||
MainAccountForCustomersNotDefined=Main accounting account for customers not defined in setup
|
MainAccountForCustomersNotDefined=Main accounting account for customers not defined in setup
|
||||||
MainAccountForSuppliersNotDefined=Main accounting account for vendors not defined in setup
|
MainAccountForSuppliersNotDefined=Main accounting account for vendors not defined in setup
|
||||||
@ -144,7 +145,7 @@ NotVentilatedinAccount=Not bound to the accounting account
|
|||||||
XLineSuccessfullyBinded=%s products/services successfully bound to an accounting account
|
XLineSuccessfullyBinded=%s products/services successfully bound to an accounting account
|
||||||
XLineFailedToBeBinded=%s products/services were not bound to any accounting account
|
XLineFailedToBeBinded=%s products/services were not bound to any accounting account
|
||||||
|
|
||||||
ACCOUNTING_LIMIT_LIST_VENTILATION=Number of elements to bind shown by page (maximum recommended: 50)
|
ACCOUNTING_LIMIT_LIST_VENTILATION=Maximum number of lines on list and bind page (recommended: 50)
|
||||||
ACCOUNTING_LIST_SORT_VENTILATION_TODO=Begin the sorting of the page "Binding to do" by the most recent elements
|
ACCOUNTING_LIST_SORT_VENTILATION_TODO=Begin the sorting of the page "Binding to do" by the most recent elements
|
||||||
ACCOUNTING_LIST_SORT_VENTILATION_DONE=Begin the sorting of the page "Binding done" by the most recent elements
|
ACCOUNTING_LIST_SORT_VENTILATION_DONE=Begin the sorting of the page "Binding done" by the most recent elements
|
||||||
|
|
||||||
@ -198,7 +199,8 @@ Docdate=Date
|
|||||||
Docref=Reference
|
Docref=Reference
|
||||||
LabelAccount=Label account
|
LabelAccount=Label account
|
||||||
LabelOperation=Label operation
|
LabelOperation=Label operation
|
||||||
Sens=Sens
|
Sens=Direction
|
||||||
|
AccountingDirectionHelp=For an accounting account of a customer, use Credit to record a payment you received<br>For an accounting account of a supplier, use Debit to record a payment you make
|
||||||
LetteringCode=Lettering code
|
LetteringCode=Lettering code
|
||||||
Lettering=Lettering
|
Lettering=Lettering
|
||||||
Codejournal=Journal
|
Codejournal=Journal
|
||||||
@ -206,7 +208,8 @@ JournalLabel=Journal label
|
|||||||
NumPiece=Piece number
|
NumPiece=Piece number
|
||||||
TransactionNumShort=Num. transaction
|
TransactionNumShort=Num. transaction
|
||||||
AccountingCategory=Personalized groups
|
AccountingCategory=Personalized groups
|
||||||
GroupByAccountAccounting=Group by accounting account
|
GroupByAccountAccounting=Group by general ledger account
|
||||||
|
GroupBySubAccountAccounting=Group by subledger account
|
||||||
AccountingAccountGroupsDesc=You can define here some groups of accounting account. They will be used for personalized accounting reports.
|
AccountingAccountGroupsDesc=You can define here some groups of accounting account. They will be used for personalized accounting reports.
|
||||||
ByAccounts=By accounts
|
ByAccounts=By accounts
|
||||||
ByPredefinedAccountGroups=By predefined groups
|
ByPredefinedAccountGroups=By predefined groups
|
||||||
@ -248,7 +251,7 @@ PaymentsNotLinkedToProduct=Payment not linked to any product / service
|
|||||||
OpeningBalance=Opening balance
|
OpeningBalance=Opening balance
|
||||||
ShowOpeningBalance=Show opening balance
|
ShowOpeningBalance=Show opening balance
|
||||||
HideOpeningBalance=Hide opening balance
|
HideOpeningBalance=Hide opening balance
|
||||||
ShowSubtotalByGroup=Show subtotal by group
|
ShowSubtotalByGroup=Show subtotal by level
|
||||||
|
|
||||||
Pcgtype=Group of account
|
Pcgtype=Group of account
|
||||||
PcgtypeDesc=Group of account are used as predefined 'filter' and 'grouping' criteria for some accounting reports. For example, 'INCOME' or 'EXPENSE' are used as groups for accounting accounts of products to build the expense/income report.
|
PcgtypeDesc=Group of account are used as predefined 'filter' and 'grouping' criteria for some accounting reports. For example, 'INCOME' or 'EXPENSE' are used as groups for accounting accounts of products to build the expense/income report.
|
||||||
@ -271,11 +274,13 @@ DescVentilExpenseReport=Consult here the list of expense report lines bound (or
|
|||||||
DescVentilExpenseReportMore=If you setup accounting account on type of expense report lines, the application will be able to make all the binding between your expense report lines and the accounting account of your chart of accounts, just in one click with the button <strong>"%s"</strong>. If account was not set on fees dictionary or if you still have some lines not bound to any account, you will have to make a manual binding from the menu "<strong>%s</strong>".
|
DescVentilExpenseReportMore=If you setup accounting account on type of expense report lines, the application will be able to make all the binding between your expense report lines and the accounting account of your chart of accounts, just in one click with the button <strong>"%s"</strong>. If account was not set on fees dictionary or if you still have some lines not bound to any account, you will have to make a manual binding from the menu "<strong>%s</strong>".
|
||||||
DescVentilDoneExpenseReport=Consult here the list of the lines of expenses reports and their fees accounting account
|
DescVentilDoneExpenseReport=Consult here the list of the lines of expenses reports and their fees accounting account
|
||||||
|
|
||||||
|
Closure=Annual closure
|
||||||
DescClosure=Consult here the number of movements by month who are not validated & fiscal years already open
|
DescClosure=Consult here the number of movements by month who are not validated & fiscal years already open
|
||||||
OverviewOfMovementsNotValidated=Step 1/ Overview of movements not validated. (Necessary to close a fiscal year)
|
OverviewOfMovementsNotValidated=Step 1/ Overview of movements not validated. (Necessary to close a fiscal year)
|
||||||
|
AllMovementsWereRecordedAsValidated=All movements were recorded as validated
|
||||||
|
NotAllMovementsCouldBeRecordedAsValidated=Not all movements could be recorded as validated
|
||||||
ValidateMovements=Validate movements
|
ValidateMovements=Validate movements
|
||||||
DescValidateMovements=Any modification or deletion of writing, lettering and deletes will be prohibited. All entries for an exercise must be validated otherwise closing will not be possible
|
DescValidateMovements=Any modification or deletion of writing, lettering and deletes will be prohibited. All entries for an exercise must be validated otherwise closing will not be possible
|
||||||
SelectMonthAndValidate=Select month and validate movements
|
|
||||||
|
|
||||||
ValidateHistory=Bind Automatically
|
ValidateHistory=Bind Automatically
|
||||||
AutomaticBindingDone=Automatic binding done
|
AutomaticBindingDone=Automatic binding done
|
||||||
@ -293,6 +298,7 @@ Accounted=Accounted in ledger
|
|||||||
NotYetAccounted=Not yet accounted in ledger
|
NotYetAccounted=Not yet accounted in ledger
|
||||||
ShowTutorial=Show Tutorial
|
ShowTutorial=Show Tutorial
|
||||||
NotReconciled=Not reconciled
|
NotReconciled=Not reconciled
|
||||||
|
WarningRecordWithoutSubledgerAreExcluded=Warning, all operations without subledger account defined are filtered and excluded from this view
|
||||||
|
|
||||||
## Admin
|
## Admin
|
||||||
BindingOptions=Binding options
|
BindingOptions=Binding options
|
||||||
@ -337,6 +343,7 @@ Modelcsv_LDCompta10=Export for LD Compta (v10 & higher)
|
|||||||
Modelcsv_openconcerto=Export for OpenConcerto (Test)
|
Modelcsv_openconcerto=Export for OpenConcerto (Test)
|
||||||
Modelcsv_configurable=Export CSV Configurable
|
Modelcsv_configurable=Export CSV Configurable
|
||||||
Modelcsv_FEC=Export FEC
|
Modelcsv_FEC=Export FEC
|
||||||
|
Modelcsv_FEC2=Export FEC (With dates generation writing / document reversed)
|
||||||
Modelcsv_Sage50_Swiss=Export for Sage 50 Switzerland
|
Modelcsv_Sage50_Swiss=Export for Sage 50 Switzerland
|
||||||
Modelcsv_winfic=Export Winfic - eWinfic - WinSis Compta
|
Modelcsv_winfic=Export Winfic - eWinfic - WinSis Compta
|
||||||
Modelcsv_Gestinumv3=Export for Gestinum (v3)
|
Modelcsv_Gestinumv3=Export for Gestinum (v3)
|
||||||
|
|||||||
@ -56,6 +56,8 @@ GUISetup=Display
|
|||||||
SetupArea=Setup
|
SetupArea=Setup
|
||||||
UploadNewTemplate=Upload new template(s)
|
UploadNewTemplate=Upload new template(s)
|
||||||
FormToTestFileUploadForm=Form to test file upload (according to setup)
|
FormToTestFileUploadForm=Form to test file upload (according to setup)
|
||||||
|
ModuleMustBeEnabled=The module/application <b>%s</b> must be enabled
|
||||||
|
ModuleIsEnabled=The module/application <b>%s</b> has been enabled
|
||||||
IfModuleEnabled=Note: yes is effective only if module <b>%s</b> is enabled
|
IfModuleEnabled=Note: yes is effective only if module <b>%s</b> is enabled
|
||||||
RemoveLock=Remove/rename file <b>%s</b> if it exists, to allow usage of the Update/Install tool.
|
RemoveLock=Remove/rename file <b>%s</b> if it exists, to allow usage of the Update/Install tool.
|
||||||
RestoreLock=Restore file <b>%s</b>, with read permission only, to disable any further use of the Update/Install tool.
|
RestoreLock=Restore file <b>%s</b>, with read permission only, to disable any further use of the Update/Install tool.
|
||||||
@ -85,7 +87,6 @@ ShowPreview=Show preview
|
|||||||
ShowHideDetails=Show-Hide details
|
ShowHideDetails=Show-Hide details
|
||||||
PreviewNotAvailable=Preview not available
|
PreviewNotAvailable=Preview not available
|
||||||
ThemeCurrentlyActive=Theme currently active
|
ThemeCurrentlyActive=Theme currently active
|
||||||
CurrentTimeZone=TimeZone PHP (server)
|
|
||||||
MySQLTimeZone=TimeZone MySql (database)
|
MySQLTimeZone=TimeZone MySql (database)
|
||||||
TZHasNoEffect=Dates are stored and returned by database server as if they were kept as submitted string. The timezone has effect only when using the UNIX_TIMESTAMP function (that should not be used by Dolibarr, so database TZ should have no effect, even if changed after data was entered).
|
TZHasNoEffect=Dates are stored and returned by database server as if they were kept as submitted string. The timezone has effect only when using the UNIX_TIMESTAMP function (that should not be used by Dolibarr, so database TZ should have no effect, even if changed after data was entered).
|
||||||
Space=Space
|
Space=Space
|
||||||
@ -153,8 +154,8 @@ SystemToolsAreaDesc=This area provides administration functions. Use the menu to
|
|||||||
Purge=Purge
|
Purge=Purge
|
||||||
PurgeAreaDesc=This page allows you to delete all files generated or stored by Dolibarr (temporary files or all files in <b>%s</b> directory). Using this feature is not normally necessary. It is provided as a workaround for users whose Dolibarr is hosted by a provider that does not offer permissions to delete files generated by the web server.
|
PurgeAreaDesc=This page allows you to delete all files generated or stored by Dolibarr (temporary files or all files in <b>%s</b> directory). Using this feature is not normally necessary. It is provided as a workaround for users whose Dolibarr is hosted by a provider that does not offer permissions to delete files generated by the web server.
|
||||||
PurgeDeleteLogFile=Delete log files, including <b>%s</b> defined for Syslog module (no risk of losing data)
|
PurgeDeleteLogFile=Delete log files, including <b>%s</b> defined for Syslog module (no risk of losing data)
|
||||||
PurgeDeleteTemporaryFiles=Delete all temporary files (no risk of losing data). Note: Deletion is done only if the temp directory was created 24 hours ago.
|
PurgeDeleteTemporaryFiles=Delete all log and temporary files (no risk of losing data). Note: Deletion of temporary files is done only if the temp directory was created more than 24 hours ago.
|
||||||
PurgeDeleteTemporaryFilesShort=Delete temporary files
|
PurgeDeleteTemporaryFilesShort=Delete log and temporary files
|
||||||
PurgeDeleteAllFilesInDocumentsDir=Delete all files in directory: <b>%s</b>.<br>This will delete all generated documents related to elements (third parties, invoices etc...), files uploaded into the ECM module, database backup dumps and temporary files.
|
PurgeDeleteAllFilesInDocumentsDir=Delete all files in directory: <b>%s</b>.<br>This will delete all generated documents related to elements (third parties, invoices etc...), files uploaded into the ECM module, database backup dumps and temporary files.
|
||||||
PurgeRunNow=Purge now
|
PurgeRunNow=Purge now
|
||||||
PurgeNothingToDelete=No directory or files to delete.
|
PurgeNothingToDelete=No directory or files to delete.
|
||||||
@ -256,6 +257,7 @@ ReferencedPreferredPartners=Preferred Partners
|
|||||||
OtherResources=Other resources
|
OtherResources=Other resources
|
||||||
ExternalResources=External Resources
|
ExternalResources=External Resources
|
||||||
SocialNetworks=Social Networks
|
SocialNetworks=Social Networks
|
||||||
|
SocialNetworkId=Social Network ID
|
||||||
ForDocumentationSeeWiki=For user or developer documentation (Doc, FAQs...),<br>take a look at the Dolibarr Wiki:<br><b><a href="%s" target="_blank">%s</a></b>
|
ForDocumentationSeeWiki=For user or developer documentation (Doc, FAQs...),<br>take a look at the Dolibarr Wiki:<br><b><a href="%s" target="_blank">%s</a></b>
|
||||||
ForAnswersSeeForum=For any other questions/help, you can use the Dolibarr forum:<br><b><a href="%s" target="_blank">%s</a></b>
|
ForAnswersSeeForum=For any other questions/help, you can use the Dolibarr forum:<br><b><a href="%s" target="_blank">%s</a></b>
|
||||||
HelpCenterDesc1=Here are some resources for getting help and support with Dolibarr.
|
HelpCenterDesc1=Here are some resources for getting help and support with Dolibarr.
|
||||||
@ -375,7 +377,7 @@ ExamplesWithCurrentSetup=Examples with current configuration
|
|||||||
ListOfDirectories=List of OpenDocument templates directories
|
ListOfDirectories=List of OpenDocument templates directories
|
||||||
ListOfDirectoriesForModelGenODT=List of directories containing templates files with OpenDocument format.<br><br>Put here full path of directories.<br>Add a carriage return between eah directory.<br>To add a directory of the GED module, add here <b>DOL_DATA_ROOT/ecm/yourdirectoryname</b>.<br><br>Files in those directories must end with <b>.odt</b> or <b>.ods</b>.
|
ListOfDirectoriesForModelGenODT=List of directories containing templates files with OpenDocument format.<br><br>Put here full path of directories.<br>Add a carriage return between eah directory.<br>To add a directory of the GED module, add here <b>DOL_DATA_ROOT/ecm/yourdirectoryname</b>.<br><br>Files in those directories must end with <b>.odt</b> or <b>.ods</b>.
|
||||||
NumberOfModelFilesFound=Number of ODT/ODS template files found in these directories
|
NumberOfModelFilesFound=Number of ODT/ODS template files found in these directories
|
||||||
ExampleOfDirectoriesForModelGen=Examples of syntax:<br>c:\\mydir<br>/home/mydir<br>DOL_DATA_ROOT/ecm/ecmdir
|
ExampleOfDirectoriesForModelGen=Examples of syntax:<br>c:\\myapp\\mydocumentdir\\mysubdir<br>/home/myapp/mydocumentdir/mysubdir<br>DOL_DATA_ROOT/ecm/ecmdir
|
||||||
FollowingSubstitutionKeysCanBeUsed=<br>To know how to create your odt document templates, before storing them in those directories, read wiki documentation:
|
FollowingSubstitutionKeysCanBeUsed=<br>To know how to create your odt document templates, before storing them in those directories, read wiki documentation:
|
||||||
FullListOnOnlineDocumentation=http://wiki.dolibarr.org/index.php/Create_an_ODT_document_template
|
FullListOnOnlineDocumentation=http://wiki.dolibarr.org/index.php/Create_an_ODT_document_template
|
||||||
FirstnameNamePosition=Position of Name/Lastname
|
FirstnameNamePosition=Position of Name/Lastname
|
||||||
@ -406,7 +408,7 @@ UrlGenerationParameters=Parameters to secure URLs
|
|||||||
SecurityTokenIsUnique=Use a unique securekey parameter for each URL
|
SecurityTokenIsUnique=Use a unique securekey parameter for each URL
|
||||||
EnterRefToBuildUrl=Enter reference for object %s
|
EnterRefToBuildUrl=Enter reference for object %s
|
||||||
GetSecuredUrl=Get calculated URL
|
GetSecuredUrl=Get calculated URL
|
||||||
ButtonHideUnauthorized=Hide buttons for non-admin users for unauthorized actions instead of showing greyed disabled buttons
|
ButtonHideUnauthorized=Hide unauthorized action buttons also for internal users (just greyed otherwise)
|
||||||
OldVATRates=Old VAT rate
|
OldVATRates=Old VAT rate
|
||||||
NewVATRates=New VAT rate
|
NewVATRates=New VAT rate
|
||||||
PriceBaseTypeToChange=Modify on prices with base reference value defined on
|
PriceBaseTypeToChange=Modify on prices with base reference value defined on
|
||||||
@ -1689,7 +1691,7 @@ NotTopTreeMenuPersonalized=Personalized menus not linked to a top menu entry
|
|||||||
NewMenu=New menu
|
NewMenu=New menu
|
||||||
MenuHandler=Menu handler
|
MenuHandler=Menu handler
|
||||||
MenuModule=Source module
|
MenuModule=Source module
|
||||||
HideUnauthorizedMenu= Hide unauthorized menus (gray)
|
HideUnauthorizedMenu=Hide unauthorized menus also for internal users (just greyed otherwise)
|
||||||
DetailId=Id menu
|
DetailId=Id menu
|
||||||
DetailMenuHandler=Menu handler where to show new menu
|
DetailMenuHandler=Menu handler where to show new menu
|
||||||
DetailMenuModule=Module name if menu entry come from a module
|
DetailMenuModule=Module name if menu entry come from a module
|
||||||
@ -1983,11 +1985,12 @@ EMailHost=Host of email IMAP server
|
|||||||
MailboxSourceDirectory=Mailbox source directory
|
MailboxSourceDirectory=Mailbox source directory
|
||||||
MailboxTargetDirectory=Mailbox target directory
|
MailboxTargetDirectory=Mailbox target directory
|
||||||
EmailcollectorOperations=Operations to do by collector
|
EmailcollectorOperations=Operations to do by collector
|
||||||
|
EmailcollectorOperationsDesc=Operations are executed from top to bottom order
|
||||||
MaxEmailCollectPerCollect=Max number of emails collected per collect
|
MaxEmailCollectPerCollect=Max number of emails collected per collect
|
||||||
CollectNow=Collect now
|
CollectNow=Collect now
|
||||||
ConfirmCloneEmailCollector=Are you sure you want to clone the Email collector %s ?
|
ConfirmCloneEmailCollector=Are you sure you want to clone the Email collector %s ?
|
||||||
DateLastCollectResult=Date latest collect tried
|
DateLastCollectResult=Date of latest collect try
|
||||||
DateLastcollectResultOk=Date latest collect successfull
|
DateLastcollectResultOk=Date of latest collect success
|
||||||
LastResult=Latest result
|
LastResult=Latest result
|
||||||
EmailCollectorConfirmCollectTitle=Email collect confirmation
|
EmailCollectorConfirmCollectTitle=Email collect confirmation
|
||||||
EmailCollectorConfirmCollect=Do you want to run the collection for this collector now ?
|
EmailCollectorConfirmCollect=Do you want to run the collection for this collector now ?
|
||||||
@ -2005,7 +2008,7 @@ WithDolTrackingID=Message from a conversation initiated by a first email sent fr
|
|||||||
WithoutDolTrackingID=Message from a conversation initiated by a first email NOT sent from Dolibarr
|
WithoutDolTrackingID=Message from a conversation initiated by a first email NOT sent from Dolibarr
|
||||||
WithDolTrackingIDInMsgId=Message sent from Dolibarr
|
WithDolTrackingIDInMsgId=Message sent from Dolibarr
|
||||||
WithoutDolTrackingIDInMsgId=Message NOT sent from Dolibarr
|
WithoutDolTrackingIDInMsgId=Message NOT sent from Dolibarr
|
||||||
CreateCandidature=Create candidature
|
CreateCandidature=Create job application
|
||||||
FormatZip=Zip
|
FormatZip=Zip
|
||||||
MainMenuCode=Menu entry code (mainmenu)
|
MainMenuCode=Menu entry code (mainmenu)
|
||||||
ECMAutoTree=Show automatic ECM tree
|
ECMAutoTree=Show automatic ECM tree
|
||||||
@ -2083,3 +2086,7 @@ CountryIfSpecificToOneCountry=Country (if specific to a given country)
|
|||||||
YouMayFindSecurityAdviceHere=You may find security advisory here
|
YouMayFindSecurityAdviceHere=You may find security advisory here
|
||||||
ModuleActivatedMayExposeInformation=This module may expose sensitive data. If you don't need it, disable it.
|
ModuleActivatedMayExposeInformation=This module may expose sensitive data. If you don't need it, disable it.
|
||||||
ModuleActivatedDoNotUseInProduction=A module designed for the development has been enabled. Do not enable it on a production environment.
|
ModuleActivatedDoNotUseInProduction=A module designed for the development has been enabled. Do not enable it on a production environment.
|
||||||
|
CombinationsSeparator=Separator character for product combinations
|
||||||
|
SeeLinkToOnlineDocumentation=See link to online documention on top menu for examples
|
||||||
|
SHOW_SUBPRODUCT_REF_IN_PDF=If the feature "%s" of module <b>%s</b> is used, show details of subproducts of a kit on PDF.
|
||||||
|
AskThisIDToYourBank=Contact your bank to get this ID
|
||||||
|
|||||||
@ -173,8 +173,8 @@ SEPAMandate=SEPA mandate
|
|||||||
YourSEPAMandate=Your SEPA mandate
|
YourSEPAMandate=Your SEPA mandate
|
||||||
FindYourSEPAMandate=This is your SEPA mandate to authorize our company to make direct debit order to your bank. Return it signed (scan of the signed document) or send it by mail to
|
FindYourSEPAMandate=This is your SEPA mandate to authorize our company to make direct debit order to your bank. Return it signed (scan of the signed document) or send it by mail to
|
||||||
AutoReportLastAccountStatement=Automatically fill the field 'number of bank statement' with last statement number when making reconciliation
|
AutoReportLastAccountStatement=Automatically fill the field 'number of bank statement' with last statement number when making reconciliation
|
||||||
CashControl=POS cash fence
|
CashControl=POS cash desk control
|
||||||
NewCashFence=New cash fence
|
NewCashFence=New cash desk closing
|
||||||
BankColorizeMovement=Colorize movements
|
BankColorizeMovement=Colorize movements
|
||||||
BankColorizeMovementDesc=If this function is enable, you can choose specific background color for debit or credit movements
|
BankColorizeMovementDesc=If this function is enable, you can choose specific background color for debit or credit movements
|
||||||
BankColorizeMovementName1=Background color for debit movement
|
BankColorizeMovementName1=Background color for debit movement
|
||||||
|
|||||||
@ -35,7 +35,7 @@ logDON_DELETE=Donation logical deletion
|
|||||||
logMEMBER_SUBSCRIPTION_CREATE=Member subscription created
|
logMEMBER_SUBSCRIPTION_CREATE=Member subscription created
|
||||||
logMEMBER_SUBSCRIPTION_MODIFY=Member subscription modified
|
logMEMBER_SUBSCRIPTION_MODIFY=Member subscription modified
|
||||||
logMEMBER_SUBSCRIPTION_DELETE=Member subscription logical deletion
|
logMEMBER_SUBSCRIPTION_DELETE=Member subscription logical deletion
|
||||||
logCASHCONTROL_VALIDATE=Cash fence recording
|
logCASHCONTROL_VALIDATE=Cash desk closing recording
|
||||||
BlockedLogBillDownload=Customer invoice download
|
BlockedLogBillDownload=Customer invoice download
|
||||||
BlockedLogBillPreview=Customer invoice preview
|
BlockedLogBillPreview=Customer invoice preview
|
||||||
BlockedlogInfoDialog=Log Details
|
BlockedlogInfoDialog=Log Details
|
||||||
|
|||||||
@ -46,9 +46,12 @@ BoxTitleLastModifiedDonations=Latest %s modified donations
|
|||||||
BoxTitleLastModifiedExpenses=Latest %s modified expense reports
|
BoxTitleLastModifiedExpenses=Latest %s modified expense reports
|
||||||
BoxTitleLatestModifiedBoms=Latest %s modified BOMs
|
BoxTitleLatestModifiedBoms=Latest %s modified BOMs
|
||||||
BoxTitleLatestModifiedMos=Latest %s modified Manufacturing Orders
|
BoxTitleLatestModifiedMos=Latest %s modified Manufacturing Orders
|
||||||
|
BoxTitleLastOutstandingBillReached=Customers with maximum outstanding exceeded
|
||||||
BoxGlobalActivity=Global activity (invoices, proposals, orders)
|
BoxGlobalActivity=Global activity (invoices, proposals, orders)
|
||||||
BoxGoodCustomers=Good customers
|
BoxGoodCustomers=Good customers
|
||||||
BoxTitleGoodCustomers=%s Good customers
|
BoxTitleGoodCustomers=%s Good customers
|
||||||
|
BoxScheduledJobs=Scheduled jobs
|
||||||
|
BoxTitleFunnelOfProspection=Lead funnel
|
||||||
FailedToRefreshDataInfoNotUpToDate=Failed to refresh RSS flux. Latest successful refresh date: %s
|
FailedToRefreshDataInfoNotUpToDate=Failed to refresh RSS flux. Latest successful refresh date: %s
|
||||||
LastRefreshDate=Latest refresh date
|
LastRefreshDate=Latest refresh date
|
||||||
NoRecordedBookmarks=No bookmarks defined.
|
NoRecordedBookmarks=No bookmarks defined.
|
||||||
@ -102,5 +105,7 @@ SuspenseAccountNotDefined=Suspense account isn't defined
|
|||||||
BoxLastCustomerShipments=Last customer shipments
|
BoxLastCustomerShipments=Last customer shipments
|
||||||
BoxTitleLastCustomerShipments=Latest %s customer shipments
|
BoxTitleLastCustomerShipments=Latest %s customer shipments
|
||||||
NoRecordedShipments=No recorded customer shipment
|
NoRecordedShipments=No recorded customer shipment
|
||||||
|
BoxCustomersOutstandingBillReached=Customers with oustanding limit reached
|
||||||
# Pages
|
# Pages
|
||||||
AccountancyHome=Accountancy
|
AccountancyHome=Accountancy
|
||||||
|
ValidatedProjects=Validated projects
|
||||||
|
|||||||
@ -49,8 +49,8 @@ Footer=Footer
|
|||||||
AmountAtEndOfPeriod=Amount at end of period (day, month or year)
|
AmountAtEndOfPeriod=Amount at end of period (day, month or year)
|
||||||
TheoricalAmount=Theorical amount
|
TheoricalAmount=Theorical amount
|
||||||
RealAmount=Real amount
|
RealAmount=Real amount
|
||||||
CashFence=Cash fence
|
CashFence=Cash desk closing
|
||||||
CashFenceDone=Cash fence done for the period
|
CashFenceDone=Cash desk closing done for the period
|
||||||
NbOfInvoices=Nb of invoices
|
NbOfInvoices=Nb of invoices
|
||||||
Paymentnumpad=Type of Pad to enter payment
|
Paymentnumpad=Type of Pad to enter payment
|
||||||
Numberspad=Numbers Pad
|
Numberspad=Numbers Pad
|
||||||
@ -99,8 +99,9 @@ CashDeskRefNumberingModules=Numbering module for POS sales
|
|||||||
CashDeskGenericMaskCodes6 = <br><b>{TN}</b> tag is used to add the terminal number
|
CashDeskGenericMaskCodes6 = <br><b>{TN}</b> tag is used to add the terminal number
|
||||||
TakeposGroupSameProduct=Group same products lines
|
TakeposGroupSameProduct=Group same products lines
|
||||||
StartAParallelSale=Start a new parallel sale
|
StartAParallelSale=Start a new parallel sale
|
||||||
ControlCashOpening=Control cash box at opening POS
|
SaleStartedAt=Sale started at %s
|
||||||
CloseCashFence=Close cash fence
|
ControlCashOpening=Control cash popup at opening POS
|
||||||
|
CloseCashFence=Close cash desk control
|
||||||
CashReport=Cash report
|
CashReport=Cash report
|
||||||
MainPrinterToUse=Main printer to use
|
MainPrinterToUse=Main printer to use
|
||||||
OrderPrinterToUse=Order printer to use
|
OrderPrinterToUse=Order printer to use
|
||||||
@ -122,3 +123,4 @@ GiftReceipt=Gift receipt
|
|||||||
ModuleReceiptPrinterMustBeEnabled=Module Receipt printer must have been enabled first
|
ModuleReceiptPrinterMustBeEnabled=Module Receipt printer must have been enabled first
|
||||||
AllowDelayedPayment=Allow delayed payment
|
AllowDelayedPayment=Allow delayed payment
|
||||||
PrintPaymentMethodOnReceipts=Print payment method on tickets|receipts
|
PrintPaymentMethodOnReceipts=Print payment method on tickets|receipts
|
||||||
|
WeighingScale=Weighing scale
|
||||||
|
|||||||
@ -19,6 +19,7 @@ ProjectsCategoriesArea=Projects tags/categories area
|
|||||||
UsersCategoriesArea=Users tags/categories area
|
UsersCategoriesArea=Users tags/categories area
|
||||||
SubCats=Sub-categories
|
SubCats=Sub-categories
|
||||||
CatList=List of tags/categories
|
CatList=List of tags/categories
|
||||||
|
CatListAll=List of tags/categories (all types)
|
||||||
NewCategory=New tag/category
|
NewCategory=New tag/category
|
||||||
ModifCat=Modify tag/category
|
ModifCat=Modify tag/category
|
||||||
CatCreated=Tag/category created
|
CatCreated=Tag/category created
|
||||||
@ -65,16 +66,22 @@ UsersCategoriesShort=Users tags/categories
|
|||||||
StockCategoriesShort=Warehouse tags/categories
|
StockCategoriesShort=Warehouse tags/categories
|
||||||
ThisCategoryHasNoItems=This category does not contain any items.
|
ThisCategoryHasNoItems=This category does not contain any items.
|
||||||
CategId=Tag/category id
|
CategId=Tag/category id
|
||||||
CatSupList=List of vendor tags/categories
|
ParentCategory=Parent tag/category
|
||||||
CatCusList=List of customer/prospect tags/categories
|
ParentCategoryLabel=Label of parent tag/category
|
||||||
|
CatSupList=List of vendors tags/categories
|
||||||
|
CatCusList=List of customers/prospects tags/categories
|
||||||
CatProdList=List of products tags/categories
|
CatProdList=List of products tags/categories
|
||||||
CatMemberList=List of members tags/categories
|
CatMemberList=List of members tags/categories
|
||||||
CatContactList=List of contact tags/categories
|
CatContactList=List of contacts tags/categories
|
||||||
CatSupLinks=Links between suppliers and tags/categories
|
CatProjectsList=List of projects tags/categories
|
||||||
|
CatUsersList=List of users tags/categories
|
||||||
|
CatSupLinks=Links between vendors and tags/categories
|
||||||
CatCusLinks=Links between customers/prospects and tags/categories
|
CatCusLinks=Links between customers/prospects and tags/categories
|
||||||
CatContactsLinks=Links between contacts/addresses and tags/categories
|
CatContactsLinks=Links between contacts/addresses and tags/categories
|
||||||
CatProdLinks=Links between products/services and tags/categories
|
CatProdLinks=Links between products/services and tags/categories
|
||||||
CatProJectLinks=Links between projects and tags/categories
|
CatMembersLinks=Links between members and tags/categories
|
||||||
|
CatProjectsLinks=Links between projects and tags/categories
|
||||||
|
CatUsersLinks=Links between users and tags/categories
|
||||||
DeleteFromCat=Remove from tags/category
|
DeleteFromCat=Remove from tags/category
|
||||||
ExtraFieldsCategories=Complementary attributes
|
ExtraFieldsCategories=Complementary attributes
|
||||||
CategoriesSetup=Tags/categories setup
|
CategoriesSetup=Tags/categories setup
|
||||||
|
|||||||
@ -358,7 +358,7 @@ VATIntraCheckableOnEUSite=Check the intra-Community VAT ID on the European Commi
|
|||||||
VATIntraManualCheck=You can also check manually on the European Commission website <a href="%s" target="_blank">%s</a>
|
VATIntraManualCheck=You can also check manually on the European Commission website <a href="%s" target="_blank">%s</a>
|
||||||
ErrorVATCheckMS_UNAVAILABLE=Check not possible. Check service is not provided by the member state (%s).
|
ErrorVATCheckMS_UNAVAILABLE=Check not possible. Check service is not provided by the member state (%s).
|
||||||
NorProspectNorCustomer=Not prospect, nor customer
|
NorProspectNorCustomer=Not prospect, nor customer
|
||||||
JuridicalStatus=Legal Entity Type
|
JuridicalStatus=Business entity type
|
||||||
Workforce=Workforce
|
Workforce=Workforce
|
||||||
Staff=Employees
|
Staff=Employees
|
||||||
ProspectLevelShort=Potential
|
ProspectLevelShort=Potential
|
||||||
|
|||||||
@ -111,7 +111,7 @@ Refund=Refund
|
|||||||
SocialContributionsPayments=Social/fiscal taxes payments
|
SocialContributionsPayments=Social/fiscal taxes payments
|
||||||
ShowVatPayment=Show VAT payment
|
ShowVatPayment=Show VAT payment
|
||||||
TotalToPay=Total to pay
|
TotalToPay=Total to pay
|
||||||
BalanceVisibilityDependsOnSortAndFilters=Balance is visible in this list only if table is sorted ascending on %s and filtered for 1 bank account
|
BalanceVisibilityDependsOnSortAndFilters=Balance is visible in this list only if table is sorted on %s and filtered on 1 bank account (with no other filters)
|
||||||
CustomerAccountancyCode=Customer accounting code
|
CustomerAccountancyCode=Customer accounting code
|
||||||
SupplierAccountancyCode=Vendor accounting code
|
SupplierAccountancyCode=Vendor accounting code
|
||||||
CustomerAccountancyCodeShort=Cust. account. code
|
CustomerAccountancyCodeShort=Cust. account. code
|
||||||
@ -140,7 +140,7 @@ ConfirmDeleteSocialContribution=Are you sure you want to delete this social/fisc
|
|||||||
ExportDataset_tax_1=Social and fiscal taxes and payments
|
ExportDataset_tax_1=Social and fiscal taxes and payments
|
||||||
CalcModeVATDebt=Mode <b>%sVAT on commitment accounting%s</b>.
|
CalcModeVATDebt=Mode <b>%sVAT on commitment accounting%s</b>.
|
||||||
CalcModeVATEngagement=Mode <b>%sVAT on incomes-expenses%s</b>.
|
CalcModeVATEngagement=Mode <b>%sVAT on incomes-expenses%s</b>.
|
||||||
CalcModeDebt=Analysis of known recorded invoices even if they are not yet accounted in ledger.
|
CalcModeDebt=Analysis of known recorded documents even if they are not yet accounted in ledger.
|
||||||
CalcModeEngagement=Analysis of known recorded payments, even if they are not yet accounted in Ledger.
|
CalcModeEngagement=Analysis of known recorded payments, even if they are not yet accounted in Ledger.
|
||||||
CalcModeBookkeeping=Analysis of data journalized in Bookkeeping Ledger table.
|
CalcModeBookkeeping=Analysis of data journalized in Bookkeeping Ledger table.
|
||||||
CalcModeLT1= Mode <b>%sRE on customer invoices - suppliers invoices%s</b>
|
CalcModeLT1= Mode <b>%sRE on customer invoices - suppliers invoices%s</b>
|
||||||
@ -154,9 +154,9 @@ AnnualSummaryInputOutputMode=Balance of income and expenses, annual summary
|
|||||||
AnnualByCompanies=Balance of income and expenses, by predefined groups of account
|
AnnualByCompanies=Balance of income and expenses, by predefined groups of account
|
||||||
AnnualByCompaniesDueDebtMode=Balance of income and expenses, detail by predefined groups, mode <b>%sClaims-Debts%s</b> said <b>Commitment accounting</b>.
|
AnnualByCompaniesDueDebtMode=Balance of income and expenses, detail by predefined groups, mode <b>%sClaims-Debts%s</b> said <b>Commitment accounting</b>.
|
||||||
AnnualByCompaniesInputOutputMode=Balance of income and expenses, detail by predefined groups, mode <b>%sIncomes-Expenses%s</b> said <b>cash accounting</b>.
|
AnnualByCompaniesInputOutputMode=Balance of income and expenses, detail by predefined groups, mode <b>%sIncomes-Expenses%s</b> said <b>cash accounting</b>.
|
||||||
SeeReportInInputOutputMode=See %sanalysis of payments%s for a calculation on actual payments made even if they are not yet accounted in Ledger.
|
SeeReportInInputOutputMode=See <b>%sanalysis of payments%s</b> for a calculation based on <b>recorded payments</b> made even if they are not yet accounted in Ledger
|
||||||
SeeReportInDueDebtMode=See %sanalysis of invoices%s for a calculation based on known recorded invoices even if they are not yet accounted in Ledger.
|
SeeReportInDueDebtMode=See <b>%sanalysis of recorded documents%s</b> for a calculation based on known <b>recorded documents</b> even if they are not yet accounted in Ledger
|
||||||
SeeReportInBookkeepingMode=See <b>%sBookeeping report%s</b> for a calculation on <b>Bookkeeping Ledger table</b>
|
SeeReportInBookkeepingMode=See <b>%sanalysis of bookeeping ledger table%s</b> for a report based on <b>Bookkeeping Ledger table</b>
|
||||||
RulesAmountWithTaxIncluded=- Amounts shown are with all taxes included
|
RulesAmountWithTaxIncluded=- Amounts shown are with all taxes included
|
||||||
RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the billing date of invoices and on the due date for expenses or tax payments. For salaries defined with Salary module, the value date of payment is used.
|
RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.<br>- It is based on the billing date of invoices and on the due date for expenses or tax payments. For salaries defined with Salary module, the value date of payment is used.
|
||||||
RulesResultInOut=- It includes the real payments made on invoices, expenses, VAT and salaries. <br>- It is based on the payment dates of the invoices, expenses, VAT and salaries. The donation date for donation.
|
RulesResultInOut=- It includes the real payments made on invoices, expenses, VAT and salaries. <br>- It is based on the payment dates of the invoices, expenses, VAT and salaries. The donation date for donation.
|
||||||
@ -169,12 +169,15 @@ RulesResultBookkeepingPersonalized=It show record in your Ledger with accounting
|
|||||||
SeePageForSetup=See menu <a href="%s">%s</a> for setup
|
SeePageForSetup=See menu <a href="%s">%s</a> for setup
|
||||||
DepositsAreNotIncluded=- Down payment invoices are not included
|
DepositsAreNotIncluded=- Down payment invoices are not included
|
||||||
DepositsAreIncluded=- Down payment invoices are included
|
DepositsAreIncluded=- Down payment invoices are included
|
||||||
|
LT1ReportByMonth=Tax 2 report by month
|
||||||
|
LT2ReportByMonth=Tax 3 report by month
|
||||||
LT1ReportByCustomers=Report tax 2 by third party
|
LT1ReportByCustomers=Report tax 2 by third party
|
||||||
LT2ReportByCustomers=Report tax 3 by third party
|
LT2ReportByCustomers=Report tax 3 by third party
|
||||||
LT1ReportByCustomersES=Report by third party RE
|
LT1ReportByCustomersES=Report by third party RE
|
||||||
LT2ReportByCustomersES=Report by third party IRPF
|
LT2ReportByCustomersES=Report by third party IRPF
|
||||||
VATReport=Sale tax report
|
VATReport=Sale tax report
|
||||||
VATReportByPeriods=Sale tax report by period
|
VATReportByPeriods=Sale tax report by period
|
||||||
|
VATReportByMonth=Sale tax report by month
|
||||||
VATReportByRates=Sale tax report by rates
|
VATReportByRates=Sale tax report by rates
|
||||||
VATReportByThirdParties=Sale tax report by third parties
|
VATReportByThirdParties=Sale tax report by third parties
|
||||||
VATReportByCustomers=Sale tax report by customer
|
VATReportByCustomers=Sale tax report by customer
|
||||||
|
|||||||
@ -7,13 +7,14 @@ Permission23103 = Delete Scheduled job
|
|||||||
Permission23104 = Execute Scheduled job
|
Permission23104 = Execute Scheduled job
|
||||||
# Admin
|
# Admin
|
||||||
CronSetup=Scheduled job management setup
|
CronSetup=Scheduled job management setup
|
||||||
URLToLaunchCronJobs=URL to check and launch qualified cron jobs
|
URLToLaunchCronJobs=URL to check and launch qualified cron jobs from a browser
|
||||||
OrToLaunchASpecificJob=Or to check and launch a specific job
|
OrToLaunchASpecificJob=Or to check and launch a specific job from a browser
|
||||||
KeyForCronAccess=Security key for URL to launch cron jobs
|
KeyForCronAccess=Security key for URL to launch cron jobs
|
||||||
FileToLaunchCronJobs=Command line to check and launch qualified cron jobs
|
FileToLaunchCronJobs=Command line to check and launch qualified cron jobs
|
||||||
CronExplainHowToRunUnix=On Unix environment you should use the following crontab entry to run the command line each 5 minutes
|
CronExplainHowToRunUnix=On Unix environment you should use the following crontab entry to run the command line each 5 minutes
|
||||||
CronExplainHowToRunWin=On Microsoft(tm) Windows environment you can use Scheduled Task tools to run the command line each 5 minutes
|
CronExplainHowToRunWin=On Microsoft(tm) Windows environment you can use Scheduled Task tools to run the command line each 5 minutes
|
||||||
CronMethodDoesNotExists=Class %s does not contains any method %s
|
CronMethodDoesNotExists=Class %s does not contains any method %s
|
||||||
|
CronMethodNotAllowed=Method %s of class %s is in blacklist of forbidden methods
|
||||||
CronJobDefDesc=Cron job profiles are defined into the module descriptor file. When module is activated, they are loaded and available so you can administer the jobs from the admin tools menu %s.
|
CronJobDefDesc=Cron job profiles are defined into the module descriptor file. When module is activated, they are loaded and available so you can administer the jobs from the admin tools menu %s.
|
||||||
CronJobProfiles=List of predefined cron job profiles
|
CronJobProfiles=List of predefined cron job profiles
|
||||||
# Menu
|
# Menu
|
||||||
@ -46,6 +47,7 @@ CronNbRun=Number of launches
|
|||||||
CronMaxRun=Maximum number of launches
|
CronMaxRun=Maximum number of launches
|
||||||
CronEach=Every
|
CronEach=Every
|
||||||
JobFinished=Job launched and finished
|
JobFinished=Job launched and finished
|
||||||
|
Scheduled=Scheduled
|
||||||
#Page card
|
#Page card
|
||||||
CronAdd= Add jobs
|
CronAdd= Add jobs
|
||||||
CronEvery=Execute job each
|
CronEvery=Execute job each
|
||||||
@ -56,7 +58,7 @@ CronNote=Comment
|
|||||||
CronFieldMandatory=Fields %s is mandatory
|
CronFieldMandatory=Fields %s is mandatory
|
||||||
CronErrEndDateStartDt=End date cannot be before start date
|
CronErrEndDateStartDt=End date cannot be before start date
|
||||||
StatusAtInstall=Status at module installation
|
StatusAtInstall=Status at module installation
|
||||||
CronStatusActiveBtn=Enable
|
CronStatusActiveBtn=Schedule
|
||||||
CronStatusInactiveBtn=Disable
|
CronStatusInactiveBtn=Disable
|
||||||
CronTaskInactive=This job is disabled
|
CronTaskInactive=This job is disabled
|
||||||
CronId=Id
|
CronId=Id
|
||||||
@ -82,3 +84,8 @@ MakeLocalDatabaseDumpShort=Local database backup
|
|||||||
MakeLocalDatabaseDump=Create a local database dump. Parameters are: compression ('gz' or 'bz' or 'none'), backup type ('mysql', 'pgsql', 'auto'), 1, 'auto' or filename to build, number of backup files to keep
|
MakeLocalDatabaseDump=Create a local database dump. Parameters are: compression ('gz' or 'bz' or 'none'), backup type ('mysql', 'pgsql', 'auto'), 1, 'auto' or filename to build, number of backup files to keep
|
||||||
WarningCronDelayed=Attention, for performance purpose, whatever is next date of execution of enabled jobs, your jobs may be delayed to a maximum of %s hours, before being run.
|
WarningCronDelayed=Attention, for performance purpose, whatever is next date of execution of enabled jobs, your jobs may be delayed to a maximum of %s hours, before being run.
|
||||||
DATAPOLICYJob=Data cleaner and anonymizer
|
DATAPOLICYJob=Data cleaner and anonymizer
|
||||||
|
JobXMustBeEnabled=Job %s must be enabled
|
||||||
|
# Cron Boxes
|
||||||
|
LastExecutedScheduledJob=Last executed scheduled job
|
||||||
|
NextScheduledJobExecute=Next scheduled job to execute
|
||||||
|
NumberScheduledJobError=Number of scheduled jobs in error
|
||||||
|
|||||||
@ -5,8 +5,10 @@ NoErrorCommitIsDone=No error, we commit
|
|||||||
# Errors
|
# Errors
|
||||||
ErrorButCommitIsDone=Errors found but we validate despite this
|
ErrorButCommitIsDone=Errors found but we validate despite this
|
||||||
ErrorBadEMail=Email %s is wrong
|
ErrorBadEMail=Email %s is wrong
|
||||||
|
ErrorBadMXDomain=Email %s seems wrong (domain has no valid MX record)
|
||||||
ErrorBadUrl=Url %s is wrong
|
ErrorBadUrl=Url %s is wrong
|
||||||
ErrorBadValueForParamNotAString=Bad value for your parameter. It appends generally when translation is missing.
|
ErrorBadValueForParamNotAString=Bad value for your parameter. It appends generally when translation is missing.
|
||||||
|
ErrorRefAlreadyExists=Reference <b>%s</b> already exists.
|
||||||
ErrorLoginAlreadyExists=Login %s already exists.
|
ErrorLoginAlreadyExists=Login %s already exists.
|
||||||
ErrorGroupAlreadyExists=Group %s already exists.
|
ErrorGroupAlreadyExists=Group %s already exists.
|
||||||
ErrorRecordNotFound=Record not found.
|
ErrorRecordNotFound=Record not found.
|
||||||
@ -48,6 +50,7 @@ ErrorFieldsRequired=Some required fields were not filled.
|
|||||||
ErrorSubjectIsRequired=The email topic is required
|
ErrorSubjectIsRequired=The email topic is required
|
||||||
ErrorFailedToCreateDir=Failed to create a directory. Check that Web server user has permissions to write into Dolibarr documents directory. If parameter <b>safe_mode</b> is enabled on this PHP, check that Dolibarr php files owns to web server user (or group).
|
ErrorFailedToCreateDir=Failed to create a directory. Check that Web server user has permissions to write into Dolibarr documents directory. If parameter <b>safe_mode</b> is enabled on this PHP, check that Dolibarr php files owns to web server user (or group).
|
||||||
ErrorNoMailDefinedForThisUser=No mail defined for this user
|
ErrorNoMailDefinedForThisUser=No mail defined for this user
|
||||||
|
ErrorSetupOfEmailsNotComplete=Setup of emails is not complete
|
||||||
ErrorFeatureNeedJavascript=This feature need javascript to be activated to work. Change this in setup - display.
|
ErrorFeatureNeedJavascript=This feature need javascript to be activated to work. Change this in setup - display.
|
||||||
ErrorTopMenuMustHaveAParentWithId0=A menu of type 'Top' can't have a parent menu. Put 0 in parent menu or choose a menu of type 'Left'.
|
ErrorTopMenuMustHaveAParentWithId0=A menu of type 'Top' can't have a parent menu. Put 0 in parent menu or choose a menu of type 'Left'.
|
||||||
ErrorLeftMenuMustHaveAParentId=A menu of type 'Left' must have a parent id.
|
ErrorLeftMenuMustHaveAParentId=A menu of type 'Left' must have a parent id.
|
||||||
@ -75,7 +78,7 @@ ErrorExportDuplicateProfil=This profile name already exists for this export set.
|
|||||||
ErrorLDAPSetupNotComplete=Dolibarr-LDAP matching is not complete.
|
ErrorLDAPSetupNotComplete=Dolibarr-LDAP matching is not complete.
|
||||||
ErrorLDAPMakeManualTest=A .ldif file has been generated in directory %s. Try to load it manually from command line to have more information on errors.
|
ErrorLDAPMakeManualTest=A .ldif file has been generated in directory %s. Try to load it manually from command line to have more information on errors.
|
||||||
ErrorCantSaveADoneUserWithZeroPercentage=Can't save an action with "status not started" if field "done by" is also filled.
|
ErrorCantSaveADoneUserWithZeroPercentage=Can't save an action with "status not started" if field "done by" is also filled.
|
||||||
ErrorRefAlreadyExists=Ref used for creation already exists.
|
ErrorRefAlreadyExists=Reference <b>%s</b> already exists.
|
||||||
ErrorPleaseTypeBankTransactionReportName=Please enter the bank statement name where the entry has to be reported (Format YYYYMM or YYYYMMDD)
|
ErrorPleaseTypeBankTransactionReportName=Please enter the bank statement name where the entry has to be reported (Format YYYYMM or YYYYMMDD)
|
||||||
ErrorRecordHasChildren=Failed to delete record since it has some child records.
|
ErrorRecordHasChildren=Failed to delete record since it has some child records.
|
||||||
ErrorRecordHasAtLeastOneChildOfType=Object has at least one child of type %s
|
ErrorRecordHasAtLeastOneChildOfType=Object has at least one child of type %s
|
||||||
@ -216,7 +219,7 @@ ErrorChooseBetweenFreeEntryOrPredefinedProduct=You must choose if article is a p
|
|||||||
ErrorDiscountLargerThanRemainToPaySplitItBefore=The discount you try to apply is larger than remain to pay. Split the discount in 2 smaller discounts before.
|
ErrorDiscountLargerThanRemainToPaySplitItBefore=The discount you try to apply is larger than remain to pay. Split the discount in 2 smaller discounts before.
|
||||||
ErrorFileNotFoundWithSharedLink=File was not found. May be the share key was modified or file was removed recently.
|
ErrorFileNotFoundWithSharedLink=File was not found. May be the share key was modified or file was removed recently.
|
||||||
ErrorProductBarCodeAlreadyExists=The product barcode %s already exists on another product reference.
|
ErrorProductBarCodeAlreadyExists=The product barcode %s already exists on another product reference.
|
||||||
ErrorNoteAlsoThatSubProductCantBeFollowedByLot=Note also that using virtual product to have auto increase/decrease of subproducts is not possible when at least one subproduct (or subproduct of subproducts) needs a serial/lot number.
|
ErrorNoteAlsoThatSubProductCantBeFollowedByLot=Note also that using kits to have auto increase/decrease of subproducts is not possible when at least one subproduct (or subproduct of subproducts) needs a serial/lot number.
|
||||||
ErrorDescRequiredForFreeProductLines=Description is mandatory for lines with free product
|
ErrorDescRequiredForFreeProductLines=Description is mandatory for lines with free product
|
||||||
ErrorAPageWithThisNameOrAliasAlreadyExists=The page/container <strong>%s</strong> has the same name or alternative alias that the one your try to use
|
ErrorAPageWithThisNameOrAliasAlreadyExists=The page/container <strong>%s</strong> has the same name or alternative alias that the one your try to use
|
||||||
ErrorDuringChartLoad=Error when loading chart of accounts. If few accounts were not loaded, you can still enter them manually.
|
ErrorDuringChartLoad=Error when loading chart of accounts. If few accounts were not loaded, you can still enter them manually.
|
||||||
@ -243,6 +246,16 @@ ErrorReplaceStringEmpty=Error, the string to replace into is empty
|
|||||||
ErrorProductNeedBatchNumber=Error, product '<b>%s</b>' need a lot/serial number
|
ErrorProductNeedBatchNumber=Error, product '<b>%s</b>' need a lot/serial number
|
||||||
ErrorProductDoesNotNeedBatchNumber=Error, product '<b>%s</b>' does not accept a lot/serial number
|
ErrorProductDoesNotNeedBatchNumber=Error, product '<b>%s</b>' does not accept a lot/serial number
|
||||||
ErrorFailedToReadObject=Error, failed to read object of type <b>%s</b>
|
ErrorFailedToReadObject=Error, failed to read object of type <b>%s</b>
|
||||||
|
ErrorParameterMustBeEnabledToAllwoThisFeature=Error, parameter <b>%s</b> must be enabled into <b>conf/conf.php<b> to allow use of Command Line Interface by the internal job scheduler
|
||||||
|
ErrorLoginDateValidity=Error, this login is outside the validity date range
|
||||||
|
ErrorValueLength=Length of field '<b>%s</b>' must be higher than '<b>%s</b>'
|
||||||
|
ErrorReservedKeyword=The word '<b>%s</b>' is a reserved keyword
|
||||||
|
ErrorNotAvailableWithThisDistribution=Not available with this distribution
|
||||||
|
ErrorPublicInterfaceNotEnabled=Public interface was not enabled
|
||||||
|
ErrorLanguageRequiredIfPageIsTranslationOfAnother=The language of new page must be defined if it is set as a translation of another page
|
||||||
|
ErrorLanguageMustNotBeSourceLanguageIfPageIsTranslationOfAnother=The language of new page must not be the source language if it is set as a translation of another page
|
||||||
|
ErrorAParameterIsRequiredForThisOperation=A parameter is mandatory for this operation
|
||||||
|
|
||||||
# Warnings
|
# Warnings
|
||||||
WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup.
|
WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup.
|
||||||
WarningPasswordSetWithNoAccount=A password was set for this member. However, no user account was created. So this password is stored but can't be used to login to Dolibarr. It may be used by an external module/interface but if you don't need to define any login nor password for a member, you can disable option "Manage a login for each member" from Member module setup. If you need to manage a login but don't need any password, you can keep this field empty to avoid this warning. Note: Email can also be used as a login if the member is linked to a user.
|
WarningPasswordSetWithNoAccount=A password was set for this member. However, no user account was created. So this password is stored but can't be used to login to Dolibarr. It may be used by an external module/interface but if you don't need to define any login nor password for a member, you can disable option "Manage a login for each member" from Member module setup. If you need to manage a login but don't need any password, you can keep this field empty to avoid this warning. Note: Email can also be used as a login if the member is linked to a user.
|
||||||
@ -267,6 +280,10 @@ WarningYourLoginWasModifiedPleaseLogin=Your login was modified. For security pur
|
|||||||
WarningAnEntryAlreadyExistForTransKey=An entry already exists for the translation key for this language
|
WarningAnEntryAlreadyExistForTransKey=An entry already exists for the translation key for this language
|
||||||
WarningNumberOfRecipientIsRestrictedInMassAction=Warning, number of different recipient is limited to <b>%s</b> when using the mass actions on lists
|
WarningNumberOfRecipientIsRestrictedInMassAction=Warning, number of different recipient is limited to <b>%s</b> when using the mass actions on lists
|
||||||
WarningDateOfLineMustBeInExpenseReportRange=Warning, the date of line is not in the range of the expense report
|
WarningDateOfLineMustBeInExpenseReportRange=Warning, the date of line is not in the range of the expense report
|
||||||
|
WarningProjectDraft=Project is still in draft mode. Don't forget to validate it if you plan to use tasks.
|
||||||
WarningProjectClosed=Project is closed. You must re-open it first.
|
WarningProjectClosed=Project is closed. You must re-open it first.
|
||||||
WarningSomeBankTransactionByChequeWereRemovedAfter=Some bank transaction were removed after that the receipt including them were generated. So nb of cheques and total of receipt may differ from number and total in list.
|
WarningSomeBankTransactionByChequeWereRemovedAfter=Some bank transaction were removed after that the receipt including them were generated. So nb of cheques and total of receipt may differ from number and total in list.
|
||||||
WarningFailedToAddFileIntoDatabaseIndex=Warnin, failed to add file entry into ECM database index table
|
WarningFailedToAddFileIntoDatabaseIndex=Warning, failed to add file entry into ECM database index table
|
||||||
|
WarningTheHiddenOptionIsOn=Warning, the hidden option <b>%s</b> is on.
|
||||||
|
WarningCreateSubAccounts=Warning, you can't create directly a sub account, you must create a third party or an user and assign them an accounting code to find them in this list
|
||||||
|
WarningAvailableOnlyForHTTPSServers=Available only if using HTTPS secured connection.
|
||||||
|
|||||||
@ -133,3 +133,4 @@ KeysToUseForUpdates=Key (column) to use for <b>updating</b> existing data
|
|||||||
NbInsert=Number of inserted lines: %s
|
NbInsert=Number of inserted lines: %s
|
||||||
NbUpdate=Number of updated lines: %s
|
NbUpdate=Number of updated lines: %s
|
||||||
MultipleRecordFoundWithTheseFilters=Multiple records have been found with these filters: %s
|
MultipleRecordFoundWithTheseFilters=Multiple records have been found with these filters: %s
|
||||||
|
StocksWithBatch=Stocks and location (warehouse) of products with batch/serial number
|
||||||
|
|||||||
@ -92,6 +92,7 @@ MailingModuleDescEmailsFromUser=Emails input by user
|
|||||||
MailingModuleDescDolibarrUsers=Users with Emails
|
MailingModuleDescDolibarrUsers=Users with Emails
|
||||||
MailingModuleDescThirdPartiesByCategories=Third parties (by categories)
|
MailingModuleDescThirdPartiesByCategories=Third parties (by categories)
|
||||||
SendingFromWebInterfaceIsNotAllowed=Sending from web interface is not allowed.
|
SendingFromWebInterfaceIsNotAllowed=Sending from web interface is not allowed.
|
||||||
|
EmailCollectorFilterDesc=All filters must match to have an email being collected
|
||||||
|
|
||||||
# Libelle des modules de liste de destinataires mailing
|
# Libelle des modules de liste de destinataires mailing
|
||||||
LineInFile=Line %s in file
|
LineInFile=Line %s in file
|
||||||
@ -125,12 +126,13 @@ TagMailtoEmail=Recipient Email (including html "mailto:" link)
|
|||||||
NoEmailSentBadSenderOrRecipientEmail=No email sent. Bad sender or recipient email. Verify user profile.
|
NoEmailSentBadSenderOrRecipientEmail=No email sent. Bad sender or recipient email. Verify user profile.
|
||||||
# Module Notifications
|
# Module Notifications
|
||||||
Notifications=Notifications
|
Notifications=Notifications
|
||||||
NoNotificationsWillBeSent=No email notifications are planned for this event and company
|
NotificationsAuto=Notifications Auto.
|
||||||
ANotificationsWillBeSent=1 notification will be sent by email
|
NoNotificationsWillBeSent=No automatic email notifications are planned for this event type and company
|
||||||
SomeNotificationsWillBeSent=%s notifications will be sent by email
|
ANotificationsWillBeSent=1 automatic notification will be sent by email
|
||||||
AddNewNotification=Activate a new email notification target/event
|
SomeNotificationsWillBeSent=%s automatic notifications will be sent by email
|
||||||
ListOfActiveNotifications=List all active targets/events for email notification
|
AddNewNotification=Subscribe to a new automatic email notification (target/event)
|
||||||
ListOfNotificationsDone=List all email notifications sent
|
ListOfActiveNotifications=List all active subscriptions (targets/events) for automatic email notification
|
||||||
|
ListOfNotificationsDone=List all automatic email notifications sent
|
||||||
MailSendSetupIs=Configuration of email sending has been setup to '%s'. This mode can't be used to send mass emailing.
|
MailSendSetupIs=Configuration of email sending has been setup to '%s'. This mode can't be used to send mass emailing.
|
||||||
MailSendSetupIs2=You must first go, with an admin account, into menu %sHome - Setup - EMails%s to change parameter <strong>'%s'</strong> to use mode '%s'. With this mode, you can enter setup of the SMTP server provided by your Internet Service Provider and use Mass emailing feature.
|
MailSendSetupIs2=You must first go, with an admin account, into menu %sHome - Setup - EMails%s to change parameter <strong>'%s'</strong> to use mode '%s'. With this mode, you can enter setup of the SMTP server provided by your Internet Service Provider and use Mass emailing feature.
|
||||||
MailSendSetupIs3=If you have any questions on how to setup your SMTP server, you can ask to %s.
|
MailSendSetupIs3=If you have any questions on how to setup your SMTP server, you can ask to %s.
|
||||||
@ -140,7 +142,7 @@ UseFormatFileEmailToTarget=Imported file must have format <strong>email;name;fir
|
|||||||
UseFormatInputEmailToTarget=Enter a string with format <strong>email;name;firstname;other</strong>
|
UseFormatInputEmailToTarget=Enter a string with format <strong>email;name;firstname;other</strong>
|
||||||
MailAdvTargetRecipients=Recipients (advanced selection)
|
MailAdvTargetRecipients=Recipients (advanced selection)
|
||||||
AdvTgtTitle=Fill input fields to preselect the third parties or contacts/addresses to target
|
AdvTgtTitle=Fill input fields to preselect the third parties or contacts/addresses to target
|
||||||
AdvTgtSearchTextHelp=Use %% as wildcards. For example to find all item like <b>jean, joe, jim</b>, you can input <b>j%%</b>, you can also use ; as separator for value, and use ! for except this value. For example <b>jean;joe;jim%%;!jimo;!jima%</b> will target all jean, joe, start with jim but not jimo and not everything that starts with jima
|
AdvTgtSearchTextHelp=Use %% as wildcards. For example to find all item like <b>jean, joe, jim</b>, you can input <b>j%%</b>, you can also use ; as separator for value, and use ! for except this value. For example <b>jean;joe;jim%%;!jimo;!jima%%</b> will target all jean, joe, start with jim but not jimo and not everything that starts with jima
|
||||||
AdvTgtSearchIntHelp=Use interval to select int or float value
|
AdvTgtSearchIntHelp=Use interval to select int or float value
|
||||||
AdvTgtMinVal=Minimum value
|
AdvTgtMinVal=Minimum value
|
||||||
AdvTgtMaxVal=Maximum value
|
AdvTgtMaxVal=Maximum value
|
||||||
@ -162,13 +164,14 @@ AdvTgtCreateFilter=Create filter
|
|||||||
AdvTgtOrCreateNewFilter=Name of new filter
|
AdvTgtOrCreateNewFilter=Name of new filter
|
||||||
NoContactWithCategoryFound=No contact/address with a category found
|
NoContactWithCategoryFound=No contact/address with a category found
|
||||||
NoContactLinkedToThirdpartieWithCategoryFound=No contact/address with a category found
|
NoContactLinkedToThirdpartieWithCategoryFound=No contact/address with a category found
|
||||||
OutGoingEmailSetup=Outgoing email setup
|
OutGoingEmailSetup=Outgoing emails
|
||||||
InGoingEmailSetup=Incoming email setup
|
InGoingEmailSetup=Incoming emails
|
||||||
OutGoingEmailSetupForEmailing=Outgoing email setup (for module %s)
|
OutGoingEmailSetupForEmailing=Outgoing emails (for module %s)
|
||||||
DefaultOutgoingEmailSetup=Default outgoing email setup
|
DefaultOutgoingEmailSetup=Same configuration than the global Outgoing email setup
|
||||||
Information=Information
|
Information=Information
|
||||||
ContactsWithThirdpartyFilter=Contacts with third-party filter
|
ContactsWithThirdpartyFilter=Contacts with third-party filter
|
||||||
Unanswered=Unanswered
|
Unanswered=Unanswered
|
||||||
Answered=Answered
|
Answered=Answered
|
||||||
IsNotAnAnswer=Is not answer (initial email)
|
IsNotAnAnswer=Is not answer (initial email)
|
||||||
IsAnAnswer=Is an answer of an initial email
|
IsAnAnswer=Is an answer of an initial email
|
||||||
|
RecordCreatedByEmailCollector=Record created by the Email Collector %s from email %s
|
||||||
|
|||||||
@ -28,7 +28,9 @@ NoTemplateDefined=No template available for this email type
|
|||||||
AvailableVariables=Available substitution variables
|
AvailableVariables=Available substitution variables
|
||||||
NoTranslation=No translation
|
NoTranslation=No translation
|
||||||
Translation=Translation
|
Translation=Translation
|
||||||
|
CurrentTimeZone=TimeZone PHP (server)
|
||||||
EmptySearchString=Enter non empty search criterias
|
EmptySearchString=Enter non empty search criterias
|
||||||
|
EnterADateCriteria=Enter a date criteria
|
||||||
NoRecordFound=No record found
|
NoRecordFound=No record found
|
||||||
NoRecordDeleted=No record deleted
|
NoRecordDeleted=No record deleted
|
||||||
NotEnoughDataYet=Not enough data
|
NotEnoughDataYet=Not enough data
|
||||||
@ -85,6 +87,8 @@ FileWasNotUploaded=A file is selected for attachment but was not yet uploaded. C
|
|||||||
NbOfEntries=No. of entries
|
NbOfEntries=No. of entries
|
||||||
GoToWikiHelpPage=Read online help (Internet access needed)
|
GoToWikiHelpPage=Read online help (Internet access needed)
|
||||||
GoToHelpPage=Read help
|
GoToHelpPage=Read help
|
||||||
|
DedicatedPageAvailable=There is a dedicated help page related to your current screen
|
||||||
|
HomePage=Home Page
|
||||||
RecordSaved=Record saved
|
RecordSaved=Record saved
|
||||||
RecordDeleted=Record deleted
|
RecordDeleted=Record deleted
|
||||||
RecordGenerated=Record generated
|
RecordGenerated=Record generated
|
||||||
@ -433,6 +437,7 @@ RemainToPay=Remain to pay
|
|||||||
Module=Module/Application
|
Module=Module/Application
|
||||||
Modules=Modules/Applications
|
Modules=Modules/Applications
|
||||||
Option=Option
|
Option=Option
|
||||||
|
Filters=Filters
|
||||||
List=List
|
List=List
|
||||||
FullList=Full list
|
FullList=Full list
|
||||||
FullConversation=Full conversation
|
FullConversation=Full conversation
|
||||||
@ -671,7 +676,7 @@ SendMail=Send email
|
|||||||
Email=Email
|
Email=Email
|
||||||
NoEMail=No email
|
NoEMail=No email
|
||||||
AlreadyRead=Already read
|
AlreadyRead=Already read
|
||||||
NotRead=Not read
|
NotRead=Unread
|
||||||
NoMobilePhone=No mobile phone
|
NoMobilePhone=No mobile phone
|
||||||
Owner=Owner
|
Owner=Owner
|
||||||
FollowingConstantsWillBeSubstituted=The following constants will be replaced with the corresponding value.
|
FollowingConstantsWillBeSubstituted=The following constants will be replaced with the corresponding value.
|
||||||
@ -1107,3 +1112,8 @@ UpToDate=Up-to-date
|
|||||||
OutOfDate=Out-of-date
|
OutOfDate=Out-of-date
|
||||||
EventReminder=Event Reminder
|
EventReminder=Event Reminder
|
||||||
UpdateForAllLines=Update for all lines
|
UpdateForAllLines=Update for all lines
|
||||||
|
OnHold=On hold
|
||||||
|
AffectTag=Affect Tag
|
||||||
|
ConfirmAffectTag=Bulk Tag Affect
|
||||||
|
ConfirmAffectTagQuestion=Are you sure you want to affect tags to the %s selected record(s)?
|
||||||
|
CategTypeNotFound=No tag type found for type of records
|
||||||
|
|||||||
@ -40,6 +40,7 @@ PageForCreateEditView=PHP page to create/edit/view a record
|
|||||||
PageForAgendaTab=PHP page for event tab
|
PageForAgendaTab=PHP page for event tab
|
||||||
PageForDocumentTab=PHP page for document tab
|
PageForDocumentTab=PHP page for document tab
|
||||||
PageForNoteTab=PHP page for note tab
|
PageForNoteTab=PHP page for note tab
|
||||||
|
PageForContactTab=PHP page for contact tab
|
||||||
PathToModulePackage=Path to zip of module/application package
|
PathToModulePackage=Path to zip of module/application package
|
||||||
PathToModuleDocumentation=Path to file of module/application documentation (%s)
|
PathToModuleDocumentation=Path to file of module/application documentation (%s)
|
||||||
SpaceOrSpecialCharAreNotAllowed=Spaces or special characters are not allowed.
|
SpaceOrSpecialCharAreNotAllowed=Spaces or special characters are not allowed.
|
||||||
@ -77,7 +78,7 @@ IsAMeasure=Is a measure
|
|||||||
DirScanned=Directory scanned
|
DirScanned=Directory scanned
|
||||||
NoTrigger=No trigger
|
NoTrigger=No trigger
|
||||||
NoWidget=No widget
|
NoWidget=No widget
|
||||||
GoToApiExplorer=Go to API explorer
|
GoToApiExplorer=API explorer
|
||||||
ListOfMenusEntries=List of menu entries
|
ListOfMenusEntries=List of menu entries
|
||||||
ListOfDictionariesEntries=List of dictionaries entries
|
ListOfDictionariesEntries=List of dictionaries entries
|
||||||
ListOfPermissionsDefined=List of defined permissions
|
ListOfPermissionsDefined=List of defined permissions
|
||||||
@ -105,7 +106,7 @@ TryToUseTheModuleBuilder=If you have knowledge of SQL and PHP, you may use the n
|
|||||||
SeeTopRightMenu=See <span class="fa fa-bug"></span> on the top right menu
|
SeeTopRightMenu=See <span class="fa fa-bug"></span> on the top right menu
|
||||||
AddLanguageFile=Add language file
|
AddLanguageFile=Add language file
|
||||||
YouCanUseTranslationKey=You can use here a key that is the translation key found into language file (see tab "Languages")
|
YouCanUseTranslationKey=You can use here a key that is the translation key found into language file (see tab "Languages")
|
||||||
DropTableIfEmpty=(Delete table if empty)
|
DropTableIfEmpty=(Destroy table if empty)
|
||||||
TableDoesNotExists=The table %s does not exists
|
TableDoesNotExists=The table %s does not exists
|
||||||
TableDropped=Table %s deleted
|
TableDropped=Table %s deleted
|
||||||
InitStructureFromExistingTable=Build the structure array string of an existing table
|
InitStructureFromExistingTable=Build the structure array string of an existing table
|
||||||
@ -126,7 +127,6 @@ UseSpecificEditorURL = Use a specific editor URL
|
|||||||
UseSpecificFamily = Use a specific family
|
UseSpecificFamily = Use a specific family
|
||||||
UseSpecificAuthor = Use a specific author
|
UseSpecificAuthor = Use a specific author
|
||||||
UseSpecificVersion = Use a specific initial version
|
UseSpecificVersion = Use a specific initial version
|
||||||
ModuleMustBeEnabled=The module/application must be enabled first
|
|
||||||
IncludeRefGeneration=The reference of object must be generated automatically
|
IncludeRefGeneration=The reference of object must be generated automatically
|
||||||
IncludeRefGenerationHelp=Check this if you want to include code to manage the generation automatically of the reference
|
IncludeRefGenerationHelp=Check this if you want to include code to manage the generation automatically of the reference
|
||||||
IncludeDocGeneration=I want to generate some documents from the object
|
IncludeDocGeneration=I want to generate some documents from the object
|
||||||
@ -140,3 +140,4 @@ TypeOfFieldsHelp=Type of fields:<br>varchar(99), double(24,8), real, text, html,
|
|||||||
AsciiToHtmlConverter=Ascii to HTML converter
|
AsciiToHtmlConverter=Ascii to HTML converter
|
||||||
AsciiToPdfConverter=Ascii to PDF converter
|
AsciiToPdfConverter=Ascii to PDF converter
|
||||||
TableNotEmptyDropCanceled=Table not empty. Drop has been canceled.
|
TableNotEmptyDropCanceled=Table not empty. Drop has been canceled.
|
||||||
|
ModuleBuilderNotAllowed=The module builder is available but not allowed to your user.
|
||||||
|
|||||||
@ -5,8 +5,6 @@ Tools=Tools
|
|||||||
TMenuTools=Tools
|
TMenuTools=Tools
|
||||||
ToolsDesc=All tools not included in other menu entries are grouped here.<br>All the tools can be accessed via the left menu.
|
ToolsDesc=All tools not included in other menu entries are grouped here.<br>All the tools can be accessed via the left menu.
|
||||||
Birthday=Birthday
|
Birthday=Birthday
|
||||||
BirthdayDate=Birthday date
|
|
||||||
DateToBirth=Birth date
|
|
||||||
BirthdayAlertOn=birthday alert active
|
BirthdayAlertOn=birthday alert active
|
||||||
BirthdayAlertOff=birthday alert inactive
|
BirthdayAlertOff=birthday alert inactive
|
||||||
TransKey=Translation of the key TransKey
|
TransKey=Translation of the key TransKey
|
||||||
@ -16,6 +14,8 @@ PreviousMonthOfInvoice=Previous month (number 1-12) of invoice date
|
|||||||
TextPreviousMonthOfInvoice=Previous month (text) of invoice date
|
TextPreviousMonthOfInvoice=Previous month (text) of invoice date
|
||||||
NextMonthOfInvoice=Following month (number 1-12) of invoice date
|
NextMonthOfInvoice=Following month (number 1-12) of invoice date
|
||||||
TextNextMonthOfInvoice=Following month (text) of invoice date
|
TextNextMonthOfInvoice=Following month (text) of invoice date
|
||||||
|
PreviousMonth=Previous month
|
||||||
|
CurrentMonth=Current month
|
||||||
ZipFileGeneratedInto=Zip file generated into <b>%s</b>.
|
ZipFileGeneratedInto=Zip file generated into <b>%s</b>.
|
||||||
DocFileGeneratedInto=Doc file generated into <b>%s</b>.
|
DocFileGeneratedInto=Doc file generated into <b>%s</b>.
|
||||||
JumpToLogin=Disconnected. Go to login page...
|
JumpToLogin=Disconnected. Go to login page...
|
||||||
@ -99,6 +99,7 @@ PredefinedMailContentSendShipping=__(Hello)__\n\nPlease find shipping __REF__ at
|
|||||||
PredefinedMailContentSendFichInter=__(Hello)__\n\nPlease find intervention __REF__ attached\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
|
PredefinedMailContentSendFichInter=__(Hello)__\n\nPlease find intervention __REF__ attached\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
|
||||||
PredefinedMailContentLink=You can click on the link below to make your payment if it is not already done.\n\n%s\n\n
|
PredefinedMailContentLink=You can click on the link below to make your payment if it is not already done.\n\n%s\n\n
|
||||||
PredefinedMailContentGeneric=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
|
PredefinedMailContentGeneric=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__
|
||||||
|
PredefinedMailContentSendActionComm=Event reminder "__EVENT_LABEL__" on __EVENT_DATE__ at __EVENT_TIME__<br><br>This is an automatic message, please do not reply.
|
||||||
DemoDesc=Dolibarr is a compact ERP/CRM supporting several business modules. A demo showcasing all modules makes no sense as this scenario never occurs (several hundred available). So, several demo profiles are available.
|
DemoDesc=Dolibarr is a compact ERP/CRM supporting several business modules. A demo showcasing all modules makes no sense as this scenario never occurs (several hundred available). So, several demo profiles are available.
|
||||||
ChooseYourDemoProfil=Choose the demo profile that best suits your needs...
|
ChooseYourDemoProfil=Choose the demo profile that best suits your needs...
|
||||||
ChooseYourDemoProfilMore=...or build your own profile<br>(manual module selection)
|
ChooseYourDemoProfilMore=...or build your own profile<br>(manual module selection)
|
||||||
@ -137,7 +138,7 @@ Right=Right
|
|||||||
CalculatedWeight=Calculated weight
|
CalculatedWeight=Calculated weight
|
||||||
CalculatedVolume=Calculated volume
|
CalculatedVolume=Calculated volume
|
||||||
Weight=Weight
|
Weight=Weight
|
||||||
WeightUnitton=tonne
|
WeightUnitton=ton
|
||||||
WeightUnitkg=kg
|
WeightUnitkg=kg
|
||||||
WeightUnitg=g
|
WeightUnitg=g
|
||||||
WeightUnitmg=mg
|
WeightUnitmg=mg
|
||||||
@ -258,6 +259,7 @@ ContactCreatedByEmailCollector=Contact/address created by email collector from e
|
|||||||
ProjectCreatedByEmailCollector=Project created by email collector from email MSGID %s
|
ProjectCreatedByEmailCollector=Project created by email collector from email MSGID %s
|
||||||
TicketCreatedByEmailCollector=Ticket created by email collector from email MSGID %s
|
TicketCreatedByEmailCollector=Ticket created by email collector from email MSGID %s
|
||||||
OpeningHoursFormatDesc=Use a - to separate opening and closing hours.<br>Use a space to enter different ranges.<br>Example: 8-12 14-18
|
OpeningHoursFormatDesc=Use a - to separate opening and closing hours.<br>Use a space to enter different ranges.<br>Example: 8-12 14-18
|
||||||
|
PrefixSession=Prefix for session ID
|
||||||
|
|
||||||
##### Export #####
|
##### Export #####
|
||||||
ExportsArea=Exports area
|
ExportsArea=Exports area
|
||||||
|
|||||||
@ -109,6 +109,7 @@ MultiPricesAbility=Multiple price segments per product/service (each customer is
|
|||||||
MultiPricesNumPrices=Number of prices
|
MultiPricesNumPrices=Number of prices
|
||||||
DefaultPriceType=Base of prices per default (with versus without tax) when adding new sale prices
|
DefaultPriceType=Base of prices per default (with versus without tax) when adding new sale prices
|
||||||
AssociatedProductsAbility=Enable Kits (set of other products)
|
AssociatedProductsAbility=Enable Kits (set of other products)
|
||||||
|
VariantsAbility=Enable Variants (variations of products, for example color, size)
|
||||||
AssociatedProducts=Kits
|
AssociatedProducts=Kits
|
||||||
AssociatedProductsNumber=Number of products composing this kit
|
AssociatedProductsNumber=Number of products composing this kit
|
||||||
ParentProductsNumber=Number of parent packaging product
|
ParentProductsNumber=Number of parent packaging product
|
||||||
@ -167,8 +168,10 @@ BuyingPrices=Buying prices
|
|||||||
CustomerPrices=Customer prices
|
CustomerPrices=Customer prices
|
||||||
SuppliersPrices=Vendor prices
|
SuppliersPrices=Vendor prices
|
||||||
SuppliersPricesOfProductsOrServices=Vendor prices (of products or services)
|
SuppliersPricesOfProductsOrServices=Vendor prices (of products or services)
|
||||||
CustomCode=Customs / Commodity / HS code
|
CustomCode=Customs|Commodity|HS code
|
||||||
CountryOrigin=Origin country
|
CountryOrigin=Origin country
|
||||||
|
RegionStateOrigin=Region origin
|
||||||
|
StateOrigin=State|Province origin
|
||||||
Nature=Nature of product (material/finished)
|
Nature=Nature of product (material/finished)
|
||||||
NatureOfProductShort=Nature of product
|
NatureOfProductShort=Nature of product
|
||||||
NatureOfProductDesc=Raw material or finished product
|
NatureOfProductDesc=Raw material or finished product
|
||||||
@ -239,7 +242,7 @@ AlwaysUseFixedPrice=Use the fixed price
|
|||||||
PriceByQuantity=Different prices by quantity
|
PriceByQuantity=Different prices by quantity
|
||||||
DisablePriceByQty=Disable prices by quantity
|
DisablePriceByQty=Disable prices by quantity
|
||||||
PriceByQuantityRange=Quantity range
|
PriceByQuantityRange=Quantity range
|
||||||
MultipriceRules=Price segment rules
|
MultipriceRules=Automatic prices for segment
|
||||||
UseMultipriceRules=Use price segment rules (defined into product module setup) to auto calculate prices of all other segments according to first segment
|
UseMultipriceRules=Use price segment rules (defined into product module setup) to auto calculate prices of all other segments according to first segment
|
||||||
PercentVariationOver=%% variation over %s
|
PercentVariationOver=%% variation over %s
|
||||||
PercentDiscountOver=%% discount over %s
|
PercentDiscountOver=%% discount over %s
|
||||||
|
|||||||
@ -73,3 +73,4 @@ JobClosedTextCandidateFound=The job position is closed. The position has been fi
|
|||||||
JobClosedTextCanceled=The job position is closed.
|
JobClosedTextCanceled=The job position is closed.
|
||||||
ExtrafieldsJobPosition=Complementary attributes (job positions)
|
ExtrafieldsJobPosition=Complementary attributes (job positions)
|
||||||
ExtrafieldsCandidatures=Complementary attributes (job applications)
|
ExtrafieldsCandidatures=Complementary attributes (job applications)
|
||||||
|
MakeOffer=Make an offer
|
||||||
|
|||||||
@ -30,6 +30,7 @@ OtherSendingsForSameOrder=Other shipments for this order
|
|||||||
SendingsAndReceivingForSameOrder=Shipments and receipts for this order
|
SendingsAndReceivingForSameOrder=Shipments and receipts for this order
|
||||||
SendingsToValidate=Shipments to validate
|
SendingsToValidate=Shipments to validate
|
||||||
StatusSendingCanceled=Canceled
|
StatusSendingCanceled=Canceled
|
||||||
|
StatusSendingCanceledShort=Canceled
|
||||||
StatusSendingDraft=Draft
|
StatusSendingDraft=Draft
|
||||||
StatusSendingValidated=Validated (products to ship or already shipped)
|
StatusSendingValidated=Validated (products to ship or already shipped)
|
||||||
StatusSendingProcessed=Processed
|
StatusSendingProcessed=Processed
|
||||||
@ -65,6 +66,7 @@ ValidateOrderFirstBeforeShipment=You must first validate the order before being
|
|||||||
# Sending methods
|
# Sending methods
|
||||||
# ModelDocument
|
# ModelDocument
|
||||||
DocumentModelTyphon=More complete document model for delivery receipts (logo...)
|
DocumentModelTyphon=More complete document model for delivery receipts (logo...)
|
||||||
|
DocumentModelStorm=More complete document model for delivery receipts and extrafields compatibility (logo...)
|
||||||
Error_EXPEDITION_ADDON_NUMBER_NotDefined=Constant EXPEDITION_ADDON_NUMBER not defined
|
Error_EXPEDITION_ADDON_NUMBER_NotDefined=Constant EXPEDITION_ADDON_NUMBER not defined
|
||||||
SumOfProductVolumes=Sum of product volumes
|
SumOfProductVolumes=Sum of product volumes
|
||||||
SumOfProductWeights=Sum of product weights
|
SumOfProductWeights=Sum of product weights
|
||||||
|
|||||||
@ -240,3 +240,4 @@ InventoryRealQtyHelp=Set value to 0 to reset qty<br>Keep field empty, or remove
|
|||||||
UpdateByScaning=Update by scaning
|
UpdateByScaning=Update by scaning
|
||||||
UpdateByScaningProductBarcode=Update by scan (product barcode)
|
UpdateByScaningProductBarcode=Update by scan (product barcode)
|
||||||
UpdateByScaningLot=Update by scan (lot|serial barcode)
|
UpdateByScaningLot=Update by scan (lot|serial barcode)
|
||||||
|
DisableStockChangeOfSubProduct=Deactivate the stock change for all the subproducts of this Kit during this movement.
|
||||||
|
|||||||
@ -31,10 +31,8 @@ TicketDictType=Ticket - Types
|
|||||||
TicketDictCategory=Ticket - Groupes
|
TicketDictCategory=Ticket - Groupes
|
||||||
TicketDictSeverity=Ticket - Severities
|
TicketDictSeverity=Ticket - Severities
|
||||||
TicketDictResolution=Ticket - Resolution
|
TicketDictResolution=Ticket - Resolution
|
||||||
TicketTypeShortBUGSOFT=Dysfonctionnement logiciel
|
|
||||||
TicketTypeShortBUGHARD=Dysfonctionnement matériel
|
|
||||||
TicketTypeShortCOM=Commercial question
|
|
||||||
|
|
||||||
|
TicketTypeShortCOM=Commercial question
|
||||||
TicketTypeShortHELP=Request for functionnal help
|
TicketTypeShortHELP=Request for functionnal help
|
||||||
TicketTypeShortISSUE=Issue, bug or problem
|
TicketTypeShortISSUE=Issue, bug or problem
|
||||||
TicketTypeShortREQUEST=Change or enhancement request
|
TicketTypeShortREQUEST=Change or enhancement request
|
||||||
@ -44,7 +42,7 @@ TicketTypeShortOTHER=Other
|
|||||||
TicketSeverityShortLOW=Low
|
TicketSeverityShortLOW=Low
|
||||||
TicketSeverityShortNORMAL=Normal
|
TicketSeverityShortNORMAL=Normal
|
||||||
TicketSeverityShortHIGH=High
|
TicketSeverityShortHIGH=High
|
||||||
TicketSeverityShortBLOCKING=Critical/Blocking
|
TicketSeverityShortBLOCKING=Critical, Blocking
|
||||||
|
|
||||||
ErrorBadEmailAddress=Field '%s' incorrect
|
ErrorBadEmailAddress=Field '%s' incorrect
|
||||||
MenuTicketMyAssign=My tickets
|
MenuTicketMyAssign=My tickets
|
||||||
@ -60,7 +58,6 @@ OriginEmail=Email source
|
|||||||
Notify_TICKET_SENTBYMAIL=Send ticket message by email
|
Notify_TICKET_SENTBYMAIL=Send ticket message by email
|
||||||
|
|
||||||
# Status
|
# Status
|
||||||
NotRead=Not read
|
|
||||||
Read=Read
|
Read=Read
|
||||||
Assigned=Assigned
|
Assigned=Assigned
|
||||||
InProgress=In progress
|
InProgress=In progress
|
||||||
@ -126,6 +123,7 @@ TicketsActivatePublicInterfaceHelp=Public interface allow any visitors to create
|
|||||||
TicketsAutoAssignTicket=Automatically assign the user who created the ticket
|
TicketsAutoAssignTicket=Automatically assign the user who created the ticket
|
||||||
TicketsAutoAssignTicketHelp=When creating a ticket, the user can be automatically assigned to the ticket.
|
TicketsAutoAssignTicketHelp=When creating a ticket, the user can be automatically assigned to the ticket.
|
||||||
TicketNumberingModules=Tickets numbering module
|
TicketNumberingModules=Tickets numbering module
|
||||||
|
TicketsModelModule=Document templates for tickets
|
||||||
TicketNotifyTiersAtCreation=Notify third party at creation
|
TicketNotifyTiersAtCreation=Notify third party at creation
|
||||||
TicketsDisableCustomerEmail=Always disable emails when a ticket is created from public interface
|
TicketsDisableCustomerEmail=Always disable emails when a ticket is created from public interface
|
||||||
TicketsPublicNotificationNewMessage=Send email(s) when a new message is added
|
TicketsPublicNotificationNewMessage=Send email(s) when a new message is added
|
||||||
@ -233,7 +231,6 @@ TicketLogStatusChanged=Status changed: %s to %s
|
|||||||
TicketNotNotifyTiersAtCreate=Not notify company at create
|
TicketNotNotifyTiersAtCreate=Not notify company at create
|
||||||
Unread=Unread
|
Unread=Unread
|
||||||
TicketNotCreatedFromPublicInterface=Not available. Ticket was not created from public interface.
|
TicketNotCreatedFromPublicInterface=Not available. Ticket was not created from public interface.
|
||||||
PublicInterfaceNotEnabled=Public interface was not enabled
|
|
||||||
ErrorTicketRefRequired=Ticket reference name is required
|
ErrorTicketRefRequired=Ticket reference name is required
|
||||||
|
|
||||||
#
|
#
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user