commit
92e2d5f3e9
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: Close #13011 Add button create thirdparty when creating intervention
|
||||||
NEW: Colorful theme for TakePOS
|
NEW: Colorful theme for TakePOS
|
||||||
NEW: columns units in product list
|
NEW: columns units in product list
|
||||||
NEW: compatibility of translabel with more dict
|
NEW: compatibility of translabel with more dictionaries
|
||||||
NEW: Confirm file delete on fracture card
|
NEW: Confirm file delete on invoice card
|
||||||
NEW: "contact_civility" for ODT templates
|
NEW: "contact_civility" for ODT templates
|
||||||
NEW: CUPS printing compatibility for TakePOS
|
NEW: CUPS printing compatibility for TakePOS
|
||||||
NEW: Customer command list - Add date start & date end
|
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: Documentation about PHP support in Dolibarr
|
||||||
NEW: Donation - Update FR CERFA to 11580*04
|
NEW: Donation - Update FR CERFA to 11580*04
|
||||||
NEW: Easier way to setup the different types of tax. Better visibility.
|
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: 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: 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: Export module, add extrafields for Contract and Contract line
|
||||||
NEW: Extend retained warranty to be available for all invoices
|
NEW: Extend retained warranty to be available for all invoices
|
||||||
NEW: filter by product on supplier order API
|
|
||||||
NEW: French new regions
|
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 and data id
|
||||||
NEW: hook on ics generation to add more events in eventarray
|
NEW: hook on ics generation to add more events in eventarray
|
||||||
NEW: hook on product load stats
|
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 contacts by category
|
||||||
NEW: API filter members by category
|
NEW: API filter members by category
|
||||||
NEW: API filter projects by category
|
NEW: API filter projects by category
|
||||||
NEW: API filter thirdpartie by category
|
|
||||||
NEW: API filter thirdparty by category
|
NEW: API filter thirdparty by category
|
||||||
NEW: API filter user by category
|
NEW: API filter user by category
|
||||||
NEW: API filter warehouses by categorie
|
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 force position of legend of graph on right (instead of top)
|
||||||
NEW: Can change destination of "Back to list" using a "backtolist" parameter
|
NEW: Can change destination of "Back to list" using a "backtolist" parameter
|
||||||
NEW: add more category types from hook
|
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:
|
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_login) $sql .= natural_search("d.login", $search_login);
|
||||||
if ($search_company) $sql .= natural_search("s.nom", $search_company);
|
if ($search_company) $sql .= natural_search("s.nom", $search_company);
|
||||||
if ($search_email) $sql .= natural_search("d.email", $search_email);
|
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_town) $sql .= natural_search("d.town", $search_town);
|
||||||
if ($search_zip) $sql .= natural_search("d.zip", $search_zip);
|
if ($search_zip) $sql .= natural_search("d.zip", $search_zip);
|
||||||
if ($search_state) $sql .= natural_search("state.nom", $search_state);
|
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
|
/* If a group by is required
|
||||||
$sql.= " GROUP BY "
|
$sql.= " GROUP BY "
|
||||||
foreach($object->fields as $key => $val)
|
foreach ($object->fields as $key => $val)
|
||||||
{
|
{
|
||||||
$sql.='t.'.$key.', ';
|
$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();
|
if ($result > 0 && !empty($object->table_element_line)) $object->fetchLines();
|
||||||
|
|
||||||
// Get lines so they will be clone
|
// Get lines so they will be clone
|
||||||
//foreach($object->lines as $line)
|
//foreach ($object->lines as $line)
|
||||||
// $line->fetch_optionals();
|
// $line->fetch_optionals();
|
||||||
|
|
||||||
// Reset some properties
|
// Reset some properties
|
||||||
@ -333,8 +333,10 @@ class BOM extends CommonObject
|
|||||||
public function fetch($id, $ref = null)
|
public function fetch($id, $ref = null)
|
||||||
{
|
{
|
||||||
$result = $this->fetchCommon($id, $ref);
|
$result = $this->fetchCommon($id, $ref);
|
||||||
|
|
||||||
if ($result > 0 && !empty($this->table_element_line)) $this->fetchLines();
|
if ($result > 0 && !empty($this->table_element_line)) $this->fetchLines();
|
||||||
$this->calculateCosts();
|
$this->calculateCosts();
|
||||||
|
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -41,6 +41,11 @@ function bomAdminPrepareHead()
|
|||||||
$head[$h][2] = 'settings';
|
$head[$h][2] = 'settings';
|
||||||
$h++;
|
$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][0] = DOL_URL_ROOT."/bom/admin/about.php";
|
||||||
$head[$h][1] = $langs->trans("About");
|
$head[$h][1] = $langs->trans("About");
|
||||||
$head[$h][2] = 'about';
|
$head[$h][2] = 'about';
|
||||||
|
|||||||
@ -58,7 +58,6 @@ if ($nolinesbefore) {
|
|||||||
}
|
}
|
||||||
print '<td class="linecoldescription minwidth500imp">';
|
print '<td class="linecoldescription minwidth500imp">';
|
||||||
print '<div id="add"></div><span class="hideonsmartphone">'.$langs->trans('AddNewLine').'</span>';
|
print '<div id="add"></div><span class="hideonsmartphone">'.$langs->trans('AddNewLine').'</span>';
|
||||||
// echo $langs->trans("FreeZone");
|
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td class="linecolqty right">'.$langs->trans('Qty').'</td>';
|
print '<td class="linecolqty right">'.$langs->trans('Qty').'</td>';
|
||||||
if ($conf->global->PRODUCT_USE_UNITS)
|
if ($conf->global->PRODUCT_USE_UNITS)
|
||||||
|
|||||||
@ -934,7 +934,7 @@ if ($object->id > 0)
|
|||||||
$late = '';
|
$late = '';
|
||||||
foreach ($contrat->lines as $line) {
|
foreach ($contrat->lines as $line) {
|
||||||
if ($contrat->statut == Contrat::STATUS_VALIDATED && $line->statut == ContratLigne::STATUS_OPEN) {
|
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) {
|
if ($result > 0) {
|
||||||
header("Location: ".$_SERVER['PHP_SELF'].'?id='.$result);
|
header("Location: ".$_SERVER['PHP_SELF'].'?id='.$result);
|
||||||
exit();
|
exit();
|
||||||
@ -775,8 +775,16 @@ if (empty($reshook))
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} // Add line
|
} elseif ($action == 'addline' && GETPOST('submitforalllines', 'aZ09') && GETPOST('vatforalllines', 'alpha')) {
|
||||||
elseif ($action == 'addline' && $usercancreate) {
|
// 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
|
// Set if we used free entry or predefined product
|
||||||
$predef = '';
|
$predef = '';
|
||||||
$product_desc = (GETPOST('dp_desc') ?GETPOST('dp_desc') : '');
|
$product_desc = (GETPOST('dp_desc') ?GETPOST('dp_desc') : '');
|
||||||
@ -1085,6 +1093,9 @@ if (empty($reshook))
|
|||||||
$outputlangs->setDefaultLang($newlang);
|
$outputlangs->setDefaultLang($newlang);
|
||||||
}
|
}
|
||||||
$ret = $object->fetch($id); // Reload to get new records
|
$ret = $object->fetch($id); // Reload to get new records
|
||||||
|
if ($ret > 0) {
|
||||||
|
$object->fetch_thirdparty();
|
||||||
|
}
|
||||||
$object->generateDocument($object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
|
$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 '<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 '<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();
|
dol_fiche_end();
|
||||||
|
|
||||||
$langs->load("bills");
|
$langs->load("bills");
|
||||||
@ -1793,11 +1803,11 @@ if ($action == 'create')
|
|||||||
if ($action == 'clone') {
|
if ($action == 'clone') {
|
||||||
// Create an array for form
|
// Create an array for form
|
||||||
$formquestion = array(
|
$formquestion = array(
|
||||||
// 'text' => $langs->trans("ConfirmClone"),
|
// 'text' => $langs->trans("ConfirmClone"),
|
||||||
// array('type' => 'checkbox', 'name' => 'clone_content', 'label' => $langs->trans("CloneMainAttributes"), 'value' => 1),
|
// array('type' => 'checkbox', 'name' => 'clone_content', 'label' => $langs->trans("CloneMainAttributes"), 'value' => 1),
|
||||||
// array('type' => 'checkbox', 'name' => 'update_prices', 'label' => $langs->trans("PuttingPricesUpToDate"), 'value' =>
|
// array('type' => 'checkbox', 'name' => 'update_prices', 'label' => $langs->trans("PuttingPricesUpToDate"), 'value' => 1),
|
||||||
// 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)'))
|
||||||
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)) {
|
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);
|
$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
|
* Update a proposal line
|
||||||
*
|
*
|
||||||
* @param int $rowid Id de la ligne
|
* @param int $rowid Id of line
|
||||||
* @param float $pu Prix unitaire (HT ou TTC selon price_base_type)
|
* @param float $pu Unit price (HT or TTC depending on price_base_type)
|
||||||
* @param float $qty Quantity
|
* @param float $qty Quantity
|
||||||
* @param float $remise_percent Remise effectuee sur le produit
|
* @param float $remise_percent Discount on line
|
||||||
* @param float $txtva Taux de TVA
|
* @param float $txtva VAT Rate (Can be '1.23' or '1.23 (ABC)')
|
||||||
* @param float $txlocaltax1 Local tax 1 rate
|
* @param float $txlocaltax1 Local tax 1 rate
|
||||||
* @param float $txlocaltax2 Local tax 2 rate
|
* @param float $txlocaltax2 Local tax 2 rate
|
||||||
* @param string $desc Description
|
* @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 $info_bits Miscellaneous informations
|
||||||
* @param int $special_code Special code (also used by externals modules!)
|
* @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).
|
* @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 User $user User making the clone
|
||||||
* @param int $socid Id of thirdparty
|
* @param int $socid Id of thirdparty
|
||||||
|
* @param int $forceentity Entity id to force
|
||||||
* @return int New id of clone
|
* @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;
|
global $conf, $hookmanager;
|
||||||
|
|
||||||
@ -1345,6 +1346,7 @@ class Propal extends CommonObject
|
|||||||
|
|
||||||
$object->id = 0;
|
$object->id = 0;
|
||||||
$object->ref = '';
|
$object->ref = '';
|
||||||
|
$object->entity = (! empty($forceentity) ? $forceentity : $object->entity);
|
||||||
$object->statut = self::STATUS_DRAFT;
|
$object->statut = self::STATUS_DRAFT;
|
||||||
|
|
||||||
// Clear fields
|
// 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'.
|
$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
|
// Clean parameters
|
||||||
if (empty($this->tva_tx)) $this->tva_tx = 0;
|
if (empty($this->tva_tx)) $this->tva_tx = 0;
|
||||||
if (empty($this->localtax1_tx)) $this->localtax1_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_tva=".price2num($this->multicurrency_total_tva)."";
|
||||||
$sql .= ", multicurrency_total_ttc=".price2num($this->multicurrency_total_ttc)."";
|
$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);
|
dol_syslog(get_class($this)."::update", LOG_DEBUG);
|
||||||
$resql = $this->db->query($sql);
|
$resql = $this->db->query($sql);
|
||||||
@ -4200,7 +4204,6 @@ class PropaleLigne extends CommonObjectLine
|
|||||||
{
|
{
|
||||||
if (!$error)
|
if (!$error)
|
||||||
{
|
{
|
||||||
$this->id = $this->rowid;
|
|
||||||
$result = $this->insertExtraFields();
|
$result = $this->insertExtraFields();
|
||||||
if ($result < 0)
|
if ($result < 0)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -624,10 +624,16 @@ if (empty($reshook))
|
|||||||
$result = $object->set_remise($user, GETPOST('remise_percent'));
|
$result = $object->set_remise($user, GETPOST('remise_percent'));
|
||||||
} elseif ($action == 'setremiseabsolue' && $usercancreate) {
|
} elseif ($action == 'setremiseabsolue' && $usercancreate) {
|
||||||
$result = $object->set_remise_absolue($user, GETPOST('remise_absolue'));
|
$result = $object->set_remise_absolue($user, GETPOST('remise_absolue'));
|
||||||
}
|
} elseif ($action == 'addline' && GETPOST('submitforalllines', 'aZ09') && GETPOST('vatforalllines', 'alpha')) {
|
||||||
|
// Define vat_rate
|
||||||
// Add a new line
|
$vat_rate = (GETPOST('vatforalllines') ? GETPOST('vatforalllines') : 0);
|
||||||
elseif ($action == 'addline' && $usercancreate)
|
$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');
|
$langs->load('errors');
|
||||||
$error = 0;
|
$error = 0;
|
||||||
|
|||||||
@ -1417,7 +1417,7 @@ if (empty($reshook))
|
|||||||
$result = $srcobject->fetch($object->origin_id);
|
$result = $srcobject->fetch($object->origin_id);
|
||||||
|
|
||||||
$typeamount = GETPOST('typedeposit', 'aZ09');
|
$typeamount = GETPOST('typedeposit', 'aZ09');
|
||||||
$valuedeposit = GETPOST('valuedeposit', 'int');
|
$valuedeposit = price2num(GETPOST('valuedeposit', 'alpha'), 'MU');
|
||||||
|
|
||||||
// If deposit invoice
|
// If deposit invoice
|
||||||
if ($_POST['type'] == Facture::TYPE_DEPOSIT && in_array($typeamount, array('amount', 'variable')))
|
if ($_POST['type'] == Facture::TYPE_DEPOSIT && in_array($typeamount, array('amount', 'variable')))
|
||||||
@ -1867,8 +1867,16 @@ if (empty($reshook))
|
|||||||
$_GET["originid"] = $_POST["originid"];
|
$_GET["originid"] = $_POST["originid"];
|
||||||
setEventMessages($object->error, $object->errors, 'errors');
|
setEventMessages($object->error, $object->errors, 'errors');
|
||||||
}
|
}
|
||||||
} // Add a new line
|
} elseif ($action == 'addline' && GETPOST('submitforalllines', 'aZ09') && GETPOST('vatforalllines', 'alpha')) {
|
||||||
elseif ($action == 'addline' && $usercancreate)
|
// 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');
|
$langs->load('errors');
|
||||||
$error = 0;
|
$error = 0;
|
||||||
|
|||||||
@ -48,13 +48,12 @@ $ref = GETPOST('ref', 'alpha');
|
|||||||
$socid = GETPOST('socid', 'int');
|
$socid = GETPOST('socid', 'int');
|
||||||
$action = GETPOST('action', 'alpha');
|
$action = GETPOST('action', 'alpha');
|
||||||
$type = GETPOST('type', 'aZ09');
|
$type = GETPOST('type', 'aZ09');
|
||||||
$mode = GETPOST('mode', 'aZ09');
|
|
||||||
|
|
||||||
$fieldid = (!empty($ref) ? 'ref' : 'rowid');
|
$fieldid = (!empty($ref) ? 'ref' : 'rowid');
|
||||||
if ($user->socid) $socid = $user->socid;
|
if ($user->socid) $socid = $user->socid;
|
||||||
$result = restrictedArea($user, 'facture', $id, '', '', 'fk_soc', $fieldid);
|
$result = restrictedArea($user, 'facture', $id, '', '', 'fk_soc', $fieldid);
|
||||||
|
|
||||||
if ($mode == 'bank-transfer') {
|
if ($type == 'bank-transfer') {
|
||||||
$object = new FactureFournisseur($db);
|
$object = new FactureFournisseur($db);
|
||||||
} else {
|
} else {
|
||||||
$object = new Facture($db);
|
$object = new Facture($db);
|
||||||
@ -94,6 +93,7 @@ if (empty($reshook))
|
|||||||
$sourcetype = 'facture';
|
$sourcetype = 'facture';
|
||||||
if ($type == 'bank-transfer') {
|
if ($type == 'bank-transfer') {
|
||||||
$sourcetype = 'supplier_invoice';
|
$sourcetype = 'supplier_invoice';
|
||||||
|
$newtype = 'bank-transfer';
|
||||||
}
|
}
|
||||||
|
|
||||||
$result = $object->demande_prelevement($user, price2num(GETPOST('withdraw_request_amount', 'alpha')), $newtype, $sourcetype);
|
$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'));
|
$result = $object->demande_prelevement_delete($user, GETPOST('did', 'int'));
|
||||||
if ($result == 0)
|
if ($result == 0)
|
||||||
{
|
{
|
||||||
header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id.'&mode='.$mode);
|
header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id.'&type='.$type);
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -133,7 +133,7 @@ $form = new Form($db);
|
|||||||
|
|
||||||
$now = dol_now();
|
$now = dol_now();
|
||||||
|
|
||||||
if ($mode == 'bank-transfer') {
|
if ($type == 'bank-transfer') {
|
||||||
$title = $langs->trans('InvoiceSupplier')." - ".$langs->trans('CreditTransfer');
|
$title = $langs->trans('InvoiceSupplier')." - ".$langs->trans('CreditTransfer');
|
||||||
$helpurl = "";
|
$helpurl = "";
|
||||||
} else {
|
} else {
|
||||||
@ -168,7 +168,7 @@ if ($object->id > 0)
|
|||||||
if ($object->paye) $resteapayer = 0;
|
if ($object->paye) $resteapayer = 0;
|
||||||
$resteapayeraffiche = $resteapayer;
|
$resteapayeraffiche = $resteapayer;
|
||||||
|
|
||||||
if ($mode == 'bank-transfer') {
|
if ($type == 'bank-transfer') {
|
||||||
if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) { // Never use this
|
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
|
$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
|
$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);
|
$author->fetch($object->user_author);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($mode == 'bank-transfer') {
|
if ($type == 'bank-transfer') {
|
||||||
$head = facturefourn_prepare_head($object);
|
$head = facturefourn_prepare_head($object);
|
||||||
} else {
|
} else {
|
||||||
$head = facture_prepare_head($object);
|
$head = facture_prepare_head($object);
|
||||||
@ -211,7 +211,7 @@ if ($object->id > 0)
|
|||||||
dol_fiche_head($head, 'standingorders', $title, -1, 'bill');
|
dol_fiche_head($head, 'standingorders', $title, -1, 'bill');
|
||||||
|
|
||||||
// Invoice content
|
// 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>';
|
$linkback = '<a href="'.DOL_URL_ROOT.'/fourn/facture/list.php?restore_lastsearch_values=1'.(!empty($socid) ? '&socid='.$socid : '').'">'.$langs->trans("BackToList").'</a>';
|
||||||
} else {
|
} else {
|
||||||
$linkback = '<a href="'.DOL_URL_ROOT.'/compta/facture/list.php?restore_lastsearch_values=1'.(!empty($socid) ? '&socid='.$socid : '').'">'.$langs->trans("BackToList").'</a>';
|
$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">';
|
$morehtmlref = '<div class="refidno">';
|
||||||
// Ref customer
|
// 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->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);
|
$morehtmlref .= $form->editfieldval("RefSupplier", 'ref_supplier', $object->ref_supplier, $object, 0, 'string', '', null, null, '', 1);
|
||||||
} else {
|
} else {
|
||||||
@ -228,7 +228,7 @@ if ($object->id > 0)
|
|||||||
}
|
}
|
||||||
// Thirdparty
|
// Thirdparty
|
||||||
$morehtmlref .= '<br>'.$langs->trans('ThirdParty').' : '.$object->thirdparty->getNomUrl(1);
|
$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>)';
|
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 {
|
} 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>)';
|
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 ($object->type == $object::TYPE_REPLACEMENT)
|
||||||
{
|
{
|
||||||
if ($mode == 'bank-transfer') {
|
if ($type == 'bank-transfer') {
|
||||||
$facreplaced = new FactureFournisseur($db);
|
$facreplaced = new FactureFournisseur($db);
|
||||||
} else {
|
} else {
|
||||||
$facreplaced = new Facture($db);
|
$facreplaced = new Facture($db);
|
||||||
@ -298,7 +298,7 @@ if ($object->id > 0)
|
|||||||
}
|
}
|
||||||
if ($object->type == $object::TYPE_CREDIT_NOTE)
|
if ($object->type == $object::TYPE_CREDIT_NOTE)
|
||||||
{
|
{
|
||||||
if ($mode == 'bank-transfer') {
|
if ($type == 'bank-transfer') {
|
||||||
$facusing = new FactureFournisseur($db);
|
$facusing = new FactureFournisseur($db);
|
||||||
} else {
|
} else {
|
||||||
$facusing = new Facture($db);
|
$facusing = new Facture($db);
|
||||||
@ -316,7 +316,7 @@ if ($object->id > 0)
|
|||||||
{
|
{
|
||||||
if ($i == 0) print ' ';
|
if ($i == 0) print ' ';
|
||||||
else print ',';
|
else print ',';
|
||||||
if ($mode == 'bank-transfer') {
|
if ($type == 'bank-transfer') {
|
||||||
$facavoir = new FactureFournisseur($db);
|
$facavoir = new FactureFournisseur($db);
|
||||||
} else {
|
} else {
|
||||||
$facavoir = new Facture($db);
|
$facavoir = new Facture($db);
|
||||||
@ -339,7 +339,7 @@ if ($object->id > 0)
|
|||||||
// Discounts
|
// Discounts
|
||||||
print '<tr><td>'.$langs->trans('Discounts').'</td><td colspan="3">';
|
print '<tr><td>'.$langs->trans('Discounts').'</td><td colspan="3">';
|
||||||
|
|
||||||
if ($mode == 'bank-transfer') {
|
if ($type == 'bank-transfer') {
|
||||||
//$societe = new Fournisseur($db);
|
//$societe = new Fournisseur($db);
|
||||||
//$result = $societe->fetch($object->socid);
|
//$result = $societe->fetch($object->socid);
|
||||||
$thirdparty = $object->thirdparty;
|
$thirdparty = $object->thirdparty;
|
||||||
@ -355,7 +355,7 @@ if ($object->id > 0)
|
|||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
// Label
|
// Label
|
||||||
if ($mode == 'bank-transfer') {
|
if ($type == 'bank-transfer') {
|
||||||
print '<tr>';
|
print '<tr>';
|
||||||
print '<td>'.$form->editfieldkey("Label", 'label', $object->label, $object, 0).'</td>';
|
print '<td>'.$form->editfieldkey("Label", 'label', $object->label, $object, 0).'</td>';
|
||||||
print '<td>'.$form->editfieldval("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)
|
if ($object->type != $object::TYPE_CREDIT_NOTE)
|
||||||
{
|
{
|
||||||
$duedate = $object->date_lim_reglement;
|
$duedate = $object->date_lim_reglement;
|
||||||
if ($mode == 'bank-transfer') {
|
if ($type == 'bank-transfer') {
|
||||||
$duedate = $object->date_echeance;
|
$duedate = $object->date_echeance;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -470,7 +470,7 @@ if ($object->id > 0)
|
|||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
$title = 'CustomerIBAN';
|
$title = 'CustomerIBAN';
|
||||||
if ($mode == 'bank-transfer') {
|
if ($type == 'bank-transfer') {
|
||||||
$title = 'SupplierIBAN';
|
$title = 'SupplierIBAN';
|
||||||
}
|
}
|
||||||
print '<tr><td>'.$langs->trans($title).'</td><td colspan="3">';
|
print '<tr><td>'.$langs->trans($title).'</td><td colspan="3">';
|
||||||
@ -627,7 +627,7 @@ if ($object->id > 0)
|
|||||||
print "\n<div class=\"tabsAction\">\n";
|
print "\n<div class=\"tabsAction\">\n";
|
||||||
|
|
||||||
$buttonlabel = $langs->trans("MakeWithdrawRequest");
|
$buttonlabel = $langs->trans("MakeWithdrawRequest");
|
||||||
if ($mode == 'bank-transfer') {
|
if ($type == 'bank-transfer') {
|
||||||
$buttonlabel = $langs->trans("MakeBankTransferOrder");
|
$buttonlabel = $langs->trans("MakeBankTransferOrder");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -643,6 +643,7 @@ if ($object->id > 0)
|
|||||||
print '<form method="POST" action="">';
|
print '<form method="POST" action="">';
|
||||||
print '<input type="hidden" name="token" value="'.newToken().'" />';
|
print '<input type="hidden" name="token" value="'.newToken().'" />';
|
||||||
print '<input type="hidden" name="id" value="'.$object->id.'" />';
|
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 '<input type="hidden" name="action" value="new" />';
|
||||||
print '<label for="withdraw_request_amount">'.$langs->trans('BankTransferAmount').' </label>';
|
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" />';
|
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";
|
print "</div><br>\n";
|
||||||
|
|
||||||
|
|
||||||
if ($mode == 'bank-transfer') {
|
if ($type == 'bank-transfer') {
|
||||||
print '<div class="opacitymedium">'.$langs->trans("DoCreditTransferBeforePayments").'</div><br>';
|
print '<div class="opacitymedium">'.$langs->trans("DoCreditTransferBeforePayments").'</div><br>';
|
||||||
} else {
|
} else {
|
||||||
print '<div class="opacitymedium">'.$langs->trans("DoStandingOrdersBeforePayments").'</div><br>';
|
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="left">'.$langs->trans("DateRequest").'</td>';
|
||||||
print '<td class="center">'.$langs->trans("User").'</td>';
|
print '<td class="center">'.$langs->trans("User").'</td>';
|
||||||
print '<td class="center">'.$langs->trans("Amount").'</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>';
|
print '<td class="center">'.$langs->trans("BankTransferReceipt").'</td>';
|
||||||
} else {
|
} else {
|
||||||
print '<td class="center">'.$langs->trans("WithdrawalReceipt").'</td>';
|
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 = "SELECT pfd.rowid, pfd.traite, pfd.date_demande as date_demande,";
|
||||||
$sql .= " pfd.date_traite as date_traite, pfd.amount,";
|
$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 .= " 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."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";
|
$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;
|
$i = 0;
|
||||||
|
|
||||||
|
$tmpuser = new User($db);
|
||||||
|
|
||||||
$num = $db->num_rows($result);
|
$num = $db->num_rows($result);
|
||||||
while ($i < $num)
|
while ($i < $num)
|
||||||
{
|
{
|
||||||
$obj = $db->fetch_object($result_sql);
|
$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 '<tr class="oddeven">';
|
||||||
|
|
||||||
print '<td class="left">'.dol_print_date($db->jdate($obj->date_demande), 'dayhour')."</td>\n";
|
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 class="center">'.price($obj->amount).'</td>';
|
||||||
print '<td align="center">-</td>';
|
print '<td align="center">-</td>';
|
||||||
print '<td> </td>';
|
print '<td> </td>';
|
||||||
@ -731,7 +747,7 @@ if ($object->id > 0)
|
|||||||
print '<td class="center">'.$langs->trans("OrderWaiting").'</td>';
|
print '<td class="center">'.$langs->trans("OrderWaiting").'</td>';
|
||||||
|
|
||||||
print '<td class="right">';
|
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 img_delete();
|
||||||
print '</a></td>';
|
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 = "SELECT pfd.rowid, pfd.traite, pfd.date_demande, pfd.date_traite, pfd.fk_prelevement_bons, pfd.amount,";
|
||||||
$sql .= " pb.ref,";
|
$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 .= " 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."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";
|
$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;
|
$numclosed = $num;
|
||||||
$i = 0;
|
$i = 0;
|
||||||
|
|
||||||
|
$tmpuser = new User($db);
|
||||||
|
|
||||||
while ($i < $num)
|
while ($i < $num)
|
||||||
{
|
{
|
||||||
$obj = $db->fetch_object($result);
|
$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 '<tr class="oddeven">';
|
||||||
|
|
||||||
print '<td class="left">'.dol_print_date($db->jdate($obj->date_demande), 'day')."</td>\n";
|
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>';
|
print '<td class="center">'.price($obj->amount).'</td>';
|
||||||
|
|
||||||
|
|||||||
@ -351,9 +351,10 @@ if ($action == 'new')
|
|||||||
|
|
||||||
$now = dol_now();
|
$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 '<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">';
|
print '<input type="hidden" name="action" value="new">';
|
||||||
|
|
||||||
dol_fiche_head();
|
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 = "SELECT f.ref, f.rowid, f.total_ttc, f.fk_statut, f.paye, f.type,";
|
||||||
$sql .= " pfd.date_demande, pfd.amount,";
|
$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 .= " FROM ".MAIN_DB_PREFIX."facture_fourn as f,";
|
||||||
$sql .= " ".MAIN_DB_PREFIX."societe as s";
|
$sql .= " ".MAIN_DB_PREFIX."societe as s";
|
||||||
if (!$user->rights->societe->client->voir && !$socid) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
|
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 .= " WHERE s.rowid = f.fk_soc";
|
||||||
$sql .= " AND f.entity IN (".getEntity('supplier_invoice').")";
|
$sql .= " AND f.entity IN (".getEntity('supplier_invoice').")";
|
||||||
$sql .= " AND f.total_ttc > 0";
|
$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 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 (!$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;
|
if ($socid) $sql .= " AND f.fk_soc = ".$socid;
|
||||||
|
|
||||||
@ -133,14 +135,15 @@ if ($resql)
|
|||||||
$invoicestatic->type = $obj->type;
|
$invoicestatic->type = $obj->type;
|
||||||
$alreadypayed = $invoicestatic->getSommePaiement();
|
$alreadypayed = $invoicestatic->getSommePaiement();
|
||||||
|
|
||||||
|
$thirdpartystatic->id = $obj->socid;
|
||||||
|
$thirdpartystatic->name = $obj->name;
|
||||||
|
$thirdpartystatic->email = $obj->email;
|
||||||
|
|
||||||
print '<tr class="oddeven"><td>';
|
print '<tr class="oddeven"><td>';
|
||||||
print $invoicestatic->getNomUrl(1, 'withdraw');
|
print $invoicestatic->getNomUrl(1, 'withdraw');
|
||||||
print '</td>';
|
print '</td>';
|
||||||
|
|
||||||
print '<td>';
|
print '<td>';
|
||||||
$thirdpartystatic->id = $obj->socid;
|
|
||||||
$thirdpartystatic->name = $obj->name;
|
|
||||||
print $thirdpartystatic->getNomUrl(1, 'customer');
|
print $thirdpartystatic->getNomUrl(1, 'customer');
|
||||||
print '</td>';
|
print '</td>';
|
||||||
|
|
||||||
@ -190,7 +193,8 @@ if ($result)
|
|||||||
print"\n<!-- debut table -->\n";
|
print"\n<!-- debut table -->\n";
|
||||||
print '<div class="div-table-responsive-no-min">';
|
print '<div class="div-table-responsive-no-min">';
|
||||||
print '<table class="noborder centpercent">';
|
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>'.$langs->trans("Date").'</th>';
|
||||||
print '<th class="right">'.$langs->trans("Amount").'</th>';
|
print '<th class="right">'.$langs->trans("Amount").'</th>';
|
||||||
print '<th class="right">'.$langs->trans("Status").'</th>';
|
print '<th class="right">'.$langs->trans("Status").'</th>';
|
||||||
@ -217,7 +221,7 @@ if ($result)
|
|||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
} else {
|
} 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>";
|
print "</table></div><br>";
|
||||||
|
|||||||
@ -28,6 +28,7 @@
|
|||||||
|
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/class/commonobject.class.php';
|
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.'/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.'/compta/bank/class/account.class.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/compta/paiement/class/paiement.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
|
* 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 int $client_id id invoice customer
|
||||||
* @param string $client_nom customer name
|
* @param string $client_nom customer name
|
||||||
* @param int $amount amount of invoice
|
* @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 $code_guichet code of bank's office
|
||||||
* @param string $number bank account number
|
* @param string $number bank account number
|
||||||
* @param string $number_key number key of 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
|
* @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
|
// phpcs:enable
|
||||||
$result = 0;
|
$result = 0;
|
||||||
$line_id = 0;
|
$line_id = 0;
|
||||||
|
|
||||||
|
// Add lines
|
||||||
$result = $this->addline($line_id, $client_id, $client_nom, $amount, $code_banque, $code_guichet, $number, $number_key);
|
$result = $this->addline($line_id, $client_id, $client_nom, $amount, $code_banque, $code_guichet, $number, $number_key);
|
||||||
|
|
||||||
if ($result == 0)
|
if ($result == 0)
|
||||||
@ -141,10 +144,14 @@ class BonPrelevement extends CommonObject
|
|||||||
if ($line_id > 0)
|
if ($line_id > 0)
|
||||||
{
|
{
|
||||||
$sql = "INSERT INTO ".MAIN_DB_PREFIX."prelevement_facture (";
|
$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 .= ",fk_prelevement_lignes";
|
||||||
$sql .= ") VALUES (";
|
$sql .= ") VALUES (";
|
||||||
$sql .= $facture_id;
|
$sql .= $invoice_id;
|
||||||
$sql .= ", ".$line_id;
|
$sql .= ", ".$line_id;
|
||||||
$sql .= ")";
|
$sql .= ")";
|
||||||
|
|
||||||
@ -153,15 +160,15 @@ class BonPrelevement extends CommonObject
|
|||||||
$result = 0;
|
$result = 0;
|
||||||
} else {
|
} else {
|
||||||
$result = -1;
|
$result = -1;
|
||||||
dol_syslog(get_class($this)."::AddFacture Erreur $result");
|
dol_syslog(get_class($this)."::AddFacture Error $result");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$result = -2;
|
$result = -2;
|
||||||
dol_syslog(get_class($this)."::AddFacture Erreur $result");
|
dol_syslog(get_class($this)."::AddFacture Error $result");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$result = -3;
|
$result = -3;
|
||||||
dol_syslog(get_class($this)."::AddFacture Erreur $result");
|
dol_syslog(get_class($this)."::AddFacture Error $result");
|
||||||
}
|
}
|
||||||
|
|
||||||
return $result;
|
return $result;
|
||||||
@ -645,7 +652,7 @@ class BonPrelevement extends CommonObject
|
|||||||
|
|
||||||
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
|
// 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'
|
* @param string $mode 'direct-debit' or 'bank-transfer'
|
||||||
* @return double <O if KO, Total amount
|
* @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 .= " FROM ".MAIN_DB_PREFIX."facture_fourn as f,";
|
||||||
}
|
}
|
||||||
$sql .= " ".MAIN_DB_PREFIX."prelevement_facture_demande as pfd";
|
$sql .= " ".MAIN_DB_PREFIX."prelevement_facture_demande as pfd";
|
||||||
$sql .= " WHERE f.fk_statut = 1";
|
$sql .= " WHERE f.entity IN (".getEntity('invoice').")";
|
||||||
$sql .= " AND f.entity IN (".getEntity('invoice').")";
|
if (empty($conf->global->WITHDRAWAL_ALLOW_ANY_INVOICE_STATUS))
|
||||||
$sql .= " AND f.rowid = pfd.fk_facture";
|
{
|
||||||
|
$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 f.paye = 0";
|
||||||
$sql .= " AND pfd.traite = 0";
|
$sql .= " AND pfd.traite = 0";
|
||||||
|
$sql .= " AND pfd.ext_payment_id IS NULL";
|
||||||
$sql .= " AND f.total_ttc > 0";
|
$sql .= " AND f.total_ttc > 0";
|
||||||
|
|
||||||
$resql = $this->db->query($sql);
|
$resql = $this->db->query($sql);
|
||||||
@ -699,18 +714,18 @@ class BonPrelevement extends CommonObject
|
|||||||
|
|
||||||
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
|
// 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
|
* @return int <O if KO, number of invoices if OK
|
||||||
*/
|
*/
|
||||||
public function NbFactureAPrelever($mode = 'direct-debit')
|
public function NbFactureAPrelever($type = 'direct-debit')
|
||||||
{
|
{
|
||||||
// phpcs:enable
|
// phpcs:enable
|
||||||
global $conf;
|
global $conf;
|
||||||
|
|
||||||
$sql = "SELECT count(f.rowid) as nb";
|
$sql = "SELECT count(f.rowid) as nb";
|
||||||
if ($mode == 'bank-transfer') {
|
if ($type == 'bank-transfer') {
|
||||||
$sql .= " FROM ".MAIN_DB_PREFIX."facture_fourn as f";
|
$sql .= " FROM ".MAIN_DB_PREFIX."facture_fourn as f";
|
||||||
} else {
|
} else {
|
||||||
$sql .= " FROM ".MAIN_DB_PREFIX."facture as f";
|
$sql .= " FROM ".MAIN_DB_PREFIX."facture as f";
|
||||||
@ -721,12 +736,13 @@ class BonPrelevement extends CommonObject
|
|||||||
{
|
{
|
||||||
$sql .= " AND f.fk_statut = ".Facture::STATUS_VALIDATED;
|
$sql .= " AND f.fk_statut = ".Facture::STATUS_VALIDATED;
|
||||||
}
|
}
|
||||||
if ($mode == 'bank-transfer') {
|
if ($type == 'bank-transfer') {
|
||||||
$sql .= " AND f.rowid = pfd.fk_facture_fourn";
|
$sql .= " AND f.rowid = pfd.fk_facture_fourn";
|
||||||
} else {
|
} else {
|
||||||
$sql .= " AND f.rowid = pfd.fk_facture";
|
$sql .= " AND f.rowid = pfd.fk_facture";
|
||||||
}
|
}
|
||||||
$sql .= " AND pfd.traite = 0";
|
$sql .= " AND pfd.traite = 0";
|
||||||
|
$sql .= " AND pfd.ext_payment_id IS NULL";
|
||||||
$sql .= " AND f.total_ttc > 0";
|
$sql .= " AND f.total_ttc > 0";
|
||||||
|
|
||||||
dol_syslog(get_class($this)."::NbFactureAPrelever");
|
dol_syslog(get_class($this)."::NbFactureAPrelever");
|
||||||
@ -748,18 +764,19 @@ class BonPrelevement extends CommonObject
|
|||||||
|
|
||||||
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
|
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
|
||||||
/**
|
/**
|
||||||
* Create a withdraw
|
* Create a direct debit order or a credit transfer order
|
||||||
* TODO delete params banque and agence when not necesary
|
* TODO delete params banque and agence when not necessary
|
||||||
*
|
*
|
||||||
* @param int $banque dolibarr mysoc bank
|
* @param int $banque dolibarr mysoc bank
|
||||||
* @param int $agence dolibarr mysoc bank office (guichet)
|
* @param int $agence dolibarr mysoc bank office (guichet)
|
||||||
* @param string $mode real=do action, simu=test only
|
* @param string $mode real=do action, simu=test only
|
||||||
* @param string $format FRST, RCUR or ALL
|
* @param string $format FRST, RCUR or ALL
|
||||||
* @param string $executiondate Date to execute the transfer
|
* @param string $executiondate Date to execute the transfer
|
||||||
* @param int $notrigger Disable triggers
|
* @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
|
// phpcs:enable
|
||||||
global $conf, $langs, $user;
|
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."/compta/facture/class/facture.class.php";
|
||||||
require_once DOL_DOCUMENT_ROOT."/societe/class/societe.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;
|
$error = 0;
|
||||||
|
|
||||||
@ -796,17 +818,26 @@ class BonPrelevement extends CommonObject
|
|||||||
$sql .= ", pfd.code_banque, pfd.code_guichet, pfd.number, pfd.cle_rib";
|
$sql .= ", pfd.code_banque, pfd.code_guichet, pfd.number, pfd.cle_rib";
|
||||||
$sql .= ", pfd.amount";
|
$sql .= ", pfd.amount";
|
||||||
$sql .= ", s.nom as name";
|
$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."societe as s";
|
||||||
$sql .= ", ".MAIN_DB_PREFIX."prelevement_facture_demande as pfd";
|
$sql .= ", ".MAIN_DB_PREFIX."prelevement_facture_demande as pfd";
|
||||||
$sql .= " WHERE f.rowid = pfd.fk_facture";
|
$sql .= " WHERE f.entity IN (".getEntity('invoice').')';
|
||||||
$sql .= " AND 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";
|
$sql .= " AND s.rowid = f.fk_soc";
|
||||||
//if ($banque || $agence) $sql.= " AND s.rowid = sr.fk_soc";
|
//if ($banque || $agence) $sql.= " AND s.rowid = sr.fk_soc";
|
||||||
$sql .= " AND f.fk_statut = 1";
|
$sql .= " AND f.fk_statut = 1";
|
||||||
$sql .= " AND f.paye = 0";
|
$sql .= " AND f.paye = 0";
|
||||||
$sql .= " AND pfd.traite = 0";
|
$sql .= " AND pfd.traite = 0";
|
||||||
$sql .= " AND f.total_ttc > 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 ($banque) $sql.= " AND sr.code_banque = '".$conf->global->PRELEVEMENT_CODE_BANQUE."'";
|
||||||
//if ($agence) $sql.= " AND sr.code_guichet = '".$conf->global->PRELEVEMENT_CODE_GUICHET."'";
|
//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);
|
$row = $this->db->fetch_row($resql);
|
||||||
$factures[$i] = $row; // All fields
|
$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++;
|
$i++;
|
||||||
}
|
}
|
||||||
$this->db->free($resql);
|
$this->db->free($resql);
|
||||||
@ -837,15 +874,19 @@ class BonPrelevement extends CommonObject
|
|||||||
require_once DOL_DOCUMENT_ROOT.'/societe/class/companybankaccount.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/societe/class/companybankaccount.class.php';
|
||||||
$soc = new Societe($this->db);
|
$soc = new Societe($this->db);
|
||||||
|
|
||||||
// Check RIB
|
// Check BAN
|
||||||
$i = 0;
|
$i = 0;
|
||||||
dol_syslog(__METHOD__."::Check RIB", LOG_DEBUG);
|
dol_syslog(__METHOD__."::Check BAN", LOG_DEBUG);
|
||||||
|
|
||||||
if (count($factures) > 0)
|
if (count($factures) > 0)
|
||||||
{
|
{
|
||||||
foreach ($factures as $key => $fac)
|
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]);
|
$resfetch = $fact->fetch($fac[0]);
|
||||||
if ($resfetch >= 0) // Field 0 of $fac is rowid of invoice
|
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 = new CompanyBankAccount($this->db);
|
||||||
$bac->fetch(0, $soc->id);
|
$bac->fetch(0, $soc->id);
|
||||||
|
|
||||||
if ($format == 'FRST' && $bac->frstrecur != 'FRST')
|
if ($type != 'bank-transfer') {
|
||||||
{
|
if ($format == 'FRST' && $bac->frstrecur != 'FRST')
|
||||||
continue;
|
{
|
||||||
}
|
continue;
|
||||||
if ($format == 'RCUR' && ($bac->frstrecur != 'RCUR' && $bac->frstrecur != 'RECUR'))
|
}
|
||||||
{
|
if ($format == 'RCUR' && ($bac->frstrecur != 'RCUR' && $bac->frstrecur != 'RECUR'))
|
||||||
continue;
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($bac->verif() >= 1)
|
if ($bac->verif() >= 1)
|
||||||
@ -871,26 +914,26 @@ class BonPrelevement extends CommonObject
|
|||||||
$i++;
|
$i++;
|
||||||
//dol_syslog(__METHOD__."::RIB is ok", LOG_DEBUG);
|
//dol_syslog(__METHOD__."::RIB is ok", LOG_DEBUG);
|
||||||
} else {
|
} 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->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);
|
$this->thirdparty_in_error[$soc->id] = "Error on default bank number IBAN/BIC for invoice ".$fact->getNomUrl(0)." for thirdparty ".$soc->getNomUrl(0);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
dol_syslog(__METHOD__."::Check RIB Failed to read company", LOG_WARNING);
|
dol_syslog(__METHOD__."::Check BAN Failed to read company", LOG_WARNING);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
dol_syslog(__METHOD__."::Check RIB Failed to read invoice", LOG_WARNING);
|
dol_syslog(__METHOD__."::Check BAN Failed to read invoice", LOG_WARNING);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} 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;
|
$ok = 0;
|
||||||
|
|
||||||
// Withdraw invoices in factures_prev array
|
// 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";
|
//print $out."\n";
|
||||||
dol_syslog($out);
|
dol_syslog($out);
|
||||||
|
|
||||||
@ -918,14 +961,14 @@ class BonPrelevement extends CommonObject
|
|||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* We are in real mode.
|
* 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();
|
$this->db->begin();
|
||||||
|
|
||||||
$now = dol_now();
|
$now = dol_now();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Traitements
|
* Process order generation
|
||||||
*/
|
*/
|
||||||
if (!$error)
|
if (!$error)
|
||||||
{
|
{
|
||||||
@ -937,7 +980,7 @@ class BonPrelevement extends CommonObject
|
|||||||
$sql .= " AND entity = ".$conf->entity;
|
$sql .= " AND entity = ".$conf->entity;
|
||||||
$sql .= " ORDER BY ref DESC LIMIT 1";
|
$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);
|
$resql = $this->db->query($sql);
|
||||||
|
|
||||||
if ($resql)
|
if ($resql)
|
||||||
@ -945,18 +988,23 @@ class BonPrelevement extends CommonObject
|
|||||||
$row = $this->db->fetch_row($resql);
|
$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);
|
$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);
|
if (!is_dir($dir)) dol_mkdir($dir);
|
||||||
|
|
||||||
$this->filename = $dir.'/'.$ref.'.xml';
|
$this->filename = $dir.'/'.$ref.'.xml';
|
||||||
|
|
||||||
// Create withdraw receipt in database
|
// Create withdraw receipt in database
|
||||||
$sql = "INSERT INTO ".MAIN_DB_PREFIX."prelevement_bons (";
|
$sql = "INSERT INTO ".MAIN_DB_PREFIX."prelevement_bons (";
|
||||||
$sql .= " ref, entity, datec";
|
$sql .= " ref, entity, datec, type";
|
||||||
$sql .= ") VALUES (";
|
$sql .= ") VALUES (";
|
||||||
$sql .= "'".$this->db->escape($ref)."'";
|
$sql .= "'".$this->db->escape($ref)."'";
|
||||||
$sql .= ", ".$conf->entity;
|
$sql .= ", ".$conf->entity;
|
||||||
$sql .= ", '".$this->db->idate($now)."'";
|
$sql .= ", '".$this->db->idate($now)."'";
|
||||||
|
$sql .= ", '".($type == 'bank-transfer' ? 'bank-transfer' : 'debit-order')."'";
|
||||||
$sql .= ")";
|
$sql .= ")";
|
||||||
|
|
||||||
$resql = $this->db->query($sql);
|
$resql = $this->db->query($sql);
|
||||||
@ -987,10 +1035,13 @@ class BonPrelevement extends CommonObject
|
|||||||
// Fetch invoice
|
// Fetch invoice
|
||||||
$fact = new Facture($this->db);
|
$fact = new Facture($this->db);
|
||||||
$fact->fetch($fac[0]);
|
$fact->fetch($fac[0]);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Add standing order
|
* Add standing order
|
||||||
*
|
*
|
||||||
*
|
* $fac[0] : invoice_id
|
||||||
|
* $fac[1] : ???
|
||||||
|
* $fac[2] : third party id
|
||||||
* $fac[3] : banque
|
* $fac[3] : banque
|
||||||
* $fac[4] : guichet
|
* $fac[4] : guichet
|
||||||
* $fac[5] : number
|
* $fac[5] : number
|
||||||
@ -999,7 +1050,8 @@ class BonPrelevement extends CommonObject
|
|||||||
* $fac[8] : client nom
|
* $fac[8] : client nom
|
||||||
* $fac[2] : client id
|
* $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)
|
if ($ri <> 0)
|
||||||
{
|
{
|
||||||
$error++;
|
$error++;
|
||||||
@ -1012,13 +1064,12 @@ class BonPrelevement extends CommonObject
|
|||||||
$sql .= ", fk_prelevement_bons = ".$this->id;
|
$sql .= ", fk_prelevement_bons = ".$this->id;
|
||||||
$sql .= " WHERE rowid = ".$fac[1];
|
$sql .= " WHERE rowid = ".$fac[1];
|
||||||
|
|
||||||
dol_syslog(__METHOD__."::Update Orders::Sql=".$sql, LOG_DEBUG);
|
|
||||||
$resql = $this->db->query($sql);
|
$resql = $this->db->query($sql);
|
||||||
|
|
||||||
if (!$resql)
|
if (!$resql)
|
||||||
{
|
{
|
||||||
$error++;
|
$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)
|
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)
|
if (count($factures_prev) > 0)
|
||||||
{
|
{
|
||||||
@ -1058,14 +1108,15 @@ class BonPrelevement extends CommonObject
|
|||||||
$this->context['factures_prev'] = $factures_prev;
|
$this->context['factures_prev'] = $factures_prev;
|
||||||
|
|
||||||
// Generation of SEPA file $this->filename
|
// 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);
|
dol_syslog(__METHOD__."::End withdraw receipt, file ".$this->filename, LOG_DEBUG);
|
||||||
}
|
}
|
||||||
//var_dump($factures_prev);exit;
|
//var_dump($factures_prev);exit;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Update total
|
* Update total defined after generation of file
|
||||||
*/
|
*/
|
||||||
$sql = "UPDATE ".MAIN_DB_PREFIX."prelevement_bons";
|
$sql = "UPDATE ".MAIN_DB_PREFIX."prelevement_bons";
|
||||||
$sql .= " SET amount = ".price2num($this->total);
|
$sql .= " SET amount = ".price2num($this->total);
|
||||||
@ -1081,8 +1132,13 @@ class BonPrelevement extends CommonObject
|
|||||||
|
|
||||||
if (!$error && !$notrigger)
|
if (!$error && !$notrigger)
|
||||||
{
|
{
|
||||||
|
$triggername = 'DIRECT_DEBIT_ORDER_CREATE';
|
||||||
|
if ($type != 'bank-transfer') {
|
||||||
|
$triggername = 'CREDIT_TRANSFER_ORDER_CREATE';
|
||||||
|
}
|
||||||
|
|
||||||
// Call trigger
|
// Call trigger
|
||||||
$result = $this->call_trigger('DIRECT_DEBIT_ORDER_CREATE', $user);
|
$result = $this->call_trigger($triggername, $user);
|
||||||
if ($result < 0) $error++;
|
if ($result < 0) $error++;
|
||||||
// End call triggers
|
// 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:
|
* Generation Formats:
|
||||||
* - Europe: SEPA (France: CFONB no more supported, Spain: AEB19 if external module EsAEB is enabled)
|
* - Europe: SEPA (France: CFONB no more supported, Spain: AEB19 if external module EsAEB is enabled)
|
||||||
* - Others countries: Warning message
|
* - Others countries: Warning message
|
||||||
* File is generated with name this->filename
|
* File is generated with name this->filename
|
||||||
*
|
*
|
||||||
* @param string $format FRST, RCUR or ALL
|
* @param string $format FRST, RCUR or ALL
|
||||||
* @param string $executiondate Date to execute transfer
|
* @param string $executiondate Date to execute transfer
|
||||||
* @return int 0 if OK, <0 if KO
|
* @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;
|
global $conf, $langs, $mysoc;
|
||||||
|
|
||||||
@ -1350,7 +1407,7 @@ class BonPrelevement extends CommonObject
|
|||||||
|
|
||||||
$result = 0;
|
$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");
|
$this->file = fopen($this->filename, "w");
|
||||||
if (empty($this->file))
|
if (empty($this->file))
|
||||||
@ -1360,159 +1417,197 @@ class BonPrelevement extends CommonObject
|
|||||||
}
|
}
|
||||||
|
|
||||||
$found = 0;
|
$found = 0;
|
||||||
|
$this->total = 0;
|
||||||
|
|
||||||
// Build file for European countries
|
// Build file for European countries
|
||||||
if ($mysoc->isInEEC())
|
if ($mysoc->isInEEC())
|
||||||
{
|
{
|
||||||
$found++;
|
$found++;
|
||||||
|
|
||||||
/**
|
if ($type == 'bank-transfer') {
|
||||||
* SECTION CREATION FICHIER SEPA
|
print 'TODO';
|
||||||
*/
|
exit;
|
||||||
// SEPA Initialisation
|
} else {
|
||||||
$CrLf = "\n";
|
/**
|
||||||
|
* 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;
|
$date_actu = $now;
|
||||||
if (!empty($executiondate)) $date_actu = $executiondate;
|
if (!empty($executiondate)) $date_actu = $executiondate;
|
||||||
|
|
||||||
$dateTime_YMD = dol_print_date($date_actu, '%Y%m%d');
|
$dateTime_YMD = dol_print_date($date_actu, '%Y%m%d');
|
||||||
$dateTime_YMDHMS = dol_print_date($date_actu, '%Y%m%d%H%M%S');
|
$dateTime_YMDHMS = dol_print_date($date_actu, '%Y%m%d%H%M%S');
|
||||||
$fileDebiteurSection = '';
|
$fileDebiteurSection = '';
|
||||||
$fileEmetteurSection = '';
|
$fileEmetteurSection = '';
|
||||||
$i = 0;
|
$i = 0;
|
||||||
$this->total = 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 = "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 .= " 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 .= " 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 .= " FROM";
|
||||||
$sql .= " ".MAIN_DB_PREFIX."prelevement_lignes as pl,";
|
$sql .= " ".MAIN_DB_PREFIX."prelevement_lignes as pl,";
|
||||||
$sql .= " ".MAIN_DB_PREFIX."facture as f,";
|
$sql .= " ".MAIN_DB_PREFIX."facture as f,";
|
||||||
$sql .= " ".MAIN_DB_PREFIX."prelevement_facture as pf,";
|
$sql .= " ".MAIN_DB_PREFIX."prelevement_facture as pf,";
|
||||||
$sql .= " ".MAIN_DB_PREFIX."societe as soc,";
|
$sql .= " ".MAIN_DB_PREFIX."societe as soc,";
|
||||||
$sql .= " ".MAIN_DB_PREFIX."c_country as c,";
|
$sql .= " ".MAIN_DB_PREFIX."c_country as c,";
|
||||||
$sql .= " ".MAIN_DB_PREFIX."societe_rib as rib";
|
$sql .= " ".MAIN_DB_PREFIX."societe_rib as rib";
|
||||||
$sql .= " WHERE pl.fk_prelevement_bons = ".$this->id;
|
$sql .= " WHERE pl.fk_prelevement_bons = ".$this->id;
|
||||||
$sql .= " AND pl.rowid = pf.fk_prelevement_lignes";
|
$sql .= " AND pl.rowid = pf.fk_prelevement_lignes";
|
||||||
$sql .= " AND pf.fk_facture = f.rowid";
|
$sql .= " AND pf.fk_facture = f.rowid";
|
||||||
$sql .= " AND soc.fk_pays = c.rowid";
|
$sql .= " AND soc.fk_pays = c.rowid";
|
||||||
$sql .= " AND soc.rowid = f.fk_soc";
|
$sql .= " AND soc.rowid = f.fk_soc";
|
||||||
$sql .= " AND rib.fk_soc = f.fk_soc";
|
$sql .= " AND rib.fk_soc = f.fk_soc";
|
||||||
$sql .= " AND rib.default_rib = 1";
|
$sql .= " AND rib.default_rib = 1";
|
||||||
$sql .= " AND rib.type = 'ban'";
|
$sql .= " AND rib.type = 'ban'";
|
||||||
//print $sql;
|
//print $sql;
|
||||||
|
|
||||||
// Define $fileDebiteurSection. One section DrctDbtTxInf per invoice.
|
// Define $fileDebiteurSection. One section DrctDbtTxInf per invoice.
|
||||||
$resql = $this->db->query($sql);
|
$resql = $this->db->query($sql);
|
||||||
if ($resql)
|
if ($resql)
|
||||||
{
|
|
||||||
$num = $this->db->num_rows($resql);
|
|
||||||
while ($i < $num)
|
|
||||||
{
|
{
|
||||||
$obj = $this->db->fetch_object($resql);
|
$num = $this->db->num_rows($resql);
|
||||||
$daterum = (!empty($obj->date_rum)) ? $this->db->jdate($obj->date_rum) : $this->db->jdate($obj->datec);
|
while ($i < $num)
|
||||||
$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;
|
$obj = $this->db->fetch_object($resql);
|
||||||
$i++;
|
$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
|
// Define $fileEmetteurSection. Start of bloc PmtInf. Will contains all DrctDbtTxInf
|
||||||
if ($result != -2)
|
if ($result != -2)
|
||||||
{
|
{
|
||||||
$fileEmetteurSection .= $this->EnregEmetteurSEPA($conf, $date_actu, $nbtotalDrctDbtTxInf, $this->total, $CrLf, $format);
|
$fileEmetteurSection .= $this->EnregEmetteurSEPA($conf, $date_actu, $nbtotalDrctDbtTxInf, $this->total, $CrLf, $format);
|
||||||
} else {
|
} else {
|
||||||
fputs($this->file, 'ERROR CREDITOR'.$CrLf); // CREDITOR = My company
|
fputs($this->file, 'ERROR CREDITOR'.$CrLf); // CREDITOR = My company
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* SECTION CREATION SEPA FILE
|
* SECTION CREATION SEPA FILE
|
||||||
*/
|
*/
|
||||||
// SEPA File Header
|
// SEPA File Header
|
||||||
fputs($this->file, '<'.'?xml version="1.0" encoding="UTF-8" standalone="yes"?'.'>'.$CrLf);
|
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, '<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);
|
fputs($this->file, ' <CstmrDrctDbtInitn>'.$CrLf);
|
||||||
// SEPA Group header
|
// SEPA Group header
|
||||||
fputs($this->file, ' <GrpHdr>'.$CrLf);
|
fputs($this->file, ' <GrpHdr>'.$CrLf);
|
||||||
fputs($this->file, ' <MsgId>'.('PREL'.$dateTime_YMD.'/REF'.$this->id).'</MsgId>'.$CrLf);
|
fputs($this->file, ' <MsgId>'.('PREL'.$dateTime_YMD.'/REF'.$this->id).'</MsgId>'.$CrLf);
|
||||||
fputs($this->file, ' <CreDtTm>'.$dateTime_ECMA.'</CreDtTm>'.$CrLf);
|
fputs($this->file, ' <CreDtTm>'.$dateTime_ECMA.'</CreDtTm>'.$CrLf);
|
||||||
fputs($this->file, ' <NbOfTxs>'.$i.'</NbOfTxs>'.$CrLf);
|
fputs($this->file, ' <NbOfTxs>'.$i.'</NbOfTxs>'.$CrLf);
|
||||||
fputs($this->file, ' <CtrlSum>'.$this->total.'</CtrlSum>'.$CrLf);
|
fputs($this->file, ' <CtrlSum>'.$this->total.'</CtrlSum>'.$CrLf);
|
||||||
fputs($this->file, ' <InitgPty>'.$CrLf);
|
fputs($this->file, ' <InitgPty>'.$CrLf);
|
||||||
fputs($this->file, ' <Nm>'.strtoupper(dol_string_unaccent($this->raison_sociale)).'</Nm>'.$CrLf);
|
fputs($this->file, ' <Nm>'.strtoupper(dol_string_unaccent($this->raison_sociale)).'</Nm>'.$CrLf);
|
||||||
fputs($this->file, ' <Id>'.$CrLf);
|
fputs($this->file, ' <Id>'.$CrLf);
|
||||||
fputs($this->file, ' <PrvtId>'.$CrLf);
|
fputs($this->file, ' <PrvtId>'.$CrLf);
|
||||||
fputs($this->file, ' <Othr>'.$CrLf);
|
fputs($this->file, ' <Othr>'.$CrLf);
|
||||||
fputs($this->file, ' <Id>'.$conf->global->PRELEVEMENT_ICS.'</Id>'.$CrLf);
|
fputs($this->file, ' <Id>'.$conf->global->PRELEVEMENT_ICS.'</Id>'.$CrLf);
|
||||||
fputs($this->file, ' </Othr>'.$CrLf);
|
fputs($this->file, ' </Othr>'.$CrLf);
|
||||||
fputs($this->file, ' </PrvtId>'.$CrLf);
|
fputs($this->file, ' </PrvtId>'.$CrLf);
|
||||||
fputs($this->file, ' </Id>'.$CrLf);
|
fputs($this->file, ' </Id>'.$CrLf);
|
||||||
fputs($this->file, ' </InitgPty>'.$CrLf);
|
fputs($this->file, ' </InitgPty>'.$CrLf);
|
||||||
fputs($this->file, ' </GrpHdr>'.$CrLf);
|
fputs($this->file, ' </GrpHdr>'.$CrLf);
|
||||||
// SEPA File Emetteur
|
// SEPA File Emetteur
|
||||||
if ($result != -2)
|
if ($result != -2)
|
||||||
{ fputs($this-> file, $fileEmetteurSection); }
|
{ fputs($this-> file, $fileEmetteurSection); }
|
||||||
// SEPA File Debiteurs
|
// SEPA File Debiteurs
|
||||||
if ($result != -2)
|
if ($result != -2)
|
||||||
{ fputs($this-> file, $fileDebiteurSection); }
|
{ fputs($this-> file, $fileDebiteurSection); }
|
||||||
// SEPA FILE FOOTER
|
// SEPA FILE FOOTER
|
||||||
fputs($this->file, ' </PmtInf>'.$CrLf);
|
fputs($this->file, ' </PmtInf>'.$CrLf);
|
||||||
fputs($this->file, ' </CstmrDrctDbtInitn>'.$CrLf);
|
fputs($this->file, ' </CstmrDrctDbtInitn>'.$CrLf);
|
||||||
fputs($this->file, '</Document>'.$CrLf);
|
fputs($this->file, '</Document>'.$CrLf);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Build file for Other Countries with unknow format
|
// Build file for Other Countries with unknow format
|
||||||
if (!$found)
|
if (!$found)
|
||||||
{
|
{
|
||||||
$this->total = 0;
|
if ($type == 'bank-transfer') {
|
||||||
$sql = "SELECT pl.amount";
|
$sql = "SELECT pl.amount";
|
||||||
$sql .= " FROM";
|
$sql .= " FROM";
|
||||||
$sql .= " ".MAIN_DB_PREFIX."prelevement_lignes as pl,";
|
$sql .= " ".MAIN_DB_PREFIX."prelevement_lignes as pl,";
|
||||||
$sql .= " ".MAIN_DB_PREFIX."facture as f,";
|
$sql .= " ".MAIN_DB_PREFIX."facture_fourn as f,";
|
||||||
$sql .= " ".MAIN_DB_PREFIX."prelevement_facture as pf";
|
$sql .= " ".MAIN_DB_PREFIX."prelevement_facture as pf";
|
||||||
$sql .= " WHERE pl.fk_prelevement_bons = ".$this->id;
|
$sql .= " WHERE pl.fk_prelevement_bons = ".$this->id;
|
||||||
$sql .= " AND pl.rowid = pf.fk_prelevement_lignes";
|
$sql .= " AND pl.rowid = pf.fk_prelevement_lignes";
|
||||||
$sql .= " AND pf.fk_facture = f.rowid";
|
$sql .= " AND pf.fk_facture_fourn = f.rowid";
|
||||||
|
|
||||||
//Lines
|
// Lines
|
||||||
$i = 0;
|
$i = 0;
|
||||||
$resql = $this->db->query($sql);
|
$resql = $this->db->query($sql);
|
||||||
if ($resql)
|
if ($resql)
|
||||||
{
|
|
||||||
$num = $this->db->num_rows($resql);
|
|
||||||
|
|
||||||
while ($i < $num)
|
|
||||||
{
|
{
|
||||||
$obj = $this->db->fetch_object($resql);
|
$num = $this->db->num_rows($resql);
|
||||||
$this->total = $this->total + $obj->amount;
|
|
||||||
$i++;
|
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 {
|
} 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');
|
$langs->load('withdrawals');
|
||||||
|
|
||||||
// TODO Add here code to generate a generic file
|
// 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);
|
fclose($this->file);
|
||||||
if (!empty($conf->global->MAIN_UMASK))
|
if (!empty($conf->global->MAIN_UMASK)) {
|
||||||
@chmod($this->file, octdec($conf->global->MAIN_UMASK));
|
@chmod($this->file, octdec($conf->global->MAIN_UMASK));
|
||||||
return $result;
|
}
|
||||||
|
|
||||||
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -1,11 +1,11 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
/* 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) 2005-2009 Regis Houssin <regis.houssin@inodbox.com>
|
||||||
* Copyright (C) 2010-2012 Juanjo Menent <jmenent@2byte.es>
|
* Copyright (C) 2010-2012 Juanjo Menent <jmenent@2byte.es>
|
||||||
* Copyright (C) 2018 Nicolas ZABOURI <info@inovea-conseil.com>
|
* Copyright (C) 2018 Nicolas ZABOURI <info@inovea-conseil.com>
|
||||||
* Copyright (C) 2018 Frédéric France <frederic.france@netlogic.fr>
|
* 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
|
* 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
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -24,7 +24,7 @@
|
|||||||
/**
|
/**
|
||||||
* \file htdocs/compta/prelevement/create.php
|
* \file htdocs/compta/prelevement/create.php
|
||||||
* \ingroup prelevement
|
* \ingroup prelevement
|
||||||
* \brief Prelevement creation page
|
* \brief Page to create a direct debit order or a credit transfer order
|
||||||
*/
|
*/
|
||||||
|
|
||||||
require '../../main.inc.php';
|
require '../../main.inc.php';
|
||||||
@ -77,11 +77,17 @@ if (empty($reshook))
|
|||||||
}
|
}
|
||||||
if ($action == 'create')
|
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);
|
$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)
|
if ($result < 0)
|
||||||
{
|
{
|
||||||
setEventMessages($bprev->error, $bprev->errors, 'errors');
|
setEventMessages($bprev->error, $bprev->errors, 'errors');
|
||||||
@ -111,7 +117,11 @@ if (empty($reshook))
|
|||||||
$form = new Form($db);
|
$form = new Form($db);
|
||||||
|
|
||||||
$thirdpartystatic = new Societe($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);
|
$bprev = new BonPrelevement($db);
|
||||||
|
|
||||||
llxHeader('', $langs->trans("NewStandingOrder"));
|
llxHeader('', $langs->trans("NewStandingOrder"));
|
||||||
@ -174,15 +184,25 @@ print '<div class="tabsAction">'."\n";
|
|||||||
|
|
||||||
print '<form action="'.$_SERVER['PHP_SELF'].'?action=create" method="POST">';
|
print '<form action="'.$_SERVER['PHP_SELF'].'?action=create" method="POST">';
|
||||||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||||
|
print '<input type="hidden" name="type" value="'.$type.'">';
|
||||||
if ($nb) {
|
if ($nb) {
|
||||||
if ($pricetowithdraw) {
|
if ($pricetowithdraw) {
|
||||||
print $langs->trans('ExecutionDate').' ';
|
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()) {
|
if ($mysoc->isInEEC()) {
|
||||||
$title = $langs->trans("CreateForSepa");
|
$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.'"/>';
|
print '<input class="butAction" type="submit" value="'.$title.'"/>';
|
||||||
} else {
|
} else {
|
||||||
$title = $langs->trans("CreateAll");
|
$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.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.traite = 0";
|
||||||
|
$sql .= " AND pfd.ext_payment_id IS NULL";
|
||||||
if ($type == 'bank-transfer') {
|
if ($type == 'bank-transfer') {
|
||||||
$sql .= " AND pfd.fk_facture_fourn = f.rowid";
|
$sql .= " AND pfd.fk_facture_fourn = f.rowid";
|
||||||
} else {
|
} else {
|
||||||
@ -295,9 +317,14 @@ if ($resql)
|
|||||||
}
|
}
|
||||||
print_barre_liste($title, $page, $_SERVER['PHP_SELF'], $param, '', '', '', $num, $nbtotalofrecords, 'bill', 0, '', '', $limit);
|
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 '<table class="noborder centpercent">';
|
||||||
print '<tr class="liste_titre">';
|
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("ThirdParty").'</td>';
|
||||||
print '<td>'.$langs->trans("RIB").'</td>';
|
print '<td>'.$langs->trans("RIB").'</td>';
|
||||||
print '<td>'.$langs->trans("RUM").'</td>';
|
print '<td>'.$langs->trans("RUM").'</td>';
|
||||||
@ -341,7 +368,9 @@ if ($resql)
|
|||||||
print '<td>';
|
print '<td>';
|
||||||
print $thirdpartystatic->display_rib('rum');
|
print $thirdpartystatic->display_rib('rum');
|
||||||
$format = $thirdpartystatic->display_rib('format');
|
$format = $thirdpartystatic->display_rib('format');
|
||||||
if ($format) print ' ('.$format.')';
|
if ($type != 'bank-transfer') {
|
||||||
|
if ($format) print ' ('.$format.')';
|
||||||
|
}
|
||||||
print '</td>';
|
print '</td>';
|
||||||
// Amount
|
// Amount
|
||||||
print '<td class="right">';
|
print '<td class="right">';
|
||||||
|
|||||||
@ -22,7 +22,7 @@
|
|||||||
/**
|
/**
|
||||||
* \file htdocs/compta/prelevement/index.php
|
* \file htdocs/compta/prelevement/index.php
|
||||||
* \ingroup prelevement
|
* \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 = "SELECT f.ref, f.rowid, f.total_ttc, f.fk_statut, f.paye, f.type,";
|
||||||
$sql .= " pfd.date_demande, pfd.amount,";
|
$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 .= " FROM ".MAIN_DB_PREFIX."facture as f,";
|
||||||
$sql .= " ".MAIN_DB_PREFIX."societe as s";
|
$sql .= " ".MAIN_DB_PREFIX."societe as s";
|
||||||
if (!$user->rights->societe->client->voir && !$socid) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
|
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 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 (!$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;
|
if ($socid) $sql .= " AND f.fk_soc = ".$socid;
|
||||||
|
|
||||||
@ -133,14 +135,15 @@ if ($resql)
|
|||||||
$invoicestatic->type = $obj->type;
|
$invoicestatic->type = $obj->type;
|
||||||
$alreadypayed = $invoicestatic->getSommePaiement();
|
$alreadypayed = $invoicestatic->getSommePaiement();
|
||||||
|
|
||||||
|
$thirdpartystatic->id = $obj->socid;
|
||||||
|
$thirdpartystatic->name = $obj->name;
|
||||||
|
$thirdpartystatic->email = $obj->email;
|
||||||
|
|
||||||
print '<tr class="oddeven"><td>';
|
print '<tr class="oddeven"><td>';
|
||||||
print $invoicestatic->getNomUrl(1, 'withdraw');
|
print $invoicestatic->getNomUrl(1, 'withdraw');
|
||||||
print '</td>';
|
print '</td>';
|
||||||
|
|
||||||
print '<td>';
|
print '<td>';
|
||||||
$thirdpartystatic->id = $obj->socid;
|
|
||||||
$thirdpartystatic->name = $obj->name;
|
|
||||||
print $thirdpartystatic->getNomUrl(1, 'customer');
|
print $thirdpartystatic->getNomUrl(1, 'customer');
|
||||||
print '</td>';
|
print '</td>';
|
||||||
|
|
||||||
@ -171,8 +174,9 @@ print '</div><div class="fichetwothirdright"><div class="ficheaddleft">';
|
|||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Withdraw receipts
|
* Direct debit orders
|
||||||
*/
|
*/
|
||||||
|
|
||||||
$limit = 5;
|
$limit = 5;
|
||||||
$sql = "SELECT p.rowid, p.ref, p.amount, p.datec, p.statut";
|
$sql = "SELECT p.rowid, p.ref, p.amount, p.datec, p.statut";
|
||||||
$sql .= " FROM ".MAIN_DB_PREFIX."prelevement_bons as p";
|
$sql .= " FROM ".MAIN_DB_PREFIX."prelevement_bons as p";
|
||||||
@ -189,7 +193,8 @@ if ($result)
|
|||||||
print"\n<!-- debut table -->\n";
|
print"\n<!-- debut table -->\n";
|
||||||
print '<div class="div-table-responsive-no-min">';
|
print '<div class="div-table-responsive-no-min">';
|
||||||
print '<table class="noborder centpercent">';
|
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>'.$langs->trans("Date").'</th>';
|
||||||
print '<th class="right">'.$langs->trans("Amount").'</th>';
|
print '<th class="right">'.$langs->trans("Amount").'</th>';
|
||||||
print '<th class="right">'.$langs->trans("Status").'</th>';
|
print '<th class="right">'.$langs->trans("Status").'</th>';
|
||||||
@ -217,7 +222,7 @@ if ($result)
|
|||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
} else {
|
} 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>";
|
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>';
|
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)
|
if (!empty($conf->commande->enabled) && $object->statut > 0 && $object->nbofservicesclosed < $nbofservices)
|
||||||
{
|
{
|
||||||
$langs->load("orders");
|
$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>';
|
else print '<div class="inline-block divButAction"><a class="butActionRefused classfortooltip" href="#" title="'.$langs->trans("NotEnoughPermissions").'">'.$langs->trans("CreateOrder").'</a></div>';
|
||||||
}
|
}
|
||||||
|
|
||||||
// Clone
|
if (!empty($conf->facture->enabled) && $object->statut > 0)
|
||||||
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>';
|
$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)
|
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>';
|
// 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 (! 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>';
|
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>';
|
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
|
// On peut supprimer entite si
|
||||||
// - Droit de creer + mode brouillon (erreur creation)
|
// - Droit de creer + mode brouillon (erreur creation)
|
||||||
// - Droit de supprimer
|
// - 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>';
|
print '<div class="inline-block divButAction"><a class="butActionDelete" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=delete">'.$langs->trans("Delete").'</a></div>';
|
||||||
} else {
|
} 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)
|
if (!$error)
|
||||||
{
|
{
|
||||||
$result = $object->create($user);
|
$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)
|
if (!$error)
|
||||||
{
|
{
|
||||||
$result = $object->update($user);
|
$result = $object->update($user);
|
||||||
@ -188,7 +200,14 @@ if ($action == "update_extras" && !empty($permissiontoadd))
|
|||||||
|
|
||||||
$attributekey = GETPOST('attribute', 'alpha');
|
$attributekey = GETPOST('attribute', 'alpha');
|
||||||
$attributekeylong = 'options_'.$attributekey;
|
$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);
|
$result = $object->insertExtraFields(empty($triggermodname) ? '' : $triggermodname, $user);
|
||||||
if ($result > 0)
|
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');
|
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');
|
} else {
|
||||||
$action = '';
|
setEventMessages($object->error, $object->errors, 'errors');
|
||||||
|
}
|
||||||
|
$action = '';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2010 Regis Houssin <regis.houssin@inodbox.com>
|
/* Copyright (C) 2010 Regis Houssin <regis.houssin@inodbox.com>
|
||||||
* Copyright (C) 2011-204 Laurent Destailleur <eldy@users.sourceforge.net>
|
* Copyright (C) 2011-2014 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* 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
|
* 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'));
|
//$this->message->setFrom(array('john@doe.com' => 'John Doe'));
|
||||||
if (!empty($from)) {
|
if (!empty($from)) {
|
||||||
try {
|
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) {
|
} catch (Exception $e) {
|
||||||
$this->errors[] = $e->getMessage();
|
$this->errors[] = $e->getMessage();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2525,10 +2525,11 @@ abstract class CommonObject
|
|||||||
/**
|
/**
|
||||||
* Get children of line
|
* Get children of line
|
||||||
*
|
*
|
||||||
* @param int $id Id of parent line
|
* @param int $id Id of parent line
|
||||||
* @return array Array with list of children lines id
|
* @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();
|
$rows = array();
|
||||||
|
|
||||||
@ -2541,16 +2542,13 @@ abstract class CommonObject
|
|||||||
$resql = $this->db->query($sql);
|
$resql = $this->db->query($sql);
|
||||||
if ($resql)
|
if ($resql)
|
||||||
{
|
{
|
||||||
$i = 0;
|
if ($this->db->num_rows($resql) > 0) {
|
||||||
$num = $this->db->num_rows($resql);
|
while ($row = $this->db->fetch_row($resql)) {
|
||||||
while ($i < $num)
|
$rows[] = $row[0];
|
||||||
{
|
if (!empty($includealltree)) $rows = array_merge($rows, $this->getChildrenOfLine($row[0]), $includealltree);
|
||||||
$row = $this->db->fetch_row($resql);
|
}
|
||||||
$rows[$i] = $row[0];
|
|
||||||
$i++;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return $rows;
|
return $rows;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5608,7 +5606,7 @@ abstract class CommonObject
|
|||||||
* Update an extra field value for the current object.
|
* 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', ...)
|
* 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 string $trigger If defined, call also the trigger (for example COMPANY_MODIFY)
|
||||||
* @param User $userused Object user
|
* @param User $userused Object user
|
||||||
* @return int -1=error, O=did nothing, 1=OK
|
* @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);
|
$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 (!empty($conf->global->MAIN_EXTRAFIELDS_USE_TWO_COLUMS) && ($e % 2) == 0) { $colspan = '0'; }
|
||||||
|
|
||||||
if ($action == 'selectlines') { $colspan++; }
|
if ($action == 'selectlines') { $colspan++; }
|
||||||
@ -6865,6 +6861,7 @@ abstract class CommonObject
|
|||||||
$labeltoshow = $langs->trans($label);
|
$labeltoshow = $langs->trans($label);
|
||||||
$helptoshow = $langs->trans($extrafields->attributes[$this->table_element]['help'][$key]);
|
$helptoshow = $langs->trans($extrafields->attributes[$this->table_element]['help'][$key]);
|
||||||
|
|
||||||
|
$out .= '<tr '.($html_id ? 'id="'.$html_id.'" ' : '').$csstyle.' class="'.$class.$this->element.'_extras_'.$key.' trextrafields_collapse'.$extrafields_collapse_num.'" '.$domData.' >';
|
||||||
$out .= '<td class="';
|
$out .= '<td class="';
|
||||||
//$out .= "titlefield";
|
//$out .= "titlefield";
|
||||||
//if (GETPOST('action', 'none') == 'create') $out.='create';
|
//if (GETPOST('action', 'none') == 'create') $out.='create';
|
||||||
@ -7758,6 +7755,11 @@ abstract class CommonObject
|
|||||||
if ($obj)
|
if ($obj)
|
||||||
{
|
{
|
||||||
$this->setVarsFromFetchObj($obj);
|
$this->setVarsFromFetchObj($obj);
|
||||||
|
|
||||||
|
// Retreive all extrafield
|
||||||
|
// fetch optionals attributes and labels
|
||||||
|
$this->fetch_optionals();
|
||||||
|
|
||||||
return $this->id;
|
return $this->id;
|
||||||
} else {
|
} else {
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
@ -194,7 +194,7 @@ class EvalMath
|
|||||||
*
|
*
|
||||||
* @return string Output
|
* @return string Output
|
||||||
*/
|
*/
|
||||||
private function vars()
|
public function vars()
|
||||||
{
|
{
|
||||||
$output = $this->v;
|
$output = $this->v;
|
||||||
unset($output['pi']);
|
unset($output['pi']);
|
||||||
@ -270,9 +270,11 @@ class EvalMath
|
|||||||
// ===============
|
// ===============
|
||||||
} elseif ($op == ')' and $expecting_op) { // ready to close a parenthesis?
|
} elseif ($op == ')' and $expecting_op) { // ready to close a parenthesis?
|
||||||
while (($o2 = $stack->pop()) != '(') { // pop off the stack back to the last (
|
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 ')'", ")");
|
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?
|
if (preg_match("/^([a-z]\w*)\($/", $stack->last(2), $matches)) { // did we just close a function?
|
||||||
$fnn = $matches[1]; // get the function name
|
$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?
|
} elseif ($op == ',' and $expecting_op) { // did we just finish a function argument?
|
||||||
while (($o2 = $stack->pop()) != '(') {
|
while (($o2 = $stack->pop()) != '(') {
|
||||||
if (is_null($o2))
|
if (is_null($o2)) {
|
||||||
return $this->trigger(5, "unexpected ','", ","); // oops, never had a (
|
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
|
// make sure there was a function
|
||||||
if (!preg_match("/^([a-z]\w*)\($/", $stack->last(2), $matches))
|
if (!preg_match("/^([a-z]\w*)\($/", $stack->last(2), $matches))
|
||||||
|
|||||||
@ -1621,6 +1621,13 @@ class ExtraFields
|
|||||||
$keyList .= implode(', ', $fields_label);
|
$keyList .= implode(', ', $fields_label);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$filter_categorie = false;
|
||||||
|
if (count($InfoFieldList) > 5) {
|
||||||
|
if ($InfoFieldList[0] == 'categorie') {
|
||||||
|
$filter_categorie = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$sql = 'SELECT '.$keyList;
|
$sql = 'SELECT '.$keyList;
|
||||||
$sql .= ' FROM '.MAIN_DB_PREFIX.$InfoFieldList[0];
|
$sql .= ' FROM '.MAIN_DB_PREFIX.$InfoFieldList[0];
|
||||||
if (strpos($InfoFieldList[4], 'extra') !== false)
|
if (strpos($InfoFieldList[4], 'extra') !== false)
|
||||||
@ -1641,37 +1648,49 @@ class ExtraFields
|
|||||||
$resql = $this->db->query($sql);
|
$resql = $this->db->query($sql);
|
||||||
if ($resql)
|
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)
|
// Several field into label (eq table:code|libelle:rowid)
|
||||||
$fields_label = explode('|', $InfoFieldList[1]);
|
$fields_label = explode('|', $InfoFieldList[1]);
|
||||||
|
|
||||||
if (is_array($fields_label) && count($fields_label) > 1)
|
if (is_array($fields_label) && count($fields_label) > 1) {
|
||||||
{
|
foreach ($fields_label as $field_toshow) {
|
||||||
foreach ($fields_label as $field_toshow)
|
$translabel = '';
|
||||||
{
|
if (!empty($obj->$field_toshow)) {
|
||||||
$translabel = '';
|
$translabel = $langs->trans($obj->$field_toshow);
|
||||||
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) {
|
} else {
|
||||||
$value .= dol_trunc($translabel, 18).' ';
|
$translabel = '';
|
||||||
|
if (!empty($obj->{$InfoFieldList[1]})) {
|
||||||
|
$translabel = $langs->trans($obj->{$InfoFieldList[1]});
|
||||||
|
}
|
||||||
|
if ($translabel != $obj->{$InfoFieldList[1]}) {
|
||||||
|
$value = dol_trunc($translabel, 18);
|
||||||
} else {
|
} else {
|
||||||
$value .= $obj->$field_toshow.' ';
|
$value = $obj->{$InfoFieldList[1]};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$translabel = '';
|
require_once DOL_DOCUMENT_ROOT . '/categories/class/categorie.class.php';
|
||||||
if (!empty($obj->{$InfoFieldList[1]})) {
|
|
||||||
$translabel = $langs->trans($obj->{$InfoFieldList[1]});
|
$toprint = array();
|
||||||
}
|
$obj = $this->db->fetch_object($resql);
|
||||||
if ($translabel != $obj->{$InfoFieldList[1]}) {
|
$c = new Categorie($this->db);
|
||||||
$value = dol_trunc($translabel, 18);
|
$c->fetch($obj->rowid);
|
||||||
} else {
|
$ways = $c->print_all_ways(); // $ways[0] = "ccc2 >> ccc2a >> ccc2a1" with html formatted text
|
||||||
$value = $obj->{$InfoFieldList[1]};
|
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);
|
} else dol_syslog(get_class($this).'::showOutputField error '.$this->db->lasterror(), LOG_WARNING);
|
||||||
} elseif ($type == 'radio')
|
} elseif ($type == 'radio')
|
||||||
@ -1710,6 +1729,13 @@ class ExtraFields
|
|||||||
$keyList .= implode(', ', $fields_label);
|
$keyList .= implode(', ', $fields_label);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$filter_categorie = false;
|
||||||
|
if (count($InfoFieldList) > 5) {
|
||||||
|
if ($InfoFieldList[0] == 'categorie') {
|
||||||
|
$filter_categorie = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$sql = 'SELECT '.$keyList;
|
$sql = 'SELECT '.$keyList;
|
||||||
$sql .= ' FROM '.MAIN_DB_PREFIX.$InfoFieldList[0];
|
$sql .= ' FROM '.MAIN_DB_PREFIX.$InfoFieldList[0];
|
||||||
if (strpos($InfoFieldList[4], 'extra') !== false) {
|
if (strpos($InfoFieldList[4], 'extra') !== false) {
|
||||||
@ -1721,33 +1747,49 @@ class ExtraFields
|
|||||||
dol_syslog(get_class($this).':showOutputField:$type=chkbxlst', LOG_DEBUG);
|
dol_syslog(get_class($this).':showOutputField:$type=chkbxlst', LOG_DEBUG);
|
||||||
$resql = $this->db->query($sql);
|
$resql = $this->db->query($sql);
|
||||||
if ($resql) {
|
if ($resql) {
|
||||||
$value = ''; // value was used, so now we reste it to use it to build final output
|
if ($filter_categorie === false) {
|
||||||
$toprint = array();
|
$value = ''; // value was used, so now we reste it to use it to build final output
|
||||||
while ($obj = $this->db->fetch_object($resql)) {
|
$toprint = array();
|
||||||
// Several field into label (eq table:code|libelle:rowid)
|
while ($obj = $this->db->fetch_object($resql)) {
|
||||||
$fields_label = explode('|', $InfoFieldList[1]);
|
// Several field into label (eq table:code|libelle:rowid)
|
||||||
if (is_array($value_arr) && in_array($obj->rowid, $value_arr)) {
|
$fields_label = explode('|', $InfoFieldList[1]);
|
||||||
if (is_array($fields_label) && count($fields_label) > 1) {
|
if (is_array($value_arr) && in_array($obj->rowid, $value_arr)) {
|
||||||
foreach ($fields_label as $field_toshow) {
|
if (is_array($fields_label) && count($fields_label) > 1) {
|
||||||
$translabel = '';
|
foreach ($fields_label as $field_toshow) {
|
||||||
if (!empty($obj->$field_toshow)) {
|
$translabel = '';
|
||||||
$translabel = $langs->trans($obj->$field_toshow);
|
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 {
|
} 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 array $extralabels Deprecated (old $array of extrafields, now set this to null)
|
||||||
* @param object $object Object
|
* @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)
|
* @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 = '')
|
public function setOptionalsFromPost($extralabels, &$object, $onlykey = '')
|
||||||
@ -1929,7 +1973,8 @@ class ExtraFields
|
|||||||
// Get extra fields
|
// Get extra fields
|
||||||
foreach ($extralabels as $key => $value)
|
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];
|
$key_type = $this->attributes[$object->table_element]['type'][$key];
|
||||||
if ($key_type == 'separate') continue;
|
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
|
// Clean parameters
|
||||||
// TODO GMT date in memory must be GMT so we should add gm=true in 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"]);
|
$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
|
// Clean parameters
|
||||||
// TODO GMT date in memory must be GMT so we should add gm=true in 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"]);
|
$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
|
$value_arr = GETPOST("options_".$key, 'array'); // check if an array
|
||||||
if (!empty($value_arr)) {
|
if (!empty($value_arr)) {
|
||||||
$value_key = implode($value_arr, ',');
|
$value_key = implode($value_arr, ',');
|
||||||
} else {
|
} else {
|
||||||
$value_key = '';
|
$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_arr = GETPOST("options_".$key, 'alpha');
|
||||||
$value_key = price2num($value_arr);
|
$value_key = price2num($value_arr);
|
||||||
|
} elseif (in_array($key_type, array('html'))) {
|
||||||
|
$value_key = GETPOST("options_".$key, 'alpha');
|
||||||
} else {
|
} else {
|
||||||
$value_key = GETPOST("options_".$key);
|
$value_key = GETPOST("options_".$key);
|
||||||
if (in_array($key_type, array('link')) && $value_key == '-1') $value_key = '';
|
if (in_array($key_type, array('link')) && $value_key == '-1') $value_key = '';
|
||||||
|
|||||||
@ -5242,6 +5242,28 @@ class Form
|
|||||||
return;
|
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.
|
* Show a HTML widget to input a date or combo list for day, month, years and optionaly hours and minutes.
|
||||||
* Fields are preselected with :
|
* Fields are preselected with :
|
||||||
|
|||||||
@ -184,7 +184,8 @@ print '
|
|||||||
{
|
{
|
||||||
if (this.href)
|
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);
|
console.log("We click on tag with .reposition class. this.ref is now "+this.href);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@ -1273,7 +1273,27 @@ function show_actions_done($conf, $langs, $db, $filterobj, $objcon = '', $noprin
|
|||||||
global $form;
|
global $form;
|
||||||
|
|
||||||
global $param, $massactionbutton;
|
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');
|
dol_include_once('/comm/action/class/actioncomm.class.php');
|
||||||
|
|
||||||
// Check parameters
|
// Check parameters
|
||||||
@ -1379,54 +1399,46 @@ function show_actions_done($conf, $langs, $db, $filterobj, $objcon = '', $noprin
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Condition on actioncode
|
if (! empty($search_start) && ! empty($search_end)) {
|
||||||
if (!empty($actioncode))
|
$sql .= " AND ((a.datep BETWEEN '$search_start' AND '$search_end') OR (a.datep2 BETWEEN '$search_start' AND '$search_end'))";
|
||||||
{
|
}
|
||||||
if (empty($conf->global->AGENDA_USE_EVENT_TYPE))
|
elseif (empty($search_start) && ! empty($search_end)) {
|
||||||
{
|
$sql .= " AND ((a.datep <= '$search_end') OR (a.datep2 <= '$search_end'))";
|
||||||
if ($actioncode == 'AC_NON_AUTO') $sql .= " AND c.type != 'systemauto'";
|
}
|
||||||
elseif ($actioncode == 'AC_ALL_AUTO') $sql .= " AND c.type = 'systemauto'";
|
elseif (! empty($search_start) && empty($search_end)) {
|
||||||
else {
|
$sql .= " AND ((a.datep >= '$search_start') OR (a.datep2 >= '$search_start'))";
|
||||||
if ($actioncode == 'AC_OTH') $sql .= " AND c.type != 'systemauto'";
|
}
|
||||||
elseif ($actioncode == 'AC_OTH_AUTO') $sql .= " AND c.type = 'systemauto'";
|
|
||||||
|
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)."'))";
|
else {
|
||||||
elseif ($donetodo == 'done') $sql .= " AND (a.percent = 100 OR (a.percent = -1 AND a.datep <= '".$db->idate($now)."'))";
|
$sql2 = addMailingEventTypeSQL($actioncode, $objcon, $filterobj);
|
||||||
if (is_array($filters) && $filters['search_agenda_label']) $sql .= natural_search('a.label', $filters['search_agenda_label']);
|
if (! empty($sql) && ! empty($sql2)) {
|
||||||
}
|
$sql = $sql." UNION ".$sql2;
|
||||||
|
}
|
||||||
// Add also event from emailings. TODO This should be replaced by an automatic event ? May be it's too much for very large emailing.
|
elseif (empty($sql) && ! empty($sql2)) {
|
||||||
if (!empty($conf->mailing->enabled) && !empty($objcon->email)
|
$sql = $sql2;
|
||||||
&& (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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO Add limit in nb of results
|
//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"></td>';
|
$out .= '<td class="liste_titre"></td>';
|
||||||
$out .= '<td class="liste_titre">';
|
$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>';
|
||||||
$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 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>';
|
$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;
|
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;
|
if ($obj) $nbStandingOrders = $obj->nb;
|
||||||
}
|
}
|
||||||
else dol_print_error($db);
|
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');
|
$head[$h][1] = $langs->trans('BankTransfer');
|
||||||
if ($nbStandingOrders > 0) $head[$h][1] .= '<span class="badge marginleftonlyshort">'.$nbStandingOrders.'</span>';
|
if ($nbStandingOrders > 0) $head[$h][1] .= '<span class="badge marginleftonlyshort">'.$nbStandingOrders.'</span>';
|
||||||
$head[$h][2] = 'standingorders';
|
$head[$h][2] = 'standingorders';
|
||||||
@ -233,8 +233,6 @@ function supplierorder_admin_prepare_head()
|
|||||||
$head[$h][2] = 'supplierorderdet';
|
$head[$h][2] = 'supplierorderdet';
|
||||||
$h++;
|
$h++;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
$head[$h][0] = DOL_URL_ROOT.'/admin/supplierinvoice_extrafields.php';
|
$head[$h][0] = DOL_URL_ROOT.'/admin/supplierinvoice_extrafields.php';
|
||||||
$head[$h][1] = $langs->trans("ExtraFieldsSupplierInvoices");
|
$head[$h][1] = $langs->trans("ExtraFieldsSupplierInvoices");
|
||||||
$head[$h][2] = 'supplierinvoice';
|
$head[$h][2] = 'supplierinvoice';
|
||||||
|
|||||||
@ -3055,7 +3055,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $
|
|||||||
'accounting'=>'chart-line', 'category'=>'tag', 'dollyrevert'=>'dolly',
|
'accounting'=>'chart-line', 'category'=>'tag', 'dollyrevert'=>'dolly',
|
||||||
'hrm'=>'umbrella-beach', 'margin'=>'calculator', 'members'=>'users', 'ticket'=>'ticket-alt', 'globe'=>'external-link-alt', 'lot'=>'barcode',
|
'hrm'=>'umbrella-beach', 'margin'=>'calculator', 'members'=>'users', 'ticket'=>'ticket-alt', 'globe'=>'external-link-alt', 'lot'=>'barcode',
|
||||||
'email'=>'at',
|
'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',
|
'generic'=>'file', 'holiday'=>'umbrella-beach', 'label'=>'layer-group',
|
||||||
'member'=>'users', 'mrp'=>'cubes', 'trip'=>'wallet', 'group'=>'users',
|
'member'=>'users', 'mrp'=>'cubes', 'trip'=>'wallet', 'group'=>'users',
|
||||||
'sign-out'=>'sign-out-alt',
|
'sign-out'=>'sign-out-alt',
|
||||||
@ -3143,7 +3143,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $
|
|||||||
$arrayconvpictotocolor = array(
|
$arrayconvpictotocolor = array(
|
||||||
'address'=>'#37a', 'building'=>'#37a', 'bom'=>'#a69944',
|
'address'=>'#37a', 'building'=>'#37a', 'bom'=>'#a69944',
|
||||||
'companies'=>'#37a', 'company'=>'#37a', 'contact'=>'#37a', 'dynamicprice'=>'#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',
|
'dolly'=>'#a69944', 'dollyrevert'=>'#a69944', 'lot'=>'#a69944',
|
||||||
'map-marker-alt'=>'#aaa', 'mrp'=>'#a69944', 'product'=>'#a69944', 'service'=>'#a69944', 'stock'=>'#a69944',
|
'map-marker-alt'=>'#aaa', 'mrp'=>'#a69944', 'product'=>'#a69944', 'service'=>'#a69944', 'stock'=>'#a69944',
|
||||||
'other'=>'#ddd',
|
'other'=>'#ddd',
|
||||||
|
|||||||
@ -35,7 +35,7 @@ function holiday_prepare_head($object)
|
|||||||
$head = array();
|
$head = array();
|
||||||
|
|
||||||
$head[$h][0] = DOL_URL_ROOT.'/holiday/card.php?id='.$object->id;
|
$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';
|
$head[$h][2] = 'card';
|
||||||
$h++;
|
$h++;
|
||||||
|
|
||||||
|
|||||||
@ -38,6 +38,11 @@ function takepos_prepare_head()
|
|||||||
$head[$h][2] = 'setup';
|
$head[$h][2] = 'setup';
|
||||||
$h++;
|
$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][0] = DOL_URL_ROOT.'/takepos/admin/receipt.php';
|
||||||
$head[$h][1] = $langs->trans("Receipt");
|
$head[$h][1] = $langs->trans("Receipt");
|
||||||
$head[$h][2] = '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
|
// Direct debit order
|
||||||
if (!empty($conf->prelevement->enabled))
|
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") {
|
if ($usemenuhider || empty($leftmenu) || $leftmenu == "withdraw") {
|
||||||
$newmenu->add("/compta/prelevement/create.php?mainmenu=bank", $langs->trans("NewStandingOrder"), 1, $user->rights->prelevement->bons->creer);
|
$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 == 'shipping') $permok = $user->rights->expedition->creer;
|
||||||
if ($object->element == 'delivery') $permok = $user->rights->expedition->livraison->creer;
|
if ($object->element == 'delivery') $permok = $user->rights->expedition->livraison->creer;
|
||||||
if ($object->element == 'productlot') $permok = $user->rights->stock->creer;
|
if ($object->element == 'productlot') $permok = $user->rights->stock->creer;
|
||||||
if ($object->element == 'facturerec') $permok = $user->rights->facture->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 == '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)
|
&& $permok && $enabled != 5 && ($action != 'edit_extras' || GETPOST('attribute') != $key)
|
||||||
&& empty($extrafields->attributes[$object->table_element]['computed'][$key]))
|
&& empty($extrafields->attributes[$object->table_element]['computed'][$key]))
|
||||||
{
|
{
|
||||||
|
|||||||
@ -85,7 +85,7 @@ if ($nolinesbefore) {
|
|||||||
<td class="linecolnum center"></td>
|
<td class="linecolnum center"></td>
|
||||||
<?php } ?>
|
<?php } ?>
|
||||||
<td class="linecoldescription minwidth500imp">
|
<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>
|
</td>
|
||||||
<?php
|
<?php
|
||||||
if ($object->element == 'supplier_proposal' || $object->element == 'order_supplier' || $object->element == 'invoice_supplier') // We must have same test in printObjectLines
|
if ($object->element == 'supplier_proposal' || $object->element == 'order_supplier' || $object->element == 'invoice_supplier') // We must have same test in printObjectLines
|
||||||
|
|||||||
@ -59,7 +59,19 @@ if ($this->element == 'supplier_proposal' || $this->element == 'order_supplier'
|
|||||||
}
|
}
|
||||||
|
|
||||||
// VAT
|
// 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
|
// Price HT
|
||||||
print '<td class="linecoluht right" style="width: 80px">'.$langs->trans('PriceUHT').'</td>';
|
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 ( 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);
|
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)
|
-- 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 (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);
|
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
|
-- 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_prelevement_bons ADD COLUMN type varchar(16) DEFAULT 'debit-order';
|
||||||
|
|
||||||
ALTER TABLE llx_ecm_files MODIFY COLUMN src_object_type varchar(64);
|
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 (fk_facture);
|
||||||
ALTER TABLE llx_prelevement_facture_demande ADD INDEX idx_prelevement_facture_demande_fk_facture_fourn (fk_facture_fourn);
|
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 (fk_facture);
|
||||||
ALTER TABLE llx_prelevement_facture_demande ADD INDEX idx_prelevement_facture_demande_fk_facture_fourn (fk_facture_fourn);
|
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
|
-- For v13
|
||||||
|
|
||||||
|
|||||||
@ -543,7 +543,7 @@ Module54Desc=Management of contracts (services or recurring subscriptions)
|
|||||||
Module55Name=Barcodes
|
Module55Name=Barcodes
|
||||||
Module55Desc=Barcode management
|
Module55Desc=Barcode management
|
||||||
Module56Name=Payment by credit transfer
|
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
|
Module57Name=Bank Direct Debit payments
|
||||||
Module57Desc=Management of Direct Debit payment orders. It includes generation of SEPA file for European countries.
|
Module57Desc=Management of Direct Debit payment orders. It includes generation of SEPA file for European countries.
|
||||||
Module58Name=ClickToDial
|
Module58Name=ClickToDial
|
||||||
@ -1983,7 +1983,7 @@ SmallerThan=Smaller than
|
|||||||
LargerThan=Larger 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.
|
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/.
|
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.
|
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
|
EndPointFor=End point for %s : %s
|
||||||
DeleteEmailCollector=Delete email collector
|
DeleteEmailCollector=Delete email collector
|
||||||
|
|||||||
@ -63,6 +63,7 @@ ShipmentClassifyClosedInDolibarr=Shipment %s classified billed
|
|||||||
ShipmentUnClassifyCloseddInDolibarr=Shipment %s classified re-open
|
ShipmentUnClassifyCloseddInDolibarr=Shipment %s classified re-open
|
||||||
ShipmentBackToDraftInDolibarr=Shipment %s go back to draft status
|
ShipmentBackToDraftInDolibarr=Shipment %s go back to draft status
|
||||||
ShipmentDeletedInDolibarr=Shipment %s deleted
|
ShipmentDeletedInDolibarr=Shipment %s deleted
|
||||||
|
ReceptionValidatedInDolibarr=Reception %s validated
|
||||||
OrderCreatedInDolibarr=Order %s created
|
OrderCreatedInDolibarr=Order %s created
|
||||||
OrderValidatedInDolibarr=Order %s validated
|
OrderValidatedInDolibarr=Order %s validated
|
||||||
OrderDeliveredInDolibarr=Order %s classified delivered
|
OrderDeliveredInDolibarr=Order %s classified delivered
|
||||||
|
|||||||
@ -37,6 +37,7 @@ IbanValid=BAN valid
|
|||||||
IbanNotValid=BAN not valid
|
IbanNotValid=BAN not valid
|
||||||
StandingOrders=Direct debit orders
|
StandingOrders=Direct debit orders
|
||||||
StandingOrder=Direct debit order
|
StandingOrder=Direct debit order
|
||||||
|
PaymentByDirectDebit=Payment by direct debit
|
||||||
PaymentByBankTransfers=Payments by credit transfer
|
PaymentByBankTransfers=Payments by credit transfer
|
||||||
PaymentByBankTransfer=Payment by credit transfer
|
PaymentByBankTransfer=Payment by credit transfer
|
||||||
AccountStatement=Account statement
|
AccountStatement=Account statement
|
||||||
@ -105,8 +106,8 @@ SupplierInvoicePayment=Vendor payment
|
|||||||
SubscriptionPayment=Subscription payment
|
SubscriptionPayment=Subscription payment
|
||||||
WithdrawalPayment=Debit payment order
|
WithdrawalPayment=Debit payment order
|
||||||
SocialContributionPayment=Social/fiscal tax payment
|
SocialContributionPayment=Social/fiscal tax payment
|
||||||
BankTransfer=Bank transfer
|
BankTransfer=Credit transfer
|
||||||
BankTransfers=Bank transfers
|
BankTransfers=Credit transfers
|
||||||
MenuBankInternalTransfer=Internal transfer
|
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)
|
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
|
TransferFrom=From
|
||||||
|
|||||||
@ -441,6 +441,8 @@ BankAccountNumberKey=Checksum
|
|||||||
Residence=Address
|
Residence=Address
|
||||||
IBANNumber=IBAN account number
|
IBANNumber=IBAN account number
|
||||||
IBAN=IBAN
|
IBAN=IBAN
|
||||||
|
CustomerIBAN=IBAN of customer
|
||||||
|
SupplierIBAN=IBAN of vendor
|
||||||
BIC=BIC/SWIFT
|
BIC=BIC/SWIFT
|
||||||
BICNumber=BIC/SWIFT code
|
BICNumber=BIC/SWIFT code
|
||||||
ExtraInfos=Extra infos
|
ExtraInfos=Extra infos
|
||||||
|
|||||||
@ -107,6 +107,13 @@ OrderPrinterToUse=Order printer to use
|
|||||||
MainTemplateToUse=Main template to use
|
MainTemplateToUse=Main template to use
|
||||||
OrderTemplateToUse=Order template to use
|
OrderTemplateToUse=Order template to use
|
||||||
BarRestaurant=Bar Restaurant
|
BarRestaurant=Bar Restaurant
|
||||||
AutoOrder=Customer auto order
|
AutoOrder=Order by the customer himself
|
||||||
RestaurantMenu=Menu
|
RestaurantMenu=Menu
|
||||||
CustomerMenu=Customer 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_BILLING=Billing customer contact
|
||||||
TypeContact_contrat_external_CUSTOMER=Follow-up customer contact
|
TypeContact_contrat_external_CUSTOMER=Follow-up customer contact
|
||||||
TypeContact_contrat_external_SALESREPSIGN=Signing contract 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
|
ErrorSupplierCodeRequired=Vendor code required
|
||||||
ErrorSupplierCodeAlreadyUsed=Vendor code already used
|
ErrorSupplierCodeAlreadyUsed=Vendor code already used
|
||||||
ErrorBadParameters=Bad parameters
|
ErrorBadParameters=Bad parameters
|
||||||
|
ErrorWrongParameters=Wrong or missing parameters
|
||||||
ErrorBadValueForParameter=Wrong value '%s' for parameter '%s'
|
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)
|
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
|
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...
|
ErrorBadValueForCode=Bad value for security code. Try again with new value...
|
||||||
ErrorBothFieldCantBeNegative=Fields %s and %s can't be both negative
|
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.
|
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.
|
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
|
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
|
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
|
ErrorSavingChanges=An error has occurred when saving the changes
|
||||||
ErrorWarehouseRequiredIntoShipmentLine=Warehouse is required on the line to ship
|
ErrorWarehouseRequiredIntoShipmentLine=Warehouse is required on the line to ship
|
||||||
ErrorFileMustHaveFormat=File must have format %s
|
ErrorFileMustHaveFormat=File must have format %s
|
||||||
|
ErrorFilenameCantStartWithDot=Filename can't start with a '.'
|
||||||
ErrorSupplierCountryIsNotDefined=Country for this vendor is not defined. Correct this first.
|
ErrorSupplierCountryIsNotDefined=Country for this vendor is not defined. Correct this first.
|
||||||
ErrorsThirdpartyMerge=Failed to merge the two records. Request canceled.
|
ErrorsThirdpartyMerge=Failed to merge the two records. Request canceled.
|
||||||
ErrorStockIsNotEnoughToAddProductOnOrder=Stock is not enough for product %s to add it into a new order.
|
ErrorStockIsNotEnoughToAddProductOnOrder=Stock is not enough for product %s to add it into a new order.
|
||||||
|
|||||||
@ -15,6 +15,7 @@ CancelCP=Canceled
|
|||||||
RefuseCP=Refused
|
RefuseCP=Refused
|
||||||
ValidatorCP=Approbator
|
ValidatorCP=Approbator
|
||||||
ListeCP=List of leave
|
ListeCP=List of leave
|
||||||
|
Leave=Leave request
|
||||||
LeaveId=Leave ID
|
LeaveId=Leave ID
|
||||||
ReviewedByCP=Will be approved by
|
ReviewedByCP=Will be approved by
|
||||||
UserID=User ID
|
UserID=User ID
|
||||||
|
|||||||
@ -23,6 +23,9 @@ AddLoan=Create loan
|
|||||||
FinancialCommitment=Financial commitment
|
FinancialCommitment=Financial commitment
|
||||||
InterestAmount=Interest
|
InterestAmount=Interest
|
||||||
CapitalRemain=Capital remain
|
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
|
# Admin
|
||||||
ConfigLoan=Configuration of the module loan
|
ConfigLoan=Configuration of the module loan
|
||||||
LOAN_ACCOUNTING_ACCOUNT_CAPITAL=Accounting account capital by default
|
LOAN_ACCOUNTING_ACCOUNT_CAPITAL=Accounting account capital by default
|
||||||
|
|||||||
@ -7,7 +7,7 @@ ProjectsArea=Projects Area
|
|||||||
ProjectStatus=Project status
|
ProjectStatus=Project status
|
||||||
SharedProject=Everybody
|
SharedProject=Everybody
|
||||||
PrivateProject=Project contacts
|
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)
|
AllAllowedProjects=All project I can read (mine + public)
|
||||||
AllProjects=All projects
|
AllProjects=All projects
|
||||||
MyProjectsDesc=This view is limited to projects you are a contact for
|
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
|
ProposalCustomerSignature=Written acceptance, company stamp, date and signature
|
||||||
ProposalsStatisticsSuppliers=Vendor proposals statistics
|
ProposalsStatisticsSuppliers=Vendor proposals statistics
|
||||||
CaseFollowedBy=Case followed by
|
CaseFollowedBy=Case followed by
|
||||||
|
SignedOnly=Signed only
|
||||||
|
|||||||
@ -56,16 +56,15 @@ DOL_UNDERLINE=Enable underline
|
|||||||
DOL_UNDERLINE_DISABLED=Disable underline
|
DOL_UNDERLINE_DISABLED=Disable underline
|
||||||
DOL_BEEP=Beed sound
|
DOL_BEEP=Beed sound
|
||||||
DOL_PRINT_TEXT=Print text
|
DOL_PRINT_TEXT=Print text
|
||||||
DOL_VALUE_DATE=Invoice date
|
DateInvoiceWithTime=Invoice date and time
|
||||||
DOL_VALUE_DATE_TIME=Invoice date and time
|
YearInvoice=Invoice year
|
||||||
DOL_VALUE_YEAR=Invoice year
|
|
||||||
DOL_VALUE_MONTH_LETTERS=Invoice month in letters
|
DOL_VALUE_MONTH_LETTERS=Invoice month in letters
|
||||||
DOL_VALUE_MONTH=Invoice month
|
DOL_VALUE_MONTH=Invoice month
|
||||||
DOL_VALUE_DAY=Invoice day
|
DOL_VALUE_DAY=Invoice day
|
||||||
DOL_VALUE_DAY_LETTERS=Inovice day in letters
|
DOL_VALUE_DAY_LETTERS=Inovice day in letters
|
||||||
DOL_LINE_FEED_REVERSE=Line feed reverse
|
DOL_LINE_FEED_REVERSE=Line feed reverse
|
||||||
DOL_VALUE_OBJECT_ID=Invoice ID
|
InvoiceID=Invoice ID
|
||||||
DOL_VALUE_OBJECT_REF=Invoice ref
|
InvoiceRef=Invoice ref
|
||||||
DOL_PRINT_OBJECT_LINES=Invoice lines
|
DOL_PRINT_OBJECT_LINES=Invoice lines
|
||||||
DOL_VALUE_CUSTOMER_FIRSTNAME=Customer first name
|
DOL_VALUE_CUSTOMER_FIRSTNAME=Customer first name
|
||||||
DOL_VALUE_CUSTOMER_LASTNAME=Customer last 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_TAX_NUMBER=Customer tax number
|
||||||
DOL_VALUE_CUSTOMER_ACCOUNT_BALANCE=Customer account balance
|
DOL_VALUE_CUSTOMER_ACCOUNT_BALANCE=Customer account balance
|
||||||
DOL_VALUE_MYSOC_NAME=Your company name
|
DOL_VALUE_MYSOC_NAME=Your company name
|
||||||
DOL_VALUE_MYSOC_ADDRESS=Your company address
|
VendorLastname=Vendor last name
|
||||||
DOL_VALUE_MYSOC_ZIP=Your zip code
|
VendorFirstname=Vendor first name
|
||||||
DOL_VALUE_MYSOC_TOWN=Your town
|
VendorEmail=Vendor email
|
||||||
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
|
|
||||||
DOL_VALUE_CUSTOMER_POINTS=Customer points
|
DOL_VALUE_CUSTOMER_POINTS=Customer points
|
||||||
DOL_VALUE_OBJECT_POINTS=Object points
|
DOL_VALUE_OBJECT_POINTS=Object points
|
||||||
|
|||||||
@ -17,6 +17,10 @@ CancelSending=Cancel sending
|
|||||||
DeleteSending=Delete sending
|
DeleteSending=Delete sending
|
||||||
Stock=Stock
|
Stock=Stock
|
||||||
Stocks=Stocks
|
Stocks=Stocks
|
||||||
|
MissingStocks=Missing stocks
|
||||||
|
StockAtDate=Stock at date
|
||||||
|
StockAtDateInPast=Date in past
|
||||||
|
StockAtDateInFuture=Date in future
|
||||||
StocksByLotSerial=Stocks by lot/serial
|
StocksByLotSerial=Stocks by lot/serial
|
||||||
LotSerial=Lots/Serials
|
LotSerial=Lots/Serials
|
||||||
LotSerialList=List of lot/serials
|
LotSerialList=List of lot/serials
|
||||||
@ -30,6 +34,7 @@ StockMovementForId=Movement ID %d
|
|||||||
ListMouvementStockProject=List of stock movements associated to project
|
ListMouvementStockProject=List of stock movements associated to project
|
||||||
StocksArea=Warehouses area
|
StocksArea=Warehouses area
|
||||||
AllWarehouses=All warehouses
|
AllWarehouses=All warehouses
|
||||||
|
IncludeEmptyDesiredStock=Include also undefined desired stock
|
||||||
IncludeAlsoDraftOrders=Include also draft orders
|
IncludeAlsoDraftOrders=Include also draft orders
|
||||||
Location=Location
|
Location=Location
|
||||||
LocationSummary=Short name location
|
LocationSummary=Short name location
|
||||||
@ -59,10 +64,9 @@ AllowAddLimitStockByWarehouse=Manage also value for minimum and desired stock pe
|
|||||||
RuleForWarehouse=Rule for warehouses
|
RuleForWarehouse=Rule for warehouses
|
||||||
WarehouseAskWarehouseDuringOrder=Set a warehouse on Sale orders
|
WarehouseAskWarehouseDuringOrder=Set a warehouse on Sale orders
|
||||||
UserDefaultWarehouse=Set a warehouse on Users
|
UserDefaultWarehouse=Set a warehouse on Users
|
||||||
DefaultWarehouseActive=Default warehouse active
|
|
||||||
MainDefaultWarehouse=Default warehouse
|
MainDefaultWarehouse=Default warehouse
|
||||||
MainDefaultWarehouseUser=Use user warehouse asign default
|
MainDefaultWarehouseUser=Use a default warehouse for each user
|
||||||
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.
|
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
|
IndependantSubProductStock=Product stock and subproduct stock are independent
|
||||||
QtyDispatched=Quantity dispatched
|
QtyDispatched=Quantity dispatched
|
||||||
QtyDispatchedShort=Qty dispatched
|
QtyDispatchedShort=Qty dispatched
|
||||||
@ -126,6 +130,7 @@ CurentlyUsingPhysicalStock=Physical stock
|
|||||||
RuleForStockReplenishment=Rule for stocks replenishment
|
RuleForStockReplenishment=Rule for stocks replenishment
|
||||||
SelectProductWithNotNullQty=Select at least one product with a qty not null and a vendor
|
SelectProductWithNotNullQty=Select at least one product with a qty not null and a vendor
|
||||||
AlertOnly= Alerts only
|
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
|
WarehouseForStockDecrease=The warehouse <b>%s</b> will be used for stock decrease
|
||||||
WarehouseForStockIncrease=The warehouse <b>%s</b> will be used for stock increase
|
WarehouseForStockIncrease=The warehouse <b>%s</b> will be used for stock increase
|
||||||
ForThisWarehouse=For this warehouse
|
ForThisWarehouse=For this warehouse
|
||||||
@ -227,3 +232,6 @@ InventoryForASpecificProduct=Inventory for a specific product
|
|||||||
StockIsRequiredToChooseWhichLotToUse=Stock is required to choose which lot to use
|
StockIsRequiredToChooseWhichLotToUse=Stock is required to choose which lot to use
|
||||||
ForceTo=Force to
|
ForceTo=Force to
|
||||||
AlwaysShowFullArbo=Display full tree of warehouse on popup of warehouse links (Warning: This may decrease dramatically performances)
|
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
|
YouCanCreatePageOrImportTemplate=You can create a new page or import a full website template
|
||||||
SyntaxHelp=Help on specific syntax tips
|
SyntaxHelp=Help on specific syntax tips
|
||||||
YouCanEditHtmlSourceckeditor=You can edit HTML source code using the "Source" button in editor.
|
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
|
ClonePage=Clone page/container
|
||||||
CloneSite=Clone site
|
CloneSite=Clone site
|
||||||
SiteAdded=Website added
|
SiteAdded=Website added
|
||||||
|
|||||||
@ -10,8 +10,8 @@ PaymentByBankTransferReceipts=Credit transfer orders
|
|||||||
PaymentByBankTransferLines=Credit transfer order lines
|
PaymentByBankTransferLines=Credit transfer order lines
|
||||||
WithdrawalsReceipts=Direct debit orders
|
WithdrawalsReceipts=Direct debit orders
|
||||||
WithdrawalReceipt=Direct debit order
|
WithdrawalReceipt=Direct debit order
|
||||||
BankTransferReceipts=Credit transfer receipts
|
BankTransferReceipts=Credit transfer order
|
||||||
BankTransferReceipt=Credit transfer receipt
|
BankTransferReceipt=Credit transfer order
|
||||||
LatestBankTransferReceipts=Latest %s credit transfer orders
|
LatestBankTransferReceipts=Latest %s credit transfer orders
|
||||||
LastWithdrawalReceipts=Latest %s direct debit files
|
LastWithdrawalReceipts=Latest %s direct debit files
|
||||||
WithdrawalsLine=Direct debit order line
|
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.
|
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
|
ResponsibleUser=User Responsible
|
||||||
WithdrawalsSetup=Direct debit payment setup
|
WithdrawalsSetup=Direct debit payment setup
|
||||||
CreditTransferSetup=Crebit transfer setup
|
CreditTransferSetup=Credit transfer setup
|
||||||
WithdrawStatistics=Direct debit payment statistics
|
WithdrawStatistics=Direct debit payment statistics
|
||||||
CreditTransferStatistics=Credit transfer statistics
|
CreditTransferStatistics=Credit transfer statistics
|
||||||
Rejects=Rejects
|
Rejects=Rejects
|
||||||
LastWithdrawalReceipt=Latest %s direct debit receipts
|
LastWithdrawalReceipt=Latest %s direct debit receipts
|
||||||
MakeWithdrawRequest=Make a direct debit payment request
|
MakeWithdrawRequest=Make a direct debit payment request
|
||||||
|
MakeBankTransferOrder=Make a credit transfer request
|
||||||
WithdrawRequestsDone=%s direct debit payment requests recorded
|
WithdrawRequestsDone=%s direct debit payment requests recorded
|
||||||
ThirdPartyBankCode=Third-party bank code
|
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>.
|
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)
|
WithdrawalFileNotCapable=Unable to generate withdrawal receipt file for your country %s (Your country is not supported)
|
||||||
ShowWithdraw=Show Direct Debit Order
|
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.
|
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
|
WithdrawalFile=Withdrawal file
|
||||||
SetToStatusSent=Set to status "File Sent"
|
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
|
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.
|
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)
|
WithdrawMode=Direct debit mode (FRST or RECUR)
|
||||||
WithdrawRequestAmount=Amount of Direct debit request:
|
WithdrawRequestAmount=Amount of Direct debit request:
|
||||||
|
BankTransferAmount=Amount of Credit Transfer request:
|
||||||
WithdrawRequestErrorNilAmount=Unable to create direct debit request for empty amount.
|
WithdrawRequestErrorNilAmount=Unable to create direct debit request for empty amount.
|
||||||
SepaMandate=SEPA Direct Debit Mandate
|
SepaMandate=SEPA Direct Debit Mandate
|
||||||
SepaMandateShort=SEPA Mandate
|
SepaMandateShort=SEPA Mandate
|
||||||
@ -128,7 +131,7 @@ ICS=Creditor Identifier CI
|
|||||||
END_TO_END="EndToEndId" SEPA XML tag - Unique id assigned per transaction
|
END_TO_END="EndToEndId" SEPA XML tag - Unique id assigned per transaction
|
||||||
USTRD="Unstructured" SEPA XML tag
|
USTRD="Unstructured" SEPA XML tag
|
||||||
ADDDAYS=Add days to Execution Date
|
ADDDAYS=Add days to Execution Date
|
||||||
|
NoDefaultIBANFound=No default IBAN found for this third party
|
||||||
### Notifications
|
### Notifications
|
||||||
InfoCreditSubject=Payment of direct debit payment order %s by the bank
|
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
|
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
|
Module55Name=Barcodes
|
||||||
Module55Desc=Barcodes إدارة
|
Module55Desc=Barcodes إدارة
|
||||||
Module56Name=Payment by credit transfer
|
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
|
Module57Name=Bank Direct Debit payments
|
||||||
Module57Desc=Management of Direct Debit payment orders. It includes generation of SEPA file for European countries.
|
Module57Desc=Management of Direct Debit payment orders. It includes generation of SEPA file for European countries.
|
||||||
Module58Name=انقر للاتصال
|
Module58Name=انقر للاتصال
|
||||||
@ -1983,7 +1983,7 @@ SmallerThan=Smaller than
|
|||||||
LargerThan=Larger 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.
|
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/.
|
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.
|
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
|
EndPointFor=End point for %s : %s
|
||||||
DeleteEmailCollector=Delete email collector
|
DeleteEmailCollector=Delete email collector
|
||||||
|
|||||||
@ -63,6 +63,7 @@ ShipmentClassifyClosedInDolibarr=الشحنة %sتم تصنيفها مدفوعة
|
|||||||
ShipmentUnClassifyCloseddInDolibarr=Shipment %s classified re-open
|
ShipmentUnClassifyCloseddInDolibarr=Shipment %s classified re-open
|
||||||
ShipmentBackToDraftInDolibarr=Shipment %s go back to draft status
|
ShipmentBackToDraftInDolibarr=Shipment %s go back to draft status
|
||||||
ShipmentDeletedInDolibarr=الشحنة%sتم حذفها
|
ShipmentDeletedInDolibarr=الشحنة%sتم حذفها
|
||||||
|
ReceptionValidatedInDolibarr=Reception %s validated
|
||||||
OrderCreatedInDolibarr=الطلب %s تم إنشاؤة
|
OrderCreatedInDolibarr=الطلب %s تم إنشاؤة
|
||||||
OrderValidatedInDolibarr=الطلب %s تم التحقق منه
|
OrderValidatedInDolibarr=الطلب %s تم التحقق منه
|
||||||
OrderDeliveredInDolibarr=الطلب %s مصنف تم التوصيل
|
OrderDeliveredInDolibarr=الطلب %s مصنف تم التوصيل
|
||||||
|
|||||||
@ -37,6 +37,7 @@ IbanValid=بان صالحة
|
|||||||
IbanNotValid=بان غير صالح
|
IbanNotValid=بان غير صالح
|
||||||
StandingOrders=Direct debit orders
|
StandingOrders=Direct debit orders
|
||||||
StandingOrder=أمر الخصم المباشر
|
StandingOrder=أمر الخصم المباشر
|
||||||
|
PaymentByDirectDebit=Payment by direct debit
|
||||||
PaymentByBankTransfers=Payments by credit transfer
|
PaymentByBankTransfers=Payments by credit transfer
|
||||||
PaymentByBankTransfer=Payment by credit transfer
|
PaymentByBankTransfer=Payment by credit transfer
|
||||||
AccountStatement=كشف الحساب
|
AccountStatement=كشف الحساب
|
||||||
@ -105,8 +106,8 @@ SupplierInvoicePayment=Vendor payment
|
|||||||
SubscriptionPayment=دفع الاشتراك
|
SubscriptionPayment=دفع الاشتراك
|
||||||
WithdrawalPayment=Debit payment order
|
WithdrawalPayment=Debit payment order
|
||||||
SocialContributionPayment=مدفوعات الضرائب الاجتماعية / المالية
|
SocialContributionPayment=مدفوعات الضرائب الاجتماعية / المالية
|
||||||
BankTransfer=حوالة مصرفية
|
BankTransfer=Credit transfer
|
||||||
BankTransfers=حوالات المصرفية
|
BankTransfers=Credit transfers
|
||||||
MenuBankInternalTransfer=حوالة داخلية
|
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)
|
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=من
|
TransferFrom=من
|
||||||
|
|||||||
@ -441,6 +441,8 @@ BankAccountNumberKey=Checksum
|
|||||||
Residence=عنوان
|
Residence=عنوان
|
||||||
IBANNumber=IBAN account number
|
IBANNumber=IBAN account number
|
||||||
IBAN=إيبان
|
IBAN=إيبان
|
||||||
|
CustomerIBAN=IBAN of customer
|
||||||
|
SupplierIBAN=IBAN of vendor
|
||||||
BIC=بيك / سويفت
|
BIC=بيك / سويفت
|
||||||
BICNumber=BIC/SWIFT code
|
BICNumber=BIC/SWIFT code
|
||||||
ExtraInfos=معلومات اضافية
|
ExtraInfos=معلومات اضافية
|
||||||
|
|||||||
@ -107,6 +107,13 @@ OrderPrinterToUse=Order printer to use
|
|||||||
MainTemplateToUse=Main template to use
|
MainTemplateToUse=Main template to use
|
||||||
OrderTemplateToUse=Order template to use
|
OrderTemplateToUse=Order template to use
|
||||||
BarRestaurant=Bar Restaurant
|
BarRestaurant=Bar Restaurant
|
||||||
AutoOrder=Customer auto order
|
AutoOrder=Order by the customer himself
|
||||||
RestaurantMenu=Menu
|
RestaurantMenu=Menu
|
||||||
CustomerMenu=Customer 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_BILLING=فواتير العملاء الاتصال
|
||||||
TypeContact_contrat_external_CUSTOMER=متابعة العملاء الاتصال
|
TypeContact_contrat_external_CUSTOMER=متابعة العملاء الاتصال
|
||||||
TypeContact_contrat_external_SALESREPSIGN=توقيع عقد خدمات العملاء
|
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
|
ErrorSupplierCodeRequired=Vendor code required
|
||||||
ErrorSupplierCodeAlreadyUsed=Vendor code already used
|
ErrorSupplierCodeAlreadyUsed=Vendor code already used
|
||||||
ErrorBadParameters=بارامترات سيئة
|
ErrorBadParameters=بارامترات سيئة
|
||||||
|
ErrorWrongParameters=Wrong or missing parameters
|
||||||
ErrorBadValueForParameter=Wrong value '%s' for parameter '%s'
|
ErrorBadValueForParameter=Wrong value '%s' for parameter '%s'
|
||||||
ErrorBadImageFormat=ملف الصورة لم تنسيق معتمد (PHP لديك لا يدعم وظائف لتحويل الصور من هذا الشكل)
|
ErrorBadImageFormat=ملف الصورة لم تنسيق معتمد (PHP لديك لا يدعم وظائف لتحويل الصور من هذا الشكل)
|
||||||
ErrorBadDateFormat='%s' قيمة له خاطئ تنسيق التاريخ
|
ErrorBadDateFormat='%s' قيمة له خاطئ تنسيق التاريخ
|
||||||
@ -119,7 +120,7 @@ ErrorLoginHasNoEmail=هذا المستخدم ليس لديه عنوان البر
|
|||||||
ErrorBadValueForCode=سيئة قيمة لرمز الحماية. حاول مرة أخرى مع القيمة الجديدة ...
|
ErrorBadValueForCode=سيئة قيمة لرمز الحماية. حاول مرة أخرى مع القيمة الجديدة ...
|
||||||
ErrorBothFieldCantBeNegative=ويمكن لحقول %s و%s لا تكون سلبية
|
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.
|
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.
|
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=كمية لخط في فواتير العملاء لا يمكن أن يكون سلبيا
|
ErrorQtyForCustomerInvoiceCantBeNegative=كمية لخط في فواتير العملاء لا يمكن أن يكون سلبيا
|
||||||
ErrorWebServerUserHasNotPermission=<b>%s</b> تستخدم حساب مستخدم لتنفيذ خادم الويب لا يوجد لديه إذن لذلك
|
ErrorWebServerUserHasNotPermission=<b>%s</b> تستخدم حساب مستخدم لتنفيذ خادم الويب لا يوجد لديه إذن لذلك
|
||||||
@ -183,6 +184,7 @@ ErrorBadDefinitionOfMenuArrayInModuleDescriptor=سيئة تعريف القائم
|
|||||||
ErrorSavingChanges=An error has occurred when saving the changes
|
ErrorSavingChanges=An error has occurred when saving the changes
|
||||||
ErrorWarehouseRequiredIntoShipmentLine=Warehouse is required on the line to ship
|
ErrorWarehouseRequiredIntoShipmentLine=Warehouse is required on the line to ship
|
||||||
ErrorFileMustHaveFormat=File must have format %s
|
ErrorFileMustHaveFormat=File must have format %s
|
||||||
|
ErrorFilenameCantStartWithDot=Filename can't start with a '.'
|
||||||
ErrorSupplierCountryIsNotDefined=Country for this vendor is not defined. Correct this first.
|
ErrorSupplierCountryIsNotDefined=Country for this vendor is not defined. Correct this first.
|
||||||
ErrorsThirdpartyMerge=Failed to merge the two records. Request canceled.
|
ErrorsThirdpartyMerge=Failed to merge the two records. Request canceled.
|
||||||
ErrorStockIsNotEnoughToAddProductOnOrder=Stock is not enough for product %s to add it into a new order.
|
ErrorStockIsNotEnoughToAddProductOnOrder=Stock is not enough for product %s to add it into a new order.
|
||||||
|
|||||||
@ -15,6 +15,7 @@ CancelCP=ألغيت
|
|||||||
RefuseCP=رفض
|
RefuseCP=رفض
|
||||||
ValidatorCP=Approbator
|
ValidatorCP=Approbator
|
||||||
ListeCP=List of leave
|
ListeCP=List of leave
|
||||||
|
Leave=ترك الطلب
|
||||||
LeaveId=Leave ID
|
LeaveId=Leave ID
|
||||||
ReviewedByCP=سيتم مراجعتها من قبل
|
ReviewedByCP=سيتم مراجعتها من قبل
|
||||||
UserID=User ID
|
UserID=User ID
|
||||||
|
|||||||
@ -23,6 +23,9 @@ AddLoan=Create loan
|
|||||||
FinancialCommitment=Financial commitment
|
FinancialCommitment=Financial commitment
|
||||||
InterestAmount=اهتمام
|
InterestAmount=اهتمام
|
||||||
CapitalRemain=Capital remain
|
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
|
# Admin
|
||||||
ConfigLoan=التكوين للقرض وحدة
|
ConfigLoan=التكوين للقرض وحدة
|
||||||
LOAN_ACCOUNTING_ACCOUNT_CAPITAL=Accounting account capital by default
|
LOAN_ACCOUNTING_ACCOUNT_CAPITAL=Accounting account capital by default
|
||||||
|
|||||||
@ -7,7 +7,7 @@ ProjectsArea=Projects Area
|
|||||||
ProjectStatus=حالة المشروع
|
ProjectStatus=حالة المشروع
|
||||||
SharedProject=مشاريع مشتركة
|
SharedProject=مشاريع مشتركة
|
||||||
PrivateProject=مشروع اتصالات
|
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)
|
AllAllowedProjects=All project I can read (mine + public)
|
||||||
AllProjects=جميع المشاريع
|
AllProjects=جميع المشاريع
|
||||||
MyProjectsDesc=This view is limited to projects you are a contact for
|
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_CUSTOMER=اتصل العملاء اقتراح متابعة
|
||||||
TypeContact_propal_external_SHIPPING=Customer contact for delivery
|
TypeContact_propal_external_SHIPPING=Customer contact for delivery
|
||||||
# Document models
|
# Document models
|
||||||
DocModelAzurDescription=A complete proposal model
|
DocModelAzurDescription=A complete proposal model (old implementation of Cyan template)
|
||||||
DocModelCyanDescription=A complete proposal model
|
DocModelCyanDescription=A complete proposal model
|
||||||
DefaultModelPropalCreate=إنشاء نموذج افتراضي
|
DefaultModelPropalCreate=إنشاء نموذج افتراضي
|
||||||
DefaultModelPropalToBill=القالب الافتراضي عند إغلاق الأعمال المقترح (أن الفاتورة)
|
DefaultModelPropalToBill=القالب الافتراضي عند إغلاق الأعمال المقترح (أن الفاتورة)
|
||||||
@ -84,3 +84,4 @@ DefaultModelPropalClosed=القالب الافتراضي عند إغلاق ال
|
|||||||
ProposalCustomerSignature=قبول كتابي، ختم الشركة والتاريخ والتوقيع
|
ProposalCustomerSignature=قبول كتابي، ختم الشركة والتاريخ والتوقيع
|
||||||
ProposalsStatisticsSuppliers=Vendor proposals statistics
|
ProposalsStatisticsSuppliers=Vendor proposals statistics
|
||||||
CaseFollowedBy=Case followed by
|
CaseFollowedBy=Case followed by
|
||||||
|
SignedOnly=Signed only
|
||||||
|
|||||||
@ -56,16 +56,15 @@ DOL_UNDERLINE=Enable underline
|
|||||||
DOL_UNDERLINE_DISABLED=Disable underline
|
DOL_UNDERLINE_DISABLED=Disable underline
|
||||||
DOL_BEEP=Beed sound
|
DOL_BEEP=Beed sound
|
||||||
DOL_PRINT_TEXT=Print text
|
DOL_PRINT_TEXT=Print text
|
||||||
DOL_VALUE_DATE=تاريخ الفاتورة
|
DateInvoiceWithTime=Invoice date and time
|
||||||
DOL_VALUE_DATE_TIME=Invoice date and time
|
YearInvoice=Invoice year
|
||||||
DOL_VALUE_YEAR=Invoice year
|
|
||||||
DOL_VALUE_MONTH_LETTERS=Invoice month in letters
|
DOL_VALUE_MONTH_LETTERS=Invoice month in letters
|
||||||
DOL_VALUE_MONTH=Invoice month
|
DOL_VALUE_MONTH=Invoice month
|
||||||
DOL_VALUE_DAY=Invoice day
|
DOL_VALUE_DAY=Invoice day
|
||||||
DOL_VALUE_DAY_LETTERS=Inovice day in letters
|
DOL_VALUE_DAY_LETTERS=Inovice day in letters
|
||||||
DOL_LINE_FEED_REVERSE=Line feed reverse
|
DOL_LINE_FEED_REVERSE=Line feed reverse
|
||||||
DOL_VALUE_OBJECT_ID=Invoice ID
|
InvoiceID=Invoice ID
|
||||||
DOL_VALUE_OBJECT_REF=فاتورة المرجع
|
InvoiceRef=فاتورة المرجع
|
||||||
DOL_PRINT_OBJECT_LINES=Invoice lines
|
DOL_PRINT_OBJECT_LINES=Invoice lines
|
||||||
DOL_VALUE_CUSTOMER_FIRSTNAME=Customer first name
|
DOL_VALUE_CUSTOMER_FIRSTNAME=Customer first name
|
||||||
DOL_VALUE_CUSTOMER_LASTNAME=Customer last 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_TAX_NUMBER=Customer tax number
|
||||||
DOL_VALUE_CUSTOMER_ACCOUNT_BALANCE=Customer account balance
|
DOL_VALUE_CUSTOMER_ACCOUNT_BALANCE=Customer account balance
|
||||||
DOL_VALUE_MYSOC_NAME=Your company name
|
DOL_VALUE_MYSOC_NAME=Your company name
|
||||||
DOL_VALUE_MYSOC_ADDRESS=Your company address
|
VendorLastname=Vendor last name
|
||||||
DOL_VALUE_MYSOC_ZIP=Your zip code
|
VendorFirstname=Vendor first name
|
||||||
DOL_VALUE_MYSOC_TOWN=Your town
|
VendorEmail=Vendor email
|
||||||
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
|
|
||||||
DOL_VALUE_CUSTOMER_POINTS=Customer points
|
DOL_VALUE_CUSTOMER_POINTS=Customer points
|
||||||
DOL_VALUE_OBJECT_POINTS=Object points
|
DOL_VALUE_OBJECT_POINTS=Object points
|
||||||
|
|||||||
@ -17,6 +17,10 @@ CancelSending=الغاء ارسال
|
|||||||
DeleteSending=حذف ارسال
|
DeleteSending=حذف ارسال
|
||||||
Stock=الأسهم
|
Stock=الأسهم
|
||||||
Stocks=الاسهم
|
Stocks=الاسهم
|
||||||
|
MissingStocks=Missing stocks
|
||||||
|
StockAtDate=Stock at date
|
||||||
|
StockAtDateInPast=Date in past
|
||||||
|
StockAtDateInFuture=Date in future
|
||||||
StocksByLotSerial=الأسهم عن طريق القرعة / المسلسل
|
StocksByLotSerial=الأسهم عن طريق القرعة / المسلسل
|
||||||
LotSerial=Lots/Serials
|
LotSerial=Lots/Serials
|
||||||
LotSerialList=List of lot/serials
|
LotSerialList=List of lot/serials
|
||||||
@ -30,6 +34,7 @@ StockMovementForId=Movement ID %d
|
|||||||
ListMouvementStockProject=List of stock movements associated to project
|
ListMouvementStockProject=List of stock movements associated to project
|
||||||
StocksArea=منطقة المستودعات
|
StocksArea=منطقة المستودعات
|
||||||
AllWarehouses=All warehouses
|
AllWarehouses=All warehouses
|
||||||
|
IncludeEmptyDesiredStock=Include also undefined desired stock
|
||||||
IncludeAlsoDraftOrders=Include also draft orders
|
IncludeAlsoDraftOrders=Include also draft orders
|
||||||
Location=عوضا عن
|
Location=عوضا عن
|
||||||
LocationSummary=باختصار اسم الموقع
|
LocationSummary=باختصار اسم الموقع
|
||||||
@ -59,10 +64,9 @@ AllowAddLimitStockByWarehouse=Manage also value for minimum and desired stock pe
|
|||||||
RuleForWarehouse=Rule for warehouses
|
RuleForWarehouse=Rule for warehouses
|
||||||
WarehouseAskWarehouseDuringOrder=Set a warehouse on Sale orders
|
WarehouseAskWarehouseDuringOrder=Set a warehouse on Sale orders
|
||||||
UserDefaultWarehouse=Set a warehouse on Users
|
UserDefaultWarehouse=Set a warehouse on Users
|
||||||
DefaultWarehouseActive=Default warehouse active
|
|
||||||
MainDefaultWarehouse=Default warehouse
|
MainDefaultWarehouse=Default warehouse
|
||||||
MainDefaultWarehouseUser=Use user warehouse asign default
|
MainDefaultWarehouseUser=Use a default warehouse for each user
|
||||||
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.
|
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
|
IndependantSubProductStock=Product stock and subproduct stock are independent
|
||||||
QtyDispatched=ارسال كمية
|
QtyDispatched=ارسال كمية
|
||||||
QtyDispatchedShort=أرسل الكمية
|
QtyDispatchedShort=أرسل الكمية
|
||||||
@ -126,6 +130,7 @@ CurentlyUsingPhysicalStock=المخزون المادي
|
|||||||
RuleForStockReplenishment=حكم شراء أسهم التجديد
|
RuleForStockReplenishment=حكم شراء أسهم التجديد
|
||||||
SelectProductWithNotNullQty=Select at least one product with a qty not null and a vendor
|
SelectProductWithNotNullQty=Select at least one product with a qty not null and a vendor
|
||||||
AlertOnly= التنبيهات فقط
|
AlertOnly= التنبيهات فقط
|
||||||
|
IncludeProductWithUndefinedAlerts = Include also negative stock for products with no desired quantity defined, to restore them to 0
|
||||||
WarehouseForStockDecrease=سيتم استخدام <b>مستودع٪ الصورة</b> لانخفاض الأسهم
|
WarehouseForStockDecrease=سيتم استخدام <b>مستودع٪ الصورة</b> لانخفاض الأسهم
|
||||||
WarehouseForStockIncrease=سيتم استخدام <b>مستودع٪ s للزيادة</b> المخزون
|
WarehouseForStockIncrease=سيتم استخدام <b>مستودع٪ s للزيادة</b> المخزون
|
||||||
ForThisWarehouse=لهذا المستودع
|
ForThisWarehouse=لهذا المستودع
|
||||||
@ -227,3 +232,6 @@ InventoryForASpecificProduct=Inventory for a specific product
|
|||||||
StockIsRequiredToChooseWhichLotToUse=Stock is required to choose which lot to use
|
StockIsRequiredToChooseWhichLotToUse=Stock is required to choose which lot to use
|
||||||
ForceTo=Force to
|
ForceTo=Force to
|
||||||
AlwaysShowFullArbo=Display full tree of warehouse on popup of warehouse links (Warning: This may decrease dramatically performances)
|
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
|
YouCanCreatePageOrImportTemplate=You can create a new page or import a full website template
|
||||||
SyntaxHelp=Help on specific syntax tips
|
SyntaxHelp=Help on specific syntax tips
|
||||||
YouCanEditHtmlSourceckeditor=You can edit HTML source code using the "Source" button in editor.
|
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
|
ClonePage=Clone page/container
|
||||||
CloneSite=Clone site
|
CloneSite=Clone site
|
||||||
SiteAdded=Website added
|
SiteAdded=Website added
|
||||||
|
|||||||
@ -10,8 +10,8 @@ PaymentByBankTransferReceipts=Credit transfer orders
|
|||||||
PaymentByBankTransferLines=Credit transfer order lines
|
PaymentByBankTransferLines=Credit transfer order lines
|
||||||
WithdrawalsReceipts=Direct debit orders
|
WithdrawalsReceipts=Direct debit orders
|
||||||
WithdrawalReceipt=Direct debit order
|
WithdrawalReceipt=Direct debit order
|
||||||
BankTransferReceipts=Credit transfer receipts
|
BankTransferReceipts=Credit transfer order
|
||||||
BankTransferReceipt=Credit transfer receipt
|
BankTransferReceipt=Credit transfer order
|
||||||
LatestBankTransferReceipts=Latest %s credit transfer orders
|
LatestBankTransferReceipts=Latest %s credit transfer orders
|
||||||
LastWithdrawalReceipts=Latest %s direct debit files
|
LastWithdrawalReceipts=Latest %s direct debit files
|
||||||
WithdrawalsLine=Direct debit order line
|
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.
|
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
|
ResponsibleUser=User Responsible
|
||||||
WithdrawalsSetup=Direct debit payment setup
|
WithdrawalsSetup=Direct debit payment setup
|
||||||
CreditTransferSetup=Crebit transfer setup
|
CreditTransferSetup=Credit transfer setup
|
||||||
WithdrawStatistics=Direct debit payment statistics
|
WithdrawStatistics=Direct debit payment statistics
|
||||||
CreditTransferStatistics=Credit transfer statistics
|
CreditTransferStatistics=Credit transfer statistics
|
||||||
Rejects=ترفض
|
Rejects=ترفض
|
||||||
LastWithdrawalReceipt=Latest %s direct debit receipts
|
LastWithdrawalReceipt=Latest %s direct debit receipts
|
||||||
MakeWithdrawRequest=Make a direct debit payment request
|
MakeWithdrawRequest=Make a direct debit payment request
|
||||||
|
MakeBankTransferOrder=Make a credit transfer request
|
||||||
WithdrawRequestsDone=%s direct debit payment requests recorded
|
WithdrawRequestsDone=%s direct debit payment requests recorded
|
||||||
ThirdPartyBankCode=Third-party bank code
|
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>.
|
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=غير قادر على توليد ملف استلام الانسحاب لبلدكم٪ الصورة (لا يتم اعتماد البلد)
|
WithdrawalFileNotCapable=غير قادر على توليد ملف استلام الانسحاب لبلدكم٪ الصورة (لا يتم اعتماد البلد)
|
||||||
ShowWithdraw=Show Direct Debit Order
|
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.
|
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=ملف الانسحاب
|
WithdrawalFile=ملف الانسحاب
|
||||||
SetToStatusSent=تعيين إلى حالة "المرسلة ملف"
|
SetToStatusSent=تعيين إلى حالة "المرسلة ملف"
|
||||||
ThisWillAlsoAddPaymentOnInvoice=This will also record payments on invoices and will classify them as "Paid" if remain to pay is null
|
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.
|
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)
|
WithdrawMode=Direct debit mode (FRST or RECUR)
|
||||||
WithdrawRequestAmount=Amount of Direct debit request:
|
WithdrawRequestAmount=Amount of Direct debit request:
|
||||||
|
BankTransferAmount=Amount of Credit Transfer request:
|
||||||
WithdrawRequestErrorNilAmount=Unable to create direct debit request for empty amount.
|
WithdrawRequestErrorNilAmount=Unable to create direct debit request for empty amount.
|
||||||
SepaMandate=SEPA Direct Debit Mandate
|
SepaMandate=SEPA Direct Debit Mandate
|
||||||
SepaMandateShort=SEPA Mandate
|
SepaMandateShort=SEPA Mandate
|
||||||
@ -128,7 +131,7 @@ ICS=Creditor Identifier CI
|
|||||||
END_TO_END="EndToEndId" SEPA XML tag - Unique id assigned per transaction
|
END_TO_END="EndToEndId" SEPA XML tag - Unique id assigned per transaction
|
||||||
USTRD="Unstructured" SEPA XML tag
|
USTRD="Unstructured" SEPA XML tag
|
||||||
ADDDAYS=Add days to Execution Date
|
ADDDAYS=Add days to Execution Date
|
||||||
|
NoDefaultIBANFound=No default IBAN found for this third party
|
||||||
### Notifications
|
### Notifications
|
||||||
InfoCreditSubject=Payment of direct debit payment order %s by the bank
|
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
|
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
|
Module55Name=Barcodes
|
||||||
Module55Desc=Barcode management
|
Module55Desc=Barcode management
|
||||||
Module56Name=Payment by credit transfer
|
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
|
Module57Name=Bank Direct Debit payments
|
||||||
Module57Desc=Management of Direct Debit payment orders. It includes generation of SEPA file for European countries.
|
Module57Desc=Management of Direct Debit payment orders. It includes generation of SEPA file for European countries.
|
||||||
Module58Name=ClickToDial
|
Module58Name=ClickToDial
|
||||||
@ -1983,7 +1983,7 @@ SmallerThan=Smaller than
|
|||||||
LargerThan=Larger 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.
|
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/.
|
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.
|
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
|
EndPointFor=End point for %s : %s
|
||||||
DeleteEmailCollector=Delete email collector
|
DeleteEmailCollector=Delete email collector
|
||||||
|
|||||||
@ -63,6 +63,7 @@ ShipmentClassifyClosedInDolibarr=Shipment %s classified billed
|
|||||||
ShipmentUnClassifyCloseddInDolibarr=Shipment %s classified re-open
|
ShipmentUnClassifyCloseddInDolibarr=Shipment %s classified re-open
|
||||||
ShipmentBackToDraftInDolibarr=Shipment %s go back to draft status
|
ShipmentBackToDraftInDolibarr=Shipment %s go back to draft status
|
||||||
ShipmentDeletedInDolibarr=Shipment %s deleted
|
ShipmentDeletedInDolibarr=Shipment %s deleted
|
||||||
|
ReceptionValidatedInDolibarr=Reception %s validated
|
||||||
OrderCreatedInDolibarr=Order %s created
|
OrderCreatedInDolibarr=Order %s created
|
||||||
OrderValidatedInDolibarr=Order %s validated
|
OrderValidatedInDolibarr=Order %s validated
|
||||||
OrderDeliveredInDolibarr=Order %s classified delivered
|
OrderDeliveredInDolibarr=Order %s classified delivered
|
||||||
|
|||||||
@ -37,6 +37,7 @@ IbanValid=BAN valid
|
|||||||
IbanNotValid=BAN not valid
|
IbanNotValid=BAN not valid
|
||||||
StandingOrders=Direct debit orders
|
StandingOrders=Direct debit orders
|
||||||
StandingOrder=Direct debit order
|
StandingOrder=Direct debit order
|
||||||
|
PaymentByDirectDebit=Payment by direct debit
|
||||||
PaymentByBankTransfers=Payments by credit transfer
|
PaymentByBankTransfers=Payments by credit transfer
|
||||||
PaymentByBankTransfer=Payment by credit transfer
|
PaymentByBankTransfer=Payment by credit transfer
|
||||||
AccountStatement=Account statement
|
AccountStatement=Account statement
|
||||||
@ -105,8 +106,8 @@ SupplierInvoicePayment=Vendor payment
|
|||||||
SubscriptionPayment=Subscription payment
|
SubscriptionPayment=Subscription payment
|
||||||
WithdrawalPayment=Debit payment order
|
WithdrawalPayment=Debit payment order
|
||||||
SocialContributionPayment=Social/fiscal tax payment
|
SocialContributionPayment=Social/fiscal tax payment
|
||||||
BankTransfer=Bank transfer
|
BankTransfer=Credit transfer
|
||||||
BankTransfers=Bank transfers
|
BankTransfers=Credit transfers
|
||||||
MenuBankInternalTransfer=Internal transfer
|
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)
|
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
|
TransferFrom=From
|
||||||
|
|||||||
@ -441,6 +441,8 @@ BankAccountNumberKey=Checksum
|
|||||||
Residence=Address
|
Residence=Address
|
||||||
IBANNumber=IBAN account number
|
IBANNumber=IBAN account number
|
||||||
IBAN=IBAN
|
IBAN=IBAN
|
||||||
|
CustomerIBAN=IBAN of customer
|
||||||
|
SupplierIBAN=IBAN of vendor
|
||||||
BIC=BIC/SWIFT
|
BIC=BIC/SWIFT
|
||||||
BICNumber=BIC/SWIFT code
|
BICNumber=BIC/SWIFT code
|
||||||
ExtraInfos=Extra infos
|
ExtraInfos=Extra infos
|
||||||
|
|||||||
@ -107,6 +107,13 @@ OrderPrinterToUse=Order printer to use
|
|||||||
MainTemplateToUse=Main template to use
|
MainTemplateToUse=Main template to use
|
||||||
OrderTemplateToUse=Order template to use
|
OrderTemplateToUse=Order template to use
|
||||||
BarRestaurant=Bar Restaurant
|
BarRestaurant=Bar Restaurant
|
||||||
AutoOrder=Customer auto order
|
AutoOrder=Order by the customer himself
|
||||||
RestaurantMenu=Menu
|
RestaurantMenu=Menu
|
||||||
CustomerMenu=Customer 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_BILLING=Billing customer contact
|
||||||
TypeContact_contrat_external_CUSTOMER=Follow-up customer contact
|
TypeContact_contrat_external_CUSTOMER=Follow-up customer contact
|
||||||
TypeContact_contrat_external_SALESREPSIGN=Signing contract 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
|
ErrorSupplierCodeRequired=Vendor code required
|
||||||
ErrorSupplierCodeAlreadyUsed=Vendor code already used
|
ErrorSupplierCodeAlreadyUsed=Vendor code already used
|
||||||
ErrorBadParameters=Bad parameters
|
ErrorBadParameters=Bad parameters
|
||||||
|
ErrorWrongParameters=Wrong or missing parameters
|
||||||
ErrorBadValueForParameter=Wrong value '%s' for parameter '%s'
|
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)
|
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
|
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...
|
ErrorBadValueForCode=Bad value for security code. Try again with new value...
|
||||||
ErrorBothFieldCantBeNegative=Fields %s and %s can't be both negative
|
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.
|
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.
|
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
|
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
|
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
|
ErrorSavingChanges=An error has occurred when saving the changes
|
||||||
ErrorWarehouseRequiredIntoShipmentLine=Warehouse is required on the line to ship
|
ErrorWarehouseRequiredIntoShipmentLine=Warehouse is required on the line to ship
|
||||||
ErrorFileMustHaveFormat=File must have format %s
|
ErrorFileMustHaveFormat=File must have format %s
|
||||||
|
ErrorFilenameCantStartWithDot=Filename can't start with a '.'
|
||||||
ErrorSupplierCountryIsNotDefined=Country for this vendor is not defined. Correct this first.
|
ErrorSupplierCountryIsNotDefined=Country for this vendor is not defined. Correct this first.
|
||||||
ErrorsThirdpartyMerge=Failed to merge the two records. Request canceled.
|
ErrorsThirdpartyMerge=Failed to merge the two records. Request canceled.
|
||||||
ErrorStockIsNotEnoughToAddProductOnOrder=Stock is not enough for product %s to add it into a new order.
|
ErrorStockIsNotEnoughToAddProductOnOrder=Stock is not enough for product %s to add it into a new order.
|
||||||
|
|||||||
@ -15,6 +15,7 @@ CancelCP=Canceled
|
|||||||
RefuseCP=Refused
|
RefuseCP=Refused
|
||||||
ValidatorCP=Approbator
|
ValidatorCP=Approbator
|
||||||
ListeCP=List of leave
|
ListeCP=List of leave
|
||||||
|
Leave=Leave request
|
||||||
LeaveId=Leave ID
|
LeaveId=Leave ID
|
||||||
ReviewedByCP=Will be approved by
|
ReviewedByCP=Will be approved by
|
||||||
UserID=User ID
|
UserID=User ID
|
||||||
|
|||||||
@ -23,6 +23,9 @@ AddLoan=Create loan
|
|||||||
FinancialCommitment=Financial commitment
|
FinancialCommitment=Financial commitment
|
||||||
InterestAmount=Interest
|
InterestAmount=Interest
|
||||||
CapitalRemain=Capital remain
|
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
|
# Admin
|
||||||
ConfigLoan=Configuration of the module loan
|
ConfigLoan=Configuration of the module loan
|
||||||
LOAN_ACCOUNTING_ACCOUNT_CAPITAL=Accounting account capital by default
|
LOAN_ACCOUNTING_ACCOUNT_CAPITAL=Accounting account capital by default
|
||||||
|
|||||||
@ -7,7 +7,7 @@ ProjectsArea=Projects Area
|
|||||||
ProjectStatus=Project status
|
ProjectStatus=Project status
|
||||||
SharedProject=Everybody
|
SharedProject=Everybody
|
||||||
PrivateProject=Project contacts
|
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)
|
AllAllowedProjects=All project I can read (mine + public)
|
||||||
AllProjects=All projects
|
AllProjects=All projects
|
||||||
MyProjectsDesc=This view is limited to projects you are a contact for
|
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
|
ProposalCustomerSignature=Written acceptance, company stamp, date and signature
|
||||||
ProposalsStatisticsSuppliers=Vendor proposals statistics
|
ProposalsStatisticsSuppliers=Vendor proposals statistics
|
||||||
CaseFollowedBy=Case followed by
|
CaseFollowedBy=Case followed by
|
||||||
|
SignedOnly=Signed only
|
||||||
|
|||||||
@ -56,16 +56,15 @@ DOL_UNDERLINE=Enable underline
|
|||||||
DOL_UNDERLINE_DISABLED=Disable underline
|
DOL_UNDERLINE_DISABLED=Disable underline
|
||||||
DOL_BEEP=Beed sound
|
DOL_BEEP=Beed sound
|
||||||
DOL_PRINT_TEXT=Print text
|
DOL_PRINT_TEXT=Print text
|
||||||
DOL_VALUE_DATE=Invoice date
|
DateInvoiceWithTime=Invoice date and time
|
||||||
DOL_VALUE_DATE_TIME=Invoice date and time
|
YearInvoice=Invoice year
|
||||||
DOL_VALUE_YEAR=Invoice year
|
|
||||||
DOL_VALUE_MONTH_LETTERS=Invoice month in letters
|
DOL_VALUE_MONTH_LETTERS=Invoice month in letters
|
||||||
DOL_VALUE_MONTH=Invoice month
|
DOL_VALUE_MONTH=Invoice month
|
||||||
DOL_VALUE_DAY=Invoice day
|
DOL_VALUE_DAY=Invoice day
|
||||||
DOL_VALUE_DAY_LETTERS=Inovice day in letters
|
DOL_VALUE_DAY_LETTERS=Inovice day in letters
|
||||||
DOL_LINE_FEED_REVERSE=Line feed reverse
|
DOL_LINE_FEED_REVERSE=Line feed reverse
|
||||||
DOL_VALUE_OBJECT_ID=Invoice ID
|
InvoiceID=Invoice ID
|
||||||
DOL_VALUE_OBJECT_REF=Invoice ref
|
InvoiceRef=Invoice ref
|
||||||
DOL_PRINT_OBJECT_LINES=Invoice lines
|
DOL_PRINT_OBJECT_LINES=Invoice lines
|
||||||
DOL_VALUE_CUSTOMER_FIRSTNAME=Customer first name
|
DOL_VALUE_CUSTOMER_FIRSTNAME=Customer first name
|
||||||
DOL_VALUE_CUSTOMER_LASTNAME=Customer last 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_TAX_NUMBER=Customer tax number
|
||||||
DOL_VALUE_CUSTOMER_ACCOUNT_BALANCE=Customer account balance
|
DOL_VALUE_CUSTOMER_ACCOUNT_BALANCE=Customer account balance
|
||||||
DOL_VALUE_MYSOC_NAME=Your company name
|
DOL_VALUE_MYSOC_NAME=Your company name
|
||||||
DOL_VALUE_MYSOC_ADDRESS=Your company address
|
VendorLastname=Vendor last name
|
||||||
DOL_VALUE_MYSOC_ZIP=Your zip code
|
VendorFirstname=Vendor first name
|
||||||
DOL_VALUE_MYSOC_TOWN=Your town
|
VendorEmail=Vendor email
|
||||||
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
|
|
||||||
DOL_VALUE_CUSTOMER_POINTS=Customer points
|
DOL_VALUE_CUSTOMER_POINTS=Customer points
|
||||||
DOL_VALUE_OBJECT_POINTS=Object points
|
DOL_VALUE_OBJECT_POINTS=Object points
|
||||||
|
|||||||
@ -17,6 +17,10 @@ CancelSending=Cancel sending
|
|||||||
DeleteSending=Delete sending
|
DeleteSending=Delete sending
|
||||||
Stock=Stock
|
Stock=Stock
|
||||||
Stocks=Stocks
|
Stocks=Stocks
|
||||||
|
MissingStocks=Missing stocks
|
||||||
|
StockAtDate=Stock at date
|
||||||
|
StockAtDateInPast=Date in past
|
||||||
|
StockAtDateInFuture=Date in future
|
||||||
StocksByLotSerial=Stocks by lot/serial
|
StocksByLotSerial=Stocks by lot/serial
|
||||||
LotSerial=Lots/Serials
|
LotSerial=Lots/Serials
|
||||||
LotSerialList=List of lot/serials
|
LotSerialList=List of lot/serials
|
||||||
@ -30,6 +34,7 @@ StockMovementForId=Movement ID %d
|
|||||||
ListMouvementStockProject=List of stock movements associated to project
|
ListMouvementStockProject=List of stock movements associated to project
|
||||||
StocksArea=Warehouses area
|
StocksArea=Warehouses area
|
||||||
AllWarehouses=All warehouses
|
AllWarehouses=All warehouses
|
||||||
|
IncludeEmptyDesiredStock=Include also undefined desired stock
|
||||||
IncludeAlsoDraftOrders=Include also draft orders
|
IncludeAlsoDraftOrders=Include also draft orders
|
||||||
Location=Location
|
Location=Location
|
||||||
LocationSummary=Short name location
|
LocationSummary=Short name location
|
||||||
@ -59,10 +64,9 @@ AllowAddLimitStockByWarehouse=Manage also value for minimum and desired stock pe
|
|||||||
RuleForWarehouse=Rule for warehouses
|
RuleForWarehouse=Rule for warehouses
|
||||||
WarehouseAskWarehouseDuringOrder=Set a warehouse on Sale orders
|
WarehouseAskWarehouseDuringOrder=Set a warehouse on Sale orders
|
||||||
UserDefaultWarehouse=Set a warehouse on Users
|
UserDefaultWarehouse=Set a warehouse on Users
|
||||||
DefaultWarehouseActive=Default warehouse active
|
|
||||||
MainDefaultWarehouse=Default warehouse
|
MainDefaultWarehouse=Default warehouse
|
||||||
MainDefaultWarehouseUser=Use user warehouse asign default
|
MainDefaultWarehouseUser=Use a default warehouse for each user
|
||||||
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.
|
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
|
IndependantSubProductStock=Product stock and subproduct stock are independent
|
||||||
QtyDispatched=Quantity dispatched
|
QtyDispatched=Quantity dispatched
|
||||||
QtyDispatchedShort=Qty dispatched
|
QtyDispatchedShort=Qty dispatched
|
||||||
@ -126,6 +130,7 @@ CurentlyUsingPhysicalStock=Physical stock
|
|||||||
RuleForStockReplenishment=Rule for stocks replenishment
|
RuleForStockReplenishment=Rule for stocks replenishment
|
||||||
SelectProductWithNotNullQty=Select at least one product with a qty not null and a vendor
|
SelectProductWithNotNullQty=Select at least one product with a qty not null and a vendor
|
||||||
AlertOnly= Alerts only
|
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
|
WarehouseForStockDecrease=The warehouse <b>%s</b> will be used for stock decrease
|
||||||
WarehouseForStockIncrease=The warehouse <b>%s</b> will be used for stock increase
|
WarehouseForStockIncrease=The warehouse <b>%s</b> will be used for stock increase
|
||||||
ForThisWarehouse=For this warehouse
|
ForThisWarehouse=For this warehouse
|
||||||
@ -227,3 +232,6 @@ InventoryForASpecificProduct=Inventory for a specific product
|
|||||||
StockIsRequiredToChooseWhichLotToUse=Stock is required to choose which lot to use
|
StockIsRequiredToChooseWhichLotToUse=Stock is required to choose which lot to use
|
||||||
ForceTo=Force to
|
ForceTo=Force to
|
||||||
AlwaysShowFullArbo=Display full tree of warehouse on popup of warehouse links (Warning: This may decrease dramatically performances)
|
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
|
YouCanCreatePageOrImportTemplate=You can create a new page or import a full website template
|
||||||
SyntaxHelp=Help on specific syntax tips
|
SyntaxHelp=Help on specific syntax tips
|
||||||
YouCanEditHtmlSourceckeditor=You can edit HTML source code using the "Source" button in editor.
|
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
|
ClonePage=Clone page/container
|
||||||
CloneSite=Clone site
|
CloneSite=Clone site
|
||||||
SiteAdded=Website added
|
SiteAdded=Website added
|
||||||
|
|||||||
@ -10,8 +10,8 @@ PaymentByBankTransferReceipts=Credit transfer orders
|
|||||||
PaymentByBankTransferLines=Credit transfer order lines
|
PaymentByBankTransferLines=Credit transfer order lines
|
||||||
WithdrawalsReceipts=Direct debit orders
|
WithdrawalsReceipts=Direct debit orders
|
||||||
WithdrawalReceipt=Direct debit order
|
WithdrawalReceipt=Direct debit order
|
||||||
BankTransferReceipts=Credit transfer receipts
|
BankTransferReceipts=Credit transfer order
|
||||||
BankTransferReceipt=Credit transfer receipt
|
BankTransferReceipt=Credit transfer order
|
||||||
LatestBankTransferReceipts=Latest %s credit transfer orders
|
LatestBankTransferReceipts=Latest %s credit transfer orders
|
||||||
LastWithdrawalReceipts=Latest %s direct debit files
|
LastWithdrawalReceipts=Latest %s direct debit files
|
||||||
WithdrawalsLine=Direct debit order line
|
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.
|
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
|
ResponsibleUser=User Responsible
|
||||||
WithdrawalsSetup=Direct debit payment setup
|
WithdrawalsSetup=Direct debit payment setup
|
||||||
CreditTransferSetup=Crebit transfer setup
|
CreditTransferSetup=Credit transfer setup
|
||||||
WithdrawStatistics=Direct debit payment statistics
|
WithdrawStatistics=Direct debit payment statistics
|
||||||
CreditTransferStatistics=Credit transfer statistics
|
CreditTransferStatistics=Credit transfer statistics
|
||||||
Rejects=Rejects
|
Rejects=Rejects
|
||||||
LastWithdrawalReceipt=Latest %s direct debit receipts
|
LastWithdrawalReceipt=Latest %s direct debit receipts
|
||||||
MakeWithdrawRequest=Make a direct debit payment request
|
MakeWithdrawRequest=Make a direct debit payment request
|
||||||
|
MakeBankTransferOrder=Make a credit transfer request
|
||||||
WithdrawRequestsDone=%s direct debit payment requests recorded
|
WithdrawRequestsDone=%s direct debit payment requests recorded
|
||||||
ThirdPartyBankCode=Third-party bank code
|
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>.
|
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)
|
WithdrawalFileNotCapable=Unable to generate withdrawal receipt file for your country %s (Your country is not supported)
|
||||||
ShowWithdraw=Show Direct Debit Order
|
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.
|
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
|
WithdrawalFile=Withdrawal file
|
||||||
SetToStatusSent=Set to status "File Sent"
|
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
|
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.
|
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)
|
WithdrawMode=Direct debit mode (FRST or RECUR)
|
||||||
WithdrawRequestAmount=Amount of Direct debit request:
|
WithdrawRequestAmount=Amount of Direct debit request:
|
||||||
|
BankTransferAmount=Amount of Credit Transfer request:
|
||||||
WithdrawRequestErrorNilAmount=Unable to create direct debit request for empty amount.
|
WithdrawRequestErrorNilAmount=Unable to create direct debit request for empty amount.
|
||||||
SepaMandate=SEPA Direct Debit Mandate
|
SepaMandate=SEPA Direct Debit Mandate
|
||||||
SepaMandateShort=SEPA Mandate
|
SepaMandateShort=SEPA Mandate
|
||||||
@ -128,7 +131,7 @@ ICS=Creditor Identifier CI
|
|||||||
END_TO_END="EndToEndId" SEPA XML tag - Unique id assigned per transaction
|
END_TO_END="EndToEndId" SEPA XML tag - Unique id assigned per transaction
|
||||||
USTRD="Unstructured" SEPA XML tag
|
USTRD="Unstructured" SEPA XML tag
|
||||||
ADDDAYS=Add days to Execution Date
|
ADDDAYS=Add days to Execution Date
|
||||||
|
NoDefaultIBANFound=No default IBAN found for this third party
|
||||||
### Notifications
|
### Notifications
|
||||||
InfoCreditSubject=Payment of direct debit payment order %s by the bank
|
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
|
InfoCreditMessage=The direct debit payment order %s has been paid by the bank<br>Data of payment: %s
|
||||||
|
|||||||
@ -543,7 +543,7 @@ Module54Desc=Управление на договори (услуги или п
|
|||||||
Module55Name=Баркодове
|
Module55Name=Баркодове
|
||||||
Module55Desc=Управление на баркодове
|
Module55Desc=Управление на баркодове
|
||||||
Module56Name=Плащане с кредитен превод
|
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=Банкови плащания с директен дебит
|
Module57Name=Банкови плащания с директен дебит
|
||||||
Module57Desc=Управление на платежни нареждания за директен дебит. Включва генериране на SEPA файл за европейските страни.
|
Module57Desc=Управление на платежни нареждания за директен дебит. Включва генериране на SEPA файл за европейските страни.
|
||||||
Module58Name=ClickToDial
|
Module58Name=ClickToDial
|
||||||
@ -1983,7 +1983,7 @@ SmallerThan=По-малък от
|
|||||||
LargerThan=По-голям от
|
LargerThan=По-голям от
|
||||||
IfTrackingIDFoundEventWillBeLinked=Обърнете внимание, че ако е намерен проследяващ код във входящата електронна поща, събитието ще бъде автоматично свързано със свързаните обекти.
|
IfTrackingIDFoundEventWillBeLinked=Обърнете внимание, че ако е намерен проследяващ код във входящата електронна поща, събитието ще бъде автоматично свързано със свързаните обекти.
|
||||||
WithGMailYouCanCreateADedicatedPassword=С GMail акаунт, ако сте активирали валидирането в 2 стъпки е препоръчително да създадете специална втора парола за приложението, вместо да използвате своята парола за акаунта от https://myaccount.google.com/.
|
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', който е открит в съдържанието на имейла.
|
EmailCollectorLoadThirdPartyHelp=Може да използвате това действие, за да намерите и заредите съществуващ контрагент във вашата база данни, чрез съдържанието на имейла. Намереният (или създаден) контрагент ще бъде използван при следващи действия, които се нуждаят от това. В полето на параметъра може да използвате, например 'EXTRACT:BODY:Name:\\s([^\\s]*)', ако искате да извлечете името на контрагента от низ 'Name: name to find', който е открит в съдържанието на имейла.
|
||||||
EndPointFor=Крайна точка за %s: %s
|
EndPointFor=Крайна точка за %s: %s
|
||||||
DeleteEmailCollector=Изтриване на имейл колекционер
|
DeleteEmailCollector=Изтриване на имейл колекционер
|
||||||
|
|||||||
@ -63,6 +63,7 @@ ShipmentClassifyClosedInDolibarr=Пратка %s е фактурирана
|
|||||||
ShipmentUnClassifyCloseddInDolibarr=Пратка %s е активна отново
|
ShipmentUnClassifyCloseddInDolibarr=Пратка %s е активна отново
|
||||||
ShipmentBackToDraftInDolibarr=Пратка %s е върната в статус чернова
|
ShipmentBackToDraftInDolibarr=Пратка %s е върната в статус чернова
|
||||||
ShipmentDeletedInDolibarr=Пратка %s е изтрита
|
ShipmentDeletedInDolibarr=Пратка %s е изтрита
|
||||||
|
ReceptionValidatedInDolibarr=Reception %s validated
|
||||||
OrderCreatedInDolibarr=Поръчка %s е създадена
|
OrderCreatedInDolibarr=Поръчка %s е създадена
|
||||||
OrderValidatedInDolibarr=Поръчка %s е валидирана
|
OrderValidatedInDolibarr=Поръчка %s е валидирана
|
||||||
OrderDeliveredInDolibarr=Поръчка %s е класифицирана като доставена
|
OrderDeliveredInDolibarr=Поръчка %s е класифицирана като доставена
|
||||||
|
|||||||
@ -37,6 +37,7 @@ IbanValid=Валиден IBAN номер
|
|||||||
IbanNotValid=Невалиден IBAN номер
|
IbanNotValid=Невалиден IBAN номер
|
||||||
StandingOrders=Нареждания с директен дебит
|
StandingOrders=Нареждания с директен дебит
|
||||||
StandingOrder=Поръчка за директен дебит
|
StandingOrder=Поръчка за директен дебит
|
||||||
|
PaymentByDirectDebit=Payment by direct debit
|
||||||
PaymentByBankTransfers=Плащания с кредитен превод
|
PaymentByBankTransfers=Плащания с кредитен превод
|
||||||
PaymentByBankTransfer=Плащане с кредитен превод
|
PaymentByBankTransfer=Плащане с кредитен превод
|
||||||
AccountStatement=Извлечение по сметка
|
AccountStatement=Извлечение по сметка
|
||||||
@ -105,8 +106,8 @@ SupplierInvoicePayment=Плащане към доставчик
|
|||||||
SubscriptionPayment=Плащане на членски внос
|
SubscriptionPayment=Плащане на членски внос
|
||||||
WithdrawalPayment=Платежно нареждане за дебит
|
WithdrawalPayment=Платежно нареждане за дебит
|
||||||
SocialContributionPayment=Плащане на социални / фискални такси
|
SocialContributionPayment=Плащане на социални / фискални такси
|
||||||
BankTransfer=Банков превод
|
BankTransfer=Credit transfer
|
||||||
BankTransfers=Банкови преводи
|
BankTransfers=Credit transfers
|
||||||
MenuBankInternalTransfer=Вътрешен превод
|
MenuBankInternalTransfer=Вътрешен превод
|
||||||
TransferDesc=При прехвърляне от една сметка в друга, Dolibarr ще направи два записа (дебит от сметката на източника и кредит в целевата сметка). За тази транзакция ще се използва (с изключение на подписа) същата сума, име и дата.
|
TransferDesc=При прехвърляне от една сметка в друга, Dolibarr ще направи два записа (дебит от сметката на източника и кредит в целевата сметка). За тази транзакция ще се използва (с изключение на подписа) същата сума, име и дата.
|
||||||
TransferFrom=От
|
TransferFrom=От
|
||||||
|
|||||||
@ -441,6 +441,8 @@ BankAccountNumberKey=Контролна сума
|
|||||||
Residence=Адрес
|
Residence=Адрес
|
||||||
IBANNumber=IBAN номер на сметка
|
IBANNumber=IBAN номер на сметка
|
||||||
IBAN=IBAN
|
IBAN=IBAN
|
||||||
|
CustomerIBAN=IBAN of customer
|
||||||
|
SupplierIBAN=IBAN of vendor
|
||||||
BIC=BIC / SWIFT
|
BIC=BIC / SWIFT
|
||||||
BICNumber=BIC / SWIFT код
|
BICNumber=BIC / SWIFT код
|
||||||
ExtraInfos=Допълнителна информация
|
ExtraInfos=Допълнителна информация
|
||||||
|
|||||||
@ -107,6 +107,13 @@ OrderPrinterToUse=Order printer to use
|
|||||||
MainTemplateToUse=Main template to use
|
MainTemplateToUse=Main template to use
|
||||||
OrderTemplateToUse=Order template to use
|
OrderTemplateToUse=Order template to use
|
||||||
BarRestaurant=Bar Restaurant
|
BarRestaurant=Bar Restaurant
|
||||||
AutoOrder=Customer auto order
|
AutoOrder=Order by the customer himself
|
||||||
RestaurantMenu=Menu
|
RestaurantMenu=Menu
|
||||||
CustomerMenu=Customer 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_BILLING=Контакт на клиента за фактуриране
|
||||||
TypeContact_contrat_external_CUSTOMER=Контакт на клиента (проследяващ)
|
TypeContact_contrat_external_CUSTOMER=Контакт на клиента (проследяващ)
|
||||||
TypeContact_contrat_external_SALESREPSIGN=Контакт на клиента (подписващ)
|
TypeContact_contrat_external_SALESREPSIGN=Контакт на клиента (подписващ)
|
||||||
|
HideClosedServiceByDefault=Hide closed services by default
|
||||||
|
ShowClosedServices=Show Closed Services
|
||||||
|
HideClosedServices=Hide Closed Services
|
||||||
|
|||||||
@ -36,6 +36,7 @@ ErrorBadSupplierCodeSyntax=Неправилен синтаксис за код
|
|||||||
ErrorSupplierCodeRequired=Необходим е код на доставчик
|
ErrorSupplierCodeRequired=Необходим е код на доставчик
|
||||||
ErrorSupplierCodeAlreadyUsed=Кодът на доставчика вече е използван
|
ErrorSupplierCodeAlreadyUsed=Кодът на доставчика вече е използван
|
||||||
ErrorBadParameters=Неправилни параметри
|
ErrorBadParameters=Неправилни параметри
|
||||||
|
ErrorWrongParameters=Wrong or missing parameters
|
||||||
ErrorBadValueForParameter=Грешна стойност '%s' за параметър '%s'
|
ErrorBadValueForParameter=Грешна стойност '%s' за параметър '%s'
|
||||||
ErrorBadImageFormat=Файловият формат на изображението не се поддържа (PHP не поддържа функции за конвертиране на изображения от този формат)
|
ErrorBadImageFormat=Файловият формат на изображението не се поддържа (PHP не поддържа функции за конвертиране на изображения от този формат)
|
||||||
ErrorBadDateFormat=Стойността '%s' има грешен формат за дата
|
ErrorBadDateFormat=Стойността '%s' има грешен формат за дата
|
||||||
@ -119,7 +120,7 @@ ErrorLoginHasNoEmail=Този потребител няма имейл адре
|
|||||||
ErrorBadValueForCode=Неправилен защитен код. Опитайте отново ...
|
ErrorBadValueForCode=Неправилен защитен код. Опитайте отново ...
|
||||||
ErrorBothFieldCantBeNegative=Полетата %s и %s не може да бъде едновременно отрицателен
|
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.
|
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=Редовете не могат да бъдат отрицателни при депозит. Ще се сблъскате с проблеми, когато включите депозита в окончателната фактура.
|
ErrorLinesCantBeNegativeOnDeposits=Редовете не могат да бъдат отрицателни при депозит. Ще се сблъскате с проблеми, когато включите депозита в окончателната фактура.
|
||||||
ErrorQtyForCustomerInvoiceCantBeNegative=Количество за ред в клиентска фактура не може да бъде отрицателно
|
ErrorQtyForCustomerInvoiceCantBeNegative=Количество за ред в клиентска фактура не може да бъде отрицателно
|
||||||
ErrorWebServerUserHasNotPermission=Потребителски акаунт <b>%s</b> използват за извършване на уеб сървър не разполага с разрешение за това
|
ErrorWebServerUserHasNotPermission=Потребителски акаунт <b>%s</b> използват за извършване на уеб сървър не разполага с разрешение за това
|
||||||
@ -183,6 +184,7 @@ ErrorBadDefinitionOfMenuArrayInModuleDescriptor=Лоша дефиниция на
|
|||||||
ErrorSavingChanges=Възникна грешка при запазването на промените
|
ErrorSavingChanges=Възникна грешка при запазването на промените
|
||||||
ErrorWarehouseRequiredIntoShipmentLine=Изисква се склад по линията за изпращане
|
ErrorWarehouseRequiredIntoShipmentLine=Изисква се склад по линията за изпращане
|
||||||
ErrorFileMustHaveFormat=Файлът трябва да има формат %s
|
ErrorFileMustHaveFormat=Файлът трябва да има формат %s
|
||||||
|
ErrorFilenameCantStartWithDot=Filename can't start with a '.'
|
||||||
ErrorSupplierCountryIsNotDefined=Държавата за този доставчик не е дефинирана. Първо коригирайте това.
|
ErrorSupplierCountryIsNotDefined=Държавата за този доставчик не е дефинирана. Първо коригирайте това.
|
||||||
ErrorsThirdpartyMerge=Неуспешно обединяване на двата записа. Заявката е анулирана.
|
ErrorsThirdpartyMerge=Неуспешно обединяване на двата записа. Заявката е анулирана.
|
||||||
ErrorStockIsNotEnoughToAddProductOnOrder=Наличността не е достатъчна, за да може продуктът %s да се добави в нова поръчка.
|
ErrorStockIsNotEnoughToAddProductOnOrder=Наличността не е достатъчна, за да може продуктът %s да се добави в нова поръчка.
|
||||||
|
|||||||
@ -15,6 +15,7 @@ CancelCP=Анулирана
|
|||||||
RefuseCP=Отхвърлена
|
RefuseCP=Отхвърлена
|
||||||
ValidatorCP=Одобряващ
|
ValidatorCP=Одобряващ
|
||||||
ListeCP=Списък с молби за отпуск
|
ListeCP=Списък с молби за отпуск
|
||||||
|
Leave=Молба за отпуск
|
||||||
LeaveId=Идентификатор на молба за отпуск
|
LeaveId=Идентификатор на молба за отпуск
|
||||||
ReviewedByCP=Ще бъде одобрена от
|
ReviewedByCP=Ще бъде одобрена от
|
||||||
UserID=Потребител
|
UserID=Потребител
|
||||||
|
|||||||
@ -11,21 +11,24 @@ Insurance=Застраховка
|
|||||||
Interest=Лихва
|
Interest=Лихва
|
||||||
Nbterms=Брой условия
|
Nbterms=Брой условия
|
||||||
Term=Условие
|
Term=Условие
|
||||||
LoanAccountancyCapitalCode=Счетоводна сметка на капитал
|
LoanAccountancyCapitalCode=Счетоводна сметка за капитал
|
||||||
LoanAccountancyInsuranceCode=Счетоводна сметка на застраховка
|
LoanAccountancyInsuranceCode=Счетоводна сметка за застраховка
|
||||||
LoanAccountancyInterestCode=Счетоводна сметка за лихва
|
LoanAccountancyInterestCode=Счетоводна сметка за лихва
|
||||||
ConfirmDeleteLoan=Потвърдете изтриването на този кредит
|
ConfirmDeleteLoan=Потвърдете изтриването на този кредит
|
||||||
LoanDeleted=Кредитът е успешно изтрит
|
LoanDeleted=Кредитът е успешно изтрит
|
||||||
ConfirmPayLoan=Потвърдете класифицирането на този кредит като платен
|
ConfirmPayLoan=Потвърдете класифицирането на този кредит като платен
|
||||||
LoanPaid=Платен кредит
|
LoanPaid=Кредитът е платен
|
||||||
ListLoanAssociatedProject=Списък на кредити, свързани с проекта
|
ListLoanAssociatedProject=Списък на кредити, свързани с проекта
|
||||||
AddLoan=Създаване на кредит
|
AddLoan=Създаване на кредит
|
||||||
FinancialCommitment=Финансово задължение
|
FinancialCommitment=Финансово задължение
|
||||||
InterestAmount=Лихва
|
InterestAmount=Лихва
|
||||||
CapitalRemain=Оставащ капитал
|
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
|
# Admin
|
||||||
ConfigLoan=Конфигуриране на модула Кредити
|
ConfigLoan=Конфигуриране на модула кредити
|
||||||
LOAN_ACCOUNTING_ACCOUNT_CAPITAL=Счетоводна сметка на капитал по подразбиране
|
LOAN_ACCOUNTING_ACCOUNT_CAPITAL=Счетоводна сметка за капитал по подразбиране
|
||||||
LOAN_ACCOUNTING_ACCOUNT_INTEREST=Счетоводна сметка на лихва по подразбиране
|
LOAN_ACCOUNTING_ACCOUNT_INTEREST=Счетоводна сметка за лихва по подразбиране
|
||||||
LOAN_ACCOUNTING_ACCOUNT_INSURANCE=Счетоводна сметка на застраховка по подразбиране
|
LOAN_ACCOUNTING_ACCOUNT_INSURANCE=Счетоводна сметка за застраховка по подразбиране
|
||||||
CreateCalcSchedule=Променяне на финансово задължение
|
CreateCalcSchedule=Променяне на финансово задължение
|
||||||
|
|||||||
@ -7,7 +7,7 @@ ProjectsArea=Секция с проекти
|
|||||||
ProjectStatus=Статус на проект
|
ProjectStatus=Статус на проект
|
||||||
SharedProject=Всички
|
SharedProject=Всички
|
||||||
PrivateProject=Участници в проекта
|
PrivateProject=Участници в проекта
|
||||||
ProjectsImContactFor=Проекти, в които съм определен за контакт
|
ProjectsImContactFor=Projects for which I am explicitly a contact
|
||||||
AllAllowedProjects=Всеки проект, който мога да прочета (мой и публичен)
|
AllAllowedProjects=Всеки проект, който мога да прочета (мой и публичен)
|
||||||
AllProjects=Всички проекти
|
AllProjects=Всички проекти
|
||||||
MyProjectsDesc=Този изглед е ограничен до проекти, в които сте определен за контакт
|
MyProjectsDesc=Този изглед е ограничен до проекти, в които сте определен за контакт
|
||||||
|
|||||||
@ -3,7 +3,7 @@ Proposals=Търговски предложения
|
|||||||
Proposal=Търговско предложение
|
Proposal=Търговско предложение
|
||||||
ProposalShort=Предложение
|
ProposalShort=Предложение
|
||||||
ProposalsDraft=Чернови търговски предложения
|
ProposalsDraft=Чернови търговски предложения
|
||||||
ProposalsOpened=Отворени търговски предложения
|
ProposalsOpened=Активни търговски предложения
|
||||||
CommercialProposal=Търговско предложение
|
CommercialProposal=Търговско предложение
|
||||||
PdfCommercialProposalTitle=Търговско предложение
|
PdfCommercialProposalTitle=Търговско предложение
|
||||||
ProposalCard=Карта
|
ProposalCard=Карта
|
||||||
@ -21,19 +21,19 @@ AllPropals=Всички предложения
|
|||||||
SearchAProposal=Търсене na предложение
|
SearchAProposal=Търсене na предложение
|
||||||
NoProposal=Няма предложение
|
NoProposal=Няма предложение
|
||||||
ProposalsStatistics=Статистика на търговски предложения
|
ProposalsStatistics=Статистика на търговски предложения
|
||||||
NumberOfProposalsByMonth=Брой предложения на месец
|
NumberOfProposalsByMonth=Брой предложения за месец
|
||||||
AmountOfProposalsByMonthHT=Обща сума на месец (без ДДС)
|
AmountOfProposalsByMonthHT=Стойност на предложения за месец (без ДДС)
|
||||||
NbOfProposals=Брой търговски предложения
|
NbOfProposals=Брой търговски предложения
|
||||||
ShowPropal=Показване на предложение
|
ShowPropal=Показване на предложение
|
||||||
PropalsDraft=Чернови
|
PropalsDraft=Чернови
|
||||||
PropalsOpened=Отворени
|
PropalsOpened=Активни
|
||||||
PropalStatusDraft=Чернова (нужно е валидиране)
|
PropalStatusDraft=Чернова (нужно е валидиране)
|
||||||
PropalStatusValidated=Валидирано (отворено)
|
PropalStatusValidated=Валидирано (активно)
|
||||||
PropalStatusSigned=Подписано (нужно е фактуриране)
|
PropalStatusSigned=Подписано (нужно е фактуриране)
|
||||||
PropalStatusNotSigned=Отхвърлено (приключено)
|
PropalStatusNotSigned=Отхвърлено (приключено)
|
||||||
PropalStatusBilled=Фактурирано
|
PropalStatusBilled=Фактурирано
|
||||||
PropalStatusDraftShort=Чернова
|
PropalStatusDraftShort=Чернова
|
||||||
PropalStatusValidatedShort=Валидирано (отворено)
|
PropalStatusValidatedShort=Валидирано (активно)
|
||||||
PropalStatusClosedShort=Приключено
|
PropalStatusClosedShort=Приключено
|
||||||
PropalStatusSignedShort=Подписано
|
PropalStatusSignedShort=Подписано
|
||||||
PropalStatusNotSignedShort=Отхвърлено
|
PropalStatusNotSignedShort=Отхвърлено
|
||||||
@ -76,7 +76,7 @@ TypeContact_propal_external_BILLING=Получател на фактура
|
|||||||
TypeContact_propal_external_CUSTOMER=Получател на предложение
|
TypeContact_propal_external_CUSTOMER=Получател на предложение
|
||||||
TypeContact_propal_external_SHIPPING=Получател на доставка
|
TypeContact_propal_external_SHIPPING=Получател на доставка
|
||||||
# Document models
|
# Document models
|
||||||
DocModelAzurDescription=Пълен шаблон на предложение
|
DocModelAzurDescription=Пълен шаблон на предложение (стара реализация на шаблон Cyan)
|
||||||
DocModelCyanDescription=Пълен модел на предложение
|
DocModelCyanDescription=Пълен модел на предложение
|
||||||
DefaultModelPropalCreate=Създаване на шаблон по подразбиране
|
DefaultModelPropalCreate=Създаване на шаблон по подразбиране
|
||||||
DefaultModelPropalToBill=Шаблон по подразбиране, когато се приключва търговско предложение (за да бъде фактурирано)
|
DefaultModelPropalToBill=Шаблон по подразбиране, когато се приключва търговско предложение (за да бъде фактурирано)
|
||||||
@ -84,3 +84,4 @@ DefaultModelPropalClosed=Шаблон по подразбиране, когат
|
|||||||
ProposalCustomerSignature=Име, фамилия, фирмен печат, дата и подпис
|
ProposalCustomerSignature=Име, фамилия, фирмен печат, дата и подпис
|
||||||
ProposalsStatisticsSuppliers=Статистика на запитвания към доставчици
|
ProposalsStatisticsSuppliers=Статистика на запитвания към доставчици
|
||||||
CaseFollowedBy=Случай, проследяван от
|
CaseFollowedBy=Случай, проследяван от
|
||||||
|
SignedOnly=Signed only
|
||||||
|
|||||||
@ -56,16 +56,15 @@ DOL_UNDERLINE=Активиране на подчертаване
|
|||||||
DOL_UNDERLINE_DISABLED=Деактивиране на подчертаване
|
DOL_UNDERLINE_DISABLED=Деактивиране на подчертаване
|
||||||
DOL_BEEP=Звуков сигнал
|
DOL_BEEP=Звуков сигнал
|
||||||
DOL_PRINT_TEXT=Отпечатване на текст
|
DOL_PRINT_TEXT=Отпечатване на текст
|
||||||
DOL_VALUE_DATE=Дата на документ
|
DateInvoiceWithTime=Дата и час на фактура
|
||||||
DOL_VALUE_DATE_TIME=Дата и час на фактура
|
YearInvoice=Година на фактура
|
||||||
DOL_VALUE_YEAR=Година на фактура
|
|
||||||
DOL_VALUE_MONTH_LETTERS=Месец на фактура с букви
|
DOL_VALUE_MONTH_LETTERS=Месец на фактура с букви
|
||||||
DOL_VALUE_MONTH=Месец на фактура
|
DOL_VALUE_MONTH=Месец на фактура
|
||||||
DOL_VALUE_DAY=Ден на фактура
|
DOL_VALUE_DAY=Ден на фактура
|
||||||
DOL_VALUE_DAY_LETTERS=Ден на фактура с букви
|
DOL_VALUE_DAY_LETTERS=Ден на фактура с букви
|
||||||
DOL_LINE_FEED_REVERSE=Line feed reverse
|
DOL_LINE_FEED_REVERSE=Line feed reverse
|
||||||
DOL_VALUE_OBJECT_ID=Invoice ID
|
InvoiceID=Invoice ID
|
||||||
DOL_VALUE_OBJECT_REF=Съгласно фактура №
|
InvoiceRef=Съгласно фактура №
|
||||||
DOL_PRINT_OBJECT_LINES=Invoice lines
|
DOL_PRINT_OBJECT_LINES=Invoice lines
|
||||||
DOL_VALUE_CUSTOMER_FIRSTNAME=Customer first name
|
DOL_VALUE_CUSTOMER_FIRSTNAME=Customer first name
|
||||||
DOL_VALUE_CUSTOMER_LASTNAME=Customer last 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_TAX_NUMBER=Customer tax number
|
||||||
DOL_VALUE_CUSTOMER_ACCOUNT_BALANCE=Customer account balance
|
DOL_VALUE_CUSTOMER_ACCOUNT_BALANCE=Customer account balance
|
||||||
DOL_VALUE_MYSOC_NAME=Your company name
|
DOL_VALUE_MYSOC_NAME=Your company name
|
||||||
DOL_VALUE_MYSOC_ADDRESS=Your company address
|
VendorLastname=Vendor last name
|
||||||
DOL_VALUE_MYSOC_ZIP=Your zip code
|
VendorFirstname=Vendor first name
|
||||||
DOL_VALUE_MYSOC_TOWN=Your town
|
VendorEmail=Vendor email
|
||||||
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
|
|
||||||
DOL_VALUE_CUSTOMER_POINTS=Customer points
|
DOL_VALUE_CUSTOMER_POINTS=Customer points
|
||||||
DOL_VALUE_OBJECT_POINTS=Object points
|
DOL_VALUE_OBJECT_POINTS=Object points
|
||||||
|
|||||||
@ -17,6 +17,10 @@ CancelSending=Анулиране на изпращане
|
|||||||
DeleteSending=Изтриване на изпращане
|
DeleteSending=Изтриване на изпращане
|
||||||
Stock=Наличност
|
Stock=Наличност
|
||||||
Stocks=Наличности
|
Stocks=Наличности
|
||||||
|
MissingStocks=Missing stocks
|
||||||
|
StockAtDate=Stock at date
|
||||||
|
StockAtDateInPast=Date in past
|
||||||
|
StockAtDateInFuture=Date in future
|
||||||
StocksByLotSerial=Наличности по партида / сериен №
|
StocksByLotSerial=Наличности по партида / сериен №
|
||||||
LotSerial=Партиди / Серийни номера
|
LotSerial=Партиди / Серийни номера
|
||||||
LotSerialList=Списък на партиди / серийни номера
|
LotSerialList=Списък на партиди / серийни номера
|
||||||
@ -30,6 +34,7 @@ StockMovementForId=Идентификатор на движение %d
|
|||||||
ListMouvementStockProject=Списък на движения на стокови наличности, свързани с проекта
|
ListMouvementStockProject=Списък на движения на стокови наличности, свързани с проекта
|
||||||
StocksArea=Секция със складове
|
StocksArea=Секция със складове
|
||||||
AllWarehouses=Всички складове
|
AllWarehouses=Всички складове
|
||||||
|
IncludeEmptyDesiredStock=Include also undefined desired stock
|
||||||
IncludeAlsoDraftOrders=Включва чернови поръчки
|
IncludeAlsoDraftOrders=Включва чернови поръчки
|
||||||
Location=Местоположение
|
Location=Местоположение
|
||||||
LocationSummary=Кратко име на местоположение
|
LocationSummary=Кратко име на местоположение
|
||||||
@ -59,10 +64,9 @@ AllowAddLimitStockByWarehouse=Управляване също и на стойн
|
|||||||
RuleForWarehouse=Rule for warehouses
|
RuleForWarehouse=Rule for warehouses
|
||||||
WarehouseAskWarehouseDuringOrder=Set a warehouse on Sale orders
|
WarehouseAskWarehouseDuringOrder=Set a warehouse on Sale orders
|
||||||
UserDefaultWarehouse=Set a warehouse on Users
|
UserDefaultWarehouse=Set a warehouse on Users
|
||||||
DefaultWarehouseActive=Default warehouse active
|
|
||||||
MainDefaultWarehouse=Склад по подразбиране
|
MainDefaultWarehouse=Склад по подразбиране
|
||||||
MainDefaultWarehouseUser=Use user warehouse asign default
|
MainDefaultWarehouseUser=Use a default warehouse for each user
|
||||||
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.
|
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=Наличностите за продукти и подпродукти са независими
|
IndependantSubProductStock=Наличностите за продукти и подпродукти са независими
|
||||||
QtyDispatched=Изпратено количество
|
QtyDispatched=Изпратено количество
|
||||||
QtyDispatchedShort=Изпратено кол.
|
QtyDispatchedShort=Изпратено кол.
|
||||||
@ -126,6 +130,7 @@ CurentlyUsingPhysicalStock=Физическа наличност
|
|||||||
RuleForStockReplenishment=Правило за попълване на наличности
|
RuleForStockReplenishment=Правило за попълване на наличности
|
||||||
SelectProductWithNotNullQty=Избиране на най-малко един продукт с количество различно от 0 и доставчик
|
SelectProductWithNotNullQty=Избиране на най-малко един продукт с количество различно от 0 и доставчик
|
||||||
AlertOnly= Само предупреждения
|
AlertOnly= Само предупреждения
|
||||||
|
IncludeProductWithUndefinedAlerts = Include also negative stock for products with no desired quantity defined, to restore them to 0
|
||||||
WarehouseForStockDecrease=Складът <b>%s</b> ще бъде използван за намаляване на наличността
|
WarehouseForStockDecrease=Складът <b>%s</b> ще бъде използван за намаляване на наличността
|
||||||
WarehouseForStockIncrease=Складът <b>%s</b> ще бъде използван за увеличаване на наличността
|
WarehouseForStockIncrease=Складът <b>%s</b> ще бъде използван за увеличаване на наличността
|
||||||
ForThisWarehouse=За този склад
|
ForThisWarehouse=За този склад
|
||||||
@ -227,3 +232,6 @@ InventoryForASpecificProduct=Инвентаризация за конкрете
|
|||||||
StockIsRequiredToChooseWhichLotToUse=Необходима е наличност, за да изберете коя партида да използвате.
|
StockIsRequiredToChooseWhichLotToUse=Необходима е наличност, за да изберете коя партида да използвате.
|
||||||
ForceTo=Принуждаване до
|
ForceTo=Принуждаване до
|
||||||
AlwaysShowFullArbo=Display full tree of warehouse on popup of warehouse links (Warning: This may decrease dramatically performances)
|
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=Може да създадете нова страница или да импортирате пълен шаблон на уебсайт
|
YouCanCreatePageOrImportTemplate=Може да създадете нова страница или да импортирате пълен шаблон на уебсайт
|
||||||
SyntaxHelp=Помощ с конкретни съвети за синтаксиса
|
SyntaxHelp=Помощ с конкретни съвети за синтаксиса
|
||||||
YouCanEditHtmlSourceckeditor=Може да редактирате изходния HTML код с помощта на бутона 'Код' в редактора.
|
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=Клониране на страница / контейнер
|
ClonePage=Клониране на страница / контейнер
|
||||||
CloneSite=Клониране на сайт
|
CloneSite=Клониране на сайт
|
||||||
SiteAdded=Уебсайтът е добавен
|
SiteAdded=Уебсайтът е добавен
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user