mirror of
https://github.com/Dolibarr/dolibarr.git
synced 2026-02-11 18:32:32 +01:00
15
ChangeLog
15
ChangeLog
@@ -115,8 +115,8 @@ NEW: class tool for converting units
|
||||
NEW: Close #13011 Add button create thirdparty when creating intervention
|
||||
NEW: Colorful theme for TakePOS
|
||||
NEW: columns units in product list
|
||||
NEW: compatibility of translabel with more dict
|
||||
NEW: Confirm file delete on fracture card
|
||||
NEW: compatibility of translabel with more dictionaries
|
||||
NEW: Confirm file delete on invoice card
|
||||
NEW: "contact_civility" for ODT templates
|
||||
NEW: CUPS printing compatibility for TakePOS
|
||||
NEW: Customer command list - Add date start & date end
|
||||
@@ -124,16 +124,11 @@ NEW: display weight in shipment list
|
||||
NEW: Documentation about PHP support in Dolibarr
|
||||
NEW: Donation - Update FR CERFA to 11580*04
|
||||
NEW: Easier way to setup the different types of tax. Better visibility.
|
||||
NEW: enable put for agendaevents api
|
||||
NEW: Expedition list - Add date start & date end
|
||||
NEW: Experiment supplier packaging with option PRODUCT_USE_SUPPLIER_PACKAGING: Using price according to the minimum quantity
|
||||
NEW: Export module, add extrafields for Contract and Contract line
|
||||
NEW: Extend retained warranty to be available for all invoices
|
||||
NEW: filter by product on supplier order API
|
||||
NEW: French new regions
|
||||
NEW: get documents for categories with RESP API
|
||||
NEW: get proposal by ref with API
|
||||
NEW: Hidden option MAIN_TEMP_DIR
|
||||
NEW: hook and data id
|
||||
NEW: hook on ics generation to add more events in eventarray
|
||||
NEW: hook on product load stats
|
||||
@@ -206,7 +201,6 @@ NEW: API filter bankaccounts by category
|
||||
NEW: API filter contacts by category
|
||||
NEW: API filter members by category
|
||||
NEW: API filter projects by category
|
||||
NEW: API filter thirdpartie by category
|
||||
NEW: API filter thirdparty by category
|
||||
NEW: API filter user by category
|
||||
NEW: API filter warehouses by categorie
|
||||
@@ -220,6 +214,11 @@ NEW: Bookkeeping by account - Add selectfields & hook
|
||||
NEW: Can force position of legend of graph on right (instead of top)
|
||||
NEW: Can change destination of "Back to list" using a "backtolist" parameter
|
||||
NEW: add more category types from hook
|
||||
NEW: enable put for agendaevents api
|
||||
NEW: filter by product on supplier order API
|
||||
NEW: get documents for categories with RESP API
|
||||
NEW: get proposal by ref with API
|
||||
NEW: Hidden option MAIN_TEMP_DIR
|
||||
|
||||
WARNING:
|
||||
|
||||
|
||||
@@ -285,6 +285,7 @@ if ($search_gender != '' && $search_gender != '-1') $sql .= " AND d.gender = '".
|
||||
if ($search_login) $sql .= natural_search("d.login", $search_login);
|
||||
if ($search_company) $sql .= natural_search("s.nom", $search_company);
|
||||
if ($search_email) $sql .= natural_search("d.email", $search_email);
|
||||
if ($search_address) $sql .= natural_search("d.address", $search_address);
|
||||
if ($search_town) $sql .= natural_search("d.town", $search_town);
|
||||
if ($search_zip) $sql .= natural_search("d.zip", $search_zip);
|
||||
if ($search_state) $sql .= natural_search("state.nom", $search_state);
|
||||
|
||||
113
htdocs/admin/bom_extrafields.php
Normal file
113
htdocs/admin/bom_extrafields.php
Normal file
@@ -0,0 +1,113 @@
|
||||
<?php
|
||||
/* Copyright (C) 2001-2002 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||
* Copyright (C) 2003 Jean-Louis Bergamo <jlb@j1b.org>
|
||||
* Copyright (C) 2004-2011 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2012 Regis Houssin <regis.houssin@inodbox.com>
|
||||
* Copyright (C) 2014 Florian Henry <florian.henry@open-concept.pro>
|
||||
* Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* \file htdocs/admin/bom_extrafields.php
|
||||
* \ingroup bom
|
||||
* \brief Page to setup extra fields of BOM
|
||||
*/
|
||||
|
||||
require '../main.inc.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/bom/lib/bom.lib.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php';
|
||||
|
||||
// Load translation files required by the page
|
||||
$langs->loadLangs(array('mrp', 'admin'));
|
||||
|
||||
$extrafields = new ExtraFields($db);
|
||||
$form = new Form($db);
|
||||
|
||||
// List of supported format
|
||||
$tmptype2label = ExtraFields::$type2label;
|
||||
$type2label = array('');
|
||||
foreach ($tmptype2label as $key => $val) $type2label[$key] = $langs->transnoentitiesnoconv($val);
|
||||
|
||||
$action = GETPOST('action', 'alpha');
|
||||
$attrname = GETPOST('attrname', 'alpha');
|
||||
$elementtype = 'bom_bom';
|
||||
|
||||
if (!$user->admin) accessforbidden();
|
||||
|
||||
|
||||
/*
|
||||
* Actions
|
||||
*/
|
||||
|
||||
require DOL_DOCUMENT_ROOT.'/core/actions_extrafields.inc.php';
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* View
|
||||
*/
|
||||
|
||||
|
||||
llxHeader('', $langs->trans("BOMsSetup"), $help_url);
|
||||
|
||||
|
||||
$linkback = '<a href="'.DOL_URL_ROOT.'/admin/modules.php?restore_lastsearch_values=1">'.$langs->trans("BackToModuleList").'</a>';
|
||||
print load_fiche_titre($langs->trans("BOMsSetup"), $linkback, 'title_setup');
|
||||
|
||||
|
||||
$head = bomAdminPrepareHead(null);
|
||||
|
||||
dol_fiche_head($head, 'bom_extrafields', $langs->trans("ExtraFields"), -1, 'account');
|
||||
|
||||
require DOL_DOCUMENT_ROOT.'/core/tpl/admin_extrafields_view.tpl.php';
|
||||
|
||||
dol_fiche_end();
|
||||
|
||||
|
||||
// Buttons
|
||||
if ($action != 'create' && $action != 'edit')
|
||||
{
|
||||
print '<div class="tabsAction">';
|
||||
print "<a class=\"butAction\" href=\"".$_SERVER["PHP_SELF"]."?action=create#newattrib\">".$langs->trans("NewAttribute")."</a>";
|
||||
print "</div>";
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Creation of an optional field
|
||||
*/
|
||||
if ($action == 'create')
|
||||
{
|
||||
print '<br><div id="newattrib"></div>';
|
||||
print load_fiche_titre($langs->trans('NewAttribute'));
|
||||
|
||||
require DOL_DOCUMENT_ROOT.'/core/tpl/admin_extrafields_add.tpl.php';
|
||||
}
|
||||
|
||||
/*
|
||||
* Edition of an optional field
|
||||
*/
|
||||
if ($action == 'edit' && !empty($attrname))
|
||||
{
|
||||
print "<br>";
|
||||
print load_fiche_titre($langs->trans("FieldEdition", $attrname));
|
||||
|
||||
require DOL_DOCUMENT_ROOT.'/core/tpl/admin_extrafields_edit.tpl.php';
|
||||
}
|
||||
|
||||
// End of page
|
||||
llxFooter();
|
||||
$db->close();
|
||||
@@ -209,7 +209,7 @@ $sql .= $hookmanager->resPrint;
|
||||
|
||||
/* If a group by is required
|
||||
$sql.= " GROUP BY "
|
||||
foreach($object->fields as $key => $val)
|
||||
foreach ($object->fields as $key => $val)
|
||||
{
|
||||
$sql.='t.'.$key.', ';
|
||||
}
|
||||
|
||||
113
htdocs/admin/mrp_extrafields.php
Normal file
113
htdocs/admin/mrp_extrafields.php
Normal file
@@ -0,0 +1,113 @@
|
||||
<?php
|
||||
/* Copyright (C) 2001-2002 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||
* Copyright (C) 2003 Jean-Louis Bergamo <jlb@j1b.org>
|
||||
* Copyright (C) 2004-2011 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2012 Regis Houssin <regis.houssin@inodbox.com>
|
||||
* Copyright (C) 2014 Florian Henry <florian.henry@open-concept.pro>
|
||||
* Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* \file htdocs/admin/mrp_extrafields.php
|
||||
* \ingroup mrp
|
||||
* \brief Page to setup extra fields of MOs
|
||||
*/
|
||||
|
||||
require '../main.inc.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/mrp/lib/mrp.lib.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php';
|
||||
|
||||
// Load translation files required by the page
|
||||
$langs->loadLangs(array('mrp', 'admin'));
|
||||
|
||||
$extrafields = new ExtraFields($db);
|
||||
$form = new Form($db);
|
||||
|
||||
// List of supported format
|
||||
$tmptype2label = ExtraFields::$type2label;
|
||||
$type2label = array('');
|
||||
foreach ($tmptype2label as $key => $val) $type2label[$key] = $langs->transnoentitiesnoconv($val);
|
||||
|
||||
$action = GETPOST('action', 'alpha');
|
||||
$attrname = GETPOST('attrname', 'alpha');
|
||||
$elementtype = 'mrp_mo';
|
||||
|
||||
if (!$user->admin) accessforbidden();
|
||||
|
||||
|
||||
/*
|
||||
* Actions
|
||||
*/
|
||||
|
||||
require DOL_DOCUMENT_ROOT.'/core/actions_extrafields.inc.php';
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* View
|
||||
*/
|
||||
|
||||
|
||||
llxHeader('', $langs->trans("MrpSetupPage"), $help_url);
|
||||
|
||||
|
||||
$linkback = '<a href="'.DOL_URL_ROOT.'/admin/modules.php?restore_lastsearch_values=1">'.$langs->trans("BackToModuleList").'</a>';
|
||||
print load_fiche_titre($langs->trans("MrpSetupPage"), $linkback, 'title_setup');
|
||||
|
||||
|
||||
$head = mrpAdminPrepareHead(null);
|
||||
|
||||
dol_fiche_head($head, 'mrp_extrafields', $langs->trans("ExtraFields"), -1, 'account');
|
||||
|
||||
require DOL_DOCUMENT_ROOT.'/core/tpl/admin_extrafields_view.tpl.php';
|
||||
|
||||
dol_fiche_end();
|
||||
|
||||
|
||||
// Buttons
|
||||
if ($action != 'create' && $action != 'edit')
|
||||
{
|
||||
print '<div class="tabsAction">';
|
||||
print "<a class=\"butAction\" href=\"".$_SERVER["PHP_SELF"]."?action=create#newattrib\">".$langs->trans("NewAttribute")."</a>";
|
||||
print "</div>";
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Creation of an optional field
|
||||
*/
|
||||
if ($action == 'create')
|
||||
{
|
||||
print '<br><div id="newattrib"></div>';
|
||||
print load_fiche_titre($langs->trans('NewAttribute'));
|
||||
|
||||
require DOL_DOCUMENT_ROOT.'/core/tpl/admin_extrafields_add.tpl.php';
|
||||
}
|
||||
|
||||
/*
|
||||
* Edition of an optional field
|
||||
*/
|
||||
if ($action == 'edit' && !empty($attrname))
|
||||
{
|
||||
print "<br>";
|
||||
print load_fiche_titre($langs->trans("FieldEdition", $attrname));
|
||||
|
||||
require DOL_DOCUMENT_ROOT.'/core/tpl/admin_extrafields_edit.tpl.php';
|
||||
}
|
||||
|
||||
// End of page
|
||||
llxFooter();
|
||||
$db->close();
|
||||
@@ -251,7 +251,7 @@ class BOM extends CommonObject
|
||||
if ($result > 0 && !empty($object->table_element_line)) $object->fetchLines();
|
||||
|
||||
// Get lines so they will be clone
|
||||
//foreach($object->lines as $line)
|
||||
//foreach ($object->lines as $line)
|
||||
// $line->fetch_optionals();
|
||||
|
||||
// Reset some properties
|
||||
@@ -333,8 +333,10 @@ class BOM extends CommonObject
|
||||
public function fetch($id, $ref = null)
|
||||
{
|
||||
$result = $this->fetchCommon($id, $ref);
|
||||
|
||||
if ($result > 0 && !empty($this->table_element_line)) $this->fetchLines();
|
||||
$this->calculateCosts();
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
|
||||
@@ -41,6 +41,11 @@ function bomAdminPrepareHead()
|
||||
$head[$h][2] = 'settings';
|
||||
$h++;
|
||||
|
||||
$head[$h][0] = dol_buildpath("/admin/bom_extrafields.php", 1);
|
||||
$head[$h][1] = $langs->trans("ExtraFields");
|
||||
$head[$h][2] = 'bom_extrafields';
|
||||
$h++;
|
||||
|
||||
/*$head[$h][0] = DOL_URL_ROOT."/bom/admin/about.php";
|
||||
$head[$h][1] = $langs->trans("About");
|
||||
$head[$h][2] = 'about';
|
||||
|
||||
@@ -58,7 +58,6 @@ if ($nolinesbefore) {
|
||||
}
|
||||
print '<td class="linecoldescription minwidth500imp">';
|
||||
print '<div id="add"></div><span class="hideonsmartphone">'.$langs->trans('AddNewLine').'</span>';
|
||||
// echo $langs->trans("FreeZone");
|
||||
print '</td>';
|
||||
print '<td class="linecolqty right">'.$langs->trans('Qty').'</td>';
|
||||
if ($conf->global->PRODUCT_USE_UNITS)
|
||||
|
||||
@@ -934,7 +934,7 @@ if ($object->id > 0)
|
||||
$late = '';
|
||||
foreach ($contrat->lines as $line) {
|
||||
if ($contrat->statut == Contrat::STATUS_VALIDATED && $line->statut == ContratLigne::STATUS_OPEN) {
|
||||
if (($line->date_fin_validite + $conf->contrat->services->expires->warning_delay) < $now) $late = img_warning($langs->trans("Late"));
|
||||
if (((!empty($line->date_fin_validite)?$line->date_fin_validite:0) + $conf->contrat->services->expires->warning_delay) < $now) $late = img_warning($langs->trans("Late"));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -192,7 +192,7 @@ if (empty($reshook))
|
||||
}
|
||||
}
|
||||
|
||||
$result = $object->createFromClone($user, $socid);
|
||||
$result = $object->createFromClone($user, $socid, (GETPOSTISSET('entity') ? GETPOST('entity', 'int') : null));
|
||||
if ($result > 0) {
|
||||
header("Location: ".$_SERVER['PHP_SELF'].'?id='.$result);
|
||||
exit();
|
||||
@@ -775,8 +775,16 @@ if (empty($reshook))
|
||||
}
|
||||
}
|
||||
}
|
||||
} // Add line
|
||||
elseif ($action == 'addline' && $usercancreate) {
|
||||
} elseif ($action == 'addline' && GETPOST('submitforalllines', 'aZ09') && GETPOST('vatforalllines', 'alpha')) {
|
||||
// Define vat_rate
|
||||
$vat_rate = (GETPOST('vatforalllines') ? GETPOST('vatforalllines') : 0);
|
||||
$vat_rate = str_replace('*', '', $vat_rate);
|
||||
$localtax1_rate = get_localtax($vat_rate, 1, $object->thirdparty, $mysoc);
|
||||
$localtax2_rate = get_localtax($vat_rate, 2, $object->thirdparty, $mysoc);
|
||||
foreach ($object->lines as $line) {
|
||||
$result = $object->updateline($line->id, $line->subprice, $line->qty, $line->remise_percent, $vat_rate, $localtax1_rate, $localtax2_rate, $line->desc, 'HT', $line->info_bits, $line->special_code, $line->fk_parent_line, 0, $line->fk_fournprice, $line->pa_ht, $line->label, $line->product_type, $line->date_start, $line->date_end, $line->array_options, $line->fk_unit, $line->multicurrency_subprice);
|
||||
}
|
||||
} elseif ($action == 'addline' && $usercancreate) { // Add line
|
||||
// Set if we used free entry or predefined product
|
||||
$predef = '';
|
||||
$product_desc = (GETPOST('dp_desc') ?GETPOST('dp_desc') : '');
|
||||
@@ -1085,6 +1093,9 @@ if (empty($reshook))
|
||||
$outputlangs->setDefaultLang($newlang);
|
||||
}
|
||||
$ret = $object->fetch($id); // Reload to get new records
|
||||
if ($ret > 0) {
|
||||
$object->fetch_thirdparty();
|
||||
}
|
||||
$object->generateDocument($object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
|
||||
}
|
||||
|
||||
@@ -1747,10 +1758,9 @@ if ($action == 'create')
|
||||
|
||||
print '<tr><td class="tdtop"><input type="radio" name="createmode" value="empty" checked></td>';
|
||||
print '<td valign="top" colspan="2">'.$langs->trans("CreateEmptyPropal").'</td></tr>';
|
||||
print '</table>';
|
||||
}
|
||||
|
||||
if (!empty($conf->global->PROPAL_CLONE_ON_CREATE_PAGE)) print '</table>';
|
||||
|
||||
dol_fiche_end();
|
||||
|
||||
$langs->load("bills");
|
||||
@@ -1793,11 +1803,11 @@ if ($action == 'create')
|
||||
if ($action == 'clone') {
|
||||
// Create an array for form
|
||||
$formquestion = array(
|
||||
// 'text' => $langs->trans("ConfirmClone"),
|
||||
// array('type' => 'checkbox', 'name' => 'clone_content', 'label' => $langs->trans("CloneMainAttributes"), 'value' => 1),
|
||||
// array('type' => 'checkbox', 'name' => 'update_prices', 'label' => $langs->trans("PuttingPricesUpToDate"), 'value' =>
|
||||
// 1),
|
||||
array('type' => 'other', 'name' => 'socid', 'label' => $langs->trans("SelectThirdParty"), 'value' => $form->select_company(GETPOST('socid', 'int'), 'socid', '(s.client=1 OR s.client=2 OR s.client=3)')));
|
||||
// 'text' => $langs->trans("ConfirmClone"),
|
||||
// array('type' => 'checkbox', 'name' => 'clone_content', 'label' => $langs->trans("CloneMainAttributes"), 'value' => 1),
|
||||
// array('type' => 'checkbox', 'name' => 'update_prices', 'label' => $langs->trans("PuttingPricesUpToDate"), 'value' => 1),
|
||||
array('type' => 'other', 'name' => 'socid', 'label' => $langs->trans("SelectThirdParty"), 'value' => $form->select_company(GETPOST('socid', 'int'), 'socid', '(s.client=1 OR s.client=2 OR s.client=3)'))
|
||||
);
|
||||
if (!empty($conf->global->PROPAL_CLONE_DATE_DELIVERY) && !empty($object->date_livraison)) {
|
||||
$formquestion[] = array('type' => 'date', 'name' => 'date_delivery', 'label' => $langs->trans("DeliveryDate"), 'value' => $object->date_livraison);
|
||||
}
|
||||
|
||||
@@ -725,15 +725,15 @@ class Propal extends CommonObject
|
||||
/**
|
||||
* Update a proposal line
|
||||
*
|
||||
* @param int $rowid Id de la ligne
|
||||
* @param float $pu Prix unitaire (HT ou TTC selon price_base_type)
|
||||
* @param int $rowid Id of line
|
||||
* @param float $pu Unit price (HT or TTC depending on price_base_type)
|
||||
* @param float $qty Quantity
|
||||
* @param float $remise_percent Remise effectuee sur le produit
|
||||
* @param float $txtva Taux de TVA
|
||||
* @param float $remise_percent Discount on line
|
||||
* @param float $txtva VAT Rate (Can be '1.23' or '1.23 (ABC)')
|
||||
* @param float $txlocaltax1 Local tax 1 rate
|
||||
* @param float $txlocaltax2 Local tax 2 rate
|
||||
* @param string $desc Description
|
||||
* @param string $price_base_type HT ou TTC
|
||||
* @param string $price_base_type HT or TTC
|
||||
* @param int $info_bits Miscellaneous informations
|
||||
* @param int $special_code Special code (also used by externals modules!)
|
||||
* @param int $fk_parent_line Id of parent line (0 in most cases, used by modules adding sublevels into lines).
|
||||
@@ -1289,9 +1289,10 @@ class Propal extends CommonObject
|
||||
*
|
||||
* @param User $user User making the clone
|
||||
* @param int $socid Id of thirdparty
|
||||
* @param int $forceentity Entity id to force
|
||||
* @return int New id of clone
|
||||
*/
|
||||
public function createFromClone(User $user, $socid = 0)
|
||||
public function createFromClone(User $user, $socid = 0, $forceentity = null)
|
||||
{
|
||||
global $conf, $hookmanager;
|
||||
|
||||
@@ -1345,6 +1346,7 @@ class Propal extends CommonObject
|
||||
|
||||
$object->id = 0;
|
||||
$object->ref = '';
|
||||
$object->entity = (! empty($forceentity) ? $forceentity : $object->entity);
|
||||
$object->statut = self::STATUS_DRAFT;
|
||||
|
||||
// Clear fields
|
||||
@@ -4119,6 +4121,8 @@ class PropaleLigne extends CommonObjectLine
|
||||
|
||||
$pa_ht_isemptystring = (empty($this->pa_ht) && $this->pa_ht == ''); // If true, we can use a default value. If this->pa_ht = '0', we must use '0'.
|
||||
|
||||
if (empty($this->id) && ! empty($this->rowid)) $this->id = $this->rowid;
|
||||
|
||||
// Clean parameters
|
||||
if (empty($this->tva_tx)) $this->tva_tx = 0;
|
||||
if (empty($this->localtax1_tx)) $this->localtax1_tx = 0;
|
||||
@@ -4192,7 +4196,7 @@ class PropaleLigne extends CommonObjectLine
|
||||
$sql .= ", multicurrency_total_tva=".price2num($this->multicurrency_total_tva)."";
|
||||
$sql .= ", multicurrency_total_ttc=".price2num($this->multicurrency_total_ttc)."";
|
||||
|
||||
$sql .= " WHERE rowid = ".$this->rowid;
|
||||
$sql .= " WHERE rowid = ".$this->id;
|
||||
|
||||
dol_syslog(get_class($this)."::update", LOG_DEBUG);
|
||||
$resql = $this->db->query($sql);
|
||||
@@ -4200,7 +4204,6 @@ class PropaleLigne extends CommonObjectLine
|
||||
{
|
||||
if (!$error)
|
||||
{
|
||||
$this->id = $this->rowid;
|
||||
$result = $this->insertExtraFields();
|
||||
if ($result < 0)
|
||||
{
|
||||
|
||||
@@ -624,10 +624,16 @@ if (empty($reshook))
|
||||
$result = $object->set_remise($user, GETPOST('remise_percent'));
|
||||
} elseif ($action == 'setremiseabsolue' && $usercancreate) {
|
||||
$result = $object->set_remise_absolue($user, GETPOST('remise_absolue'));
|
||||
}
|
||||
|
||||
// Add a new line
|
||||
elseif ($action == 'addline' && $usercancreate)
|
||||
} elseif ($action == 'addline' && GETPOST('submitforalllines', 'aZ09') && GETPOST('vatforalllines', 'alpha')) {
|
||||
// Define vat_rate
|
||||
$vat_rate = (GETPOST('vatforalllines') ? GETPOST('vatforalllines') : 0);
|
||||
$vat_rate = str_replace('*', '', $vat_rate);
|
||||
$localtax1_rate = get_localtax($vat_rate, 1, $object->thirdparty, $mysoc);
|
||||
$localtax2_rate = get_localtax($vat_rate, 2, $object->thirdparty, $mysoc);
|
||||
foreach ($object->lines as $line) {
|
||||
$result = $object->updateline($line->id, $line->desc, $line->subprice, $line->qty, $line->remise_percent, $vat_rate, $localtax1_rate, $localtax2_rate, 'HT', $line->info_bits, $line->date_start, $line->date_end, $line->product_type, $line->fk_parent_line, 0, $line->fk_fournprice, $line->pa_ht, $line->label, $line->special_code, $line->array_options, $line->fk_unit, $line->multicurrency_subprice);
|
||||
}
|
||||
} elseif ($action == 'addline' && $usercancreate) // Add a new line
|
||||
{
|
||||
$langs->load('errors');
|
||||
$error = 0;
|
||||
|
||||
@@ -1417,7 +1417,7 @@ if (empty($reshook))
|
||||
$result = $srcobject->fetch($object->origin_id);
|
||||
|
||||
$typeamount = GETPOST('typedeposit', 'aZ09');
|
||||
$valuedeposit = GETPOST('valuedeposit', 'int');
|
||||
$valuedeposit = price2num(GETPOST('valuedeposit', 'alpha'), 'MU');
|
||||
|
||||
// If deposit invoice
|
||||
if ($_POST['type'] == Facture::TYPE_DEPOSIT && in_array($typeamount, array('amount', 'variable')))
|
||||
@@ -1867,8 +1867,16 @@ if (empty($reshook))
|
||||
$_GET["originid"] = $_POST["originid"];
|
||||
setEventMessages($object->error, $object->errors, 'errors');
|
||||
}
|
||||
} // Add a new line
|
||||
elseif ($action == 'addline' && $usercancreate)
|
||||
} elseif ($action == 'addline' && GETPOST('submitforalllines', 'aZ09') && GETPOST('vatforalllines', 'alpha')) {
|
||||
// Define vat_rate
|
||||
$vat_rate = (GETPOST('vatforalllines') ? GETPOST('vatforalllines') : 0);
|
||||
$vat_rate = str_replace('*', '', $vat_rate);
|
||||
$localtax1_rate = get_localtax($vat_rate, 1, $object->thirdparty, $mysoc);
|
||||
$localtax2_rate = get_localtax($vat_rate, 2, $object->thirdparty, $mysoc);
|
||||
foreach ($object->lines as $line) {
|
||||
$result = $object->updateline($line->id, $line->desc, $line->subprice, $line->qty, $line->remise_percent, $line->date_start, $line->date_end, $vat_rate, $localtax1_rate, $localtax2_rate, 'HT', $line->info_bits, $line->product_type, $line->fk_parent_line, 0, $line->fk_fournprice, $line->pa_ht, $line->label, $line->special_code, $line->array_options, $line->situation_percent, $line->fk_unit, $line->multicurrency_subprice);
|
||||
}
|
||||
} elseif ($action == 'addline' && $usercancreate) // Add a new line
|
||||
{
|
||||
$langs->load('errors');
|
||||
$error = 0;
|
||||
|
||||
@@ -48,13 +48,12 @@ $ref = GETPOST('ref', 'alpha');
|
||||
$socid = GETPOST('socid', 'int');
|
||||
$action = GETPOST('action', 'alpha');
|
||||
$type = GETPOST('type', 'aZ09');
|
||||
$mode = GETPOST('mode', 'aZ09');
|
||||
|
||||
$fieldid = (!empty($ref) ? 'ref' : 'rowid');
|
||||
if ($user->socid) $socid = $user->socid;
|
||||
$result = restrictedArea($user, 'facture', $id, '', '', 'fk_soc', $fieldid);
|
||||
|
||||
if ($mode == 'bank-transfer') {
|
||||
if ($type == 'bank-transfer') {
|
||||
$object = new FactureFournisseur($db);
|
||||
} else {
|
||||
$object = new Facture($db);
|
||||
@@ -94,6 +93,7 @@ if (empty($reshook))
|
||||
$sourcetype = 'facture';
|
||||
if ($type == 'bank-transfer') {
|
||||
$sourcetype = 'supplier_invoice';
|
||||
$newtype = 'bank-transfer';
|
||||
}
|
||||
|
||||
$result = $object->demande_prelevement($user, price2num(GETPOST('withdraw_request_amount', 'alpha')), $newtype, $sourcetype);
|
||||
@@ -117,7 +117,7 @@ if (empty($reshook))
|
||||
$result = $object->demande_prelevement_delete($user, GETPOST('did', 'int'));
|
||||
if ($result == 0)
|
||||
{
|
||||
header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id.'&mode='.$mode);
|
||||
header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id.'&type='.$type);
|
||||
exit;
|
||||
}
|
||||
}
|
||||
@@ -133,7 +133,7 @@ $form = new Form($db);
|
||||
|
||||
$now = dol_now();
|
||||
|
||||
if ($mode == 'bank-transfer') {
|
||||
if ($type == 'bank-transfer') {
|
||||
$title = $langs->trans('InvoiceSupplier')." - ".$langs->trans('CreditTransfer');
|
||||
$helpurl = "";
|
||||
} else {
|
||||
@@ -168,7 +168,7 @@ if ($object->id > 0)
|
||||
if ($object->paye) $resteapayer = 0;
|
||||
$resteapayeraffiche = $resteapayer;
|
||||
|
||||
if ($mode == 'bank-transfer') {
|
||||
if ($type == 'bank-transfer') {
|
||||
if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) { // Never use this
|
||||
$filterabsolutediscount = "fk_invoice_supplier_source IS NULL"; // If we want deposit to be substracted to payments only and not to total of final invoice
|
||||
$filtercreditnote = "fk_invoice_supplier_source IS NOT NULL"; // If we want deposit to be substracted to payments only and not to total of final invoice
|
||||
@@ -202,7 +202,7 @@ if ($object->id > 0)
|
||||
$author->fetch($object->user_author);
|
||||
}
|
||||
|
||||
if ($mode == 'bank-transfer') {
|
||||
if ($type == 'bank-transfer') {
|
||||
$head = facturefourn_prepare_head($object);
|
||||
} else {
|
||||
$head = facture_prepare_head($object);
|
||||
@@ -211,7 +211,7 @@ if ($object->id > 0)
|
||||
dol_fiche_head($head, 'standingorders', $title, -1, 'bill');
|
||||
|
||||
// Invoice content
|
||||
if ($mode == 'bank-transfer') {
|
||||
if ($type == 'bank-transfer') {
|
||||
$linkback = '<a href="'.DOL_URL_ROOT.'/fourn/facture/list.php?restore_lastsearch_values=1'.(!empty($socid) ? '&socid='.$socid : '').'">'.$langs->trans("BackToList").'</a>';
|
||||
} else {
|
||||
$linkback = '<a href="'.DOL_URL_ROOT.'/compta/facture/list.php?restore_lastsearch_values=1'.(!empty($socid) ? '&socid='.$socid : '').'">'.$langs->trans("BackToList").'</a>';
|
||||
@@ -219,7 +219,7 @@ if ($object->id > 0)
|
||||
|
||||
$morehtmlref = '<div class="refidno">';
|
||||
// Ref customer
|
||||
if ($mode == 'bank-transfer') {
|
||||
if ($type == 'bank-transfer') {
|
||||
$morehtmlref .= $form->editfieldkey("RefSupplier", 'ref_supplier', $object->ref_supplier, $object, 0, 'string', '', 0, 1);
|
||||
$morehtmlref .= $form->editfieldval("RefSupplier", 'ref_supplier', $object->ref_supplier, $object, 0, 'string', '', null, null, '', 1);
|
||||
} else {
|
||||
@@ -228,7 +228,7 @@ if ($object->id > 0)
|
||||
}
|
||||
// Thirdparty
|
||||
$morehtmlref .= '<br>'.$langs->trans('ThirdParty').' : '.$object->thirdparty->getNomUrl(1);
|
||||
if ($mode == 'bank-transfer') {
|
||||
if ($type == 'bank-transfer') {
|
||||
if (empty($conf->global->MAIN_DISABLE_OTHER_LINK) && $object->thirdparty->id > 0) $morehtmlref .= ' (<a href="'.DOL_URL_ROOT.'/fourn/facture/list.php?socid='.$object->thirdparty->id.'&search_company='.urlencode($object->thirdparty->name).'">'.$langs->trans("OtherBills").'</a>)';
|
||||
} else {
|
||||
if (empty($conf->global->MAIN_DISABLE_OTHER_LINK) && $object->thirdparty->id > 0) $morehtmlref .= ' (<a href="'.DOL_URL_ROOT.'/compta/facture/list.php?socid='.$object->thirdparty->id.'&search_company='.urlencode($object->thirdparty->name).'">'.$langs->trans("OtherBills").'</a>)';
|
||||
@@ -288,7 +288,7 @@ if ($object->id > 0)
|
||||
}
|
||||
if ($object->type == $object::TYPE_REPLACEMENT)
|
||||
{
|
||||
if ($mode == 'bank-transfer') {
|
||||
if ($type == 'bank-transfer') {
|
||||
$facreplaced = new FactureFournisseur($db);
|
||||
} else {
|
||||
$facreplaced = new Facture($db);
|
||||
@@ -298,7 +298,7 @@ if ($object->id > 0)
|
||||
}
|
||||
if ($object->type == $object::TYPE_CREDIT_NOTE)
|
||||
{
|
||||
if ($mode == 'bank-transfer') {
|
||||
if ($type == 'bank-transfer') {
|
||||
$facusing = new FactureFournisseur($db);
|
||||
} else {
|
||||
$facusing = new Facture($db);
|
||||
@@ -316,7 +316,7 @@ if ($object->id > 0)
|
||||
{
|
||||
if ($i == 0) print ' ';
|
||||
else print ',';
|
||||
if ($mode == 'bank-transfer') {
|
||||
if ($type == 'bank-transfer') {
|
||||
$facavoir = new FactureFournisseur($db);
|
||||
} else {
|
||||
$facavoir = new Facture($db);
|
||||
@@ -339,7 +339,7 @@ if ($object->id > 0)
|
||||
// Discounts
|
||||
print '<tr><td>'.$langs->trans('Discounts').'</td><td colspan="3">';
|
||||
|
||||
if ($mode == 'bank-transfer') {
|
||||
if ($type == 'bank-transfer') {
|
||||
//$societe = new Fournisseur($db);
|
||||
//$result = $societe->fetch($object->socid);
|
||||
$thirdparty = $object->thirdparty;
|
||||
@@ -355,7 +355,7 @@ if ($object->id > 0)
|
||||
print '</td></tr>';
|
||||
|
||||
// Label
|
||||
if ($mode == 'bank-transfer') {
|
||||
if ($type == 'bank-transfer') {
|
||||
print '<tr>';
|
||||
print '<td>'.$form->editfieldkey("Label", 'label', $object->label, $object, 0).'</td>';
|
||||
print '<td>'.$form->editfieldval("Label", 'label', $object->label, $object, 0).'</td>';
|
||||
@@ -417,7 +417,7 @@ if ($object->id > 0)
|
||||
if ($object->type != $object::TYPE_CREDIT_NOTE)
|
||||
{
|
||||
$duedate = $object->date_lim_reglement;
|
||||
if ($mode == 'bank-transfer') {
|
||||
if ($type == 'bank-transfer') {
|
||||
$duedate = $object->date_echeance;
|
||||
}
|
||||
|
||||
@@ -470,7 +470,7 @@ if ($object->id > 0)
|
||||
print '</tr>';
|
||||
|
||||
$title = 'CustomerIBAN';
|
||||
if ($mode == 'bank-transfer') {
|
||||
if ($type == 'bank-transfer') {
|
||||
$title = 'SupplierIBAN';
|
||||
}
|
||||
print '<tr><td>'.$langs->trans($title).'</td><td colspan="3">';
|
||||
@@ -627,7 +627,7 @@ if ($object->id > 0)
|
||||
print "\n<div class=\"tabsAction\">\n";
|
||||
|
||||
$buttonlabel = $langs->trans("MakeWithdrawRequest");
|
||||
if ($mode == 'bank-transfer') {
|
||||
if ($type == 'bank-transfer') {
|
||||
$buttonlabel = $langs->trans("MakeBankTransferOrder");
|
||||
}
|
||||
|
||||
@@ -643,6 +643,7 @@ if ($object->id > 0)
|
||||
print '<form method="POST" action="">';
|
||||
print '<input type="hidden" name="token" value="'.newToken().'" />';
|
||||
print '<input type="hidden" name="id" value="'.$object->id.'" />';
|
||||
print '<input type="hidden" name="type" value="'.$type.'" />';
|
||||
print '<input type="hidden" name="action" value="new" />';
|
||||
print '<label for="withdraw_request_amount">'.$langs->trans('BankTransferAmount').' </label>';
|
||||
print '<input type="text" id="withdraw_request_amount" name="withdraw_request_amount" value="'.$remaintopaylesspendingdebit.'" size="9" />';
|
||||
@@ -667,7 +668,7 @@ if ($object->id > 0)
|
||||
print "</div><br>\n";
|
||||
|
||||
|
||||
if ($mode == 'bank-transfer') {
|
||||
if ($type == 'bank-transfer') {
|
||||
print '<div class="opacitymedium">'.$langs->trans("DoCreditTransferBeforePayments").'</div><br>';
|
||||
} else {
|
||||
print '<div class="opacitymedium">'.$langs->trans("DoStandingOrdersBeforePayments").'</div><br>';
|
||||
@@ -684,7 +685,7 @@ if ($object->id > 0)
|
||||
print '<td class="left">'.$langs->trans("DateRequest").'</td>';
|
||||
print '<td class="center">'.$langs->trans("User").'</td>';
|
||||
print '<td class="center">'.$langs->trans("Amount").'</td>';
|
||||
if ($mode == 'bank-transfer') {
|
||||
if ($type == 'bank-transfer') {
|
||||
print '<td class="center">'.$langs->trans("BankTransferReceipt").'</td>';
|
||||
} else {
|
||||
print '<td class="center">'.$langs->trans("WithdrawalReceipt").'</td>';
|
||||
@@ -696,7 +697,7 @@ if ($object->id > 0)
|
||||
|
||||
$sql = "SELECT pfd.rowid, pfd.traite, pfd.date_demande as date_demande,";
|
||||
$sql .= " pfd.date_traite as date_traite, pfd.amount,";
|
||||
$sql .= " u.rowid as user_id, u.lastname, u.firstname, u.login";
|
||||
$sql .= " u.rowid as user_id, u.email, u.lastname, u.firstname, u.login, u.statut as user_status";
|
||||
$sql .= " FROM ".MAIN_DB_PREFIX."prelevement_facture_demande as pfd";
|
||||
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."user as u on pfd.fk_user_demande = u.rowid";
|
||||
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."prelevement_bons as pb ON pb.rowid = pfd.fk_prelevement_bons";
|
||||
@@ -716,14 +717,29 @@ if ($object->id > 0)
|
||||
{
|
||||
$i = 0;
|
||||
|
||||
$tmpuser = new User($db);
|
||||
|
||||
$num = $db->num_rows($result);
|
||||
while ($i < $num)
|
||||
{
|
||||
$obj = $db->fetch_object($result_sql);
|
||||
|
||||
$tmpuser->id = $obj->user_id;
|
||||
$tmpuser->login = $obj->login;
|
||||
$tmpuser->ref = $obj->login;
|
||||
$tmpuser->email = $obj->email;
|
||||
$tmpuser->lastname = $obj->lastname;
|
||||
$tmpuser->firstname = $obj->firstname;
|
||||
$tmpuser->statut = $obj->user_status;
|
||||
|
||||
print '<tr class="oddeven">';
|
||||
|
||||
print '<td class="left">'.dol_print_date($db->jdate($obj->date_demande), 'dayhour')."</td>\n";
|
||||
print '<td align="center"><a href="'.DOL_URL_ROOT.'/user/card.php?id='.$obj->user_id.'">'.img_object($langs->trans("ShowUser"), 'user').' '.$obj->login.'</a></td>';
|
||||
|
||||
print '<td align="center">';
|
||||
print $tmpuser->getNomUrl(1, '', 0, 0, 0, 0, 'login');
|
||||
print '</td>';
|
||||
|
||||
print '<td class="center">'.price($obj->amount).'</td>';
|
||||
print '<td align="center">-</td>';
|
||||
print '<td> </td>';
|
||||
@@ -731,7 +747,7 @@ if ($object->id > 0)
|
||||
print '<td class="center">'.$langs->trans("OrderWaiting").'</td>';
|
||||
|
||||
print '<td class="right">';
|
||||
print '<a href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&action=delete&did='.$obj->rowid.'&mode='.$mode.'">';
|
||||
print '<a href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&action=delete&did='.$obj->rowid.'&type='.$type.'">';
|
||||
print img_delete();
|
||||
print '</a></td>';
|
||||
|
||||
@@ -749,7 +765,7 @@ if ($object->id > 0)
|
||||
|
||||
$sql = "SELECT pfd.rowid, pfd.traite, pfd.date_demande, pfd.date_traite, pfd.fk_prelevement_bons, pfd.amount,";
|
||||
$sql .= " pb.ref,";
|
||||
$sql .= " u.rowid as user_id, u.lastname, u.firstname, u.login";
|
||||
$sql .= " u.rowid as user_id, u.email, u.lastname, u.firstname, u.login, u.statut as user_status";
|
||||
$sql .= " FROM ".MAIN_DB_PREFIX."prelevement_facture_demande as pfd";
|
||||
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."user as u on pfd.fk_user_demande = u.rowid";
|
||||
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."prelevement_bons as pb ON pb.rowid = pfd.fk_prelevement_bons";
|
||||
@@ -769,15 +785,27 @@ if ($object->id > 0)
|
||||
$numclosed = $num;
|
||||
$i = 0;
|
||||
|
||||
$tmpuser = new User($db);
|
||||
|
||||
while ($i < $num)
|
||||
{
|
||||
$obj = $db->fetch_object($result);
|
||||
|
||||
$tmpuser->id = $obj->user_id;
|
||||
$tmpuser->login = $obj->login;
|
||||
$tmpuser->ref = $obj->login;
|
||||
$tmpuser->email = $obj->email;
|
||||
$tmpuser->lastname = $obj->lastname;
|
||||
$tmpuser->firstname = $obj->firstname;
|
||||
$tmpuser->statut = $obj->user_status;
|
||||
|
||||
print '<tr class="oddeven">';
|
||||
|
||||
print '<td class="left">'.dol_print_date($db->jdate($obj->date_demande), 'day')."</td>\n";
|
||||
|
||||
print '<td align="center"><a href="'.DOL_URL_ROOT.'/user/card.php?id='.$obj->user_id.'">'.img_object($langs->trans("ShowUser"), 'user').' '.$obj->login.'</a></td>';
|
||||
print '<td align="center">';
|
||||
print $tmpuser->getNomUrl(1, '', 0, 0, 0, 0, 'login');
|
||||
print '</td>';
|
||||
|
||||
print '<td class="center">'.price($obj->amount).'</td>';
|
||||
|
||||
|
||||
@@ -351,9 +351,10 @@ if ($action == 'new')
|
||||
|
||||
$now = dol_now();
|
||||
|
||||
print $langs->trans("SelectChequeTransactionAndGenerate").'<br><br>'."\n";
|
||||
print '<span class="opacitymedium">'.$langs->trans("SelectChequeTransactionAndGenerate").'</span><br><br>'."\n";
|
||||
|
||||
print '<form class="nocellnopadd" action="'.$_SERVER["PHP_SELF"].'" method="POST">';
|
||||
print '<input type="hidden" name="token" value="'.newToken().'">';
|
||||
print '<input type="hidden" name="action" value="new">';
|
||||
|
||||
dol_fiche_head();
|
||||
|
||||
@@ -94,11 +94,11 @@ print '</td></tr></table></div><br>';
|
||||
*/
|
||||
$sql = "SELECT f.ref, f.rowid, f.total_ttc, f.fk_statut, f.paye, f.type,";
|
||||
$sql .= " pfd.date_demande, pfd.amount,";
|
||||
$sql .= " s.nom as name, s.rowid as socid";
|
||||
$sql .= " FROM ".MAIN_DB_PREFIX."facture as f,";
|
||||
$sql .= " s.nom as name, s.email, s.rowid as socid";
|
||||
$sql .= " FROM ".MAIN_DB_PREFIX."facture_fourn as f,";
|
||||
$sql .= " ".MAIN_DB_PREFIX."societe as s";
|
||||
if (!$user->rights->societe->client->voir && !$socid) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
|
||||
$sql .= " , ".MAIN_DB_PREFIX."prelevement_facture_demande as pfd";
|
||||
$sql .= ", ".MAIN_DB_PREFIX."prelevement_facture_demande as pfd";
|
||||
$sql .= " WHERE s.rowid = f.fk_soc";
|
||||
$sql .= " AND f.entity IN (".getEntity('supplier_invoice').")";
|
||||
$sql .= " AND f.total_ttc > 0";
|
||||
@@ -106,7 +106,9 @@ if (empty($conf->global->WITHDRAWAL_ALLOW_ANY_INVOICE_STATUS))
|
||||
{
|
||||
$sql .= " AND f.fk_statut = ".FactureFournisseur::STATUS_VALIDATED;
|
||||
}
|
||||
$sql .= " AND pfd.traite = 0 AND pfd.fk_facture_fourn = f.rowid";
|
||||
$sql .= " AND pfd.traite = 0";
|
||||
$sql .= " AND pfd.ext_payment_id IS NULL";
|
||||
$sql .= " AND pfd.fk_facture_fourn = f.rowid";
|
||||
if (!$user->rights->societe->client->voir && !$socid) $sql .= " AND s.rowid = sc.fk_soc AND sc.fk_user = ".$user->id;
|
||||
if ($socid) $sql .= " AND f.fk_soc = ".$socid;
|
||||
|
||||
@@ -133,14 +135,15 @@ if ($resql)
|
||||
$invoicestatic->type = $obj->type;
|
||||
$alreadypayed = $invoicestatic->getSommePaiement();
|
||||
|
||||
$thirdpartystatic->id = $obj->socid;
|
||||
$thirdpartystatic->name = $obj->name;
|
||||
$thirdpartystatic->email = $obj->email;
|
||||
|
||||
print '<tr class="oddeven"><td>';
|
||||
print $invoicestatic->getNomUrl(1, 'withdraw');
|
||||
print '</td>';
|
||||
|
||||
print '<td>';
|
||||
$thirdpartystatic->id = $obj->socid;
|
||||
$thirdpartystatic->name = $obj->name;
|
||||
print $thirdpartystatic->getNomUrl(1, 'customer');
|
||||
print '</td>';
|
||||
|
||||
@@ -190,7 +193,8 @@ if ($result)
|
||||
print"\n<!-- debut table -->\n";
|
||||
print '<div class="div-table-responsive-no-min">';
|
||||
print '<table class="noborder centpercent">';
|
||||
print '<tr class="liste_titre"><th>'.$langs->trans("LatestBankTransferReceipts", $limit).'</th>';
|
||||
print '<tr class="liste_titre">';
|
||||
print '<th>'.$langs->trans("LatestBankTransferReceipts", $limit).'</th>';
|
||||
print '<th>'.$langs->trans("Date").'</th>';
|
||||
print '<th class="right">'.$langs->trans("Amount").'</th>';
|
||||
print '<th class="right">'.$langs->trans("Status").'</th>';
|
||||
@@ -217,7 +221,7 @@ if ($result)
|
||||
$i++;
|
||||
}
|
||||
} else {
|
||||
print '<tr><td class="opacitymedium">'.$langs->trans("None").'</td></tr>';
|
||||
print '<tr><td class="opacitymedium" colspan="4">'.$langs->trans("None").'</td></tr>';
|
||||
}
|
||||
|
||||
print "</table></div><br>";
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/class/commonobject.class.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/compta/paiement/class/paiement.class.php';
|
||||
@@ -118,7 +119,7 @@ class BonPrelevement extends CommonObject
|
||||
/**
|
||||
* Add invoice to withdrawal
|
||||
*
|
||||
* @param int $facture_id id invoice to add
|
||||
* @param int $invoice_id id invoice to add
|
||||
* @param int $client_id id invoice customer
|
||||
* @param string $client_nom customer name
|
||||
* @param int $amount amount of invoice
|
||||
@@ -126,14 +127,16 @@ class BonPrelevement extends CommonObject
|
||||
* @param string $code_guichet code of bank's office
|
||||
* @param string $number bank account number
|
||||
* @param string $number_key number key of account number
|
||||
* @param string $type 'debit-order' or 'bank-transfer'
|
||||
* @return int >0 if OK, <0 if KO
|
||||
*/
|
||||
public function AddFacture($facture_id, $client_id, $client_nom, $amount, $code_banque, $code_guichet, $number, $number_key)
|
||||
public function AddFacture($invoice_id, $client_id, $client_nom, $amount, $code_banque, $code_guichet, $number, $number_key, $type = 'debit-order')
|
||||
{
|
||||
// phpcs:enable
|
||||
$result = 0;
|
||||
$line_id = 0;
|
||||
|
||||
// Add lines
|
||||
$result = $this->addline($line_id, $client_id, $client_nom, $amount, $code_banque, $code_guichet, $number, $number_key);
|
||||
|
||||
if ($result == 0)
|
||||
@@ -141,10 +144,14 @@ class BonPrelevement extends CommonObject
|
||||
if ($line_id > 0)
|
||||
{
|
||||
$sql = "INSERT INTO ".MAIN_DB_PREFIX."prelevement_facture (";
|
||||
$sql .= "fk_facture";
|
||||
if ($type != 'bank-transfer') {
|
||||
$sql .= "fk_facture";
|
||||
} else {
|
||||
$sql .= "fk_facture_fourn";
|
||||
}
|
||||
$sql .= ",fk_prelevement_lignes";
|
||||
$sql .= ") VALUES (";
|
||||
$sql .= $facture_id;
|
||||
$sql .= $invoice_id;
|
||||
$sql .= ", ".$line_id;
|
||||
$sql .= ")";
|
||||
|
||||
@@ -153,15 +160,15 @@ class BonPrelevement extends CommonObject
|
||||
$result = 0;
|
||||
} else {
|
||||
$result = -1;
|
||||
dol_syslog(get_class($this)."::AddFacture Erreur $result");
|
||||
dol_syslog(get_class($this)."::AddFacture Error $result");
|
||||
}
|
||||
} else {
|
||||
$result = -2;
|
||||
dol_syslog(get_class($this)."::AddFacture Erreur $result");
|
||||
dol_syslog(get_class($this)."::AddFacture Error $result");
|
||||
}
|
||||
} else {
|
||||
$result = -3;
|
||||
dol_syslog(get_class($this)."::AddFacture Erreur $result");
|
||||
dol_syslog(get_class($this)."::AddFacture Error $result");
|
||||
}
|
||||
|
||||
return $result;
|
||||
@@ -645,7 +652,7 @@ class BonPrelevement extends CommonObject
|
||||
|
||||
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
|
||||
/**
|
||||
* Returns amount of withdrawal
|
||||
* Returns amount waiting for direct debit payment or credit transfer payment
|
||||
*
|
||||
* @param string $mode 'direct-debit' or 'bank-transfer'
|
||||
* @return double <O if KO, Total amount
|
||||
@@ -662,11 +669,19 @@ class BonPrelevement extends CommonObject
|
||||
$sql .= " FROM ".MAIN_DB_PREFIX."facture_fourn as f,";
|
||||
}
|
||||
$sql .= " ".MAIN_DB_PREFIX."prelevement_facture_demande as pfd";
|
||||
$sql .= " WHERE f.fk_statut = 1";
|
||||
$sql .= " AND f.entity IN (".getEntity('invoice').")";
|
||||
$sql .= " AND f.rowid = pfd.fk_facture";
|
||||
$sql .= " WHERE f.entity IN (".getEntity('invoice').")";
|
||||
if (empty($conf->global->WITHDRAWAL_ALLOW_ANY_INVOICE_STATUS))
|
||||
{
|
||||
$sql .= " AND f.fk_statut = ".Facture::STATUS_VALIDATED;
|
||||
}
|
||||
if ($mode != 'bank-transfer') {
|
||||
$sql .= " AND f.rowid = pfd.fk_facture";
|
||||
} else {
|
||||
$sql .= " AND f.rowid = pfd.fk_facture_fourn";
|
||||
}
|
||||
$sql .= " AND f.paye = 0";
|
||||
$sql .= " AND pfd.traite = 0";
|
||||
$sql .= " AND pfd.ext_payment_id IS NULL";
|
||||
$sql .= " AND f.total_ttc > 0";
|
||||
|
||||
$resql = $this->db->query($sql);
|
||||
@@ -699,18 +714,18 @@ class BonPrelevement extends CommonObject
|
||||
|
||||
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
|
||||
/**
|
||||
* Get number of invoices to withdrawal
|
||||
* Get number of invoices to pay
|
||||
*
|
||||
* @param string $mode 'direct-debit' or 'bank-transfer'
|
||||
* @param string $type 'direct-debit' or 'bank-transfer'
|
||||
* @return int <O if KO, number of invoices if OK
|
||||
*/
|
||||
public function NbFactureAPrelever($mode = 'direct-debit')
|
||||
public function NbFactureAPrelever($type = 'direct-debit')
|
||||
{
|
||||
// phpcs:enable
|
||||
global $conf;
|
||||
|
||||
$sql = "SELECT count(f.rowid) as nb";
|
||||
if ($mode == 'bank-transfer') {
|
||||
if ($type == 'bank-transfer') {
|
||||
$sql .= " FROM ".MAIN_DB_PREFIX."facture_fourn as f";
|
||||
} else {
|
||||
$sql .= " FROM ".MAIN_DB_PREFIX."facture as f";
|
||||
@@ -721,12 +736,13 @@ class BonPrelevement extends CommonObject
|
||||
{
|
||||
$sql .= " AND f.fk_statut = ".Facture::STATUS_VALIDATED;
|
||||
}
|
||||
if ($mode == 'bank-transfer') {
|
||||
if ($type == 'bank-transfer') {
|
||||
$sql .= " AND f.rowid = pfd.fk_facture_fourn";
|
||||
} else {
|
||||
$sql .= " AND f.rowid = pfd.fk_facture";
|
||||
}
|
||||
$sql .= " AND pfd.traite = 0";
|
||||
$sql .= " AND pfd.ext_payment_id IS NULL";
|
||||
$sql .= " AND f.total_ttc > 0";
|
||||
|
||||
dol_syslog(get_class($this)."::NbFactureAPrelever");
|
||||
@@ -748,18 +764,19 @@ class BonPrelevement extends CommonObject
|
||||
|
||||
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
|
||||
/**
|
||||
* Create a withdraw
|
||||
* TODO delete params banque and agence when not necesary
|
||||
* Create a direct debit order or a credit transfer order
|
||||
* TODO delete params banque and agence when not necessary
|
||||
*
|
||||
* @param int $banque dolibarr mysoc bank
|
||||
* @param int $agence dolibarr mysoc bank office (guichet)
|
||||
* @param string $mode real=do action, simu=test only
|
||||
* @param string $format FRST, RCUR or ALL
|
||||
* @param int $banque dolibarr mysoc bank
|
||||
* @param int $agence dolibarr mysoc bank office (guichet)
|
||||
* @param string $mode real=do action, simu=test only
|
||||
* @param string $format FRST, RCUR or ALL
|
||||
* @param string $executiondate Date to execute the transfer
|
||||
* @param int $notrigger Disable triggers
|
||||
* @return int <0 if KO, nbre of invoice withdrawed if OK
|
||||
* @param string $type 'direct-debit' or 'bank-transfer'
|
||||
* @return int <0 if KO, No of invoice included into file if OK
|
||||
*/
|
||||
public function Create($banque = 0, $agence = 0, $mode = 'real', $format = 'ALL', $executiondate = '', $notrigger = 0)
|
||||
public function create($banque = 0, $agence = 0, $mode = 'real', $format = 'ALL', $executiondate = '', $notrigger = 0, $type = 'direct-debit')
|
||||
{
|
||||
// phpcs:enable
|
||||
global $conf, $langs, $user;
|
||||
@@ -769,7 +786,12 @@ class BonPrelevement extends CommonObject
|
||||
require_once DOL_DOCUMENT_ROOT."/compta/facture/class/facture.class.php";
|
||||
require_once DOL_DOCUMENT_ROOT."/societe/class/societe.class.php";
|
||||
|
||||
if (empty($format)) return 'ErrorBadParametersForDirectDebitFileCreate';
|
||||
if ($type != 'bank-transfer') {
|
||||
if (empty($format)) {
|
||||
$this->error = 'ErrorBadParametersForDirectDebitFileCreate';
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
$error = 0;
|
||||
|
||||
@@ -796,17 +818,26 @@ class BonPrelevement extends CommonObject
|
||||
$sql .= ", pfd.code_banque, pfd.code_guichet, pfd.number, pfd.cle_rib";
|
||||
$sql .= ", pfd.amount";
|
||||
$sql .= ", s.nom as name";
|
||||
$sql .= " FROM ".MAIN_DB_PREFIX."facture as f";
|
||||
if ($type != 'bank-transfer') {
|
||||
$sql .= " FROM ".MAIN_DB_PREFIX."facture as f";
|
||||
} else {
|
||||
$sql .= " FROM ".MAIN_DB_PREFIX."facture_fourn as f";
|
||||
}
|
||||
$sql .= ", ".MAIN_DB_PREFIX."societe as s";
|
||||
$sql .= ", ".MAIN_DB_PREFIX."prelevement_facture_demande as pfd";
|
||||
$sql .= " WHERE f.rowid = pfd.fk_facture";
|
||||
$sql .= " AND f.entity IN (".getEntity('invoice').')';
|
||||
$sql .= " WHERE f.entity IN (".getEntity('invoice').')';
|
||||
if ($type != 'bank-transfer') {
|
||||
$sql .= " AND f.rowid = pfd.fk_facture";
|
||||
} else {
|
||||
$sql .= " AND f.rowid = pfd.fk_facture_fourn";
|
||||
}
|
||||
$sql .= " AND s.rowid = f.fk_soc";
|
||||
//if ($banque || $agence) $sql.= " AND s.rowid = sr.fk_soc";
|
||||
$sql .= " AND f.fk_statut = 1";
|
||||
$sql .= " AND f.paye = 0";
|
||||
$sql .= " AND pfd.traite = 0";
|
||||
$sql .= " AND f.total_ttc > 0";
|
||||
$sql .= " AND pfd.ext_payment_id IS NULL";
|
||||
//if ($banque) $sql.= " AND sr.code_banque = '".$conf->global->PRELEVEMENT_CODE_BANQUE."'";
|
||||
//if ($agence) $sql.= " AND sr.code_guichet = '".$conf->global->PRELEVEMENT_CODE_GUICHET."'";
|
||||
|
||||
@@ -822,6 +853,12 @@ class BonPrelevement extends CommonObject
|
||||
{
|
||||
$row = $this->db->fetch_row($resql);
|
||||
$factures[$i] = $row; // All fields
|
||||
if ($row[7] == 0) {
|
||||
$error++;
|
||||
dol_syslog(__METHOD__."::Read invoices error Found a null invoice", LOG_ERR);
|
||||
$this->invoice_in_error[$row[0]] = "Error for invoice id ".$row[0].", found a null amount";
|
||||
break;
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
$this->db->free($resql);
|
||||
@@ -837,15 +874,19 @@ class BonPrelevement extends CommonObject
|
||||
require_once DOL_DOCUMENT_ROOT.'/societe/class/companybankaccount.class.php';
|
||||
$soc = new Societe($this->db);
|
||||
|
||||
// Check RIB
|
||||
// Check BAN
|
||||
$i = 0;
|
||||
dol_syslog(__METHOD__."::Check RIB", LOG_DEBUG);
|
||||
dol_syslog(__METHOD__."::Check BAN", LOG_DEBUG);
|
||||
|
||||
if (count($factures) > 0)
|
||||
{
|
||||
foreach ($factures as $key => $fac)
|
||||
{
|
||||
$fact = new Facture($this->db);
|
||||
if ($type != 'bank-transfer') {
|
||||
$fact = new Facture($this->db);
|
||||
} else {
|
||||
$fact = new FactureFournisseur($this->db);
|
||||
}
|
||||
$resfetch = $fact->fetch($fac[0]);
|
||||
if ($resfetch >= 0) // Field 0 of $fac is rowid of invoice
|
||||
{
|
||||
@@ -854,13 +895,15 @@ class BonPrelevement extends CommonObject
|
||||
$bac = new CompanyBankAccount($this->db);
|
||||
$bac->fetch(0, $soc->id);
|
||||
|
||||
if ($format == 'FRST' && $bac->frstrecur != 'FRST')
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if ($format == 'RCUR' && ($bac->frstrecur != 'RCUR' && $bac->frstrecur != 'RECUR'))
|
||||
{
|
||||
continue;
|
||||
if ($type != 'bank-transfer') {
|
||||
if ($format == 'FRST' && $bac->frstrecur != 'FRST')
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if ($format == 'RCUR' && ($bac->frstrecur != 'RCUR' && $bac->frstrecur != 'RECUR'))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if ($bac->verif() >= 1)
|
||||
@@ -871,26 +914,26 @@ class BonPrelevement extends CommonObject
|
||||
$i++;
|
||||
//dol_syslog(__METHOD__."::RIB is ok", LOG_DEBUG);
|
||||
} else {
|
||||
dol_syslog(__METHOD__."::Check RIB Error on default bank number IBAN/BIC for thirdparty reported by verif() ".$fact->socid." ".$soc->name, LOG_WARNING);
|
||||
dol_syslog(__METHOD__."::Check BAN Error on default bank number IBAN/BIC for thirdparty reported by verif() ".$fact->socid." ".$soc->name, LOG_WARNING);
|
||||
$this->invoice_in_error[$fac[0]] = "Error on default bank number IBAN/BIC for invoice ".$fact->getNomUrl(0)." for thirdparty ".$soc->getNomUrl(0);
|
||||
$this->thirdparty_in_error[$soc->id] = "Error on default bank number IBAN/BIC for invoice ".$fact->getNomUrl(0)." for thirdparty ".$soc->getNomUrl(0);
|
||||
}
|
||||
} else {
|
||||
dol_syslog(__METHOD__."::Check RIB Failed to read company", LOG_WARNING);
|
||||
dol_syslog(__METHOD__."::Check BAN Failed to read company", LOG_WARNING);
|
||||
}
|
||||
} else {
|
||||
dol_syslog(__METHOD__."::Check RIB Failed to read invoice", LOG_WARNING);
|
||||
dol_syslog(__METHOD__."::Check BAN Failed to read invoice", LOG_WARNING);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
dol_syslog(__METHOD__."::Check RIB No invoice to process", LOG_WARNING);
|
||||
dol_syslog(__METHOD__."::Check BAN No invoice to process", LOG_WARNING);
|
||||
}
|
||||
}
|
||||
|
||||
$ok = 0;
|
||||
|
||||
// Withdraw invoices in factures_prev array
|
||||
$out = count($factures_prev)." invoices will be withdrawn.";
|
||||
$out = count($factures_prev)." invoices will be included.";
|
||||
//print $out."\n";
|
||||
dol_syslog($out);
|
||||
|
||||
@@ -918,14 +961,14 @@ class BonPrelevement extends CommonObject
|
||||
{
|
||||
/*
|
||||
* We are in real mode.
|
||||
* We create withdraw receipt and build withdraw into disk
|
||||
* We create order and build file into disk
|
||||
*/
|
||||
$this->db->begin();
|
||||
|
||||
$now = dol_now();
|
||||
|
||||
/*
|
||||
* Traitements
|
||||
* Process order generation
|
||||
*/
|
||||
if (!$error)
|
||||
{
|
||||
@@ -937,7 +980,7 @@ class BonPrelevement extends CommonObject
|
||||
$sql .= " AND entity = ".$conf->entity;
|
||||
$sql .= " ORDER BY ref DESC LIMIT 1";
|
||||
|
||||
dol_syslog(get_class($this)."::Create sql=".$sql, LOG_DEBUG);
|
||||
dol_syslog(get_class($this)."::create sql=".$sql, LOG_DEBUG);
|
||||
$resql = $this->db->query($sql);
|
||||
|
||||
if ($resql)
|
||||
@@ -945,18 +988,23 @@ class BonPrelevement extends CommonObject
|
||||
$row = $this->db->fetch_row($resql);
|
||||
$ref = "T".$ref.str_pad(dol_substr("00".intval($row[0]) + 1, 0, 2), 2, "0", STR_PAD_LEFT);
|
||||
|
||||
$dir = $conf->prelevement->dir_output.'/receipts';
|
||||
if ($type != 'bank-transfer') {
|
||||
$dir = $conf->prelevement->dir_output.'/receipts';
|
||||
} else {
|
||||
$dir = $conf->paymentbybanktransfer->dir_output.'/receipts';
|
||||
}
|
||||
if (!is_dir($dir)) dol_mkdir($dir);
|
||||
|
||||
$this->filename = $dir.'/'.$ref.'.xml';
|
||||
|
||||
// Create withdraw receipt in database
|
||||
$sql = "INSERT INTO ".MAIN_DB_PREFIX."prelevement_bons (";
|
||||
$sql .= " ref, entity, datec";
|
||||
$sql .= " ref, entity, datec, type";
|
||||
$sql .= ") VALUES (";
|
||||
$sql .= "'".$this->db->escape($ref)."'";
|
||||
$sql .= ", ".$conf->entity;
|
||||
$sql .= ", '".$this->db->idate($now)."'";
|
||||
$sql .= ", '".($type == 'bank-transfer' ? 'bank-transfer' : 'debit-order')."'";
|
||||
$sql .= ")";
|
||||
|
||||
$resql = $this->db->query($sql);
|
||||
@@ -987,10 +1035,13 @@ class BonPrelevement extends CommonObject
|
||||
// Fetch invoice
|
||||
$fact = new Facture($this->db);
|
||||
$fact->fetch($fac[0]);
|
||||
|
||||
/*
|
||||
* Add standing order
|
||||
*
|
||||
*
|
||||
* $fac[0] : invoice_id
|
||||
* $fac[1] : ???
|
||||
* $fac[2] : third party id
|
||||
* $fac[3] : banque
|
||||
* $fac[4] : guichet
|
||||
* $fac[5] : number
|
||||
@@ -999,7 +1050,8 @@ class BonPrelevement extends CommonObject
|
||||
* $fac[8] : client nom
|
||||
* $fac[2] : client id
|
||||
*/
|
||||
$ri = $this->AddFacture($fac[0], $fac[2], $fac[8], $fac[7], $fac[3], $fac[4], $fac[5], $fac[6]);
|
||||
|
||||
$ri = $this->AddFacture($fac[0], $fac[2], $fac[8], $fac[7], $fac[3], $fac[4], $fac[5], $fac[6], $type);
|
||||
if ($ri <> 0)
|
||||
{
|
||||
$error++;
|
||||
@@ -1012,13 +1064,12 @@ class BonPrelevement extends CommonObject
|
||||
$sql .= ", fk_prelevement_bons = ".$this->id;
|
||||
$sql .= " WHERE rowid = ".$fac[1];
|
||||
|
||||
dol_syslog(__METHOD__."::Update Orders::Sql=".$sql, LOG_DEBUG);
|
||||
$resql = $this->db->query($sql);
|
||||
|
||||
if (!$resql)
|
||||
{
|
||||
$error++;
|
||||
dol_syslog(__METHOD__."::Update Orders::Error=".$this->db->error(), LOG_ERR);
|
||||
dol_syslog(__METHOD__."::Update Error=".$this->db->error(), LOG_ERR);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1027,11 +1078,10 @@ class BonPrelevement extends CommonObject
|
||||
if (!$error)
|
||||
{
|
||||
/*
|
||||
* Create direct debit order in a XML file
|
||||
* Create file of direct debit order or credit transfer into a XML file
|
||||
*/
|
||||
|
||||
dol_syslog(__METHOD__."::Init withdraw receipt for ".count($factures_prev)." invoices", LOG_DEBUG);
|
||||
|
||||
dol_syslog(__METHOD__."::Init direct debit file for ".count($factures_prev)." invoices", LOG_DEBUG);
|
||||
|
||||
if (count($factures_prev) > 0)
|
||||
{
|
||||
@@ -1058,14 +1108,15 @@ class BonPrelevement extends CommonObject
|
||||
$this->context['factures_prev'] = $factures_prev;
|
||||
|
||||
// Generation of SEPA file $this->filename
|
||||
$this->generate($format, $executiondate);
|
||||
// This also the the property $this->total that is included into file
|
||||
$result = $this->generate($format, $executiondate, $type);
|
||||
}
|
||||
dol_syslog(__METHOD__."::End withdraw receipt, file ".$this->filename, LOG_DEBUG);
|
||||
}
|
||||
//var_dump($factures_prev);exit;
|
||||
|
||||
/*
|
||||
* Update total
|
||||
* Update total defined after generation of file
|
||||
*/
|
||||
$sql = "UPDATE ".MAIN_DB_PREFIX."prelevement_bons";
|
||||
$sql .= " SET amount = ".price2num($this->total);
|
||||
@@ -1081,8 +1132,13 @@ class BonPrelevement extends CommonObject
|
||||
|
||||
if (!$error && !$notrigger)
|
||||
{
|
||||
$triggername = 'DIRECT_DEBIT_ORDER_CREATE';
|
||||
if ($type != 'bank-transfer') {
|
||||
$triggername = 'CREDIT_TRANSFER_ORDER_CREATE';
|
||||
}
|
||||
|
||||
// Call trigger
|
||||
$result = $this->call_trigger('DIRECT_DEBIT_ORDER_CREATE', $user);
|
||||
$result = $this->call_trigger($triggername, $user);
|
||||
if ($result < 0) $error++;
|
||||
// End call triggers
|
||||
}
|
||||
@@ -1332,17 +1388,18 @@ class BonPrelevement extends CommonObject
|
||||
|
||||
|
||||
/**
|
||||
* Generate a withdrawal file.
|
||||
* Generate a direct debit or credit transfer file.
|
||||
* Generation Formats:
|
||||
* - Europe: SEPA (France: CFONB no more supported, Spain: AEB19 if external module EsAEB is enabled)
|
||||
* - Others countries: Warning message
|
||||
* File is generated with name this->filename
|
||||
*
|
||||
* @param string $format FRST, RCUR or ALL
|
||||
* @param string $executiondate Date to execute transfer
|
||||
* @return int 0 if OK, <0 if KO
|
||||
* @param string $format FRST, RCUR or ALL
|
||||
* @param string $executiondate Date to execute transfer
|
||||
* @param string $type 'direct-debit' or 'credit-transfer'
|
||||
* @return int >=0 if OK, <0 if KO
|
||||
*/
|
||||
public function generate($format = 'ALL', $executiondate = '')
|
||||
public function generate($format = 'ALL', $executiondate = '', $type = 'direct-debit')
|
||||
{
|
||||
global $conf, $langs, $mysoc;
|
||||
|
||||
@@ -1350,7 +1407,7 @@ class BonPrelevement extends CommonObject
|
||||
|
||||
$result = 0;
|
||||
|
||||
dol_syslog(get_class($this)."::generate build file ".$this->filename);
|
||||
dol_syslog(get_class($this)."::generate build file=".$this->filename." type=".$type);
|
||||
|
||||
$this->file = fopen($this->filename, "w");
|
||||
if (empty($this->file))
|
||||
@@ -1360,159 +1417,197 @@ class BonPrelevement extends CommonObject
|
||||
}
|
||||
|
||||
$found = 0;
|
||||
$this->total = 0;
|
||||
|
||||
// Build file for European countries
|
||||
if ($mysoc->isInEEC())
|
||||
{
|
||||
$found++;
|
||||
|
||||
/**
|
||||
* SECTION CREATION FICHIER SEPA
|
||||
*/
|
||||
// SEPA Initialisation
|
||||
$CrLf = "\n";
|
||||
if ($type == 'bank-transfer') {
|
||||
print 'TODO';
|
||||
exit;
|
||||
} else {
|
||||
/**
|
||||
* SECTION CREATION FICHIER SEPA
|
||||
*/
|
||||
// SEPA Initialisation
|
||||
$CrLf = "\n";
|
||||
|
||||
$now = dol_now();
|
||||
$now = dol_now();
|
||||
|
||||
$dateTime_ECMA = dol_print_date($now, '%Y-%m-%dT%H:%M:%S');
|
||||
$dateTime_ECMA = dol_print_date($now, '%Y-%m-%dT%H:%M:%S');
|
||||
|
||||
$date_actu = $now;
|
||||
if (!empty($executiondate)) $date_actu = $executiondate;
|
||||
$date_actu = $now;
|
||||
if (!empty($executiondate)) $date_actu = $executiondate;
|
||||
|
||||
$dateTime_YMD = dol_print_date($date_actu, '%Y%m%d');
|
||||
$dateTime_YMDHMS = dol_print_date($date_actu, '%Y%m%d%H%M%S');
|
||||
$fileDebiteurSection = '';
|
||||
$fileEmetteurSection = '';
|
||||
$i = 0;
|
||||
$this->total = 0;
|
||||
$dateTime_YMD = dol_print_date($date_actu, '%Y%m%d');
|
||||
$dateTime_YMDHMS = dol_print_date($date_actu, '%Y%m%d%H%M%S');
|
||||
$fileDebiteurSection = '';
|
||||
$fileEmetteurSection = '';
|
||||
$i = 0;
|
||||
|
||||
/*
|
||||
* section Debiteur (sepa Debiteurs bloc lines)
|
||||
*/
|
||||
/*
|
||||
* Section Debitor (sepa Debiteurs bloc lines)
|
||||
*/
|
||||
|
||||
$sql = "SELECT soc.code_client as code, soc.address, soc.zip, soc.town, c.code as country_code,";
|
||||
$sql .= " pl.client_nom as nom, pl.code_banque as cb, pl.code_guichet as cg, pl.number as cc, pl.amount as somme,";
|
||||
$sql .= " f.ref as fac, pf.fk_facture as idfac, rib.datec, rib.iban_prefix as iban, rib.bic as bic, rib.rowid as drum, rib.rum, rib.date_rum";
|
||||
$sql .= " FROM";
|
||||
$sql .= " ".MAIN_DB_PREFIX."prelevement_lignes as pl,";
|
||||
$sql .= " ".MAIN_DB_PREFIX."facture as f,";
|
||||
$sql .= " ".MAIN_DB_PREFIX."prelevement_facture as pf,";
|
||||
$sql .= " ".MAIN_DB_PREFIX."societe as soc,";
|
||||
$sql .= " ".MAIN_DB_PREFIX."c_country as c,";
|
||||
$sql .= " ".MAIN_DB_PREFIX."societe_rib as rib";
|
||||
$sql .= " WHERE pl.fk_prelevement_bons = ".$this->id;
|
||||
$sql .= " AND pl.rowid = pf.fk_prelevement_lignes";
|
||||
$sql .= " AND pf.fk_facture = f.rowid";
|
||||
$sql .= " AND soc.fk_pays = c.rowid";
|
||||
$sql .= " AND soc.rowid = f.fk_soc";
|
||||
$sql .= " AND rib.fk_soc = f.fk_soc";
|
||||
$sql .= " AND rib.default_rib = 1";
|
||||
$sql .= " AND rib.type = 'ban'";
|
||||
//print $sql;
|
||||
$sql = "SELECT soc.code_client as code, soc.address, soc.zip, soc.town, c.code as country_code,";
|
||||
$sql .= " pl.client_nom as nom, pl.code_banque as cb, pl.code_guichet as cg, pl.number as cc, pl.amount as somme,";
|
||||
$sql .= " f.ref as fac, pf.fk_facture as idfac, rib.datec, rib.iban_prefix as iban, rib.bic as bic, rib.rowid as drum, rib.rum, rib.date_rum";
|
||||
$sql .= " FROM";
|
||||
$sql .= " ".MAIN_DB_PREFIX."prelevement_lignes as pl,";
|
||||
$sql .= " ".MAIN_DB_PREFIX."facture as f,";
|
||||
$sql .= " ".MAIN_DB_PREFIX."prelevement_facture as pf,";
|
||||
$sql .= " ".MAIN_DB_PREFIX."societe as soc,";
|
||||
$sql .= " ".MAIN_DB_PREFIX."c_country as c,";
|
||||
$sql .= " ".MAIN_DB_PREFIX."societe_rib as rib";
|
||||
$sql .= " WHERE pl.fk_prelevement_bons = ".$this->id;
|
||||
$sql .= " AND pl.rowid = pf.fk_prelevement_lignes";
|
||||
$sql .= " AND pf.fk_facture = f.rowid";
|
||||
$sql .= " AND soc.fk_pays = c.rowid";
|
||||
$sql .= " AND soc.rowid = f.fk_soc";
|
||||
$sql .= " AND rib.fk_soc = f.fk_soc";
|
||||
$sql .= " AND rib.default_rib = 1";
|
||||
$sql .= " AND rib.type = 'ban'";
|
||||
//print $sql;
|
||||
|
||||
// Define $fileDebiteurSection. One section DrctDbtTxInf per invoice.
|
||||
$resql = $this->db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
$num = $this->db->num_rows($resql);
|
||||
while ($i < $num)
|
||||
// Define $fileDebiteurSection. One section DrctDbtTxInf per invoice.
|
||||
$resql = $this->db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
$obj = $this->db->fetch_object($resql);
|
||||
$daterum = (!empty($obj->date_rum)) ? $this->db->jdate($obj->date_rum) : $this->db->jdate($obj->datec);
|
||||
$fileDebiteurSection .= $this->EnregDestinataireSEPA($obj->code, $obj->nom, $obj->address, $obj->zip, $obj->town, $obj->country_code, $obj->cb, $obj->cg, $obj->cc, $obj->somme, $obj->fac, $obj->idfac, $obj->iban, $obj->bic, $daterum, $obj->drum, $obj->rum);
|
||||
$this->total = $this->total + $obj->somme;
|
||||
$i++;
|
||||
$num = $this->db->num_rows($resql);
|
||||
while ($i < $num)
|
||||
{
|
||||
$obj = $this->db->fetch_object($resql);
|
||||
$daterum = (!empty($obj->date_rum)) ? $this->db->jdate($obj->date_rum) : $this->db->jdate($obj->datec);
|
||||
$fileDebiteurSection .= $this->EnregDestinataireSEPA($obj->code, $obj->nom, $obj->address, $obj->zip, $obj->town, $obj->country_code, $obj->cb, $obj->cg, $obj->cc, $obj->somme, $obj->fac, $obj->idfac, $obj->iban, $obj->bic, $daterum, $obj->drum, $obj->rum);
|
||||
$this->total = $this->total + $obj->somme;
|
||||
$i++;
|
||||
}
|
||||
$nbtotalDrctDbtTxInf = $i;
|
||||
} else {
|
||||
fputs($this->file, 'ERROR DEBITOR '.$sql.$CrLf); // DEBITOR = Customers
|
||||
$result = -2;
|
||||
}
|
||||
$nbtotalDrctDbtTxInf = $i;
|
||||
} else {
|
||||
fputs($this->file, 'ERROR DEBITOR '.$sql.$CrLf); // DEBITOR = Customers
|
||||
$result = -2;
|
||||
}
|
||||
|
||||
// Define $fileEmetteurSection. Start of bloc PmtInf. Will contains all DrctDbtTxInf
|
||||
if ($result != -2)
|
||||
{
|
||||
$fileEmetteurSection .= $this->EnregEmetteurSEPA($conf, $date_actu, $nbtotalDrctDbtTxInf, $this->total, $CrLf, $format);
|
||||
} else {
|
||||
fputs($this->file, 'ERROR CREDITOR'.$CrLf); // CREDITOR = My company
|
||||
}
|
||||
// Define $fileEmetteurSection. Start of bloc PmtInf. Will contains all DrctDbtTxInf
|
||||
if ($result != -2)
|
||||
{
|
||||
$fileEmetteurSection .= $this->EnregEmetteurSEPA($conf, $date_actu, $nbtotalDrctDbtTxInf, $this->total, $CrLf, $format);
|
||||
} else {
|
||||
fputs($this->file, 'ERROR CREDITOR'.$CrLf); // CREDITOR = My company
|
||||
}
|
||||
|
||||
/**
|
||||
* SECTION CREATION SEPA FILE
|
||||
*/
|
||||
// SEPA File Header
|
||||
fputs($this->file, '<'.'?xml version="1.0" encoding="UTF-8" standalone="yes"?'.'>'.$CrLf);
|
||||
fputs($this->file, '<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.008.001.02" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">'.$CrLf);
|
||||
fputs($this->file, ' <CstmrDrctDbtInitn>'.$CrLf);
|
||||
// SEPA Group header
|
||||
fputs($this->file, ' <GrpHdr>'.$CrLf);
|
||||
fputs($this->file, ' <MsgId>'.('PREL'.$dateTime_YMD.'/REF'.$this->id).'</MsgId>'.$CrLf);
|
||||
fputs($this->file, ' <CreDtTm>'.$dateTime_ECMA.'</CreDtTm>'.$CrLf);
|
||||
fputs($this->file, ' <NbOfTxs>'.$i.'</NbOfTxs>'.$CrLf);
|
||||
fputs($this->file, ' <CtrlSum>'.$this->total.'</CtrlSum>'.$CrLf);
|
||||
fputs($this->file, ' <InitgPty>'.$CrLf);
|
||||
fputs($this->file, ' <Nm>'.strtoupper(dol_string_unaccent($this->raison_sociale)).'</Nm>'.$CrLf);
|
||||
fputs($this->file, ' <Id>'.$CrLf);
|
||||
fputs($this->file, ' <PrvtId>'.$CrLf);
|
||||
fputs($this->file, ' <Othr>'.$CrLf);
|
||||
fputs($this->file, ' <Id>'.$conf->global->PRELEVEMENT_ICS.'</Id>'.$CrLf);
|
||||
fputs($this->file, ' </Othr>'.$CrLf);
|
||||
fputs($this->file, ' </PrvtId>'.$CrLf);
|
||||
fputs($this->file, ' </Id>'.$CrLf);
|
||||
fputs($this->file, ' </InitgPty>'.$CrLf);
|
||||
fputs($this->file, ' </GrpHdr>'.$CrLf);
|
||||
// SEPA File Emetteur
|
||||
if ($result != -2)
|
||||
{ fputs($this-> file, $fileEmetteurSection); }
|
||||
// SEPA File Debiteurs
|
||||
if ($result != -2)
|
||||
{ fputs($this-> file, $fileDebiteurSection); }
|
||||
// SEPA FILE FOOTER
|
||||
fputs($this->file, ' </PmtInf>'.$CrLf);
|
||||
fputs($this->file, ' </CstmrDrctDbtInitn>'.$CrLf);
|
||||
fputs($this->file, '</Document>'.$CrLf);
|
||||
/**
|
||||
* SECTION CREATION SEPA FILE
|
||||
*/
|
||||
// SEPA File Header
|
||||
fputs($this->file, '<'.'?xml version="1.0" encoding="UTF-8" standalone="yes"?'.'>'.$CrLf);
|
||||
fputs($this->file, '<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.008.001.02" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">'.$CrLf);
|
||||
fputs($this->file, ' <CstmrDrctDbtInitn>'.$CrLf);
|
||||
// SEPA Group header
|
||||
fputs($this->file, ' <GrpHdr>'.$CrLf);
|
||||
fputs($this->file, ' <MsgId>'.('PREL'.$dateTime_YMD.'/REF'.$this->id).'</MsgId>'.$CrLf);
|
||||
fputs($this->file, ' <CreDtTm>'.$dateTime_ECMA.'</CreDtTm>'.$CrLf);
|
||||
fputs($this->file, ' <NbOfTxs>'.$i.'</NbOfTxs>'.$CrLf);
|
||||
fputs($this->file, ' <CtrlSum>'.$this->total.'</CtrlSum>'.$CrLf);
|
||||
fputs($this->file, ' <InitgPty>'.$CrLf);
|
||||
fputs($this->file, ' <Nm>'.strtoupper(dol_string_unaccent($this->raison_sociale)).'</Nm>'.$CrLf);
|
||||
fputs($this->file, ' <Id>'.$CrLf);
|
||||
fputs($this->file, ' <PrvtId>'.$CrLf);
|
||||
fputs($this->file, ' <Othr>'.$CrLf);
|
||||
fputs($this->file, ' <Id>'.$conf->global->PRELEVEMENT_ICS.'</Id>'.$CrLf);
|
||||
fputs($this->file, ' </Othr>'.$CrLf);
|
||||
fputs($this->file, ' </PrvtId>'.$CrLf);
|
||||
fputs($this->file, ' </Id>'.$CrLf);
|
||||
fputs($this->file, ' </InitgPty>'.$CrLf);
|
||||
fputs($this->file, ' </GrpHdr>'.$CrLf);
|
||||
// SEPA File Emetteur
|
||||
if ($result != -2)
|
||||
{ fputs($this-> file, $fileEmetteurSection); }
|
||||
// SEPA File Debiteurs
|
||||
if ($result != -2)
|
||||
{ fputs($this-> file, $fileDebiteurSection); }
|
||||
// SEPA FILE FOOTER
|
||||
fputs($this->file, ' </PmtInf>'.$CrLf);
|
||||
fputs($this->file, ' </CstmrDrctDbtInitn>'.$CrLf);
|
||||
fputs($this->file, '</Document>'.$CrLf);
|
||||
}
|
||||
}
|
||||
|
||||
// Build file for Other Countries with unknow format
|
||||
if (!$found)
|
||||
{
|
||||
$this->total = 0;
|
||||
$sql = "SELECT pl.amount";
|
||||
$sql .= " FROM";
|
||||
$sql .= " ".MAIN_DB_PREFIX."prelevement_lignes as pl,";
|
||||
$sql .= " ".MAIN_DB_PREFIX."facture as f,";
|
||||
$sql .= " ".MAIN_DB_PREFIX."prelevement_facture as pf";
|
||||
$sql .= " WHERE pl.fk_prelevement_bons = ".$this->id;
|
||||
$sql .= " AND pl.rowid = pf.fk_prelevement_lignes";
|
||||
$sql .= " AND pf.fk_facture = f.rowid";
|
||||
if ($type == 'bank-transfer') {
|
||||
$sql = "SELECT pl.amount";
|
||||
$sql .= " FROM";
|
||||
$sql .= " ".MAIN_DB_PREFIX."prelevement_lignes as pl,";
|
||||
$sql .= " ".MAIN_DB_PREFIX."facture_fourn as f,";
|
||||
$sql .= " ".MAIN_DB_PREFIX."prelevement_facture as pf";
|
||||
$sql .= " WHERE pl.fk_prelevement_bons = ".$this->id;
|
||||
$sql .= " AND pl.rowid = pf.fk_prelevement_lignes";
|
||||
$sql .= " AND pf.fk_facture_fourn = f.rowid";
|
||||
|
||||
//Lines
|
||||
$i = 0;
|
||||
$resql = $this->db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
$num = $this->db->num_rows($resql);
|
||||
|
||||
while ($i < $num)
|
||||
// Lines
|
||||
$i = 0;
|
||||
$resql = $this->db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
$obj = $this->db->fetch_object($resql);
|
||||
$this->total = $this->total + $obj->amount;
|
||||
$i++;
|
||||
$num = $this->db->num_rows($resql);
|
||||
|
||||
while ($i < $num)
|
||||
{
|
||||
$obj = $this->db->fetch_object($resql);
|
||||
$this->total = $this->total + $obj->amount;
|
||||
|
||||
// TODO Write record into file
|
||||
$i++;
|
||||
}
|
||||
} else {
|
||||
$result = -2;
|
||||
}
|
||||
} else {
|
||||
$result = -2;
|
||||
$sql = "SELECT pl.amount";
|
||||
$sql .= " FROM";
|
||||
$sql .= " ".MAIN_DB_PREFIX."prelevement_lignes as pl,";
|
||||
$sql .= " ".MAIN_DB_PREFIX."facture as f,";
|
||||
$sql .= " ".MAIN_DB_PREFIX."prelevement_facture as pf";
|
||||
$sql .= " WHERE pl.fk_prelevement_bons = ".$this->id;
|
||||
$sql .= " AND pl.rowid = pf.fk_prelevement_lignes";
|
||||
$sql .= " AND pf.fk_facture = f.rowid";
|
||||
|
||||
// Lines
|
||||
$i = 0;
|
||||
$resql = $this->db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
$num = $this->db->num_rows($resql);
|
||||
|
||||
while ($i < $num)
|
||||
{
|
||||
$obj = $this->db->fetch_object($resql);
|
||||
$this->total = $this->total + $obj->amount;
|
||||
|
||||
// TODO Write record into file
|
||||
$i++;
|
||||
}
|
||||
} else {
|
||||
$result = -2;
|
||||
}
|
||||
}
|
||||
|
||||
$langs->load('withdrawals');
|
||||
|
||||
// TODO Add here code to generate a generic file
|
||||
fputs($this->file, $langs->trans('WithdrawalFileNotCapable', $mysoc->country_code));
|
||||
fputs($this->file, $langs->transnoentitiesnoconv('WithdrawalFileNotCapable', $mysoc->country_code));
|
||||
}
|
||||
|
||||
fclose($this->file);
|
||||
if (!empty($conf->global->MAIN_UMASK))
|
||||
if (!empty($conf->global->MAIN_UMASK)) {
|
||||
@chmod($this->file, octdec($conf->global->MAIN_UMASK));
|
||||
return $result;
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
<?php
|
||||
/* Copyright (C) 2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||
* Copyright (C) 2010-2015 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2010-2020 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2005-2009 Regis Houssin <regis.houssin@inodbox.com>
|
||||
* Copyright (C) 2010-2012 Juanjo Menent <jmenent@2byte.es>
|
||||
* Copyright (C) 2018 Nicolas ZABOURI <info@inovea-conseil.com>
|
||||
* Copyright (C) 2018 Frédéric France <frederic.france@netlogic.fr>
|
||||
* Copyright (C) 2019 Markus Welters <markus@welters.de>
|
||||
* Copyright (C) 2019 Markus Welters <markus@welters.de>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@@ -24,7 +24,7 @@
|
||||
/**
|
||||
* \file htdocs/compta/prelevement/create.php
|
||||
* \ingroup prelevement
|
||||
* \brief Prelevement creation page
|
||||
* \brief Page to create a direct debit order or a credit transfer order
|
||||
*/
|
||||
|
||||
require '../../main.inc.php';
|
||||
@@ -77,11 +77,17 @@ if (empty($reshook))
|
||||
}
|
||||
if ($action == 'create')
|
||||
{
|
||||
// $conf->global->PRELEVEMENT_CODE_BANQUE and $conf->global->PRELEVEMENT_CODE_GUICHET should be empty
|
||||
$delayindays = 0;
|
||||
if ($type != 'bank-transfer') {
|
||||
$conf->global->PRELEVEMENT_ADDDAYS;
|
||||
} else {
|
||||
$conf->global->PAYMENTBYBANKTRANSFER_ADDDAYS;
|
||||
}
|
||||
$bprev = new BonPrelevement($db);
|
||||
$executiondate = dol_mktime(0, 0, 0, GETPOST('remonth'), (GETPOST('reday') + $conf->global->PRELEVEMENT_ADDDAYS), GETPOST('reyear'));
|
||||
$executiondate = dol_mktime(0, 0, 0, GETPOST('remonth', 'int'), (GETPOST('reday', 'int') + $delayindays), GETPOST('reyear', 'int'));
|
||||
|
||||
$result = $bprev->create($conf->global->PRELEVEMENT_CODE_BANQUE, $conf->global->PRELEVEMENT_CODE_GUICHET, $mode, $format, $executiondate);
|
||||
// $conf->global->PRELEVEMENT_CODE_BANQUE and $conf->global->PRELEVEMENT_CODE_GUICHET should be empty (we don't use them anymore)
|
||||
$result = $bprev->create($conf->global->PRELEVEMENT_CODE_BANQUE, $conf->global->PRELEVEMENT_CODE_GUICHET, $mode, $format, $executiondate, 0, $type);
|
||||
if ($result < 0)
|
||||
{
|
||||
setEventMessages($bprev->error, $bprev->errors, 'errors');
|
||||
@@ -111,7 +117,11 @@ if (empty($reshook))
|
||||
$form = new Form($db);
|
||||
|
||||
$thirdpartystatic = new Societe($db);
|
||||
$invoicestatic = new Facture($db);
|
||||
if ($type != 'bank-transfer') {
|
||||
$invoicestatic = new Facture($db);
|
||||
} else {
|
||||
$invoicestatic = new FactureFournisseur($db);
|
||||
}
|
||||
$bprev = new BonPrelevement($db);
|
||||
|
||||
llxHeader('', $langs->trans("NewStandingOrder"));
|
||||
@@ -174,15 +184,25 @@ print '<div class="tabsAction">'."\n";
|
||||
|
||||
print '<form action="'.$_SERVER['PHP_SELF'].'?action=create" method="POST">';
|
||||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||
print '<input type="hidden" name="type" value="'.$type.'">';
|
||||
if ($nb) {
|
||||
if ($pricetowithdraw) {
|
||||
print $langs->trans('ExecutionDate').' ';
|
||||
print $form->selectDate();
|
||||
$datere = dol_mktime(0, 0, 0, GETPOST('remonth', 'int'), GETPOST('reday', 'int'), GETPOST('reyear', 'int'));
|
||||
print $form->selectDate($datere, 're');
|
||||
|
||||
if ($mysoc->isInEEC()) {
|
||||
$title = $langs->trans("CreateForSepa");
|
||||
if ($type == 'bank-transfer') {
|
||||
$title = $langs->trans("CreateSepaFileForPaymentByBankTransfer");
|
||||
}
|
||||
|
||||
print '<select name="format"><option value="FRST">'.$langs->trans('SEPAFRST').'</option><option value="RCUR">'.$langs->trans('SEPARCUR').'</option></select>';
|
||||
if ($type != 'bank-transfer') {
|
||||
print '<select name="format">';
|
||||
print '<option value="FRST"'.(GETPOST('format', 'aZ09') == 'FRST' ? ' selected="selected"' : '').'>'.$langs->trans('SEPAFRST').'</option>';
|
||||
print '<option value="RCUR"'.(GETPOST('format', 'aZ09') == 'RCUR' ? ' selected="selected"' : '').'>'.$langs->trans('SEPARCUR').'</option>';
|
||||
print '</select>';
|
||||
}
|
||||
print '<input class="butAction" type="submit" value="'.$title.'"/>';
|
||||
} else {
|
||||
$title = $langs->trans("CreateAll");
|
||||
@@ -248,8 +268,10 @@ if (empty($conf->global->WITHDRAWAL_ALLOW_ANY_INVOICE_STATUS))
|
||||
{
|
||||
$sql .= " AND f.fk_statut = ".Facture::STATUS_VALIDATED;
|
||||
}
|
||||
$sql .= " AND f.total_ttc > 0";
|
||||
//$sql .= " AND pfd.amount > 0";
|
||||
$sql .= " AND f.total_ttc > 0"; // Avoid credit notes
|
||||
$sql .= " AND pfd.traite = 0";
|
||||
$sql .= " AND pfd.ext_payment_id IS NULL";
|
||||
if ($type == 'bank-transfer') {
|
||||
$sql .= " AND pfd.fk_facture_fourn = f.rowid";
|
||||
} else {
|
||||
@@ -295,9 +317,14 @@ if ($resql)
|
||||
}
|
||||
print_barre_liste($title, $page, $_SERVER['PHP_SELF'], $param, '', '', '', $num, $nbtotalofrecords, 'bill', 0, '', '', $limit);
|
||||
|
||||
$tradinvoice = "Invoice";
|
||||
if ($type == 'bank-transfer') {
|
||||
$tradinvoice = "SupplierInvoice";
|
||||
}
|
||||
|
||||
print '<table class="noborder centpercent">';
|
||||
print '<tr class="liste_titre">';
|
||||
print '<td>'.$langs->trans("Invoice").'</td>';
|
||||
print '<td>'.$langs->trans($tradinvoice).'</td>';
|
||||
print '<td>'.$langs->trans("ThirdParty").'</td>';
|
||||
print '<td>'.$langs->trans("RIB").'</td>';
|
||||
print '<td>'.$langs->trans("RUM").'</td>';
|
||||
@@ -341,7 +368,9 @@ if ($resql)
|
||||
print '<td>';
|
||||
print $thirdpartystatic->display_rib('rum');
|
||||
$format = $thirdpartystatic->display_rib('format');
|
||||
if ($format) print ' ('.$format.')';
|
||||
if ($type != 'bank-transfer') {
|
||||
if ($format) print ' ('.$format.')';
|
||||
}
|
||||
print '</td>';
|
||||
// Amount
|
||||
print '<td class="right">';
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
/**
|
||||
* \file htdocs/compta/prelevement/index.php
|
||||
* \ingroup prelevement
|
||||
* \brief Prelevement index page
|
||||
* \brief Home page for direct debit orders
|
||||
*/
|
||||
|
||||
|
||||
@@ -94,7 +94,7 @@ print '</td></tr></table></div><br>';
|
||||
*/
|
||||
$sql = "SELECT f.ref, f.rowid, f.total_ttc, f.fk_statut, f.paye, f.type,";
|
||||
$sql .= " pfd.date_demande, pfd.amount,";
|
||||
$sql .= " s.nom as name, s.rowid as socid";
|
||||
$sql .= " s.nom as name, s.email, s.rowid as socid";
|
||||
$sql .= " FROM ".MAIN_DB_PREFIX."facture as f,";
|
||||
$sql .= " ".MAIN_DB_PREFIX."societe as s";
|
||||
if (!$user->rights->societe->client->voir && !$socid) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
|
||||
@@ -106,7 +106,9 @@ if (empty($conf->global->WITHDRAWAL_ALLOW_ANY_INVOICE_STATUS))
|
||||
{
|
||||
$sql .= " AND f.fk_statut = ".Facture::STATUS_VALIDATED;
|
||||
}
|
||||
$sql .= " AND pfd.traite = 0 AND pfd.fk_facture = f.rowid";
|
||||
$sql .= " AND pfd.traite = 0";
|
||||
$sql .= " AND pfd.ext_payment_id IS NULL";
|
||||
$sql .= " AND pfd.fk_facture = f.rowid";
|
||||
if (!$user->rights->societe->client->voir && !$socid) $sql .= " AND s.rowid = sc.fk_soc AND sc.fk_user = ".$user->id;
|
||||
if ($socid) $sql .= " AND f.fk_soc = ".$socid;
|
||||
|
||||
@@ -133,14 +135,15 @@ if ($resql)
|
||||
$invoicestatic->type = $obj->type;
|
||||
$alreadypayed = $invoicestatic->getSommePaiement();
|
||||
|
||||
$thirdpartystatic->id = $obj->socid;
|
||||
$thirdpartystatic->name = $obj->name;
|
||||
$thirdpartystatic->email = $obj->email;
|
||||
|
||||
print '<tr class="oddeven"><td>';
|
||||
print $invoicestatic->getNomUrl(1, 'withdraw');
|
||||
print '</td>';
|
||||
|
||||
print '<td>';
|
||||
$thirdpartystatic->id = $obj->socid;
|
||||
$thirdpartystatic->name = $obj->name;
|
||||
print $thirdpartystatic->getNomUrl(1, 'customer');
|
||||
print '</td>';
|
||||
|
||||
@@ -171,8 +174,9 @@ print '</div><div class="fichetwothirdright"><div class="ficheaddleft">';
|
||||
|
||||
|
||||
/*
|
||||
* Withdraw receipts
|
||||
* Direct debit orders
|
||||
*/
|
||||
|
||||
$limit = 5;
|
||||
$sql = "SELECT p.rowid, p.ref, p.amount, p.datec, p.statut";
|
||||
$sql .= " FROM ".MAIN_DB_PREFIX."prelevement_bons as p";
|
||||
@@ -189,7 +193,8 @@ if ($result)
|
||||
print"\n<!-- debut table -->\n";
|
||||
print '<div class="div-table-responsive-no-min">';
|
||||
print '<table class="noborder centpercent">';
|
||||
print '<tr class="liste_titre"><th>'.$langs->trans("LastWithdrawalReceipt", $limit).'</th>';
|
||||
print '<tr class="liste_titre">';
|
||||
print '<th>'.$langs->trans("LastWithdrawalReceipt", $limit).'</th>';
|
||||
print '<th>'.$langs->trans("Date").'</th>';
|
||||
print '<th class="right">'.$langs->trans("Amount").'</th>';
|
||||
print '<th class="right">'.$langs->trans("Status").'</th>';
|
||||
@@ -217,7 +222,7 @@ if ($result)
|
||||
$i++;
|
||||
}
|
||||
} else {
|
||||
print '<tr><td class="opacitymedium">'.$langs->trans("None").'</td></tr>';
|
||||
print '<tr><td class="opacitymedium" colspan="4">'.$langs->trans("None").'</td></tr>';
|
||||
}
|
||||
|
||||
print "</table></div><br>";
|
||||
|
||||
@@ -2041,13 +2041,6 @@ if ($action == 'create')
|
||||
else print '<div class="inline-block divButAction"><a class="butActionRefused classfortooltip" href="#" title="'.$langs->trans("NotEnoughPermissions").'">'.$langs->trans("Modify").'</a></div>';
|
||||
}
|
||||
|
||||
if (!empty($conf->facture->enabled) && $object->statut > 0)
|
||||
{
|
||||
$langs->load("bills");
|
||||
if ($user->rights->facture->creer) print '<div class="inline-block divButAction"><a class="butAction" href="'.DOL_URL_ROOT.'/compta/facture/card.php?action=create&origin='.$object->element.'&originid='.$object->id.'&socid='.$object->thirdparty->id.'">'.$langs->trans("CreateBill").'</a></div>';
|
||||
else print '<div class="inline-block divButAction"><a class="butActionRefused classfortooltip" href="#" title="'.$langs->trans("NotEnoughPermissions").'">'.$langs->trans("CreateBill").'</a></div>';
|
||||
}
|
||||
|
||||
if (!empty($conf->commande->enabled) && $object->statut > 0 && $object->nbofservicesclosed < $nbofservices)
|
||||
{
|
||||
$langs->load("orders");
|
||||
@@ -2055,9 +2048,11 @@ if ($action == 'create')
|
||||
else print '<div class="inline-block divButAction"><a class="butActionRefused classfortooltip" href="#" title="'.$langs->trans("NotEnoughPermissions").'">'.$langs->trans("CreateOrder").'</a></div>';
|
||||
}
|
||||
|
||||
// Clone
|
||||
if ($user->rights->contrat->creer) {
|
||||
print '<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&socid='.$object->socid.'&action=clone&object='.$object->element.'">'.$langs->trans("ToClone").'</a></div>';
|
||||
if (!empty($conf->facture->enabled) && $object->statut > 0)
|
||||
{
|
||||
$langs->load("bills");
|
||||
if ($user->rights->facture->creer) print '<div class="inline-block divButAction"><a class="butAction" href="'.DOL_URL_ROOT.'/compta/facture/card.php?action=create&origin='.$object->element.'&originid='.$object->id.'&socid='.$object->thirdparty->id.'">'.$langs->trans("CreateBill").'</a></div>';
|
||||
else print '<div class="inline-block divButAction"><a class="butActionRefused classfortooltip" href="#" title="'.$langs->trans("NotEnoughPermissions").'">'.$langs->trans("CreateBill").'</a></div>';
|
||||
}
|
||||
|
||||
if ($object->nbofservicesclosed > 0 || $object->nbofserviceswait > 0)
|
||||
@@ -2086,15 +2081,22 @@ if ($action == 'create')
|
||||
// print '<div class="inline-block divButAction"><a class="butActionRefused classfortooltip" href="#" title="'.$langs->trans("CloseRefusedBecauseOneServiceActive").'">'.$langs->trans("Close").'</a></div>';
|
||||
//}
|
||||
}
|
||||
|
||||
if (! empty($conf->global->CONTRACT_HIDE_CLOSED_SERVICES_BY_DEFAULT) && $object->nbofservicesclosed > 0)
|
||||
{
|
||||
if ($action == 'showclosedlines') print '<div class="inline-block divButAction"><a class="butAction" id="btnhideclosedlines" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=hideclosedlines">'.$langs->trans("HideClosedServices").'</a></div>';
|
||||
else print '<div class="inline-block divButAction"><a class="butAction" id="btnshowclosedlines" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=showclosedlines">'.$langs->trans("ShowClosedServices").'</a></div>';
|
||||
}
|
||||
|
||||
// Clone
|
||||
if ($user->rights->contrat->creer) {
|
||||
print '<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&socid='.$object->socid.'&action=clone&object='.$object->element.'">'.$langs->trans("ToClone").'</a></div>';
|
||||
}
|
||||
|
||||
// On peut supprimer entite si
|
||||
// - Droit de creer + mode brouillon (erreur creation)
|
||||
// - Droit de supprimer
|
||||
if (($user->rights->contrat->creer && $object->statut == 0) || $user->rights->contrat->supprimer)
|
||||
if (($user->rights->contrat->creer && $object->statut == $object::STATUS_DRAFT) || $user->rights->contrat->supprimer)
|
||||
{
|
||||
print '<div class="inline-block divButAction"><a class="butActionDelete" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=delete">'.$langs->trans("Delete").'</a></div>';
|
||||
} else {
|
||||
|
||||
@@ -94,6 +94,12 @@ if ($action == 'add' && !empty($permissiontoadd))
|
||||
}
|
||||
}
|
||||
|
||||
// Fill array 'array_options' with data from add form
|
||||
if (!$error) {
|
||||
$ret = $extrafields->setOptionalsFromPost(null, $object);
|
||||
if ($ret < 0) $error++;
|
||||
}
|
||||
|
||||
if (!$error)
|
||||
{
|
||||
$result = $object->create($user);
|
||||
@@ -165,6 +171,12 @@ if ($action == 'update' && !empty($permissiontoadd))
|
||||
}
|
||||
}
|
||||
|
||||
// Fill array 'array_options' with data from add form
|
||||
if (!$error) {
|
||||
$ret = $extrafields->setOptionalsFromPost(null, $object, '@GETPOSTISSET');
|
||||
if ($ret < 0) $error++;
|
||||
}
|
||||
|
||||
if (!$error)
|
||||
{
|
||||
$result = $object->update($user);
|
||||
@@ -188,7 +200,14 @@ if ($action == "update_extras" && !empty($permissiontoadd))
|
||||
|
||||
$attributekey = GETPOST('attribute', 'alpha');
|
||||
$attributekeylong = 'options_'.$attributekey;
|
||||
$object->array_options['options_'.$attributekey] = GETPOST($attributekeylong, ' alpha');
|
||||
|
||||
if (GETPOSTISSET($attributekeylong.'day') && GETPOSTISSET($attributekeylong.'month') && GETPOSTISSET($attributekeylong.'year')) {
|
||||
// This is properties of a date
|
||||
$object->array_options['options_'.$attributekey] = dol_mktime(GETPOST($attributekeylong.'hour', 'int'), GETPOST($attributekeylong.'min', 'int'), GETPOST($attributekeylong.'sec', 'int'), GETPOST($attributekeylong.'month', 'int'), GETPOST($attributekeylong.'day', 'int'), GETPOST($attributekeylong.'year', 'int'));
|
||||
//var_dump(dol_print_date($object->array_options['options_'.$attributekey]));exit;
|
||||
} else {
|
||||
$object->array_options['options_'.$attributekey] = GETPOST($attributekeylong, ' alpha');
|
||||
}
|
||||
|
||||
$result = $object->insertExtraFields(empty($triggermodname) ? '' : $triggermodname, $user);
|
||||
if ($result > 0)
|
||||
|
||||
@@ -44,8 +44,10 @@ if (($id > 0 || (!empty($ref) && !in_array($action, array('create', 'createtask'
|
||||
{
|
||||
setEventMessages('Fetch on object (type '.get_class($object).') return an error without filling $object->error nor $object->errors', null, 'errors');
|
||||
}
|
||||
} else setEventMessages($object->error, $object->errors, 'errors');
|
||||
$action = '';
|
||||
} else {
|
||||
setEventMessages($object->error, $object->errors, 'errors');
|
||||
}
|
||||
$action = '';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?php
|
||||
/* Copyright (C) 2010 Regis Houssin <regis.houssin@inodbox.com>
|
||||
* Copyright (C) 2011-204 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
/* Copyright (C) 2010 Regis Houssin <regis.houssin@inodbox.com>
|
||||
* Copyright (C) 2011-2014 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -420,7 +420,20 @@ class CMailFile
|
||||
//$this->message->setFrom(array('john@doe.com' => 'John Doe'));
|
||||
if (!empty($from)) {
|
||||
try {
|
||||
$result = $this->message->setFrom($this->getArrayAddress($from));
|
||||
if (! empty($conf->global->MAIN_FORCE_DISABLE_MAIL_SPOOFING)) {
|
||||
// Prevent email spoofing for smtp server with a strict configuration
|
||||
$regexp = '/([a-z0-9_\.\-\+])+\@(([a-z0-9\-])+\.)+([a-z0-9]{2,4})+/i'; // This regular expression extracts all emails from a string
|
||||
$emailMatchs = preg_match_all($regexp, $from, $adressEmailFrom);
|
||||
$adressEmailFrom = reset($adressEmailFrom);
|
||||
if ($emailMatchs !== false && filter_var($conf->global->MAIN_MAIL_SMTPS_ID, FILTER_VALIDATE_EMAIL) && $conf->global->MAIN_MAIL_SMTPS_ID !== $adressEmailFrom)
|
||||
{
|
||||
$result = $this->message->setFrom($conf->global->MAIN_MAIL_SMTPS_ID);
|
||||
} else {
|
||||
$result = $this->message->setFrom($this->getArrayAddress($from));
|
||||
}
|
||||
} else {
|
||||
$result = $this->message->setFrom($this->getArrayAddress($from));
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
$this->errors[] = $e->getMessage();
|
||||
}
|
||||
|
||||
@@ -2525,10 +2525,11 @@ abstract class CommonObject
|
||||
/**
|
||||
* Get children of line
|
||||
*
|
||||
* @param int $id Id of parent line
|
||||
* @return array Array with list of children lines id
|
||||
* @param int $id Id of parent line
|
||||
* @param int $includealltree 0 = 1st level child, 1 = All level child
|
||||
* @return array Array with list of children lines id
|
||||
*/
|
||||
public function getChildrenOfLine($id)
|
||||
public function getChildrenOfLine($id, $includealltree = 0)
|
||||
{
|
||||
$rows = array();
|
||||
|
||||
@@ -2541,16 +2542,13 @@ abstract class CommonObject
|
||||
$resql = $this->db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
$i = 0;
|
||||
$num = $this->db->num_rows($resql);
|
||||
while ($i < $num)
|
||||
{
|
||||
$row = $this->db->fetch_row($resql);
|
||||
$rows[$i] = $row[0];
|
||||
$i++;
|
||||
if ($this->db->num_rows($resql) > 0) {
|
||||
while ($row = $this->db->fetch_row($resql)) {
|
||||
$rows[] = $row[0];
|
||||
if (!empty($includealltree)) $rows = array_merge($rows, $this->getChildrenOfLine($row[0]), $includealltree);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $rows;
|
||||
}
|
||||
|
||||
@@ -5608,7 +5606,7 @@ abstract class CommonObject
|
||||
* Update an extra field value for the current object.
|
||||
* Data to describe values to update are stored into $this->array_options=array('options_codeforfield1'=>'valueforfield1', 'options_codeforfield2'=>'valueforfield2', ...)
|
||||
*
|
||||
* @param string $key Key of the extrafield (without starting 'options_')
|
||||
* @param string $key Key of the extrafield to update (without starting 'options_')
|
||||
* @param string $trigger If defined, call also the trigger (for example COMPANY_MODIFY)
|
||||
* @param User $userused Object user
|
||||
* @return int -1=error, O=did nothing, 1=OK
|
||||
@@ -6834,8 +6832,6 @@ abstract class CommonObject
|
||||
|
||||
$html_id = (empty($this->id) ? '' : 'extrarow-'.$this->element.'_'.$key.'_'.$this->id);
|
||||
|
||||
$out .= '<tr '.($html_id ? 'id="'.$html_id.'" ' : '').$csstyle.' class="'.$class.$this->element.'_extras_'.$key.' trextrafields_collapse'.$extrafields_collapse_num.'" '.$domData.' >';
|
||||
|
||||
if (!empty($conf->global->MAIN_EXTRAFIELDS_USE_TWO_COLUMS) && ($e % 2) == 0) { $colspan = '0'; }
|
||||
|
||||
if ($action == 'selectlines') { $colspan++; }
|
||||
@@ -6865,6 +6861,7 @@ abstract class CommonObject
|
||||
$labeltoshow = $langs->trans($label);
|
||||
$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.' >';
|
||||
$out .= '<td class="';
|
||||
//$out .= "titlefield";
|
||||
//if (GETPOST('action', 'none') == 'create') $out.='create';
|
||||
@@ -7758,6 +7755,11 @@ abstract class CommonObject
|
||||
if ($obj)
|
||||
{
|
||||
$this->setVarsFromFetchObj($obj);
|
||||
|
||||
// Retreive all extrafield
|
||||
// fetch optionals attributes and labels
|
||||
$this->fetch_optionals();
|
||||
|
||||
return $this->id;
|
||||
} else {
|
||||
return 0;
|
||||
|
||||
@@ -194,7 +194,7 @@ class EvalMath
|
||||
*
|
||||
* @return string Output
|
||||
*/
|
||||
private function vars()
|
||||
public function vars()
|
||||
{
|
||||
$output = $this->v;
|
||||
unset($output['pi']);
|
||||
@@ -270,9 +270,11 @@ class EvalMath
|
||||
// ===============
|
||||
} elseif ($op == ')' and $expecting_op) { // ready to close a parenthesis?
|
||||
while (($o2 = $stack->pop()) != '(') { // pop off the stack back to the last (
|
||||
if (is_null($o2))
|
||||
if (is_null($o2)) {
|
||||
return $this->trigger(5, "unexpected ')'", ")");
|
||||
else $output[] = $o2;
|
||||
} else {
|
||||
$output[] = $o2;
|
||||
}
|
||||
}
|
||||
if (preg_match("/^([a-z]\w*)\($/", $stack->last(2), $matches)) { // did we just close a function?
|
||||
$fnn = $matches[1]; // get the function name
|
||||
@@ -292,9 +294,11 @@ class EvalMath
|
||||
// ===============
|
||||
} elseif ($op == ',' and $expecting_op) { // did we just finish a function argument?
|
||||
while (($o2 = $stack->pop()) != '(') {
|
||||
if (is_null($o2))
|
||||
if (is_null($o2)) {
|
||||
return $this->trigger(5, "unexpected ','", ","); // oops, never had a (
|
||||
else $output[] = $o2; // pop the argument expression stuff and push onto the output
|
||||
} else {
|
||||
$output[] = $o2; // pop the argument expression stuff and push onto the output
|
||||
}
|
||||
}
|
||||
// make sure there was a function
|
||||
if (!preg_match("/^([a-z]\w*)\($/", $stack->last(2), $matches))
|
||||
|
||||
@@ -1621,6 +1621,13 @@ class ExtraFields
|
||||
$keyList .= implode(', ', $fields_label);
|
||||
}
|
||||
|
||||
$filter_categorie = false;
|
||||
if (count($InfoFieldList) > 5) {
|
||||
if ($InfoFieldList[0] == 'categorie') {
|
||||
$filter_categorie = true;
|
||||
}
|
||||
}
|
||||
|
||||
$sql = 'SELECT '.$keyList;
|
||||
$sql .= ' FROM '.MAIN_DB_PREFIX.$InfoFieldList[0];
|
||||
if (strpos($InfoFieldList[4], 'extra') !== false)
|
||||
@@ -1641,37 +1648,49 @@ class ExtraFields
|
||||
$resql = $this->db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
$value = ''; // value was used, so now we reste it to use it to build final output
|
||||
if ($filter_categorie === false) {
|
||||
$value = ''; // value was used, so now we reste it to use it to build final output
|
||||
|
||||
$obj = $this->db->fetch_object($resql);
|
||||
$obj = $this->db->fetch_object($resql);
|
||||
|
||||
// Several field into label (eq table:code|libelle:rowid)
|
||||
$fields_label = explode('|', $InfoFieldList[1]);
|
||||
// Several field into label (eq table:code|libelle:rowid)
|
||||
$fields_label = explode('|', $InfoFieldList[1]);
|
||||
|
||||
if (is_array($fields_label) && count($fields_label) > 1)
|
||||
{
|
||||
foreach ($fields_label as $field_toshow)
|
||||
{
|
||||
$translabel = '';
|
||||
if (!empty($obj->$field_toshow)) {
|
||||
$translabel = $langs->trans($obj->$field_toshow);
|
||||
if (is_array($fields_label) && count($fields_label) > 1) {
|
||||
foreach ($fields_label as $field_toshow) {
|
||||
$translabel = '';
|
||||
if (!empty($obj->$field_toshow)) {
|
||||
$translabel = $langs->trans($obj->$field_toshow);
|
||||
}
|
||||
if ($translabel != $field_toshow) {
|
||||
$value .= dol_trunc($translabel, 18) . ' ';
|
||||
} else {
|
||||
$value .= $obj->$field_toshow . ' ';
|
||||
}
|
||||
}
|
||||
if ($translabel != $field_toshow) {
|
||||
$value .= dol_trunc($translabel, 18).' ';
|
||||
} else {
|
||||
$translabel = '';
|
||||
if (!empty($obj->{$InfoFieldList[1]})) {
|
||||
$translabel = $langs->trans($obj->{$InfoFieldList[1]});
|
||||
}
|
||||
if ($translabel != $obj->{$InfoFieldList[1]}) {
|
||||
$value = dol_trunc($translabel, 18);
|
||||
} else {
|
||||
$value .= $obj->$field_toshow.' ';
|
||||
$value = $obj->{$InfoFieldList[1]};
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$translabel = '';
|
||||
if (!empty($obj->{$InfoFieldList[1]})) {
|
||||
$translabel = $langs->trans($obj->{$InfoFieldList[1]});
|
||||
}
|
||||
if ($translabel != $obj->{$InfoFieldList[1]}) {
|
||||
$value = dol_trunc($translabel, 18);
|
||||
} else {
|
||||
$value = $obj->{$InfoFieldList[1]};
|
||||
require_once DOL_DOCUMENT_ROOT . '/categories/class/categorie.class.php';
|
||||
|
||||
$toprint = array();
|
||||
$obj = $this->db->fetch_object($resql);
|
||||
$c = new Categorie($this->db);
|
||||
$c->fetch($obj->rowid);
|
||||
$ways = $c->print_all_ways(); // $ways[0] = "ccc2 >> ccc2a >> ccc2a1" with html formatted text
|
||||
foreach ($ways as $way) {
|
||||
$toprint[] = '<li class="select2-search-choice-dolibarr noborderoncategories"' . ($c->color ? ' style="background: #' . $c->color . ';"' : ' style="background: #aaa"') . '>' . img_object('', 'category') . ' ' . $way . '</li>';
|
||||
}
|
||||
$value = '<div class="select2-container-multi-dolibarr" style="width: 90%;"><ul class="select2-choices-dolibarr">'.implode(' ', $toprint).'</ul></div>';
|
||||
}
|
||||
} else dol_syslog(get_class($this).'::showOutputField error '.$this->db->lasterror(), LOG_WARNING);
|
||||
} elseif ($type == 'radio')
|
||||
@@ -1710,6 +1729,13 @@ class ExtraFields
|
||||
$keyList .= implode(', ', $fields_label);
|
||||
}
|
||||
|
||||
$filter_categorie = false;
|
||||
if (count($InfoFieldList) > 5) {
|
||||
if ($InfoFieldList[0] == 'categorie') {
|
||||
$filter_categorie = true;
|
||||
}
|
||||
}
|
||||
|
||||
$sql = 'SELECT '.$keyList;
|
||||
$sql .= ' FROM '.MAIN_DB_PREFIX.$InfoFieldList[0];
|
||||
if (strpos($InfoFieldList[4], 'extra') !== false) {
|
||||
@@ -1721,33 +1747,49 @@ class ExtraFields
|
||||
dol_syslog(get_class($this).':showOutputField:$type=chkbxlst', LOG_DEBUG);
|
||||
$resql = $this->db->query($sql);
|
||||
if ($resql) {
|
||||
$value = ''; // value was used, so now we reste it to use it to build final output
|
||||
$toprint = array();
|
||||
while ($obj = $this->db->fetch_object($resql)) {
|
||||
// Several field into label (eq table:code|libelle:rowid)
|
||||
$fields_label = explode('|', $InfoFieldList[1]);
|
||||
if (is_array($value_arr) && in_array($obj->rowid, $value_arr)) {
|
||||
if (is_array($fields_label) && count($fields_label) > 1) {
|
||||
foreach ($fields_label as $field_toshow) {
|
||||
$translabel = '';
|
||||
if (!empty($obj->$field_toshow)) {
|
||||
$translabel = $langs->trans($obj->$field_toshow);
|
||||
if ($filter_categorie === false) {
|
||||
$value = ''; // value was used, so now we reste it to use it to build final output
|
||||
$toprint = array();
|
||||
while ($obj = $this->db->fetch_object($resql)) {
|
||||
// Several field into label (eq table:code|libelle:rowid)
|
||||
$fields_label = explode('|', $InfoFieldList[1]);
|
||||
if (is_array($value_arr) && in_array($obj->rowid, $value_arr)) {
|
||||
if (is_array($fields_label) && count($fields_label) > 1) {
|
||||
foreach ($fields_label as $field_toshow) {
|
||||
$translabel = '';
|
||||
if (!empty($obj->$field_toshow)) {
|
||||
$translabel = $langs->trans($obj->$field_toshow);
|
||||
}
|
||||
if ($translabel != $field_toshow) {
|
||||
$toprint[] = '<li class="select2-search-choice-dolibarr noborderoncategories" style="background: #aaa">' . dol_trunc($translabel, 18) . '</li>';
|
||||
} else {
|
||||
$toprint[] = '<li class="select2-search-choice-dolibarr noborderoncategories" style="background: #aaa">' . $obj->$field_toshow . '</li>';
|
||||
}
|
||||
}
|
||||
if ($translabel != $field_toshow) {
|
||||
$toprint[] = '<li class="select2-search-choice-dolibarr noborderoncategories" style="background: #aaa">'.dol_trunc($translabel, 18).'</li>';
|
||||
} else {
|
||||
$toprint[] = '<li class="select2-search-choice-dolibarr noborderoncategories" style="background: #aaa">'.$obj->$field_toshow.'</li>';
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$translabel = '';
|
||||
if (!empty($obj->{$InfoFieldList[1]})) {
|
||||
$translabel = $langs->trans($obj->{$InfoFieldList[1]});
|
||||
}
|
||||
if ($translabel != $obj->{$InfoFieldList[1]}) {
|
||||
$toprint[] = '<li class="select2-search-choice-dolibarr noborderoncategories" style="background: #aaa">'.dol_trunc($translabel, 18).'</li>';
|
||||
} else {
|
||||
$toprint[] = '<li class="select2-search-choice-dolibarr noborderoncategories" style="background: #aaa">'.$obj->{$InfoFieldList[1]}.'</li>';
|
||||
$translabel = '';
|
||||
if (!empty($obj->{$InfoFieldList[1]})) {
|
||||
$translabel = $langs->trans($obj->{$InfoFieldList[1]});
|
||||
}
|
||||
if ($translabel != $obj->{$InfoFieldList[1]}) {
|
||||
$toprint[] = '<li class="select2-search-choice-dolibarr noborderoncategories" style="background: #aaa">' . dol_trunc($translabel, 18) . '</li>';
|
||||
} else {
|
||||
$toprint[] = '<li class="select2-search-choice-dolibarr noborderoncategories" style="background: #aaa">' . $obj->{$InfoFieldList[1]} . '</li>';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
require_once DOL_DOCUMENT_ROOT . '/categories/class/categorie.class.php';
|
||||
|
||||
$toprint = array();
|
||||
while ($obj = $this->db->fetch_object($resql)) {
|
||||
if (is_array($value_arr) && in_array($obj->rowid, $value_arr)) {
|
||||
$c = new Categorie($this->db);
|
||||
$c->fetch($obj->rowid);
|
||||
$ways = $c->print_all_ways(); // $ways[0] = "ccc2 >> ccc2a >> ccc2a1" with html formatted text
|
||||
foreach ($ways as $way) {
|
||||
$toprint[] = '<li class="select2-search-choice-dolibarr noborderoncategories"' . ($c->color ? ' style="background: #' . $c->color . ';"' : ' style="background: #aaa"') . '>' . img_object('', 'category') . ' ' . $way . '</li>';
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1912,7 +1954,9 @@ class ExtraFields
|
||||
*
|
||||
* @param array $extralabels Deprecated (old $array of extrafields, now set this to null)
|
||||
* @param object $object Object
|
||||
* @param string $onlykey Only the following key is filled. When we make update of only one extrafield ($action = 'update_extras'), calling page must set this to avoid to have other extrafields being reset.
|
||||
* @param string $onlykey Only some keys are filled:$this
|
||||
* 'string' => When we make update of only one extrafield ($action = 'update_extras'), calling page can set this to avoid to have other extrafields being reset.
|
||||
* '@GETPOSTISSET' => When we make update of extrafields ($action = 'update'), calling page can set this to avoid to have fields not into POST being reset.
|
||||
* @return int 1 if array_options set, 0 if no value, -1 if error (field required missing for example)
|
||||
*/
|
||||
public function setOptionalsFromPost($extralabels, &$object, $onlykey = '')
|
||||
@@ -1929,7 +1973,8 @@ class ExtraFields
|
||||
// Get extra fields
|
||||
foreach ($extralabels as $key => $value)
|
||||
{
|
||||
if (!empty($onlykey) && $key != $onlykey) continue;
|
||||
if (!empty($onlykey) && $onlykey != '@GETPOSTISSET' && $key != $onlykey) continue;
|
||||
if (!empty($onlykey) && $onlykey == '@GETPOSTISSET' && ! GETPOSTISSET('options_'.$key)) continue;
|
||||
|
||||
$key_type = $this->attributes[$object->table_element]['type'][$key];
|
||||
if ($key_type == 'separate') continue;
|
||||
@@ -1960,28 +2005,26 @@ class ExtraFields
|
||||
}
|
||||
}
|
||||
|
||||
if (in_array($key_type, array('date')))
|
||||
{
|
||||
if (in_array($key_type, array('date'))) {
|
||||
// Clean parameters
|
||||
// TODO GMT date in memory must be GMT so we should add gm=true in parameters
|
||||
$value_key = dol_mktime(0, 0, 0, $_POST["options_".$key."month"], $_POST["options_".$key."day"], $_POST["options_".$key."year"]);
|
||||
} elseif (in_array($key_type, array('datetime')))
|
||||
{
|
||||
} elseif (in_array($key_type, array('datetime'))) {
|
||||
// Clean parameters
|
||||
// TODO GMT date in memory must be GMT so we should add gm=true in parameters
|
||||
$value_key = dol_mktime($_POST["options_".$key."hour"], $_POST["options_".$key."min"], 0, $_POST["options_".$key."month"], $_POST["options_".$key."day"], $_POST["options_".$key."year"]);
|
||||
} elseif (in_array($key_type, array('checkbox', 'chkbxlst')))
|
||||
{
|
||||
} elseif (in_array($key_type, array('checkbox', 'chkbxlst'))) {
|
||||
$value_arr = GETPOST("options_".$key, 'array'); // check if an array
|
||||
if (!empty($value_arr)) {
|
||||
$value_key = implode($value_arr, ',');
|
||||
} else {
|
||||
$value_key = '';
|
||||
}
|
||||
} elseif (in_array($key_type, array('price', 'double')))
|
||||
{
|
||||
} elseif (in_array($key_type, array('price', 'double'))) {
|
||||
$value_arr = GETPOST("options_".$key, 'alpha');
|
||||
$value_key = price2num($value_arr);
|
||||
} elseif (in_array($key_type, array('html'))) {
|
||||
$value_key = GETPOST("options_".$key, 'alpha');
|
||||
} else {
|
||||
$value_key = GETPOST("options_".$key);
|
||||
if (in_array($key_type, array('link')) && $value_key == '-1') $value_key = '';
|
||||
|
||||
@@ -5242,6 +5242,28 @@ class Form
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Show 2 HTML widget to input a date or combo list for day, month, years and optionaly hours and minutes.
|
||||
* Fields are preselected with :
|
||||
* - set_time date (must be a local PHP server timestamp or string date with format 'YYYY-MM-DD' or 'YYYY-MM-DD HH:MM')
|
||||
* - local date in user area, if set_time is '' (so if set_time is '', output may differs when done from two different location)
|
||||
* - Empty (fields empty), if set_time is -1 (in this case, parameter empty must also have value 1)
|
||||
*
|
||||
* @param integer $set_time Pre-selected date (must be a local PHP server timestamp), -1 to keep date not preselected, '' to use current date with 00:00 hour (Parameter 'empty' must be 0 or 2).
|
||||
* @param integer $set_time_end Pre-selected date (must be a local PHP server timestamp), -1 to keep date not preselected, '' to use current date with 00:00 hour (Parameter 'empty' must be 0 or 2).
|
||||
* @param string $prefix Prefix for fields name
|
||||
* @param string $empty 0=Fields required, 1=Empty inputs are allowed, 2=Empty inputs are allowed for hours only
|
||||
* @return string Html for selectDate
|
||||
* @see form_date(), select_month(), select_year(), select_dayofweek()
|
||||
*/
|
||||
public function selectDateToDate($set_time = '', $set_time_end = '', $prefix = 're', $empty = 0)
|
||||
{
|
||||
$ret = $this->selectDate($set_time, $prefix.'_start', 0, 0, $empty);
|
||||
$ret .= '<br/>';
|
||||
$ret .= $this->selectDate($set_time_end, $prefix.'_end', 0, 0, $empty);
|
||||
return $ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* Show a HTML widget to input a date or combo list for day, month, years and optionaly hours and minutes.
|
||||
* Fields are preselected with :
|
||||
|
||||
@@ -184,7 +184,8 @@ print '
|
||||
{
|
||||
if (this.href)
|
||||
{
|
||||
this.href=this.href+\'&page_y=\'+page_y;
|
||||
var hrefarray = this.href.split("#", 2);
|
||||
this.href=hrefarray[0]+\'&page_y=\'+page_y;
|
||||
console.log("We click on tag with .reposition class. this.ref is now "+this.href);
|
||||
}
|
||||
else
|
||||
|
||||
@@ -1273,7 +1273,27 @@ function show_actions_done($conf, $langs, $db, $filterobj, $objcon = '', $noprin
|
||||
global $form;
|
||||
|
||||
global $param, $massactionbutton;
|
||||
|
||||
$start_year = GETPOST('dateevent_startyear');
|
||||
$start_month = GETPOST('dateevent_startmonth');
|
||||
$start_day = GETPOST('dateevent_startday');
|
||||
$end_year = GETPOST('dateevent_endyear');
|
||||
$end_month = GETPOST('dateevent_endmonth');
|
||||
$end_day = GETPOST('dateevent_endday');
|
||||
if (!empty($start_year) && !empty($start_month) && !empty($start_day)) {
|
||||
$search_start = $start_year.'-'.$start_month.'-'.$start_day;
|
||||
$tms_start = strtotime($search_start);
|
||||
}
|
||||
if (!empty($end_year) && !empty($end_month) && !empty($end_day)) {
|
||||
$search_end = $end_year.'-'.$end_month.'-'.$end_day.' 23:59:59';
|
||||
$tms_end = strtotime($search_end);
|
||||
}
|
||||
if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')) // All test are required to be compatible with all browsers
|
||||
{
|
||||
$search_start = '';
|
||||
$tms_start = '';
|
||||
$search_end = '';
|
||||
$tms_end = '';
|
||||
}
|
||||
dol_include_once('/comm/action/class/actioncomm.class.php');
|
||||
|
||||
// Check parameters
|
||||
@@ -1379,54 +1399,46 @@ function show_actions_done($conf, $langs, $db, $filterobj, $objcon = '', $noprin
|
||||
}
|
||||
}
|
||||
|
||||
// Condition on actioncode
|
||||
if (!empty($actioncode))
|
||||
{
|
||||
if (empty($conf->global->AGENDA_USE_EVENT_TYPE))
|
||||
{
|
||||
if ($actioncode == 'AC_NON_AUTO') $sql .= " AND c.type != 'systemauto'";
|
||||
elseif ($actioncode == 'AC_ALL_AUTO') $sql .= " AND c.type = 'systemauto'";
|
||||
else {
|
||||
if ($actioncode == 'AC_OTH') $sql .= " AND c.type != 'systemauto'";
|
||||
elseif ($actioncode == 'AC_OTH_AUTO') $sql .= " AND c.type = 'systemauto'";
|
||||
if (! empty($search_start) && ! empty($search_end)) {
|
||||
$sql .= " AND ((a.datep BETWEEN '$search_start' AND '$search_end') OR (a.datep2 BETWEEN '$search_start' AND '$search_end'))";
|
||||
}
|
||||
elseif (empty($search_start) && ! empty($search_end)) {
|
||||
$sql .= " AND ((a.datep <= '$search_end') OR (a.datep2 <= '$search_end'))";
|
||||
}
|
||||
elseif (! empty($search_start) && empty($search_end)) {
|
||||
$sql .= " AND ((a.datep >= '$search_start') OR (a.datep2 >= '$search_start'))";
|
||||
}
|
||||
|
||||
if (is_array($actioncode) && ! empty($actioncode)) {
|
||||
$sql .= ' AND (';
|
||||
foreach ($actioncode as $key => $code) {
|
||||
if ($key != 0) $sql .= "OR (";
|
||||
if (! empty($code)) addEventTypeSQL($sql, $code, $donetodo, $now, $filters, "");
|
||||
if ($key != 0) $sql .= ")";
|
||||
}
|
||||
$sql .= ')';
|
||||
}
|
||||
elseif (! empty($actioncode)) addEventTypeSQL($sql, $actioncode, $donetodo, $now, $filters);
|
||||
|
||||
if (is_array($actioncode)) {
|
||||
foreach ($actioncode as $code) {
|
||||
$sql2 = addMailingEventTypeSQL($code, $objcon, $filterobj);
|
||||
if (! empty($sql2)) {
|
||||
if (! empty($sql)) $sql = $sql." UNION ".$sql2;
|
||||
elseif (empty($sql)) $sql = $sql2;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
if ($actioncode == 'AC_NON_AUTO') $sql .= " AND c.type != 'systemauto'";
|
||||
elseif ($actioncode == 'AC_ALL_AUTO') $sql .= " AND c.type = 'systemauto'";
|
||||
else $sql .= " AND c.code = '".$db->escape($actioncode)."'";
|
||||
}
|
||||
}
|
||||
if ($donetodo == 'todo') $sql .= " AND ((a.percent >= 0 AND a.percent < 100) OR (a.percent = -1 AND a.datep > '".$db->idate($now)."'))";
|
||||
elseif ($donetodo == 'done') $sql .= " AND (a.percent = 100 OR (a.percent = -1 AND a.datep <= '".$db->idate($now)."'))";
|
||||
if (is_array($filters) && $filters['search_agenda_label']) $sql .= natural_search('a.label', $filters['search_agenda_label']);
|
||||
}
|
||||
|
||||
// Add also event from emailings. TODO This should be replaced by an automatic event ? May be it's too much for very large emailing.
|
||||
if (!empty($conf->mailing->enabled) && !empty($objcon->email)
|
||||
&& (empty($actioncode) || $actioncode == 'AC_OTH_AUTO' || $actioncode == 'AC_EMAILING'))
|
||||
{
|
||||
$langs->load("mails");
|
||||
|
||||
$sql2 = "SELECT m.rowid as id, m.titre as label, mc.date_envoi as dp, mc.date_envoi as dp2, '100' as percent, 'mailing' as type";
|
||||
$sql2 .= ", null as fk_element, '' as elementtype, null as contact_id";
|
||||
$sql2 .= ", 'AC_EMAILING' as acode, '' as alabel, '' as apicto";
|
||||
$sql2 .= ", u.rowid as user_id, u.login as user_login, u.photo as user_photo, u.firstname as user_firstname, u.lastname as user_lastname"; // User that valid action
|
||||
if (is_object($filterobj) && get_class($filterobj) == 'Societe') $sql2 .= ", '' as lastname, '' as firstname";
|
||||
elseif (is_object($filterobj) && get_class($filterobj) == 'Adherent') $sql2 .= ", '' as lastname, '' as firstname";
|
||||
elseif (is_object($filterobj) && get_class($filterobj) == 'CommandeFournisseur') $sql2 .= ", '' as ref";
|
||||
elseif (is_object($filterobj) && get_class($filterobj) == 'Product') $sql2 .= ", '' as ref";
|
||||
elseif (is_object($filterobj) && get_class($filterobj) == 'Ticket') $sql2 .= ", '' as ref";
|
||||
$sql2 .= " FROM ".MAIN_DB_PREFIX."mailing as m, ".MAIN_DB_PREFIX."mailing_cibles as mc, ".MAIN_DB_PREFIX."user as u";
|
||||
$sql2 .= " WHERE mc.email = '".$db->escape($objcon->email)."'"; // Search is done on email.
|
||||
$sql2 .= " AND mc.statut = 1";
|
||||
$sql2 .= " AND u.rowid = m.fk_user_valid";
|
||||
$sql2 .= " AND mc.fk_mailing = m.rowid";
|
||||
}
|
||||
|
||||
if (!empty($sql) && !empty($sql2)) {
|
||||
$sql = $sql." UNION ".$sql2;
|
||||
} elseif (empty($sql) && !empty($sql2)) {
|
||||
$sql = $sql2;
|
||||
else {
|
||||
$sql2 = addMailingEventTypeSQL($actioncode, $objcon, $filterobj);
|
||||
if (! empty($sql) && ! empty($sql2)) {
|
||||
$sql = $sql." UNION ".$sql2;
|
||||
}
|
||||
elseif (empty($sql) && ! empty($sql2)) {
|
||||
$sql = $sql2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//TODO Add limit in nb of results
|
||||
@@ -1550,10 +1562,10 @@ function show_actions_done($conf, $langs, $db, $filterobj, $objcon = '', $noprin
|
||||
$out .= '<td class="liste_titre"></td>';
|
||||
$out .= '<td class="liste_titre"></td>';
|
||||
$out .= '<td class="liste_titre">';
|
||||
$out .= $formactions->select_type_actions($actioncode, "actioncode", '', empty($conf->global->AGENDA_USE_EVENT_TYPE) ? 1 : -1, 0, 0, 1);
|
||||
$out .= $formactions->select_type_actions($actioncode, "actioncode", '', empty($conf->global->AGENDA_USE_EVENT_TYPE) ? 1 : -1, 0, (empty($conf->global->AGENDA_USE_MULTISELECT_TYPE) ? 0 : 1), 1);
|
||||
$out .= '</td>';
|
||||
$out .= '<td class="liste_titre maxwidth100onsmartphone"><input type="text" class="maxwidth100onsmartphone" name="search_agenda_label" value="'.$filters['search_agenda_label'].'"></td>';
|
||||
$out .= '<td class="liste_titre"></td>';
|
||||
$out .= '<td class="liste_titre center">'.$form->selectDateToDate($tms_start, $tms_end, 'dateevent', 1).'</td>';
|
||||
$out .= '<td class="liste_titre"></td>';
|
||||
$out .= '<td class="liste_titre"></td>';
|
||||
$out .= '<td class="liste_titre"></td>';
|
||||
@@ -1830,3 +1842,74 @@ function show_subsidiaries($conf, $langs, $db, $object)
|
||||
|
||||
return $i;
|
||||
}
|
||||
/**
|
||||
* Add Event Type SQL
|
||||
*
|
||||
* @param string $sql $sql modified
|
||||
* @param string $actioncode Action code
|
||||
* @param string $donetodo donetodo
|
||||
* @param string $now now
|
||||
* @param string $filters array
|
||||
* @param string $sqlANDOR "AND", "OR" or "" sql condition
|
||||
* @return string sql request
|
||||
*/
|
||||
function addEventTypeSQL(&$sql, $actioncode, $donetodo, $now, $filters, $sqlANDOR = "AND")
|
||||
{
|
||||
global $conf, $db;
|
||||
// Condition on actioncode
|
||||
|
||||
if (empty($conf->global->AGENDA_USE_EVENT_TYPE))
|
||||
{
|
||||
if ($actioncode == 'AC_NON_AUTO') $sql .= " $sqlANDOR c.type != 'systemauto'";
|
||||
elseif ($actioncode == 'AC_ALL_AUTO') $sql .= " $sqlANDOR c.type = 'systemauto'";
|
||||
else {
|
||||
if ($actioncode == 'AC_OTH') $sql .= " $sqlANDOR c.type != 'systemauto'";
|
||||
elseif ($actioncode == 'AC_OTH_AUTO') $sql .= " $sqlANDOR c.type = 'systemauto'";
|
||||
}
|
||||
}
|
||||
else {
|
||||
if ($actioncode == 'AC_NON_AUTO') $sql .= " $sqlANDOR c.type != 'systemauto'";
|
||||
elseif ($actioncode == 'AC_ALL_AUTO') $sql .= " $sqlANDOR c.type = 'systemauto'";
|
||||
else $sql .= " $sqlANDOR c.code = '".$db->escape($actioncode)."'";
|
||||
}
|
||||
|
||||
if ($donetodo == 'todo') $sql .= " AND ((a.percent >= 0 AND a.percent < 100) OR (a.percent = -1 AND a.datep > '".$db->idate($now)."'))";
|
||||
elseif ($donetodo == 'done') $sql .= " AND (a.percent = 100 OR (a.percent = -1 AND a.datep <= '".$db->idate($now)."'))";
|
||||
if (is_array($filters) && $filters['search_agenda_label']) $sql .= natural_search('a.label', $filters['search_agenda_label']);
|
||||
|
||||
return $sql;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add Mailing Event Type SQL
|
||||
*
|
||||
* @param string $actioncode Action code
|
||||
* @param string $objcon objcon
|
||||
* @param Object $filterobj filterobj
|
||||
* @return string
|
||||
*/
|
||||
function addMailingEventTypeSQL($actioncode, $objcon, $filterobj)
|
||||
{
|
||||
global $conf, $langs, $db;
|
||||
// Add also event from emailings. TODO This should be replaced by an automatic event ? May be it's too much for very large emailing.
|
||||
if (!empty($conf->mailing->enabled) && !empty($objcon->email)
|
||||
&& (empty($actioncode) || $actioncode == 'AC_OTH_AUTO' || $actioncode == 'AC_EMAILING')) {
|
||||
$langs->load("mails");
|
||||
|
||||
$sql2 = "SELECT m.rowid as id, m.titre as label, mc.date_envoi as dp, mc.date_envoi as dp2, '100' as percent, 'mailing' as type";
|
||||
$sql2 .= ", '' as fk_element, '' as elementtype, '' as contact_id";
|
||||
$sql2 .= ", 'AC_EMAILING' as acode, '' as alabel, '' as apicto";
|
||||
$sql2 .= ", u.rowid as user_id, u.login as user_login, u.photo as user_photo, u.firstname as user_firstname, u.lastname as user_lastname"; // User that valid action
|
||||
if (is_object($filterobj) && get_class($filterobj) == 'Societe') $sql2 .= ", '' as lastname, '' as firstname";
|
||||
elseif (is_object($filterobj) && get_class($filterobj) == 'Adherent') $sql2 .= ", '' as lastname, '' as firstname";
|
||||
elseif (is_object($filterobj) && get_class($filterobj) == 'CommandeFournisseur') $sql2 .= ", '' as ref";
|
||||
elseif (is_object($filterobj) && get_class($filterobj) == 'Product') $sql2 .= ", '' as ref";
|
||||
elseif (is_object($filterobj) && get_class($filterobj) == 'Ticket') $sql2 .= ", '' as ref";
|
||||
$sql2 .= " FROM ".MAIN_DB_PREFIX."mailing as m, ".MAIN_DB_PREFIX."mailing_cibles as mc, ".MAIN_DB_PREFIX."user as u";
|
||||
$sql2 .= " WHERE mc.email = '".$db->escape($objcon->email)."'"; // Search is done on email.
|
||||
$sql2 .= " AND mc.statut = 1";
|
||||
$sql2 .= " AND u.rowid = m.fk_user_valid";
|
||||
$sql2 .= " AND mc.fk_mailing=m.rowid";
|
||||
return $sql2;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -68,7 +68,7 @@ function facturefourn_prepare_head($object)
|
||||
if ($obj) $nbStandingOrders = $obj->nb;
|
||||
}
|
||||
else dol_print_error($db);
|
||||
$head[$h][0] = DOL_URL_ROOT.'/compta/facture/prelevement.php?facid='.$object->id.'&mode=bank-transfer';
|
||||
$head[$h][0] = DOL_URL_ROOT.'/compta/facture/prelevement.php?facid='.$object->id.'&type=bank-transfer';
|
||||
$head[$h][1] = $langs->trans('BankTransfer');
|
||||
if ($nbStandingOrders > 0) $head[$h][1] .= '<span class="badge marginleftonlyshort">'.$nbStandingOrders.'</span>';
|
||||
$head[$h][2] = 'standingorders';
|
||||
@@ -233,8 +233,6 @@ function supplierorder_admin_prepare_head()
|
||||
$head[$h][2] = 'supplierorderdet';
|
||||
$h++;
|
||||
|
||||
|
||||
|
||||
$head[$h][0] = DOL_URL_ROOT.'/admin/supplierinvoice_extrafields.php';
|
||||
$head[$h][1] = $langs->trans("ExtraFieldsSupplierInvoices");
|
||||
$head[$h][2] = 'supplierinvoice';
|
||||
|
||||
@@ -3055,7 +3055,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $
|
||||
'accounting'=>'chart-line', 'category'=>'tag', 'dollyrevert'=>'dolly',
|
||||
'hrm'=>'umbrella-beach', 'margin'=>'calculator', 'members'=>'users', 'ticket'=>'ticket-alt', 'globe'=>'external-link-alt', 'lot'=>'barcode',
|
||||
'email'=>'at',
|
||||
'edit'=>'pencil-alt', 'grip_title'=>'arrows-alt', 'grip'=>'arrows-alt', 'help'=>'info-circle',
|
||||
'edit'=>'pencil-alt', 'grip_title'=>'arrows-alt', 'grip'=>'arrows-alt', 'help'=>'question-circle',
|
||||
'generic'=>'file', 'holiday'=>'umbrella-beach', 'label'=>'layer-group',
|
||||
'member'=>'users', 'mrp'=>'cubes', 'trip'=>'wallet', 'group'=>'users',
|
||||
'sign-out'=>'sign-out-alt',
|
||||
@@ -3143,7 +3143,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $
|
||||
$arrayconvpictotocolor = array(
|
||||
'address'=>'#37a', 'building'=>'#37a', 'bom'=>'#a69944',
|
||||
'companies'=>'#37a', 'company'=>'#37a', 'contact'=>'#37a', 'dynamicprice'=>'#a69944',
|
||||
'edit'=>'#444', 'note'=>'#999', 'error'=>'', 'listlight'=>'#999',
|
||||
'edit'=>'#444', 'note'=>'#999', 'error'=>'', 'help'=>'#bbb', 'listlight'=>'#999',
|
||||
'dolly'=>'#a69944', 'dollyrevert'=>'#a69944', 'lot'=>'#a69944',
|
||||
'map-marker-alt'=>'#aaa', 'mrp'=>'#a69944', 'product'=>'#a69944', 'service'=>'#a69944', 'stock'=>'#a69944',
|
||||
'other'=>'#ddd',
|
||||
|
||||
@@ -35,7 +35,7 @@ function holiday_prepare_head($object)
|
||||
$head = array();
|
||||
|
||||
$head[$h][0] = DOL_URL_ROOT.'/holiday/card.php?id='.$object->id;
|
||||
$head[$h][1] = $langs->trans("Holiday");
|
||||
$head[$h][1] = $langs->trans("Leave");
|
||||
$head[$h][2] = 'card';
|
||||
$h++;
|
||||
|
||||
|
||||
@@ -38,6 +38,11 @@ function takepos_prepare_head()
|
||||
$head[$h][2] = 'setup';
|
||||
$h++;
|
||||
|
||||
$head[$h][0] = DOL_URL_ROOT.'/takepos/admin/appearance.php';
|
||||
$head[$h][1] = $langs->trans("Appearance");
|
||||
$head[$h][2] = 'appearance';
|
||||
$h++;
|
||||
|
||||
$head[$h][0] = DOL_URL_ROOT.'/takepos/admin/receipt.php';
|
||||
$head[$h][1] = $langs->trans("Receipt");
|
||||
$head[$h][2] = 'receipt';
|
||||
|
||||
@@ -1484,7 +1484,7 @@ function print_left_eldy_menu($db, $menu_array_before, $menu_array_after, &$tabM
|
||||
// Direct debit order
|
||||
if (!empty($conf->prelevement->enabled))
|
||||
{
|
||||
$newmenu->add("/compta/prelevement/index.php?leftmenu=withdraw&mainmenu=bank", $langs->trans("StandingOrders"), 0, $user->rights->prelevement->bons->lire, '', $mainmenu, 'withdraw');
|
||||
$newmenu->add("/compta/prelevement/index.php?leftmenu=withdraw&mainmenu=bank", $langs->trans("PaymentByDirectDebit"), 0, $user->rights->prelevement->bons->lire, '', $mainmenu, 'withdraw');
|
||||
|
||||
if ($usemenuhider || empty($leftmenu) || $leftmenu == "withdraw") {
|
||||
$newmenu->add("/compta/prelevement/create.php?mainmenu=bank", $langs->trans("NewStandingOrder"), 1, $user->rights->prelevement->bons->creer);
|
||||
|
||||
@@ -143,8 +143,11 @@ if (empty($reshook) && is_array($extrafields->attributes[$object->table_element]
|
||||
if ($object->element == 'shipping') $permok = $user->rights->expedition->creer;
|
||||
if ($object->element == 'delivery') $permok = $user->rights->expedition->livraison->creer;
|
||||
if ($object->element == 'productlot') $permok = $user->rights->stock->creer;
|
||||
if ($object->element == 'facturerec') $permok = $user->rights->facture->creer;
|
||||
if (($object->statut == 0 || !empty($extrafields->attributes[$object->table_element]['alwayseditable'][$key]))
|
||||
if ($object->element == 'facturerec') $permok = $user->rights->facture->creer;
|
||||
if ($object->element == 'mo') $permok = $user->rights->mrp->write;
|
||||
|
||||
$isdraft = ((isset($object->statut) && $object->statut == 0) || (isset($object->status) && $object->status == 0));
|
||||
if (($isdraft || !empty($extrafields->attributes[$object->table_element]['alwayseditable'][$key]))
|
||||
&& $permok && $enabled != 5 && ($action != 'edit_extras' || GETPOST('attribute') != $key)
|
||||
&& empty($extrafields->attributes[$object->table_element]['computed'][$key]))
|
||||
{
|
||||
|
||||
@@ -85,7 +85,7 @@ if ($nolinesbefore) {
|
||||
<td class="linecolnum center"></td>
|
||||
<?php } ?>
|
||||
<td class="linecoldescription minwidth500imp">
|
||||
<div id="add"></div><span class="hideonsmartphone"><?php echo $langs->trans('AddNewLine'); ?></span><?php // echo $langs->trans("FreeZone"); ?>
|
||||
<div id="add"></div><span class="hideonsmartphone"><?php echo $langs->trans('AddNewLine'); ?></span>
|
||||
</td>
|
||||
<?php
|
||||
if ($object->element == 'supplier_proposal' || $object->element == 'order_supplier' || $object->element == 'invoice_supplier') // We must have same test in printObjectLines
|
||||
|
||||
@@ -59,7 +59,19 @@ if ($this->element == 'supplier_proposal' || $this->element == 'order_supplier'
|
||||
}
|
||||
|
||||
// VAT
|
||||
print '<td class="linecolvat right" style="width: 80px">'.$langs->trans('VAT').'</td>';
|
||||
print '<td class="linecolvat right" style="width: 80px">'.$langs->trans('VAT');
|
||||
if (in_array($object->element, array('propal', 'commande', 'facture')) && $object->status == $object::STATUS_DRAFT)
|
||||
{
|
||||
global $mysoc;
|
||||
print img_edit($langs->trans("UpdateForAllLines"), 0, 'class="clickvatforalllines opacitymedium paddingleft"');
|
||||
print '<script>$(document).ready(function() { $(".clickvatforalllines").click(function() { jQuery(".classvatforalllines").toggle(); }); });</script>';
|
||||
print '<div class="classvatforalllines hidden inline-block nowraponall">';
|
||||
//print '<input class="inline-block maxwidth50" type="text" name="vatforalllines" id="vatforalllines" value="">';
|
||||
print $form->load_tva('vatforalllines', '', $mysoc, $object->thirdparty, 0, 0, '', false, 1);
|
||||
print '<input class="inline-block" type="submit" name="submitforalllines" value="'.$langs->trans("Update").'">';
|
||||
print '</div>';
|
||||
}
|
||||
print '</td>';
|
||||
|
||||
// Price HT
|
||||
print '<td class="linecoluht right" style="width: 80px">'.$langs->trans('PriceUHT').'</td>';
|
||||
|
||||
@@ -86,6 +86,10 @@ insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values ( 9
|
||||
insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values ( 93, 9, '3','0','VAT super reduced rate 0',1);
|
||||
insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values ( 94, 9, '17','0','VAT standard rate',1);
|
||||
|
||||
-- CONGO = REPUBLIQUE DU CONGO (id country=72)
|
||||
insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values (721, 72, '0','0','VAT Rate 0',1);
|
||||
insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,localtax1,localtax1_type,note,active) values (722, 72, '18','0', '0.9', '1', 'VAT Rate 18+0.9', 1);
|
||||
|
||||
-- CYPRUS (id country=78)
|
||||
insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values (781, 78, '0','0','VAT Rate 0',1);
|
||||
insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values (782, 78, '9','0','VAT Rate 9',1);
|
||||
|
||||
@@ -81,6 +81,8 @@ delete from llx_const where name in ('PROJECT_HIDE_TASKS', 'MAIN_BUGTRACK_ENABLE
|
||||
|
||||
-- For v12
|
||||
|
||||
ALTER TABLE llx_bom_bom MODIFY COLUMN duration double(24,8);
|
||||
|
||||
ALTER TABLE llx_prelevement_bons ADD COLUMN type varchar(16) DEFAULT 'debit-order';
|
||||
|
||||
ALTER TABLE llx_ecm_files MODIFY COLUMN src_object_type varchar(64);
|
||||
@@ -322,3 +324,6 @@ UPDATE llx_prelevement_facture_demande SET entity = 1 WHERE entity IS NULL;
|
||||
|
||||
ALTER TABLE llx_prelevement_facture_demande ADD INDEX idx_prelevement_facture_demande_fk_facture (fk_facture);
|
||||
ALTER TABLE llx_prelevement_facture_demande ADD INDEX idx_prelevement_facture_demande_fk_facture_fourn (fk_facture_fourn);
|
||||
|
||||
insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values (721, 72, '0','0','VAT Rate 0',1);
|
||||
insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,localtax1,localtax1_type,note,active) values (722, 72, '18','0', '0.9', '1', 'VAT Rate 18+0.9', 1);
|
||||
|
||||
@@ -35,6 +35,8 @@ ALTER TABLE llx_prelevement_bons ADD COLUMN type varchar(16) DEFAULT 'debit-orde
|
||||
ALTER TABLE llx_prelevement_facture_demande ADD INDEX idx_prelevement_facture_demande_fk_facture (fk_facture);
|
||||
ALTER TABLE llx_prelevement_facture_demande ADD INDEX idx_prelevement_facture_demande_fk_facture_fourn (fk_facture_fourn);
|
||||
|
||||
ALTER TABLE llx_bom_bom MODIFY COLUMN duration double(24,8);
|
||||
|
||||
|
||||
-- For v13
|
||||
|
||||
|
||||
@@ -543,7 +543,7 @@ Module54Desc=Management of contracts (services or recurring subscriptions)
|
||||
Module55Name=Barcodes
|
||||
Module55Desc=Barcode management
|
||||
Module56Name=Payment by credit transfer
|
||||
Module56Desc=Management of payment by credit transfer orders. It includes generation of SEPA file for European countries.
|
||||
Module56Desc=Management of payment of suppliers by credit transfer orders. It includes generation of SEPA file for European countries.
|
||||
Module57Name=Bank Direct Debit payments
|
||||
Module57Desc=Management of Direct Debit payment orders. It includes generation of SEPA file for European countries.
|
||||
Module58Name=ClickToDial
|
||||
@@ -1983,7 +1983,7 @@ SmallerThan=Smaller than
|
||||
LargerThan=Larger than
|
||||
IfTrackingIDFoundEventWillBeLinked=Note that If a tracking ID is found into incoming email, the event will be automatically linked to the related objects.
|
||||
WithGMailYouCanCreateADedicatedPassword=With a GMail account, if you enabled the 2 steps validation, it is recommanded to create a dedicated second password for the application instead of using your own account passsword from https://myaccount.google.com/.
|
||||
EmailCollectorTargetDir=It may be a desired behaviour to move the email into another tag/directory when it was processed successfully. Just set a value here to use this feature. Note that you must also use a read/write login account.
|
||||
EmailCollectorTargetDir=It may be a desired behaviour to move the email into another tag/directory when it was processed successfully. Just set name of directory here to use this feature (Do NOT use special characters in name). Note that you must also use a read/write login account.
|
||||
EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing thirdparty in your database. The found (or created) thirdparty will be used for following actions that need it. In the parameter field you can use for example 'EXTRACT:BODY:Name:\\s([^\\s]*)' if you want to extract the name of the thirdparty from a string 'Name: name to find' found into the body.
|
||||
EndPointFor=End point for %s : %s
|
||||
DeleteEmailCollector=Delete email collector
|
||||
|
||||
@@ -63,6 +63,7 @@ ShipmentClassifyClosedInDolibarr=Shipment %s classified billed
|
||||
ShipmentUnClassifyCloseddInDolibarr=Shipment %s classified re-open
|
||||
ShipmentBackToDraftInDolibarr=Shipment %s go back to draft status
|
||||
ShipmentDeletedInDolibarr=Shipment %s deleted
|
||||
ReceptionValidatedInDolibarr=Reception %s validated
|
||||
OrderCreatedInDolibarr=Order %s created
|
||||
OrderValidatedInDolibarr=Order %s validated
|
||||
OrderDeliveredInDolibarr=Order %s classified delivered
|
||||
|
||||
@@ -37,6 +37,7 @@ IbanValid=BAN valid
|
||||
IbanNotValid=BAN not valid
|
||||
StandingOrders=Direct debit orders
|
||||
StandingOrder=Direct debit order
|
||||
PaymentByDirectDebit=Payment by direct debit
|
||||
PaymentByBankTransfers=Payments by credit transfer
|
||||
PaymentByBankTransfer=Payment by credit transfer
|
||||
AccountStatement=Account statement
|
||||
@@ -105,8 +106,8 @@ SupplierInvoicePayment=Vendor payment
|
||||
SubscriptionPayment=Subscription payment
|
||||
WithdrawalPayment=Debit payment order
|
||||
SocialContributionPayment=Social/fiscal tax payment
|
||||
BankTransfer=Bank transfer
|
||||
BankTransfers=Bank transfers
|
||||
BankTransfer=Credit transfer
|
||||
BankTransfers=Credit transfers
|
||||
MenuBankInternalTransfer=Internal transfer
|
||||
TransferDesc=Transfer from one account to another, Dolibarr will write two records (a debit in source account and a credit in target account). The same amount (except sign), label and date will be used for this transaction)
|
||||
TransferFrom=From
|
||||
|
||||
@@ -441,6 +441,8 @@ BankAccountNumberKey=Checksum
|
||||
Residence=Address
|
||||
IBANNumber=IBAN account number
|
||||
IBAN=IBAN
|
||||
CustomerIBAN=IBAN of customer
|
||||
SupplierIBAN=IBAN of vendor
|
||||
BIC=BIC/SWIFT
|
||||
BICNumber=BIC/SWIFT code
|
||||
ExtraInfos=Extra infos
|
||||
|
||||
@@ -107,6 +107,13 @@ OrderPrinterToUse=Order printer to use
|
||||
MainTemplateToUse=Main template to use
|
||||
OrderTemplateToUse=Order template to use
|
||||
BarRestaurant=Bar Restaurant
|
||||
AutoOrder=Customer auto order
|
||||
AutoOrder=Order by the customer himself
|
||||
RestaurantMenu=Menu
|
||||
CustomerMenu=Customer menu
|
||||
ScanToMenu=Scan QR code to see the menu
|
||||
ScanToOrder=Scan QR code to order
|
||||
Appearance=Appearance
|
||||
HideCategoryImages=Hide Category Images
|
||||
HideProductImages=Hide Product Images
|
||||
NumberOfLinesToShow=Number of lines to show in image box
|
||||
DefineTablePlan=Define table plan
|
||||
|
||||
@@ -99,3 +99,6 @@ TypeContact_contrat_internal_SALESREPFOLL=Sales representative following-up cont
|
||||
TypeContact_contrat_external_BILLING=Billing customer contact
|
||||
TypeContact_contrat_external_CUSTOMER=Follow-up customer contact
|
||||
TypeContact_contrat_external_SALESREPSIGN=Signing contract customer contact
|
||||
HideClosedServiceByDefault=Hide closed services by default
|
||||
ShowClosedServices=Show Closed Services
|
||||
HideClosedServices=Hide Closed Services
|
||||
|
||||
@@ -36,6 +36,7 @@ ErrorBadSupplierCodeSyntax=Bad syntax for vendor code
|
||||
ErrorSupplierCodeRequired=Vendor code required
|
||||
ErrorSupplierCodeAlreadyUsed=Vendor code already used
|
||||
ErrorBadParameters=Bad parameters
|
||||
ErrorWrongParameters=Wrong or missing parameters
|
||||
ErrorBadValueForParameter=Wrong value '%s' for parameter '%s'
|
||||
ErrorBadImageFormat=Image file has not a supported format (Your PHP does not support functions to convert images of this format)
|
||||
ErrorBadDateFormat=Value '%s' has wrong date format
|
||||
@@ -119,7 +120,7 @@ ErrorLoginHasNoEmail=This user has no email address. Process aborted.
|
||||
ErrorBadValueForCode=Bad value for security code. Try again with new value...
|
||||
ErrorBothFieldCantBeNegative=Fields %s and %s can't be both negative
|
||||
ErrorFieldCantBeNegativeOnInvoice=Field <strong>%s</strong> cannot be negative on this type of invoice. If you need to add a discount line, just create the discount first (from field '%s' in thirdparty card) and apply it to the invoice.
|
||||
ErrorLinesCantBeNegativeForOneVATRate=Total of lines can't be negative for a given VAT rate.
|
||||
ErrorLinesCantBeNegativeForOneVATRate=Total of lines (net of tax) can't be negative for a given not null VAT rate (Found a negative total for VAT rate <b>%s</b>%%).
|
||||
ErrorLinesCantBeNegativeOnDeposits=Lines can't be negative in a deposit. You will face problems when you will need to consume the deposit in final invoice if you do so.
|
||||
ErrorQtyForCustomerInvoiceCantBeNegative=Quantity for line into customer invoices can't be negative
|
||||
ErrorWebServerUserHasNotPermission=User account <b>%s</b> used to execute web server has no permission for that
|
||||
@@ -183,6 +184,7 @@ ErrorBadDefinitionOfMenuArrayInModuleDescriptor=Bad Definition Of Menu Array In
|
||||
ErrorSavingChanges=An error has occurred when saving the changes
|
||||
ErrorWarehouseRequiredIntoShipmentLine=Warehouse is required on the line to ship
|
||||
ErrorFileMustHaveFormat=File must have format %s
|
||||
ErrorFilenameCantStartWithDot=Filename can't start with a '.'
|
||||
ErrorSupplierCountryIsNotDefined=Country for this vendor is not defined. Correct this first.
|
||||
ErrorsThirdpartyMerge=Failed to merge the two records. Request canceled.
|
||||
ErrorStockIsNotEnoughToAddProductOnOrder=Stock is not enough for product %s to add it into a new order.
|
||||
|
||||
@@ -15,6 +15,7 @@ CancelCP=Canceled
|
||||
RefuseCP=Refused
|
||||
ValidatorCP=Approbator
|
||||
ListeCP=List of leave
|
||||
Leave=Leave request
|
||||
LeaveId=Leave ID
|
||||
ReviewedByCP=Will be approved by
|
||||
UserID=User ID
|
||||
|
||||
@@ -23,6 +23,9 @@ AddLoan=Create loan
|
||||
FinancialCommitment=Financial commitment
|
||||
InterestAmount=Interest
|
||||
CapitalRemain=Capital remain
|
||||
TermPaidAllreadyPaid = This term is allready paid
|
||||
CantUseScheduleWithLoanStartedToPaid = Can't use scheduler for a loan with payment started
|
||||
CantModifyInterestIfScheduleIsUsed = You can't modify interest if you use schedule
|
||||
# Admin
|
||||
ConfigLoan=Configuration of the module loan
|
||||
LOAN_ACCOUNTING_ACCOUNT_CAPITAL=Accounting account capital by default
|
||||
|
||||
@@ -7,7 +7,7 @@ ProjectsArea=Projects Area
|
||||
ProjectStatus=Project status
|
||||
SharedProject=Everybody
|
||||
PrivateProject=Project contacts
|
||||
ProjectsImContactFor=Projects for I am explicitly a contact
|
||||
ProjectsImContactFor=Projects for which I am explicitly a contact
|
||||
AllAllowedProjects=All project I can read (mine + public)
|
||||
AllProjects=All projects
|
||||
MyProjectsDesc=This view is limited to projects you are a contact for
|
||||
|
||||
@@ -84,3 +84,4 @@ DefaultModelPropalClosed=Default template when closing a business proposal (unbi
|
||||
ProposalCustomerSignature=Written acceptance, company stamp, date and signature
|
||||
ProposalsStatisticsSuppliers=Vendor proposals statistics
|
||||
CaseFollowedBy=Case followed by
|
||||
SignedOnly=Signed only
|
||||
|
||||
@@ -56,16 +56,15 @@ DOL_UNDERLINE=Enable underline
|
||||
DOL_UNDERLINE_DISABLED=Disable underline
|
||||
DOL_BEEP=Beed sound
|
||||
DOL_PRINT_TEXT=Print text
|
||||
DOL_VALUE_DATE=Invoice date
|
||||
DOL_VALUE_DATE_TIME=Invoice date and time
|
||||
DOL_VALUE_YEAR=Invoice year
|
||||
DateInvoiceWithTime=Invoice date and time
|
||||
YearInvoice=Invoice year
|
||||
DOL_VALUE_MONTH_LETTERS=Invoice month in letters
|
||||
DOL_VALUE_MONTH=Invoice month
|
||||
DOL_VALUE_DAY=Invoice day
|
||||
DOL_VALUE_DAY_LETTERS=Inovice day in letters
|
||||
DOL_LINE_FEED_REVERSE=Line feed reverse
|
||||
DOL_VALUE_OBJECT_ID=Invoice ID
|
||||
DOL_VALUE_OBJECT_REF=Invoice ref
|
||||
InvoiceID=Invoice ID
|
||||
InvoiceRef=Invoice ref
|
||||
DOL_PRINT_OBJECT_LINES=Invoice lines
|
||||
DOL_VALUE_CUSTOMER_FIRSTNAME=Customer first name
|
||||
DOL_VALUE_CUSTOMER_LASTNAME=Customer last name
|
||||
@@ -76,20 +75,8 @@ DOL_VALUE_CUSTOMER_SKYPE=Customer Skype
|
||||
DOL_VALUE_CUSTOMER_TAX_NUMBER=Customer tax number
|
||||
DOL_VALUE_CUSTOMER_ACCOUNT_BALANCE=Customer account balance
|
||||
DOL_VALUE_MYSOC_NAME=Your company name
|
||||
DOL_VALUE_MYSOC_ADDRESS=Your company address
|
||||
DOL_VALUE_MYSOC_ZIP=Your zip code
|
||||
DOL_VALUE_MYSOC_TOWN=Your town
|
||||
DOL_VALUE_MYSOC_COUNTRY=Your country
|
||||
DOL_VALUE_MYSOC_IDPROF1=Your IDPROF1
|
||||
DOL_VALUE_MYSOC_IDPROF2=Your IDPROF2
|
||||
DOL_VALUE_MYSOC_IDPROF3=Your IDPROF3
|
||||
DOL_VALUE_MYSOC_IDPROF4=Your IDPROF4
|
||||
DOL_VALUE_MYSOC_IDPROF5=Your IDPROF5
|
||||
DOL_VALUE_MYSOC_IDPROF6=Your IDPROF6
|
||||
DOL_VALUE_MYSOC_TVA_INTRA=Intra-Community VAT ID
|
||||
DOL_VALUE_MYSOC_CAPITAL=Capital
|
||||
DOL_VALUE_VENDOR_LASTNAME=Vendor last name
|
||||
DOL_VALUE_VENDOR_FIRSTNAME=Vendor first name
|
||||
DOL_VALUE_VENDOR_MAIL=Vendor mail
|
||||
VendorLastname=Vendor last name
|
||||
VendorFirstname=Vendor first name
|
||||
VendorEmail=Vendor email
|
||||
DOL_VALUE_CUSTOMER_POINTS=Customer points
|
||||
DOL_VALUE_OBJECT_POINTS=Object points
|
||||
|
||||
@@ -17,6 +17,10 @@ CancelSending=Cancel sending
|
||||
DeleteSending=Delete sending
|
||||
Stock=Stock
|
||||
Stocks=Stocks
|
||||
MissingStocks=Missing stocks
|
||||
StockAtDate=Stock at date
|
||||
StockAtDateInPast=Date in past
|
||||
StockAtDateInFuture=Date in future
|
||||
StocksByLotSerial=Stocks by lot/serial
|
||||
LotSerial=Lots/Serials
|
||||
LotSerialList=List of lot/serials
|
||||
@@ -30,6 +34,7 @@ StockMovementForId=Movement ID %d
|
||||
ListMouvementStockProject=List of stock movements associated to project
|
||||
StocksArea=Warehouses area
|
||||
AllWarehouses=All warehouses
|
||||
IncludeEmptyDesiredStock=Include also undefined desired stock
|
||||
IncludeAlsoDraftOrders=Include also draft orders
|
||||
Location=Location
|
||||
LocationSummary=Short name location
|
||||
@@ -59,10 +64,9 @@ AllowAddLimitStockByWarehouse=Manage also value for minimum and desired stock pe
|
||||
RuleForWarehouse=Rule for warehouses
|
||||
WarehouseAskWarehouseDuringOrder=Set a warehouse on Sale orders
|
||||
UserDefaultWarehouse=Set a warehouse on Users
|
||||
DefaultWarehouseActive=Default warehouse active
|
||||
MainDefaultWarehouse=Default warehouse
|
||||
MainDefaultWarehouseUser=Use user warehouse asign default
|
||||
MainDefaultWarehouseUserDesc=/!\\ By activating this option the gold of the creation of an article, the warehouse assigned to the user will be defined on this one. If no warehouse is defined on the user, the default warehouse is defined.
|
||||
MainDefaultWarehouseUser=Use a default warehouse for each user
|
||||
MainDefaultWarehouseUserDesc=By activating this option, during creation of a product, the warehouse assigned to the product will be defined on this one. If no warehouse is defined on the user, the default warehouse is defined.
|
||||
IndependantSubProductStock=Product stock and subproduct stock are independent
|
||||
QtyDispatched=Quantity dispatched
|
||||
QtyDispatchedShort=Qty dispatched
|
||||
@@ -126,6 +130,7 @@ CurentlyUsingPhysicalStock=Physical stock
|
||||
RuleForStockReplenishment=Rule for stocks replenishment
|
||||
SelectProductWithNotNullQty=Select at least one product with a qty not null and a vendor
|
||||
AlertOnly= Alerts only
|
||||
IncludeProductWithUndefinedAlerts = Include also negative stock for products with no desired quantity defined, to restore them to 0
|
||||
WarehouseForStockDecrease=The warehouse <b>%s</b> will be used for stock decrease
|
||||
WarehouseForStockIncrease=The warehouse <b>%s</b> will be used for stock increase
|
||||
ForThisWarehouse=For this warehouse
|
||||
@@ -227,3 +232,6 @@ InventoryForASpecificProduct=Inventory for a specific product
|
||||
StockIsRequiredToChooseWhichLotToUse=Stock is required to choose which lot to use
|
||||
ForceTo=Force to
|
||||
AlwaysShowFullArbo=Display full tree of warehouse on popup of warehouse links (Warning: This may decrease dramatically performances)
|
||||
StockAtDatePastDesc=You can view here the stock (real stock) at a given date in the past
|
||||
StockAtDateFutureDesc=You can view here the stock (virtual stock) at a given date in future
|
||||
CurrentStock=Current stock
|
||||
|
||||
@@ -58,7 +58,10 @@ NoPageYet=No pages yet
|
||||
YouCanCreatePageOrImportTemplate=You can create a new page or import a full website template
|
||||
SyntaxHelp=Help on specific syntax tips
|
||||
YouCanEditHtmlSourceckeditor=You can edit HTML source code using the "Source" button in editor.
|
||||
YouCanEditHtmlSource=<br><span class="fa fa-bug"></span> You can include PHP code into this source using tags <strong><?php ?></strong>. The following global variables are available: $conf, $db, $mysoc, $user, $website, $websitepage, $weblangs, $pagelangs.<br><br><span class="fa fa-bug"></span> You can also include content of another Page/Container with the following syntax:<br><strong><?php includeContainer('alias_of_container_to_include'); ?></strong><br><br><span class="fa fa-bug"></span> You can make a redirect to another Page/Container with the following syntax (Note: do not output any content before a redirect):<br><strong><?php redirectToContainer('alias_of_container_to_redirect_to'); ?></strong><br><br><span class="fa fa-link"></span> To add a link to another page, use the syntax:<br><strong><a href="alias_of_page_to_link_to.php">mylink<a></strong><br><br><span class="fa fa-download"></span> To include a <strong>link to download</strong> a file stored into the <strong>documents</strong> directory, use the <strong>document.php</strong> wrapper:<br>Example, for a file into documents/ecm (need to be logged), syntax is:<br><strong><a href="/document.php?modulepart=ecm&file=[relative_dir/]filename.ext"></strong><br>For a file into documents/medias (open directory for public access), syntax is:<br><strong><a href="/document.php?modulepart=medias&file=[relative_dir/]filename.ext"></strong><br>For a file shared with a share link (open access using the sharing hash key of file), syntax is:<br><strong><a href="/document.php?hashp=publicsharekeyoffile"></strong><br><br><span class="fa fa-picture-o"></span> To include an <strong>image</strong> stored into the <strong>documents</strong> directory, use the <strong>viewimage.php</strong> wrapper:<br>Example, for an image into documents/medias (open directory for public access), syntax is:<br><strong><img src="/viewimage.php?modulepart=medias&file=[relative_dir/]filename.ext"></strong><br><br>More examples of HTML or dynamic code available on <a href="%s" target="_blank">the wiki documentation</a><br>.
|
||||
YouCanEditHtmlSource=<br><span class="fa fa-bug"></span> You can include PHP code into this source using tags <strong><?php ?></strong>. The following global variables are available: $conf, $db, $mysoc, $user, $website, $websitepage, $weblangs, $pagelangs.<br><br><span class="fa fa-bug"></span> You can also include content of another Page/Container with the following syntax:<br><strong><?php includeContainer('alias_of_container_to_include'); ?></strong><br><br><span class="fa fa-bug"></span> You can make a redirect to another Page/Container with the following syntax (Note: do not output any content before a redirect):<br><strong><?php redirectToContainer('alias_of_container_to_redirect_to'); ?></strong><br><br><span class="fa fa-link"></span> To add a link to another page, use the syntax:<br><strong><a href="alias_of_page_to_link_to.php">mylink<a></strong><br><br><span class="fa fa-download"></span> To include a <strong>link to download</strong> a file stored into the <strong>documents</strong> directory, use the <strong>document.php</strong> wrapper:<br>Example, for a file into documents/ecm (need to be logged), syntax is:<br><strong><a href="/document.php?modulepart=ecm&file=[relative_dir/]filename.ext"></strong><br>For a file into documents/medias (open directory for public access), syntax is:<br><strong><a href="/document.php?modulepart=medias&file=[relative_dir/]filename.ext"></strong><br>For a file shared with a share link (open access using the sharing hash key of file), syntax is:<br><strong><a href="/document.php?hashp=publicsharekeyoffile"></strong><br><br><span class="fa fa-picture-o"></span> To include an <strong>image</strong> stored into the <strong>documents</strong> directory, use the <strong>viewimage.php</strong> wrapper:<br>Example, for an image into documents/medias (open directory for public access), syntax is:<br><strong><img src="/viewimage.php?modulepart=medias&file=[relative_dir/]filename.ext"></strong><br>
|
||||
#YouCanEditHtmlSource2=<br><span class="fa fa-picture-o"></span> To include a <strong>image</strong> shared publicaly, use the <strong>viewimage.php</strong> wrapper:<br>Example with a shared key 123456789, syntax is:<br><strong><img src="/viewimage.php?hashp=12345679012..."></strong><br>
|
||||
YouCanEditHtmlSource2=For an image shared with a share link (open access using the sharing hash key of file), syntax is:<br><strong><img src="/viewimage.php?hashp=12345679012..."></strong><br>
|
||||
YouCanEditHtmlSourceMore=<br>More examples of HTML or dynamic code available on <a href="%s" target="_blank">the wiki documentation</a><br>.
|
||||
ClonePage=Clone page/container
|
||||
CloneSite=Clone site
|
||||
SiteAdded=Website added
|
||||
|
||||
@@ -10,8 +10,8 @@ PaymentByBankTransferReceipts=Credit transfer orders
|
||||
PaymentByBankTransferLines=Credit transfer order lines
|
||||
WithdrawalsReceipts=Direct debit orders
|
||||
WithdrawalReceipt=Direct debit order
|
||||
BankTransferReceipts=Credit transfer receipts
|
||||
BankTransferReceipt=Credit transfer receipt
|
||||
BankTransferReceipts=Credit transfer order
|
||||
BankTransferReceipt=Credit transfer order
|
||||
LatestBankTransferReceipts=Latest %s credit transfer orders
|
||||
LastWithdrawalReceipts=Latest %s direct debit files
|
||||
WithdrawalsLine=Direct debit order line
|
||||
@@ -34,12 +34,13 @@ NoInvoiceToWithdraw=No invoice open for '%s' is waiting. Go on tab '%s' on invoi
|
||||
NoSupplierInvoiceToWithdraw=No supplier invoice with open 'Direct credit requests' is waiting. Go on tab '%s' on invoice card to make a request.
|
||||
ResponsibleUser=User Responsible
|
||||
WithdrawalsSetup=Direct debit payment setup
|
||||
CreditTransferSetup=Crebit transfer setup
|
||||
CreditTransferSetup=Credit transfer setup
|
||||
WithdrawStatistics=Direct debit payment statistics
|
||||
CreditTransferStatistics=Credit transfer statistics
|
||||
Rejects=Rejects
|
||||
LastWithdrawalReceipt=Latest %s direct debit receipts
|
||||
MakeWithdrawRequest=Make a direct debit payment request
|
||||
MakeBankTransferOrder=Make a credit transfer request
|
||||
WithdrawRequestsDone=%s direct debit payment requests recorded
|
||||
ThirdPartyBankCode=Third-party bank code
|
||||
NoInvoiceCouldBeWithdrawed=No invoice debited successfully. Check that invoices are on companies with a valid IBAN and that IBAN has a UMR (Unique Mandate Reference) with mode <strong>%s</strong>.
|
||||
@@ -92,7 +93,8 @@ CreditDate=Credit on
|
||||
WithdrawalFileNotCapable=Unable to generate withdrawal receipt file for your country %s (Your country is not supported)
|
||||
ShowWithdraw=Show Direct Debit Order
|
||||
IfInvoiceNeedOnWithdrawPaymentWontBeClosed=However, if invoice has at least one direct debit payment order not yet processed, it won't be set as paid to allow prior withdrawal management.
|
||||
DoStandingOrdersBeforePayments=This tab allows you to request a direct debit payment order. Once done, go into menu Bank->Direct Debit orders to manage the direct debit payment order. When payment order is closed, payment on invoice will be automatically recorded, and invoice closed if remainder to pay is null.
|
||||
DoStandingOrdersBeforePayments=This tab allows you to request a direct debit payment order. Once done, go into menu Bank->Direct Debit orders to generate and manage the direct debit payment order. When direct debit order is closed, payment on invoices will be automatically recorded, and invoices closed if remainder to pay is null.
|
||||
DoCreditTransferBeforePayments=This tab allows you to request a credit transfer order. Once done, go into menu Bank->Credit transfer orders to generate and manage the credit transfer order. When credit transfer order is closed, payment on invoices will be automatically recorded, and invoices closed if remainder to pay is null.
|
||||
WithdrawalFile=Withdrawal file
|
||||
SetToStatusSent=Set to status "File Sent"
|
||||
ThisWillAlsoAddPaymentOnInvoice=This will also record payments on invoices and will classify them as "Paid" if remain to pay is null
|
||||
@@ -103,6 +105,7 @@ RUMLong=Unique Mandate Reference
|
||||
RUMWillBeGenerated=If empty, a UMR (Unique Mandate Reference) will be generated once the bank account information is saved.
|
||||
WithdrawMode=Direct debit mode (FRST or RECUR)
|
||||
WithdrawRequestAmount=Amount of Direct debit request:
|
||||
BankTransferAmount=Amount of Credit Transfer request:
|
||||
WithdrawRequestErrorNilAmount=Unable to create direct debit request for empty amount.
|
||||
SepaMandate=SEPA Direct Debit Mandate
|
||||
SepaMandateShort=SEPA Mandate
|
||||
@@ -128,7 +131,7 @@ ICS=Creditor Identifier CI
|
||||
END_TO_END="EndToEndId" SEPA XML tag - Unique id assigned per transaction
|
||||
USTRD="Unstructured" SEPA XML tag
|
||||
ADDDAYS=Add days to Execution Date
|
||||
|
||||
NoDefaultIBANFound=No default IBAN found for this third party
|
||||
### Notifications
|
||||
InfoCreditSubject=Payment of direct debit payment order %s by the bank
|
||||
InfoCreditMessage=The direct debit payment order %s has been paid by the bank<br>Data of payment: %s
|
||||
|
||||
@@ -543,7 +543,7 @@ Module54Desc=Management of contracts (services or recurring subscriptions)
|
||||
Module55Name=Barcodes
|
||||
Module55Desc=Barcodes إدارة
|
||||
Module56Name=Payment by credit transfer
|
||||
Module56Desc=Management of payment by credit transfer orders. It includes generation of SEPA file for European countries.
|
||||
Module56Desc=Management of payment of suppliers by credit transfer orders. It includes generation of SEPA file for European countries.
|
||||
Module57Name=Bank Direct Debit payments
|
||||
Module57Desc=Management of Direct Debit payment orders. It includes generation of SEPA file for European countries.
|
||||
Module58Name=انقر للاتصال
|
||||
@@ -1983,7 +1983,7 @@ SmallerThan=Smaller than
|
||||
LargerThan=Larger than
|
||||
IfTrackingIDFoundEventWillBeLinked=Note that If a tracking ID is found into incoming email, the event will be automatically linked to the related objects.
|
||||
WithGMailYouCanCreateADedicatedPassword=With a GMail account, if you enabled the 2 steps validation, it is recommanded to create a dedicated second password for the application instead of using your own account passsword from https://myaccount.google.com/.
|
||||
EmailCollectorTargetDir=It may be a desired behaviour to move the email into another tag/directory when it was processed successfully. Just set a value here to use this feature. Note that you must also use a read/write login account.
|
||||
EmailCollectorTargetDir=It may be a desired behaviour to move the email into another tag/directory when it was processed successfully. Just set name of directory here to use this feature (Do NOT use special characters in name). Note that you must also use a read/write login account.
|
||||
EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing thirdparty in your database. The found (or created) thirdparty will be used for following actions that need it. In the parameter field you can use for example 'EXTRACT:BODY:Name:\\s([^\\s]*)' if you want to extract the name of the thirdparty from a string 'Name: name to find' found into the body.
|
||||
EndPointFor=End point for %s : %s
|
||||
DeleteEmailCollector=Delete email collector
|
||||
|
||||
@@ -63,6 +63,7 @@ ShipmentClassifyClosedInDolibarr=الشحنة %sتم تصنيفها مدفوعة
|
||||
ShipmentUnClassifyCloseddInDolibarr=Shipment %s classified re-open
|
||||
ShipmentBackToDraftInDolibarr=Shipment %s go back to draft status
|
||||
ShipmentDeletedInDolibarr=الشحنة%sتم حذفها
|
||||
ReceptionValidatedInDolibarr=Reception %s validated
|
||||
OrderCreatedInDolibarr=الطلب %s تم إنشاؤة
|
||||
OrderValidatedInDolibarr=الطلب %s تم التحقق منه
|
||||
OrderDeliveredInDolibarr=الطلب %s مصنف تم التوصيل
|
||||
|
||||
@@ -37,6 +37,7 @@ IbanValid=بان صالحة
|
||||
IbanNotValid=بان غير صالح
|
||||
StandingOrders=Direct debit orders
|
||||
StandingOrder=أمر الخصم المباشر
|
||||
PaymentByDirectDebit=Payment by direct debit
|
||||
PaymentByBankTransfers=Payments by credit transfer
|
||||
PaymentByBankTransfer=Payment by credit transfer
|
||||
AccountStatement=كشف الحساب
|
||||
@@ -105,8 +106,8 @@ SupplierInvoicePayment=Vendor payment
|
||||
SubscriptionPayment=دفع الاشتراك
|
||||
WithdrawalPayment=Debit payment order
|
||||
SocialContributionPayment=مدفوعات الضرائب الاجتماعية / المالية
|
||||
BankTransfer=حوالة مصرفية
|
||||
BankTransfers=حوالات المصرفية
|
||||
BankTransfer=Credit transfer
|
||||
BankTransfers=Credit transfers
|
||||
MenuBankInternalTransfer=حوالة داخلية
|
||||
TransferDesc=Transfer from one account to another, Dolibarr will write two records (a debit in source account and a credit in target account). The same amount (except sign), label and date will be used for this transaction)
|
||||
TransferFrom=من
|
||||
|
||||
@@ -441,6 +441,8 @@ BankAccountNumberKey=Checksum
|
||||
Residence=عنوان
|
||||
IBANNumber=IBAN account number
|
||||
IBAN=إيبان
|
||||
CustomerIBAN=IBAN of customer
|
||||
SupplierIBAN=IBAN of vendor
|
||||
BIC=بيك / سويفت
|
||||
BICNumber=BIC/SWIFT code
|
||||
ExtraInfos=معلومات اضافية
|
||||
|
||||
@@ -107,6 +107,13 @@ OrderPrinterToUse=Order printer to use
|
||||
MainTemplateToUse=Main template to use
|
||||
OrderTemplateToUse=Order template to use
|
||||
BarRestaurant=Bar Restaurant
|
||||
AutoOrder=Customer auto order
|
||||
AutoOrder=Order by the customer himself
|
||||
RestaurantMenu=Menu
|
||||
CustomerMenu=Customer menu
|
||||
ScanToMenu=Scan QR code to see the menu
|
||||
ScanToOrder=Scan QR code to order
|
||||
Appearance=Appearance
|
||||
HideCategoryImages=Hide Category Images
|
||||
HideProductImages=Hide Product Images
|
||||
NumberOfLinesToShow=Number of lines to show in image box
|
||||
DefineTablePlan=Define table plan
|
||||
|
||||
@@ -99,3 +99,6 @@ TypeContact_contrat_internal_SALESREPFOLL=ممثل مبيعات متابعة ا
|
||||
TypeContact_contrat_external_BILLING=فواتير العملاء الاتصال
|
||||
TypeContact_contrat_external_CUSTOMER=متابعة العملاء الاتصال
|
||||
TypeContact_contrat_external_SALESREPSIGN=توقيع عقد خدمات العملاء
|
||||
HideClosedServiceByDefault=Hide closed services by default
|
||||
ShowClosedServices=Show Closed Services
|
||||
HideClosedServices=Hide Closed Services
|
||||
|
||||
@@ -36,6 +36,7 @@ ErrorBadSupplierCodeSyntax=Bad syntax for vendor code
|
||||
ErrorSupplierCodeRequired=Vendor code required
|
||||
ErrorSupplierCodeAlreadyUsed=Vendor code already used
|
||||
ErrorBadParameters=بارامترات سيئة
|
||||
ErrorWrongParameters=Wrong or missing parameters
|
||||
ErrorBadValueForParameter=Wrong value '%s' for parameter '%s'
|
||||
ErrorBadImageFormat=ملف الصورة لم تنسيق معتمد (PHP لديك لا يدعم وظائف لتحويل الصور من هذا الشكل)
|
||||
ErrorBadDateFormat='%s' قيمة له خاطئ تنسيق التاريخ
|
||||
@@ -119,7 +120,7 @@ ErrorLoginHasNoEmail=هذا المستخدم ليس لديه عنوان البر
|
||||
ErrorBadValueForCode=سيئة قيمة لرمز الحماية. حاول مرة أخرى مع القيمة الجديدة ...
|
||||
ErrorBothFieldCantBeNegative=ويمكن لحقول %s و%s لا تكون سلبية
|
||||
ErrorFieldCantBeNegativeOnInvoice=Field <strong>%s</strong> cannot be negative on this type of invoice. If you need to add a discount line, just create the discount first (from field '%s' in thirdparty card) and apply it to the invoice.
|
||||
ErrorLinesCantBeNegativeForOneVATRate=Total of lines can't be negative for a given VAT rate.
|
||||
ErrorLinesCantBeNegativeForOneVATRate=Total of lines (net of tax) can't be negative for a given not null VAT rate (Found a negative total for VAT rate <b>%s</b>%%).
|
||||
ErrorLinesCantBeNegativeOnDeposits=Lines can't be negative in a deposit. You will face problems when you will need to consume the deposit in final invoice if you do so.
|
||||
ErrorQtyForCustomerInvoiceCantBeNegative=كمية لخط في فواتير العملاء لا يمكن أن يكون سلبيا
|
||||
ErrorWebServerUserHasNotPermission=<b>%s</b> تستخدم حساب مستخدم لتنفيذ خادم الويب لا يوجد لديه إذن لذلك
|
||||
@@ -183,6 +184,7 @@ ErrorBadDefinitionOfMenuArrayInModuleDescriptor=سيئة تعريف القائم
|
||||
ErrorSavingChanges=An error has occurred when saving the changes
|
||||
ErrorWarehouseRequiredIntoShipmentLine=Warehouse is required on the line to ship
|
||||
ErrorFileMustHaveFormat=File must have format %s
|
||||
ErrorFilenameCantStartWithDot=Filename can't start with a '.'
|
||||
ErrorSupplierCountryIsNotDefined=Country for this vendor is not defined. Correct this first.
|
||||
ErrorsThirdpartyMerge=Failed to merge the two records. Request canceled.
|
||||
ErrorStockIsNotEnoughToAddProductOnOrder=Stock is not enough for product %s to add it into a new order.
|
||||
|
||||
@@ -15,6 +15,7 @@ CancelCP=ألغيت
|
||||
RefuseCP=رفض
|
||||
ValidatorCP=Approbator
|
||||
ListeCP=List of leave
|
||||
Leave=ترك الطلب
|
||||
LeaveId=Leave ID
|
||||
ReviewedByCP=سيتم مراجعتها من قبل
|
||||
UserID=User ID
|
||||
|
||||
@@ -23,6 +23,9 @@ AddLoan=Create loan
|
||||
FinancialCommitment=Financial commitment
|
||||
InterestAmount=اهتمام
|
||||
CapitalRemain=Capital remain
|
||||
TermPaidAllreadyPaid = This term is allready paid
|
||||
CantUseScheduleWithLoanStartedToPaid = Can't use scheduler for a loan with payment started
|
||||
CantModifyInterestIfScheduleIsUsed = You can't modify interest if you use schedule
|
||||
# Admin
|
||||
ConfigLoan=التكوين للقرض وحدة
|
||||
LOAN_ACCOUNTING_ACCOUNT_CAPITAL=Accounting account capital by default
|
||||
|
||||
@@ -7,7 +7,7 @@ ProjectsArea=Projects Area
|
||||
ProjectStatus=حالة المشروع
|
||||
SharedProject=مشاريع مشتركة
|
||||
PrivateProject=مشروع اتصالات
|
||||
ProjectsImContactFor=Projects for I am explicitly a contact
|
||||
ProjectsImContactFor=Projects for which I am explicitly a contact
|
||||
AllAllowedProjects=All project I can read (mine + public)
|
||||
AllProjects=جميع المشاريع
|
||||
MyProjectsDesc=This view is limited to projects you are a contact for
|
||||
|
||||
@@ -76,7 +76,7 @@ TypeContact_propal_external_BILLING=الزبون فاتورة الاتصال
|
||||
TypeContact_propal_external_CUSTOMER=اتصل العملاء اقتراح متابعة
|
||||
TypeContact_propal_external_SHIPPING=Customer contact for delivery
|
||||
# Document models
|
||||
DocModelAzurDescription=A complete proposal model
|
||||
DocModelAzurDescription=A complete proposal model (old implementation of Cyan template)
|
||||
DocModelCyanDescription=A complete proposal model
|
||||
DefaultModelPropalCreate=إنشاء نموذج افتراضي
|
||||
DefaultModelPropalToBill=القالب الافتراضي عند إغلاق الأعمال المقترح (أن الفاتورة)
|
||||
@@ -84,3 +84,4 @@ DefaultModelPropalClosed=القالب الافتراضي عند إغلاق ال
|
||||
ProposalCustomerSignature=قبول كتابي، ختم الشركة والتاريخ والتوقيع
|
||||
ProposalsStatisticsSuppliers=Vendor proposals statistics
|
||||
CaseFollowedBy=Case followed by
|
||||
SignedOnly=Signed only
|
||||
|
||||
@@ -56,16 +56,15 @@ DOL_UNDERLINE=Enable underline
|
||||
DOL_UNDERLINE_DISABLED=Disable underline
|
||||
DOL_BEEP=Beed sound
|
||||
DOL_PRINT_TEXT=Print text
|
||||
DOL_VALUE_DATE=تاريخ الفاتورة
|
||||
DOL_VALUE_DATE_TIME=Invoice date and time
|
||||
DOL_VALUE_YEAR=Invoice year
|
||||
DateInvoiceWithTime=Invoice date and time
|
||||
YearInvoice=Invoice year
|
||||
DOL_VALUE_MONTH_LETTERS=Invoice month in letters
|
||||
DOL_VALUE_MONTH=Invoice month
|
||||
DOL_VALUE_DAY=Invoice day
|
||||
DOL_VALUE_DAY_LETTERS=Inovice day in letters
|
||||
DOL_LINE_FEED_REVERSE=Line feed reverse
|
||||
DOL_VALUE_OBJECT_ID=Invoice ID
|
||||
DOL_VALUE_OBJECT_REF=فاتورة المرجع
|
||||
InvoiceID=Invoice ID
|
||||
InvoiceRef=فاتورة المرجع
|
||||
DOL_PRINT_OBJECT_LINES=Invoice lines
|
||||
DOL_VALUE_CUSTOMER_FIRSTNAME=Customer first name
|
||||
DOL_VALUE_CUSTOMER_LASTNAME=Customer last name
|
||||
@@ -76,20 +75,8 @@ DOL_VALUE_CUSTOMER_SKYPE=Customer Skype
|
||||
DOL_VALUE_CUSTOMER_TAX_NUMBER=Customer tax number
|
||||
DOL_VALUE_CUSTOMER_ACCOUNT_BALANCE=Customer account balance
|
||||
DOL_VALUE_MYSOC_NAME=Your company name
|
||||
DOL_VALUE_MYSOC_ADDRESS=Your company address
|
||||
DOL_VALUE_MYSOC_ZIP=Your zip code
|
||||
DOL_VALUE_MYSOC_TOWN=Your town
|
||||
DOL_VALUE_MYSOC_COUNTRY=Your country
|
||||
DOL_VALUE_MYSOC_IDPROF1=Your IDPROF1
|
||||
DOL_VALUE_MYSOC_IDPROF2=Your IDPROF2
|
||||
DOL_VALUE_MYSOC_IDPROF3=Your IDPROF3
|
||||
DOL_VALUE_MYSOC_IDPROF4=Your IDPROF4
|
||||
DOL_VALUE_MYSOC_IDPROF5=Your IDPROF5
|
||||
DOL_VALUE_MYSOC_IDPROF6=Your IDPROF6
|
||||
DOL_VALUE_MYSOC_TVA_INTRA=Intra-Community VAT ID
|
||||
DOL_VALUE_MYSOC_CAPITAL=عاصمة
|
||||
DOL_VALUE_VENDOR_LASTNAME=Vendor last name
|
||||
DOL_VALUE_VENDOR_FIRSTNAME=Vendor first name
|
||||
DOL_VALUE_VENDOR_MAIL=Vendor mail
|
||||
VendorLastname=Vendor last name
|
||||
VendorFirstname=Vendor first name
|
||||
VendorEmail=Vendor email
|
||||
DOL_VALUE_CUSTOMER_POINTS=Customer points
|
||||
DOL_VALUE_OBJECT_POINTS=Object points
|
||||
|
||||
@@ -17,6 +17,10 @@ CancelSending=الغاء ارسال
|
||||
DeleteSending=حذف ارسال
|
||||
Stock=الأسهم
|
||||
Stocks=الاسهم
|
||||
MissingStocks=Missing stocks
|
||||
StockAtDate=Stock at date
|
||||
StockAtDateInPast=Date in past
|
||||
StockAtDateInFuture=Date in future
|
||||
StocksByLotSerial=الأسهم عن طريق القرعة / المسلسل
|
||||
LotSerial=Lots/Serials
|
||||
LotSerialList=List of lot/serials
|
||||
@@ -30,6 +34,7 @@ StockMovementForId=Movement ID %d
|
||||
ListMouvementStockProject=List of stock movements associated to project
|
||||
StocksArea=منطقة المستودعات
|
||||
AllWarehouses=All warehouses
|
||||
IncludeEmptyDesiredStock=Include also undefined desired stock
|
||||
IncludeAlsoDraftOrders=Include also draft orders
|
||||
Location=عوضا عن
|
||||
LocationSummary=باختصار اسم الموقع
|
||||
@@ -59,10 +64,9 @@ AllowAddLimitStockByWarehouse=Manage also value for minimum and desired stock pe
|
||||
RuleForWarehouse=Rule for warehouses
|
||||
WarehouseAskWarehouseDuringOrder=Set a warehouse on Sale orders
|
||||
UserDefaultWarehouse=Set a warehouse on Users
|
||||
DefaultWarehouseActive=Default warehouse active
|
||||
MainDefaultWarehouse=Default warehouse
|
||||
MainDefaultWarehouseUser=Use user warehouse asign default
|
||||
MainDefaultWarehouseUserDesc=/!\\ By activating this option the gold of the creation of an article, the warehouse assigned to the user will be defined on this one. If no warehouse is defined on the user, the default warehouse is defined.
|
||||
MainDefaultWarehouseUser=Use a default warehouse for each user
|
||||
MainDefaultWarehouseUserDesc=By activating this option, during creation of a product, the warehouse assigned to the product will be defined on this one. If no warehouse is defined on the user, the default warehouse is defined.
|
||||
IndependantSubProductStock=Product stock and subproduct stock are independent
|
||||
QtyDispatched=ارسال كمية
|
||||
QtyDispatchedShort=أرسل الكمية
|
||||
@@ -126,6 +130,7 @@ CurentlyUsingPhysicalStock=المخزون المادي
|
||||
RuleForStockReplenishment=حكم شراء أسهم التجديد
|
||||
SelectProductWithNotNullQty=Select at least one product with a qty not null and a vendor
|
||||
AlertOnly= التنبيهات فقط
|
||||
IncludeProductWithUndefinedAlerts = Include also negative stock for products with no desired quantity defined, to restore them to 0
|
||||
WarehouseForStockDecrease=سيتم استخدام <b>مستودع٪ الصورة</b> لانخفاض الأسهم
|
||||
WarehouseForStockIncrease=سيتم استخدام <b>مستودع٪ s للزيادة</b> المخزون
|
||||
ForThisWarehouse=لهذا المستودع
|
||||
@@ -227,3 +232,6 @@ InventoryForASpecificProduct=Inventory for a specific product
|
||||
StockIsRequiredToChooseWhichLotToUse=Stock is required to choose which lot to use
|
||||
ForceTo=Force to
|
||||
AlwaysShowFullArbo=Display full tree of warehouse on popup of warehouse links (Warning: This may decrease dramatically performances)
|
||||
StockAtDatePastDesc=You can view here the stock (real stock) at a given date in the past
|
||||
StockAtDateFutureDesc=You can view here the stock (virtual stock) at a given date in future
|
||||
CurrentStock=Current stock
|
||||
|
||||
@@ -58,7 +58,10 @@ NoPageYet=No pages yet
|
||||
YouCanCreatePageOrImportTemplate=You can create a new page or import a full website template
|
||||
SyntaxHelp=Help on specific syntax tips
|
||||
YouCanEditHtmlSourceckeditor=You can edit HTML source code using the "Source" button in editor.
|
||||
YouCanEditHtmlSource=<br><span class="fa fa-bug"></span> You can include PHP code into this source using tags <strong><?php ?></strong>. The following global variables are available: $conf, $db, $mysoc, $user, $website, $websitepage, $weblangs, $pagelangs.<br><br><span class="fa fa-bug"></span> You can also include content of another Page/Container with the following syntax:<br><strong><?php includeContainer('alias_of_container_to_include'); ?></strong><br><br><span class="fa fa-bug"></span> You can make a redirect to another Page/Container with the following syntax (Note: do not output any content before a redirect):<br><strong><?php redirectToContainer('alias_of_container_to_redirect_to'); ?></strong><br><br><span class="fa fa-link"></span> To add a link to another page, use the syntax:<br><strong><a href="alias_of_page_to_link_to.php">mylink<a></strong><br><br><span class="fa fa-download"></span> To include a <strong>link to download</strong> a file stored into the <strong>documents</strong> directory, use the <strong>document.php</strong> wrapper:<br>Example, for a file into documents/ecm (need to be logged), syntax is:<br><strong><a href="/document.php?modulepart=ecm&file=[relative_dir/]filename.ext"></strong><br>For a file into documents/medias (open directory for public access), syntax is:<br><strong><a href="/document.php?modulepart=medias&file=[relative_dir/]filename.ext"></strong><br>For a file shared with a share link (open access using the sharing hash key of file), syntax is:<br><strong><a href="/document.php?hashp=publicsharekeyoffile"></strong><br><br><span class="fa fa-picture-o"></span> To include an <strong>image</strong> stored into the <strong>documents</strong> directory, use the <strong>viewimage.php</strong> wrapper:<br>Example, for an image into documents/medias (open directory for public access), syntax is:<br><strong><img src="/viewimage.php?modulepart=medias&file=[relative_dir/]filename.ext"></strong><br><br>More examples of HTML or dynamic code available on <a href="%s" target="_blank">the wiki documentation</a><br>.
|
||||
YouCanEditHtmlSource=<br><span class="fa fa-bug"></span> You can include PHP code into this source using tags <strong><?php ?></strong>. The following global variables are available: $conf, $db, $mysoc, $user, $website, $websitepage, $weblangs, $pagelangs.<br><br><span class="fa fa-bug"></span> You can also include content of another Page/Container with the following syntax:<br><strong><?php includeContainer('alias_of_container_to_include'); ?></strong><br><br><span class="fa fa-bug"></span> You can make a redirect to another Page/Container with the following syntax (Note: do not output any content before a redirect):<br><strong><?php redirectToContainer('alias_of_container_to_redirect_to'); ?></strong><br><br><span class="fa fa-link"></span> To add a link to another page, use the syntax:<br><strong><a href="alias_of_page_to_link_to.php">mylink<a></strong><br><br><span class="fa fa-download"></span> To include a <strong>link to download</strong> a file stored into the <strong>documents</strong> directory, use the <strong>document.php</strong> wrapper:<br>Example, for a file into documents/ecm (need to be logged), syntax is:<br><strong><a href="/document.php?modulepart=ecm&file=[relative_dir/]filename.ext"></strong><br>For a file into documents/medias (open directory for public access), syntax is:<br><strong><a href="/document.php?modulepart=medias&file=[relative_dir/]filename.ext"></strong><br>For a file shared with a share link (open access using the sharing hash key of file), syntax is:<br><strong><a href="/document.php?hashp=publicsharekeyoffile"></strong><br><br><span class="fa fa-picture-o"></span> To include an <strong>image</strong> stored into the <strong>documents</strong> directory, use the <strong>viewimage.php</strong> wrapper:<br>Example, for an image into documents/medias (open directory for public access), syntax is:<br><strong><img src="/viewimage.php?modulepart=medias&file=[relative_dir/]filename.ext"></strong><br>
|
||||
#YouCanEditHtmlSource2=<br><span class="fa fa-picture-o"></span> To include a <strong>image</strong> shared publicaly, use the <strong>viewimage.php</strong> wrapper:<br>Example with a shared key 123456789, syntax is:<br><strong><img src="/viewimage.php?hashp=12345679012..."></strong><br>
|
||||
YouCanEditHtmlSource2=For an image shared with a share link (open access using the sharing hash key of file), syntax is:<br><strong><img src="/viewimage.php?hashp=12345679012..."></strong><br>
|
||||
YouCanEditHtmlSourceMore=<br>More examples of HTML or dynamic code available on <a href="%s" target="_blank">the wiki documentation</a><br>.
|
||||
ClonePage=Clone page/container
|
||||
CloneSite=Clone site
|
||||
SiteAdded=Website added
|
||||
|
||||
@@ -10,8 +10,8 @@ PaymentByBankTransferReceipts=Credit transfer orders
|
||||
PaymentByBankTransferLines=Credit transfer order lines
|
||||
WithdrawalsReceipts=Direct debit orders
|
||||
WithdrawalReceipt=Direct debit order
|
||||
BankTransferReceipts=Credit transfer receipts
|
||||
BankTransferReceipt=Credit transfer receipt
|
||||
BankTransferReceipts=Credit transfer order
|
||||
BankTransferReceipt=Credit transfer order
|
||||
LatestBankTransferReceipts=Latest %s credit transfer orders
|
||||
LastWithdrawalReceipts=Latest %s direct debit files
|
||||
WithdrawalsLine=Direct debit order line
|
||||
@@ -34,12 +34,13 @@ NoInvoiceToWithdraw=No invoice open for '%s' is waiting. Go on tab '%s' on invoi
|
||||
NoSupplierInvoiceToWithdraw=No supplier invoice with open 'Direct credit requests' is waiting. Go on tab '%s' on invoice card to make a request.
|
||||
ResponsibleUser=User Responsible
|
||||
WithdrawalsSetup=Direct debit payment setup
|
||||
CreditTransferSetup=Crebit transfer setup
|
||||
CreditTransferSetup=Credit transfer setup
|
||||
WithdrawStatistics=Direct debit payment statistics
|
||||
CreditTransferStatistics=Credit transfer statistics
|
||||
Rejects=ترفض
|
||||
LastWithdrawalReceipt=Latest %s direct debit receipts
|
||||
MakeWithdrawRequest=Make a direct debit payment request
|
||||
MakeBankTransferOrder=Make a credit transfer request
|
||||
WithdrawRequestsDone=%s direct debit payment requests recorded
|
||||
ThirdPartyBankCode=Third-party bank code
|
||||
NoInvoiceCouldBeWithdrawed=No invoice debited successfully. Check that invoices are on companies with a valid IBAN and that IBAN has a UMR (Unique Mandate Reference) with mode <strong>%s</strong>.
|
||||
@@ -92,7 +93,8 @@ CreditDate=الائتمان على
|
||||
WithdrawalFileNotCapable=غير قادر على توليد ملف استلام الانسحاب لبلدكم٪ الصورة (لا يتم اعتماد البلد)
|
||||
ShowWithdraw=Show Direct Debit Order
|
||||
IfInvoiceNeedOnWithdrawPaymentWontBeClosed=However, if invoice has at least one direct debit payment order not yet processed, it won't be set as paid to allow prior withdrawal management.
|
||||
DoStandingOrdersBeforePayments=This tab allows you to request a direct debit payment order. Once done, go into menu Bank->Direct Debit orders to manage the direct debit payment order. When payment order is closed, payment on invoice will be automatically recorded, and invoice closed if remainder to pay is null.
|
||||
DoStandingOrdersBeforePayments=This tab allows you to request a direct debit payment order. Once done, go into menu Bank->Direct Debit orders to generate and manage the direct debit payment order. When direct debit order is closed, payment on invoices will be automatically recorded, and invoices closed if remainder to pay is null.
|
||||
DoCreditTransferBeforePayments=This tab allows you to request a credit transfer order. Once done, go into menu Bank->Credit transfer orders to generate and manage the credit transfer order. When credit transfer order is closed, payment on invoices will be automatically recorded, and invoices closed if remainder to pay is null.
|
||||
WithdrawalFile=ملف الانسحاب
|
||||
SetToStatusSent=تعيين إلى حالة "المرسلة ملف"
|
||||
ThisWillAlsoAddPaymentOnInvoice=This will also record payments on invoices and will classify them as "Paid" if remain to pay is null
|
||||
@@ -103,6 +105,7 @@ RUMLong=Unique Mandate Reference
|
||||
RUMWillBeGenerated=If empty, a UMR (Unique Mandate Reference) will be generated once the bank account information is saved.
|
||||
WithdrawMode=Direct debit mode (FRST or RECUR)
|
||||
WithdrawRequestAmount=Amount of Direct debit request:
|
||||
BankTransferAmount=Amount of Credit Transfer request:
|
||||
WithdrawRequestErrorNilAmount=Unable to create direct debit request for empty amount.
|
||||
SepaMandate=SEPA Direct Debit Mandate
|
||||
SepaMandateShort=SEPA Mandate
|
||||
@@ -128,7 +131,7 @@ ICS=Creditor Identifier CI
|
||||
END_TO_END="EndToEndId" SEPA XML tag - Unique id assigned per transaction
|
||||
USTRD="Unstructured" SEPA XML tag
|
||||
ADDDAYS=Add days to Execution Date
|
||||
|
||||
NoDefaultIBANFound=No default IBAN found for this third party
|
||||
### Notifications
|
||||
InfoCreditSubject=Payment of direct debit payment order %s by the bank
|
||||
InfoCreditMessage=The direct debit payment order %s has been paid by the bank<br>Data of payment: %s
|
||||
|
||||
@@ -543,7 +543,7 @@ Module54Desc=Management of contracts (services or recurring subscriptions)
|
||||
Module55Name=Barcodes
|
||||
Module55Desc=Barcode management
|
||||
Module56Name=Payment by credit transfer
|
||||
Module56Desc=Management of payment by credit transfer orders. It includes generation of SEPA file for European countries.
|
||||
Module56Desc=Management of payment of suppliers by credit transfer orders. It includes generation of SEPA file for European countries.
|
||||
Module57Name=Bank Direct Debit payments
|
||||
Module57Desc=Management of Direct Debit payment orders. It includes generation of SEPA file for European countries.
|
||||
Module58Name=ClickToDial
|
||||
@@ -1983,7 +1983,7 @@ SmallerThan=Smaller than
|
||||
LargerThan=Larger than
|
||||
IfTrackingIDFoundEventWillBeLinked=Note that If a tracking ID is found into incoming email, the event will be automatically linked to the related objects.
|
||||
WithGMailYouCanCreateADedicatedPassword=With a GMail account, if you enabled the 2 steps validation, it is recommanded to create a dedicated second password for the application instead of using your own account passsword from https://myaccount.google.com/.
|
||||
EmailCollectorTargetDir=It may be a desired behaviour to move the email into another tag/directory when it was processed successfully. Just set a value here to use this feature. Note that you must also use a read/write login account.
|
||||
EmailCollectorTargetDir=It may be a desired behaviour to move the email into another tag/directory when it was processed successfully. Just set name of directory here to use this feature (Do NOT use special characters in name). Note that you must also use a read/write login account.
|
||||
EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing thirdparty in your database. The found (or created) thirdparty will be used for following actions that need it. In the parameter field you can use for example 'EXTRACT:BODY:Name:\\s([^\\s]*)' if you want to extract the name of the thirdparty from a string 'Name: name to find' found into the body.
|
||||
EndPointFor=End point for %s : %s
|
||||
DeleteEmailCollector=Delete email collector
|
||||
|
||||
@@ -63,6 +63,7 @@ ShipmentClassifyClosedInDolibarr=Shipment %s classified billed
|
||||
ShipmentUnClassifyCloseddInDolibarr=Shipment %s classified re-open
|
||||
ShipmentBackToDraftInDolibarr=Shipment %s go back to draft status
|
||||
ShipmentDeletedInDolibarr=Shipment %s deleted
|
||||
ReceptionValidatedInDolibarr=Reception %s validated
|
||||
OrderCreatedInDolibarr=Order %s created
|
||||
OrderValidatedInDolibarr=Order %s validated
|
||||
OrderDeliveredInDolibarr=Order %s classified delivered
|
||||
|
||||
@@ -37,6 +37,7 @@ IbanValid=BAN valid
|
||||
IbanNotValid=BAN not valid
|
||||
StandingOrders=Direct debit orders
|
||||
StandingOrder=Direct debit order
|
||||
PaymentByDirectDebit=Payment by direct debit
|
||||
PaymentByBankTransfers=Payments by credit transfer
|
||||
PaymentByBankTransfer=Payment by credit transfer
|
||||
AccountStatement=Account statement
|
||||
@@ -105,8 +106,8 @@ SupplierInvoicePayment=Vendor payment
|
||||
SubscriptionPayment=Subscription payment
|
||||
WithdrawalPayment=Debit payment order
|
||||
SocialContributionPayment=Social/fiscal tax payment
|
||||
BankTransfer=Bank transfer
|
||||
BankTransfers=Bank transfers
|
||||
BankTransfer=Credit transfer
|
||||
BankTransfers=Credit transfers
|
||||
MenuBankInternalTransfer=Internal transfer
|
||||
TransferDesc=Transfer from one account to another, Dolibarr will write two records (a debit in source account and a credit in target account). The same amount (except sign), label and date will be used for this transaction)
|
||||
TransferFrom=From
|
||||
|
||||
@@ -441,6 +441,8 @@ BankAccountNumberKey=Checksum
|
||||
Residence=Address
|
||||
IBANNumber=IBAN account number
|
||||
IBAN=IBAN
|
||||
CustomerIBAN=IBAN of customer
|
||||
SupplierIBAN=IBAN of vendor
|
||||
BIC=BIC/SWIFT
|
||||
BICNumber=BIC/SWIFT code
|
||||
ExtraInfos=Extra infos
|
||||
|
||||
@@ -107,6 +107,13 @@ OrderPrinterToUse=Order printer to use
|
||||
MainTemplateToUse=Main template to use
|
||||
OrderTemplateToUse=Order template to use
|
||||
BarRestaurant=Bar Restaurant
|
||||
AutoOrder=Customer auto order
|
||||
AutoOrder=Order by the customer himself
|
||||
RestaurantMenu=Menu
|
||||
CustomerMenu=Customer menu
|
||||
ScanToMenu=Scan QR code to see the menu
|
||||
ScanToOrder=Scan QR code to order
|
||||
Appearance=Appearance
|
||||
HideCategoryImages=Hide Category Images
|
||||
HideProductImages=Hide Product Images
|
||||
NumberOfLinesToShow=Number of lines to show in image box
|
||||
DefineTablePlan=Define table plan
|
||||
|
||||
@@ -99,3 +99,6 @@ TypeContact_contrat_internal_SALESREPFOLL=Sales representative following-up cont
|
||||
TypeContact_contrat_external_BILLING=Billing customer contact
|
||||
TypeContact_contrat_external_CUSTOMER=Follow-up customer contact
|
||||
TypeContact_contrat_external_SALESREPSIGN=Signing contract customer contact
|
||||
HideClosedServiceByDefault=Hide closed services by default
|
||||
ShowClosedServices=Show Closed Services
|
||||
HideClosedServices=Hide Closed Services
|
||||
|
||||
@@ -36,6 +36,7 @@ ErrorBadSupplierCodeSyntax=Bad syntax for vendor code
|
||||
ErrorSupplierCodeRequired=Vendor code required
|
||||
ErrorSupplierCodeAlreadyUsed=Vendor code already used
|
||||
ErrorBadParameters=Bad parameters
|
||||
ErrorWrongParameters=Wrong or missing parameters
|
||||
ErrorBadValueForParameter=Wrong value '%s' for parameter '%s'
|
||||
ErrorBadImageFormat=Image file has not a supported format (Your PHP does not support functions to convert images of this format)
|
||||
ErrorBadDateFormat=Value '%s' has wrong date format
|
||||
@@ -119,7 +120,7 @@ ErrorLoginHasNoEmail=This user has no email address. Process aborted.
|
||||
ErrorBadValueForCode=Bad value for security code. Try again with new value...
|
||||
ErrorBothFieldCantBeNegative=Fields %s and %s can't be both negative
|
||||
ErrorFieldCantBeNegativeOnInvoice=Field <strong>%s</strong> cannot be negative on this type of invoice. If you need to add a discount line, just create the discount first (from field '%s' in thirdparty card) and apply it to the invoice.
|
||||
ErrorLinesCantBeNegativeForOneVATRate=Total of lines can't be negative for a given VAT rate.
|
||||
ErrorLinesCantBeNegativeForOneVATRate=Total of lines (net of tax) can't be negative for a given not null VAT rate (Found a negative total for VAT rate <b>%s</b>%%).
|
||||
ErrorLinesCantBeNegativeOnDeposits=Lines can't be negative in a deposit. You will face problems when you will need to consume the deposit in final invoice if you do so.
|
||||
ErrorQtyForCustomerInvoiceCantBeNegative=Quantity for line into customer invoices can't be negative
|
||||
ErrorWebServerUserHasNotPermission=User account <b>%s</b> used to execute web server has no permission for that
|
||||
@@ -183,6 +184,7 @@ ErrorBadDefinitionOfMenuArrayInModuleDescriptor=Bad Definition Of Menu Array In
|
||||
ErrorSavingChanges=An error has occurred when saving the changes
|
||||
ErrorWarehouseRequiredIntoShipmentLine=Warehouse is required on the line to ship
|
||||
ErrorFileMustHaveFormat=File must have format %s
|
||||
ErrorFilenameCantStartWithDot=Filename can't start with a '.'
|
||||
ErrorSupplierCountryIsNotDefined=Country for this vendor is not defined. Correct this first.
|
||||
ErrorsThirdpartyMerge=Failed to merge the two records. Request canceled.
|
||||
ErrorStockIsNotEnoughToAddProductOnOrder=Stock is not enough for product %s to add it into a new order.
|
||||
|
||||
@@ -15,6 +15,7 @@ CancelCP=Canceled
|
||||
RefuseCP=Refused
|
||||
ValidatorCP=Approbator
|
||||
ListeCP=List of leave
|
||||
Leave=Leave request
|
||||
LeaveId=Leave ID
|
||||
ReviewedByCP=Will be approved by
|
||||
UserID=User ID
|
||||
|
||||
@@ -23,6 +23,9 @@ AddLoan=Create loan
|
||||
FinancialCommitment=Financial commitment
|
||||
InterestAmount=Interest
|
||||
CapitalRemain=Capital remain
|
||||
TermPaidAllreadyPaid = This term is allready paid
|
||||
CantUseScheduleWithLoanStartedToPaid = Can't use scheduler for a loan with payment started
|
||||
CantModifyInterestIfScheduleIsUsed = You can't modify interest if you use schedule
|
||||
# Admin
|
||||
ConfigLoan=Configuration of the module loan
|
||||
LOAN_ACCOUNTING_ACCOUNT_CAPITAL=Accounting account capital by default
|
||||
|
||||
@@ -7,7 +7,7 @@ ProjectsArea=Projects Area
|
||||
ProjectStatus=Project status
|
||||
SharedProject=Everybody
|
||||
PrivateProject=Project contacts
|
||||
ProjectsImContactFor=Projects for I am explicitly a contact
|
||||
ProjectsImContactFor=Projects for which I am explicitly a contact
|
||||
AllAllowedProjects=All project I can read (mine + public)
|
||||
AllProjects=All projects
|
||||
MyProjectsDesc=This view is limited to projects you are a contact for
|
||||
|
||||
@@ -84,3 +84,4 @@ DefaultModelPropalClosed=Default template when closing a business proposal (unbi
|
||||
ProposalCustomerSignature=Written acceptance, company stamp, date and signature
|
||||
ProposalsStatisticsSuppliers=Vendor proposals statistics
|
||||
CaseFollowedBy=Case followed by
|
||||
SignedOnly=Signed only
|
||||
|
||||
@@ -56,16 +56,15 @@ DOL_UNDERLINE=Enable underline
|
||||
DOL_UNDERLINE_DISABLED=Disable underline
|
||||
DOL_BEEP=Beed sound
|
||||
DOL_PRINT_TEXT=Print text
|
||||
DOL_VALUE_DATE=Invoice date
|
||||
DOL_VALUE_DATE_TIME=Invoice date and time
|
||||
DOL_VALUE_YEAR=Invoice year
|
||||
DateInvoiceWithTime=Invoice date and time
|
||||
YearInvoice=Invoice year
|
||||
DOL_VALUE_MONTH_LETTERS=Invoice month in letters
|
||||
DOL_VALUE_MONTH=Invoice month
|
||||
DOL_VALUE_DAY=Invoice day
|
||||
DOL_VALUE_DAY_LETTERS=Inovice day in letters
|
||||
DOL_LINE_FEED_REVERSE=Line feed reverse
|
||||
DOL_VALUE_OBJECT_ID=Invoice ID
|
||||
DOL_VALUE_OBJECT_REF=Invoice ref
|
||||
InvoiceID=Invoice ID
|
||||
InvoiceRef=Invoice ref
|
||||
DOL_PRINT_OBJECT_LINES=Invoice lines
|
||||
DOL_VALUE_CUSTOMER_FIRSTNAME=Customer first name
|
||||
DOL_VALUE_CUSTOMER_LASTNAME=Customer last name
|
||||
@@ -76,20 +75,8 @@ DOL_VALUE_CUSTOMER_SKYPE=Customer Skype
|
||||
DOL_VALUE_CUSTOMER_TAX_NUMBER=Customer tax number
|
||||
DOL_VALUE_CUSTOMER_ACCOUNT_BALANCE=Customer account balance
|
||||
DOL_VALUE_MYSOC_NAME=Your company name
|
||||
DOL_VALUE_MYSOC_ADDRESS=Your company address
|
||||
DOL_VALUE_MYSOC_ZIP=Your zip code
|
||||
DOL_VALUE_MYSOC_TOWN=Your town
|
||||
DOL_VALUE_MYSOC_COUNTRY=Your country
|
||||
DOL_VALUE_MYSOC_IDPROF1=Your IDPROF1
|
||||
DOL_VALUE_MYSOC_IDPROF2=Your IDPROF2
|
||||
DOL_VALUE_MYSOC_IDPROF3=Your IDPROF3
|
||||
DOL_VALUE_MYSOC_IDPROF4=Your IDPROF4
|
||||
DOL_VALUE_MYSOC_IDPROF5=Your IDPROF5
|
||||
DOL_VALUE_MYSOC_IDPROF6=Your IDPROF6
|
||||
DOL_VALUE_MYSOC_TVA_INTRA=Intra-Community VAT ID
|
||||
DOL_VALUE_MYSOC_CAPITAL=Capital
|
||||
DOL_VALUE_VENDOR_LASTNAME=Vendor last name
|
||||
DOL_VALUE_VENDOR_FIRSTNAME=Vendor first name
|
||||
DOL_VALUE_VENDOR_MAIL=Vendor mail
|
||||
VendorLastname=Vendor last name
|
||||
VendorFirstname=Vendor first name
|
||||
VendorEmail=Vendor email
|
||||
DOL_VALUE_CUSTOMER_POINTS=Customer points
|
||||
DOL_VALUE_OBJECT_POINTS=Object points
|
||||
|
||||
@@ -17,6 +17,10 @@ CancelSending=Cancel sending
|
||||
DeleteSending=Delete sending
|
||||
Stock=Stock
|
||||
Stocks=Stocks
|
||||
MissingStocks=Missing stocks
|
||||
StockAtDate=Stock at date
|
||||
StockAtDateInPast=Date in past
|
||||
StockAtDateInFuture=Date in future
|
||||
StocksByLotSerial=Stocks by lot/serial
|
||||
LotSerial=Lots/Serials
|
||||
LotSerialList=List of lot/serials
|
||||
@@ -30,6 +34,7 @@ StockMovementForId=Movement ID %d
|
||||
ListMouvementStockProject=List of stock movements associated to project
|
||||
StocksArea=Warehouses area
|
||||
AllWarehouses=All warehouses
|
||||
IncludeEmptyDesiredStock=Include also undefined desired stock
|
||||
IncludeAlsoDraftOrders=Include also draft orders
|
||||
Location=Location
|
||||
LocationSummary=Short name location
|
||||
@@ -59,10 +64,9 @@ AllowAddLimitStockByWarehouse=Manage also value for minimum and desired stock pe
|
||||
RuleForWarehouse=Rule for warehouses
|
||||
WarehouseAskWarehouseDuringOrder=Set a warehouse on Sale orders
|
||||
UserDefaultWarehouse=Set a warehouse on Users
|
||||
DefaultWarehouseActive=Default warehouse active
|
||||
MainDefaultWarehouse=Default warehouse
|
||||
MainDefaultWarehouseUser=Use user warehouse asign default
|
||||
MainDefaultWarehouseUserDesc=/!\\ By activating this option the gold of the creation of an article, the warehouse assigned to the user will be defined on this one. If no warehouse is defined on the user, the default warehouse is defined.
|
||||
MainDefaultWarehouseUser=Use a default warehouse for each user
|
||||
MainDefaultWarehouseUserDesc=By activating this option, during creation of a product, the warehouse assigned to the product will be defined on this one. If no warehouse is defined on the user, the default warehouse is defined.
|
||||
IndependantSubProductStock=Product stock and subproduct stock are independent
|
||||
QtyDispatched=Quantity dispatched
|
||||
QtyDispatchedShort=Qty dispatched
|
||||
@@ -126,6 +130,7 @@ CurentlyUsingPhysicalStock=Physical stock
|
||||
RuleForStockReplenishment=Rule for stocks replenishment
|
||||
SelectProductWithNotNullQty=Select at least one product with a qty not null and a vendor
|
||||
AlertOnly= Alerts only
|
||||
IncludeProductWithUndefinedAlerts = Include also negative stock for products with no desired quantity defined, to restore them to 0
|
||||
WarehouseForStockDecrease=The warehouse <b>%s</b> will be used for stock decrease
|
||||
WarehouseForStockIncrease=The warehouse <b>%s</b> will be used for stock increase
|
||||
ForThisWarehouse=For this warehouse
|
||||
@@ -227,3 +232,6 @@ InventoryForASpecificProduct=Inventory for a specific product
|
||||
StockIsRequiredToChooseWhichLotToUse=Stock is required to choose which lot to use
|
||||
ForceTo=Force to
|
||||
AlwaysShowFullArbo=Display full tree of warehouse on popup of warehouse links (Warning: This may decrease dramatically performances)
|
||||
StockAtDatePastDesc=You can view here the stock (real stock) at a given date in the past
|
||||
StockAtDateFutureDesc=You can view here the stock (virtual stock) at a given date in future
|
||||
CurrentStock=Current stock
|
||||
|
||||
@@ -58,7 +58,10 @@ NoPageYet=No pages yet
|
||||
YouCanCreatePageOrImportTemplate=You can create a new page or import a full website template
|
||||
SyntaxHelp=Help on specific syntax tips
|
||||
YouCanEditHtmlSourceckeditor=You can edit HTML source code using the "Source" button in editor.
|
||||
YouCanEditHtmlSource=<br><span class="fa fa-bug"></span> You can include PHP code into this source using tags <strong><?php ?></strong>. The following global variables are available: $conf, $db, $mysoc, $user, $website, $websitepage, $weblangs, $pagelangs.<br><br><span class="fa fa-bug"></span> You can also include content of another Page/Container with the following syntax:<br><strong><?php includeContainer('alias_of_container_to_include'); ?></strong><br><br><span class="fa fa-bug"></span> You can make a redirect to another Page/Container with the following syntax (Note: do not output any content before a redirect):<br><strong><?php redirectToContainer('alias_of_container_to_redirect_to'); ?></strong><br><br><span class="fa fa-link"></span> To add a link to another page, use the syntax:<br><strong><a href="alias_of_page_to_link_to.php">mylink<a></strong><br><br><span class="fa fa-download"></span> To include a <strong>link to download</strong> a file stored into the <strong>documents</strong> directory, use the <strong>document.php</strong> wrapper:<br>Example, for a file into documents/ecm (need to be logged), syntax is:<br><strong><a href="/document.php?modulepart=ecm&file=[relative_dir/]filename.ext"></strong><br>For a file into documents/medias (open directory for public access), syntax is:<br><strong><a href="/document.php?modulepart=medias&file=[relative_dir/]filename.ext"></strong><br>For a file shared with a share link (open access using the sharing hash key of file), syntax is:<br><strong><a href="/document.php?hashp=publicsharekeyoffile"></strong><br><br><span class="fa fa-picture-o"></span> To include an <strong>image</strong> stored into the <strong>documents</strong> directory, use the <strong>viewimage.php</strong> wrapper:<br>Example, for an image into documents/medias (open directory for public access), syntax is:<br><strong><img src="/viewimage.php?modulepart=medias&file=[relative_dir/]filename.ext"></strong><br><br>More examples of HTML or dynamic code available on <a href="%s" target="_blank">the wiki documentation</a><br>.
|
||||
YouCanEditHtmlSource=<br><span class="fa fa-bug"></span> You can include PHP code into this source using tags <strong><?php ?></strong>. The following global variables are available: $conf, $db, $mysoc, $user, $website, $websitepage, $weblangs, $pagelangs.<br><br><span class="fa fa-bug"></span> You can also include content of another Page/Container with the following syntax:<br><strong><?php includeContainer('alias_of_container_to_include'); ?></strong><br><br><span class="fa fa-bug"></span> You can make a redirect to another Page/Container with the following syntax (Note: do not output any content before a redirect):<br><strong><?php redirectToContainer('alias_of_container_to_redirect_to'); ?></strong><br><br><span class="fa fa-link"></span> To add a link to another page, use the syntax:<br><strong><a href="alias_of_page_to_link_to.php">mylink<a></strong><br><br><span class="fa fa-download"></span> To include a <strong>link to download</strong> a file stored into the <strong>documents</strong> directory, use the <strong>document.php</strong> wrapper:<br>Example, for a file into documents/ecm (need to be logged), syntax is:<br><strong><a href="/document.php?modulepart=ecm&file=[relative_dir/]filename.ext"></strong><br>For a file into documents/medias (open directory for public access), syntax is:<br><strong><a href="/document.php?modulepart=medias&file=[relative_dir/]filename.ext"></strong><br>For a file shared with a share link (open access using the sharing hash key of file), syntax is:<br><strong><a href="/document.php?hashp=publicsharekeyoffile"></strong><br><br><span class="fa fa-picture-o"></span> To include an <strong>image</strong> stored into the <strong>documents</strong> directory, use the <strong>viewimage.php</strong> wrapper:<br>Example, for an image into documents/medias (open directory for public access), syntax is:<br><strong><img src="/viewimage.php?modulepart=medias&file=[relative_dir/]filename.ext"></strong><br>
|
||||
#YouCanEditHtmlSource2=<br><span class="fa fa-picture-o"></span> To include a <strong>image</strong> shared publicaly, use the <strong>viewimage.php</strong> wrapper:<br>Example with a shared key 123456789, syntax is:<br><strong><img src="/viewimage.php?hashp=12345679012..."></strong><br>
|
||||
YouCanEditHtmlSource2=For an image shared with a share link (open access using the sharing hash key of file), syntax is:<br><strong><img src="/viewimage.php?hashp=12345679012..."></strong><br>
|
||||
YouCanEditHtmlSourceMore=<br>More examples of HTML or dynamic code available on <a href="%s" target="_blank">the wiki documentation</a><br>.
|
||||
ClonePage=Clone page/container
|
||||
CloneSite=Clone site
|
||||
SiteAdded=Website added
|
||||
|
||||
@@ -10,8 +10,8 @@ PaymentByBankTransferReceipts=Credit transfer orders
|
||||
PaymentByBankTransferLines=Credit transfer order lines
|
||||
WithdrawalsReceipts=Direct debit orders
|
||||
WithdrawalReceipt=Direct debit order
|
||||
BankTransferReceipts=Credit transfer receipts
|
||||
BankTransferReceipt=Credit transfer receipt
|
||||
BankTransferReceipts=Credit transfer order
|
||||
BankTransferReceipt=Credit transfer order
|
||||
LatestBankTransferReceipts=Latest %s credit transfer orders
|
||||
LastWithdrawalReceipts=Latest %s direct debit files
|
||||
WithdrawalsLine=Direct debit order line
|
||||
@@ -34,12 +34,13 @@ NoInvoiceToWithdraw=No invoice open for '%s' is waiting. Go on tab '%s' on invoi
|
||||
NoSupplierInvoiceToWithdraw=No supplier invoice with open 'Direct credit requests' is waiting. Go on tab '%s' on invoice card to make a request.
|
||||
ResponsibleUser=User Responsible
|
||||
WithdrawalsSetup=Direct debit payment setup
|
||||
CreditTransferSetup=Crebit transfer setup
|
||||
CreditTransferSetup=Credit transfer setup
|
||||
WithdrawStatistics=Direct debit payment statistics
|
||||
CreditTransferStatistics=Credit transfer statistics
|
||||
Rejects=Rejects
|
||||
LastWithdrawalReceipt=Latest %s direct debit receipts
|
||||
MakeWithdrawRequest=Make a direct debit payment request
|
||||
MakeBankTransferOrder=Make a credit transfer request
|
||||
WithdrawRequestsDone=%s direct debit payment requests recorded
|
||||
ThirdPartyBankCode=Third-party bank code
|
||||
NoInvoiceCouldBeWithdrawed=No invoice debited successfully. Check that invoices are on companies with a valid IBAN and that IBAN has a UMR (Unique Mandate Reference) with mode <strong>%s</strong>.
|
||||
@@ -92,7 +93,8 @@ CreditDate=Credit on
|
||||
WithdrawalFileNotCapable=Unable to generate withdrawal receipt file for your country %s (Your country is not supported)
|
||||
ShowWithdraw=Show Direct Debit Order
|
||||
IfInvoiceNeedOnWithdrawPaymentWontBeClosed=However, if invoice has at least one direct debit payment order not yet processed, it won't be set as paid to allow prior withdrawal management.
|
||||
DoStandingOrdersBeforePayments=This tab allows you to request a direct debit payment order. Once done, go into menu Bank->Direct Debit orders to manage the direct debit payment order. When payment order is closed, payment on invoice will be automatically recorded, and invoice closed if remainder to pay is null.
|
||||
DoStandingOrdersBeforePayments=This tab allows you to request a direct debit payment order. Once done, go into menu Bank->Direct Debit orders to generate and manage the direct debit payment order. When direct debit order is closed, payment on invoices will be automatically recorded, and invoices closed if remainder to pay is null.
|
||||
DoCreditTransferBeforePayments=This tab allows you to request a credit transfer order. Once done, go into menu Bank->Credit transfer orders to generate and manage the credit transfer order. When credit transfer order is closed, payment on invoices will be automatically recorded, and invoices closed if remainder to pay is null.
|
||||
WithdrawalFile=Withdrawal file
|
||||
SetToStatusSent=Set to status "File Sent"
|
||||
ThisWillAlsoAddPaymentOnInvoice=This will also record payments on invoices and will classify them as "Paid" if remain to pay is null
|
||||
@@ -103,6 +105,7 @@ RUMLong=Unique Mandate Reference
|
||||
RUMWillBeGenerated=If empty, a UMR (Unique Mandate Reference) will be generated once the bank account information is saved.
|
||||
WithdrawMode=Direct debit mode (FRST or RECUR)
|
||||
WithdrawRequestAmount=Amount of Direct debit request:
|
||||
BankTransferAmount=Amount of Credit Transfer request:
|
||||
WithdrawRequestErrorNilAmount=Unable to create direct debit request for empty amount.
|
||||
SepaMandate=SEPA Direct Debit Mandate
|
||||
SepaMandateShort=SEPA Mandate
|
||||
@@ -128,7 +131,7 @@ ICS=Creditor Identifier CI
|
||||
END_TO_END="EndToEndId" SEPA XML tag - Unique id assigned per transaction
|
||||
USTRD="Unstructured" SEPA XML tag
|
||||
ADDDAYS=Add days to Execution Date
|
||||
|
||||
NoDefaultIBANFound=No default IBAN found for this third party
|
||||
### Notifications
|
||||
InfoCreditSubject=Payment of direct debit payment order %s by the bank
|
||||
InfoCreditMessage=The direct debit payment order %s has been paid by the bank<br>Data of payment: %s
|
||||
|
||||
@@ -543,7 +543,7 @@ Module54Desc=Управление на договори (услуги или п
|
||||
Module55Name=Баркодове
|
||||
Module55Desc=Управление на баркодове
|
||||
Module56Name=Плащане с кредитен превод
|
||||
Module56Desc=Management of payment by credit transfer orders. It includes generation of SEPA file for European countries.
|
||||
Module56Desc=Management of payment of suppliers by credit transfer orders. It includes generation of SEPA file for European countries.
|
||||
Module57Name=Банкови плащания с директен дебит
|
||||
Module57Desc=Управление на платежни нареждания за директен дебит. Включва генериране на SEPA файл за европейските страни.
|
||||
Module58Name=ClickToDial
|
||||
@@ -1983,7 +1983,7 @@ SmallerThan=По-малък от
|
||||
LargerThan=По-голям от
|
||||
IfTrackingIDFoundEventWillBeLinked=Обърнете внимание, че ако е намерен проследяващ код във входящата електронна поща, събитието ще бъде автоматично свързано със свързаните обекти.
|
||||
WithGMailYouCanCreateADedicatedPassword=С GMail акаунт, ако сте активирали валидирането в 2 стъпки е препоръчително да създадете специална втора парола за приложението, вместо да използвате своята парола за акаунта от https://myaccount.google.com/.
|
||||
EmailCollectorTargetDir=В случай, че желаете да преместите имейла в друг таг / директория, когато той е обработен успешно, то просто посочете стойност тук, за да използвате тази функция. Обърнете внимание, че трябва да използвате потребителски профил с права за четене и запис.
|
||||
EmailCollectorTargetDir=It may be a desired behaviour to move the email into another tag/directory when it was processed successfully. Just set name of directory here to use this feature (Do NOT use special characters in name). Note that you must also use a read/write login account.
|
||||
EmailCollectorLoadThirdPartyHelp=Може да използвате това действие, за да намерите и заредите съществуващ контрагент във вашата база данни, чрез съдържанието на имейла. Намереният (или създаден) контрагент ще бъде използван при следващи действия, които се нуждаят от това. В полето на параметъра може да използвате, например 'EXTRACT:BODY:Name:\\s([^\\s]*)', ако искате да извлечете името на контрагента от низ 'Name: name to find', който е открит в съдържанието на имейла.
|
||||
EndPointFor=Крайна точка за %s: %s
|
||||
DeleteEmailCollector=Изтриване на имейл колекционер
|
||||
|
||||
@@ -63,6 +63,7 @@ ShipmentClassifyClosedInDolibarr=Пратка %s е фактурирана
|
||||
ShipmentUnClassifyCloseddInDolibarr=Пратка %s е активна отново
|
||||
ShipmentBackToDraftInDolibarr=Пратка %s е върната в статус чернова
|
||||
ShipmentDeletedInDolibarr=Пратка %s е изтрита
|
||||
ReceptionValidatedInDolibarr=Reception %s validated
|
||||
OrderCreatedInDolibarr=Поръчка %s е създадена
|
||||
OrderValidatedInDolibarr=Поръчка %s е валидирана
|
||||
OrderDeliveredInDolibarr=Поръчка %s е класифицирана като доставена
|
||||
|
||||
@@ -37,6 +37,7 @@ IbanValid=Валиден IBAN номер
|
||||
IbanNotValid=Невалиден IBAN номер
|
||||
StandingOrders=Нареждания с директен дебит
|
||||
StandingOrder=Поръчка за директен дебит
|
||||
PaymentByDirectDebit=Payment by direct debit
|
||||
PaymentByBankTransfers=Плащания с кредитен превод
|
||||
PaymentByBankTransfer=Плащане с кредитен превод
|
||||
AccountStatement=Извлечение по сметка
|
||||
@@ -105,8 +106,8 @@ SupplierInvoicePayment=Плащане към доставчик
|
||||
SubscriptionPayment=Плащане на членски внос
|
||||
WithdrawalPayment=Платежно нареждане за дебит
|
||||
SocialContributionPayment=Плащане на социални / фискални такси
|
||||
BankTransfer=Банков превод
|
||||
BankTransfers=Банкови преводи
|
||||
BankTransfer=Credit transfer
|
||||
BankTransfers=Credit transfers
|
||||
MenuBankInternalTransfer=Вътрешен превод
|
||||
TransferDesc=При прехвърляне от една сметка в друга, Dolibarr ще направи два записа (дебит от сметката на източника и кредит в целевата сметка). За тази транзакция ще се използва (с изключение на подписа) същата сума, име и дата.
|
||||
TransferFrom=От
|
||||
|
||||
@@ -441,6 +441,8 @@ BankAccountNumberKey=Контролна сума
|
||||
Residence=Адрес
|
||||
IBANNumber=IBAN номер на сметка
|
||||
IBAN=IBAN
|
||||
CustomerIBAN=IBAN of customer
|
||||
SupplierIBAN=IBAN of vendor
|
||||
BIC=BIC / SWIFT
|
||||
BICNumber=BIC / SWIFT код
|
||||
ExtraInfos=Допълнителна информация
|
||||
|
||||
@@ -107,6 +107,13 @@ OrderPrinterToUse=Order printer to use
|
||||
MainTemplateToUse=Main template to use
|
||||
OrderTemplateToUse=Order template to use
|
||||
BarRestaurant=Bar Restaurant
|
||||
AutoOrder=Customer auto order
|
||||
AutoOrder=Order by the customer himself
|
||||
RestaurantMenu=Menu
|
||||
CustomerMenu=Customer menu
|
||||
ScanToMenu=Scan QR code to see the menu
|
||||
ScanToOrder=Scan QR code to order
|
||||
Appearance=Appearance
|
||||
HideCategoryImages=Hide Category Images
|
||||
HideProductImages=Hide Product Images
|
||||
NumberOfLinesToShow=Number of lines to show in image box
|
||||
DefineTablePlan=Define table plan
|
||||
|
||||
@@ -99,3 +99,6 @@ TypeContact_contrat_internal_SALESREPFOLL=Търговски представи
|
||||
TypeContact_contrat_external_BILLING=Контакт на клиента за фактуриране
|
||||
TypeContact_contrat_external_CUSTOMER=Контакт на клиента (проследяващ)
|
||||
TypeContact_contrat_external_SALESREPSIGN=Контакт на клиента (подписващ)
|
||||
HideClosedServiceByDefault=Hide closed services by default
|
||||
ShowClosedServices=Show Closed Services
|
||||
HideClosedServices=Hide Closed Services
|
||||
|
||||
@@ -36,6 +36,7 @@ ErrorBadSupplierCodeSyntax=Неправилен синтаксис за код
|
||||
ErrorSupplierCodeRequired=Необходим е код на доставчик
|
||||
ErrorSupplierCodeAlreadyUsed=Кодът на доставчика вече е използван
|
||||
ErrorBadParameters=Неправилни параметри
|
||||
ErrorWrongParameters=Wrong or missing parameters
|
||||
ErrorBadValueForParameter=Грешна стойност '%s' за параметър '%s'
|
||||
ErrorBadImageFormat=Файловият формат на изображението не се поддържа (PHP не поддържа функции за конвертиране на изображения от този формат)
|
||||
ErrorBadDateFormat=Стойността '%s' има грешен формат за дата
|
||||
@@ -119,7 +120,7 @@ ErrorLoginHasNoEmail=Този потребител няма имейл адре
|
||||
ErrorBadValueForCode=Неправилен защитен код. Опитайте отново ...
|
||||
ErrorBothFieldCantBeNegative=Полетата %s и %s не може да бъде едновременно отрицателен
|
||||
ErrorFieldCantBeNegativeOnInvoice=Field <strong>%s</strong> cannot be negative on this type of invoice. If you need to add a discount line, just create the discount first (from field '%s' in thirdparty card) and apply it to the invoice.
|
||||
ErrorLinesCantBeNegativeForOneVATRate=Total of lines can't be negative for a given VAT rate.
|
||||
ErrorLinesCantBeNegativeForOneVATRate=Total of lines (net of tax) can't be negative for a given not null VAT rate (Found a negative total for VAT rate <b>%s</b>%%).
|
||||
ErrorLinesCantBeNegativeOnDeposits=Редовете не могат да бъдат отрицателни при депозит. Ще се сблъскате с проблеми, когато включите депозита в окончателната фактура.
|
||||
ErrorQtyForCustomerInvoiceCantBeNegative=Количество за ред в клиентска фактура не може да бъде отрицателно
|
||||
ErrorWebServerUserHasNotPermission=Потребителски акаунт <b>%s</b> използват за извършване на уеб сървър не разполага с разрешение за това
|
||||
@@ -183,6 +184,7 @@ ErrorBadDefinitionOfMenuArrayInModuleDescriptor=Лоша дефиниция на
|
||||
ErrorSavingChanges=Възникна грешка при запазването на промените
|
||||
ErrorWarehouseRequiredIntoShipmentLine=Изисква се склад по линията за изпращане
|
||||
ErrorFileMustHaveFormat=Файлът трябва да има формат %s
|
||||
ErrorFilenameCantStartWithDot=Filename can't start with a '.'
|
||||
ErrorSupplierCountryIsNotDefined=Държавата за този доставчик не е дефинирана. Първо коригирайте това.
|
||||
ErrorsThirdpartyMerge=Неуспешно обединяване на двата записа. Заявката е анулирана.
|
||||
ErrorStockIsNotEnoughToAddProductOnOrder=Наличността не е достатъчна, за да може продуктът %s да се добави в нова поръчка.
|
||||
|
||||
@@ -15,6 +15,7 @@ CancelCP=Анулирана
|
||||
RefuseCP=Отхвърлена
|
||||
ValidatorCP=Одобряващ
|
||||
ListeCP=Списък с молби за отпуск
|
||||
Leave=Молба за отпуск
|
||||
LeaveId=Идентификатор на молба за отпуск
|
||||
ReviewedByCP=Ще бъде одобрена от
|
||||
UserID=Потребител
|
||||
|
||||
@@ -11,21 +11,24 @@ Insurance=Застраховка
|
||||
Interest=Лихва
|
||||
Nbterms=Брой условия
|
||||
Term=Условие
|
||||
LoanAccountancyCapitalCode=Счетоводна сметка на капитал
|
||||
LoanAccountancyInsuranceCode=Счетоводна сметка на застраховка
|
||||
LoanAccountancyCapitalCode=Счетоводна сметка за капитал
|
||||
LoanAccountancyInsuranceCode=Счетоводна сметка за застраховка
|
||||
LoanAccountancyInterestCode=Счетоводна сметка за лихва
|
||||
ConfirmDeleteLoan=Потвърдете изтриването на този кредит
|
||||
LoanDeleted=Кредитът е успешно изтрит
|
||||
ConfirmPayLoan=Потвърдете класифицирането на този кредит като платен
|
||||
LoanPaid=Платен кредит
|
||||
LoanPaid=Кредитът е платен
|
||||
ListLoanAssociatedProject=Списък на кредити, свързани с проекта
|
||||
AddLoan=Създаване на кредит
|
||||
FinancialCommitment=Финансово задължение
|
||||
InterestAmount=Лихва
|
||||
CapitalRemain=Оставащ капитал
|
||||
TermPaidAllreadyPaid = This term is allready paid
|
||||
CantUseScheduleWithLoanStartedToPaid = Can't use scheduler for a loan with payment started
|
||||
CantModifyInterestIfScheduleIsUsed = You can't modify interest if you use schedule
|
||||
# Admin
|
||||
ConfigLoan=Конфигуриране на модула Кредити
|
||||
LOAN_ACCOUNTING_ACCOUNT_CAPITAL=Счетоводна сметка на капитал по подразбиране
|
||||
LOAN_ACCOUNTING_ACCOUNT_INTEREST=Счетоводна сметка на лихва по подразбиране
|
||||
LOAN_ACCOUNTING_ACCOUNT_INSURANCE=Счетоводна сметка на застраховка по подразбиране
|
||||
ConfigLoan=Конфигуриране на модула кредити
|
||||
LOAN_ACCOUNTING_ACCOUNT_CAPITAL=Счетоводна сметка за капитал по подразбиране
|
||||
LOAN_ACCOUNTING_ACCOUNT_INTEREST=Счетоводна сметка за лихва по подразбиране
|
||||
LOAN_ACCOUNTING_ACCOUNT_INSURANCE=Счетоводна сметка за застраховка по подразбиране
|
||||
CreateCalcSchedule=Променяне на финансово задължение
|
||||
|
||||
@@ -7,7 +7,7 @@ ProjectsArea=Секция с проекти
|
||||
ProjectStatus=Статус на проект
|
||||
SharedProject=Всички
|
||||
PrivateProject=Участници в проекта
|
||||
ProjectsImContactFor=Проекти, в които съм определен за контакт
|
||||
ProjectsImContactFor=Projects for which I am explicitly a contact
|
||||
AllAllowedProjects=Всеки проект, който мога да прочета (мой и публичен)
|
||||
AllProjects=Всички проекти
|
||||
MyProjectsDesc=Този изглед е ограничен до проекти, в които сте определен за контакт
|
||||
|
||||
@@ -3,7 +3,7 @@ Proposals=Търговски предложения
|
||||
Proposal=Търговско предложение
|
||||
ProposalShort=Предложение
|
||||
ProposalsDraft=Чернови търговски предложения
|
||||
ProposalsOpened=Отворени търговски предложения
|
||||
ProposalsOpened=Активни търговски предложения
|
||||
CommercialProposal=Търговско предложение
|
||||
PdfCommercialProposalTitle=Търговско предложение
|
||||
ProposalCard=Карта
|
||||
@@ -21,19 +21,19 @@ AllPropals=Всички предложения
|
||||
SearchAProposal=Търсене na предложение
|
||||
NoProposal=Няма предложение
|
||||
ProposalsStatistics=Статистика на търговски предложения
|
||||
NumberOfProposalsByMonth=Брой предложения на месец
|
||||
AmountOfProposalsByMonthHT=Обща сума на месец (без ДДС)
|
||||
NumberOfProposalsByMonth=Брой предложения за месец
|
||||
AmountOfProposalsByMonthHT=Стойност на предложения за месец (без ДДС)
|
||||
NbOfProposals=Брой търговски предложения
|
||||
ShowPropal=Показване на предложение
|
||||
PropalsDraft=Чернови
|
||||
PropalsOpened=Отворени
|
||||
PropalsOpened=Активни
|
||||
PropalStatusDraft=Чернова (нужно е валидиране)
|
||||
PropalStatusValidated=Валидирано (отворено)
|
||||
PropalStatusValidated=Валидирано (активно)
|
||||
PropalStatusSigned=Подписано (нужно е фактуриране)
|
||||
PropalStatusNotSigned=Отхвърлено (приключено)
|
||||
PropalStatusBilled=Фактурирано
|
||||
PropalStatusDraftShort=Чернова
|
||||
PropalStatusValidatedShort=Валидирано (отворено)
|
||||
PropalStatusValidatedShort=Валидирано (активно)
|
||||
PropalStatusClosedShort=Приключено
|
||||
PropalStatusSignedShort=Подписано
|
||||
PropalStatusNotSignedShort=Отхвърлено
|
||||
@@ -76,7 +76,7 @@ TypeContact_propal_external_BILLING=Получател на фактура
|
||||
TypeContact_propal_external_CUSTOMER=Получател на предложение
|
||||
TypeContact_propal_external_SHIPPING=Получател на доставка
|
||||
# Document models
|
||||
DocModelAzurDescription=Пълен шаблон на предложение
|
||||
DocModelAzurDescription=Пълен шаблон на предложение (стара реализация на шаблон Cyan)
|
||||
DocModelCyanDescription=Пълен модел на предложение
|
||||
DefaultModelPropalCreate=Създаване на шаблон по подразбиране
|
||||
DefaultModelPropalToBill=Шаблон по подразбиране, когато се приключва търговско предложение (за да бъде фактурирано)
|
||||
@@ -84,3 +84,4 @@ DefaultModelPropalClosed=Шаблон по подразбиране, когат
|
||||
ProposalCustomerSignature=Име, фамилия, фирмен печат, дата и подпис
|
||||
ProposalsStatisticsSuppliers=Статистика на запитвания към доставчици
|
||||
CaseFollowedBy=Случай, проследяван от
|
||||
SignedOnly=Signed only
|
||||
|
||||
@@ -56,16 +56,15 @@ DOL_UNDERLINE=Активиране на подчертаване
|
||||
DOL_UNDERLINE_DISABLED=Деактивиране на подчертаване
|
||||
DOL_BEEP=Звуков сигнал
|
||||
DOL_PRINT_TEXT=Отпечатване на текст
|
||||
DOL_VALUE_DATE=Дата на документ
|
||||
DOL_VALUE_DATE_TIME=Дата и час на фактура
|
||||
DOL_VALUE_YEAR=Година на фактура
|
||||
DateInvoiceWithTime=Дата и час на фактура
|
||||
YearInvoice=Година на фактура
|
||||
DOL_VALUE_MONTH_LETTERS=Месец на фактура с букви
|
||||
DOL_VALUE_MONTH=Месец на фактура
|
||||
DOL_VALUE_DAY=Ден на фактура
|
||||
DOL_VALUE_DAY_LETTERS=Ден на фактура с букви
|
||||
DOL_LINE_FEED_REVERSE=Line feed reverse
|
||||
DOL_VALUE_OBJECT_ID=Invoice ID
|
||||
DOL_VALUE_OBJECT_REF=Съгласно фактура №
|
||||
InvoiceID=Invoice ID
|
||||
InvoiceRef=Съгласно фактура №
|
||||
DOL_PRINT_OBJECT_LINES=Invoice lines
|
||||
DOL_VALUE_CUSTOMER_FIRSTNAME=Customer first name
|
||||
DOL_VALUE_CUSTOMER_LASTNAME=Customer last name
|
||||
@@ -76,20 +75,8 @@ DOL_VALUE_CUSTOMER_SKYPE=Customer Skype
|
||||
DOL_VALUE_CUSTOMER_TAX_NUMBER=Customer tax number
|
||||
DOL_VALUE_CUSTOMER_ACCOUNT_BALANCE=Customer account balance
|
||||
DOL_VALUE_MYSOC_NAME=Your company name
|
||||
DOL_VALUE_MYSOC_ADDRESS=Your company address
|
||||
DOL_VALUE_MYSOC_ZIP=Your zip code
|
||||
DOL_VALUE_MYSOC_TOWN=Your town
|
||||
DOL_VALUE_MYSOC_COUNTRY=Your country
|
||||
DOL_VALUE_MYSOC_IDPROF1=Your IDPROF1
|
||||
DOL_VALUE_MYSOC_IDPROF2=Your IDPROF2
|
||||
DOL_VALUE_MYSOC_IDPROF3=Your IDPROF3
|
||||
DOL_VALUE_MYSOC_IDPROF4=Your IDPROF4
|
||||
DOL_VALUE_MYSOC_IDPROF5=Your IDPROF5
|
||||
DOL_VALUE_MYSOC_IDPROF6=Your IDPROF6
|
||||
DOL_VALUE_MYSOC_TVA_INTRA=ДДС №
|
||||
DOL_VALUE_MYSOC_CAPITAL=Капитал
|
||||
DOL_VALUE_VENDOR_LASTNAME=Vendor last name
|
||||
DOL_VALUE_VENDOR_FIRSTNAME=Vendor first name
|
||||
DOL_VALUE_VENDOR_MAIL=Vendor mail
|
||||
VendorLastname=Vendor last name
|
||||
VendorFirstname=Vendor first name
|
||||
VendorEmail=Vendor email
|
||||
DOL_VALUE_CUSTOMER_POINTS=Customer points
|
||||
DOL_VALUE_OBJECT_POINTS=Object points
|
||||
|
||||
@@ -17,6 +17,10 @@ CancelSending=Анулиране на изпращане
|
||||
DeleteSending=Изтриване на изпращане
|
||||
Stock=Наличност
|
||||
Stocks=Наличности
|
||||
MissingStocks=Missing stocks
|
||||
StockAtDate=Stock at date
|
||||
StockAtDateInPast=Date in past
|
||||
StockAtDateInFuture=Date in future
|
||||
StocksByLotSerial=Наличности по партида / сериен №
|
||||
LotSerial=Партиди / Серийни номера
|
||||
LotSerialList=Списък на партиди / серийни номера
|
||||
@@ -30,6 +34,7 @@ StockMovementForId=Идентификатор на движение %d
|
||||
ListMouvementStockProject=Списък на движения на стокови наличности, свързани с проекта
|
||||
StocksArea=Секция със складове
|
||||
AllWarehouses=Всички складове
|
||||
IncludeEmptyDesiredStock=Include also undefined desired stock
|
||||
IncludeAlsoDraftOrders=Включва чернови поръчки
|
||||
Location=Местоположение
|
||||
LocationSummary=Кратко име на местоположение
|
||||
@@ -59,10 +64,9 @@ AllowAddLimitStockByWarehouse=Управляване също и на стойн
|
||||
RuleForWarehouse=Rule for warehouses
|
||||
WarehouseAskWarehouseDuringOrder=Set a warehouse on Sale orders
|
||||
UserDefaultWarehouse=Set a warehouse on Users
|
||||
DefaultWarehouseActive=Default warehouse active
|
||||
MainDefaultWarehouse=Склад по подразбиране
|
||||
MainDefaultWarehouseUser=Use user warehouse asign default
|
||||
MainDefaultWarehouseUserDesc=/!\\ By activating this option the gold of the creation of an article, the warehouse assigned to the user will be defined on this one. If no warehouse is defined on the user, the default warehouse is defined.
|
||||
MainDefaultWarehouseUser=Use a default warehouse for each user
|
||||
MainDefaultWarehouseUserDesc=By activating this option, during creation of a product, the warehouse assigned to the product will be defined on this one. If no warehouse is defined on the user, the default warehouse is defined.
|
||||
IndependantSubProductStock=Наличностите за продукти и подпродукти са независими
|
||||
QtyDispatched=Изпратено количество
|
||||
QtyDispatchedShort=Изпратено кол.
|
||||
@@ -126,6 +130,7 @@ CurentlyUsingPhysicalStock=Физическа наличност
|
||||
RuleForStockReplenishment=Правило за попълване на наличности
|
||||
SelectProductWithNotNullQty=Избиране на най-малко един продукт с количество различно от 0 и доставчик
|
||||
AlertOnly= Само предупреждения
|
||||
IncludeProductWithUndefinedAlerts = Include also negative stock for products with no desired quantity defined, to restore them to 0
|
||||
WarehouseForStockDecrease=Складът <b>%s</b> ще бъде използван за намаляване на наличността
|
||||
WarehouseForStockIncrease=Складът <b>%s</b> ще бъде използван за увеличаване на наличността
|
||||
ForThisWarehouse=За този склад
|
||||
@@ -227,3 +232,6 @@ InventoryForASpecificProduct=Инвентаризация за конкрете
|
||||
StockIsRequiredToChooseWhichLotToUse=Необходима е наличност, за да изберете коя партида да използвате.
|
||||
ForceTo=Принуждаване до
|
||||
AlwaysShowFullArbo=Display full tree of warehouse on popup of warehouse links (Warning: This may decrease dramatically performances)
|
||||
StockAtDatePastDesc=You can view here the stock (real stock) at a given date in the past
|
||||
StockAtDateFutureDesc=You can view here the stock (virtual stock) at a given date in future
|
||||
CurrentStock=Current stock
|
||||
|
||||
@@ -58,7 +58,10 @@ NoPageYet=Все още няма страници
|
||||
YouCanCreatePageOrImportTemplate=Може да създадете нова страница или да импортирате пълен шаблон на уебсайт
|
||||
SyntaxHelp=Помощ с конкретни съвети за синтаксиса
|
||||
YouCanEditHtmlSourceckeditor=Може да редактирате изходния HTML код с помощта на бутона 'Код' в редактора.
|
||||
YouCanEditHtmlSource=<br><span class="fa fa-bug"></span> You can include PHP code into this source using tags <strong><?php ?></strong>. The following global variables are available: $conf, $db, $mysoc, $user, $website, $websitepage, $weblangs, $pagelangs.<br><br><span class="fa fa-bug"></span> You can also include content of another Page/Container with the following syntax:<br><strong><?php includeContainer('alias_of_container_to_include'); ?></strong><br><br><span class="fa fa-bug"></span> You can make a redirect to another Page/Container with the following syntax (Note: do not output any content before a redirect):<br><strong><?php redirectToContainer('alias_of_container_to_redirect_to'); ?></strong><br><br><span class="fa fa-link"></span> To add a link to another page, use the syntax:<br><strong><a href="alias_of_page_to_link_to.php">mylink<a></strong><br><br><span class="fa fa-download"></span> To include a <strong>link to download</strong> a file stored into the <strong>documents</strong> directory, use the <strong>document.php</strong> wrapper:<br>Example, for a file into documents/ecm (need to be logged), syntax is:<br><strong><a href="/document.php?modulepart=ecm&file=[relative_dir/]filename.ext"></strong><br>For a file into documents/medias (open directory for public access), syntax is:<br><strong><a href="/document.php?modulepart=medias&file=[relative_dir/]filename.ext"></strong><br>For a file shared with a share link (open access using the sharing hash key of file), syntax is:<br><strong><a href="/document.php?hashp=publicsharekeyoffile"></strong><br><br><span class="fa fa-picture-o"></span> To include an <strong>image</strong> stored into the <strong>documents</strong> directory, use the <strong>viewimage.php</strong> wrapper:<br>Example, for an image into documents/medias (open directory for public access), syntax is:<br><strong><img src="/viewimage.php?modulepart=medias&file=[relative_dir/]filename.ext"></strong><br><br>More examples of HTML or dynamic code available on <a href="%s" target="_blank">the wiki documentation</a><br>.
|
||||
YouCanEditHtmlSource=<br><span class="fa fa-bug"></span> You can include PHP code into this source using tags <strong><?php ?></strong>. The following global variables are available: $conf, $db, $mysoc, $user, $website, $websitepage, $weblangs, $pagelangs.<br><br><span class="fa fa-bug"></span> You can also include content of another Page/Container with the following syntax:<br><strong><?php includeContainer('alias_of_container_to_include'); ?></strong><br><br><span class="fa fa-bug"></span> You can make a redirect to another Page/Container with the following syntax (Note: do not output any content before a redirect):<br><strong><?php redirectToContainer('alias_of_container_to_redirect_to'); ?></strong><br><br><span class="fa fa-link"></span> To add a link to another page, use the syntax:<br><strong><a href="alias_of_page_to_link_to.php">mylink<a></strong><br><br><span class="fa fa-download"></span> To include a <strong>link to download</strong> a file stored into the <strong>documents</strong> directory, use the <strong>document.php</strong> wrapper:<br>Example, for a file into documents/ecm (need to be logged), syntax is:<br><strong><a href="/document.php?modulepart=ecm&file=[relative_dir/]filename.ext"></strong><br>For a file into documents/medias (open directory for public access), syntax is:<br><strong><a href="/document.php?modulepart=medias&file=[relative_dir/]filename.ext"></strong><br>For a file shared with a share link (open access using the sharing hash key of file), syntax is:<br><strong><a href="/document.php?hashp=publicsharekeyoffile"></strong><br><br><span class="fa fa-picture-o"></span> To include an <strong>image</strong> stored into the <strong>documents</strong> directory, use the <strong>viewimage.php</strong> wrapper:<br>Example, for an image into documents/medias (open directory for public access), syntax is:<br><strong><img src="/viewimage.php?modulepart=medias&file=[relative_dir/]filename.ext"></strong><br>
|
||||
#YouCanEditHtmlSource2=<br><span class="fa fa-picture-o"></span> To include a <strong>image</strong> shared publicaly, use the <strong>viewimage.php</strong> wrapper:<br>Example with a shared key 123456789, syntax is:<br><strong><img src="/viewimage.php?hashp=12345679012..."></strong><br>
|
||||
YouCanEditHtmlSource2=For an image shared with a share link (open access using the sharing hash key of file), syntax is:<br><strong><img src="/viewimage.php?hashp=12345679012..."></strong><br>
|
||||
YouCanEditHtmlSourceMore=<br>More examples of HTML or dynamic code available on <a href="%s" target="_blank">the wiki documentation</a><br>.
|
||||
ClonePage=Клониране на страница / контейнер
|
||||
CloneSite=Клониране на сайт
|
||||
SiteAdded=Уебсайтът е добавен
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user